From 2bc475ec41f4731e632e98e2ac7a1f9f1d933b47 Mon Sep 17 00:00:00 2001 From: UristMcKerman Date: Mon, 26 May 2014 12:34:46 +0400 Subject: [PATCH 001/304] Created new turbine Created turbine which inputs from pipes and motor. Also slightly fixed currently existing turbine (still unbuildable though). --- baystation12.dme | 1 + code/modules/power/turbine.dm | 6 ++++++ icons/obj/pipeturbine.dmi | Bin 0 -> 5660 bytes 3 files changed, 7 insertions(+) create mode 100644 icons/obj/pipeturbine.dmi diff --git a/baystation12.dme b/baystation12.dme index 187127d978..7f99970aa3 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -61,6 +61,7 @@ #include "code\ATMOSPHERICS\components\binary_devices\circulator.dm" #include "code\ATMOSPHERICS\components\binary_devices\dp_vent_pump.dm" #include "code\ATMOSPHERICS\components\binary_devices\passive_gate.dm" +#include "code\ATMOSPHERICS\components\binary_devices\pipeturbine.dm" #include "code\ATMOSPHERICS\components\binary_devices\pump.dm" #include "code\ATMOSPHERICS\components\binary_devices\volume_pump.dm" #include "code\ATMOSPHERICS\components\trinary_devices\filter.dm" diff --git a/code/modules/power/turbine.dm b/code/modules/power/turbine.dm index 82e05e954b..d6dd157e81 100644 --- a/code/modules/power/turbine.dm +++ b/code/modules/power/turbine.dm @@ -50,6 +50,9 @@ turbine = locate() in get_step(src, get_dir(inturf, src)) if(!turbine) stat |= BROKEN + else + turbine.stat &= !BROKEN + turbine.compressor = src #define COMPFRICTION 5e5 @@ -104,6 +107,9 @@ compressor = locate() in get_step(src, get_dir(outturf, src)) if(!compressor) stat |= BROKEN + else + compressor.stat &= !BROKEN + compressor.turbine = src #define TURBPRES 9000000 diff --git a/icons/obj/pipeturbine.dmi b/icons/obj/pipeturbine.dmi new file mode 100644 index 0000000000000000000000000000000000000000..fccec4c9ddfdae476e0020b7d316ba6bc62bf492 GIT binary patch literal 5660 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 IwqxY~0FC|G*8l(j literal 0 HcmV?d00001 From 72a55ae04cdc82be5c25b526473e872a2c428f0b Mon Sep 17 00:00:00 2001 From: UristMcKerman Date: Mon, 26 May 2014 12:48:06 +0400 Subject: [PATCH 002/304] Forgot code file Lol --- .../components/binary_devices/pipeturbine.dm | 289 ++++++++++++++++++ 1 file changed, 289 insertions(+) create mode 100644 code/ATMOSPHERICS/components/binary_devices/pipeturbine.dm diff --git a/code/ATMOSPHERICS/components/binary_devices/pipeturbine.dm b/code/ATMOSPHERICS/components/binary_devices/pipeturbine.dm new file mode 100644 index 0000000000..7f0984efd7 --- /dev/null +++ b/code/ATMOSPHERICS/components/binary_devices/pipeturbine.dm @@ -0,0 +1,289 @@ +#define ADIABATIC_EXPONENT 0.667 //Actually adiabatic exponent - 1. + +/obj/machinery/atmospherics/pipeturbine + name = "turbine" + desc = "A gas turbine. Converting pressure into energy since 1884." + icon = 'icons/obj/pipeturbine.dmi' + icon_state = "turbine" + anchored = 0 + density = 1 + + var/efficiency = 0.4 + var/kin_energy = 0 + var/datum/gas_mixture/air_in = new + var/datum/gas_mixture/air_out = new + var/volume_ratio = 0.2 + var/kin_loss = 0.001 + + var/dP = 0 + + var/obj/machinery/atmospherics/node1 + var/obj/machinery/atmospherics/node2 + + var/datum/pipe_network/network1 + var/datum/pipe_network/network2 + + New() + ..() + air_in.volume = 200 + air_out.volume = 800 + volume_ratio = air_in.volume / (air_in.volume + air_out.volume) + switch(dir) + if(NORTH) + initialize_directions = EAST|WEST + if(SOUTH) + initialize_directions = EAST|WEST + if(EAST) + initialize_directions = NORTH|SOUTH + if(WEST) + initialize_directions = NORTH|SOUTH + + Del() + loc = null + + if(node1) + node1.disconnect(src) + del(network1) + if(node2) + node2.disconnect(src) + del(network2) + + node1 = null + node2 = null + + ..() + + process() + ..() + if(anchored && !(stat&BROKEN)) + kin_energy *= 1 - kin_loss + dP = max(air_in.return_pressure() - air_out.return_pressure(), 0) + if(dP > 10) + kin_energy += 1/ADIABATIC_EXPONENT * dP * air_in.volume * (1 - volume_ratio**ADIABATIC_EXPONENT) * efficiency + air_in.temperature *= volume_ratio**ADIABATIC_EXPONENT + + var/datum/gas_mixture/air_all = new + air_all.volume = air_in.volume + air_out.volume + air_all.merge(air_in.remove_ratio(1)) + air_all.merge(air_out.remove_ratio(1)) + + air_in.merge(air_all.remove(volume_ratio)) + air_out.merge(air_all) + + update_icon() + + if (network1) + network1.update = 1 + if (network2) + network2.update = 1 + + update_icon() + overlays.Cut() + if (dP > 10) + overlays += image('icons/obj/pipeturbine.dmi', "moto-turb") + if (kin_energy > 100000) + overlays += image('icons/obj/pipeturbine.dmi', "low-turb") + if (kin_energy > 500000) + overlays += image('icons/obj/pipeturbine.dmi', "med-turb") + if (kin_energy > 1000000) + overlays += image('icons/obj/pipeturbine.dmi', "hi-turb") + + attackby(obj/item/weapon/W as obj, mob/user as mob) + if(istype(W, /obj/item/weapon/wrench)) + anchored = !anchored + user << "\blue You [anchored ? "secure" : "unsecure"] the bolts holding [src] to the floor." + + if(anchored) + if(dir & (NORTH|SOUTH)) + initialize_directions = EAST|WEST + else if(dir & (EAST|WEST)) + initialize_directions = NORTH|SOUTH + + initialize() + build_network() + if (node1) + node1.initialize() + node1.build_network() + if (node2) + node2.initialize() + node2.build_network() + else + if(node1) + node1.disconnect(src) + del(network1) + if(node2) + node2.disconnect(src) + del(network2) + + node1 = null + node2 = null + + else + ..() + + verb/rotate_clockwise() + set category = "Object" + set name = "Rotate Circulator (Clockwise)" + set src in view(1) + + if (usr.stat || usr.restrained() || anchored) + return + + src.dir = turn(src.dir, -90) + + + verb/rotate_anticlockwise() + set category = "Object" + set name = "Rotate Circulator (Counterclockwise)" + set src in view(1) + + if (usr.stat || usr.restrained() || anchored) + return + + src.dir = turn(src.dir, 90) + +//Goddamn copypaste from binary base class because atmospherics machinery API is not damn flexible + network_expand(datum/pipe_network/new_network, obj/machinery/atmospherics/pipe/reference) + if(reference == node1) + network1 = new_network + + else if(reference == node2) + network2 = new_network + + if(new_network.normal_members.Find(src)) + return 0 + + new_network.normal_members += src + + return null + + initialize() + if(node1 && node2) return + + var/node2_connect = turn(dir, -90) + var/node1_connect = turn(dir, 90) + + for(var/obj/machinery/atmospherics/target in get_step(src,node1_connect)) + if(target.initialize_directions & get_dir(target,src)) + node1 = target + break + + for(var/obj/machinery/atmospherics/target in get_step(src,node2_connect)) + if(target.initialize_directions & get_dir(target,src)) + node2 = target + break + + build_network() + if(!network1 && node1) + network1 = new /datum/pipe_network() + network1.normal_members += src + network1.build_network(node1, src) + + if(!network2 && node2) + network2 = new /datum/pipe_network() + network2.normal_members += src + network2.build_network(node2, src) + + + return_network(obj/machinery/atmospherics/reference) + build_network() + + if(reference==node1) + return network1 + + if(reference==node2) + return network2 + + return null + + reassign_network(datum/pipe_network/old_network, datum/pipe_network/new_network) + if(network1 == old_network) + network1 = new_network + if(network2 == old_network) + network2 = new_network + + return 1 + + return_network_air(datum/pipe_network/reference) + var/list/results = list() + + if(network1 == reference) + results += air_in + if(network2 == reference) + results += air_out + + return results + + disconnect(obj/machinery/atmospherics/reference) + if(reference==node1) + del(network1) + node1 = null + + else if(reference==node2) + del(network2) + node2 = null + + return null + + +/obj/machinery/power/turbinemotor + name = "motor" + desc = "Electrogenerator. Converts rotation into power." + icon = 'icons/obj/pipeturbine.dmi' + icon_state = "motor" + anchored = 0 + density = 1 + + var/kin_to_el_ratio = 0.1 //How much kinetic energy will be taken from turbine and converted into electricity + var/obj/machinery/atmospherics/pipeturbine/turbine + + New() + ..() + spawn(1) + updateConnection() + + proc/updateConnection() + turbine = null + if(src.loc && anchored) + turbine = locate(/obj/machinery/atmospherics/pipeturbine) in get_step(src,dir) + if (turbine.stat & (BROKEN) || !turbine.anchored || turn(turbine.dir,180) != dir) + turbine = null + + process() + updateConnection() + if(!turbine || !anchored || stat & (BROKEN)) + return + + var/power_generated = kin_to_el_ratio * turbine.kin_energy + turbine.kin_energy -= power_generated + add_avail(power_generated) + + + attackby(obj/item/weapon/W as obj, mob/user as mob) + if(istype(W, /obj/item/weapon/wrench)) + anchored = !anchored + turbine = null + user << "\blue You [anchored ? "secure" : "unsecure"] the bolts holding [src] to the floor." + updateConnection() + else + ..() + + verb/rotate_clock() + set category = "Object" + set name = "Rotate Motor Clockwise" + set src in view(1) + + if (usr.stat || usr.restrained() || anchored) + return + + src.dir = turn(src.dir, -90) + + verb/rotate_anticlock() + set category = "Object" + set name = "Rotate Motor Counterclockwise" + set src in view(1) + + if (usr.stat || usr.restrained() || anchored) + return + + src.dir = turn(src.dir, 90) \ No newline at end of file From ced6f13656b2e6d62c111f96af0c3515b31f9eec Mon Sep 17 00:00:00 2001 From: DJSnapshot Date: Fri, 20 Jun 2014 20:53:11 -0700 Subject: [PATCH 003/304] Removing automatic IPC whitelist in preparation for whitelisting and overhaul of IPCs. --- code/game/jobs/whitelist.dm | 2 -- 1 file changed, 2 deletions(-) diff --git a/code/game/jobs/whitelist.dm b/code/game/jobs/whitelist.dm index 2aaad4bde6..f8f3ee80a2 100644 --- a/code/game/jobs/whitelist.dm +++ b/code/game/jobs/whitelist.dm @@ -36,8 +36,6 @@ var/list/whitelist = list() return 1 if(species == "human" || species == "Human") return 1 - if(species == "machine" || species == "Machine") - return 1 if(check_rights(R_ADMIN, 0)) return 1 if(!alien_whitelist) From 40e45287265a3a693c7111c6debd198ee6252e0b Mon Sep 17 00:00:00 2001 From: DJSnapshot Date: Sat, 21 Jun 2014 00:30:29 -0700 Subject: [PATCH 004/304] initial testing stuff for better laptops. --- baystation12.dme | 4 +++- icons/obj/computer.dmi | Bin 73753 -> 73903 bytes 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/baystation12.dme b/baystation12.dme index 3b378a6e61..ba4fd0ac65 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -478,6 +478,8 @@ #include "code\game\objects\items\devices\uplinks.dm" #include "code\game\objects\items\devices\violin.dm" #include "code\game\objects\items\devices\whistle.dm" +#include "code\game\objects\items\devices\laptops\laptop.dm" +#include "code\game\objects\items\devices\laptops\medical.dm" #include "code\game\objects\items\devices\PDA\cart.dm" #include "code\game\objects\items\devices\PDA\chatroom.dm" #include "code\game\objects\items\devices\PDA\PDA.dm" @@ -1354,5 +1356,5 @@ #include "code\ZAS\Zone.dm" #include "interface\interface.dm" #include "interface\skin.dmf" -#include "maps\tgstation2.dmm" +#include "maps\test2.dmm" // END_INCLUDE diff --git a/icons/obj/computer.dmi b/icons/obj/computer.dmi index de9a335a701ac3937e8657985694fdd6161a6db1..44903c2e2ec55f33a1d00d58897f2a6e4e8445e7 100644 GIT binary patch delta 7019 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 C*(r+v delta 6843 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 Nxo4 Date: Sun, 22 Jun 2014 12:57:37 +1200 Subject: [PATCH 005/304] Preview icon render fix - Fixes #5254 - Changes organ render list to a structured list so we can control the render order --- code/modules/mob/new_player/preferences_setup.dm | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/code/modules/mob/new_player/preferences_setup.dm b/code/modules/mob/new_player/preferences_setup.dm index b32a4780b0..5bfca3a02c 100644 --- a/code/modules/mob/new_player/preferences_setup.dm +++ b/code/modules/mob/new_player/preferences_setup.dm @@ -198,12 +198,7 @@ datum/preferences preview_icon.Blend(new /icon(icobase, "groin_[g]"), ICON_OVERLAY) preview_icon.Blend(new /icon(icobase, "head_[g]"), ICON_OVERLAY) - for(var/name in list("l_arm","r_arm","l_leg","r_leg","l_foot","r_foot","l_hand","r_hand")) - // make sure the organ is added to the list so it's drawn - if(organ_data[name] == null) - organ_data[name] = null - - for(var/name in organ_data) + for(var/name in list("r_arm","r_hand","r_leg","r_foot","l_leg","l_foot","l_arm","l_hand")) if(organ_data[name] == "amputated") continue var/icon/temp = new /icon(icobase, "[name]") @@ -216,7 +211,7 @@ datum/preferences if(current_species && (current_species.flags & HAS_TAIL)) var/icon/temp = new/icon("icon" = 'icons/effects/species.dmi', "icon_state" = "[current_species.tail]_s") preview_icon.Blend(temp, ICON_OVERLAY) - + // Skin color if(current_species && (current_species.flags & HAS_SKIN_COLOR)) preview_icon.Blend(rgb(r_skin, g_skin, b_skin), ICON_ADD) From 37e63dfcb08e9bf2473f1d78e03deab3e5b98ca1 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Sun, 22 Jun 2014 00:13:22 -0400 Subject: [PATCH 006/304] Fixes FEA temperature_expose() being used... ...instead of ZAS fire_act(). --- code/WorkInProgress/Susan/susan_desert_turfs.dm | 2 +- code/game/gamemodes/blob/theblob.dm | 2 +- code/game/gamemodes/events/biomass.dm | 2 +- code/game/gamemodes/events/spacevines.dm | 2 +- code/game/machinery/alarm.dm | 2 +- code/game/machinery/atmoalter/canister.dm | 2 +- code/game/machinery/doors/airlock.dm | 2 +- code/game/mecha/mecha.dm | 2 +- code/game/objects/effects/aliens.dm | 4 ++-- code/game/objects/effects/effect_system.dm | 2 +- code/game/objects/effects/glowshroom.dm | 2 +- code/game/objects/effects/spiders.dm | 2 +- code/game/objects/items/latexballoon.dm | 2 +- code/game/objects/items/stacks/sheets/leather.dm | 2 +- code/game/objects/structures/grille.dm | 2 +- code/game/objects/structures/mineral_doors.dm | 2 +- code/game/objects/structures/window.dm | 6 +++--- code/game/turfs/simulated/walls_mineral.dm | 2 +- code/modules/mob/living/carbon/alien/special/facehugger.dm | 2 +- code/modules/power/lighting.dm | 2 +- code/modules/reagents/reagent_dispenser.dm | 2 +- 21 files changed, 24 insertions(+), 24 deletions(-) diff --git a/code/WorkInProgress/Susan/susan_desert_turfs.dm b/code/WorkInProgress/Susan/susan_desert_turfs.dm index 947f6b6788..a52f90a4bc 100644 --- a/code/WorkInProgress/Susan/susan_desert_turfs.dm +++ b/code/WorkInProgress/Susan/susan_desert_turfs.dm @@ -227,7 +227,7 @@ Alien plants should do something if theres a lot of poison del(src) -/obj/effect/alien/flesh/weeds/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) +/obj/effect/alien/flesh/weeds/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) if(exposed_temperature > 300) health -= 5 healthcheck() diff --git a/code/game/gamemodes/blob/theblob.dm b/code/game/gamemodes/blob/theblob.dm index 4508c15ba0..51b321528e 100644 --- a/code/game/gamemodes/blob/theblob.dm +++ b/code/game/gamemodes/blob/theblob.dm @@ -87,7 +87,7 @@ return 1 return 0 -/* temperature_expose(datum/gas_mixture/air, temperature, volume) Blob is currently fireproof +/* fire_act(datum/gas_mixture/air, temperature, volume) Blob is currently fireproof if(temperature > T0C+200) health -= 0.01 * temperature update() diff --git a/code/game/gamemodes/events/biomass.dm b/code/game/gamemodes/events/biomass.dm index d1508221f7..3b48b971f0 100644 --- a/code/game/gamemodes/events/biomass.dm +++ b/code/game/gamemodes/events/biomass.dm @@ -154,7 +154,7 @@ return return -/obj/effect/biomass/temperature_expose(null, temp, volume) //hotspots kill biomass +/obj/effect/biomass/fire_act(null, temp, volume) //hotspots kill biomass del src diff --git a/code/game/gamemodes/events/spacevines.dm b/code/game/gamemodes/events/spacevines.dm index 3ff70acbdf..b3af8195ca 100644 --- a/code/game/gamemodes/events/spacevines.dm +++ b/code/game/gamemodes/events/spacevines.dm @@ -239,7 +239,7 @@ return return -/obj/effect/spacevine/temperature_expose(null, temp, volume) //hotspots kill vines +/obj/effect/spacevine/fire_act(null, temp, volume) //hotspots kill vines del src //Carn: Spacevines random event. diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm index c84f6b137a..0c42cbbad6 100644 --- a/code/game/machinery/alarm.dm +++ b/code/game/machinery/alarm.dm @@ -1338,7 +1338,7 @@ FIRE ALARM else icon_state = "fire0" -/obj/machinery/firealarm/temperature_expose(datum/gas_mixture/air, temperature, volume) +/obj/machinery/firealarm/fire_act(datum/gas_mixture/air, temperature, volume) if(src.detecting) if(temperature > T0C+200) src.alarm() // added check of detector status here diff --git a/code/game/machinery/atmoalter/canister.dm b/code/game/machinery/atmoalter/canister.dm index 107f67ee01..16de2e497b 100644 --- a/code/game/machinery/atmoalter/canister.dm +++ b/code/game/machinery/atmoalter/canister.dm @@ -110,7 +110,7 @@ update_flag overlays += "can-o3" return -/obj/machinery/portable_atmospherics/canister/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) +/obj/machinery/portable_atmospherics/canister/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) if(exposed_temperature > temperature_resistance) health -= 5 healthcheck() diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 39b5ec9a53..5a2359ade8 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -264,7 +264,7 @@ Airlock index -> wire color are { 9, 4, 6, 7, 5, 8, 1, 2, 3 }. icon = 'icons/obj/doors/Doorphoron.dmi' mineral = "phoron" -/obj/machinery/door/airlock/phoron/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) +/obj/machinery/door/airlock/phoron/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) if(exposed_temperature > 300) PhoronBurn(exposed_temperature) diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 53bf77ce57..e3465c3b7c 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -618,7 +618,7 @@ check_for_internal_damage(list(MECHA_INT_FIRE,MECHA_INT_TEMP_CONTROL,MECHA_INT_CONTROL_LOST,MECHA_INT_SHORT_CIRCUIT),1) return -/obj/mecha/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) +/obj/mecha/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) if(exposed_temperature>src.max_temperature) src.log_message("Exposed to dangerous temperature.",1) src.take_damage(5,"fire") diff --git a/code/game/objects/effects/aliens.dm b/code/game/objects/effects/aliens.dm index da510025e3..5e3ba542bf 100644 --- a/code/game/objects/effects/aliens.dm +++ b/code/game/objects/effects/aliens.dm @@ -287,7 +287,7 @@ Alien plants should do something if theres a lot of poison del(src) -/obj/effect/alien/weeds/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) +/obj/effect/alien/weeds/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) if(exposed_temperature > 300) health -= 5 healthcheck() @@ -469,7 +469,7 @@ Alien plants should do something if theres a lot of poison if(health <= 0) Burst() -/obj/effect/alien/egg/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) +/obj/effect/alien/egg/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) if(exposed_temperature > 500) health -= 5 healthcheck() diff --git a/code/game/objects/effects/effect_system.dm b/code/game/objects/effects/effect_system.dm index 0eb8685aec..dd5ee1f8b3 100644 --- a/code/game/objects/effects/effect_system.dm +++ b/code/game/objects/effects/effect_system.dm @@ -541,7 +541,7 @@ steam.start() -- spawns the effect // foam disolves when heated // except metal foams -/obj/effect/effect/foam/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) +/obj/effect/effect/foam/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) if(!metal && prob(max(0, exposed_temperature - 475))) flick("[icon_state]-disolve", src) diff --git a/code/game/objects/effects/glowshroom.dm b/code/game/objects/effects/glowshroom.dm index 425034ba48..39533b0483 100644 --- a/code/game/objects/effects/glowshroom.dm +++ b/code/game/objects/effects/glowshroom.dm @@ -154,7 +154,7 @@ else return -/obj/effect/glowshroom/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) +/obj/effect/glowshroom/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) if(exposed_temperature > 300) endurance -= 5 CheckEndurance() diff --git a/code/game/objects/effects/spiders.dm b/code/game/objects/effects/spiders.dm index 522ff35af1..be54a95ba1 100644 --- a/code/game/objects/effects/spiders.dm +++ b/code/game/objects/effects/spiders.dm @@ -47,7 +47,7 @@ if(health <= 0) del(src) -/obj/effect/spider/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) +/obj/effect/spider/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) if(exposed_temperature > 300) health -= 5 healthcheck() diff --git a/code/game/objects/items/latexballoon.dm b/code/game/objects/items/latexballoon.dm index 9b6895e0d9..a923de6183 100644 --- a/code/game/objects/items/latexballoon.dm +++ b/code/game/objects/items/latexballoon.dm @@ -38,7 +38,7 @@ /obj/item/latexballon/bullet_act() burst() -/obj/item/latexballon/temperature_expose(datum/gas_mixture/air, temperature, volume) +/obj/item/latexballon/fire_act(datum/gas_mixture/air, temperature, volume) if(temperature > T0C+100) burst() return diff --git a/code/game/objects/items/stacks/sheets/leather.dm b/code/game/objects/items/stacks/sheets/leather.dm index 8ba8879636..72339452e7 100644 --- a/code/game/objects/items/stacks/sheets/leather.dm +++ b/code/game/objects/items/stacks/sheets/leather.dm @@ -117,7 +117,7 @@ //Step two - washing..... it's actually in washing machine code. //Step three - drying -/obj/item/stack/sheet/wetleather/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) +/obj/item/stack/sheet/wetleather/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) ..() if(exposed_temperature >= drying_threshold_temperature) wetness-- diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index 97d7657d36..bb50f1d63d 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -216,7 +216,7 @@ return 0 return 0 -/obj/structure/grille/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) +/obj/structure/grille/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) if(!destroyed) if(exposed_temperature > T0C + 1500) health -= 1 diff --git a/code/game/objects/structures/mineral_doors.dm b/code/game/objects/structures/mineral_doors.dm index 38f0563897..c11a5a94e3 100644 --- a/code/game/objects/structures/mineral_doors.dm +++ b/code/game/objects/structures/mineral_doors.dm @@ -198,7 +198,7 @@ TemperatureAct(100) ..() - temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) + fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) if(exposed_temperature > 300) TemperatureAct(exposed_temperature) diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 8812b1ed4f..2c9b755f56 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -361,7 +361,7 @@ return -/obj/structure/window/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) +/obj/structure/window/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) if(exposed_temperature > T0C + 800) hit(round(exposed_volume / 100), 0) ..() @@ -381,7 +381,7 @@ shardtype = /obj/item/weapon/shard/phoron health = 120 -/obj/structure/window/phoronbasic/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) +/obj/structure/window/phoronbasic/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) if(exposed_temperature > T0C + 32000) hit(round(exposed_volume / 1000), 0) ..() @@ -395,7 +395,7 @@ reinf = 1 health = 160 -/obj/structure/window/phoronreinforced/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) +/obj/structure/window/phoronreinforced/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) return /obj/structure/window/reinforced diff --git a/code/game/turfs/simulated/walls_mineral.dm b/code/game/turfs/simulated/walls_mineral.dm index 2d08a1dd65..bd787d6ce2 100644 --- a/code/game/turfs/simulated/walls_mineral.dm +++ b/code/game/turfs/simulated/walls_mineral.dm @@ -111,7 +111,7 @@ for(var/obj/machinery/door/airlock/phoron/D in range(3,src)) D.ignite(temperature/4) -/turf/simulated/wall/mineral/phoron/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)//Doesn't fucking work because walls don't interact with air :( +/turf/simulated/wall/mineral/phoron/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)//Doesn't fucking work because walls don't interact with air :( if(exposed_temperature > 300) PhoronBurn(exposed_temperature) diff --git a/code/modules/mob/living/carbon/alien/special/facehugger.dm b/code/modules/mob/living/carbon/alien/special/facehugger.dm index f156134438..4edcbd3dc7 100644 --- a/code/modules/mob/living/carbon/alien/special/facehugger.dm +++ b/code/modules/mob/living/carbon/alien/special/facehugger.dm @@ -72,7 +72,7 @@ var/const/MAX_ACTIVE_TIME = 400 Die() return -/obj/item/clothing/mask/facehugger/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) +/obj/item/clothing/mask/facehugger/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) if(exposed_temperature > 300) Die() return diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 928c56b10c..5419ab78b1 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -618,7 +618,7 @@ // called when on fire -/obj/machinery/light/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) +/obj/machinery/light/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) if(prob(max(0, exposed_temperature - 673))) //0% at <400C, 100% at >500C broken() diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm index fc738957ac..fd5821784e 100644 --- a/code/modules/reagents/reagent_dispenser.dm +++ b/code/modules/reagents/reagent_dispenser.dm @@ -166,7 +166,7 @@ if(src) del(src) -/obj/structure/reagent_dispensers/fueltank/temperature_expose(datum/gas_mixture/air, temperature, volume) +/obj/structure/reagent_dispensers/fueltank/fire_act(datum/gas_mixture/air, temperature, volume) if(temperature > T0C+500) explode() return ..() From 9de9dab3627b7dba02a661be5a88d5bb04a2ba1f Mon Sep 17 00:00:00 2001 From: DJSnapshot Date: Sun, 22 Jun 2014 02:08:42 -0700 Subject: [PATCH 007/304] Initial commit of Computer 3 from Paradise, along with a bunch of fixes. --- code/WorkInProgress/computer3/NTOS.dm | 199 +++ code/WorkInProgress/computer3/bios.dm | 182 +++ .../computer3/buildandrepair.dm | 302 ++++ code/WorkInProgress/computer3/component.dm | 194 +++ code/WorkInProgress/computer3/computer.dm | 446 ++++++ .../computer3/computer3_notes.dm | 34 + .../computer3/computers/HolodeckControl.dm | 254 ++++ .../computer3/computers/Operating.dm | 47 + .../computer3/computers/aifixer.dm | 117 ++ .../computer3/computers/arcade.dm | 180 +++ .../computer3/computers/atmos_alert.dm | 110 ++ .../computer3/computers/camera.dm | 277 ++++ .../computer3/computers/card.dm | 289 ++++ .../computer3/computers/cloning.dm | 363 +++++ .../computer3/computers/communications.dm | 384 +++++ .../computer3/computers/crew.dm | 71 + .../computer3/computers/customs.dm | 3 + .../WorkInProgress/computer3/computers/law.dm | 84 ++ .../computer3/computers/medical.dm | 503 +++++++ .../computer3/computers/message.dm | 441 ++++++ .../WorkInProgress/computer3/computers/pod.dm | 218 +++ .../computer3/computers/power.dm | 47 + .../computer3/computers/prisoner.dm | 109 ++ .../computer3/computers/prisonshuttle.dm | 242 ++++ .../computer3/computers/robot.dm | 211 +++ .../computer3/computers/scanconsole.dm | 1274 +++++++++++++++++ .../computer3/computers/security.dm | 606 ++++++++ .../computer3/computers/shuttle.dm | 75 + .../computer3/computers/specops_shuttle.dm | 246 ++++ .../computer3/computers/station_alert.dm | 114 ++ .../computer3/computers/syndicate_shuttle.dm | 103 ++ .../computers/syndicate_specops_shuttle.dm | 259 ++++ code/WorkInProgress/computer3/file.dm | 166 +++ code/WorkInProgress/computer3/laptop.dm | 137 ++ code/WorkInProgress/computer3/networking.dm | 236 +++ code/WorkInProgress/computer3/program.dm | 404 ++++++ .../WorkInProgress/computer3/program_disks.dm | 44 + code/WorkInProgress/computer3/server.dm | 32 + code/WorkInProgress/computer3/storage.dm | 184 +++ .../WorkInProgress/computer3/test_machines.dm | 86 ++ .../computer3/upload/lawfile.dm | 29 + .../computer3/upload/programs.dm | 13 + code/__HELPERS/unsorted.dm | 5 + code/datums/browser.dm | 7 + code/setup.dm | 9 + icons/NTOS/airestore.png | Bin 0 -> 3096 bytes icons/NTOS/aiupload.png | Bin 0 -> 3093 bytes icons/NTOS/alerts.png | Bin 0 -> 3041 bytes icons/NTOS/borgcontrol.png | Bin 0 -> 3154 bytes icons/NTOS/borgupload.png | Bin 0 -> 3040 bytes icons/NTOS/camera.png | Bin 0 -> 3298 bytes icons/NTOS/cardcomp.png | Bin 0 -> 3174 bytes icons/NTOS/cloning.png | Bin 0 -> 3050 bytes icons/NTOS/comms.png | Bin 0 -> 3157 bytes icons/NTOS/copyfile.png | Bin 0 -> 3030 bytes icons/NTOS/deletefile.png | Bin 0 -> 3008 bytes icons/NTOS/drive.png | Bin 0 -> 259 bytes icons/NTOS/exocontrol.png | Bin 0 -> 3355 bytes icons/NTOS/file.png | Bin 0 -> 2984 bytes icons/NTOS/folder.png | Bin 0 -> 259 bytes icons/NTOS/foldermeta.png | Bin 0 -> 350 bytes icons/NTOS/genetics.png | Bin 0 -> 3194 bytes icons/NTOS/medical.png | Bin 0 -> 3030 bytes icons/NTOS/monitoring.png | Bin 0 -> 3011 bytes icons/NTOS/movefile.png | Bin 0 -> 2985 bytes icons/NTOS/ntos.png | Bin 0 -> 67090 bytes icons/NTOS/operating.png | Bin 0 -> 2990 bytes icons/NTOS/pda.png | Bin 0 -> 2953 bytes icons/NTOS/power.png | Bin 0 -> 3055 bytes icons/NTOS/prison.png | Bin 0 -> 3117 bytes icons/NTOS/program.png | Bin 0 -> 2963 bytes icons/NTOS/records.png | Bin 0 -> 3069 bytes icons/NTOS/research.png | Bin 0 -> 3120 bytes icons/NTOS/server.png | Bin 0 -> 3195 bytes icons/NTOS/tb_close.png | Bin 0 -> 453 bytes icons/NTOS/tcomms.png | Bin 0 -> 3289 bytes icons/obj/computer3.dmi | Bin 0 -> 37470 bytes 77 files changed, 9336 insertions(+) create mode 100644 code/WorkInProgress/computer3/NTOS.dm create mode 100644 code/WorkInProgress/computer3/bios.dm create mode 100644 code/WorkInProgress/computer3/buildandrepair.dm create mode 100644 code/WorkInProgress/computer3/component.dm create mode 100644 code/WorkInProgress/computer3/computer.dm create mode 100644 code/WorkInProgress/computer3/computer3_notes.dm create mode 100644 code/WorkInProgress/computer3/computers/HolodeckControl.dm create mode 100644 code/WorkInProgress/computer3/computers/Operating.dm create mode 100644 code/WorkInProgress/computer3/computers/aifixer.dm create mode 100644 code/WorkInProgress/computer3/computers/arcade.dm create mode 100644 code/WorkInProgress/computer3/computers/atmos_alert.dm create mode 100644 code/WorkInProgress/computer3/computers/camera.dm create mode 100644 code/WorkInProgress/computer3/computers/card.dm create mode 100644 code/WorkInProgress/computer3/computers/cloning.dm create mode 100644 code/WorkInProgress/computer3/computers/communications.dm create mode 100644 code/WorkInProgress/computer3/computers/crew.dm create mode 100644 code/WorkInProgress/computer3/computers/customs.dm create mode 100644 code/WorkInProgress/computer3/computers/law.dm create mode 100644 code/WorkInProgress/computer3/computers/medical.dm create mode 100644 code/WorkInProgress/computer3/computers/message.dm create mode 100644 code/WorkInProgress/computer3/computers/pod.dm create mode 100644 code/WorkInProgress/computer3/computers/power.dm create mode 100644 code/WorkInProgress/computer3/computers/prisoner.dm create mode 100644 code/WorkInProgress/computer3/computers/prisonshuttle.dm create mode 100644 code/WorkInProgress/computer3/computers/robot.dm create mode 100644 code/WorkInProgress/computer3/computers/scanconsole.dm create mode 100644 code/WorkInProgress/computer3/computers/security.dm create mode 100644 code/WorkInProgress/computer3/computers/shuttle.dm create mode 100644 code/WorkInProgress/computer3/computers/specops_shuttle.dm create mode 100644 code/WorkInProgress/computer3/computers/station_alert.dm create mode 100644 code/WorkInProgress/computer3/computers/syndicate_shuttle.dm create mode 100644 code/WorkInProgress/computer3/computers/syndicate_specops_shuttle.dm create mode 100644 code/WorkInProgress/computer3/file.dm create mode 100644 code/WorkInProgress/computer3/laptop.dm create mode 100644 code/WorkInProgress/computer3/networking.dm create mode 100644 code/WorkInProgress/computer3/program.dm create mode 100644 code/WorkInProgress/computer3/program_disks.dm create mode 100644 code/WorkInProgress/computer3/server.dm create mode 100644 code/WorkInProgress/computer3/storage.dm create mode 100644 code/WorkInProgress/computer3/test_machines.dm create mode 100644 code/WorkInProgress/computer3/upload/lawfile.dm create mode 100644 code/WorkInProgress/computer3/upload/programs.dm create mode 100644 icons/NTOS/airestore.png create mode 100644 icons/NTOS/aiupload.png create mode 100644 icons/NTOS/alerts.png create mode 100644 icons/NTOS/borgcontrol.png create mode 100644 icons/NTOS/borgupload.png create mode 100644 icons/NTOS/camera.png create mode 100644 icons/NTOS/cardcomp.png create mode 100644 icons/NTOS/cloning.png create mode 100644 icons/NTOS/comms.png create mode 100644 icons/NTOS/copyfile.png create mode 100644 icons/NTOS/deletefile.png create mode 100644 icons/NTOS/drive.png create mode 100644 icons/NTOS/exocontrol.png create mode 100644 icons/NTOS/file.png create mode 100644 icons/NTOS/folder.png create mode 100644 icons/NTOS/foldermeta.png create mode 100644 icons/NTOS/genetics.png create mode 100644 icons/NTOS/medical.png create mode 100644 icons/NTOS/monitoring.png create mode 100644 icons/NTOS/movefile.png create mode 100644 icons/NTOS/ntos.png create mode 100644 icons/NTOS/operating.png create mode 100644 icons/NTOS/pda.png create mode 100644 icons/NTOS/power.png create mode 100644 icons/NTOS/prison.png create mode 100644 icons/NTOS/program.png create mode 100644 icons/NTOS/records.png create mode 100644 icons/NTOS/research.png create mode 100644 icons/NTOS/server.png create mode 100644 icons/NTOS/tb_close.png create mode 100644 icons/NTOS/tcomms.png create mode 100644 icons/obj/computer3.dmi diff --git a/code/WorkInProgress/computer3/NTOS.dm b/code/WorkInProgress/computer3/NTOS.dm new file mode 100644 index 0000000000..54fad87ce0 --- /dev/null +++ b/code/WorkInProgress/computer3/NTOS.dm @@ -0,0 +1,199 @@ +/* + The Big Bad NT Operating System +*/ + +/datum/file/program/NTOS + name = "Nanotrasen Operating System" + extension = "prog" + active_state = "ntos" + var/obj/item/part/computer/storage/current // the drive being viewed, null for desktop/computer + var/fileop = "runfile" + +/* + Generate a basic list of files in the selected scope +*/ + +/datum/file/program/NTOS/proc/list_files() + if(!computer || !current) return null + return current.files + + +/datum/file/program/NTOS/proc/filegrid(var/list/filelist) + var/dat = "" + var/i = 0 + for(var/datum/file/F in filelist) + i++ + if(i==1) + dat += "" + if(i>= 7) + i = 0 + dat += "" + continue + dat += {" + "} + + dat += "
+ +
+ [F.name] +
+
" + return dat + +// +// I am separating this from filegrid so that I don't have to +// make metadata peripheral files +// +/datum/file/program/NTOS/proc/desktop(var/peripheralop = "viewperipheral") + var/dat = "" + var/i = 0 + var/list/peripherals = list(computer.hdd,computer.floppy,computer.cardslot) + for(var/obj/item/part/computer/C in peripherals) + if(!istype(C)) continue + i++ + if(i==1) + dat += "" + if(i>= 8) + i = 0 + dat += "" + continue + dat += {" + "} + + dat += "
+ + \icon[C]
+ [C.name] +
+
" + return dat + + +/datum/file/program/NTOS/proc/window(var/title,var/buttonbar,var/content) + return {" +
+
[title]
+
[buttonbar]
+
[content]
+
"} + +/datum/file/program/NTOS/proc/buttonbar(var/type = 0) + switch(type) + if(0) // FILE OPERATIONS + return {""} + +/datum/file/program/NTOS/interact() + if(!interactable()) + return + var/dat = {" + + + Nanotrasen Operating System + + + +
"} + + var/list/files = list_files() + if(current) + dat +=window(current.name,buttonbar(),filegrid(files)) + else + dat += desktop() + + dat += "
" + + usr << browse(dat, "window=\ref[computer];size=670x510") + onclose(usr, "\ref[computer]") + +/datum/file/program/NTOS/Topic(href, list/href_list) + if(!interactable() || ..(href,href_list)) + return + + if("viewperipheral" in href_list) // open drive, show status of peripheral + var/obj/item/part/computer/C = locate(href_list["viewperipheral"]) + if(istype(C,/obj/item/part/computer/storage)) + current = C + interact() + return + // else ??? + interact() + return + + // distinct from close, this is the file dialog window + if("winclose" in href_list) + current = null + interact() + return + +#undef MAX_ROWS +#undef MAX_COLUMNS diff --git a/code/WorkInProgress/computer3/bios.dm b/code/WorkInProgress/computer3/bios.dm new file mode 100644 index 0000000000..17ed0c4789 --- /dev/null +++ b/code/WorkInProgress/computer3/bios.dm @@ -0,0 +1,182 @@ +/* + Okay so my last effort to have a central BIOS function was interesting + but completely unmaintainable, I have scrapped it. + + The parts that were actually useful will be put here in functions instead. + If we want a central bios function we can add one that just indexes them. + That should at least allow sensible debugging. +*/ + +/obj/machinery/computer3 + + /* + interactable(user): performs all standard sanity checks + Call in topic() and interact(). + */ + proc/interactable(var/mob/user) + if( !src || !user || stat || user.stat || user.lying || user.blinded ) + return 0 + if(!program) + return 0 + + if(!istype(loc,/turf) || !istype(user.loc,/turf)) // todo handheld maybe + return 0 + + if(istype(user,/mob/living/silicon)) + if(!program.ai_allowed) + user << "\blue You are forbidden from accessing this program." + return 0 + else + if(program.human_controls) + if(!ishuman(user)) + user << "\red Your body can't work the controls!" + return 0 + if(user.restrained()) + user << "\red You need a free hand!" + return 0 + + if(!in_range(src,user)) + // telekinesis check + if(ishuman(user) && istype(user.get_active_hand(),/obj/item/tk_grab)) + if(program.human_controls) + user << "\red It's too complicated to work at a distance!" + return 0 + add_fingerprint(user) + user.set_machine(src) + return 1 + return 0 + + add_fingerprint(user) + user.set_machine(src) + return 1 + + /* + Deduplicates an item list and gives you range and direction. + This is used for networking so you can determine which of several + identically named objects you're referring to. + */ + proc/format_atomlist(var/list/atoms) + var/list/output = list() + for(var/atom/A in atoms) + var/title = "[A] (Range [get_dist(A,src)] meters, [dir2text(get_dir(src,A))])" + output[title] = A + return output + + /* + This is used by the camera monitoring program to see if you're still in range + */ + check_eye(var/mob/user as mob) + if(!interactable(user) || user.machine != src) + if(user.machine == src) + user.unset_machine() + return null + + var/datum/file/program/security/S = program + if( !istype(S) || !S.current || !S.current.status || !camnet ) + if( user.machine == src ) + user.unset_machine() + return null + + user.reset_view(S.current) + return 1 + + /* + List all files, including removable disks and data cards + (I don't know why but I don't want to rip data cards out. + It just seems... interesting?) + */ + proc/list_files(var/typekey = null) + var/list/files = list() + if(hdd) + files += hdd.files + if(floppy && floppy.inserted) + files += floppy.inserted.files + if(cardslot && istype(cardslot.reader,/obj/item/weapon/card/data)) + files += cardslot.reader:files + if(!ispath(typekey)) + return files + + var/i = 1 + while(i<=files.len) + if(istype(files[i],typekey)) + i++ + continue + files.Cut(i,i+1) + return files + + /* + Crash the computer with an error. + Todo: redo + */ + proc/Crash(var/errorcode = PROG_CRASH) + if(!src) + return null + + switch(errorcode) + if(PROG_CRASH) + if(usr) + usr << "\red The program crashed!" + usr << browse(null,"\ref[src]") + Reset() + + if(MISSING_PERIPHERAL) + Reset() + if(usr) + usr << browse("

ERROR: Missing or disabled component

A hardware failure has occured. Please insert or replace the missing or damaged component and restart the computer.","window=\ref[src]") + + if(BUSTED_ASS_COMPUTER) + Reset() + os.error = BUSTED_ASS_COMPUTER + if(usr) + usr << browse("

ERROR: Missing or disabled component

A hardware failure has occured. Please insert or replace the missing or damaged component and restart the computer.","window=\ref[src]") + + if(MISSING_PROGRAM) + Reset() + if(usr) + usr << browse("

ERROR: No associated program

This file requires a specific program to open, which cannot be located. Please install the related program and try again.","window=\ref[src]") + + if(FILE_DRM) + Reset() + if(usr) + usr << browse("

ERROR: File operation prohibited

Copy protection exception: missing authorization token.","window=\ref[src]") + + if(NETWORK_FAILURE) + Reset() + if(usr) + usr << browse("

ERROR: Networking exception: Unable to connect to remote host.","window=\ref[src]") + + + else + if(usr) + usr << "\red The program crashed!" + usr << browse(null,"\ref[src]") + testing("computer/Crash() - unknown error code [errorcode]") + Reset() + return null + + #define ANY_DRIVE 0 + #define PREFER_FLOPPY 1 + #define PREFER_CARD 2 + #define PREFER_HDD 4 + + + // required_location: only put on preferred devices + proc/writefile(var/datum/file/F, var/where = ANY_DRIVE, var/required_location = 0) + if(where != ANY_DRIVE) + if((where&PREFER_FLOPPY) && floppy && floppy.addfile(F)) + return 1 + if((where&PREFER_CARD) && cardslot && cardslot.addfile(F)) + return 1 + if((where&PREFER_HDD) && hdd && hdd.addfile(F)) + return 1 + + if(required_location) + return 0 + + if(floppy && floppy.addfile(F)) + return 1 + if(cardslot && cardslot.addfile(F)) + return 1 + if(hdd && hdd.addfile(F)) + return 1 + return 0 diff --git a/code/WorkInProgress/computer3/buildandrepair.dm b/code/WorkInProgress/computer3/buildandrepair.dm new file mode 100644 index 0000000000..2cb9139f2e --- /dev/null +++ b/code/WorkInProgress/computer3/buildandrepair.dm @@ -0,0 +1,302 @@ +// Computer3 circuitboard specifically +/obj/item/part/computer/circuitboard + density = 0 + anchored = 0 + w_class = 2.0 + name = "Circuit board" + icon = 'icons/obj/module.dmi' + icon_state = "id_mod" + item_state = "electronic" + origin_tech = "programming=2" + var/id = null + var/frequency = null + var/build_path = null + var/board_type = "computer" + var/list/req_components = null + var/powernet = null + var/list/records = null + var/frame_desc = null + + var/datum/file/program/OS = new/datum/file/program/NTOS + +/obj/machinery/computer3/proc/disassemble(mob/user as mob) // todo + return + + +/obj/structure/computer3frame + density = 1 + anchored = 0 + name = "computer frame" + icon = 'icons/obj/stock_parts.dmi' + icon_state = "0" + var/state = 0 + + var/obj/item/part/computer/circuitboard/circuit = null + var/completed = /obj/machinery/computer + + // Computer3 components - a carbon copy of the list from + // computer.dm; however, we will need to check to make sure + // we don't install more components than the computer frame + // can handle. This will be different for certain formfactors. + + var/max_components = 4 + var/list/components = list() + + // Storage + var/obj/item/part/computer/storage/hdd/hdd = null + var/obj/item/part/computer/storage/removable/floppy = null + // Networking + var/obj/item/part/computer/networking/radio/radio = null // not handled the same as other networks + var/obj/item/part/computer/networking/cameras/camnet = null // just plain special + var/obj/item/part/computer/networking/net = null // Proximity, area, or cable network + var/obj/item/part/computer/networking/subspace/centcom = null // only for offstation communications + + // Card reader - note the HoP reader is a subtype + var/obj/item/part/computer/cardslot/cardslot = null + + // Misc & special purpose + var/obj/item/part/computer/ai_holder/cradle = null + var/obj/item/part/computer/toybox/toybox = null + + // Battery must be installed BEFORE wiring the computer. + // if installing it in an existing computer, you will have to + // get back to this state first. + var/obj/item/weapon/cell/battery = null + +/obj/structure/computer3frame/server + name = "server frame" + completed = /obj/machinery/computer3/server + max_components = 6 +/obj/structure/computer3frame/wallcomp + name = "wall-computer frame" + completed = /obj/machinery/computer3/wall_comp + max_components = 3 +/obj/structure/computer3frame/laptop + name = "laptop frame" + completed = /obj/machinery/computer3/laptop + max_components = 3 + +/obj/structure/computer3frame/attackby(obj/item/P as obj, mob/user as mob) + switch(state) + if(0) + if(istype(P, /obj/item/weapon/wrench)) + playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) + if(do_after(user, 20)) + user << "\blue You wrench the frame into place." + src.anchored = 1 + src.state = 1 + if(istype(P, /obj/item/weapon/weldingtool)) + var/obj/item/weapon/weldingtool/WT = P + if(!WT.remove_fuel(0, user)) + user << "The welding tool must be on to complete this task." + return + playsound(src.loc, 'sound/items/Welder.ogg', 50, 1) + if(do_after(user, 20)) + if(!src || !WT.isOn()) return + user << "\blue You deconstruct the frame." + new /obj/item/stack/sheet/metal( src.loc, 5 ) + del(src) + if(1) + if(istype(P, /obj/item/weapon/wrench)) + playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) + if(do_after(user, 20)) + user << "\blue You unfasten the frame." + src.anchored = 0 + src.state = 0 + if(istype(P, /obj/item/weapon/circuitboard) && !circuit) + var/obj/item/weapon/circuitboard/B = P + if(B.board_type == "computer") + playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) + user << "\blue You place the circuit board inside the frame." + src.icon_state = "1" + src.circuit = P + user.drop_item() + P.loc = src + else + user << "\red This frame does not accept circuit boards of this type!" + if(istype(P, /obj/item/weapon/screwdriver) && circuit) + playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) + user << "\blue You screw the circuit board into place." + src.state = 2 + src.icon_state = "2" + if(istype(P, /obj/item/weapon/crowbar) && circuit) + playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1) + user << "\blue You remove the circuit board." + src.state = 1 + src.icon_state = "0" + circuit.loc = src.loc + src.circuit = null + if(2) + if(istype(P, /obj/item/weapon/screwdriver) && circuit) + playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) + user << "\blue You unfasten the circuit board." + src.state = 1 + src.icon_state = "1" + + if(istype(P, /obj/item/weapon/crowbar)) + if(battery) + playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1) + if(do_after(10)) + battery.loc = loc + user << "\blue You remove [battery]." + battery = null + else + user << "\red There's no battery to remove!" + + if(istype(P, /obj/item/weapon/cell)) + if(!battery) + playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) + if(do_after(5)) + battery = P + P.loc = src + user << "\blue You insert [battery]." + else + user << "\red There's already \an [battery] in [src]!" + + + if(istype(P, /obj/item/weapon/cable_coil)) + if(P:amount >= 5) + playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) + if(do_after(user, 20)) + if(P) + P:amount -= 5 + if(!P:amount) del(P) + user << "\blue You add cables to the frame." + src.state = 3 + src.icon_state = "3" + if(3) + if(istype(P, /obj/item/weapon/wirecutters)) + if(components.len) + user << "There are parts in the way!" + return + playsound(src.loc, 'sound/items/Wirecutter.ogg', 50, 1) + user << "\blue You remove the cables." + src.state = 2 + src.icon_state = "2" + var/obj/item/weapon/cable_coil/A = new /obj/item/weapon/cable_coil( src.loc ) + A.amount = 5 + + if(istype(P, /obj/item/weapon/crowbar)) // complicated check + remove_peripheral() + + if(istype(P, /obj/item/stack/sheet/glass)) + if(P:amount >= 2) + playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) + if(do_after(user, 20)) + if(P) + P:use(2) + user << "\blue You put in the glass panel." + src.state = 4 + src.icon_state = "4" + if(4) + if(istype(P, /obj/item/weapon/crowbar)) + playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1) + user << "\blue You remove the glass panel." + src.state = 3 + src.icon_state = "3" + new /obj/item/stack/sheet/glass( src.loc, 2 ) + if(istype(P, /obj/item/weapon/screwdriver)) + playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) + user << "\blue You connect the monitor." + var/obj/machinery/computer3/B = new src.circuit.build_path ( src.loc, built=1 ) + /*if(circuit.powernet) B:powernet = circuit.powernet + if(circuit.id) B:id = circuit.id + //if(circuit.records) B:records = circuit.records + if(circuit.frequency) B:frequency = circuit.frequency + if(istype(circuit,/obj/item/weapon/circuitboard/supplycomp)) + var/obj/machinery/computer/supplycomp/SC = B + var/obj/item/weapon/circuitboard/supplycomp/C = circuit + SC.can_order_contraband = C.contraband_enabled*/ + B.circuit = circuit + circuit.loc = B + if(circuit.OS) + circuit.OS.computer = B + B.RefreshParts() // todo + del(src) + +/* + This will remove peripherals if you specify one, but the main function is to + allow the user to remove a part specifically. +*/ +/obj/structure/computer3frame/proc/remove_peripheral(var/obj/item/I = null) + if(!components || !components.len) + usr << "\red There are no components in [src] to take out!" + return 0 + if(!I) + I = input(usr, "Remove which component?","Remove component", null) as null|obj in components + + if(I) + playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1) + if(do_after(usr,25)) + if(I==hdd) + components -= hdd + hdd.loc = loc + hdd = null + else if(I==floppy) + components -= floppy + floppy.loc = loc + floppy = null + else if(I==radio) + components -= radio + radio.loc = loc + radio = null + else if(I==camnet) + components -= camnet + camnet.loc = loc + camnet = null + else if(I==net) + components -= net + net.loc = loc + net = null + else if(I==cradle) + components -= cradle + cradle.loc = loc + cradle = null + else if(I==toybox) + components -= toybox + toybox.loc = loc + toybox = null + else + warning("Erronous component in computerframe/remove_peripheral: [I]") + I.loc = loc + usr << "\blue You remove [I]" + return 1 + return 0 +/obj/structure/computer3frame/proc/insert_peripheral(var/obj/item/I) + if(components.len >= max_components) + usr << "There isn't room in [src] for another component!" + return 0 + switch(I.type) + if(/obj/item/part/computer/storage/hdd) + if(hdd) + usr << "There is already \an [hdd] in [src]!" + return 0 + hdd = I + components += hdd + hdd.loc = src + if(/obj/item/part/computer/storage/removable) + if(floppy) + usr << "There is already \an [floppy] in [src]!" + return 0 + floppy = I + components += floppy + floppy.loc = src + if(/obj/item/part/computer/networking/radio) + if(radio) + usr << "There is already \an [radio] in [src]!" + return 0 + radio = I + components += radio + radio.loc = src + if(/obj/item/part/computer/networking/cameras) + if(camnet) + usr << "There is already \an [camnet] in [src]!" + return 0 + camnet = I + components += camnet + camnet.loc = src + if(/obj/item/part/computer/networking) + if(net) + usr << "There is already \an [net] in [src]!" + + diff --git a/code/WorkInProgress/computer3/component.dm b/code/WorkInProgress/computer3/component.dm new file mode 100644 index 0000000000..a6965ab9e5 --- /dev/null +++ b/code/WorkInProgress/computer3/component.dm @@ -0,0 +1,194 @@ + +/* + Objects used to construct computers, and objects that can be inserted into them, etc. + + TODO: + * Synthesizer part (toybox, injectors, etc) +*/ + + + +/obj/item/part/computer + name = "computer part" + desc = "Holy jesus you donnit now" + gender = PLURAL + icon = 'icons/obj/stock_parts.dmi' + icon_state = "hdd1" + w_class = 2.0 + + var/emagged = 0 + crit_fail = 0 + + // the computer that this device is attached to + var/obj/machinery/computer3/computer + + // If the computer is attacked by an item it will reference this to decide which peripheral(s) are affected. + var/list/attackby_types = list() + proc/allow_attackby(var/obj/item/I as obj,var/mob/user as mob) + + for(var/typekey in attackby_types) + if(istype(I,typekey)) + return 1 + return 0 + + proc/init(var/obj/machinery/computer/target) + computer = target + // continue to handle all other type-specific procedures + +/* + Below are all the miscellaneous components + For storage drives, see storage.dm + For networking parts, see +*/ + +/obj/item/part/computer/ai_holder + name = "intelliCard computer module" + desc = "Contains a specialized nacelle for dealing with highly sensitive equipment without interference." + + attackby_types = list(/obj/item/device/aicard) + + var/mob/living/silicon/ai/occupant = null + var/busy = 0 + + // Ninja gloves check + attack_hand(mob/user as mob) + if(ishuman(user) && istype(user:gloves, /obj/item/clothing/gloves/space_ninja) && user:gloves:candrain && !user:gloves:draining) + if(user:wear_suit:s_control) + user:wear_suit.transfer_ai("AIFIXER","NINJASUIT",src,user) + else + user << "\red ERROR: \black Remote access channel disabled." + return + ..() + + attackby(obj/I as obj,mob/user as mob) + if(computer && !computer.stat) + if(istype(I, /obj/item/device/aicard)) + I:transfer_ai("AIFIXER","AICARD",src,user) + if(computer.program) + computer.program.update_icon() + computer.update_icon() + computer.occupant = occupant + ..() + return + +/* + ID computer cardslot - reading and writing slots +*/ + +/obj/item/part/computer/cardslot + name = "magnetic card slot" + desc = "Contains a slot for reading magnetic swipe cards." + + var/obj/item/weapon/card/reader = null + var/obj/item/weapon/card/writer = null // so that you don't need to typecast dual cardslots, but pretend it's not here + // alternately pretend they did it to save money on manufacturing somehow + var/dualslot = 0 // faster than typechecking + attackby_types = list(/obj/item/weapon/card) + + attackby(var/obj/item/I as obj, var/mob/user as mob) + if(istype(I,/obj/item/weapon/card)) + insert(I) + return + ..(I,user) + + proc/insert(var/obj/item/weapon/card/card) + if(!computer) + return 0 + if(reader != null) + usr << "There is already something in the slot!" + return 0 + if(istype(card,/obj/item/weapon/card/emag)) // emag reader slot + usr << "You insert \the [card], and the computer grinds, sparks, and beeps. After a moment, the card ejects itself." + computer.emagged = 1 + return 1 + var/mob/living/L = usr + L.drop_item() + card.loc = src + reader = card + + proc/remove() + reader.loc = loc + var/mob/living/carbon/human/user = usr + if(istype(user) && !user.get_active_hand()) + user.put_in_hands(reader) + reader = null + + // Authorizes the user based on the computer's requirements + proc/authenticate() + return computer.check_access(reader) + + proc/addfile(var/datum/file/F) + if(!dualslot || !istype(writer,/obj/item/weapon/card/data)) + return 0 + var/obj/item/weapon/card/data/D = writer + if(D.files.len > 3) + return 0 + D.files += F + return 1 + +/obj/item/part/computer/cardslot/dual + name = "magnetic card reader" + desc = "Contains slots for inserting magnetic swipe cards for reading and writing." + dualslot = 1 + + insert(var/obj/item/weapon/card/card,var/slot = 0) + if(!computer) + return 0 + + if(istype(card,/obj/item/weapon/card/emag) && !reader) // emag reader slot + usr.visible_message("[computer]'s screen flickers for a moment.","You insert \the [card]. After a moment, the card ejects itself, and [computer] beeps.","[computer] beeps.") + computer.emagged = 1 + return 1 + + if(slot == 1) // 1: writer + if(writer != null) + usr << "There's already a card in that slot!" + return 0 + var/mob/living/L = usr + L.drop_item() + card.loc = src + writer = card + return 1 + else if(slot == 2) // 2: reader + if(reader != null) + usr << "There's already a card in that slot!" + return 0 + var/mob/living/L = usr + L.drop_item() + card.loc = src + reader = card + return 1 + else // 0: auto + if(reader && writer) + usr << "Both slots are full!" + return 0 + var/mob/living/L = usr + L.drop_item() + card.loc = src + if(reader) + writer = card + computer.updateUsrDialog() + return 1 + if(istype(card,/obj/item/weapon/card/id) && !(access_change_ids in card:access) && !writer) // not authorized + writer = card + computer.updateUsrDialog() + return 1 + if(!reader) + reader = card + computer.updateUsrDialog() + return 1 + return 0 + + remove(var/obj/item/weapon/card/card) + if(card != reader && card != writer) + return + + if(card == reader) reader = null + if(card == writer) writer = null + card.loc = loc + + var/mob/living/carbon/human/user = usr + if(ishuman(user) && !user.get_active_hand()) + user.put_in_hands(card) + + diff --git a/code/WorkInProgress/computer3/computer.dm b/code/WorkInProgress/computer3/computer.dm new file mode 100644 index 0000000000..48869571d1 --- /dev/null +++ b/code/WorkInProgress/computer3/computer.dm @@ -0,0 +1,446 @@ +/obj/machinery/computer3 + name = "computer" + icon = 'icons/obj/computer3.dmi' + icon_state = "frame" + density = 1 + anchored = 1.0 + + idle_power_usage = 20 + active_power_usage = 50 + + var/allow_disassemble = 1 + var/legacy_icon = 0 // if 1, use old style icons + var/show_keyboard = 1 + + // These is all you should need to change when creating a new computer. + // If there is no default program, the OS will run instead. + // If there is no hard drive, but there is a default program, the OS rom on + // the circuitboard will be overridden. + + // For these, typepaths are used, NOT objects + + var/default_prog = null // the program running when spawned + var/list/spawn_files = list() // files added when spawned + var/list/spawn_parts = list(/obj/item/part/computer/storage/hdd/big) // peripherals to spawn + + // Computer3 components - put an object in them in New() when not built + // I used to have a more pliable /list, but the ambiguities + // there in how many of what you had was killing me, especially + // when you had to search the list to find what you had. + + // Mostly decorative, holds the OS rom + var/obj/item/part/computer/circuitboard/circuit + + // Storage + var/obj/item/part/computer/storage/hdd/hdd = null + var/obj/item/part/computer/storage/removable/floppy = null + // Networking + var/obj/item/part/computer/networking/radio/radio = null // not handled the same as other networks + var/obj/item/part/computer/networking/cameras/camnet = null // just plain special + var/obj/item/part/computer/networking/net = null // Proximity, area, or cable network + + // Card reader - note the HoP reader is a subtype + var/obj/item/part/computer/cardslot/cardslot = null + + // Misc & special purpose + var/obj/item/part/computer/ai_holder/cradle = null + var/obj/item/part/computer/toybox/toybox = null + var/mob/living/silicon/ai/occupant = null + + + // Legacy variables + // camera networking - overview (???) + var/mapping = 0 + var/last_pic = 1.0 + + // Purely graphical effect + var/icon/kb = null + + // These are necessary in order to consolidate all computer types into one + var/datum/wires/wires = null + var/powernet = null + + // Used internally + var/datum/file/program/program = null // the active program (null if defaulting to os) + var/datum/file/program/os = null // the base code of the machine (os or hardcoded program) + + // If you want the computer to have a UPS, add a battery during construction. This is useful for things like + // the comms computer, solar trackers, etc, that should function when all else is off. + // Laptops will require batteries and have no mains power. + + var/obj/item/weapon/cell/battery = null // uninterruptible power supply aka battery + + + verb/ResetComputer() + set name = "Reset Computer" + set category = "Object" + set src in view(1) + Reset() + + New(var/L, var/built = 0) + ..() + spawn(2) + power_change() + + if(show_keyboard) + var/kb_state = "kb[rand(1,15)]" + kb = image('icons/obj/computer3.dmi',icon_state=kb_state) + overlays += kb + + if(!built) + if(!circuit || !istype(circuit)) + circuit = new(src) + if(circuit.OS) + os = circuit.OS + circuit.OS.computer = src + else + os = null + + // separated into its own function because blech + spawn_parts() + + if(default_prog) // Add the default software if applicable + var/datum/file/program/P = new default_prog + if(hdd) + hdd.addfile(P,1) + program = P + if(!os) + os = P + else if(floppy) + floppy.inserted = new(floppy) + floppy.files = floppy.inserted.files + floppy.addfile(P) + program = P + else + circuit.OS = P + circuit.OS.computer = src + os = circuit.OS + circuit.name = "Circuitboard ([P])" + + + if(hdd) // Spawn files + for(var/typekey in spawn_files) + hdd.addfile(new typekey,1) + + if(program) + program.execute(os) + update_icon() + + + + proc/spawn_parts() + for(var/typekey in spawn_parts) + + if(ispath(typekey,/obj/item/part/computer/storage/removable)) + if(floppy) continue + floppy = new typekey(src) + floppy.init(src) + continue + if(ispath(typekey,/obj/item/part/computer/storage/hdd)) + if(hdd) continue + hdd = new typekey(src) + hdd.init(src) + continue + + if(ispath(typekey,/obj/item/part/computer/networking/cameras)) + if(camnet) continue + camnet = new typekey(src) + camnet.init(src) + continue + if(ispath(typekey,/obj/item/part/computer/networking/radio)) + if(radio) continue + radio = new typekey(src) + radio.init(src) + continue + if(ispath(typekey,/obj/item/part/computer/networking)) + if(net) continue + net = new typekey(src) + net.init(src) + continue + + if(ispath(typekey,/obj/item/part/computer/cardslot)) + if(cardslot) continue + cardslot = new typekey(src) + cardslot.init(src) + continue + if(ispath(typekey,/obj/item/part/computer/ai_holder)) + if(cradle) continue + cradle = new typekey(src) + cradle.init(src) + if(ispath(typekey,/obj/item/part/computer/toybox)) + if(toybox) continue + toybox = new typekey(src) + toybox.init(src) + continue + + if(ispath(typekey,/obj/item/weapon/cell)) + if(battery) continue + battery = new typekey(src) + continue + + proc/Reset(var/error = 0) + for(var/mob/living/M in range(1)) + M << browse(null,"window=\ref[src]") + if(program) + program.Reset() + program = null + req_access = os.req_access + update_icon() + + // todo does this do enough + + + meteorhit(var/obj/O as obj) + for(var/x in verbs) + verbs -= x + set_broken() + return + + + emp_act(severity) + if(prob(20/severity)) set_broken() + ..() + + + ex_act(severity) + switch(severity) + if(1.0) + del(src) + return + if(2.0) + if (prob(25)) + del(src) + return + if (prob(50)) + for(var/x in verbs) + verbs -= x + set_broken() + if(3.0) + if (prob(25)) + for(var/x in verbs) + verbs -= x + set_broken() + else + return + + + blob_act() + if (prob(75)) + set_broken() + density = 0 + + /* + Computers have the capability to use a battery backup. + Note that auto_use_power's return value is strictly whether + or not it is successfully powered. + + This allows laptops, and also allows you to create computers that + remain active when: + + * the APC is destroy'd, emag'd, malf'd, emp'd, ninja'd etc + * the computer was built in an unpowered zone + * the station power is out, cables are cut, etc + + By default, most computers will NOT spawn with a battery backup, and + SHOULD not. Players can take apart a computer to insert the battery + if they want to ensure, for example, the AI upload remains when the + power is cut off. + + Make sure to use use_power() a bunch in peripherals code + */ + auto_use_power() + if(!powered(power_channel)) + if(battery && battery.charge > 0) + if(use_power == 1) + battery.use(idle_power_usage) + else + battery.use(active_power_usage) + return 1 + return 0 + if(src.use_power == 1) + use_power(idle_power_usage,power_channel) + else if(src.use_power >= 2) + use_power(active_power_usage,power_channel) + return 1 + + use_power(var/amount, var/chan = -1) + if(chan == -1) + chan = power_channel + + var/area/A = get_area(loc) + if(istype(A) && A.master && A.master.powered(chan)) + A.master.use_power(amount, chan) + else if(battery && battery.charge > 0) + battery.use(amount) + + power_change() + if( !powered(power_channel) && (!battery || battery.charge <= 0) ) + stat |= NOPOWER + else + stat &= ~NOPOWER + + process() + auto_use_power() + power_change() + update_icon() + if(stat & (NOPOWER|BROKEN)) + return + + if(program) + program.process() + return + + if(os) + program = os + os.process() + return + + + proc/set_broken() + icon_state = "computer_b" + stat |= BROKEN + crit_fail = 1 + if(program) + program.error = BUSTED_ASS_COMPUTER + if(os) + os.error = BUSTED_ASS_COMPUTER + + attackby(I as obj, mob/user as mob) + if(istype(I, /obj/item/weapon/screwdriver) && allow_disassemble) + disassemble(user) + return + + /* + +++++++++++ + |IMPORTANT| If you add a peripheral, put it in this list + +++++++++++ -------------------------------------------- + */ + var/list/peripherals = list(hdd,floppy,radio,net,cardslot,cradle) //camnet, toybox removed + + var/list/p_list = list() + for(var/obj/item/part/computer/C in peripherals) + if(!isnull(C) && C.allow_attackby(I,user)) + p_list += C + if(p_list.len) + var/obj/item/part/computer/P = null + if(p_list.len == 1) + P = p_list[1] + else + P = input(user,"Which component?") as null|anything in p_list + + if(P) + P.attackby(I,user) + return + ..() + + attack_hand(var/mob/user as mob) + if(stat) + Reset() + return + + // I don't want to deal with computers that you can't walk up to and use + // there is still cardauth anyway + //if(!allowed(user)) + // return + + if(program) + if(program.computer != src) // floppy disk may have been removed, etc + Reset() + attack_hand(user) + return + if(program.error) + Crash(program.error) + return + user.set_machine(src) + program.attack_hand(user) // will normally translate to program/interact() + return + + if(os) + program = os + user.set_machine(src) + os.attack_hand(user) + return + + user << "\The [src] won't boot!" + + attack_ai(var/mob/user as mob) // copypasta because server racks lose attack_hand() + if(stat) + Reset() + return + + if(program) + if(program.computer != src) // floppy disk may have been removed, etc + Reset() + attack_ai(user) + return + if(program.error) + Crash(program.error) + return + user.set_machine(src) + program.attack_hand(user) // will normally translate to program/interact() + return + + if(os) + program = os + user.set_machine(src) + os.attack_hand(user) + return + + user << "\The [src] won't boot!" + + interact() + if(stat) + Reset() + return + if(!allowed(usr) || !usr in view(1)) + usr.unset_machine() + return + + if(program) + program.interact() + return + + if(os) + program = os + os.interact() + return + + update_icon() + if(legacy_icon) + icon_state = initial(icon_state) + // Broken + if(stat & BROKEN) + icon_state += "b" + + // Powered + else if(stat & NOPOWER) + icon_state = initial(icon_state) + icon_state += "0" + return + if(stat) + overlays.Cut() + return + if(program) + overlays = list(program.overlay) + if(show_keyboard) + overlays += kb + name = "[program.name] [initial(name)]" + else if(os) + overlays = list(os.overlay) + if(show_keyboard) + overlays += kb + name = initial(name) + else + var/global/image/generic = image('icons/obj/computer3.dmi',icon_state="osod") // orange screen of death + overlays = list(generic) + if(show_keyboard) + overlays += kb + name = initial(name) + " (orange screen of death)" + +/obj/machinery/computer3/wall_comp + name = "terminal" + icon = 'icons/obj/computer3.dmi' + icon_state = "wallframe" + density = 0 + pixel_y = -3 + show_keyboard = 0 \ No newline at end of file diff --git a/code/WorkInProgress/computer3/computer3_notes.dm b/code/WorkInProgress/computer3/computer3_notes.dm new file mode 100644 index 0000000000..f0d0bd5028 --- /dev/null +++ b/code/WorkInProgress/computer3/computer3_notes.dm @@ -0,0 +1,34 @@ +/* + 1. Do NOT confuse Computer.Crash(errorcode) with byond CRASH(message) + 2 Do NOT talk about fight club. + 3 If this if your first night here, you have to crash the computer. + 4 Where am I? + 5 Someone help me, please... + 6. Be sure to use computer.use_power() appropriately. Laptops should run out of battery occasionally. + 7 Everyone fights, no-one quits. If you don't do your job, I'll crash you myself. + 6 Don't allow more than 42 angels to dance on the head of a pin. + 5. Once a computer has spawned, they are just like the rest, except when they aren't. + 4 Get me four glasses of apple juice. + 3. Components are only added or removed when disassembled and rebuilt. However, they may be EMP'd. + 2 Only you can prevent friendly fire. + 1 Do not talk about fight club. + 2. If a component subtype needs to be handled separately (removable drives, radio networks), declare it separately. + 3 Television rules the nation + 4. interactable() does all the sanity checks, adds fingerprints, sets machines, initializes popup, and makes a damn fine pot of coffee. + 5 Love conquers all. + 6 If at all possible, do a barrel roll. + 7. Don't forget to use the network verify function to make sure you still have access to remote machines. + + + + + TODO: + * "Nothing left to call the shuttle" check + * Communications terminal printing - move it to a printer of some sort? Make a printer peripheral--but then which ones print the comms? + * Remove the partially transparent border on program screens, as it clashes with some frames + * Chop the corners on program screens now that screen sizes are standard + * NTOS: + * Needs a text editor/viewer + * Needs file copy and file move - I think I know how I'm gonna do it + * Needs a peripheral view (eject disks and cards, network actions, ???) +*/ \ No newline at end of file diff --git a/code/WorkInProgress/computer3/computers/HolodeckControl.dm b/code/WorkInProgress/computer3/computers/HolodeckControl.dm new file mode 100644 index 0000000000..e650185f85 --- /dev/null +++ b/code/WorkInProgress/computer3/computers/HolodeckControl.dm @@ -0,0 +1,254 @@ +/obj/machinery/computer3/HolodeckControl + default_prog = /datum/file/program/holodeck + + +// Todo: I personally would like to add a second holodeck in the theater for making appropriate playgrounds. +// perhaps a holodeck association keyfile? +// One more thing while I'm here +// C3 allows multiple computers to run this program, but it was designed on the assumption that only one would, ever +// I am not going to add or remove anything right now, I'm just porting it + + +/datum/file/program/holodeck + name = "Holodeck Control Console" + desc = "Used to control a nearby holodeck." + active_state = "holocontrol" + var/area/linkedholodeck = null + var/area/target = null + var/active = 0 + var/list/holographic_items = list() + var/damaged = 0 + var/last_change = 0 + var/emagged = 0 + + + interact() + if(!interactable()) + return + var/dat = "

Current Loaded Programs

" + dat += "((Empty Court))
" + dat += "((Boxing Court))
" + dat += "((Basketball Court))
" + dat += "((Thunderdome Court))
" + dat += "((Beach))
" +// dat += "((Shutdown System))
" + + dat += "Please ensure that only holographic weapons are used in the holodeck if a combat simulation has been loaded.
" + + if(emagged) + dat += "(Begin Atmospheric Burn Simulation)
" + dat += "Ensure the holodeck is empty before testing.
" + dat += "
" + dat += "(Begin Wildlife Simulation)
" + dat += "Ensure the holodeck is empty before testing.
" + dat += "
" + if(issilicon(usr)) + dat += "(Re-Enable Safety Protocols?)
" + dat += "Safety Protocols are DISABLED
" + else + if(issilicon(usr)) + dat += "(Override Safety Protocols?)
" + dat += "
" + dat += "Safety Protocols are ENABLED
" + + popup.set_content(dat) + popup.open() + return + + + Topic(var/href, var/list/href_list) + if(!interactable() || ..(href,href_list)) + return + + if("emptycourt" in href_list) + target = locate(/area/holodeck/source_emptycourt) + if(target) + loadProgram(target) + + else if("boxingcourt" in href_list) + target = locate(/area/holodeck/source_boxingcourt) + if(target) + loadProgram(target) + + else if("basketball" in href_list) + target = locate(/area/holodeck/source_basketball) + if(target) + loadProgram(target) + + else if("thunderdomecourt" in href_list) + target = locate(/area/holodeck/source_thunderdomecourt) + if(target) + loadProgram(target) + + else if("beach" in href_list) + target = locate(/area/holodeck/source_beach) + if(target) + loadProgram(target) + + else if("turnoff" in href_list) + target = locate(/area/holodeck/source_plating) + if(target) + loadProgram(target) + + else if("burntest" in href_list) + if(!emagged) return + target = locate(/area/holodeck/source_burntest) + if(target) + loadProgram(target) + + else if("wildlifecarp" in href_list) + if(!emagged) return + target = locate(/area/holodeck/source_wildlife) + if(target) + loadProgram(target) + + else if("AIoverride" in href_list) + if(!issilicon(usr)) return + emagged = !emagged + if(emagged) + message_admins("[key_name_admin(usr)] overrode the holodeck's safeties") + log_game("[key_name(usr)] overrided the holodeck's safeties") + else + message_admins("[key_name_admin(usr)] restored the holodeck's safeties") + log_game("[key_name(usr)] restored the holodeck's safeties") + + interact() + return + + Reset() + emergencyShutdown() + + process() + if(active) + if(!checkInteg(linkedholodeck)) + damaged = 1 + target = locate(/area/holodeck/source_plating) + if(target) + loadProgram(target) + active = 0 + for(var/mob/M in range(10,src)) + M.show_message("The holodeck overloads!") + + + for(var/turf/T in linkedholodeck) + if(prob(30)) + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + s.set_up(2, 1, T) + s.start() + T.ex_act(3) + T.hotspot_expose(1000,500,1) + + + for(var/item in holographic_items) + if(!(get_turf(item) in linkedholodeck)) + derez(item, 0) + + + + proc/derez(var/obj/obj , var/silent = 1) + holographic_items.Remove(obj) + + if(obj == null) + return + + if(isobj(obj)) + var/mob/M = obj.loc + if(ismob(M)) + M.u_equip(obj) + M.update_icons() //so their overlays update + + if(!silent) + var/obj/oldobj = obj + obj.visible_message("The [oldobj.name] fades away!") + del(obj) + + proc/checkInteg(var/area/A) + for(var/turf/T in A) + if(istype(T, /turf/space)) + return 0 + + return 1 + + proc/togglePower(var/toggleOn = 0) + + if(toggleOn) + var/area/targetsource = locate(/area/holodeck/source_emptycourt) + holographic_items = targetsource.copy_contents_to(linkedholodeck) + + spawn(30) + for(var/obj/effect/landmark/L in linkedholodeck) + if(L.name=="Atmospheric Test Start") + spawn(20) + var/turf/T = get_turf(L) + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + s.set_up(2, 1, T) + s.start() + if(T) + T.temperature = 5000 + T.hotspot_expose(50000,50000,1) + + active = 1 + else + for(var/item in holographic_items) + derez(item) + var/area/targetsource = locate(/area/holodeck/source_plating) + targetsource.copy_contents_to(linkedholodeck , 1) + active = 0 + + + proc/loadProgram(var/area/A) + + if(world.time < (last_change + 25)) + if(world.time < (last_change + 15))//To prevent super-spam clicking, reduced process size and annoyance -Sieve + return + for(var/mob/M in range(3,src)) + M.show_message("\b ERROR. Recalibrating projetion apparatus.") + last_change = world.time + return + + last_change = world.time + active = 1 + + for(var/item in holographic_items) + derez(item) + + for(var/obj/effect/decal/cleanable/blood/B in linkedholodeck) + del(B) + + for(var/mob/living/simple_animal/hostile/carp/C in linkedholodeck) + del(C) + + holographic_items = A.copy_contents_to(linkedholodeck , 1) + + if(emagged) + for(var/obj/item/weapon/holo/esword/H in linkedholodeck) + H.damtype = BRUTE + + spawn(30) + for(var/obj/effect/landmark/L in linkedholodeck) + if(L.name=="Atmospheric Test Start") + spawn(20) + var/turf/T = get_turf(L) + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + s.set_up(2, 1, T) + s.start() + if(T) + T.temperature = 5000 + T.hotspot_expose(50000,50000,1) + if(L.name=="Holocarp Spawn") + new /mob/living/simple_animal/hostile/carp(L.loc) + + + proc/emergencyShutdown() + //Get rid of any items + for(var/item in holographic_items) + derez(item) + //Turn it back to the regular non-holographic room + target = locate(/area/holodeck/source_plating) + if(target) + loadProgram(target) + + var/area/targetsource = locate(/area/holodeck/source_plating) + targetsource.copy_contents_to(linkedholodeck , 1) + active = 0 + diff --git a/code/WorkInProgress/computer3/computers/Operating.dm b/code/WorkInProgress/computer3/computers/Operating.dm new file mode 100644 index 0000000000..0f989780d7 --- /dev/null +++ b/code/WorkInProgress/computer3/computers/Operating.dm @@ -0,0 +1,47 @@ +/obj/machinery/computer3/operating + default_prog = /datum/file/program/op_monitor + spawn_parts = list(/obj/item/part/computer/storage/hdd,/obj/item/part/computer/networking/prox) + icon_state = "frame-med" + +/datum/file/program/op_monitor + name = "operating table monitor" + desc = "Monitors patient status during surgery." + active_state = "operating" + var/mob/living/carbon/human/patient = null + var/obj/machinery/optable/table = null + + +/datum/file/program/op_monitor/interact() + if(!interactable()) + return + if(!computer.net) + computer.Crash(MISSING_PERIPHERAL) + return + table = computer.net.connect_to(/obj/machinery/optable,table) + + var/dat = "" + if(table) + dat += "Patient information:
" + if(src.table && (src.table.check_victim())) + src.patient = src.table.victim + dat += {"Patient Status: [patient.stat ? "Non-Responsive" : "Stable"]
+ Blood Type: [patient.b_type]
+
+ Health: [round(patient.health)]
+ Brute Damage: [round(patient.getBruteLoss())]
+ Toxins Damage: [round(patient.getToxLoss())]
+ Fire Damage: [round(patient.getFireLoss())]
+ Suffocation Damage: [round(patient.getOxyLoss())]
+ "} + else + src.patient = null + dat += "No patient detected" + else + dat += "Operating table not found." + + popup.set_content(dat) + popup.open() +/datum/file/program/op_monitor/Topic() + if(!interactable()) + return + ..() \ No newline at end of file diff --git a/code/WorkInProgress/computer3/computers/aifixer.dm b/code/WorkInProgress/computer3/computers/aifixer.dm new file mode 100644 index 0000000000..45790c50a7 --- /dev/null +++ b/code/WorkInProgress/computer3/computers/aifixer.dm @@ -0,0 +1,117 @@ +/obj/machinery/computer3/aifixer + default_prog = /datum/file/program/aifixer + spawn_parts = list(/obj/item/part/computer/storage/hdd/big,/obj/item/part/computer/ai_holder) + icon_state = "frame-rnd" + + +/datum/file/program/aifixer + name = "AI system integrity restorer" + desc = "Repairs and revives artificial intelligence cores." + image = 'icons/NTOS/airestore.png' + active_state = "ai-fixer-empty" + req_access = list(access_captain, access_robotics, access_heads) + + update_icon() + if(!computer || !computer.cradle) + overlay.icon_state = "ai-fixer-404" + return // what + + if(!computer.cradle.occupant) + overlay.icon_state = "ai-fixer-empty" + else + if (computer.cradle.occupant.health >= 0 && computer.cradle.occupant.stat != 2) + overlay.icon_state = "ai-fixer-full" + else + overlay.icon_state = "ai-fixer-404" + computer.update_icon() + + interact() + if(!interactable()) + return + + if(!computer.cradle) + computer.Crash(MISSING_PERIPHERAL) + return + + popup.set_content(aifixer_menu()) + popup.open() + return + + proc/aifixer_menu() + var/dat = "" + if (computer.cradle.occupant) + var/laws + dat += "

Stored AI: [computer.cradle.occupant.name]

" + dat += "System integrity: [(computer.cradle.occupant.health+100)/2]%
" + + if (computer.cradle.occupant.laws.zeroth) + laws += "0: [computer.cradle.occupant.laws.zeroth]
" + + var/number = 1 + for (var/index = 1, index <= computer.cradle.occupant.laws.inherent.len, index++) + var/law = computer.cradle.occupant.laws.inherent[index] + if (length(law) > 0) + laws += "[number]: [law]
" + number++ + + for (var/index = 1, index <= computer.cradle.occupant.laws.supplied.len, index++) + var/law = computer.cradle.occupant.laws.supplied[index] + if (length(law) > 0) + laws += "[number]: [law]
" + number++ + + dat += "Laws:
[laws]
" + + if (computer.cradle.occupant.stat == 2) + dat += "AI non-functional" + else + dat += "AI functional" + if (!computer.cradle.busy) + dat += "

[topic_link(src,"fix","Begin Reconstruction")]" + else + dat += "

Reconstruction in process, please wait.
" + dat += "
[topic_link(src,"close","Close")]" + return dat + + Topic(var/href, var/list/href_list) + if(!interactable() || !computer.cradle || ..(href,href_list)) + return + + if ("fix" in href_list) + var/mob/living/silicon/ai/occupant = computer.cradle.occupant + if(!occupant) return + + computer.cradle.busy = 1 + computer.overlays += image('icons/obj/computer.dmi', "ai-fixer-on") + + var/i = 0 + while (occupant.health < 100) + if(!computer || (computer.stat&~MAINT)) // takes some time, keep checking + break + + occupant.adjustOxyLoss(-1) + occupant.adjustFireLoss(-1) + occupant.adjustToxLoss(-1) + occupant.adjustBruteLoss(-1) + occupant.updatehealth() + if (occupant.health >= 0 && computer.cradle.occupant.stat == 2) + occupant.stat = 0 + occupant.lying = 0 + dead_mob_list -= occupant + living_mob_list += occupant + update_icon() + + i++ + if(i == 5) + computer.use_power(50) // repairing an AI is nontrivial. laptop battery may not be enough. + computer.power_change() // if the power runs out, set stat + i = 0 + + computer.updateUsrDialog() + + sleep(10) + computer.cradle.busy = 0 + computer.overlays -= image('icons/obj/computer.dmi', "ai-fixer-on") + + computer.updateUsrDialog() + return diff --git a/code/WorkInProgress/computer3/computers/arcade.dm b/code/WorkInProgress/computer3/computers/arcade.dm new file mode 100644 index 0000000000..746551079b --- /dev/null +++ b/code/WorkInProgress/computer3/computers/arcade.dm @@ -0,0 +1,180 @@ +/obj/machinery/computer3/arcade + default_prog = /datum/file/program/arcade + spawn_parts = list(/obj/item/part/computer/toybox) //NO HDD - the game is loaded on the circuitboard's OS slot + +/obj/item/part/computer/toybox + var/list/prizes = list( /obj/item/weapon/storage/box/snappops = 2, + /obj/item/toy/blink = 2, + /obj/item/clothing/under/syndicate/tacticool = 2, + /obj/item/toy/sword = 2, + /obj/item/toy/gun = 2, + /obj/item/toy/crossbow = 2, + /obj/item/clothing/suit/syndicatefake = 2, + /obj/item/weapon/storage/fancy/crayons = 2, + /obj/item/toy/spinningtoy = 2, + /obj/item/toy/prize/ripley = 1, + /obj/item/toy/prize/fireripley = 1, + /obj/item/toy/prize/deathripley = 1, + /obj/item/toy/prize/gygax = 1, + /obj/item/toy/prize/durand = 1, + /obj/item/toy/prize/honk = 1, + /obj/item/toy/prize/marauder = 1, + /obj/item/toy/prize/seraph = 1, + /obj/item/toy/prize/mauler = 1, + /obj/item/toy/prize/odysseus = 1, + /obj/item/toy/prize/phazon = 1 + ) + proc/dispense() + if(computer && !computer.stat) + var/prizeselect = pickweight(prizes) + new prizeselect(computer.loc) + if(istype(prizeselect, /obj/item/toy/gun)) //Ammo comes with the gun + new /obj/item/toy/ammo/gun(computer.loc) + else if(istype(prizeselect, /obj/item/clothing/suit/syndicatefake)) //Helmet is part of the suit + new /obj/item/clothing/head/syndicatefake(computer.loc) + feedback_inc("arcade_win_normal") + computer.use_power(500) + + +/datum/file/program/arcade + desc = "The best arcade game ever produced by Nanotrasen's short-lived entertainment divison." + //headcanon: they also ported E.T. for the atari 2600, superman 64, and basically every other movie tie-in game ever + + active_state = "generic" + + var/turtle = 0 + var/enemy_name = "Space Villian" + var/temp = "Winners Don't Use Spacedrugs" //Temporary message, for attack messages, etc + var/player_hp = 30 //Player health/attack points + var/player_mp = 10 + var/enemy_hp = 45 //Enemy health/attack points + var/enemy_mp = 20 + var/gameover = 0 + var/blocked = 0 //Player cannot attack/heal while set + +/datum/file/program/arcade/New() + ..() + var/name_action + var/name_part1 + var/name_part2 + + name_action = pick("Defeat ", "Annihilate ", "Save ", "Strike ", "Stop ", "Destroy ", "Robust ", "Romance ", "Pwn ", "Own ", "ERP ") + + name_part1 = pick("the Automatic ", "Farmer ", "Lord ", "Professor ", "the Cuban ", "the Evil ", "the Dread King ", "the Space ", "Lord ", "the Great ", "Duke ", "General ") + name_part2 = pick("Melonoid", "Murdertron", "Sorcerer", "Ruin", "Jeff", "Ectoplasm", "Crushulon", "Uhangoid", "Vhakoid", "Peteoid", "slime", "Griefer", "ERPer", "Lizard Man", "Unicorn") + + enemy_name = replacetext(name_part1, "the ", "") + name_part2 + name = (name_action + name_part1 + name_part2) + + +/datum/file/program/arcade/interact() + if(!interactable()) + return + var/dat// = topic_link(src,"close","Close") + dat = "

[enemy_name]

" + + dat += "

[temp]

" + dat += "
Health: [player_hp] | Magic: [player_mp] | Enemy Health: [enemy_hp]
" + + if (gameover) + dat += "
[topic_link(src,"newgame","New Game")]" + else + dat += "
[topic_link(src,"attack","Attack")] | [topic_link(src,"heal","Heal")] | [topic_link(src,"charge","Recharge Power")]" + + dat += "
" + + popup.set_content(dat) + popup.open() + +/datum/file/program/arcade/Topic(href, list/href_list) + if(!interactable() || ..(href,href_list)) + return + if (!blocked && !gameover) + if ("attack" in href_list) + blocked = 1 + var/attackamt = rand(2,6) + temp = "You attack for [attackamt] damage!" + computer.updateUsrDialog() + if(turtle > 0) + turtle-- + + sleep(10) + enemy_hp -= attackamt + arcade_action() + + else if ("heal" in href_list) + blocked = 1 + var/pointamt = rand(1,3) + var/healamt = rand(6,8) + temp = "You use [pointamt] magic to heal for [healamt] damage!" + computer.updateUsrDialog() + turtle++ + + sleep(10) + player_mp -= pointamt + player_hp += healamt + blocked = 1 + computer.updateUsrDialog() + arcade_action() + + else if ("charge" in href_list) + blocked = 1 + var/chargeamt = rand(4,7) + temp = "You regain [chargeamt] points" + player_mp += chargeamt + if(turtle > 0) + turtle-- + + computer.updateUsrDialog() + sleep(10) + arcade_action() + + if ("newgame" in href_list) //Reset everything + temp = "New Round" + player_hp = 30 + player_mp = 10 + enemy_hp = 45 + enemy_mp = 20 + gameover = 0 + turtle = 0 + computer.updateUsrDialog() + + +/datum/file/program/arcade/proc/arcade_action() + if ((enemy_mp <= 0) || (enemy_hp <= 0)) + if(!gameover) + gameover = 1 + temp = "[enemy_name] has fallen! Rejoice!" + if(computer.toybox) + computer.toybox.dispense() + + else if ((enemy_mp <= 5) && (prob(70))) + var/stealamt = rand(2,3) + temp = "[enemy_name] steals [stealamt] of your power!" + player_mp -= stealamt + + if (player_mp <= 0) + gameover = 1 + sleep(10) + temp = "You have been drained! GAME OVER" + feedback_inc("arcade_loss_mana_normal") + + else if ((enemy_hp <= 10) && (enemy_mp > 4)) + temp = "[enemy_name] heals for 4 health!" + enemy_hp += 4 + enemy_mp -= 4 + + else + var/attackamt = rand(3,6) + temp = "[enemy_name] attacks for [attackamt] damage!" + player_hp -= attackamt + + if ((player_mp <= 0) || (player_hp <= 0)) + gameover = 1 + temp = "You have been crushed! GAME OVER" + feedback_inc("arcade_loss_hp_normal") + + if(interactable()) + computer.updateUsrDialog() + blocked = 0 + return \ No newline at end of file diff --git a/code/WorkInProgress/computer3/computers/atmos_alert.dm b/code/WorkInProgress/computer3/computers/atmos_alert.dm new file mode 100644 index 0000000000..6596b76d7c --- /dev/null +++ b/code/WorkInProgress/computer3/computers/atmos_alert.dm @@ -0,0 +1,110 @@ +/obj/machinery/computer3/atmos_alert + default_prog = /datum/file/program/atmos_alert + spawn_parts = list(/obj/item/part/computer/storage/hdd,/obj/item/part/computer/networking/radio) + icon_state = "frame-eng" + +/datum/file/program/atmos_alert + name = "atmospheric alert monitor" + desc = "Recieves alerts over the radio." + active_state = "alert:2" + refresh = 1 + var/list/priority_alarms = list() + var/list/minor_alarms = list() + + + execute(var/datum/file/program/source) + ..(source) + + if(!computer.radio) + computer.Crash(MISSING_PERIPHERAL) + + computer.radio.set_frequency(1437,RADIO_ATMOSIA) + + + Reset() + ..() + // Never save your work + priority_alarms.Cut() + minor_alarms.Cut() + + + // This will be called as long as the program is running on the parent computer + // and the computer has the radio peripheral + receive_signal(datum/signal/signal) + if(!signal || signal.encryption) return + + var/zone = signal.data["zone"] + var/severity = signal.data["alert"] + if(!zone || !severity) return + + minor_alarms -= zone + priority_alarms -= zone + if(severity=="severe") + priority_alarms += zone + else if (severity=="minor") + minor_alarms += zone + update_icon() + return + + + interact() + if(!interactable()) + return + if(!computer.radio) + computer.Crash(MISSING_PERIPHERAL) + + popup.set_content(return_text()) + popup.open() + + + update_icon() + ..() + if(priority_alarms.len > 0) + overlay.icon_state = "alert:2" + else if(minor_alarms.len > 0) + overlay.icon_state = "alert:1" + else + overlay.icon_state = "alert:0" + + if(computer) + computer.update_icon() + + + proc/return_text() + var/priority_text = "

Priority Alerts:

" + var/minor_text = "

Minor Alerts:

" + + if(priority_alarms.len) + for(var/zone in priority_alarms) + priority_text += "[format_text(zone)] [topic_link(src,"priority_clear=[ckey(zone)]","X")]
" + else + priority_text += "No priority alerts detected.
" + + if(minor_alarms.len) + for(var/zone in minor_alarms) + minor_text += "[format_text(zone)] [topic_link(src,"minor_clear=[ckey(zone)]","X")]
" + else + minor_text += "No minor alerts detected.
" + + return "[priority_text]

[minor_text]
[topic_link(src,"close","Close")]" + + + Topic(var/href, var/list/href_list) + if(!interactable() || ..(href,href_list)) + return + + if("priority_clear" in href_list) + var/removing_zone = href_list["priority_clear"] + for(var/zone in priority_alarms) + if(ckey(zone) == removing_zone) + usr << "\green Priority Alert for area [zone] cleared." + priority_alarms -= zone + + if("minor_clear" in href_list) + var/removing_zone = href_list["minor_clear"] + for(var/zone in minor_alarms) + if(ckey(zone) == removing_zone) + usr << "\green Minor Alert for area [zone] cleared." + minor_alarms -= zone + + computer.updateUsrDialog() diff --git a/code/WorkInProgress/computer3/computers/camera.dm b/code/WorkInProgress/computer3/computers/camera.dm new file mode 100644 index 0000000000..17e639166d --- /dev/null +++ b/code/WorkInProgress/computer3/computers/camera.dm @@ -0,0 +1,277 @@ +/* + Camera monitoring computers + + NOTE: If we actually split the station camera network into regions that will help with sorting through the + tediously large list of cameras. The new camnet_key architecture lets you switch between keys easily, + so you don't lose the capability of seeing everything, you just switch to a subnet. +*/ + +/obj/machinery/computer3/security + default_prog = /datum/file/program/security + spawn_parts = list(/obj/item/part/computer/storage/hdd,/obj/item/part/computer/networking/cameras) + spawn_files = list(/datum/file/camnet_key) + icon_state = "frame-sec" + + +/obj/machinery/computer3/security/wooden_tv + name = "security cameras" + desc = "An old TV hooked into the stations camera network." + icon = 'icons/obj/computer.dmi' + icon_state = "security_det" + + legacy_icon = 1 + allow_disassemble = 0 + + // No operating system + New() + ..(built=0) + os = program + circuit.OS = os + + +/obj/machinery/computer3/security/mining + name = "Outpost Cameras" + desc = "Used to access the various cameras on the outpost." + spawn_files = list(/datum/file/camnet_key/mining) + +/* + Camera monitoring computers, wall-mounted +*/ +/obj/machinery/computer3/wall_comp/telescreen + default_prog = /datum/file/program/security + spawn_parts = list(/obj/item/part/computer/storage/hdd,/obj/item/part/computer/networking/cameras) + spawn_files = list(/datum/file/camnet_key) + +/obj/machinery/computer3/wall_comp/telescreen/entertainment + desc = "Damn, they better have /tg/thechannel on these things." + spawn_files = list(/datum/file/camnet_key/entertainment) + + +/* + File containing an encrypted camera network key. + + (Where by encrypted I don't actually mean encrypted at all) +*/ +/datum/file/camnet_key + name = "Security Camera Network Main Key" + var/title = "Station" + var/desc = "Connects to station security cameras." + var/list/networks = list("SS13") + var/screen = "cameras" + + execute(var/datum/file/source) + if(istype(source,/datum/file/program/security)) + var/datum/file/program/security/prog = source + prog.key = src + prog.camera_list = null + return + if(istype(source,/datum/file/program/NTOS)) + for(var/obj/item/part/computer/storage/S in list(computer.hdd,computer.floppy)) + for(var/datum/file/F in S.files) + if(istype(F,/datum/file/program/security)) + var/datum/file/program/security/Sec = F + Sec.key = src + Sec.camera_list = null + Sec.execute(source) + return + computer.Crash(MISSING_PROGRAM) + +/datum/file/camnet_key/mining + name = "Mining Camera Network Key" + title = "mining station" + desc = "Connects to mining security cameras." + networks = list("MINE") + screen = "miningcameras" + +/datum/file/camnet_key/research + name = "Research Camera Network Key" + title = "research" + networks = list("RD") + +/datum/file/camnet_key/bombrange + name = "R&D Bomb Range Camera Network Key" + title = "bomb range" + desc = "Monitors the bomb range." + networks = list("Toxins") + +/datum/file/camnet_key/xeno + name = "R&D Misc. Research Camera Network Key" + title = "special research" + networks = list("Misc") + +/datum/file/camnet_key/singulo + name = "Singularity Camera Network Key" + title = "singularity" + networks = list("Singularity") + +/datum/file/camnet_key/entertainment + name = "Entertainment Channel Encryption Key" + title = "entertainment" + desc = "Damn, I hope they have /tg/thechannel on here." + networks = list("thunder") + screen = "entertainment" + +/datum/file/camnet_key/creed + name = "Special Ops Camera Encryption Key" + title = "special ops" + desc = "Connects to special ops secure camera feeds." + networks = list("CREED") + +/datum/file/camnet_key/prison + name = "Prison Camera Network Key" + title = "prison" + desc = "Monitors the prison." + networks = list("Prison") + + + +/* + Computer part needed to connect to cameras +*/ + +/obj/item/part/computer/networking/cameras + name = "camera network access module" + desc = "Connects a computer to the camera network." + + // I have no idea what the following does + var/mapping = 0//For the overview file, interesting bit of code. + + //proc/camera_list(var/datum/file/camnet_key/key) + get_machines(var/datum/file/camnet_key/key) + if (!computer || computer.z > 6) + return null + + var/list/L = list() + for(var/obj/machinery/camera/C in cameranet.cameras) + var/list/temp = C.network & key.networks + if(temp.len) + L.Add(C) + + //camera_sort(L) + + return L + verify_machine(var/obj/machinery/camera/C,var/datum/file/camnet_key/key = null) + if(!istype(C) || !C.can_use()) + return 0 + + if(key) + var/list/temp = C.network & key.networks + if(!temp.len) + return 0 + return 1 + +/* + Camera monitoring program + + The following things should break you out of the camera view: + * The computer resetting, being damaged, losing power, etc + * The program quitting + * Closing the window + * Going out of range of the computer + * Becoming incapacitated + * The camera breaking, emping, disconnecting, etc +*/ + +/datum/file/program/security + name = "camera monitor" + desc = "Connets to the Nanotrasen Camera Network" + image = 'icons/NTOS/camera.png' + active_state = "camera-static" + + var/datum/file/camnet_key/key = null + var/last_pic = 1.0 + var/last_camera_refresh = 0 + var/camera_list = null + + var/obj/machinery/camera/current = null + + execute(var/datum/file/program/caller) + ..(caller) + if(computer && !key) + var/list/fkeys = computer.list_files(/datum/file/camnet_key) + if(fkeys && fkeys.len) + key = fkeys[1] + update_icon() + computer.update_icon() + for(var/mob/living/L in viewers(1)) + if(!istype(L,/mob/living/silicon/ai) && L.machine == src) + L.reset_view(null) + + + Reset() + ..() + current = null + for(var/mob/living/L in viewers(1)) + if(!istype(L,/mob/living/silicon/ai) && L.machine == src) + L.reset_view(null) + + interact() + if(!interactable()) + return + + if(!computer.camnet) + computer.Crash(MISSING_PERIPHERAL) + return + + if(!key) + var/list/fkeys = computer.list_files(/datum/file/camnet_key) + if(fkeys && fkeys.len) + key = fkeys[1] + update_icon() + computer.update_icon() + if(!key) + return + + if(computer.camnet.verify_machine(current)) + usr.reset_view(current) + + if(world.time - last_camera_refresh > 50 || !camera_list) + last_camera_refresh = world.time + + var/list/temp_list = computer.camnet.get_machines(key) + + camera_list = "Network Key: [key.title] [topic_link(src,"keyselect","\[ Select key \]")]
" + for(var/obj/machinery/camera/C in temp_list) + if(C.status) + camera_list += "[C.c_tag] - [topic_link(src,"show=\ref[C]","Show")]
" + else + camera_list += "[C.c_tag] - DEACTIVATED
" + //camera_list += "
" + topic_link(src,"close","Close") + + popup.set_content(camera_list) + popup.open() + + + update_icon() + if(key) + overlay.icon_state = key.screen + name = key.title + " Camera Monitor" + else + overlay.icon_state = "camera-static" + name = initial(name) + + + + Topic(var/href,var/list/href_list) + if(!interactable() || !computer.camnet || ..(href,href_list)) + return + + if("show" in href_list) + var/obj/machinery/camera/C = locate(href_list["show"]) + current = C + usr.reset_view(C) + interact() + return + + if("keyselect" in href_list) + current = null + usr.reset_view(null) + key = input(usr,"Select a camera network key:", "Key Select", null) as null|anything in computer.list_files(/datum/file/camnet_key) + camera_list = null + update_icon() + computer.update_icon() + if(key) + interact() + else + usr << "The screen turns to static." + return diff --git a/code/WorkInProgress/computer3/computers/card.dm b/code/WorkInProgress/computer3/computers/card.dm new file mode 100644 index 0000000000..00e51778a3 --- /dev/null +++ b/code/WorkInProgress/computer3/computers/card.dm @@ -0,0 +1,289 @@ +/obj/machinery/computer3/card + default_prog = /datum/file/program/card_comp + spawn_parts = list(/obj/item/part/computer/storage/hdd,/obj/item/part/computer/cardslot/dual) +/obj/machinery/computer3/card/hop + default_prog = /datum/file/program/card_comp + spawn_parts = list(/obj/item/part/computer/storage/hdd,/obj/item/part/computer/cardslot/dual) + spawn_files = list(/datum/file/program/arcade, /datum/file/program/security, /datum/file/camnet_key/mining, /datum/file/camnet_key/entertainment,/datum/file/camnet_key/prison) + + +/obj/machinery/computer3/card/centcom + default_prog = /datum/file/program/card_comp/centcom + +/datum/file/program/card_comp + name = "identification card console" + desc = "Used to modify magnetic strip ID cards." + image = 'icons/NTOS/cardcomp.png' + active_state = "id" + + var/obj/item/weapon/card/id/reader = null + var/obj/item/weapon/card/id/writer = null + + var/mode = 0 + var/auth = 0 + var/printing = 0 + + proc/list_jobs() + return get_all_jobs() + "Custom" + + // creates the block with the script in it + // cache the result since it's almost constant but not quite + // the list of jobs won't change after all... + proc/scriptblock() + var/global/dat = null + if(!dat) + var/jobs_all = "" + for(var/job in list_jobs()) + jobs_all += topic_link(src,"assign=[job]",replacetext(job," "," ")) + " "//make sure there isn't a line break in the middle of a job + dat = {""} + return dat + + // creates the list of access rights on the card + proc/accessblock() + var/accesses = "
Access
" + accesses += "" + accesses += "" + for(var/i = 1; i <= 7; i++) + accesses += "" + accesses += "" + for(var/i = 1; i <= 7; i++) + accesses += "" + accesses += "
[get_region_accesses_name(i)]:
" + for(var/A in get_region_accesses(i)) + if(A in writer.access) + accesses += topic_link(src,"access=[A]","[replacetext(get_access_desc(A), " ", " ")]") + " " + else + accesses += topic_link(src,"access=[A]",replacetext(get_access_desc(A), " ", " ")) + " " + accesses += "
" + accesses += "
" + return accesses + + proc/card_modify_menu() + //assume peripherals and cards, do checks for them in interact + + // Header + var/dat = "

" + dat += topic_link(src,"remove=writer","Remove [writer.name]") + " || " + dat += topic_link(src,"remove=reader","Remove [reader.name]") + "
" + dat += topic_link(src,"mode=1","Access Crew Manifest") + " || " + dat += topic_link(src,"logout","Log Out") + "
" + dat += "
" + scriptblock() + + // form for renaming the ID + dat += "
" + dat += "" + dat += "registered_name: " + dat += "" + dat += "
" + + // form for changing assignment, taken care of by scriptblock() mostly + var/assign_temp = writer.assignment + if(!assign_temp || assign_temp == "") assign_temp = "Unassigned" + dat += "Assignment: [assign_temp] change" + + // list of access rights + dat += accessblock() + + return dat + + proc/login_menu() + //assume peripherals and cards, do checks for them in interact + var/dat = "
Please insert the cards into the slots
" + + if(istype(writer)) + dat += "Target: [topic_link(src,"remove=writer",writer.name)]
" + else + dat += "Target: [topic_link(src,"insert=writer","--------")]
" + + if(istype(reader)) + dat += "Confirm Identity: [topic_link(src,"remove=reader",reader.name)]
" + else + dat += "Confirm Identity: [topic_link(src,"insert=reader","--------")]
" + dat += "[topic_link(src,"auth","{Log in}")]

" + dat += topic_link(src,"mode=1","Access Crew Manifest") + return dat + + proc/show_manifest() + // assume linked_db since called by interact() + var/crew = "" + var/list/L = list() + for (var/datum/data/record/t in data_core.general) + var/R = t.fields["name"] + " - " + t.fields["rank"] + L += R + for(var/R in sortList(L)) + crew += "[R]
" + return "Crew Manifest:
Please use security record computer to modify entries.

[crew][topic_link(src,"print","Print")]

[topic_link(src,"mode=0","Access ID modification console.")]
" + + // These are here partly in order to be overwritten by the centcom card computer code + proc/authenticate() + if(access_change_ids in reader.access) + return 1 + if(istype(usr,/mob/living/silicon/ai)) + return 1 + return 0 + + proc/set_default_access(var/jobname) + var/datum/job/jobdatum + for(var/jobtype in typesof(/datum/job)) + var/datum/job/J = new jobtype + if(ckey(J.title) == ckey(jobname)) + jobdatum = J + break + if(jobdatum) + writer.access = jobdatum.get_access() // ( istype(src,/obj/machinery/computer/card/centcom) ? get_centcom_access(t1) + + + interact() + if(!interactable()) return + + if(!computer.cardslot || !computer.cardslot.dualslot) + computer.Crash(MISSING_PERIPHERAL) + return + + reader = computer.cardslot.reader + writer = computer.cardslot.writer + + var/dat + + switch(mode) + if(0) + if( !istype(writer) || !istype(reader) ) + auth = 0 + if( !auth ) + dat = login_menu() + else + dat = card_modify_menu() + if(1) + dat = show_manifest() + + + popup = new(usr, "ID Computer", name, 940, 520) + popup.set_content(dat) + popup.open() + return + + + Topic(href, list/href_list) + if(!interactable() || !computer.cardslot || ..(href,href_list)) + return + // todo distance/disability checks + + if("mode" in href_list) + mode = text2num(href_list["mode"]) + if(mode != 0 && mode != 1) + mode = 0 + + auth = 0 // always log out if switching modes just in case + + if("remove" in href_list) + var/which = href_list["remove"] + if(which == "writer") + computer.cardslot.remove(computer.cardslot.writer) + else + computer.cardslot.remove(computer.cardslot.reader) + auth = 0 + + if("insert" in href_list) + var/obj/item/weapon/card/card = usr.get_active_hand() + if(!istype(card)) return + + var/which = href_list["insert"] + if(which == "writer") + computer.cardslot.insert(card,1) + else + computer.cardslot.insert(card,2) + + if("print" in href_list) + if (printing) + return + + printing = 1 + sleep(50) + var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( computer.loc ) + P.info = "Crew Manifest:
" + var/list/L = list() + for (var/datum/data/record/t in data_core.general) + var/R = t.fields["name"] + " - " + t.fields["rank"] + L += R + for(var/R in sortList(L)) + P.info += "[R]
" + P.name = "paper- 'Crew Manifest'" + printing = 0 + + if("auth" in href_list) + auth = 0 + if(istype(reader) && istype(writer) && authenticate()) + auth = 1 + + if("logout" in href_list) + auth = 0 + + // Actual ID changing + + if("access" in href_list) + if(auth) + var/access_type = text2num(href_list["access"]) + writer.access ^= list(access_type) //logical xor: remove if present, add if not + + if("assign" in href_list) + if(auth) + var/t1 = href_list["assign"] + if(t1 == "Custom") + var/temp_t = copytext(sanitize(input("Enter a custom job assignment.","Assignment")),1,MAX_MESSAGE_LEN) + if(temp_t) + t1 = temp_t + set_default_access(t1) + + writer.assignment = t1 + writer.name = text("[writer.registered_name]'s ID Card ([writer.assignment])") + + if("reg" in href_list) + if(auth) + writer.registered_name = href_list["reg"] + writer.name = text("[writer.registered_name]'s ID Card ([writer.assignment])") + + computer.updateUsrDialog() + return + + + + + + +/datum/file/program/card_comp/centcom + name = "CentCom identification console" + drm = 1 + + list_jobs() + return get_all_centcom_jobs() + "Custom" + + accessblock() + var/accesses = "
Central Command:
" + for(var/A in get_all_centcom_access()) + if(A in writer.access) + accesses += topic_link(src,"access=[A]","[replacetext(get_centcom_access_desc(A), " ", " ")]") + " " + else + accesses += topic_link(src,"access=[A]",replacetext(get_centcom_access_desc(A), " ", " ")) + " " + return accesses + + authenticate() + if(access_cent_captain in reader.access) + return 1 + return 0 \ No newline at end of file diff --git a/code/WorkInProgress/computer3/computers/cloning.dm b/code/WorkInProgress/computer3/computers/cloning.dm new file mode 100644 index 0000000000..49ed2a04b8 --- /dev/null +++ b/code/WorkInProgress/computer3/computers/cloning.dm @@ -0,0 +1,363 @@ +/obj/machinery/computer3/cloning + default_prog = /datum/file/program/cloning + spawn_parts = list(/obj/item/part/computer/storage/hdd,/obj/item/part/computer/storage/removable,/obj/item/part/computer/networking/prox) + +/datum/file/program/cloning + name = "cloning console" + desc = "Connects to cloning machinery through the local network." + active_state = "dna_old" + + req_access = list(access_heads) //Only used for record deletion right now. + + var/obj/machinery/dna_scannernew/scanner = null //Linked scanner. For scanning. + var/obj/machinery/clonepod/pod1 = null //Linked cloning pod. + + var/temp = "Inactive" + var/scantemp_ckey + var/scantemp = "Ready to Scan" + var/menu = 1 //Which menu screen to display + var/list/records = list() + var/datum/data/record/active_record = null + var/loading = 0 // Nice loading text + var/has_disk = 0 + + proc/updatemodules() + if(!computer.net) return + + if(scanner && pod1) + if(!computer.net.verify_machine(scanner)) + scanner = null + if(!computer.net.verify_machine(pod1)) + pod1 = null + + if(!scanner || !pod1) + var/list/nearby = computer.net.get_machines() + scanner = locate(/obj/machinery/dna_scannernew) in nearby + pod1 = locate(/obj/machinery/clonepod) in nearby + + if (pod1) + pod1.connected = src // Some variable the pod needs + + proc/ScanningMenu() + if (isnull(scanner)) + return "ERROR: No Scanner detected!
" + + var/dat = "

Scanner Functions

" + dat += "
" + + if (!scanner.occupant) + dat += "Scanner Unoccupied" + else if(loading) + dat += "[scanner.occupant] => Scanning..." + else + if (scanner.occupant.ckey != scantemp_ckey) + scantemp = "Ready to Scan" + scantemp_ckey = scanner.occupant.ckey + dat += "[scanner.occupant] => [scantemp]" + + dat += "
" + + if (scanner.occupant) + dat += topic_link(src,"scan","Start Scan") + "
" + if(scanner.locked) + dat += topic_link(src,"lock","Unlock Scanner") + else + dat += topic_link(src,"lock","Lock Scanner") + else + dat += fake_link("Start Scan") + + // Footer + dat += "

Database Functions

" + if (records.len > 0) + dat += topic_link(src,"menu=2","View Records ([records.len])") + "
" + else + dat += fake_link("View Records (0)") + + if (has_disk) + dat += topic_link(src,"eject_disk","Eject Disk") + "
" + return dat + + proc/RecordsList() + var/dat = "

Current records

" + dat += topic_link(src,"menu=1","<< Back") + "

" + for(var/datum/data/record/R in records) + dat += "

[R.fields["name"]]

Scan ID [R.fields["id"]] " + topic_link(src,"view_rec=\ref[R]","View Record") + return dat + + proc/ShowRecord() + var/dat = "

Selected Record

" + dat += topic_link(src,"menu=2","<< Back") + "

" + + if (!active_record) + dat += "Record not found." + else + dat += "

[active_record.fields["name"]]

" + dat += "Scan ID [active_record.fields["id"]] [topic_link(src,"clone","Clone")]
" + + var/obj/item/weapon/implant/health/H = locate(active_record.fields["imp"]) + + if ((H) && (istype(H))) + dat += "Health Implant Data:
[H.sensehealth()]

" + else + dat += "Unable to locate Health Implant.

" + + dat += "Unique Identifier:
[active_record.fields["UI"]]
" + dat += "Structural Enzymes:
[active_record.fields["SE"]]
" + + if (has_disk) + dat += "
" + dat += "

Inserted Disk

" + dat += "Contents: " + if (computer.floppy.inserted.files.len == 0) + dat += "Empty" + else + for(var/datum/file/data/genome/G in computer.floppy.inserted.files) + dat += topic_link(src,"loadfile=\ref[G]","[G.name]") + "
" + + dat += "

Save to Disk:
" + dat += topic_link(src,"save_disk=ue","Unique Identifier + Unique Enzymes") + "
" + dat += topic_link(src,"save_disk=ui","Unique Identifier") + "
" + dat += topic_link(src,"save_disk=se","Structural Enzymes") + "
" + dat += "
" + + dat += "[topic_link(src,"del_rec","Delete Record")]" + return dat + proc/ConfirmDelete() + var/dat = "[temp]
" + dat += "

Confirm Record Deletion

" + + dat += "[topic_link(src,"del_rec","Scan card to confirm")]
" + dat += "[topic_link(src,"menu=3","Cancel")]" + return dat + + interact() + if(!interactable()) + return + + updatemodules() + + var/dat = "" + dat += topic_link(src,"refresh","Refresh") + dat += "

Cloning Pod Status

" + dat += "
[temp] 
" + + has_disk = (computer.floppy && computer.floppy.inserted) + if(!active_record && menu > 2) + menu = 2 + + switch(menu) + if(1) + dat += ScanningMenu() + + if(2) + dat += RecordsList() + + if(3) + dat += ShowRecord() + + if(4) + dat = ConfirmDelete() // not (+=), this is how it used to be, just putting it in a function + + if(!popup) + popup = new(usr, "\ref[computer]", "Cloning System Control") + popup.set_title_image(usr.browse_rsc_icon(overlay.icon, overlay.icon_state)) + + popup.set_content(dat) + popup.open() + return + + Topic(var/href, var/list/href_list) + if(loading || !interactable()) + return + + if (href_list["menu"]) + menu = text2num(href_list["menu"]) + else if (("scan" in href_list) && !isnull(scanner)) + scantemp = "" + + loading = 1 + computer.updateUsrDialog() + + spawn(20) + scan_mob(scanner.occupant) + + loading = 0 + computer.updateUsrDialog() + + + //No locking an open scanner. + else if (("lock" in href_list) && !isnull(scanner)) + if ((!scanner.locked) && (scanner.occupant)) + scanner.locked = 1 + else + scanner.locked = 0 + + else if ("view_rec" in href_list) + active_record = locate(href_list["view_rec"]) + if(istype(active_record,/datum/data/record)) + if ( !active_record.fields["ckey"] || active_record.fields["ckey"] == "" ) + del(active_record) + temp = "Record Corrupt" + else + menu = 3 + else + active_record = null + temp = "Record missing." + + else if ("del_rec" in href_list) + if ((!active_record) || (menu < 3)) + return + if (menu == 3) //If we are viewing a record, confirm deletion + temp = "Delete record?" + menu = 4 + + else if (menu == 4) + var/obj/item/weapon/card/id/C = usr.get_active_hand() + if (istype(C)||istype(C, /obj/item/device/pda)) + if(check_access(C)) + temp = "[active_record.fields["name"]] => Record deleted." + records.Remove(active_record) + del(active_record) + menu = 2 + else + temp = "Access Denied." + + else if ("eject_disk" in href_list) + if(computer.floppy) + computer.floppy.eject_disk() + + else if("loadfile" in href_list) + + var/datum/file/data/genome/G = locate(href_list["loadfile"]) in computer.floppy.files + if(!istype(G)) + temp = "Load error." + computer.updateUsrDialog() + return + switch(G.type) + if(/datum/file/data/genome/UI) + active_record.fields["UI"] = G.content + if(/datum/file/data/genome/UE) + active_record.fields["name"] = G.real_name + if(/datum/file/data/genome/SE) + active_record.fields["SE"] = G.content + if(/datum/file/data/genome/cloning) + active_record = G:record + else if("savefile" in href_list) + if (!active_record || !computer || !computer.floppy) + temp = "Save error." + computer.updateUsrDialog() + return + var/rval = 0 + switch(href_list["save_disk"]) + if("ui") + var/datum/file/data/genome/UI/ui = new + ui.content = active_record.fields["UI"] + ui.real_name = active_record.fields["name"] + rval = computer.floppy.addfile(ui) + if("ue") + var/datum/file/data/genome/UI/UE/ui = new + ui.content = active_record.fields["UI"] + ui.real_name = active_record.fields["name"] + rval = computer.floppy.addfile(ui) + if("se") + var/datum/file/data/genome/SE/se = new + se.content = active_record.fields["SE"] + se.real_name = active_record.fields["name"] + rval = computer.floppy.addfile(se) + if("clone") + var/datum/file/data/genome/cloning/c = new + c.record = active_record + c.real_name = active_record.fields["name"] + rval = computer.floppy.addfile(c) + if(!rval) + temp = "Disk write error." + + else if ("refresh" in href_list) + computer.updateUsrDialog() + + else if ("clone" in href_list) + //Look for that player! They better be dead! + if(active_record) + //Can't clone without someone to clone. Or a pod. Or if the pod is busy. Or full of gibs. + if(!pod1) + temp = "No Clonepod detected." + else if(pod1.occupant) + temp = "Clonepod is currently occupied." + else if(pod1.mess) + temp = "Clonepod malfunction." + else if(!config.revival_cloning) + temp = "Unable to initiate cloning cycle." + else if(pod1.growclone(active_record.fields["ckey"], active_record.fields["name"], active_record.fields["UI"], active_record.fields["SE"], active_record.fields["mind"], active_record.fields["mrace"])) + temp = "[active_record.fields["name"]] => Cloning cycle in progress..." + records.Remove(active_record) + del(active_record) + menu = 1 + else + temp = "[active_record.fields["name"]] => Initialisation failure." + + else + temp = "Data corruption." + + computer.add_fingerprint(usr) + computer.updateUsrDialog() + return + + proc/scan_mob(mob/living/carbon/human/subject as mob) + if ((isnull(subject)) || (!(ishuman(subject))) || (!subject.dna)) + scantemp = "Unable to locate valid genetic data." + return + if (!getbrain(subject)) + scantemp = "No signs of intelligence detected." + return + if (subject.suiciding == 1) + scantemp = "Subject's brain is not responding to scanning stimuli." + return + if ((!subject.ckey) || (!subject.client)) + scantemp = "Mental interface failure." + return + if (NOCLONE in subject.mutations) + scantemp = "Mental interface failure." + return + if (!isnull(find_record(subject.ckey))) + scantemp = "Subject already in database." + return + + subject.dna.check_integrity() + + var/datum/data/record/R = new /datum/data/record( ) + if(subject.dna) + R.fields["mrace"] = subject.dna.mutantrace + R.fields["UI"] = subject.dna.uni_identity + R.fields["SE"] = subject.dna.struc_enzymes + else + R.fields["mrace"] = null + R.fields["UI"] = null + R.fields["SE"] = null + R.fields["ckey"] = subject.ckey + R.fields["name"] = subject.real_name + R.fields["id"] = copytext(md5(subject.real_name), 2, 6) + + + + //Add an implant if needed + var/obj/item/weapon/implant/health/imp = locate(/obj/item/weapon/implant/health, subject) + if (isnull(imp)) + imp = new /obj/item/weapon/implant/health(subject) + imp.implanted = subject + R.fields["imp"] = "\ref[imp]" + //Update it if needed + else + R.fields["imp"] = "\ref[imp]" + + if (!isnull(subject.mind)) //Save that mind so traitors can continue traitoring after cloning. + R.fields["mind"] = "\ref[subject.mind]" + + records += R + scantemp = "Subject successfully scanned." + +//Find a specific record by key. + proc/find_record(var/find_key) + for(var/datum/data/record/R in records) + if (R.fields["ckey"] == find_key) + return R + return null diff --git a/code/WorkInProgress/computer3/computers/communications.dm b/code/WorkInProgress/computer3/computers/communications.dm new file mode 100644 index 0000000000..23b2540ade --- /dev/null +++ b/code/WorkInProgress/computer3/computers/communications.dm @@ -0,0 +1,384 @@ +/obj/machinery/computer3/communications + default_prog = /datum/file/program/communications + spawn_parts = list(/obj/item/part/computer/storage/hdd,/obj/item/part/computer/networking/radio/subspace) + +/obj/machinery/computer3/communications/captain + default_prog = /datum/file/program/communications + spawn_parts = list(/obj/item/part/computer/storage/hdd,/obj/item/part/computer/networking/radio/subspace,/obj/item/part/computer/cardslot/dual) + spawn_files = list(/datum/file/program/card_comp, /datum/file/program/security, /datum/file/program/crew, /datum/file/program/arcade, + /datum/file/camnet_key, /datum/file/camnet_key/entertainment, /datum/file/camnet_key/singulo) + + +/datum/file/program/communications + var/const/STATE_DEFAULT = 1 + var/const/STATE_CALLSHUTTLE = 2 + var/const/STATE_CANCELSHUTTLE = 3 + var/const/STATE_MESSAGELIST = 4 + var/const/STATE_VIEWMESSAGE = 5 + var/const/STATE_DELMESSAGE = 6 + var/const/STATE_STATUSDISPLAY = 7 + var/const/STATE_ALERT_LEVEL = 8 + var/const/STATE_CONFIRM_LEVEL = 9 + + +/datum/file/program/communications + name = "Centcom communications relay" + desc = "Used to connect to Centcom." + active_state = "comm" + req_access = list(access_heads) + + var/prints_intercept = 1 + var/authenticated = 0 + var/list/messagetitle = list() + var/list/messagetext = list() + var/currmsg = 0 + var/aicurrmsg = 0 + var/state = STATE_DEFAULT + var/aistate = STATE_DEFAULT + var/message_cooldown = 0 + var/centcomm_message_cooldown = 0 + var/tmp_alertlevel = 0 + + var/status_display_freq = "1435" + var/stat_msg1 + var/stat_msg2 + + Reset() + ..() + authenticated = 0 + state = STATE_DEFAULT + aistate = STATE_DEFAULT + + + Topic(var/href, var/list/href_list) + if(!interactable() || !computer.radio || ..(href,href_list) ) + return + if (computer.z > 1) + usr << "\red Unable to establish a connection: \black You're too far away from the station!" + return + + if("main" in href_list) + state = STATE_DEFAULT + if("login" in href_list) + var/mob/M = usr + var/obj/item/I = M.get_active_hand() + if(I) + I = I.GetID() + if(istype(I,/obj/item/weapon/card/id) && check_access(I)) + authenticated = 1 + if(access_captain in I.GetAccess()) + authenticated = 2 + if(istype(I,/obj/item/weapon/card/emag)) + authenticated = 2 + computer.emagged = 1 + if("logout" in href_list) + authenticated = 0 + + if("swipeidseclevel" in href_list) + var/mob/M = usr + var/obj/item/I = M.get_active_hand() + I = I.GetID() + + if (istype(I,/obj/item/weapon/card/id)) + if(access_captain in I.GetAccess()) + var/old_level = security_level + if(!tmp_alertlevel) tmp_alertlevel = SEC_LEVEL_GREEN + if(tmp_alertlevel < SEC_LEVEL_GREEN) tmp_alertlevel = SEC_LEVEL_GREEN + if(tmp_alertlevel > SEC_LEVEL_BLUE) tmp_alertlevel = SEC_LEVEL_BLUE //Cannot engage delta with this + set_security_level(tmp_alertlevel) + if(security_level != old_level) + //Only notify the admins if an actual change happened + log_game("[key_name(usr)] has changed the security level to [get_security_level()].") + message_admins("[key_name_admin(usr)] has changed the security level to [get_security_level()].") + switch(security_level) + if(SEC_LEVEL_GREEN) + feedback_inc("alert_comms_green",1) + if(SEC_LEVEL_BLUE) + feedback_inc("alert_comms_blue",1) + tmp_alertlevel = 0 + else: + usr << "You are not authorized to do this." + tmp_alertlevel = 0 + state = STATE_DEFAULT + else + usr << "You need to swipe your ID." + if("announce" in href_list) + if(authenticated==2) + if(message_cooldown) return + var/input = stripped_input(usr, "Please choose a message to announce to the station crew.", "What?") + if(!input || !interactable()) + return + captain_announce(input)//This should really tell who is, IE HoP, CE, HoS, RD, Captain + log_say("[key_name(usr)] has made a captain announcement: [input]") + message_admins("[key_name_admin(usr)] has made a captain announcement.", 1) + message_cooldown = 1 + spawn(600)//One minute cooldown + message_cooldown = 0 + + if("callshuttle" in href_list) + state = STATE_DEFAULT + if(authenticated) + state = STATE_CALLSHUTTLE + if("callshuttle2" in href_list) + if(!computer.radio.subspace) + return + if(authenticated) + call_shuttle_proc(usr) + if(emergency_shuttle.online) + post_status("shuttle") + state = STATE_DEFAULT + if("cancelshuttle" in href_list) + state = STATE_DEFAULT + if(authenticated) + state = STATE_CANCELSHUTTLE + if("messagelist" in href_list) + currmsg = 0 + state = STATE_MESSAGELIST + if("viewmessage" in href_list) + state = STATE_VIEWMESSAGE + if (!currmsg) + if(href_list["message-num"]) + currmsg = text2num(href_list["message-num"]) + else + state = STATE_MESSAGELIST + if("delmessage" in href_list) + state = (currmsg) ? STATE_DELMESSAGE : STATE_MESSAGELIST + if("delmessage2" in href_list) + if(authenticated) + if(currmsg) + var/title = messagetitle[currmsg] + var/text = messagetext[currmsg] + messagetitle.Remove(title) + messagetext.Remove(text) + if(currmsg == aicurrmsg) + aicurrmsg = 0 + currmsg = 0 + state = STATE_MESSAGELIST + else + state = STATE_VIEWMESSAGE + if("status" in href_list) + state = STATE_STATUSDISPLAY + + // Status display stuff + if("setstat" in href_list) + switch(href_list["statdisp"]) + if("message") + post_status("message", stat_msg1, stat_msg2) + if("alert") + post_status("alert", href_list["alert"]) + else + post_status(href_list["statdisp"]) + + if("setmsg1" in href_list) + stat_msg1 = reject_bad_text(input("Line 1", "Enter Message Text", stat_msg1) as text|null, 40) + computer.updateDialog() + if("setmsg2" in href_list) + stat_msg2 = reject_bad_text(input("Line 2", "Enter Message Text", stat_msg2) as text|null, 40) + computer.updateDialog() + + // OMG CENTCOMM LETTERHEAD + if("MessageCentcomm" in href_list) + if(!computer.radio.subspace) + return + if(authenticated==2) + if(centcomm_message_cooldown) + usr << "Arrays recycling. Please stand by." + return + var/input = stripped_input(usr, "Please choose a message to transmit to Centcomm via quantum entanglement. Please be aware that this process is very expensive, and abuse will lead to... termination. Transmission does not guarantee a response.", "To abort, send an empty message.", "") + if(!input || !interactable()) + return + Centcomm_announce(input, usr) + usr << "Message transmitted." + log_say("[key_name(usr)] has made a Centcomm announcement: [input]") + centcomm_message_cooldown = 1 + spawn(600)//10 minute cooldown + centcomm_message_cooldown = 0 + + + // OMG SYNDICATE ...LETTERHEAD + if("MessageSyndicate" in href_list) + if((authenticated==2) && (computer.emagged)) + if(centcomm_message_cooldown) + usr << "Arrays recycling. Please stand by." + return + var/input = stripped_input(usr, "Please choose a message to transmit to \[ABNORMAL ROUTING CORDINATES\] via quantum entanglement. Please be aware that this process is very expensive, and abuse will lead to... termination. Transmission does not guarantee a response.", "To abort, send an empty message.", "") + if(!input || !interactable()) + return + Syndicate_announce(input, usr) + usr << "Message transmitted." + log_say("[key_name(usr)] has made a Syndicate announcement: [input]") + centcomm_message_cooldown = 1 + spawn(600)//10 minute cooldown + centcomm_message_cooldown = 0 + + if("RestoreBackup" in href_list) + usr << "Backup routing data restored!" + computer.emagged = 0 + computer.updateDialog() + + + + // AI interface + if("ai-main" in href_list) + aicurrmsg = 0 + aistate = STATE_DEFAULT + if("ai-callshuttle" in href_list) + aistate = STATE_CALLSHUTTLE + if("ai-callshuttle2" in href_list) + if(!computer.radio.subspace) + return + call_shuttle_proc(usr) + aistate = STATE_DEFAULT + if("ai-messagelist" in href_list) + aicurrmsg = 0 + aistate = STATE_MESSAGELIST + if("ai-viewmessage" in href_list) + aistate = STATE_VIEWMESSAGE + if (!aicurrmsg) + if(href_list["message-num"]) + aicurrmsg = text2num(href_list["message-num"]) + else + aistate = STATE_MESSAGELIST + if("ai-delmessage" in href_list) + aistate = (aicurrmsg) ? STATE_DELMESSAGE : STATE_MESSAGELIST + if("ai-delmessage2" in href_list) + if(aicurrmsg) + var/title = messagetitle[aicurrmsg] + var/text = messagetext[aicurrmsg] + messagetitle.Remove(title) + messagetext.Remove(text) + if(currmsg == aicurrmsg) + currmsg = 0 + aicurrmsg = 0 + aistate = STATE_MESSAGELIST + if("ai-status" in href_list) + aistate = STATE_STATUSDISPLAY + + if("securitylevel" in href_list) + tmp_alertlevel = text2num( href_list["newalertlevel"] ) + if(!tmp_alertlevel) tmp_alertlevel = 0 + state = STATE_CONFIRM_LEVEL + + if("changeseclevel" in href_list) + state = STATE_ALERT_LEVEL + + computer.updateUsrDialog() + + + + proc/main_menu() + var/dat = "" + if (computer.radio.subspace) + if(emergency_shuttle.online && emergency_shuttle.location==0) + var/timeleft = emergency_shuttle.timeleft() + dat += "Emergency shuttle\n
\nETA: [timeleft / 60 % 60]:[add_zero(num2text(timeleft % 60), 2)]
" + refresh = 1 + else + refresh = 0 + if (authenticated) + dat += "
\[ Log Out \]" + if (authenticated==2) + dat += "
\[ Make An Announcement \]" + if(computer.emagged == 0) + dat += "
\[ Send an emergency message to Centcomm \]" + else + dat += "
\[ Send an emergency message to \[UNKNOWN\] \]" + dat += "
\[ Restore Backup Routing Data \]" + + dat += "
\[ Change alert level \]" + if(emergency_shuttle.location==0) + if (emergency_shuttle.online) + dat += "
\[ Cancel Shuttle Call \]" + else + dat += "
\[ Call Emergency Shuttle \]" + + dat += "
\[ Set Status Display \]" + else + dat += "
\[ Log In \]" + dat += "
\[ Message List \]" + return dat + + proc/confirm_menu(var/prompt,var/yes_option) + return "Are you sure you want to [prompt]? \[ [topic_link(src,yes_option,"OK")] | [topic_link(src,"main","Cancel")] \]" + + interact() + if(!interactable()) + return + if(!computer.radio) + computer.Crash(MISSING_PERIPHERAL) + return + + var/dat = "" + switch(state) + if(STATE_DEFAULT) + dat = main_menu() + if(STATE_CALLSHUTTLE) + dat = confirm_menu("call the shuttle","callshuttle2") + if(STATE_CANCELSHUTTLE) + dat = confirm_menu("cancel the shuttle","cancelshuttle2") + if(STATE_MESSAGELIST) + dat += "Messages:" + for(var/i = 1; i<=messagetitle.len; i++) + dat += "
[messagetitle[i]]" + if(STATE_VIEWMESSAGE) + if (currmsg) + dat += "[messagetitle[currmsg]]

[messagetext[currmsg]]" + if (authenticated) + dat += "

\[ Delete \]" + else + state = STATE_MESSAGELIST + interact() + return + if(STATE_DELMESSAGE) + if (currmsg) + dat += "Are you sure you want to delete this message? \[ OK | Cancel \]" + else + state = STATE_MESSAGELIST + interact() + return + if(STATE_STATUSDISPLAY) + dat += "\[ Back \]
" + dat += "Set Status Displays
" + dat += "\[ Clear \]
" + dat += "\[ Shuttle ETA \]
" + dat += "\[ Message \]" + dat += "
" + dat += "\[ Alert: None |" + dat += " Red Alert |" + dat += " Lockdown |" + dat += " Biohazard \]

" + if(STATE_ALERT_LEVEL) + dat += "Current alert level: [get_security_level()]
" + if(security_level == SEC_LEVEL_DELTA) + dat += "The self-destruct mechanism is active. Find a way to deactivate the mechanism to lower the alert level or evacuate." + else + dat += "Blue
" + dat += "Green" + if(STATE_CONFIRM_LEVEL) + dat += "Current alert level: [get_security_level()]
" + dat += "Confirm the change to: [num2seclevel(tmp_alertlevel)]
" + dat += "Swipe ID to confirm change.
" + + popup.set_content(dat) + popup.open() + + + proc/post_status(var/command, var/data1, var/data2) + var/datum/radio_frequency/frequency = radio_controller.return_frequency(1435) + + if(!frequency) return + + var/datum/signal/status_signal = new + status_signal.source = src + status_signal.transmission_method = 1 + status_signal.data["command"] = command + + switch(command) + if("message") + status_signal.data["msg1"] = data1 + status_signal.data["msg2"] = data2 + if("alert") + status_signal.data["picture_state"] = data1 + + frequency.post_signal(src, status_signal) diff --git a/code/WorkInProgress/computer3/computers/crew.dm b/code/WorkInProgress/computer3/computers/crew.dm new file mode 100644 index 0000000000..d9ecace0c3 --- /dev/null +++ b/code/WorkInProgress/computer3/computers/crew.dm @@ -0,0 +1,71 @@ +/obj/machinery/computer3/crew + default_prog = /datum/file/program/crew + spawn_parts = list(/obj/item/part/computer/storage/hdd,/obj/item/part/computer/networking/radio) + icon_state = "frame-med" + +/datum/file/program/crew + name = "Crew Monitoring Console" + desc = "Used to monitor active health sensors built into most of the crew's uniforms." + active_state = "crew" + var/list/tracked = list( ) + + interact(mob/user) + if(!interactable()) + return + + scan() + var/t = "" + t += "
Refresh " + t += "Close
" + t += "" + var/list/logs = list() + for(var/obj/item/clothing/under/C in tracked) + var/log = "" + var/turf/pos = get_turf(C) + if((C) && (C.has_sensor) && (pos) && (pos.z == computer.z) && C.sensor_mode) + if(istype(C.loc, /mob/living/carbon/human)) + + var/mob/living/carbon/human/H = C.loc + + var/dam1 = round(H.getOxyLoss(),1) + var/dam2 = round(H.getToxLoss(),1) + var/dam3 = round(H.getFireLoss(),1) + var/dam4 = round(H.getBruteLoss(),1) + + var/life_status = "[H.stat > 1 ? "Deceased" : "Living"]" + var/damage_report = "([dam1]/[dam2]/[dam3]/[dam4])" + + if(H.wear_id) + log += "" + else + log += "" + + switch(C.sensor_mode) + if(1) + log += "" + if(2) + log += "" + if(3) + var/area/player_area = get_area(H) + log += "" + logs += log + logs = sortList(logs) + for(var/log in logs) + t += log + t += "

Name

Vitals

Position

[H.wear_id.name]
Unknown[life_status]Not Available
[life_status] [damage_report]Not Available
[life_status] [damage_report][format_text(player_area.name)] ([pos.x], [pos.y])
" + + popup.set_content(t) + popup.open() + + + proc/scan() + for(var/obj/item/clothing/under/C in world) + if((C.has_sensor) && (istype(C.loc, /mob/living/carbon/human))) + tracked |= C + return 1 + + Topic(href, list/href_list) + if(!interactable() || !computer.cardslot || ..(href,href_list)) + return + computer.updateUsrDialog() + return \ No newline at end of file diff --git a/code/WorkInProgress/computer3/computers/customs.dm b/code/WorkInProgress/computer3/computers/customs.dm new file mode 100644 index 0000000000..bca73055b8 --- /dev/null +++ b/code/WorkInProgress/computer3/computers/customs.dm @@ -0,0 +1,3 @@ +/obj/machinery/computer3/customs + spawn_parts = list(/obj/item/part/computer/storage/hdd,/obj/item/part/computer/networking/radio/subspace,/obj/item/part/computer/networking/cameras) + spawn_files = list(/datum/file/program/arcade,/datum/file/program/security,/datum/file/camnet_key/entertainment,/datum/file/program/crew) \ No newline at end of file diff --git a/code/WorkInProgress/computer3/computers/law.dm b/code/WorkInProgress/computer3/computers/law.dm new file mode 100644 index 0000000000..8f7a639ae2 --- /dev/null +++ b/code/WorkInProgress/computer3/computers/law.dm @@ -0,0 +1,84 @@ + + +/obj/machinery/computer3/aiupload + name = "AI Upload" + desc = "Used to upload laws to the AI." + icon_state = "frame-rnd" + circuit = "/obj/item/part/board/circuit/aiupload" + var/mob/living/silicon/ai/current = null + var/opened = 0 + + + verb/AccessInternals() + set category = "Object" + set name = "Access Computer's Internals" + set src in oview(1) + if(get_dist(src, usr) > 1 || usr.restrained() || usr.lying || usr.stat || istype(usr, /mob/living/silicon)) + return + + opened = !opened + if(opened) + usr << "\blue The access panel is now open." + else + usr << "\blue The access panel is now closed." + return + + + attackby(obj/item/weapon/aiModule/module as obj, mob/user as mob) + if (user.z > 6) + user << "\red Unable to establish a connection: \black You're too far away from the station!" + return + if(istype(module, /obj/item/weapon/aiModule)) + module.install(src) + else + return ..() + + + attack_hand(var/mob/user as mob) + if(src.stat & NOPOWER) + usr << "The upload computer has no power!" + return + if(src.stat & BROKEN) + usr << "The upload computer is broken!" + return + + src.current = select_active_ai(user) + + if (!src.current) + usr << "No active AIs detected." + else + usr << "[src.current.name] selected for law changes." + return + + + +/obj/machinery/computer3/borgupload + name = "Cyborg Upload" + desc = "Used to upload laws to Cyborgs." + icon_state = "frame-rnd" + circuit = "/obj/item/part/board/circuit/borgupload" + var/mob/living/silicon/robot/current = null + + + attackby(obj/item/weapon/aiModule/module as obj, mob/user as mob) + if(istype(module, /obj/item/weapon/aiModule)) + module.install(src) + else + return ..() + + + attack_hand(var/mob/user as mob) + if(src.stat & NOPOWER) + usr << "The upload computer has no power!" + return + if(src.stat & BROKEN) + usr << "The upload computer is broken!" + return + + src.current = freeborg() + + if (!src.current) + usr << "No free cyborgs detected." + else + usr << "[src.current.name] selected for law changes." + return diff --git a/code/WorkInProgress/computer3/computers/medical.dm b/code/WorkInProgress/computer3/computers/medical.dm new file mode 100644 index 0000000000..13302f75b0 --- /dev/null +++ b/code/WorkInProgress/computer3/computers/medical.dm @@ -0,0 +1,503 @@ +/* + I hate to make this a todo, but I cannot possibly complete all of computer3 + if I have to rearchitecture datacores and everything else that uses them right now. + + In the future the datacore should probably be a server, perhaps on station, perhaps on centcom, + with data records as files probably. It's not difficult unless you're trying to do a million + impossible things before breakfast. +*/ + +/obj/machinery/computer3/med_data + default_prog = /datum/file/program/med_data + spawn_parts = list(/obj/item/part/computer/storage/hdd,/obj/item/part/computer/cardslot,/obj/item/part/computer/networking/radio) + +/datum/file/program/med_data + name = "Medical Records" + desc = "This can be used to check medical records." + active_state = "medcomp" + req_one_access = list(access_medical, access_forensics_lockers) + + var/obj/item/weapon/card/id/scan = null + var/authenticated = null + var/rank = null + var/screen = null + var/datum/data/record/active1 = null + var/datum/data/record/active2 = null + var/a_id = null + var/temp = null + var/printing = null + + + proc/authenticate() + if(access_medical in scan.access) + return 1 + if(istype(usr,/mob/living/silicon/ai)) + return 1 + return 0 + + interact() + usr.set_machine(src) + scan = computer.cardslot.reader + if(!interactable()) + return + if (computer.z > 6) + usr << "\red Unable to establish a connection: \black You're too far away from the station!" + return + var/dat + if (src.temp) + dat = text("[src.temp]

Clear Screen") + else + dat = text("Confirm Identity: []
", src, (src.scan ? text("[]", src.scan.name) : "----------")) + if (src.authenticated) + switch(src.screen) + if(1.0) + dat += {" +Search Records +
List Records +
+
Virus Database +
Medbot Tracking +
+
Record Maintenance +
{Log Out}
+"} + if(2.0) + dat += "Record List:
" + if(!isnull(data_core.general)) + for(var/datum/data/record/R in sortRecord(data_core.general)) + dat += text("[]: []
", src, R, R.fields["id"], R.fields["name"]) + //Foreach goto(132) + dat += text("
Back", src) + if(3.0) + dat += text("Records Maintenance
\nBackup To Disk
\nUpload From disk
\nDelete All Records
\n
\nBack", src, src, src, src) + if(4.0) + var/icon/front = new(active1.fields["photo"], dir = SOUTH) + var/icon/side = new(active1.fields["photo"], dir = WEST) + usr << browse_rsc(front, "front.png") + usr << browse_rsc(side, "side.png") + dat += "
Medical Record

" + if ((istype(src.active1, /datum/data/record) && data_core.general.Find(src.active1))) + dat += "
Name: [active1.fields["name"]] \ + ID: [active1.fields["id"]]
\n \ + Sex: [active1.fields["sex"]]
\n \ + Age: [active1.fields["age"]]
\n \ + Fingerprint: [active1.fields["fingerprint"]]
\n \ + Physical Status: [active1.fields["p_stat"]]
\n \ + Mental Status: [active1.fields["m_stat"]]
\ + Photo:
" + else + dat += "General Record Lost!
" + if ((istype(src.active2, /datum/data/record) && data_core.medical.Find(src.active2))) + dat += text("
\n
Medical Data

\nBlood Type: []
\nDNA: []
\n
\nMinor Disabilities: []
\nDetails: []
\n
\nMajor Disabilities: []
\nDetails: []
\n
\nAllergies: []
\nDetails: []
\n
\nCurrent Diseases: [] (per disease info placed in log/comment section)
\nDetails: []
\n
\nImportant Notes:
\n\t[]
\n
\n
Comments/Log

", src, src.active2.fields["b_type"], src, src.active2.fields["b_dna"], src, src.active2.fields["mi_dis"], src, src.active2.fields["mi_dis_d"], src, src.active2.fields["ma_dis"], src, src.active2.fields["ma_dis_d"], src, src.active2.fields["alg"], src, src.active2.fields["alg_d"], src, src.active2.fields["cdi"], src, src.active2.fields["cdi_d"], src, decode(src.active2.fields["notes"])) + var/counter = 1 + while(src.active2.fields[text("com_[]", counter)]) + dat += text("[]
Delete Entry

", src.active2.fields[text("com_[]", counter)], src, counter) + counter++ + dat += text("Add Entry

", src) + dat += text("Delete Record (Medical Only)

", src) + else + dat += "Medical Record Lost!
" + dat += text("New Record

") + dat += text("\nPrint Record
\nBack
", src, src) + if(5.0) + dat += "
Virus Database
" + /* Advanced diseases is weak! Feeble! Glory to virus2! + for(var/Dt in typesof(/datum/disease/)) + var/datum/disease/Dis = new Dt(0) + if(istype(Dis, /datum/disease/advance)) + continue // TODO (tm): Add advance diseases to the virus database which no one uses. + if(!Dis.desc) + continue + dat += "
[Dis.name]" + */ + for (var/ID in virusDB) + var/datum/data/record/v = virusDB[ID] + dat += "
[v.fields["name"]]" + + dat += "
Back" + if(6.0) + dat += "
Medical Robot Monitor
" + dat += "Back" + dat += "
Medical Robots:" + var/bdat = null + for(var/obj/machinery/bot/medbot/M in world) + + if(M.z != computer.z) continue //only find medibots on the same z-level as the computer + var/turf/bl = get_turf(M) + if(bl) //if it can't find a turf for the medibot, then it probably shouldn't be showing up + bdat += "[M.name] - \[[bl.x],[bl.y]\] - [M.on ? "Online" : "Offline"]
" + if((!isnull(M.reagent_glass)) && M.use_beaker) + bdat += "Reservoir: \[[M.reagent_glass.reagents.total_volume]/[M.reagent_glass.reagents.maximum_volume]\]
" + else + bdat += "Using Internal Synthesizer.
" + if(!bdat) + dat += "
None detected
" + else + dat += "
[bdat]" + + else + else + dat += text("{Log In}", src) + var/datum/browser/popup = new(usr, "med_comp", "Medical Records", 600, 400) + popup.set_content(dat) + popup.set_title_image(usr.browse_rsc_icon(computer.icon, computer.icon_state)) + popup.open() + return + + Topic(href, href_list) + if(!interactable() || !computer.cardslot || ..(href,href_list)) + return + + if (!( data_core.general.Find(src.active1) )) + src.active1 = null + + if (!( data_core.medical.Find(src.active2) )) + src.active2 = null + + usr.set_machine(src) + + if (href_list["temp"]) + src.temp = null + + if (href_list["scan"]) + if (scan) + if(istype(usr,/mob/living/carbon/human) && !usr.get_active_hand()) + computer.cardslot.remove(scan) + else + scan.loc = get_turf(src) + scan = null + else + var/obj/item/I = usr.get_active_hand() + if (istype(I, /obj/item/weapon/card/id)) + computer.cardslot.insert(I) + scan = I + + else if (href_list["logout"]) + src.authenticated = null + src.screen = null + src.active1 = null + src.active2 = null + + else if (href_list["login"]) + + if (istype(usr, /mob/living/silicon/ai)) + src.active1 = null + src.active2 = null + src.authenticated = usr.name + src.rank = "AI" + src.screen = 1 + + else if (istype(usr, /mob/living/silicon/robot)) + src.active1 = null + src.active2 = null + src.authenticated = usr.name + var/mob/living/silicon/robot/R = usr + src.rank = "[R.modtype] [R.braintype]" + src.screen = 1 + + else if (istype(src.scan, /obj/item/weapon/card/id)) + src.active1 = null + src.active2 = null + + if (src.check_access(src.scan)) + src.authenticated = src.scan.registered_name + src.rank = src.scan.assignment + src.screen = 1 + + if (src.authenticated) + + if(href_list["screen"]) + src.screen = text2num(href_list["screen"]) + if(src.screen < 1) + src.screen = 1 + + src.active1 = null + src.active2 = null + + if(href_list["vir"]) + var/datum/data/record/v = locate(href_list["vir"]) + src.temp = "
GNAv2 based virus lifeform V-[v.fields["id"]]
" + src.temp += "
Name: [v.fields["name"]]" + src.temp += "
Antigen: [v.fields["antigen"]]" + src.temp += "
Spread: [v.fields["spread type"]] " + src.temp += "
Details:
[v.fields["description"]]" + + if (href_list["del_all"]) + src.temp = text("Are you sure you wish to delete all records?
\n\tYes
\n\tNo
", src, src) + + if (href_list["del_all2"]) + for(var/datum/data/record/R in data_core.medical) + //R = null + del(R) + //Foreach goto(494) + src.temp = "All records deleted." + + if (href_list["field"]) + var/a1 = src.active1 + var/a2 = src.active2 + switch(href_list["field"]) + if("fingerprint") + if (istype(src.active1, /datum/data/record)) + var/t1 = copytext(sanitize(input("Please input fingerprint hash:", "Med. records", src.active1.fields["fingerprint"], null) as text),1,MAX_MESSAGE_LEN) + if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!interactable() && (!istype(usr, /mob/living/silicon))) || src.active1 != a1)) + return + src.active1.fields["fingerprint"] = t1 + if("sex") + if (istype(src.active1, /datum/data/record)) + if (src.active1.fields["sex"] == "Male") + src.active1.fields["sex"] = "Female" + else + src.active1.fields["sex"] = "Male" + if("age") + if (istype(src.active1, /datum/data/record)) + var/t1 = input("Please input age:", "Med. records", src.active1.fields["age"], null) as num + if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!interactable() && (!istype(usr, /mob/living/silicon))) || src.active1 != a1)) + return + src.active1.fields["age"] = t1 + if("mi_dis") + if (istype(src.active2, /datum/data/record)) + var/t1 = copytext(sanitize(input("Please input minor disabilities list:", "Med. records", src.active2.fields["mi_dis"], null) as text),1,MAX_MESSAGE_LEN) + if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!interactable() && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) + return + src.active2.fields["mi_dis"] = t1 + if("mi_dis_d") + if (istype(src.active2, /datum/data/record)) + var/t1 = copytext(sanitize(input("Please summarize minor dis.:", "Med. records", src.active2.fields["mi_dis_d"], null) as message),1,MAX_MESSAGE_LEN) + if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!interactable() && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) + return + src.active2.fields["mi_dis_d"] = t1 + if("ma_dis") + if (istype(src.active2, /datum/data/record)) + var/t1 = copytext(sanitize(input("Please input major diabilities list:", "Med. records", src.active2.fields["ma_dis"], null) as text),1,MAX_MESSAGE_LEN) + if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!interactable() && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) + return + src.active2.fields["ma_dis"] = t1 + if("ma_dis_d") + if (istype(src.active2, /datum/data/record)) + var/t1 = copytext(sanitize(input("Please summarize major dis.:", "Med. records", src.active2.fields["ma_dis_d"], null) as message),1,MAX_MESSAGE_LEN) + if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!interactable() && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) + return + src.active2.fields["ma_dis_d"] = t1 + if("alg") + if (istype(src.active2, /datum/data/record)) + var/t1 = copytext(sanitize(input("Please state allergies:", "Med. records", src.active2.fields["alg"], null) as text),1,MAX_MESSAGE_LEN) + if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!interactable() && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) + return + src.active2.fields["alg"] = t1 + if("alg_d") + if (istype(src.active2, /datum/data/record)) + var/t1 = copytext(sanitize(input("Please summarize allergies:", "Med. records", src.active2.fields["alg_d"], null) as message),1,MAX_MESSAGE_LEN) + if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!interactable() && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) + return + src.active2.fields["alg_d"] = t1 + if("cdi") + if (istype(src.active2, /datum/data/record)) + var/t1 = copytext(sanitize(input("Please state diseases:", "Med. records", src.active2.fields["cdi"], null) as text),1,MAX_MESSAGE_LEN) + if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!interactable() && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) + return + src.active2.fields["cdi"] = t1 + if("cdi_d") + if (istype(src.active2, /datum/data/record)) + var/t1 = copytext(sanitize(input("Please summarize diseases:", "Med. records", src.active2.fields["cdi_d"], null) as message),1,MAX_MESSAGE_LEN) + if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!interactable() && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) + return + src.active2.fields["cdi_d"] = t1 + if("notes") + if (istype(src.active2, /datum/data/record)) + var/t1 = copytext(html_encode(input("Please summarize notes:", "Med. records", html_decode(src.active2.fields["notes"]), null) as message),1,MAX_MESSAGE_LEN) + if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!interactable() && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) + return + src.active2.fields["notes"] = t1 + if("p_stat") + if (istype(src.active1, /datum/data/record)) + src.temp = text("Physical Condition:
\n\t*Deceased*
\n\t*SSD*
\n\tActive
\n\tPhysically Unfit
\n\tDisabled
", src, src, src, src, src) + if("m_stat") + if (istype(src.active1, /datum/data/record)) + src.temp = text("Mental Condition:
\n\t*Insane*
\n\t*Unstable*
\n\t*Watch*
\n\tStable
", src, src, src, src) + if("b_type") + if (istype(src.active2, /datum/data/record)) + src.temp = text("Blood Type:
\n\tA- A+
\n\tB- B+
\n\tAB- AB+
\n\tO- O+
", src, src, src, src, src, src, src, src) + if("b_dna") + if (istype(src.active1, /datum/data/record)) + var/t1 = copytext(sanitize(input("Please input DNA hash:", "Med. records", src.active1.fields["dna"], null) as text),1,MAX_MESSAGE_LEN) + if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!interactable() && (!istype(usr, /mob/living/silicon))) || src.active1 != a1)) + return + src.active1.fields["dna"] = t1 + if("vir_name") + var/datum/data/record/v = locate(href_list["edit_vir"]) + if (v) + var/t1 = copytext(sanitize(input("Please input pathogen name:", "VirusDB", v.fields["name"], null) as text),1,MAX_MESSAGE_LEN) + if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!interactable() && (!istype(usr, /mob/living/silicon))) || src.active1 != a1)) + return + v.fields["name"] = t1 + if("vir_desc") + var/datum/data/record/v = locate(href_list["edit_vir"]) + if (v) + var/t1 = copytext(sanitize(input("Please input information about pathogen:", "VirusDB", v.fields["description"], null) as message),1,MAX_MESSAGE_LEN) + if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!interactable() && (!istype(usr, /mob/living/silicon))) || src.active1 != a1)) + return + v.fields["description"] = t1 + else + + if (href_list["p_stat"]) + if (src.active1) + switch(href_list["p_stat"]) + if("deceased") + src.active1.fields["p_stat"] = "*Deceased*" + if("ssd") + src.active1.fields["p_stat"] = "*SSD*" + if("active") + src.active1.fields["p_stat"] = "Active" + if("unfit") + src.active1.fields["p_stat"] = "Physically Unfit" + if("disabled") + src.active1.fields["p_stat"] = "Disabled" + + if (href_list["m_stat"]) + if (src.active1) + switch(href_list["m_stat"]) + if("insane") + src.active1.fields["m_stat"] = "*Insane*" + if("unstable") + src.active1.fields["m_stat"] = "*Unstable*" + if("watch") + src.active1.fields["m_stat"] = "*Watch*" + if("stable") + src.active1.fields["m_stat"] = "Stable" + + + if (href_list["b_type"]) + if (src.active2) + switch(href_list["b_type"]) + if("an") + src.active2.fields["b_type"] = "A-" + if("bn") + src.active2.fields["b_type"] = "B-" + if("abn") + src.active2.fields["b_type"] = "AB-" + if("on") + src.active2.fields["b_type"] = "O-" + if("ap") + src.active2.fields["b_type"] = "A+" + if("bp") + src.active2.fields["b_type"] = "B+" + if("abp") + src.active2.fields["b_type"] = "AB+" + if("op") + src.active2.fields["b_type"] = "O+" + + + if (href_list["del_r"]) + if (src.active2) + src.temp = text("Are you sure you wish to delete the record (Medical Portion Only)?
\n\tYes
\n\tNo
", src, src) + + if (href_list["del_r2"]) + if (src.active2) + //src.active2 = null + del(src.active2) + + if (href_list["d_rec"]) + var/datum/data/record/R = locate(href_list["d_rec"]) + var/datum/data/record/M = locate(href_list["d_rec"]) + if (!( data_core.general.Find(R) )) + src.temp = "Record Not Found!" + return + for(var/datum/data/record/E in data_core.medical) + if ((E.fields["name"] == R.fields["name"] || E.fields["id"] == R.fields["id"])) + M = E + else + //Foreach continue //goto(2540) + src.active1 = R + src.active2 = M + src.screen = 4 + + if (href_list["new"]) + if ((istype(src.active1, /datum/data/record) && !( istype(src.active2, /datum/data/record) ))) + var/datum/data/record/R = new /datum/data/record( ) + R.fields["name"] = src.active1.fields["name"] + R.fields["id"] = src.active1.fields["id"] + R.name = text("Medical Record #[]", R.fields["id"]) + R.fields["b_type"] = "Unknown" + R.fields["b_dna"] = "Unknown" + R.fields["mi_dis"] = "None" + R.fields["mi_dis_d"] = "No minor disabilities have been declared." + R.fields["ma_dis"] = "None" + R.fields["ma_dis_d"] = "No major disabilities have been diagnosed." + R.fields["alg"] = "None" + R.fields["alg_d"] = "No allergies have been detected in this patient." + R.fields["cdi"] = "None" + R.fields["cdi_d"] = "No diseases have been diagnosed at the moment." + R.fields["notes"] = "No notes." + data_core.medical += R + src.active2 = R + src.screen = 4 + + if (href_list["add_c"]) + if (!( istype(src.active2, /datum/data/record) )) + return + var/a2 = src.active2 + var/t1 = copytext(sanitize(input("Add Comment:", "Med. records", null, null) as message),1,MAX_MESSAGE_LEN) + if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!interactable() && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) + return + var/counter = 1 + while(src.active2.fields[text("com_[]", counter)]) + counter++ + src.active2.fields[text("com_[counter]")] = text("Made by [authenticated] ([rank]) on [time2text(world.realtime, "DDD MMM DD hh:mm:ss")], [game_year]
[t1]") + + if (href_list["del_c"]) + if ((istype(src.active2, /datum/data/record) && src.active2.fields[text("com_[]", href_list["del_c"])])) + src.active2.fields[text("com_[]", href_list["del_c"])] = "Deleted" + + if (href_list["search"]) + var/t1 = input("Search String: (Name, DNA, or ID)", "Med. records", null, null) as text + if ((!( t1 ) || usr.stat || !( src.authenticated ) || usr.restrained() || ((!interactable()) && (!istype(usr, /mob/living/silicon))))) + return + src.active1 = null + src.active2 = null + t1 = lowertext(t1) + for(var/datum/data/record/R in data_core.medical) + if ((lowertext(R.fields["name"]) == t1 || t1 == lowertext(R.fields["id"]) || t1 == lowertext(R.fields["b_dna"]))) + src.active2 = R + else + //Foreach continue //goto(3229) + if (!( src.active2 )) + src.temp = text("Could not locate record [].", t1) + else + for(var/datum/data/record/E in data_core.general) + if ((E.fields["name"] == src.active2.fields["name"] || E.fields["id"] == src.active2.fields["id"])) + src.active1 = E + else + //Foreach continue //goto(3334) + src.screen = 4 + + if (href_list["print_p"]) + if (!( src.printing )) + src.printing = 1 + var/datum/data/record/record1 = null + var/datum/data/record/record2 = null + if ((istype(src.active1, /datum/data/record) && data_core.general.Find(src.active1))) + record1 = active1 + if ((istype(src.active2, /datum/data/record) && data_core.medical.Find(src.active2))) + record2 = active2 + sleep(50) + var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( computer.loc ) + P.info = "
Medical Record

" + if (record1) + P.info += text("Name: [] ID: []
\nSex: []
\nAge: []
\nFingerprint: []
\nPhysical Status: []
\nMental Status: []
", record1.fields["name"], record1.fields["id"], record1.fields["sex"], record1.fields["age"], record1.fields["fingerprint"], record1.fields["p_stat"], record1.fields["m_stat"]) + P.name = text("Medical Record ([])", record1.fields["name"]) + else + P.info += "General Record Lost!
" + P.name = "Medical Record" + if (record2) + P.info += text("
\n
Medical Data

\nBlood Type: []
\nDNA: []
\n
\nMinor Disabilities: []
\nDetails: []
\n
\nMajor Disabilities: []
\nDetails: []
\n
\nAllergies: []
\nDetails: []
\n
\nCurrent Diseases: [] (per disease info placed in log/comment section)
\nDetails: []
\n
\nImportant Notes:
\n\t[]
\n
\n
Comments/Log

", record2.fields["b_type"], record2.fields["b_dna"], record2.fields["mi_dis"], record2.fields["mi_dis_d"], record2.fields["ma_dis"], record2.fields["ma_dis_d"], record2.fields["alg"], record2.fields["alg_d"], record2.fields["cdi"], record2.fields["cdi_d"], decode(record2.fields["notes"])) + var/counter = 1 + while(record2.fields[text("com_[]", counter)]) + P.info += text("[]
", record2.fields[text("com_[]", counter)]) + counter++ + else + P.info += "Medical Record Lost!
" + P.info += "" + src.printing = null + + interact() + return diff --git a/code/WorkInProgress/computer3/computers/message.dm b/code/WorkInProgress/computer3/computers/message.dm new file mode 100644 index 0000000000..d03f4a4753 --- /dev/null +++ b/code/WorkInProgress/computer3/computers/message.dm @@ -0,0 +1,441 @@ +/obj/machinery/computer3/message_monitor + default_prog = /datum/file/program/message_mon + spawn_parts = list(/obj/item/part/computer/storage/hdd,/obj/item/part/computer/networking/prox) + +/datum/file/program/message_mon + name = "Message Monitor Console" + desc = "Used to Monitor the crew's messages, that are sent via PDA. Can also be used to view Request Console messages." + active_state = "comm_logs" + var/hack_icon = "comm_logsc" + var/normal_icon = "comm_logs" + + //Server linked to. + var/obj/machinery/message_server/linkedServer = null + //Sparks effect - For emag + //var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread + + //Messages - Saves me time if I want to change something. + var/noserver = "ALERT: No server detected." + var/incorrectkey = "ALERT: Incorrect decryption key!" + var/defaultmsg = "Welcome. Please select an option." + var/rebootmsg = "%$&(£: Critical %$$@ Error // !RestArting! - ?pLeaSe wAit!" + + //Computer properties + var/screen = 0 // 0 = Main menu, 1 = Message Logs, 2 = Hacked screen, 3 = Custom Message + var/hacking = 0 // Is it being hacked into by the AI/Cyborg + var/emag = 0 // When it is emagged. + var/message = "System bootup complete. Please select an option." // The message that shows on the main menu. + var/auth = 0 // Are they authenticated? + var/optioncount = 7 + + // Custom Message Properties + var/customsender = "System Administrator" + var/obj/item/device/pda/customrecepient = null + var/customjob = "Admin" + var/custommessage = "This is a test, please ignore." + + + update_icon() + if(emag || hacking) + overlay.icon_state = hack_icon + else + overlay.icon_state = normal_icon + computer.update_icon() + + interact() + if(!interactable()) + return + + //If the computer is being hacked or is emagged, display the reboot message. + if(hacking || emag) + message = rebootmsg + + var/dat = "
/
" + + if(auth) + dat += "

\[Authenticated\] /" + dat += " Server Power: [src.linkedServer && src.linkedServer.active ? "\[On\]":"\[Off\]"]

" + else + dat += "

\[Unauthenticated\] /" + dat += " Server Power: [src.linkedServer && src.linkedServer.active ? "\[On\]":"\[Off\]"]

" + + if(hacking || emag) + screen = 2 + else + if(!auth) + screen = 0 + if( !linkedServer || (linkedServer.stat & (NOPOWER|BROKEN)) ) + message = noserver + screen = 0 + + switch(screen) + //Main menu + if(0) + // = TAB + var/i = 0 + dat += "
[++i]. Link To A Server
" + if(auth) + if(!linkedServer || (linkedServer.stat & (NOPOWER|BROKEN))) + dat += "
ERROR: Server not found!
" + else + dat += "
[++i]. View Message Logs
" + dat += "
[++i]. View Request Console Logs
" + dat += "
[++i]. Clear Message Logs
" + dat += "
[++i]. Clear Request Console Logs
" + dat += "
[++i]. Set Custom Key
" + dat += "
[++i]. Send Admin Message
" + else + for(var/n = ++i; n <= optioncount; n++) + dat += "
[n]. ---------------
" + if((istype(usr, /mob/living/silicon/ai) || istype(usr, /mob/living/silicon/robot)) && (usr.mind.special_role && usr.mind.original == usr)) + //Malf/Traitor AIs can bruteforce into the system to gain the Key. + dat += "
*&@#. Bruteforce Key
" + else + dat += "
" + + //Bottom message + if(!auth) + dat += "

Please authenticate with the server in order to show additional options." + else + dat += "

Reg, #514 forbids sending messages to a Head of Staff containing Erotic Rendering Properties." + + //Message Logs + if(1) + var/index = 0 + //var/recipient = "Unspecified" //name of the person + //var/sender = "Unspecified" //name of the sender + //var/message = "Blank" //transferred message + dat += "
Back - Refresh

" + dat += "" + for(var/datum/data_pda_msg/pda in src.linkedServer.pda_msgs) + index++ + if(index > 3000) + break + // Del - Sender - Recepient - Message + // X - Al Green - Your Mom - WHAT UP!? + dat += "" + dat += "
XSenderRecipientMessage
X
[pda.sender][pda.recipient][pda.message]
" + //Hacking screen. + if(2) + if(istype(usr, /mob/living/silicon/ai) || istype(usr, /mob/living/silicon/robot)) + dat += "Brute-forcing for server key.
It will take 20 seconds for every character that the password has." + dat += "In the meantime, this console can reveal your true intentions if you let someone access it. Make sure no humans enter the room during that time." + else + //It's the same message as the one above but in binary. Because robots understand binary and humans don't... well I thought it was clever. + dat += {"01000010011100100111010101110100011001010010110
+ 10110011001101111011100100110001101101001011011100110011
+ 10010000001100110011011110111001000100000011100110110010
+ 10111001001110110011001010111001000100000011010110110010
+ 10111100100101110001000000100100101110100001000000111011
+ 10110100101101100011011000010000001110100011000010110101
+ 10110010100100000001100100011000000100000011100110110010
+ 10110001101101111011011100110010001110011001000000110011
+ 00110111101110010001000000110010101110110011001010111001
+ 00111100100100000011000110110100001100001011100100110000
+ 10110001101110100011001010111001000100000011101000110100
+ 00110000101110100001000000111010001101000011001010010000
+ 00111000001100001011100110111001101110111011011110111001
+ 00110010000100000011010000110000101110011001011100010000
+ 00100100101101110001000000111010001101000011001010010000
+ 00110110101100101011000010110111001110100011010010110110
+ 10110010100101100001000000111010001101000011010010111001
+ 10010000001100011011011110110111001110011011011110110110
+ 00110010100100000011000110110000101101110001000000111001
+ 00110010101110110011001010110000101101100001000000111100
+ 10110111101110101011100100010000001110100011100100111010
+ 10110010100100000011010010110111001110100011001010110111
+ 00111010001101001011011110110111001110011001000000110100
+ 10110011000100000011110010110111101110101001000000110110
+ 00110010101110100001000000111001101101111011011010110010
+ 10110111101101110011001010010000001100001011000110110001
+ 10110010101110011011100110010000001101001011101000010111
+ 00010000001001101011000010110101101100101001000000111001
+ 10111010101110010011001010010000001101110011011110010000
+ 00110100001110101011011010110000101101110011100110010000
+ 00110010101101110011101000110010101110010001000000111010
+ 00110100001100101001000000111001001101111011011110110110
+ 10010000001100100011101010111001001101001011011100110011
+ 10010000001110100011010000110000101110100001000000111010
+ 001101001011011010110010100101110"} + + //Fake messages + if(3) + dat += "
Back - Reset

" + + dat += {" + + + + "} + //Sender - Sender's Job - Recepient - Message + //Al Green- Your Dad - Your Mom - WHAT UP!? + + dat += {" + + + "} + dat += "
SenderSender's JobRecipientMessage
[customsender][customjob][customrecepient ? customrecepient.owner : "NONE"][custommessage]

Send" + + //Request Console Logs + if(4) + + var/index = 0 + /* data_rc_msg + X - 5% + var/rec_dpt = "Unspecified" //name of the person - 15% + var/send_dpt = "Unspecified" //name of the sender- 15% + var/message = "Blank" //transferred message - 300px + var/stamp = "Unstamped" - 15% + var/id_auth = "Unauthenticated" - 15% + var/priority = "Normal" - 10% + */ + dat += "
Back - Refresh

" + dat += {" + "} + for(var/datum/data_rc_msg/rc in src.linkedServer.rc_msgs) + index++ + if(index > 3000) + break + // Del - Sender - Recepient - Message + // X - Al Green - Your Mom - WHAT UP!? + dat += {" + "} + dat += "
XSending Dep.Receiving Dep.MessageStampID Auth.Priority.
X
[rc.send_dpt][rc.rec_dpt][rc.message][rc.stamp][rc.id_auth][rc.priority]
" + + message = defaultmsg + + popup.set_content(dat) + popup.open() + return + + + proc/BruteForce(mob/usr as mob) + if(isnull(linkedServer)) + usr << "Could not complete brute-force: Linked Server Disconnected!" + else + var/currentKey = src.linkedServer.decryptkey + usr << "Brute-force completed! The key is '[currentKey]'." + src.hacking = 0 + src.active_state = normal_icon + src.screen = 0 // Return the screen back to normal + + proc/UnmagConsole() + src.active_state = normal_icon + src.emag = 0 + + proc/ResetMessage() + customsender = "System Administrator" + customrecepient = null + custommessage = "This is a test, please ignore." + customjob = "Admin" + + Topic(var/href, var/list/href_list) + if(!interactable() || ..(href,href_list)) + return + + if ("auth" in href_list) + if(auth) + auth = 0 + screen = 0 + else + var/dkey = trim(input(usr, "Please enter the decryption key.") as text|null) + if(dkey && dkey != "") + if(src.linkedServer.decryptkey == dkey) + auth = 1 + else + message = incorrectkey + + //Turn the server on/off. + if ("active" in href_list) + if(auth) linkedServer.active = !linkedServer.active + //Find a server + if ("find" in href_list) + if(message_servers && message_servers.len > 1) + src.linkedServer = input(usr,"Please select a server.", "Select a server.", null) as null|anything in message_servers + message = "NOTICE: Server selected." + else if(message_servers && message_servers.len > 0) + linkedServer = message_servers[1] + message = "NOTICE: Only Single Server Detected - Server selected." + else + message = noserver + + //View the logs - KEY REQUIRED + if ("view" in href_list) + if(src.linkedServer == null || (src.linkedServer.stat & (NOPOWER|BROKEN))) + message = noserver + else + if(auth) + src.screen = 1 + + //Clears the logs - KEY REQUIRED + if ("clear" in href_list) + if(!linkedServer || (src.linkedServer.stat & (NOPOWER|BROKEN))) + message = noserver + else + if(auth) + src.linkedServer.pda_msgs = list() + message = "NOTICE: Logs cleared." + //Clears the request console logs - KEY REQUIRED + if ("clearr" in href_list) + if(!linkedServer || (src.linkedServer.stat & (NOPOWER|BROKEN))) + message = noserver + else + if(auth) + src.linkedServer.rc_msgs = list() + message = "NOTICE: Logs cleared." + //Change the password - KEY REQUIRED + if ("pass" in href_list) + if(!linkedServer || (src.linkedServer.stat & (NOPOWER|BROKEN))) + message = noserver + else + if(auth) + var/dkey = trim(input(usr, "Please enter the decryption key.") as text|null) + if(dkey && dkey != "") + if(src.linkedServer.decryptkey == dkey) + var/newkey = trim(input(usr,"Please enter the new key (3 - 16 characters max):")) + if(length(newkey) <= 3) + message = "NOTICE: Decryption key too short!" + else if(length(newkey) > 16) + message = "NOTICE: Decryption key too long!" + else if(newkey && newkey != "") + src.linkedServer.decryptkey = newkey + message = "NOTICE: Decryption key set." + else + message = incorrectkey + + //Hack the Console to get the password + if ("hack" in href_list) + if((istype(usr, /mob/living/silicon/ai) || istype(usr, /mob/living/silicon/robot)) && (usr.mind.special_role && usr.mind.original == usr)) + src.hacking = 1 + src.screen = 2 + src.active_state = hack_icon + //Time it takes to bruteforce is dependant on the password length. + spawn(100*length(src.linkedServer.decryptkey)) + if(src && src.linkedServer && usr) + BruteForce(usr) + //Delete the log. + if ("delete" in href_list) + //Are they on the view logs screen? + if(screen == 1) + if(!linkedServer || (src.linkedServer.stat & (NOPOWER|BROKEN))) + message = noserver + else //if(istype(href_list["delete"], /datum/data_pda_msg)) + src.linkedServer.pda_msgs -= locate(href_list["delete"]) + message = "NOTICE: Log Deleted!" + //Delete the request console log. + if ("deleter" in href_list) + //Are they on the view logs screen? + if(screen == 4) + if(!linkedServer || (src.linkedServer.stat & (NOPOWER|BROKEN))) + message = noserver + else //if(istype(href_list["delete"], /datum/data_pda_msg)) + src.linkedServer.rc_msgs -= locate(href_list["deleter"]) + message = "NOTICE: Log Deleted!" + //Create a custom message + if ("msg" in href_list) + if(src.linkedServer == null || (src.linkedServer.stat & (NOPOWER|BROKEN))) + message = noserver + else + if(auth) + src.screen = 3 + //Fake messaging selection - KEY REQUIRED + if ("select" in href_list) + if(src.linkedServer == null || (src.linkedServer.stat & (NOPOWER|BROKEN))) + message = noserver + screen = 0 + else + switch(href_list["select"]) + + //Reset + if("Reset") + ResetMessage() + + //Select Your Name + if("Sender") + customsender = input(usr, "Please enter the sender's name.") as text|null + + //Select Receiver + if("Recepient") + //Get out list of viable PDAs + var/list/obj/item/device/pda/sendPDAs = list() + for(var/obj/item/device/pda/P in PDAs) + if(!P.owner || P.toff || P.hidden) continue + sendPDAs += P + if(PDAs && PDAs.len > 0) + customrecepient = input(usr, "Select a PDA from the list.") as null|anything in sortAtom(sendPDAs) + else + customrecepient = null + + + //Enter custom job + if("RecJob") + customjob = input(usr, "Please enter the sender's job.") as text|null + + //Enter message + if("Message") + custommessage = input(usr, "Please enter your message.") as text|null + custommessage = copytext(sanitize(custommessage), 1, MAX_MESSAGE_LEN) + + //Send message + if("Send") + + if(isnull(customsender) || customsender == "") + customsender = "UNKNOWN" + + if(isnull(customrecepient)) + message = "NOTICE: No recepient selected!" + return src.attack_hand(usr) + + if(isnull(custommessage) || custommessage == "") + message = "NOTICE: No message entered!" + return src.attack_hand(usr) + + var/obj/item/device/pda/PDARec = null + for (var/obj/item/device/pda/P in PDAs) + if (!P.owner || P.toff || P.hidden) continue + if(P.owner == customsender) + PDARec = P + //Sender isn't faking as someone who exists + if(isnull(PDARec)) + src.linkedServer.send_pda_message("[customrecepient.owner]", "[customsender]","[custommessage]") + customrecepient.tnote += "← From
[customsender] ([customjob]):
[custommessage]
" + if (!customrecepient.silent) + playsound(customrecepient.loc, 'sound/machines/twobeep.ogg', 50, 1) + for (var/mob/O in hearers(3, customrecepient.loc)) + O.show_message(text("\icon[customrecepient] *[customrecepient.ttone]*")) + if( customrecepient.loc && ishuman(customrecepient.loc) ) + var/mob/living/carbon/human/H = customrecepient.loc + H << "\icon[customrecepient] Message from [customsender] ([customjob]), \"[custommessage]\" (Reply)" + log_pda("[usr] (PDA: [customsender]) sent \"[custommessage]\" to [customrecepient.owner]") + customrecepient.overlays.Cut() + customrecepient.overlays += image('icons/obj/pda.dmi', "pda-r") + //Sender is faking as someone who exists + else + src.linkedServer.send_pda_message("[customrecepient.owner]", "[PDARec.owner]","[custommessage]") + customrecepient.tnote += "← From [PDARec.owner] ([customjob]):
[custommessage]
" + if (!customrecepient.silent) + playsound(customrecepient.loc, 'sound/machines/twobeep.ogg', 50, 1) + for (var/mob/O in hearers(3, customrecepient.loc)) + O.show_message(text("\icon[customrecepient] *[customrecepient.ttone]*")) + if( customrecepient.loc && ishuman(customrecepient.loc) ) + var/mob/living/carbon/human/H = customrecepient.loc + H << "\icon[customrecepient] Message from [PDARec.owner] ([customjob]), \"[custommessage]\" (Reply)" + log_pda("[usr] (PDA: [PDARec.owner]) sent \"[custommessage]\" to [customrecepient.owner]") + customrecepient.overlays.Cut() + customrecepient.overlays += image('icons/obj/pda.dmi', "pda-r") + //Finally.. + ResetMessage() + + //Request Console Logs - KEY REQUIRED + if("viewr" in href_list) + if(src.linkedServer == null || (src.linkedServer.stat & (NOPOWER|BROKEN))) + message = noserver + else + if(auth) + src.screen = 4 + + //usr << href_list["select"] + + if ("back" in href_list) + src.screen = 0 + interact() \ No newline at end of file diff --git a/code/WorkInProgress/computer3/computers/pod.dm b/code/WorkInProgress/computer3/computers/pod.dm new file mode 100644 index 0000000000..47f45b1c91 --- /dev/null +++ b/code/WorkInProgress/computer3/computers/pod.dm @@ -0,0 +1,218 @@ +//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 + +/obj/machinery/computer3/pod + name = "Pod Launch Control" + desc = "A controll for launching pods. Some people prefer firing Mechas." + icon_state = "computer_generic" + var/id = 1.0 + var/obj/machinery/mass_driver/connected = null + var/timing = 0.0 + var/time = 30.0 + var/title = "Mass Driver Controls" + + +/obj/machinery/computer3/pod/New() + ..() + spawn( 5 ) + for(var/obj/machinery/mass_driver/M in world) + if(M.id == id) + connected = M + else + return + return + + +/obj/machinery/computer3/pod/proc/alarm() + if(stat & (NOPOWER|BROKEN)) + return + + if(!( connected )) + viewers(null, null) << "Cannot locate mass driver connector. Cancelling firing sequence!" + return + + for(var/obj/machinery/door/poddoor/M in world) + if(M.id == id) + M.open() + return + sleep(20) + + for(var/obj/machinery/mass_driver/M in world) + if(M.id == id) + M.power = connected.power + M.drive() + + sleep(50) + for(var/obj/machinery/door/poddoor/M in world) + if(M.id == id) + M.close() + return + return + + +/obj/machinery/computer3/pod/attackby(I as obj, user as mob) + if(istype(I, /obj/item/tool/screwdriver)) + playsound(loc, 'sound/items/Screwdriver.ogg', 50, 1) + if(do_after(user, 20)) + if(stat & BROKEN) + user << "\blue The broken glass falls out." + var/obj/structure/computerframe/A = new /obj/structure/computerframe( loc ) + new /obj/item/trash/shard( loc ) + + //generate appropriate circuitboard. Accounts for /pod/old computer types + var/obj/item/part/board/circuit/pod/M = null + if(istype(src, /obj/machinery/computer/pod/old)) + M = new /obj/item/part/board/circuit/olddoor( A ) + if(istype(src, /obj/machinery/computer/pod/old/syndicate)) + M = new /obj/item/part/board/circuit/syndicatedoor( A ) + if(istype(src, /obj/machinery/computer/pod/old/swf)) + M = new /obj/item/part/board/circuit/swfdoor( A ) + else //it's not an old computer. Generate standard pod circuitboard. + M = new /obj/item/part/board/circuit/pod( A ) + + for (var/obj/C in src) + C.loc = loc + M.id = id + A.circuit = M + A.state = 3 + A.icon_state = "3" + A.anchored = 1 + del(src) + else + user << "\blue You disconnect the monitor." + var/obj/structure/computerframe/A = new /obj/structure/computerframe( loc ) + + //generate appropriate circuitboard. Accounts for /pod/old computer types + var/obj/item/part/board/circuit/pod/M = null + if(istype(src, /obj/machinery/computer/pod/old)) + M = new /obj/item/part/board/circuit/olddoor( A ) + if(istype(src, /obj/machinery/computer/pod/old/syndicate)) + M = new /obj/item/part/board/circuit/syndicatedoor( A ) + if(istype(src, /obj/machinery/computer/pod/old/swf)) + M = new /obj/item/part/board/circuit/swfdoor( A ) + else //it's not an old computer. Generate standard pod circuitboard. + M = new /obj/item/part/board/circuit/pod( A ) + + for (var/obj/C in src) + C.loc = loc + M.id = id + A.circuit = M + A.state = 4 + A.icon_state = "4" + A.anchored = 1 + del(src) + else + attack_hand(user) + return + + +/obj/machinery/computer3/pod/attack_ai(var/mob/user as mob) + return attack_hand(user) + + +/obj/machinery/computer3/pod/attack_paw(var/mob/user as mob) + return attack_hand(user) + + +/obj/machinery/computer3/pod/attack_hand(var/mob/user as mob) + if(..()) + return + + var/dat = "" + user.set_machine(src) + if(connected) + var/d2 + if(timing) //door controls do not need timers. + d2 = "Stop Time Launch" + else + d2 = "Initiate Time Launch" + var/second = time % 60 + var/minute = (time - second) / 60 + dat += "
\nTimer System: [d2]\nTime Left: [minute ? "[minute]:" : null][second] - - + +" + var/temp = "" + var/list/L = list( 0.25, 0.5, 1, 2, 4, 8, 16 ) + for(var/t in L) + if(t == connected.power) + temp += "[t] " + else + temp += "[t] " + dat += "
\nPower Level: [temp]
\nFiring Sequence
\nTest Fire Driver
\nToggle Outer Door
" + else + dat += "
\nToggle Outer Door
" + dat += "

Close" + add_fingerprint(usr) + //user << browse(dat, "window=computer;size=400x500") + //onclose(user, "computer") + var/datum/browser/popup = new(user, "computer", title, 400, 500) + popup.set_content(dat) + popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) + popup.open() + return + + +/obj/machinery/computer3/pod/process() + if(!..()) + return + if(timing) + if(time > 0) + time = round(time) - 1 + else + alarm() + time = 0 + timing = 0 + updateDialog() + return + + +/obj/machinery/computer3/pod/Topic(href, href_list) + if(..()) + return + if((usr.contents.Find(src) || (in_range(src, usr) && istype(loc, /turf))) || (istype(usr, /mob/living/silicon))) + usr.set_machine(src) + if(href_list["power"]) + var/t = text2num(href_list["power"]) + t = min(max(0.25, t), 16) + if(connected) + connected.power = t + if(href_list["alarm"]) + alarm() + if(href_list["time"]) + timing = text2num(href_list["time"]) + if(href_list["tp"]) + var/tp = text2num(href_list["tp"]) + time += tp + time = min(max(round(time), 0), 120) + if(href_list["door"]) + for(var/obj/machinery/door/poddoor/M in world) + if(M.id == id) + if(M.density) + M.open() + else + M.close() + updateUsrDialog() + return + + + +/obj/machinery/computer3/pod/old + icon_state = "old" + name = "DoorMex Control Console" + title = "Door Controls" + + + +/obj/machinery/computer3/pod/old/syndicate + name = "ProComp Executive IIc" + desc = "The Syndicate operate on a tight budget. Operates external airlocks." + title = "External Airlock Controls" + req_access = list(access_syndicate) + +/obj/machinery/computer3/pod/old/syndicate/attack_hand(var/mob/user as mob) + if(!allowed(user)) + user << "\red Access Denied" + return + else + ..() + +/obj/machinery/computer3/pod/old/swf + name = "Magix System IV" + desc = "An arcane artifact that holds much magic. Running E-Knock 2.2: Sorceror's Edition" diff --git a/code/WorkInProgress/computer3/computers/power.dm b/code/WorkInProgress/computer3/computers/power.dm new file mode 100644 index 0000000000..4bd838a207 --- /dev/null +++ b/code/WorkInProgress/computer3/computers/power.dm @@ -0,0 +1,47 @@ +/obj/machinery/computer3/powermonitor + default_prog = /datum/file/program/powermon + spawn_parts = list(/obj/item/part/computer/storage/hdd,/obj/item/part/computer/networking/cable) + icon_state = "frame-eng" + +/datum/file/program/powermon + name = "power monitoring console" + desc = "It monitors APC status." + active_state = "power" + + proc/format(var/obj/machinery/power/apc/A) + var/static/list/S = list(" Off","AOff"," On", " AOn") + var/static/list/chg = list("N","C","F") + return "[copytext(add_tspace("\The [A.area]", 30), 1, 30)] [S[A.equipment+1]] [S[A.lighting+1]] [S[A.environ+1]] [add_lspace(A.lastused_total, 6)] [A.cell ? "[add_lspace(round(A.cell.percent()), 3)]% [chg[A.charging+1]]" : " N/C"]
" + + interact() + if(!interactable()) + return + if(!computer.net) + computer.Crash(MISSING_PERIPHERAL) + return + var/list/L = computer.net.get_machines(/obj/machinery/power/apc) + var/t = "" + t += "Refresh

" + if(!L || !L.len) + t += "\red No connection" + else + var/datum/powernet/powernet = computer.net.connect_to(/datum/powernet,null) + if(powernet) + t += "
Total power: [powernet.avail] W
Total load: [num2text(powernet.viewload,10)] W
" + else + t += "
Power statistics unavailable
" + t += "" + + if(L.len > 0) + t += "Area Eqp./Lgt./Env. Load Cell
" + for(var/obj/machinery/power/apc/A in L) + t += src.format(A) + t += "
" + + popup.set_content(t) + popup.open() + + Topic(var/href, var/list/href_list) + if(!interactable() || ..(href,href_list)) + return + interact() diff --git a/code/WorkInProgress/computer3/computers/prisoner.dm b/code/WorkInProgress/computer3/computers/prisoner.dm new file mode 100644 index 0000000000..d88a8bffdf --- /dev/null +++ b/code/WorkInProgress/computer3/computers/prisoner.dm @@ -0,0 +1,109 @@ +//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 + +/obj/machinery/computer3/prisoner + name = "Prisoner Management Comsole" + icon = 'icons/obj/computer.dmi' + icon_state = "explosive" + req_access = list(access_armory) + circuit = "/obj/item/part/board/circuit/prisoner" + var/id = 0.0 + var/temp = null + var/status = 0 + var/timeleft = 60 + var/stop = 0.0 + var/screen = 0 // 0 - No Access Denied, 1 - Access allowed + + + attack_ai(var/mob/user as mob) + return src.attack_hand(user) + + + attack_paw(var/mob/user as mob) + return + + + attack_hand(var/mob/user as mob) + if(..()) + return + user.set_machine(src) + var/dat + dat += "Prisoner Implant Manager System
" + if(screen == 0) + dat += "
Unlock Console" + else if(screen == 1) + dat += "
Chemical Implants
" + var/turf/Tr = null + for(var/obj/item/weapon/implant/chem/C in world) + Tr = get_turf(C) + if((Tr) && (Tr.z != src.z)) continue//Out of range + if(!C.implanted) continue + dat += "[C.imp_in.name] | Remaining Units: [C.reagents.total_volume] | Inject: " + dat += "((1))" + dat += "((5))" + dat += "((10))
" + dat += "********************************
" + dat += "
Tracking Implants
" + for(var/obj/item/weapon/implant/tracking/T in world) + Tr = get_turf(T) + if((Tr) && (Tr.z != src.z)) continue//Out of range + if(!T.implanted) continue + var/loc_display = "Unknown" + var/mob/living/carbon/M = T.imp_in + if(M.z == 1 && !istype(M.loc, /turf/space)) + var/turf/mob_loc = get_turf_loc(M) + loc_display = mob_loc.loc + if(T.malfunction) + loc_display = pick(teleportlocs) + dat += "ID: [T.id] | Location: [loc_display]
" + dat += "(Message Holder) |
" + dat += "********************************
" + dat += "
Lock Console" + + user << browse(dat, "window=computer;size=400x500") + onclose(user, "computer") + return + + + process() + if(!..()) + src.updateDialog() + return + + + Topic(href, href_list) + if(..()) + return + if((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon))) + usr.set_machine(src) + + if(href_list["inject1"]) + var/obj/item/weapon/implant/I = locate(href_list["inject1"]) + if(I) I.activate(1) + + else if(href_list["inject5"]) + var/obj/item/weapon/implant/I = locate(href_list["inject5"]) + if(I) I.activate(5) + + else if(href_list["inject10"]) + var/obj/item/weapon/implant/I = locate(href_list["inject10"]) + if(I) I.activate(10) + + else if(href_list["lock"]) + if(src.allowed(usr)) + screen = !screen + else + usr << "Unauthorized Access." + + else if(href_list["warn"]) + var/warning = copytext(sanitize(input(usr,"Message:","Enter your message here!","")),1,MAX_MESSAGE_LEN) + if(!warning) return + var/obj/item/weapon/implant/I = locate(href_list["warn"]) + if((I)&&(I.imp_in)) + var/mob/living/carbon/R = I.imp_in + R << "\green You hear a voice in your head saying: '[warning]'" + + src.add_fingerprint(usr) + src.updateUsrDialog() + return + + diff --git a/code/WorkInProgress/computer3/computers/prisonshuttle.dm b/code/WorkInProgress/computer3/computers/prisonshuttle.dm new file mode 100644 index 0000000000..f6f246e578 --- /dev/null +++ b/code/WorkInProgress/computer3/computers/prisonshuttle.dm @@ -0,0 +1,242 @@ +//Config stuff +#define PRISON_MOVETIME 150 //Time to station is milliseconds. +#define PRISON_STATION_AREATYPE "/area/shuttle/prison/station" //Type of the prison shuttle area for station +#define PRISON_DOCK_AREATYPE "/area/shuttle/prison/prison" //Type of the prison shuttle area for dock + +var/prison_shuttle_moving_to_station = 0 +var/prison_shuttle_moving_to_prison = 0 +var/prison_shuttle_at_station = 0 +var/prison_shuttle_can_send = 1 +var/prison_shuttle_time = 0 +var/prison_shuttle_timeleft = 0 + +/obj/machinery/computer3/prison_shuttle + name = "Prison Shuttle Console" + icon = 'icons/obj/computer.dmi' + icon_state = "shuttle" + req_access = list(access_security) + circuit = "/obj/item/part/board/circuit/prison_shuttle" + var/temp = null + var/hacked = 0 + var/allowedtocall = 0 + var/prison_break = 0 + + + attackby(I as obj, user as mob) + return src.attack_hand(user) + + + attack_ai(var/mob/user as mob) + return src.attack_hand(user) + + + attack_paw(var/mob/user as mob) + return src.attack_hand(user) + + + attackby(I as obj, user as mob) + if(istype(I, /obj/item/tool/screwdriver)) + playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) + if(do_after(user, 20)) + var/obj/structure/computerframe/A = new /obj/structure/computerframe( src.loc ) + var/obj/item/part/board/circuit/prison_shuttle/M = new /obj/item/part/board/circuit/prison_shuttle( A ) + for (var/obj/C in src) + C.loc = src.loc + A.circuit = M + A.anchored = 1 + + if (src.stat & BROKEN) + user << "\blue The broken glass falls out." + new /obj/item/trash/shard( src.loc ) + A.state = 3 + A.icon_state = "3" + else + user << "\blue You disconnect the monitor." + A.state = 4 + A.icon_state = "4" + + del(src) + else if(istype(I,/obj/item/card/emag) && (!hacked)) + hacked = 1 + user << "\blue You disable the lock." + else + return src.attack_hand(user) + + + attack_hand(var/mob/user as mob) + if(!src.allowed(user) && (!hacked)) + user << "\red Access Denied." + return + if(prison_break) + user << "\red Unable to locate shuttle." + return + if(..()) + return + user.set_machine(src) + post_signal("prison") + var/dat + if (src.temp) + dat = src.temp + else + dat += {"Location: [prison_shuttle_moving_to_station || prison_shuttle_moving_to_prison ? "Moving to station ([prison_shuttle_timeleft] Secs.)":prison_shuttle_at_station ? "Station":"Dock"]
+ [prison_shuttle_moving_to_station || prison_shuttle_moving_to_prison ? "\n*Shuttle already called*
\n
":prison_shuttle_at_station ? "\nSend to Dock
\n
":"\nSend to Station
\n
"] + \nClose"} + + //user << browse(dat, "window=computer;size=575x450") + //onclose(user, "computer") + var/datum/browser/popup = new(user, "computer", name, 575, 450) + popup.set_content(dat) + popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) + popup.open() + return + + + Topic(href, href_list) + if(..()) + return + + if ((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon))) + usr.set_machine(src) + + if (href_list["sendtodock"]) + if (!prison_can_move()) + usr << "\red The prison shuttle is unable to leave." + return + if(!prison_shuttle_at_station|| prison_shuttle_moving_to_station || prison_shuttle_moving_to_prison) return + post_signal("prison") + usr << "\blue The prison shuttle has been called and will arrive in [(PRISON_MOVETIME/10)] seconds." + src.temp += "Shuttle sent.

OK" + src.updateUsrDialog() + prison_shuttle_moving_to_prison = 1 + prison_shuttle_time = world.timeofday + PRISON_MOVETIME + spawn(0) + prison_process() + + else if (href_list["sendtostation"]) + if (!prison_can_move()) + usr << "\red The prison shuttle is unable to leave." + return + if(prison_shuttle_at_station || prison_shuttle_moving_to_station || prison_shuttle_moving_to_prison) return + post_signal("prison") + usr << "\blue The prison shuttle has been called and will arrive in [(PRISON_MOVETIME/10)] seconds." + src.temp += "Shuttle sent.

OK" + src.updateUsrDialog() + prison_shuttle_moving_to_station = 1 + prison_shuttle_time = world.timeofday + PRISON_MOVETIME + spawn(0) + prison_process() + + else if (href_list["mainmenu"]) + src.temp = null + + src.add_fingerprint(usr) + src.updateUsrDialog() + return + + + proc/prison_can_move() + if(prison_shuttle_moving_to_station || prison_shuttle_moving_to_prison) return 0 + else return 1 + +/* + proc/prison_break() + switch(prison_break) + if (0) + if(!prison_shuttle_at_station || prison_shuttle_moving_to_prison) return + + prison_shuttle_moving_to_prison = 1 + prison_shuttle_at_station = prison_shuttle_at_station + + if (!prison_shuttle_moving_to_prison || !prison_shuttle_moving_to_station) + prison_shuttle_time = world.timeofday + PRISON_MOVETIME + spawn(0) + prison_process() + prison_break = 1 + if(1) + prison_break = 0 +*/ + + proc/post_signal(var/command) + var/datum/radio_frequency/frequency = radio_controller.return_frequency(1311) + if(!frequency) return + var/datum/signal/status_signal = new + status_signal.source = src + status_signal.transmission_method = 1 + status_signal.data["command"] = command + frequency.post_signal(src, status_signal) + return + + + proc/prison_process() + while(prison_shuttle_time - world.timeofday > 0) + var/ticksleft = prison_shuttle_time - world.timeofday + + if(ticksleft > 1e5) + prison_shuttle_time = world.timeofday + 10 // midnight rollover + + prison_shuttle_timeleft = (ticksleft / 10) + sleep(5) + prison_shuttle_moving_to_station = 0 + prison_shuttle_moving_to_prison = 0 + + switch(prison_shuttle_at_station) + + if(0) + prison_shuttle_at_station = 1 + if (prison_shuttle_moving_to_station || prison_shuttle_moving_to_prison) return + + if (!prison_can_move()) + usr << "\red The prison shuttle is unable to leave." + return + + var/area/start_location = locate(/area/shuttle/prison/prison) + var/area/end_location = locate(/area/shuttle/prison/station) + + var/list/dstturfs = list() + var/throwy = world.maxy + + for(var/turf/T in end_location) + dstturfs += T + if(T.y < throwy) + throwy = T.y + // hey you, get out of the way! + for(var/turf/T in dstturfs) + // find the turf to move things to + var/turf/D = locate(T.x, throwy - 1, 1) + //var/turf/E = get_step(D, SOUTH) + for(var/atom/movable/AM as mob|obj in T) + AM.Move(D) + if(istype(T, /turf/simulated)) + del(T) + start_location.move_contents_to(end_location) + + if(1) + prison_shuttle_at_station = 0 + if (prison_shuttle_moving_to_station || prison_shuttle_moving_to_prison) return + + if (!prison_can_move()) + usr << "\red The prison shuttle is unable to leave." + return + + var/area/start_location = locate(/area/shuttle/prison/station) + var/area/end_location = locate(/area/shuttle/prison/prison) + + var/list/dstturfs = list() + var/throwy = world.maxy + + for(var/turf/T in end_location) + dstturfs += T + if(T.y < throwy) + throwy = T.y + + // hey you, get out of the way! + for(var/turf/T in dstturfs) + // find the turf to move things to + var/turf/D = locate(T.x, throwy - 1, 1) + //var/turf/E = get_step(D, SOUTH) + for(var/atom/movable/AM as mob|obj in T) + AM.Move(D) + if(istype(T, /turf/simulated)) + del(T) + start_location.move_contents_to(end_location) + return \ No newline at end of file diff --git a/code/WorkInProgress/computer3/computers/robot.dm b/code/WorkInProgress/computer3/computers/robot.dm new file mode 100644 index 0000000000..e3eca9ace2 --- /dev/null +++ b/code/WorkInProgress/computer3/computers/robot.dm @@ -0,0 +1,211 @@ +/obj/machinery/computer3/robotics + default_prog = /datum/file/program/borg_control + spawn_parts = list(/obj/item/part/computer/storage/hdd,/obj/item/part/computer/networking/radio) + icon_state = "frame-rnd" + +/datum/file/program/borg_control + name = "Cyborg Control" + desc = "Used to remotely lockdown or detonate linked Cyborgs." + active_state = "robot" + var/id = 0.0 + var/temp = null + var/status = 0 + var/timeleft = 60 + var/stop = 0.0 + var/screen = 0 // 0 - Main Menu, 1 - Cyborg Status, 2 - Kill 'em All! -- In text + req_access = list(access_robotics) + + proc/start_sequence() + do + if(src.stop) + src.stop = 0 + return + src.timeleft-- + sleep(10) + while(src.timeleft) + + for(var/mob/living/silicon/robot/R in mob_list) + if(!R.scrambledcodes) + R.self_destruct() + return + + + interact() + if(!interactable() || computer.z > 6) + return + var/dat + if (src.temp) + dat = "[src.temp]

Clear Screen" + else + if(screen == 0) + //dat += "

Cyborg Control Console


" + dat += "1. Cyborg Status
" + dat += "2. Emergency Full Destruct
" + if(screen == 1) + for(var/mob/living/silicon/robot/R in mob_list) + if(istype(usr, /mob/living/silicon/ai)) + if (R.connected_ai != usr) + continue + if(istype(usr, /mob/living/silicon/robot)) + if (R != usr) + continue + if(R.scrambledcodes) + continue + + dat += "[R.name] |" + if(R.stat) + dat += " Not Responding |" + else if (!R.canmove) + dat += " Locked Down |" + else + dat += " Operating Normally |" + if (!R.canmove) + else if(R.cell) + dat += " Battery Installed ([R.cell.charge]/[R.cell.maxcharge]) |" + else + dat += " No Cell Installed |" + if(R.module) + dat += " Module Installed ([R.module.name]) |" + else + dat += " No Module Installed |" + if(R.connected_ai) + dat += " Slaved to [R.connected_ai.name] |" + else + dat += " Independent from AI |" + if (istype(usr, /mob/living/silicon)) + if(issilicon(usr) && is_special_character(usr) && !R.emagged) + dat += "(Hack) " + dat += "([R.canmove ? "Lockdown" : "Release"]) " + dat += "(Destroy)" + dat += "
" + dat += "(Return to Main Menu)
" + if(screen == 2) + if(!src.status) + dat += {"
Emergency Robot Self-Destruct
\nStatus: Off
+ \n
+ \nCountdown: [src.timeleft]/60 \[Reset\]
+ \n
+ \nStart Sequence
+ \n
+ \nClose"} + else + dat = {"Emergency Robot Self-Destruct
\nStatus: Activated
+ \n
+ \nCountdown: [src.timeleft]/60 \[Reset\]
+ \n
\nStop Sequence
+ \n
+ \nClose"} + dat += "(Return to Main Menu)
" + + popup.set_content(dat) + popup.open() + return + + Topic(var/href, var/list/href_list) + if(!interactable() || ..(href,href_list)) + return + + if ("killall" in href_list) + src.temp = {"Destroy Robots?
+
\[Swipe ID to initiate destruction sequence\]
+ Cancel"} + + if ("do_killall" in href_list) + var/obj/item/weapon/card/id/I = usr.get_active_hand() + if (istype(I, /obj/item/device/pda)) + var/obj/item/device/pda/pda = I + I = pda.id + if (istype(I)) + if(src.check_access(I)) + if (!status) + message_admins("\blue [key_name_admin(usr)] has initiated the global cyborg killswitch!") + log_game("\blue [key_name(usr)] has initiated the global cyborg killswitch!") + src.status = 1 + src.start_sequence() + src.temp = null + + else + usr << "\red Access Denied." + + if ("stop" in href_list) + src.temp = {" + Stop Robot Destruction Sequence?
+
Yes
+ No"} + + if ("stop2" in href_list) + src.stop = 1 + src.temp = null + src.status = 0 + + if ("reset" in href_list) + src.timeleft = 60 + + if ("temp" in href_list) + src.temp = null + if ("screen" in href_list) + switch(href_list["screen"]) + if("0") + screen = 0 + if("1") + screen = 1 + if("2") + screen = 2 + if ("killbot" in href_list) + if(computer.allowed(usr)) + var/mob/living/silicon/robot/R = locate(href_list["killbot"]) + if(R) + var/choice = input("Are you certain you wish to detonate [R.name]?") in list("Confirm", "Abort") + if(choice == "Confirm") + if(R && istype(R)) + if(R.mind && R.mind.special_role && R.emagged) + R << "Extreme danger. Termination codes detected. Scrambling security codes and automatic AI unlink triggered." + R.ResetSecurityCodes() + + else + message_admins("\blue [key_name_admin(usr)] detonated [R.name]!") + log_game("\blue [key_name_admin(usr)] detonated [R.name]!") + R.self_destruct() + else + usr << "\red Access Denied." + + if ("stopbot" in href_list) + if(computer.allowed(usr)) + var/mob/living/silicon/robot/R = locate(href_list["stopbot"]) + if(R && istype(R)) // Extra sancheck because of input var references + var/choice = input("Are you certain you wish to [R.canmove ? "lock down" : "release"] [R.name]?") in list("Confirm", "Abort") + if(choice == "Confirm") + if(R && istype(R)) + message_admins("\blue [key_name_admin(usr)] [R.canmove ? "locked down" : "released"] [R.name]!") + log_game("[key_name(usr)] [R.canmove ? "locked down" : "released"] [R.name]!") + R.canmove = !R.canmove + if (R.lockcharge) + // R.cell.charge = R.lockcharge + R.lockcharge = !R.lockcharge + R << "Your lockdown has been lifted!" + else + R.lockcharge = !R.lockcharge + // R.cell.charge = 0 + R << "You have been locked down!" + + else + usr << "\red Access Denied." + + if ("magbot" in href_list) + if(computer.allowed(usr)) + var/mob/living/silicon/robot/R = locate(href_list["magbot"]) + if(R) + var/choice = input("Are you certain you wish to hack [R.name]?") in list("Confirm", "Abort") + if(choice == "Confirm") + if(R && istype(R)) +// message_admins("\blue [key_name_admin(usr)] emagged [R.name] using robotic console!") + log_game("[key_name(usr)] emagged [R.name] using robotic console!") + R.emagged = 1 + if(R.mind.special_role) + R.verbs += /mob/living/silicon/robot/proc/ResetSecurityCodes + + interact() + return + + + diff --git a/code/WorkInProgress/computer3/computers/scanconsole.dm b/code/WorkInProgress/computer3/computers/scanconsole.dm new file mode 100644 index 0000000000..3092f51fb8 --- /dev/null +++ b/code/WorkInProgress/computer3/computers/scanconsole.dm @@ -0,0 +1,1274 @@ +/obj/machinery/computer3/scan_consolenew + default_prog = /datum/file/program/dnascanner + spawn_parts = list(/obj/item/part/computer/storage/hdd,/obj/item/part/computer/storage/removable,/obj/item/part/computer/networking/prox) + + +#define MAX_UIBLOCK 13 +#define MAX_SEBLOCK 14 + +/datum/file/program/dnascanner + name = "DNA Scanner and Manipulator" + desc = "The DNA ScaM is sure to change your life forever." + active_state = "dna" + var/obj/machinery/dna_scannernew/scanner = null + + var/ui_block = 1 + var/se_block = 1 + var/subblock = 1 + + var/uitarget = 1 + var/uitargethex = "1" + + var/radduration = 2 + var/radstrength = 1 + + var/injectorready = 0 //Quick fix for issue 286 (screwdriver the screen twice to restore injector) -Pete + + var/mode = 0 + // These keep track of the patient status + var/present = 0 + var/viable = 0 + + var/bufferlabel = "" + var/datum/dna/buffer = null + var/obj/item/part/computer/target_drive = null + + Reset() + ..() + mode = 0 + scanner = null + ui_block = 1 + se_block = 1 + subblock = 1 + buffer = null + bufferlabel = "" + + + Topic(var/href, var/list/href_list) + if(!interactable() || !computer.net || ..(href,href_list)) + return + + scanner = computer.net.connect_to(/obj/machinery/dna_scannernew, scanner) // if exists, will be verified + if(!scanner) + computer.Crash(NETWORK_FAILURE) + return + + // todo check everything goddamnit + present = scanner.occupant && scanner.occupant.dna + viable = present && !(NOCLONE in scanner.occupant.mutations) + + // current screen/function + if("mode" in href_list) + mode = text2num(href_list["mode"]) + // locks scanner door + if("lock" in href_list) + scanner.locked = !scanner.locked + + // inject good-juice + if("rejuv" in href_list) + rejuv() + + // expose to radiation, controlled otherwise + if("pulse" in href_list) + pulse(href_list["pulse"]) // ui, se, or nothing/null + + if("duration" in href_list) + var/modifier = text2num(href_list["duration"]) + radduration += modifier + if("strength" in href_list) + var/modifier = text2num(href_list["strength"]) + radstrength += modifier + + if("uiblock" in href_list) + ui_block = text2num(href_list["uiblock"]) + if("seblock" in href_list) + se_block = text2num(href_list["seblock"]) + if("subblock" in href_list) + subblock = text2num(href_list["subblock"]) + if("uitarget" in href_list) + uitarget = text2num(href_list["uitarget"]) + uitargethex = num2hex(uitarget) + + // save dna to buffer - buffer=se,ui,ue,all,clear + if("buffer" in href_list) + if(!viable) + return + var/which = href_list["buffer"] + if(!which || which == "clear") + buffer = null + else + if(!buffer) + buffer = new + if( which == "all" ) + buffer.unique_enzymes = scanner.occupant.dna.unique_enzymes + buffer.struc_enzymes = scanner.occupant.dna.struc_enzymes + buffer.uni_identity = scanner.occupant.dna.uni_identity + buffer.real_name = scanner.occupant.dna.real_name + buffer.mutantrace = scanner.occupant.dna.mutantrace + if( which == "se" ) + buffer.struc_enzymes = scanner.occupant.dna.struc_enzymes + buffer.mutantrace = scanner.occupant.dna.mutantrace + if( which == "ui" ) + buffer.uni_identity = scanner.occupant.dna.uni_identity + if( which == "ue" ) + buffer.uni_identity = scanner.occupant.dna.uni_identity + buffer.unique_enzymes = scanner.occupant.dna.unique_enzymes + buffer.real_name = scanner.occupant.dna.real_name + + // save buffer to file - + if("save" in href_list) + if(!viable || !buffer) + return + var/datum/file/data/genome/G = null + var/obj/item/part/computer/dest = device + if(target_drive) + dest = target_drive + + switch(href_list["save"]) + if("se") + if(buffer.struc_enzymes) + G = new /datum/file/data/genome/SE() + G.content = buffer.struc_enzymes + G:mutantrace = buffer.mutantrace // : not . due to inheritance + G.real_name = buffer.real_name + if("ui") + if(buffer.uni_identity) + G = new /datum/file/data/genome/UI() + G.content = buffer.uni_identity + G.real_name = buffer.real_name + if("ue") + if(buffer.uni_identity) + G = new /datum/file/data/genome/UI/UE() + G.content = buffer.uni_identity + G.real_name = buffer.real_name + if(G && dest) + var/label = input(usr, "Enter a filename:", "Save file", buffer.real_name) as text + G.name = G.name + "([label])" + dest:addfile(G) + + // load buffer from file + if("load" in href_list) + var/datum/file/data/genome/G = locate(href_list["load"]) + if(G) + if(!buffer) + buffer = new + switch(G.type) + if(/datum/file/data/genome/SE) + buffer.struc_enzymes = G.content + buffer.mutantrace = G:mutantrace + if(/datum/file/data/genome/UI/UE) + buffer.uni_identity = G.content + buffer.real_name = G.real_name + buffer.unique_enzymes = md5(buffer.real_name) + if(/datum/file/data/genome/UI) + buffer.uni_identity = G.content + if(/datum/file/data/genome/cloning) + var/datum/dna/record = G:record + buffer.unique_enzymes = record.unique_enzymes + buffer.struc_enzymes = record.struc_enzymes + buffer.uni_identity = record.uni_identity + buffer.real_name = record.real_name + buffer.mutantrace = record.mutantrace + + + // inject genetics into occupant + if("inject" in href_list) + if(!buffer || !viable) + return + + var/which = href_list["inject"] + var/datum/dna/target = scanner.occupant.dna + switch(which) + if("all",null) + if(buffer.struc_enzymes) + target.struc_enzymes = buffer.struc_enzymes + if(buffer.uni_identity) + target.uni_identity = buffer.uni_identity + if(buffer.real_name) + target.real_name = buffer.real_name + target.unique_enzymes = md5(target.real_name) + updateappearance(scanner.occupant,target.uni_identity) + domutcheck(scanner.occupant, scanner, 1) + + if(ishuman(scanner.occupant)) + target.mutantrace = buffer.mutantrace + scanner.occupant:update_mutantrace() + if("se") + if(buffer.struc_enzymes) + target.struc_enzymes = buffer.struc_enzymes + domutcheck(scanner.occupant, scanner, 1) + if(ishuman(scanner.occupant)) + target.mutantrace = buffer.mutantrace + scanner.occupant:update_mutantrace() + if("ui") + if(buffer.uni_identity) + target.uni_identity = buffer.uni_identity + updateappearance(scanner.occupant,target.uni_identity) + if("ue") + if(buffer.uni_identity) + target.uni_identity = buffer.uni_identity + if(buffer.real_name) + target.real_name = buffer.real_name + target.unique_enzymes = md5(target.real_name) + updateappearance(scanner.occupant,target.uni_identity) + + // generate dna injector + if("generate" in href_list) + if(!buffer || !injectorready) + return + buffer.check_integrity() + var/which = href_list["generate"] + var/obj/item/weapon/dnainjector/inj + switch(which) + if("se") + inj = new(computer.loc) + inj.dnatype = "se" + inj.dna = buffer.struc_enzymes + inj.mutantrace = buffer.mutantrace + inj.name = "Structural Enzymes" + if("ui") + inj = new(computer.loc) + inj.dnatype = "ui" + inj.dna = buffer.uni_identity + inj.ue = null + inj.name = "Unique Identifiers" + if("ue") + inj = new(computer.loc) + inj.dnatype = "ui" + inj.dna = buffer.uni_identity + inj.ue = buffer.real_name + inj.name = "Unique Enzymes + Unique Identifiers" + if(inj) + injectorready = 0 + spawn(300) + injectorready = 1 + var/label = input(usr, "Enter a label", "Label [inj.name] Injector", buffer.real_name) as null|text + if(label && inj) // it's possible it was deleted before we get here, input suspends execution + inj.name += " ([label])" + + interact() + return // putting this in there to visually mark the end of topic() while I do other things + + proc/menu() + if(!present && (mode==1 || mode==2)) // require viable occupant + mode = 0 + switch(mode) + if(0) // MAIN MENU + return main_menu() + + if(1) + return ui_menu() + if(2) + return se_menu() + + if(3) + return emitter_menu() + + if(4) + return buffer_menu() + + // unified header with health data + // option to show UI,UE,SE as plaintext + proc/status_display(var/dna_summary = 0) + var/mob/living/occupant = scanner.occupant + var/status_html + if(viable) + status_html = "
Health:
[occupant.health]%
" + status_html += "
Radiation Level:
[occupant.radiation]%
" + if(ishuman(occupant)) + var/rejuvenators = round(occupant.reagents.get_reagent_amount("inaprovaline") / REJUVENATORS_MAX * 100) + status_html += "
Rejuvenators:
[occupant.reagents.get_reagent_amount("inaprovaline")] units
" + + if (dna_summary) + status_html += "
Unique Enzymes :
[uppertext(occupant.dna.unique_enzymes)]
" + status_html += "
Unique Identifier:
[occupant.dna.uni_identity]
" + status_html += "
Structural Enzymes:
[occupant.dna.struc_enzymes]
" + + var/occupant_status = "Scanner Unoccupied" + if(present) + if(!viable) + occupant_status = "Invalid DNA structure" + else + switch(occupant.stat) // obvious, see what their status is + if(0) + occupant_status = "Conscious" + if(1) + occupant_status = "Unconscious" + else + occupant_status = "DEAD" + + occupant_status = "[occupant.name] => [occupant_status]
" + var/dat = "

Scanner Status

[topic_link(src,"","Scan")]
[occupant_status][status_html]
" + if(present) + dat += topic_link(src,"lock",scanner.locked?"Unlock Scanner":"Lock Scanner") + " " + topic_link(src,"rejuv","Inject Rejuvenators") + else + dat += "[scanner.locked?"Unlock Scanner":"Lock Scanner"] Inject Rejuvenators" + return dat + + proc/main_menu() + var/dat = status_display(dna_summary = 1) + dat += "

Main Menu

" + if(present) + dat += topic_link(src,"mode=1","Modify Unique Identifier") + "
" + topic_link(src,"mode=2","Modify Structural Enzymes") + "

" + else + dat += "Modify Unique Identifier
Modify Structural Enzymes

" + dat += topic_link(src,"mode=3","Radiation Emitter Settings") + "

" + topic_link(src,"mode=4","Transfer Buffer") + return dat + + + proc/block_plus_minus(var/topicstr, var/blockval,var/min,var/max) + var/left = blockval - 1 + var/right = blockval + 1 + if(left < min) + left = max + if(right > max) + right = min + return topic_link(src,"[topicstr]=[left]","<-") + " [blockval] " + topic_link(src,"[topicstr]=[right]","->") + + + proc/getblockstring(var/ui = 0) + var/mainblock = "seblock" + var/block = se_block + var/input = scanner.occupant.dna.struc_enzymes + if(ui) + mainblock = "uiblock" + block = ui_block + input = scanner.occupant.dna.uni_identity + + var/string = "
" + var/subpos = 1 // keeps track of the current sub block + var/blockpos = 1 + + for(var/i = 1, i <= length(input), i++) // loop through each letter + + if(blockpos == block && subpos == subblock) // if the current block/subblock is selected, mark it + string += fake_link(copytext(input,i,i+1)) + else + string += topic_link(src,"[mainblock]=[blockpos];subblock=[subpos]",copytext(input,i,i+1)) + + subpos++ + if(subpos > 3) // add a line break for every block + string += "
" + subpos = 1 + blockpos++ + + string += "
" + return string + + proc/ui_menu() + if(!viable) + return "No viable occupant detected." + var/dat = topic_link(src,"mode=0","<< Main Menu") + "
" + dat += "

Modify Unique Identifier

" + dat += "
Unique Identifier:
[getblockstring(ui=1)]

" + + dat += "Selected Block: " + block_plus_minus("uiblock",ui_block,1,MAX_UIBLOCK) + "

" + dat += "Selected Sub-Block: " + block_plus_minus("subblock",subblock,1,3) + "

" + dat += "Selected Target: " + block_plus_minus("uitarget",uitarget,0,15) + "

" + dat += "Modify Block
" + dat += topic_link(src,"pulse=ui","Irradiate") + "
" + return dat + + proc/se_menu() + if(!viable) + return "No viable occupant detected." + var/dat = topic_link(src,"mode=0","<< Main Menu") + "
" + dat += "

Modify Structural Enzymes

" + dat += "
Structural Enzymes: [getblockstring(ui=0)]

" + dat += "Selected Block: " + block_plus_minus("seblock",se_block,1,MAX_SEBLOCK) + "

" + dat += "Selected Sub-Block: " + block_plus_minus("subblock",subblock,1,3) + "

" + dat += "Modify Block
" + dat += topic_link(src,"pulse=se","Irradiate") + "
" + return dat + + proc/emitter_menu() + var/dat = topic_link(src,"mode=0","<< Main Menu") + "
" + dat += "

Radiation Emitter Settings

" + if (viable) + dat += topic_link(src,"pulse","Pulse Radiation") + else + dat += fake_link("Pulse Radiation") + dat += "

" + dat += "Radiation Duration: " + block_plus_minus("duration",radduration,1,20) + "
" + dat += "Radiation Intensity: " + block_plus_minus("strength",radstrength,1,10) + "

" + return dat + + proc/buffer_menu() + + interact() + if(!interactable()) + return + popup.add_stylesheet("scannernew", 'html/browser/scannernew.css') + + if(!computer.net) + computer.Crash(MISSING_PERIPHERAL) + return + + scanner = computer.net.connect_to(/obj/machinery/dna_scannernew, scanner) // if exists, will be verified + if(!scanner) + computer.Crash(NETWORK_FAILURE) + return + + // todo check everything goddamnit + + present = scanner.occupant && scanner.occupant.dna + viable = present && !(NOCLONE in scanner.occupant.mutations) + + popup.set_content(menu()) + popup.open() + + proc/pulse(var/target as null|anything in list("ui","se")) + + //Makes sure someone is in there (And valid) before trying anything + //More than anything, this just acts as a sanity check in case the option DOES appear for whatever reason + + if(target != "ui" && target != "se") + target = null + + // transforms into the fail condition instead of having it in yet another nested if block + else if( prob(20 - (radduration / 2))) + target += "-f" + + if(!viable) + popup.set_content("No viable occupant detected.") + popup.open() + else + popup.set_content("Working ... Please wait ([radduration]) Seconds)") + popup.open() + + var/lock_state = scanner.locked + scanner.locked = 1//lock it + sleep(10*radduration) + + switch(target) + if("ui") + var/ui = scanner.occupant.dna.uni_identity + var/block = getblock(ui,ui_block,3) + var/result = "" + for(var/sb = 1; sb <=3; sb++) + var/temp = copytext(block,sb,sb+1) + if(sb == subblock) + temp = miniscramble("[uitargethex]",radstrength,radduration) + result += temp + scanner.occupant.dna.uni_identity = setblock(ui, ui_block, result,3) + updateappearance(scanner.occupant,scanner.occupant.dna.uni_identity) + scanner.occupant.radiation += (radstrength+radduration) + if("ui-f") + if (prob(20+radstrength)) + randmutb(scanner.occupant) + domutcheck(scanner.occupant,scanner) + else + randmuti(scanner.occupant) + updateappearance(scanner.occupant,scanner.occupant.dna.uni_identity) + scanner.occupant.radiation += ((radstrength*2)+radduration) + + if("se") + var/se = scanner.occupant.dna.struc_enzymes + var/targetblock = se_block + + if (!(se_block in list(2,8,10,12)) && prob (20)) // shifts the target slightly + if (se_block <= 5) + targetblock++ + else + targetblock-- + var/block = getblock(scanner.occupant.dna.struc_enzymes,targetblock,3) + + var/result = "" + for(var/sb = 1; sb <=3; sb++) + var/temp = copytext(block,sb,sb+1) + if(sb == subblock) + temp = miniscramble(temp,radstrength,radduration) + result += temp + + scanner.occupant.dna.struc_enzymes = setblock(se, se_block, result,3) + domutcheck(scanner.occupant,scanner) + scanner.occupant.radiation += (radstrength+radduration) + if("se-f") + if (prob(80-radduration)) + randmutb(scanner.occupant) + domutcheck(scanner.occupant,scanner) + else + randmuti(scanner.occupant) + updateappearance(scanner.occupant,scanner.occupant.dna.uni_identity) + scanner.occupant.radiation += ((radstrength*2)+radduration) + + if(null) + if (prob(95)) + if(prob(75)) + randmutb(scanner.occupant) + else + randmuti(scanner.occupant) + else + if(prob(95)) + randmutg(scanner.occupant) + else + randmuti(scanner.occupant) + scanner.occupant.radiation += ((radstrength*3)+radduration*3) + + + scanner.locked = lock_state + interact() + + proc/rejuv() + if(!viable) + popup.set_content("No viable occupant detected.") + popup.open() + var/mob/living/carbon/human/H = scanner.occupant + if(istype(H)) + var/inap = H.reagents.get_reagent_amount("inaprovaline") // oh my *god* this section was ugly before I shortened it + + if (inap < (REJUVENATORS_MAX - REJUVENATORS_INJECT)) + H.reagents.add_reagent("inaprovaline", REJUVENATORS_INJECT) + else + H.reagents.add_reagent("inaprovaline", max(REJUVENATORS_MAX - inap,0)) + +/* +/obj/machinery/computer/scan_consolenew/Topic(href, href_list) + + temp_html = null + var/temp_header_html = null + var/temp_footer_html = null + + scanner_status_html = null // Scanner status is reset each update + var/mob/living/occupant = scanner.occupant + var/viable_occupant = (occupant && occupant.dna && !(NOCLONE in occupant.mutations)) + var/mob/living/carbon/human/human_occupant = scanner.occupant + + if (href_list["screen"]) // Passing a screen is only a request, we set current_screen here but it can be overridden below if necessary + current_screen = href_list["screen"] + + if (!viable_occupant) // If there is no viable occupant only allow certain screens + var/allowed_no_occupant_screens = list("mainmenu", "radsetmenu", "buffermenu") //These are the screens which will be allowed if there's no occupant + if (!(current_screen in allowed_no_occupant_screens)) + href_list = new /list(0) // clear list of options + current_screen = "mainmenu" + + + if (!current_screen) // If no screen is set default to mainmenu + current_screen = "mainmenu" + + + if (!scanner) //Is the scanner not connected? + scanner_status_html = "ERROR: No DNA Scanner connected." + current_screen = null // blank does not exist in the switch below, so no screen will be outputted + updateUsrDialog() + return + + usr.set_machine(src) + if (href_list["locked"]) + if (scanner.occupant) + scanner.locked = !( scanner.locked ) + //////////////////////////////////////////////////////// + if (href_list["genpulse"]) + if(!viable_occupant)//Makes sure someone is in there (And valid) before trying anything + temp_html = text("No viable occupant detected.")//More than anything, this just acts as a sanity check in case the option DOES appear for whatever reason + //usr << browse(temp_html, "window=scannernew;size=550x650") + //onclose(usr, "scannernew") + popup.set_content(temp_html) + popup.open() + else + + temp_html = text("Working ... Please wait ([] Seconds)", radduration) + popup.set_content(temp_html) + popup.open() + var/lock_state = scanner.locked + scanner.locked = 1//lock it + sleep(10*radduration) + if (!scanner.occupant) + temp_html = null + return null + if (prob(95)) + if(prob(75)) + randmutb(scanner.occupant) + else + randmuti(scanner.occupant) + else + if(prob(95)) + randmutg(scanner.occupant) + else + randmuti(scanner.occupant) + scanner.occupant.radiation += ((radstrength*3)+radduration*3) + scanner.locked = lock_state + temp_html = null + dopage(src,"screen=radsetmenu") + if (href_list["radleplus"]) + if(!viable_occupant) + temp_html = text("No viable occupant detected.") + popup.set_content(temp_html) + popup.open() + if (radduration < 20) + radduration++ + radduration++ + dopage(src,"screen=radsetmenu") + if (href_list["radleminus"]) + if(!viable_occupant) + temp_html = text("No viable occupant detected.") + popup.set_content(temp_html) + popup.open() + if (radduration > 2) + radduration-- + radduration-- + dopage(src,"screen=radsetmenu") + if (href_list["radinplus"]) + if (radstrength < 10) + radstrength++ + dopage(src,"screen=radsetmenu") + if (href_list["radinminus"]) + if (radstrength > 1) + radstrength-- + dopage(src,"screen=radsetmenu") + //////////////////////////////////////////////////////// + if (href_list["unimenuplus"]) + if (ui_block < 13) + ui_block++ + else + ui_block = 1 + dopage(src,"screen=unimenu") + if (href_list["unimenuminus"]) + if (ui_block > 1) + ui_block-- + else + ui_block = 13 + dopage(src,"screen=unimenu") + if (href_list["unimenusubplus"]) + if (subblock < 3) + subblock++ + else + subblock = 1 + dopage(src,"screen=unimenu") + if (href_list["unimenusubminus"]) + if (subblock > 1) + subblock-- + else + subblock = 3 + dopage(src,"screen=unimenu") + if (href_list["unimenutargetplus"]) + if (unitarget < 15) + unitarget++ + unitargethex = unitarget + switch(unitarget) + if(10) + unitargethex = "A" + if(11) + unitargethex = "B" + if(12) + unitargethex = "C" + if(13) + unitargethex = "D" + if(14) + unitargethex = "E" + if(15) + unitargethex = "F" + else + unitarget = 0 + unitargethex = 0 + dopage(src,"screen=unimenu") + if (href_list["unimenutargetminus"]) + if (unitarget > 0) + unitarget-- + unitargethex = unitarget + switch(unitarget) + if(10) + unitargethex = "A" + if(11) + unitargethex = "B" + if(12) + unitargethex = "C" + if(13) + unitargethex = "D" + if(14) + unitargethex = "E" + else + unitarget = 15 + unitargethex = "F" + dopage(src,"screen=unimenu") + if (href_list["uimenuset"] && href_list["uimenusubset"]) // This chunk of code updates selected block / sub-block based on click + var/menuset = text2num(href_list["uimenuset"]) + var/menusubset = text2num(href_list["uimenusubset"]) + if ((menuset <= 13) && (menuset >= 1)) + ui_block = menuset + if ((menusubset <= 3) && (menusubset >= 1)) + subblock = menusubset + dopage(src, "unimenu") + if (href_list["unipulse"]) + if(scanner.occupant) + var/block + var/newblock + var/tstructure2 + block = getblock(getblock(scanner.occupant.dna.uni_identity,ui_block,3),subblock,1) + + temp_html = text("Working ... Please wait ([] Seconds)", radduration) + popup.set_content(temp_html) + popup.open() + var/lock_state = scanner.locked + scanner.locked = 1//lock it + sleep(10*radduration) + if (!scanner.occupant) + temp_html = null + return null + /// + if (prob((80 + (radduration / 2)))) + block = miniscrambletarget(num2text(unitarget), radstrength, radduration) + newblock = null + if (subblock == 1) newblock = block + getblock(getblock(scanner.occupant.dna.uni_identity,ui_block,3),2,1) + getblock(getblock(scanner.occupant.dna.uni_identity,ui_block,3),3,1) + if (subblock == 2) newblock = getblock(getblock(scanner.occupant.dna.uni_identity,ui_block,3),1,1) + block + getblock(getblock(scanner.occupant.dna.uni_identity,ui_block,3),3,1) + if (subblock == 3) newblock = getblock(getblock(scanner.occupant.dna.uni_identity,ui_block,3),1,1) + getblock(getblock(scanner.occupant.dna.uni_identity,ui_block,3),2,1) + block + tstructure2 = setblock(scanner.occupant.dna.uni_identity, ui_block, newblock,3) + scanner.occupant.dna.uni_identity = tstructure2 + updateappearance(scanner.occupant,scanner.occupant.dna.uni_identity) + scanner.occupant.radiation += (radstrength+radduration) + else + if (prob(20+radstrength)) + randmutb(scanner.occupant) + domutcheck(scanner.occupant,scanner) + else + randmuti(scanner.occupant) + updateappearance(scanner.occupant,scanner.occupant.dna.uni_identity) + scanner.occupant.radiation += ((radstrength*2)+radduration) + scanner.locked = lock_state + dopage(src,"screen=unimenu") + + //////////////////////////////////////////////////////// + if (href_list["rejuv"]) + if(!viable_occupant) + temp_html = text("No viable occupant detected.") + popup.set_content(temp_html) + popup.open() + else + if(human_occupant) + if (human_occupant.reagents.get_reagent_amount("inaprovaline") < REJUVENATORS_MAX) + if (human_occupant.reagents.get_reagent_amount("inaprovaline") < (REJUVENATORS_MAX - REJUVENATORS_INJECT)) + human_occupant.reagents.add_reagent("inaprovaline", REJUVENATORS_INJECT) + else + human_occupant.reagents.add_reagent("inaprovaline", round(REJUVENATORS_MAX - human_occupant.reagents.get_reagent_amount("inaprovaline"))) + //usr << text("Occupant now has [] units of rejuvenation in his/her bloodstream.", human_occupant.reagents.get_reagent_amount("inaprovaline")) + + //////////////////////////////////////////////////////// + if (href_list["strucmenuplus"]) + if (se_block < 14) + se_block++ + else + se_block = 1 + dopage(src,"screen=strucmenu") + if (href_list["strucmenuminus"]) + if (se_block > 1) + se_block-- + else + se_block = 14 + dopage(src,"screen=strucmenu") + if (href_list["strucmenusubplus"]) + if (subblock < 3) + subblock++ + else + subblock = 1 + dopage(src,"screen=strucmenu") + if (href_list["strucmenusubminus"]) + if (subblock > 1) + subblock-- + else + subblock = 3 + dopage(src,"screen=strucmenu") + if (href_list["semenuset"] && href_list["semenusubset"]) // This chunk of code updates selected block / sub-block based on click (se stands for strutural enzymes) + var/menuset = text2num(href_list["semenuset"]) + var/menusubset = text2num(href_list["semenusubset"]) + if ((menuset <= 14) && (menuset >= 1)) + se_block = menuset + if ((menusubset <= 3) && (menusubset >= 1)) + subblock = menusubset + dopage(src, "strucmenu") + if (href_list["strucpulse"]) + var/block + var/newblock + var/tstructure2 + var/oldblock + var/lock_state = scanner.locked + scanner.locked = 1//lock it + if (viable_occupant) + block = getblock(getblock(scanner.occupant.dna.struc_enzymes,se_block,3),subblock,1) + + temp_html = text("Working ... Please wait ([] Seconds)", radduration) + popup.set_content(temp_html) + popup.open() + sleep(10*radduration) + else + temp_html = null + return null + /// + if(viable_occupant) + if (prob((80 + (radduration / 2)))) + if ((se_block != 2 || se_block != 12 || se_block != 8 || se_block || 10) && prob (20)) + oldblock = se_block + block = miniscramble(block, radstrength, radduration) + newblock = null + if (se_block > 1 && se_block < 5) + se_block++ + else if (se_block > 5 && se_block < 14) + se_block-- + if (subblock == 1) newblock = block + getblock(getblock(scanner.occupant.dna.struc_enzymes,se_block,3),2,1) + getblock(getblock(scanner.occupant.dna.struc_enzymes,se_block,3),3,1) + if (subblock == 2) newblock = getblock(getblock(scanner.occupant.dna.struc_enzymes,se_block,3),1,1) + block + getblock(getblock(scanner.occupant.dna.struc_enzymes,se_block,3),3,1) + if (subblock == 3) newblock = getblock(getblock(scanner.occupant.dna.struc_enzymes,se_block,3),1,1) + getblock(getblock(scanner.occupant.dna.struc_enzymes,se_block,3),2,1) + block + tstructure2 = setblock(scanner.occupant.dna.struc_enzymes, se_block, newblock,3) + scanner.occupant.dna.struc_enzymes = tstructure2 + domutcheck(scanner.occupant,scanner) + scanner.occupant.radiation += (radstrength+radduration) + se_block = oldblock + else + // + block = miniscramble(block, radstrength, radduration) + newblock = null + if (subblock == 1) newblock = block + getblock(getblock(scanner.occupant.dna.struc_enzymes,se_block,3),2,1) + getblock(getblock(scanner.occupant.dna.struc_enzymes,se_block,3),3,1) + if (subblock == 2) newblock = getblock(getblock(scanner.occupant.dna.struc_enzymes,se_block,3),1,1) + block + getblock(getblock(scanner.occupant.dna.struc_enzymes,se_block,3),3,1) + if (subblock == 3) newblock = getblock(getblock(scanner.occupant.dna.struc_enzymes,se_block,3),1,1) + getblock(getblock(scanner.occupant.dna.struc_enzymes,se_block,3),2,1) + block + tstructure2 = setblock(scanner.occupant.dna.struc_enzymes, se_block, newblock,3) + scanner.occupant.dna.struc_enzymes = tstructure2 + domutcheck(scanner.occupant,scanner) + scanner.occupant.radiation += (radstrength+radduration) + else + if (prob(80-radduration)) + randmutb(scanner.occupant) + domutcheck(scanner.occupant,scanner) + else + randmuti(scanner.occupant) + updateappearance(scanner.occupant,scanner.occupant.dna.uni_identity) + scanner.occupant.radiation += ((radstrength*2)+radduration) + scanner.locked = lock_state + /// + dopage(src,"screen=strucmenu") + + //////////////////////////////////////////////////////// + if (href_list["b1addui"]) + if(scanner.occupant && scanner.occupant.dna) + buffer1iue = 0 + buffer1 = scanner.occupant.dna.uni_identity + if (!istype(scanner.occupant,/mob/living/carbon/human)) + buffer1owner = scanner.occupant.name + else + buffer1owner = scanner.occupant.real_name + buffer1label = "Unique Identifier" + buffer1type = "ui" + dopage(src,"screen=buffermenu") + if (href_list["b1adduiue"]) + if(scanner.occupant && scanner.occupant.dna) + buffer1 = scanner.occupant.dna.uni_identity + if (!istype(scanner.occupant,/mob/living/carbon/human)) + buffer1owner = scanner.occupant.name + else + buffer1owner = scanner.occupant.real_name + buffer1label = "Unique Identifier & Unique Enzymes" + buffer1type = "ui" + buffer1iue = 1 + dopage(src,"screen=buffermenu") + if (href_list["b2adduiue"]) + if(scanner.occupant && scanner.occupant.dna) + buffer2 = scanner.occupant.dna.uni_identity + if (!istype(scanner.occupant,/mob/living/carbon/human)) + buffer2owner = scanner.occupant.name + else + buffer2owner = scanner.occupant.real_name + buffer2label = "Unique Identifier & Unique Enzymes" + buffer2type = "ui" + buffer2iue = 1 + dopage(src,"screen=buffermenu") + if (href_list["b3adduiue"]) + if(scanner.occupant && scanner.occupant.dna) + buffer3 = scanner.occupant.dna.uni_identity + if (!istype(scanner.occupant,/mob/living/carbon/human)) + buffer3owner = scanner.occupant.name + else + buffer3owner = scanner.occupant.real_name + buffer3label = "Unique Identifier & Unique Enzymes" + buffer3type = "ui" + buffer3iue = 1 + dopage(src,"screen=buffermenu") + if (href_list["b2addui"]) + if(scanner.occupant && scanner.occupant.dna) + buffer2iue = 0 + buffer2 = scanner.occupant.dna.uni_identity + if (!istype(scanner.occupant,/mob/living/carbon/human)) + buffer2owner = scanner.occupant.name + else + buffer2owner = scanner.occupant.real_name + buffer2label = "Unique Identifier" + buffer2type = "ui" + dopage(src,"screen=buffermenu") + if (href_list["b3addui"]) + if(scanner.occupant && scanner.occupant.dna) + buffer3iue = 0 + buffer3 = scanner.occupant.dna.uni_identity + if (!istype(scanner.occupant,/mob/living/carbon/human)) + buffer3owner = scanner.occupant.name + else + buffer3owner = scanner.occupant.real_name + buffer3label = "Unique Identifier" + buffer3type = "ui" + dopage(src,"screen=buffermenu") + if (href_list["b1addse"]) + if(scanner.occupant && scanner.occupant.dna) + buffer1iue = 0 + buffer1 = scanner.occupant.dna.struc_enzymes + if (!istype(scanner.occupant,/mob/living/carbon/human)) + buffer1owner = scanner.occupant.name + else + buffer1owner = scanner.occupant.real_name + buffer1label = "Structural Enzymes" + buffer1type = "se" + dopage(src,"screen=buffermenu") + if (href_list["b2addse"]) + if(scanner.occupant && scanner.occupant.dna) + buffer2iue = 0 + buffer2 = scanner.occupant.dna.struc_enzymes + if (!istype(scanner.occupant,/mob/living/carbon/human)) + buffer2owner = scanner.occupant.name + else + buffer2owner = scanner.occupant.real_name + buffer2label = "Structural Enzymes" + buffer2type = "se" + dopage(src,"screen=buffermenu") + if (href_list["b3addse"]) + if(scanner.occupant && scanner.occupant.dna) + buffer3iue = 0 + buffer3 = scanner.occupant.dna.struc_enzymes + if (!istype(scanner.occupant,/mob/living/carbon/human)) + buffer3owner = scanner.occupant.name + else + buffer3owner = scanner.occupant.real_name + buffer3label = "Structural Enzymes" + buffer3type = "se" + dopage(src,"screen=buffermenu") + if (href_list["b1clear"]) + buffer1 = null + buffer1owner = null + buffer1label = null + buffer1iue = null + dopage(src,"screen=buffermenu") + if (href_list["b2clear"]) + buffer2 = null + buffer2owner = null + buffer2label = null + buffer2iue = null + dopage(src,"screen=buffermenu") + if (href_list["b3clear"]) + buffer3 = null + buffer3owner = null + buffer3label = null + buffer3iue = null + dopage(src,"screen=buffermenu") + if (href_list["b1label"]) + buffer1label = sanitize(input("New Label:","Edit Label","Infos here")) + dopage(src,"screen=buffermenu") + if (href_list["b2label"]) + buffer2label = sanitize(input("New Label:","Edit Label","Infos here")) + dopage(src,"screen=buffermenu") + if (href_list["b3label"]) + buffer3label = sanitize(input("New Label:","Edit Label","Infos here")) + dopage(src,"screen=buffermenu") + if (href_list["b1transfer"]) + if (!scanner.occupant || (NOCLONE in scanner.occupant.mutations) || !scanner.occupant.dna) + return + if (buffer1type == "ui") + if (buffer1iue) + scanner.occupant.real_name = buffer1owner + scanner.occupant.name = buffer1owner + scanner.occupant.dna.uni_identity = buffer1 + updateappearance(scanner.occupant,scanner.occupant.dna.uni_identity) + else if (buffer1type == "se") + scanner.occupant.dna.struc_enzymes = buffer1 + domutcheck(scanner.occupant,scanner) + temp_html = "Transfered." + scanner.occupant.radiation += rand(20,50) + + if (href_list["b2transfer"]) + if (!scanner.occupant || (NOCLONE in scanner.occupant.mutations) || !scanner.occupant.dna) + return + if (buffer2type == "ui") + if (buffer2iue) + scanner.occupant.real_name = buffer2owner + scanner.occupant.name = buffer2owner + scanner.occupant.dna.uni_identity = buffer2 + updateappearance(scanner.occupant,scanner.occupant.dna.uni_identity) + else if (buffer2type == "se") + scanner.occupant.dna.struc_enzymes = buffer2 + domutcheck(scanner.occupant,scanner) + temp_html = "Transfered." + scanner.occupant.radiation += rand(20,50) + + if (href_list["b3transfer"]) + if (!scanner.occupant || (NOCLONE in scanner.occupant.mutations) || !scanner.occupant.dna) + return + if (buffer3type == "ui") + if (buffer3iue) + scanner.occupant.real_name = buffer3owner + scanner.occupant.name = buffer3owner + scanner.occupant.dna.uni_identity = buffer3 + updateappearance(scanner.occupant,scanner.occupant.dna.uni_identity) + else if (buffer3type == "se") + scanner.occupant.dna.struc_enzymes = buffer3 + domutcheck(scanner.occupant,scanner) + temp_html = "Transfered." + scanner.occupant.radiation += rand(20,50) + + if (href_list["b1injector"]) + if (injectorready) + var/obj/item/tool/medical/dnainjector/I = new /obj/item/tool/medical/dnainjector + I.dna = buffer1 + I.dnatype = buffer1type + I.loc = loc + I.name += " ([buffer1label])" + if (buffer1iue) I.ue = buffer1owner //lazy haw haw + temp_html = "Injector created." + + injectorready = 0 + spawn(300) + injectorready = 1 + else + temp_html = "Replicator not ready yet." + + if (href_list["b2injector"]) + if (injectorready) + var/obj/item/tool/medical/dnainjector/I = new /obj/item/tool/medical/dnainjector + I.dna = buffer2 + I.dnatype = buffer2type + I.loc = loc + I.name += " ([buffer2label])" + if (buffer2iue) I.ue = buffer2owner //lazy haw haw + temp_html = "Injector created." + + injectorready = 0 + spawn(300) + injectorready = 1 + else + temp_html = "Replicator not ready yet." + + if (href_list["b3injector"]) + if (injectorready) + var/obj/item/tool/medical/dnainjector/I = new /obj/item/tool/medical/dnainjector + I.dna = buffer3 + I.dnatype = buffer3type + I.loc = loc + I.name += " ([buffer3label])" + if (buffer3iue) I.ue = buffer3owner //lazy haw haw + temp_html = "Injector created." + + injectorready = 0 + spawn(300) + injectorready = 1 + else + temp_html = "Replicator not ready yet." + + //////////////////////////////////////////////////////// + if (href_list["load_disk"]) + var/buffernum = text2num(href_list["load_disk"]) + if ((buffernum > 3) || (buffernum < 1)) + return + if ((isnull(diskette)) || (!diskette.data) || (diskette.data == "")) + return + switch(buffernum) + if(1) + buffer1 = diskette.data + buffer1type = diskette.data_type + buffer1iue = diskette.ue + buffer1owner = diskette.owner + if(2) + buffer2 = diskette.data + buffer2type = diskette.data_type + buffer2iue = diskette.ue + buffer2owner = diskette.owner + if(3) + buffer3 = diskette.data + buffer3type = diskette.data_type + buffer3iue = diskette.ue + buffer3owner = diskette.owner + temp_html = "Data loaded." + + if (href_list["save_disk"]) + var/buffernum = text2num(href_list["save_disk"]) + if ((buffernum > 3) || (buffernum < 1)) + return + if ((isnull(diskette)) || (diskette.read_only)) + return + switch(buffernum) + if(1) + diskette.data = buffer1 + diskette.data_type = buffer1type + diskette.ue = buffer1iue + diskette.owner = buffer1owner + diskette.name = "data disk - '[buffer1owner]'" + if(2) + diskette.data = buffer2 + diskette.data_type = buffer2type + diskette.ue = buffer2iue + diskette.owner = buffer2owner + diskette.name = "data disk - '[buffer2owner]'" + if(3) + diskette.data = buffer3 + diskette.data_type = buffer3type + diskette.ue = buffer3iue + diskette.owner = buffer3owner + diskette.name = "data disk - '[buffer3owner]'" + temp_html = "Data saved." + if (href_list["eject_disk"]) + if (!diskette) + return + diskette.loc = get_turf(src) + diskette = null + //////////////////////////////////////////////////////// + + temp_html = temp_header_html + switch(current_screen) + if ("mainmenu") + temp_html += "

Main Menu

" + if (viable_occupant) //is there REALLY someone in there who can be modified? + temp_html += text("Modify Unique Identifier
", src) + temp_html += text("Modify Structural Enzymes

", src) + else + temp_html += "Modify Unique Identifier
" + temp_html += "Modify Structural Enzymes

" + temp_html += text("Radiation Emitter Settings

", src) + temp_html += text("Transfer Buffer

", src) + + if ("unimenu") + if(!viable_occupant) + temp_html = text("No viable occupant detected.") + popup.set_content(temp_html) + popup.open() + else + temp_html = "<< Main Menu
" + temp_html += "

Modify Unique Identifier

" + temp_html += "
Unique Identifier:
[getblockstring(scanner.occupant.dna.uni_identity,ui_block,subblock,3, src,1)]

" + temp_html += "Selected Block: <- [ui_block] ->

" + temp_html += "Selected Sub-Block: <- [subblock] ->

" + temp_html += "Selected Target: <- [unitargethex] ->

" + temp_html += "Modify Block
" + temp_html += "Irradiate
" + + if ("strucmenu") + if(!viable_occupant) + temp_html = text("No viable occupant detected.") + popup.set_content(temp_html) + popup.open() + else + temp_html = "<< Main Menu
" + temp_html += "

Modify Structural Enzymes

" + temp_html += "
Structural Enzymes: [getblockstring(scanner.occupant.dna.struc_enzymes,se_block,subblock,3,src,0)]

" + temp_html += "Selected Block: <- [se_block] ->

" + temp_html += "Selected Sub-Block: <- [subblock] ->

" + temp_html += "Modify Block
" + temp_html += "Irradiate
" + + if ("radsetmenu") + temp_html = "<< Main Menu
" + temp_html += "

Radiation Emitter Settings

" + if (viable_occupant) + temp_html += text("Pulse Radiation", src) + else + temp_html += "Pulse Radiation" + temp_html += "

Radiation Duration: - [radduration] +
" + temp_html += "Radiation Intensity: - [radstrength] +

" + + if ("buffermenu") + temp_html = "<< Main Menu
" + temp_html += "

Transfer Buffer

" + temp_html += "

Buffer 1:

" + if (!(buffer1)) + temp_html += "Buffer Empty
" + else + temp_html += text("Data: []
", buffer1) + temp_html += text("By: []
", buffer1owner) + temp_html += text("Label: []
", buffer1label) + if (viable_occupant) temp_html += text("Save : UI - UI+UE - SE
", src, src, src) + if (buffer1) temp_html += text("Transfer to: Occupant - Injector
", src, src) + //if (buffer1) temp_html += text("Isolate Block
", src) + if (buffer1) temp_html += "Disk: Save To | Load From
" + if (buffer1) temp_html += text("Edit Label
", src) + if (buffer1) temp_html += text("Clear Buffer

", src) + if (!buffer1) temp_html += "
" + temp_html += "

Buffer 2:

" + if (!(buffer2)) + temp_html += "Buffer Empty
" + else + temp_html += text("Data: []
", buffer2) + temp_html += text("By: []
", buffer2owner) + temp_html += text("Label: []
", buffer2label) + if (viable_occupant) temp_html += text("Save : UI - UI+UE - SE
", src, src, src) + if (buffer2) temp_html += text("Transfer to: Occupant - Injector
", src, src) + //if (buffer2) temp_html += text("Isolate Block
", src) + if (buffer2) temp_html += "Disk: Save To | Load From
" + if (buffer2) temp_html += text("Edit Label
", src) + if (buffer2) temp_html += text("Clear Buffer

", src) + if (!buffer2) temp_html += "
" + temp_html += "

Buffer 3:

" + if (!(buffer3)) + temp_html += "Buffer Empty
" + else + temp_html += text("Data: []
", buffer3) + temp_html += text("By: []
", buffer3owner) + temp_html += text("Label: []
", buffer3label) + if (viable_occupant) temp_html += text("Save : UI - UI+UE - SE
", src, src, src) + if (buffer3) temp_html += text("Transfer to: Occupant - Injector
", src, src) + //if (buffer3) temp_html += text("Isolate Block
", src) + if (buffer3) temp_html += "Disk: Save To | Load From
" + if (buffer3) temp_html += text("Edit Label
", src) + if (buffer3) temp_html += text("Clear Buffer

", src) + if (!buffer3) temp_html += "
" + temp_html += temp_footer_html + + if(viable_occupant && !scanner_status_html && occupant) //is there REALLY someone in there? + scanner_status_html = "
Health:
[occupant.health]%
" + scanner_status_html += "
Radiation Level:
[occupant.radiation]%
" + if(human_occupant) + var/rejuvenators = round(human_occupant.reagents.get_reagent_amount("inaprovaline") / REJUVENATORS_MAX * 100) + scanner_status_html += "
Rejuvenators:
[human_occupant.reagents.get_reagent_amount("inaprovaline")] units
" + + if (current_screen == "mainmenu") + scanner_status_html += "
Unique Enzymes :
[uppertext(occupant.dna.unique_enzymes)]
" + scanner_status_html += "
Unique Identifier:
[occupant.dna.uni_identity]
" + scanner_status_html += "
Structural Enzymes:
[occupant.dna.struc_enzymes]
" + + var/dat = "

Scanner Status

" + + var/occupant_status = "Scanner Unoccupied" + if(occupant && occupant.dna) //is there REALLY someone in there? + if (!istype(occupant,/mob/living/carbon/human)) + sleep(1) + if(NOCLONE in occupant.mutations) + occupant_status = "Invalid DNA structure" + else + switch(occupant.stat) // obvious, see what their status is + if(0) + occupant_status = "Conscious" + if(1) + occupant_status = "Unconscious" + else + occupant_status = "DEAD" + + occupant_status = "[occupant.name] => [occupant_status]
" + + dat += "
[occupant_status][scanner_status_html]
" + + var/scanner_access_text = "Lock Scanner" + if (scanner.locked) + scanner_access_text = "Unlock Scanner" + + dat += "Scan " + + if (occupant && occupant.dna) + dat += "[scanner_access_text] " + if (human_occupant) + dat += "Inject Rejuvenators
" + else + dat += "Inject Rejuvenators
" + else + dat += "[scanner_access_text] " + dat += "Inject Rejuvenators
" + + if (!isnull(diskette)) + dat += text("Eject Disk
", src) + + dat += "
" + + if (temp_html) + dat += temp_html + + popup.set_content(dat) + popup.open() +*/ \ No newline at end of file diff --git a/code/WorkInProgress/computer3/computers/security.dm b/code/WorkInProgress/computer3/computers/security.dm new file mode 100644 index 0000000000..8c6152e1c1 --- /dev/null +++ b/code/WorkInProgress/computer3/computers/security.dm @@ -0,0 +1,606 @@ +//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 +/obj/machinery/computer3/secure_data + default_prog = /datum/file/program/secure_data + spawn_parts = list(/obj/item/part/computer/storage/hdd,/obj/item/part/computer/cardslot,/obj/item/part/computer/networking/radio) + icon_state = "frame-sec" + +/obj/machinery/computer3/laptop/secure_data + default_prog = /datum/file/program/secure_data + spawn_parts = list(/obj/item/part/computer/storage/hdd/big,/obj/item/part/computer/cardslot,/obj/item/part/computer/networking/radio) + icon_state = "laptop" + + +/datum/file/program/secure_data//TODO:SANITY + name = "Security Records" + desc = "Used to view and edit personnel's security records" + active_state = "security" + image = 'icons/NTOS/records.png' + + req_one_access = list(access_security, access_forensics_lockers) + + var/obj/item/weapon/card/id/scan = null + var/authenticated = null + var/rank = null + var/screen = null + var/datum/data/record/active1 = null + var/datum/data/record/active2 = null + var/a_id = null + var/temp = null + var/printing = null + var/can_change_id = 0 + var/list/Perp + var/tempname = null + //Sorting Variables + var/sortBy = "name" + var/order = 1 // -1 = Descending - 1 = Ascending + + + + proc/authenticate() + if(access_security in scan.access || access_forensics_lockers in scan.access ) + return 1 + if(istype(usr,/mob/living/silicon/ai)) + return 1 + return 0 + + interact() + usr.set_machine(src) + scan = computer.cardslot.reader + if(!interactable()) + return + if (computer.z > 6) + usr << "\red Unable to establish a connection: \black You're too far away from the station!" + return + var/dat + + if (temp) + dat = text("[]

Clear Screen", temp, src) + else + dat = text("Confirm Identity: []
", src, (scan ? text("[]", scan.name) : "----------")) + if (authenticated) + switch(screen) + if(1.0) + dat += {" +

"} + dat += text("Search Records
", src) + dat += text("New Record
", src) + dat += {" +

+ + + + +
Records:
+ + + + + + + + "} + if(!isnull(data_core.general)) + for(var/datum/data/record/R in sortRecord(data_core.general, sortBy, order)) + var/crimstat = "" + for(var/datum/data/record/E in data_core.security) + if ((E.fields["name"] == R.fields["name"] && E.fields["id"] == R.fields["id"])) + crimstat = E.fields["criminal"] + var/background + switch(crimstat) + if("*Arrest*") + background = "'background-color:#DC143C;'" + if("Incarcerated") + background = "'background-color:#CD853F;'" + if("Parolled") + background = "'background-color:#CD853F;'" + if("Released") + background = "'background-color:#3BB9FF;'" + if("None") + background = "'background-color:#00FF7F;'" + if("") + background = "'background-color:#00FF00;'" + crimstat = "No Record." + dat += text("", background, src, R, R.fields["name"]) + dat += text("", R.fields["id"]) + dat += text("", R.fields["rank"]) + dat += text("", R.fields["fingerprint"]) + dat += text("", crimstat) + dat += "
NameIDRankFingerprintsCriminal Status
[][][][][]

" + dat += text("Record Maintenance

", src) + dat += text("{Log Out}",src) + if(2.0) + dat += "Records Maintenance
" + dat += "
Delete All Records

Back" + if(3.0) + dat += "
Security Record

" + if ((istype(active1, /datum/data/record) && data_core.general.Find(active1))) + var/icon/front = new(active1.fields["photo"], dir = SOUTH) + var/icon/side = new(active1.fields["photo"], dir = WEST) + usr << browse_rsc(front, "front.png") + usr << browse_rsc(side, "side.png") + dat += text(" \ +
\ + Name: [active1.fields["name"]]
\ + ID: [active1.fields["id"]]
\n \ + Sex: [active1.fields["sex"]]
\n \ + Age: [active1.fields["age"]]
\n \ + Rank: [active1.fields["rank"]]
\n \ + Fingerprint: [active1.fields["fingerprint"]]
\n \ + Physical Status: [active1.fields["p_stat"]]
\n \ + Mental Status: [active1.fields["m_stat"]]
Photo:
\ +
") + else + dat += "General Record Lost!
" + if ((istype(active2, /datum/data/record) && data_core.security.Find(active2))) + dat += text("
\n
Security Data

\nCriminal Status: []
\n
\nMinor Crimes: []
\nDetails: []
\n
\nMajor Crimes: []
\nDetails: []
\n
\nImportant Notes:
\n\t[]
\n
\n
Comments/Log

", src, active2.fields["criminal"], src, active2.fields["mi_crim"], src, active2.fields["mi_crim_d"], src, active2.fields["ma_crim"], src, active2.fields["ma_crim_d"], src, decode(active2.fields["notes"])) + var/counter = 1 + while(active2.fields[text("com_[]", counter)]) + dat += text("[]
Delete Entry

", active2.fields[text("com_[]", counter)], src, counter) + counter++ + dat += text("Add Entry

", src) + dat += text("Delete Record (Security Only)

", src) + else + dat += "Security Record Lost!
" + dat += text("New Security Record

", src) + dat += text("\nDelete Record (ALL)

\nPrint Record
\nBack
", src, src, src) + if(4.0) + if(!Perp.len) + dat += text("ERROR. String could not be located.

Back", src) + else + dat += {" + + "} + dat += text("", tempname) + dat += {" + +
Search Results for '[]':
+ + + + + + + + "} + for(var/i=1, i<=Perp.len, i += 2) + var/crimstat = "" + var/datum/data/record/R = Perp[i] + if(istype(Perp[i+1],/datum/data/record/)) + var/datum/data/record/E = Perp[i+1] + crimstat = E.fields["criminal"] + var/background + switch(crimstat) + if("*Arrest*") + background = "'background-color:#DC143C;'" + if("Incarcerated") + background = "'background-color:#CD853F;'" + if("Parolled") + background = "'background-color:#CD853F;'" + if("Released") + background = "'background-color:#3BB9FF;'" + if("None") + background = "'background-color:#00FF7F;'" + if("") + background = "'background-color:#FFFFFF;'" + crimstat = "No Record." + dat += text("", background, src, R, R.fields["name"]) + dat += text("", R.fields["id"]) + dat += text("", R.fields["rank"]) + dat += text("", R.fields["fingerprint"]) + dat += text("", crimstat) + dat += "
NameIDRankFingerprintsCriminal Status
[][][][][]

" + dat += text("
Return to index.", src) + else + else + dat += text("{Log In}", src) + var/datum/browser/popup = new(usr, "secure_rec", "Security Records", 600, 400) + popup.set_content(dat) + popup.set_title_image(usr.browse_rsc_icon(computer.icon, computer.icon_state)) + popup.open() + return + +/*Revised /N +I can't be bothered to look more of the actual code outside of switch but that probably needs revising too. +What a mess.*/ + Topic(href, href_list) + if(!interactable() || !computer.cardslot || ..(href,href_list)) + return + if (!( data_core.general.Find(active1) )) + active1 = null + if (!( data_core.security.Find(active2) )) + active2 = null + switch(href_list["choice"]) +// SORTING! + if("Sorting") + // Reverse the order if clicked twice + if(sortBy == href_list["sort"]) + if(order == 1) + order = -1 + else + order = 1 + else + // New sorting order! + sortBy = href_list["sort"] + order = initial(order) +//BASIC FUNCTIONS + if("Clear Screen") + temp = null + + if ("Return") + screen = 1 + active1 = null + active2 = null + + if("Confirm Identity") + if (scan) + if(istype(usr,/mob/living/carbon/human) && !usr.get_active_hand()) + computer.cardslot.remove(scan) + else + scan.loc = get_turf(src) + scan = null + else + var/obj/item/I = usr.get_active_hand() + if (istype(I, /obj/item/weapon/card/id)) + computer.cardslot.insert(I) + scan = I + + if("Log Out") + authenticated = null + screen = null + active1 = null + active2 = null + + if("Log In") + if (istype(usr, /mob/living/silicon/ai)) + src.active1 = null + src.active2 = null + src.authenticated = usr.name + src.rank = "AI" + src.screen = 1 + else if (istype(usr, /mob/living/silicon/robot)) + src.active1 = null + src.active2 = null + src.authenticated = usr.name + var/mob/living/silicon/robot/R = usr + src.rank = "[R.modtype] [R.braintype]" + src.screen = 1 + else if (istype(scan, /obj/item/weapon/card/id)) + active1 = null + active2 = null + if(authenticate()) + authenticated = scan.registered_name + rank = scan.assignment + screen = 1 +//RECORD FUNCTIONS + if("Search Records") + var/t1 = input("Search String: (Partial Name or ID or Fingerprints or Rank)", "Secure. records", null, null) as text + world << "input [t1]" + if ((!( t1 ) || usr.stat || !( authenticated ) || usr.restrained() || !interactable())) + return + Perp = new/list() + t1 = lowertext(t1) + var/list/components = text2list(t1, " ") + if(components.len > 5) + return //Lets not let them search too greedily. + for(var/datum/data/record/R in data_core.general) + var/temptext = R.fields["name"] + " " + R.fields["id"] + " " + R.fields["fingerprint"] + " " + R.fields["rank"] + for(var/i = 1, i<=components.len, i++) + if(findtext(temptext,components[i])) + var/prelist = new/list(2) + prelist[1] = R + Perp += prelist + for(var/i = 1, i<=Perp.len, i+=2) + for(var/datum/data/record/E in data_core.security) + var/datum/data/record/R = Perp[i] + if ((E.fields["name"] == R.fields["name"] && E.fields["id"] == R.fields["id"])) + Perp[i+1] = E + tempname = t1 + screen = 4 + + if("Record Maintenance") + screen = 2 + active1 = null + active2 = null + + if ("Browse Record") + var/datum/data/record/R = locate(href_list["d_rec"]) + var/S = locate(href_list["d_rec"]) + if (!( data_core.general.Find(R) )) + temp = "Record Not Found!" + else + for(var/datum/data/record/E in data_core.security) + if ((E.fields["name"] == R.fields["name"] || E.fields["id"] == R.fields["id"])) + S = E + active1 = R + active2 = S + screen = 3 + +/* if ("Search Fingerprints") + var/t1 = input("Search String: (Fingerprint)", "Secure. records", null, null) as text + if ((!( t1 ) || usr.stat || !( authenticated ) || usr.restrained() || (!interactable()) && (!istype(usr, /mob/living/silicon)))) + return + active1 = null + active2 = null + t1 = lowertext(t1) + for(var/datum/data/record/R in data_core.general) + if (lowertext(R.fields["fingerprint"]) == t1) + active1 = R + if (!( active1 )) + temp = text("Could not locate record [].", t1) + else + for(var/datum/data/record/E in data_core.security) + if ((E.fields["name"] == active1.fields["name"] || E.fields["id"] == active1.fields["id"])) + active2 = E + screen = 3 */ + + if ("Print Record") + if (!( printing )) + printing = 1 + var/datum/data/record/record1 = null + var/datum/data/record/record2 = null + if ((istype(active1, /datum/data/record) && data_core.general.Find(active1))) + record1 = active1 + if ((istype(active2, /datum/data/record) && data_core.security.Find(active2))) + record2 = active2 + sleep(50) + var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( computer.loc ) + P.info = "
Security Record

" + if (record1) + P.info += text("Name: [] ID: []
\nSex: []
\nAge: []
\nFingerprint: []
\nPhysical Status: []
\nMental Status: []
", record1.fields["name"], record1.fields["id"], record1.fields["sex"], record1.fields["age"], record1.fields["fingerprint"], record1.fields["p_stat"], record1.fields["m_stat"]) + P.name = text("Security Record ([])", record1.fields["name"]) + else + P.info += "General Record Lost!
" + P.name = "Security Record" + if (record2) + P.info += text("
\n
Security Data

\nCriminal Status: []
\n
\nMinor Crimes: []
\nDetails: []
\n
\nMajor Crimes: []
\nDetails: []
\n
\nImportant Notes:
\n\t[]
\n
\n
Comments/Log

", record2.fields["criminal"], record2.fields["mi_crim"], record2.fields["mi_crim_d"], record2.fields["ma_crim"], record2.fields["ma_crim_d"], decode(record2.fields["notes"])) + var/counter = 1 + while(record2.fields[text("com_[]", counter)]) + P.info += text("[]
", record2.fields[text("com_[]", counter)]) + counter++ + else + P.info += "Security Record Lost!
" + P.info += "" + printing = null + computer.updateUsrDialog() +//RECORD DELETE + if ("Delete All Records") + temp = "" + temp += "Are you sure you wish to delete all Security records?
" + temp += "Yes
" + temp += "No" + + if ("Purge All Records") + for(var/datum/data/record/R in data_core.security) + del(R) + temp = "All Security records deleted." + + if ("Add Entry") + if (!( istype(active2, /datum/data/record) )) + return + var/a2 = active2 + var/t1 = copytext(sanitize(input("Add Comment:", "Secure. records", null, null) as message),1,MAX_MESSAGE_LEN) + if ((!( t1 ) || !( authenticated ) || usr.stat || usr.restrained() || (!interactable() && (!istype(usr, /mob/living/silicon))) || active2 != a2)) + return + var/counter = 1 + while(active2.fields[text("com_[]", counter)]) + counter++ + active2.fields[text("com_[counter]")] = text("Made by [authenticated] ([rank]) on [time2text(world.realtime, "DDD MMM DD hh:mm:ss")], [game_year]
[t1]") + + if ("Delete Record (ALL)") + if (active1) + temp = "
Are you sure you wish to delete the record (ALL)?
" + temp += "Yes
" + temp += "No" + + if ("Delete Record (Security)") + if (active2) + temp = "
Are you sure you wish to delete the record (Security Portion Only)?
" + temp += "Yes
" + temp += "No" + + if ("Delete Entry") + if ((istype(active2, /datum/data/record) && active2.fields[text("com_[]", href_list["del_c"])])) + active2.fields[text("com_[]", href_list["del_c"])] = "Deleted" +//RECORD CREATE + if ("New Record (Security)") + if ((istype(active1, /datum/data/record) && !( istype(active2, /datum/data/record) ))) + var/datum/data/record/R = new /datum/data/record() + R.fields["name"] = active1.fields["name"] + R.fields["id"] = active1.fields["id"] + R.name = text("Security Record #[]", R.fields["id"]) + R.fields["criminal"] = "None" + R.fields["mi_crim"] = "None" + R.fields["mi_crim_d"] = "No minor crime convictions." + R.fields["ma_crim"] = "None" + R.fields["ma_crim_d"] = "No major crime convictions." + R.fields["notes"] = "No notes." + data_core.security += R + active2 = R + screen = 3 + + if ("New Record (General)") + var/datum/data/record/G = new /datum/data/record() + G.fields["name"] = "New Record" + G.fields["id"] = text("[]", add_zero(num2hex(rand(1, 1.6777215E7)), 6)) + G.fields["rank"] = "Unassigned" + G.fields["real_rank"] = "Unassigned" + G.fields["sex"] = "Male" + G.fields["age"] = "Unknown" + G.fields["fingerprint"] = "Unknown" + G.fields["p_stat"] = "Active" + G.fields["m_stat"] = "Stable" + G.fields["species"] = "Human" + data_core.general += G + active1 = G + active2 = null + +//FIELD FUNCTIONS + if ("Edit Field") + var/a1 = active1 + var/a2 = active2 + switch(href_list["field"]) + if("name") + if (istype(active1, /datum/data/record)) + var/t1 = input("Please input name:", "Secure. records", active1.fields["name"], null) as text + if ((!( t1 ) || !length(trim(t1)) || !( authenticated ) || usr.stat || usr.restrained() || (!interactable() && (!istype(usr, /mob/living/silicon)))) || active1 != a1) + return + active1.fields["name"] = t1 + if("id") + if (istype(active2, /datum/data/record)) + var/t1 = copytext(sanitize(input("Please input id:", "Secure. records", active1.fields["id"], null) as text),1,MAX_MESSAGE_LEN) + if ((!( t1 ) || !( authenticated ) || usr.stat || usr.restrained() || (!interactable() && (!istype(usr, /mob/living/silicon))) || active1 != a1)) + return + active1.fields["id"] = t1 + if("fingerprint") + if (istype(active1, /datum/data/record)) + var/t1 = copytext(sanitize(input("Please input fingerprint hash:", "Secure. records", active1.fields["fingerprint"], null) as text),1,MAX_MESSAGE_LEN) + if ((!( t1 ) || !( authenticated ) || usr.stat || usr.restrained() || (!interactable() && (!istype(usr, /mob/living/silicon))) || active1 != a1)) + return + active1.fields["fingerprint"] = t1 + if("sex") + if (istype(active1, /datum/data/record)) + if (active1.fields["sex"] == "Male") + active1.fields["sex"] = "Female" + else + active1.fields["sex"] = "Male" + if("age") + if (istype(active1, /datum/data/record)) + var/t1 = input("Please input age:", "Secure. records", active1.fields["age"], null) as num + if ((!( t1 ) || !( authenticated ) || usr.stat || usr.restrained() || (!interactable() && (!istype(usr, /mob/living/silicon))) || active1 != a1)) + return + active1.fields["age"] = t1 + if("mi_crim") + if (istype(active2, /datum/data/record)) + var/t1 = copytext(sanitize(input("Please input minor disabilities list:", "Secure. records", active2.fields["mi_crim"], null) as text),1,MAX_MESSAGE_LEN) + if ((!( t1 ) || !( authenticated ) || usr.stat || usr.restrained() || (!interactable() && (!istype(usr, /mob/living/silicon))) || active2 != a2)) + return + active2.fields["mi_crim"] = t1 + if("mi_crim_d") + if (istype(active2, /datum/data/record)) + var/t1 = copytext(sanitize(input("Please summarize minor dis.:", "Secure. records", active2.fields["mi_crim_d"], null) as message),1,MAX_MESSAGE_LEN) + if ((!( t1 ) || !( authenticated ) || usr.stat || usr.restrained() || (!interactable() && (!istype(usr, /mob/living/silicon))) || active2 != a2)) + return + active2.fields["mi_crim_d"] = t1 + if("ma_crim") + if (istype(active2, /datum/data/record)) + var/t1 = copytext(sanitize(input("Please input major diabilities list:", "Secure. records", active2.fields["ma_crim"], null) as text),1,MAX_MESSAGE_LEN) + if ((!( t1 ) || !( authenticated ) || usr.stat || usr.restrained() || (!interactable() && (!istype(usr, /mob/living/silicon))) || active2 != a2)) + return + active2.fields["ma_crim"] = t1 + if("ma_crim_d") + if (istype(active2, /datum/data/record)) + var/t1 = copytext(sanitize(input("Please summarize major dis.:", "Secure. records", active2.fields["ma_crim_d"], null) as message),1,MAX_MESSAGE_LEN) + if ((!( t1 ) || !( authenticated ) || usr.stat || usr.restrained() || (!interactable() && (!istype(usr, /mob/living/silicon))) || active2 != a2)) + return + active2.fields["ma_crim_d"] = t1 + if("notes") + if (istype(active2, /datum/data/record)) + var/t1 = copytext(html_encode(input("Please summarize notes:", "Secure. records", html_decode(active2.fields["notes"]), null) as message),1,MAX_MESSAGE_LEN) + if ((!( t1 ) || !( authenticated ) || usr.stat || usr.restrained() || (!interactable() && (!istype(usr, /mob/living/silicon))) || active2 != a2)) + return + active2.fields["notes"] = t1 + if("criminal") + if (istype(active2, /datum/data/record)) + temp = "
Criminal Status:
" + temp += "" + if("rank") + var/list/L = list( "Head of Personnel", "Captain", "AI" ) + //This was so silly before the change. Now it actually works without beating your head against the keyboard. /N + if ((istype(active1, /datum/data/record) && L.Find(rank))) + temp = "
Rank:
" + temp += "
    " + for(var/rank in joblist) + temp += "
  • [rank]
  • " + temp += "
" + else + alert(usr, "You do not have the required rank to do this!") + if("species") + if (istype(active1, /datum/data/record)) + var/t1 = copytext(sanitize(input("Please enter race:", "General records", active1.fields["species"], null) as message),1,MAX_MESSAGE_LEN) + if ((!( t1 ) || !( authenticated ) || usr.stat || usr.restrained() || (!interactable() && (!istype(usr, /mob/living/silicon))) || active1 != a1)) + return + active1.fields["species"] = t1 + +//TEMPORARY MENU FUNCTIONS + else//To properly clear as per clear screen. + temp=null + switch(href_list["choice"]) + if ("Change Rank") + if (active1) + active1.fields["rank"] = href_list["rank"] + if(href_list["rank"] in joblist) + active1.fields["real_rank"] = href_list["real_rank"] + + if ("Change Criminal Status") + if (active2) + for(var/mob/living/carbon/human/H in player_list) + H.hud_updateflag |= 1 << WANTED_HUD + switch(href_list["criminal2"]) + if("none") + active2.fields["criminal"] = "None" + if("arrest") + active2.fields["criminal"] = "*Arrest*" + if("incarcerated") + active2.fields["criminal"] = "Incarcerated" + if("parolled") + active2.fields["criminal"] = "Parolled" + if("released") + active2.fields["criminal"] = "Released" + + if ("Delete Record (Security) Execute") + if (active2) + del(active2) + + if ("Delete Record (ALL) Execute") + if (active1) + for(var/datum/data/record/R in data_core.medical) + if ((R.fields["name"] == active1.fields["name"] || R.fields["id"] == active1.fields["id"])) + del(R) + else + del(active1) + if (active2) + del(active2) + else + temp = "This function does not appear to be working at the moment. Our apologies." + + //computer.updateUsrDialog() + interact() + return + +/obj/machinery/computer3/secure_data/emp_act(severity) + if(stat & (BROKEN|NOPOWER)) + ..(severity) + return + + for(var/datum/data/record/R in data_core.security) + if(prob(10/severity)) + switch(rand(1,6)) + if(1) + R.fields["name"] = "[pick(pick(first_names_male), pick(first_names_female))] [pick(last_names)]" + if(2) + R.fields["sex"] = pick("Male", "Female") + if(3) + R.fields["age"] = rand(5, 85) + if(4) + R.fields["criminal"] = pick("None", "*Arrest*", "Incarcerated", "Parolled", "Released") + if(5) + R.fields["p_stat"] = pick("*Unconcious*", "Active", "Physically Unfit") + if(6) + R.fields["m_stat"] = pick("*Insane*", "*Unstable*", "*Watch*", "Stable") + continue + + else if(prob(1)) + del(R) + continue + + ..(severity) + +/obj/machinery/computer3/secure_data/detective_computer + icon = 'icons/obj/computer.dmi' + icon_state = "messyfiles" diff --git a/code/WorkInProgress/computer3/computers/shuttle.dm b/code/WorkInProgress/computer3/computers/shuttle.dm new file mode 100644 index 0000000000..5d5fab6528 --- /dev/null +++ b/code/WorkInProgress/computer3/computers/shuttle.dm @@ -0,0 +1,75 @@ +/* + This may not migrate to C3. It's basically a machine in the guise of a computer; + there is nothing interactive about it. +*/ + +/obj/machinery/computer3/shuttle + name = "Shuttle" + desc = "For shuttle control." + icon_state = "shuttle" + var/auth_need = 3.0 + var/list/authorized = list( ) + + + attackby(var/obj/item/card/W as obj, var/mob/user as mob) + if(stat & (BROKEN|NOPOWER)) return + if ((!( istype(W, /obj/item/card) ) || !( ticker ) || emergency_shuttle.location != 1 || !( user ))) return + if (istype(W, /obj/item/card/id)||istype(W, /obj/item/device/pda)) + if (istype(W, /obj/item/device/pda)) + var/obj/item/device/pda/pda = W + W = pda.id + if (!W:access) //no access + user << "The access level of [W:registered_name]\'s card is not high enough. " + return + + var/list/cardaccess = W:access + if(!istype(cardaccess, /list) || !cardaccess.len) //no access + user << "The access level of [W:registered_name]\'s card is not high enough. " + return + + if(!(access_heads in W:access)) //doesn't have this access + user << "The access level of [W:registered_name]\'s card is not high enough. " + return 0 + + var/choice = alert(user, text("Would you like to (un)authorize a shortened launch time? [] authorization\s are still needed. Use abort to cancel all authorizations.", src.auth_need - src.authorized.len), "Shuttle Launch", "Authorize", "Repeal", "Abort") + if(emergency_shuttle.location != 1 && user.get_active_hand() != W) + return 0 + switch(choice) + if("Authorize") + src.authorized -= W:registered_name + src.authorized += W:registered_name + if (src.auth_need - src.authorized.len > 0) + message_admins("[key_name_admin(user)] has authorized early shuttle launch") + log_game("[user.ckey] has authorized early shuttle launch") + world << text("\blue Alert: [] authorizations needed until shuttle is launched early", src.auth_need - src.authorized.len) + else + message_admins("[key_name_admin(user)] has launched the shuttle") + log_game("[user.ckey] has launched the shuttle early") + world << "\blue Alert: Shuttle launch time shortened to 10 seconds!" + emergency_shuttle.online = 1 + emergency_shuttle.settimeleft(10) + //src.authorized = null + del(src.authorized) + src.authorized = list( ) + + if("Repeal") + src.authorized -= W:registered_name + world << text("\blue Alert: [] authorizations needed until shuttle is launched early", src.auth_need - src.authorized.len) + + if("Abort") + world << "\blue All authorizations to shorting time for shuttle launch have been revoked!" + src.authorized.len = 0 + src.authorized = list( ) + + else if (istype(W, /obj/item/card/emag) && !emagged) + var/choice = alert(user, "Would you like to launch the shuttle?","Shuttle control", "Launch", "Cancel") + + if(!emagged && emergency_shuttle.location == 1 && user.get_active_hand() == W) + switch(choice) + if("Launch") + world << "\blue Alert: Shuttle launch time shortened to 10 seconds!" + emergency_shuttle.settimeleft( 10 ) + emagged = 1 + if("Cancel") + return + return diff --git a/code/WorkInProgress/computer3/computers/specops_shuttle.dm b/code/WorkInProgress/computer3/computers/specops_shuttle.dm new file mode 100644 index 0000000000..81c94614cf --- /dev/null +++ b/code/WorkInProgress/computer3/computers/specops_shuttle.dm @@ -0,0 +1,246 @@ +//Config stuff +#define SPECOPS_MOVETIME 600 //Time to station is milliseconds. 60 seconds, enough time for everyone to be on the shuttle before it leaves. +#define SPECOPS_STATION_AREATYPE "/area/shuttle/specops/station" //Type of the spec ops shuttle area for station +#define SPECOPS_DOCK_AREATYPE "/area/shuttle/specops/centcom" //Type of the spec ops shuttle area for dock + +var/specops_shuttle_moving_to_station = 0 +var/specops_shuttle_moving_to_centcom = 0 +var/specops_shuttle_at_station = 0 +var/specops_shuttle_can_send = 1 +var/specops_shuttle_time = 0 +var/specops_shuttle_timeleft = 0 + +/obj/machinery/computer3/specops_shuttle + name = "Spec. Ops. Shuttle Console" + icon = 'icons/obj/computer.dmi' + icon_state = "shuttle" + req_access = list(access_cent_specops) + var/temp = null + var/hacked = 0 + var/allowedtocall = 0 + +/proc/specops_process() + var/area/centcom/control/cent_com = locate()//To find announcer. This area should exist for this proc to work. + var/area/centcom/specops/special_ops = locate()//Where is the specops area located? + var/mob/living/silicon/decoy/announcer = locate() in cent_com//We need a fake AI to announce some stuff below. Otherwise it will be wonky. + + var/message_tracker[] = list(0,1,2,3,5,10,30,45)//Create a a list with potential time values. + var/message = "THE SPECIAL OPERATIONS SHUTTLE IS PREPARING FOR LAUNCH"//Initial message shown. + if(announcer) + announcer.say(message) + message = "ARMORED SQUAD TAKE YOUR POSITION ON GRAVITY LAUNCH PAD" + announcer.say(message) + + while(specops_shuttle_time - world.timeofday > 0) + var/ticksleft = specops_shuttle_time - world.timeofday + + if(ticksleft > 1e5) + specops_shuttle_time = world.timeofday + 10 // midnight rollover + specops_shuttle_timeleft = (ticksleft / 10) + + //All this does is announce the time before launch. + if(announcer) + var/rounded_time_left = round(specops_shuttle_timeleft)//Round time so that it will report only once, not in fractions. + if(rounded_time_left in message_tracker)//If that time is in the list for message announce. + message = "ALERT: [rounded_time_left] SECOND[(rounded_time_left!=1)?"S":""] REMAIN" + if(rounded_time_left==0) + message = "ALERT: TAKEOFF" + announcer.say(message) + message_tracker -= rounded_time_left//Remove the number from the list so it won't be called again next cycle. + //Should call all the numbers but lag could mean some issues. Oh well. Not much I can do about that. + + sleep(5) + + specops_shuttle_moving_to_station = 0 + specops_shuttle_moving_to_centcom = 0 + + specops_shuttle_at_station = 1 + if (specops_shuttle_moving_to_station || specops_shuttle_moving_to_centcom) return + + if (!specops_can_move()) + usr << "\red The Special Operations shuttle is unable to leave." + return + + //Begin Marauder launchpad. + spawn(0)//So it parallel processes it. + for(var/obj/machinery/door/poddoor/M in special_ops) + switch(M.id) + if("ASSAULT0") + spawn(10)//1 second delay between each. + M.open() + if("ASSAULT1") + spawn(20) + M.open() + if("ASSAULT2") + spawn(30) + M.open() + if("ASSAULT3") + spawn(40) + M.open() + + sleep(10) + + var/spawn_marauder[] = new() + for(var/obj/effect/landmark/L in landmarks_list) + if(L.name == "Marauder Entry") + spawn_marauder.Add(L) + for(var/obj/effect/landmark/L in landmarks_list) + if(L.name == "Marauder Exit") + var/obj/effect/portal/P = new(L.loc) + P.invisibility = 101//So it is not seen by anyone. + P.failchance = 0//So it has no fail chance when teleporting. + P.target = pick(spawn_marauder)//Where the marauder will arrive. + spawn_marauder.Remove(P.target) + + sleep(10) + + for(var/obj/machinery/mass_driver/M in special_ops) + switch(M.id) + if("ASSAULT0") + spawn(10) + M.drive() + if("ASSAULT1") + spawn(20) + M.drive() + if("ASSAULT2") + spawn(30) + M.drive() + if("ASSAULT3") + spawn(40) + M.drive() + + sleep(50)//Doors remain open for 5 seconds. + + for(var/obj/machinery/door/poddoor/M in special_ops) + switch(M.id)//Doors close at the same time. + if("ASSAULT0") + spawn(0) + M.close() + if("ASSAULT1") + spawn(0) + M.close() + if("ASSAULT2") + spawn(0) + M.close() + if("ASSAULT3") + spawn(0) + M.close() + special_ops.readyreset()//Reset firealarm after the team launched. + //End Marauder launchpad. + + var/area/start_location = locate(/area/shuttle/specops/centcom) + var/area/end_location = locate(/area/shuttle/specops/station) + + var/list/dstturfs = list() + var/throwy = world.maxy + + for(var/turf/T in end_location) + dstturfs += T + if(T.y < throwy) + throwy = T.y + + // hey you, get out of the way! + for(var/turf/T in dstturfs) + // find the turf to move things to + var/turf/D = locate(T.x, throwy - 1, 1) + //var/turf/E = get_step(D, SOUTH) + for(var/atom/movable/AM as mob|obj in T) + AM.Move(D) + if(istype(T, /turf/simulated)) + del(T) + + start_location.move_contents_to(end_location) + + for(var/turf/T in get_area_turfs(end_location) ) + var/mob/M = locate(/mob) in T + M << "\red You have arrived to [station_name]. Commence operation!" + +/proc/specops_can_move() + if(specops_shuttle_moving_to_station || specops_shuttle_moving_to_centcom) return 0 + else return 1 + +/obj/machinery/computer3/specops_shuttle/attackby(I as obj, user as mob) + return attack_hand(user) + +/obj/machinery/computer3/specops_shuttle/attack_ai(var/mob/user as mob) + return attack_hand(user) + +/obj/machinery/computer3/specops_shuttle/attack_paw(var/mob/user as mob) + return attack_hand(user) + +/obj/machinery/computer3/specops_shuttle/attackby(I as obj, user as mob) + if(istype(I,/obj/item/card/emag)) + user << "\blue The electronic systems in this console are far too advanced for your primitive hacking peripherals." + else + return attack_hand(user) + +/obj/machinery/computer3/specops_shuttle/attack_hand(var/mob/user as mob) + if(!allowed(user)) + user << "\red Access Denied." + return + + if (sent_strike_team == 0) + usr << "\red The strike team has not yet deployed." + return + + if(..()) + return + + user.set_machine(src) + var/dat + if (temp) + dat = temp + else + dat += {" + Location: [specops_shuttle_moving_to_station || specops_shuttle_moving_to_centcom ? "Departing for [station_name] in ([specops_shuttle_timeleft] seconds.)":specops_shuttle_at_station ? "Station":"Dock"]
+ [specops_shuttle_moving_to_station || specops_shuttle_moving_to_centcom ? "\n*The Special Ops. shuttle is already leaving.*
\n
":specops_shuttle_at_station ? "\nShuttle Offline
\n
":"\nDepart to [station_name]
\n
"] + \nClose"} + + //user << browse(dat, "window=computer;size=575x450") + //onclose(user, "computer") + var/datum/browser/popup = new(user, "computer", "Special Operations Shuttle", 575, 450) + popup.set_content(dat) + popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) + popup.open() + return + +/obj/machinery/computer3/specops_shuttle/Topic(href, href_list) + if(..()) + return + + if ((usr.contents.Find(src) || (in_range(src, usr) && istype(loc, /turf))) || (istype(usr, /mob/living/silicon))) + usr.set_machine(src) + + if (href_list["sendtodock"]) + if(!specops_shuttle_at_station|| specops_shuttle_moving_to_station || specops_shuttle_moving_to_centcom) return + + usr << "\blue Central Command will not allow the Special Operations shuttle to return." + return + + else if (href_list["sendtostation"]) + if(specops_shuttle_at_station || specops_shuttle_moving_to_station || specops_shuttle_moving_to_centcom) return + + if (!specops_can_move()) + usr << "\red The Special Operations shuttle is unable to leave." + return + + usr << "\blue The Special Operations shuttle will arrive on [station_name] in [(SPECOPS_MOVETIME/10)] seconds." + + temp += "Shuttle departing.

OK" + updateUsrDialog() + + var/area/centcom/specops/special_ops = locate() + if(special_ops) + special_ops.readyalert()//Trigger alarm for the spec ops area. + specops_shuttle_moving_to_station = 1 + + specops_shuttle_time = world.timeofday + SPECOPS_MOVETIME + spawn(0) + specops_process() + + else if (href_list["mainmenu"]) + temp = null + + add_fingerprint(usr) + updateUsrDialog() + return \ No newline at end of file diff --git a/code/WorkInProgress/computer3/computers/station_alert.dm b/code/WorkInProgress/computer3/computers/station_alert.dm new file mode 100644 index 0000000000..2ee767a39a --- /dev/null +++ b/code/WorkInProgress/computer3/computers/station_alert.dm @@ -0,0 +1,114 @@ + +/obj/machinery/computer3/station_alert + name = "Station Alert Console" + desc = "Used to access the station's automated alert system." + icon_state = "alert:0" + circuit = "/obj/item/part/board/circuit/stationalert" + var/alarms = list("Fire"=list(), "Atmosphere"=list(), "Power"=list()) + + + attack_ai(mob/user) + add_fingerprint(user) + if(stat & (BROKEN|NOPOWER)) + return + interact(user) + return + + + attack_hand(mob/user) + add_fingerprint(user) + if(stat & (BROKEN|NOPOWER)) + return + interact(user) + return + + + interact(mob/user) + usr.set_machine(src) + var/dat = "" + for (var/cat in src.alarms) + dat += text("

[]

", cat) + var/list/L = src.alarms[cat] + if (L.len) + for (var/alarm in L) + var/list/alm = L[alarm] + var/area/A = alm[1] + var/list/sources = alm[3] + dat += "" + dat += "• " + dat += "[format_text(A.name)]" + if (sources.len > 1) + dat += text(" - [] sources", sources.len) + dat += "
\n" + else + dat += "-- All Systems Nominal
\n" + dat += "
\n" + //user << browse(dat, "window=alerts") + //onclose(user, "alerts") + var/datum/browser/popup = new(user, "alerts", "Current Station Alerts") + popup.add_head_content("") + popup.set_content(dat) + popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) + popup.open() + + + Topic(href, href_list) + if(..()) + return + return + + + proc/triggerAlarm(var/class, area/A, var/O, var/alarmsource) + if(stat & (BROKEN)) + return + var/list/L = src.alarms[class] + for (var/I in L) + if (I == A.name) + var/list/alarm = L[I] + var/list/sources = alarm[3] + if (!(alarmsource in sources)) + sources += alarmsource + return 1 + var/obj/machinery/camera/C = null + var/list/CL = null + if (O && istype(O, /list)) + CL = O + if (CL.len == 1) + C = CL[1] + else if (O && istype(O, /obj/machinery/camera)) + C = O + L[A.name] = list(A, (C) ? C : O, list(alarmsource)) + return 1 + + + proc/cancelAlarm(var/class, area/A as area, obj/origin) + if(stat & (BROKEN)) + return + var/list/L = src.alarms[class] + var/cleared = 0 + for (var/I in L) + if (I == A.name) + var/list/alarm = L[I] + var/list/srcs = alarm[3] + if (origin in srcs) + srcs -= origin + if (srcs.len == 0) + cleared = 1 + L -= I + return !cleared + + + process() + if(stat & (BROKEN|NOPOWER)) + icon_state = "atmos0" + return + var/active_alarms = 0 + for (var/cat in src.alarms) + var/list/L = src.alarms[cat] + if(L.len) active_alarms = 1 + if(active_alarms) + icon_state = "alert:2" + else + icon_state = "alert:0" + ..() + return diff --git a/code/WorkInProgress/computer3/computers/syndicate_shuttle.dm b/code/WorkInProgress/computer3/computers/syndicate_shuttle.dm new file mode 100644 index 0000000000..ccd711788b --- /dev/null +++ b/code/WorkInProgress/computer3/computers/syndicate_shuttle.dm @@ -0,0 +1,103 @@ +#define SYNDICATE_SHUTTLE_MOVE_TIME 240 +#define SYNDICATE_SHUTTLE_COOLDOWN 200 + +/obj/machinery/computer3/syndicate_station + name = "syndicate shuttle terminal" + icon = 'icons/obj/computer.dmi' + icon_state = "syndishuttle" + req_access = list(access_syndicate) + var/area/curr_location + var/moving = 0 + var/lastMove = 0 + + +/obj/machinery/computer3/syndicate_station/New() + curr_location= locate(/area/syndicate_station/start) + + +/obj/machinery/computer3/syndicate_station/proc/syndicate_move_to(area/destination as area) + if(moving) return + if(lastMove + SYNDICATE_SHUTTLE_COOLDOWN > world.time) return + var/area/dest_location = locate(destination) + if(curr_location == dest_location) return + + moving = 1 + lastMove = world.time + + if(curr_location.z != dest_location.z) + var/area/transit_location = locate(/area/syndicate_station/transit) + curr_location.move_contents_to(transit_location) + curr_location = transit_location + sleep(SYNDICATE_SHUTTLE_MOVE_TIME) + + curr_location.move_contents_to(dest_location) + curr_location = dest_location + moving = 0 + return 1 + + +/obj/machinery/computer3/syndicate_station/attackby(obj/item/I as obj, mob/user as mob) + return attack_hand(user) + +/obj/machinery/computer3/syndicate_station/attack_ai(mob/user as mob) + return attack_hand(user) + +/obj/machinery/computer3/syndicate_station/attack_paw(mob/user as mob) + return attack_hand(user) + +/obj/machinery/computer3/syndicate_station/attack_hand(mob/user as mob) + if(!allowed(user)) + user << "\red Access Denied" + return + + user.set_machine(src) + + var/dat = {"Location: [curr_location]
+ Ready to move[max(lastMove + SYNDICATE_SHUTTLE_COOLDOWN - world.time, 0) ? " in [max(round((lastMove + SYNDICATE_SHUTTLE_COOLDOWN - world.time) * 0.1), 0)] seconds" : ": now"]
+ Syndicate Space
+ North West of SS13 | + North of SS13 | + North East of SS13
+ South West of SS13 | + South of SS13 | + South East of SS13
+ North East of the Mining Asteroid
+ Close"} + + user << browse(dat, "window=computer;size=575x450") + onclose(user, "computer") + return + + +/obj/machinery/computer3/syndicate_station/Topic(href, href_list) + if(!isliving(usr)) return + var/mob/living/user = usr + + if(in_range(src, user) || istype(user, /mob/living/silicon)) + user.set_machine(src) + + if(href_list["syndicate"]) + syndicate_move_to(/area/syndicate_station/start) + else if(href_list["station_nw"]) + syndicate_move_to(/area/syndicate_station/northwest) + else if(href_list["station_n"]) + syndicate_move_to(/area/syndicate_station/north) + else if(href_list["station_ne"]) + syndicate_move_to(/area/syndicate_station/northeast) + else if(href_list["station_sw"]) + syndicate_move_to(/area/syndicate_station/southwest) + else if(href_list["station_s"]) + syndicate_move_to(/area/syndicate_station/south) + else if(href_list["station_se"]) + syndicate_move_to(/area/syndicate_station/southeast) +// else if(href_list["commssat"]) +// syndicate_move_to(/area/syndicate_station/commssat) + else if(href_list["mining"]) + syndicate_move_to(/area/syndicate_station/mining) + + add_fingerprint(usr) + updateUsrDialog() + return + +/obj/machinery/computer3/syndicate_station/bullet_act(var/obj/item/projectile/Proj) + visible_message("[Proj] ricochets off [src]!") //let's not let them fuck themselves in the rear \ No newline at end of file diff --git a/code/WorkInProgress/computer3/computers/syndicate_specops_shuttle.dm b/code/WorkInProgress/computer3/computers/syndicate_specops_shuttle.dm new file mode 100644 index 0000000000..61dc0ba975 --- /dev/null +++ b/code/WorkInProgress/computer3/computers/syndicate_specops_shuttle.dm @@ -0,0 +1,259 @@ +//Config stuff +#define SYNDICATE_ELITE_MOVETIME 600 //Time to station is deciseconds. 60 seconds, enough time for everyone to be on the shuttle before it leaves. +#define SYNDICATE_ELITE_STATION_AREATYPE "/area/shuttle/syndicate_elite/station" //Type of the spec ops shuttle area for station +#define SYNDICATE_ELITE_DOCK_AREATYPE "/area/shuttle/syndicate_elite/mothership" //Type of the spec ops shuttle area for dock + +var/syndicate_elite_shuttle_moving_to_station = 0 +var/syndicate_elite_shuttle_moving_to_mothership = 0 +var/syndicate_elite_shuttle_at_station = 0 +var/syndicate_elite_shuttle_can_send = 1 +var/syndicate_elite_shuttle_time = 0 +var/syndicate_elite_shuttle_timeleft = 0 + +/obj/machinery/computer3/syndicate_elite_shuttle + name = "Elite Syndicate Squad Shuttle Console" + icon = 'icons/obj/computer.dmi' + icon_state = "syndishuttle" + req_access = list(access_cent_specops) + var/temp = null + var/hacked = 0 + var/allowedtocall = 0 + +/proc/syndicate_elite_process() + var/area/syndicate_mothership/control/syndicate_ship = locate()//To find announcer. This area should exist for this proc to work. + var/area/syndicate_mothership/elite_squad/elite_squad = locate()//Where is the specops area located? + var/mob/living/silicon/decoy/announcer = locate() in syndicate_ship//We need a fake AI to announce some stuff below. Otherwise it will be wonky. + + var/message_tracker[] = list(0,1,2,3,5,10,30,45)//Create a a list with potential time values. + var/message = "THE SYNDICATE ELITE SHUTTLE IS PREPARING FOR LAUNCH"//Initial message shown. + if(announcer) + announcer.say(message) + // message = "ARMORED SQUAD TAKE YOUR POSITION ON GRAVITY LAUNCH PAD" + // announcer.say(message) + + while(syndicate_elite_shuttle_time - world.timeofday > 0) + var/ticksleft = syndicate_elite_shuttle_time - world.timeofday + + if(ticksleft > 1e5) + syndicate_elite_shuttle_time = world.timeofday // midnight rollover + syndicate_elite_shuttle_timeleft = (ticksleft / 10) + + //All this does is announce the time before launch. + if(announcer) + var/rounded_time_left = round(syndicate_elite_shuttle_timeleft)//Round time so that it will report only once, not in fractions. + if(rounded_time_left in message_tracker)//If that time is in the list for message announce. + message = "ALERT: [rounded_time_left] SECOND[(rounded_time_left!=1)?"S":""] REMAIN" + if(rounded_time_left==0) + message = "ALERT: TAKEOFF" + announcer.say(message) + message_tracker -= rounded_time_left//Remove the number from the list so it won't be called again next cycle. + //Should call all the numbers but lag could mean some issues. Oh well. Not much I can do about that. + + sleep(5) + + syndicate_elite_shuttle_moving_to_station = 0 + syndicate_elite_shuttle_moving_to_mothership = 0 + + syndicate_elite_shuttle_at_station = 1 + if (syndicate_elite_shuttle_moving_to_station || syndicate_elite_shuttle_moving_to_mothership) return + + if (!syndicate_elite_can_move()) + usr << "\red The Syndicate Elite shuttle is unable to leave." + return + + sleep(600) +/* + //Begin Marauder launchpad. + spawn(0)//So it parallel processes it. + for(var/obj/machinery/door/poddoor/M in elite_squad) + switch(M.id) + if("ASSAULT0") + spawn(10)//1 second delay between each. + M.open() + if("ASSAULT1") + spawn(20) + M.open() + if("ASSAULT2") + spawn(30) + M.open() + if("ASSAULT3") + spawn(40) + M.open() + + sleep(10) + + var/spawn_marauder[] = new() + for(var/obj/effect/landmark/L in landmarks_list) + if(L.name == "Marauder Entry") + spawn_marauder.Add(L) + for(var/obj/effect/landmark/L in landmarks_list) + if(L.name == "Marauder Exit") + var/obj/effect/portal/P = new(L.loc) + P.invisibility = 101//So it is not seen by anyone. + P.failchance = 0//So it has no fail chance when teleporting. + P.target = pick(spawn_marauder)//Where the marauder will arrive. + spawn_marauder.Remove(P.target) + + sleep(10) + + for(var/obj/machinery/mass_driver/M in elite_squad) + switch(M.id) + if("ASSAULT0") + spawn(10) + M.drive() + if("ASSAULT1") + spawn(20) + M.drive() + if("ASSAULT2") + spawn(30) + M.drive() + if("ASSAULT3") + spawn(40) + M.drive() + + sleep(50)//Doors remain open for 5 seconds. + + for(var/obj/machinery/door/poddoor/M in elite_squad) + switch(M.id)//Doors close at the same time. + if("ASSAULT0") + spawn(0) + M.close() + if("ASSAULT1") + spawn(0) + M.close() + if("ASSAULT2") + spawn(0) + M.close() + if("ASSAULT3") + spawn(0) + M.close() + */ + elite_squad.readyreset()//Reset firealarm after the team launched. + //End Marauder launchpad. +/* + var/obj/explosionmarker = locate("Syndicate Breach Area") + if(explosionmarker) + var/turf/simulated/T = explosionmarker.loc + if(T) + explosion(T,4,6,8,10,0) + + sleep(40) +// proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impact_range, flash_range, adminlog = 1) + +*/ + var/area/start_location = locate(/area/shuttle/syndicate_elite/mothership) + var/area/end_location = locate(/area/shuttle/syndicate_elite/station) + + var/list/dstturfs = list() + var/throwy = world.maxy + + for(var/turf/T in end_location) + dstturfs = T + if(T.y < throwy) + throwy = T.y + + // hey you, get out of the way! + for(var/turf/T in dstturfs) + // find the turf to move things to + var/turf/D = locate(T.x, throwy - 1, 1) + //var/turf/E = get_step(D, SOUTH) + for(var/atom/movable/AM as mob|obj in T) + AM.Move(D) + if(istype(T, /turf/simulated)) + del(T) + + start_location.move_contents_to(end_location) + + for(var/turf/T in get_area_turfs(end_location) ) + var/mob/M = locate(/mob) in T + M << "\red You have arrived to [station_name]. Commence operation!" + +/proc/syndicate_elite_can_move() + if(syndicate_elite_shuttle_moving_to_station || syndicate_elite_shuttle_moving_to_mothership) return 0 + else return 1 + +/obj/machinery/computer3/syndicate_elite_shuttle/attackby(I as obj, user as mob) + return attack_hand(user) + +/obj/machinery/computer3/syndicate_elite_shuttle/attack_ai(var/mob/user as mob) + return attack_hand(user) + +/obj/machinery/computer3/syndicate_elite_shuttle/attack_paw(var/mob/user as mob) + return attack_hand(user) + +/obj/machinery/computer3/syndicate_elite_shuttle/attackby(I as obj, user as mob) + if(istype(I,/obj/item/card/emag)) + user << "\blue The electronic systems in this console are far too advanced for your primitive hacking peripherals." + else + return attack_hand(user) + +/obj/machinery/computer3/syndicate_elite_shuttle/attack_hand(var/mob/user as mob) + if(!allowed(user)) + user << "\red Access Denied." + return + +// if (sent_syndicate_strike_team == 0) +// usr << "\red The strike team has not yet deployed." +// return + + if(..()) + return + + user.set_machine(src) + var/dat + if (temp) + dat = temp + else + dat = {"Location: [syndicate_elite_shuttle_moving_to_station || syndicate_elite_shuttle_moving_to_mothership ? "Departing for [station_name] in ([syndicate_elite_shuttle_timeleft] seconds.)":syndicate_elite_shuttle_at_station ? "Station":"Dock"]
+ [syndicate_elite_shuttle_moving_to_station || syndicate_elite_shuttle_moving_to_mothership ? "\n*The Syndicate Elite shuttle is already leaving.*
\n
":syndicate_elite_shuttle_at_station ? "\nShuttle Offline
\n
":"\nDepart to [station_name]
\n
"] + \nClose"} + + //user << browse(dat, "window=computer;size=575x450") + //onclose(user, "computer") + var/datum/browser/popup = new(user, "computer", "Special Operations Shuttle", 575, 450) + popup.set_content(dat) + popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) + popup.open() + return + +/obj/machinery/computer3/syndicate_elite_shuttle/Topic(href, href_list) + if(..()) + return + + if ((usr.contents.Find(src) || (in_range(src, usr) && istype(loc, /turf))) || (istype(usr, /mob/living/silicon))) + usr.set_machine(src) + + if (href_list["sendtodock"]) + if(!syndicate_elite_shuttle_at_station|| syndicate_elite_shuttle_moving_to_station || syndicate_elite_shuttle_moving_to_mothership) return + + usr << "\blue The Syndicate will not allow the Elite Squad shuttle to return." + return + + else if (href_list["sendtostation"]) + if(syndicate_elite_shuttle_at_station || syndicate_elite_shuttle_moving_to_station || syndicate_elite_shuttle_moving_to_mothership) return + + if (!specops_can_move()) + usr << "\red The Syndicate Elite shuttle is unable to leave." + return + + usr << "\blue The Syndicate Elite shuttle will arrive on [station_name] in [(SYNDICATE_ELITE_MOVETIME/10)] seconds." + + temp = "Shuttle departing.

OK" + updateUsrDialog() + + var/area/syndicate_mothership/elite_squad/elite_squad = locate() + if(elite_squad) + elite_squad.readyalert()//Trigger alarm for the spec ops area. + syndicate_elite_shuttle_moving_to_station = 1 + + syndicate_elite_shuttle_time = world.timeofday + SYNDICATE_ELITE_MOVETIME + spawn(0) + syndicate_elite_process() + + + else if (href_list["mainmenu"]) + temp = null + + add_fingerprint(usr) + updateUsrDialog() + return \ No newline at end of file diff --git a/code/WorkInProgress/computer3/file.dm b/code/WorkInProgress/computer3/file.dm new file mode 100644 index 0000000000..cd959a7ea0 --- /dev/null +++ b/code/WorkInProgress/computer3/file.dm @@ -0,0 +1,166 @@ +// I am deciding that for sayustation's purposes directories are right out, +// we can't even get backpacks to work right with recursion, and that +// actually fucking matters. Metadata too, that can be added if ever needed. + +/* + Files are datums that can be stored in digital storage devices +*/ + +/datum/file + var/name = "File" + var/extension = "dat" + var/volume = 10 // in KB + var/image = 'icons/NTOS/file.png' // determines the icon to use, found in icons/NTOS + var/obj/machinery/computer3/computer // the parent computer, if fixed + var/obj/item/part/computer/storage/device // the device that is containing this file + + var/drm = 0 // Copy protection, called by copy() and move() + var/readonly = 0 // Edit protection, called by edit(), which is just a failcheck proc + + proc/execute(var/datum/file/source) + return + + // + // Copy file to device. + // If you overwrite this function, use the return value to make sure it succeeded + // + proc/copy(var/obj/item/part/computer/storage/dest) + if(!computer || computer.crit_fail) return null + if(drm) + if(!computer.emagged) + return null + var/datum/file/F = new type() + if(!dest.addfile(F)) + return null // todo: arf here even though the player can't do a damn thing due to concurrency + return F + + // + // Move file to device + // Returns null on failure even though the existing file doesn't go away + // + proc/move(var/obj/item/part/computer/storage/dest) + if(!computer || computer.crit_fail) return null + if(drm) + if(!computer.emagged) + return null + var/obj/item/part/computer/storage/current = device + if(!dest.addfile(src)) + return null + current.removefile(src) + return src + + // + // Determines if the file is editable. This does not use the DRM flag, + // but instead the readonly flag. + // + + proc/edit() + if(!computer || computer.crit_fail) + return 0 + if(readonly && !computer.emagged) + return 0 // + return 1 + +/* + Centcom root authorization certificate + + Non-destructive, officially sanctioned. + Has the same effect on computers as an emag. +*/ +/datum/file/centcom_auth + name = "Centcom Root Access Token" + extension = "auth" + volume = 100 + copy() + return null + +/* + A file that contains information +*/ + +/datum/file/data + + var/content = "content goes here" + var/file_increment = 1 + var/binary = 0 // determines if the file can't be opened by editor + + // Set the content to a specific amount, increase filesize appropriately. + proc/set_content(var/text) + content = text + if(file_increment > 1) + volume = round(file_increment * length(text)) + + copy(var/obj/O) + var/datum/file/data/D = ..(O) + if(D) + D.content = content + D.readonly = readonly + + New() + if(content) + if(file_increment > 1) + volume = round(file_increment * length(content)) + +/* + A generic file that contains text +*/ + +/datum/file/data/text + name = "Text File" + extension = "txt" + image = 'icons/NTOS/file.png' + content = "" + file_increment = 0.002 // 0.002 kilobytes per character (1024 characters per KB) + +/datum/file/data/text/ClownProphecy + name = "Clown Prophecy" + content = "HONKhHONKeHONKlHONKpHONKHONmKHONKeHONKHONKpHONKlHONKeHONKaHONKsHONKe" + + +/* + A file that contains research +*/ + +/datum/file/data/research + name = "Untitled Research" + binary = 1 + content = "Untitled Tier X Research" + var/datum/tech/stored // the actual tech contents + volume = 1440 + +/* + A file that contains genetic information +*/ + +/datum/file/data/genome + name = "Genetic Buffer" + binary = 1 + var/real_name = "Poop" + + +/datum/file/data/genome/SE + name = "Structural Enzymes" + var/mutantrace = null + +/datum/file/data/genome/UE + name = "Unique Enzymes" + +/* +the way genome computers now work, a subtype is the wrong way to do this; +it will no longer be picked up. You can change this later if you need to. +for now put it on a disk + +/datum/file/data/genome/UE/GodEmperorOfMankind + name = "G.E.M.K." + content = "066000033000000000AF00330660FF4DB002690" + label = "God Emperor of Mankind" +*/ +/datum/file/data/genome/UI + name = "Unique Identifier" + +/datum/file/data/genome/UI/UE + name = "Unique Identifier + Unique Enzymes" + +/datum/file/data/genome/cloning + name = "Cloning Data" + var/datum/data/record/record diff --git a/code/WorkInProgress/computer3/laptop.dm b/code/WorkInProgress/computer3/laptop.dm new file mode 100644 index 0000000000..c681ff50a7 --- /dev/null +++ b/code/WorkInProgress/computer3/laptop.dm @@ -0,0 +1,137 @@ +/* + Computer3 portable computer. + + Battery powered only; it does not use the APC network at all. + + When picked up, becomes an inert item. This item can be put in a recharger, + or set down and re-opened into the original machine. While closed, the computer + has the MAINT stat flag. If you want to ignore this, you will have to bitmask it out. + + The unused(?) alt+click will toggle laptops open and closed. If we find a better + answer for this in the future, by all means use it. I just don't want it limited + to the verb, which is SIGNIFICANTLY less accessible than shutting a laptop. + Ctrl-click would work for closing the machine, since it's anchored, but not for + opening it back up again. And obviously, I don't want to override shift-click. + There's no double-click because that's used in regular click events. Alt-click is the + only obvious one left. +*/ + + +/obj/item/device/laptop + name = "Laptop Computer" + desc = "A clamshell portable computer. It is closed." + icon = 'icons/obj/computer3.dmi' + icon_state = "laptop-closed" + item_state = "laptop-inhand" + pixel_x = 2 + pixel_y = -3 + w_class = 4 + + var/obj/machinery/computer3/laptop/stored_computer = null + + verb/open_computer() + set name = "open laptop" + set category = "Object" + set src in view(1) + + if(!istype(loc,/turf)) + usr << "[src] is too bulky! You'll have to set it down." + return + + if(!stored_computer) + if(contents.len) + for(var/obj/O in contents) + O.loc = loc + usr << "\The [src] crumbles to pieces." + spawn(5) + del src + return + + + stored_computer.loc = loc + stored_computer.stat &= ~MAINT + stored_computer.update_icon() + loc = null + usr << "You open \the [src]." + + spawn(5) + del src + + AltClick() + open_computer() + +/obj/machinery/computer3/laptop + name = "Laptop Computer" + desc = "A clamshell portable computer. It is open." + + icon_state = "laptop" + density = 0 + pixel_x = 2 + pixel_y = -3 + show_keyboard = 0 + + var/obj/item/device/laptop/portable = null + + New(var/L, var/built = 0) + if(!built && !battery) + battery = new /obj/item/weapon/cell(src) + ..(L,built) + + verb/close_computer() + set name = "close laptop" + set category = "Object" + set src in view(1) + + if(istype(loc,/obj/item/device/laptop)) + testing("Close closed computer") + return + if(!istype(loc,/turf)) + testing("Odd computer location: [loc] - close laptop") + return + + if(stat&BROKEN) + usr << "\The [src] is broken! You can't quite get it closed." + return + + if(!portable) + portable=new + portable.stored_computer = src + + portable.loc = loc + loc = portable + stat |= MAINT + usr << "You close \the [src]." + + auto_use_power() + if(stat&MAINT) + return + if(use_power && istype(battery) && battery.charge > 0) + if(use_power == 1) + battery.use(idle_power_usage) + else + battery.use(active_power_usage) + return 1 + return 0 + + use_power(var/amount, var/chan = -1) + if(battery && battery.charge > 0) + battery.use(amount) + + power_change() + if( !battery || battery.charge <= 0 ) + stat |= NOPOWER + else + stat &= ~NOPOWER + + Del() + if(istype(loc,/obj/item/device/laptop)) + var/obj/O = loc + spawn(5) + if(O) + del O + ..() + + + AltClick() + close_computer() + diff --git a/code/WorkInProgress/computer3/networking.dm b/code/WorkInProgress/computer3/networking.dm new file mode 100644 index 0000000000..12341e2b6f --- /dev/null +++ b/code/WorkInProgress/computer3/networking.dm @@ -0,0 +1,236 @@ +/obj/item/part/computer/networking + name = "Computer networking component" + + /* + This is the public-facing proc used by NETUP. + It does additional checking before and after calling get_machines() + + */ + proc/connect_to(var/typekey,var/atom/previous) + if(!computer || computer.stat) + return null + + if(istype(previous,typekey) && verify_machine(previous)) + return previous + + var/result = get_machines(typekey) + + if(!result) + return null + + if(islist(result)) + var/list/R = result + if(R.len == 0) + return null + else if(R.len == 1) + return R[1] + else + var/list/atomlist = computer.format_atomlist(R) + result = input("Select:","Multiple destination machines located",atomlist[1]) as null|anything in atomlist + return atomlist[result] + + if(isobj(result)) + return result + + return null // ? + + /* + This one is used to determine the candidate machines. + It may return an object, a list of objects, or null. + + Overwite this on any networking component. + */ + proc/get_machines(var/typekey) + return list() + + /* + This is used to verify that an existing machine is within the network. + Calling NETUP() with an object argument will run this check, and if + the object is still accessible, it will be used. Otherwise, another + search will be run. + + Overwrite this on any networking component. + */ + proc/verify_machine(var/obj/previous) + return 0 + +/* + Provides radio/signaler functionality, and also + network-connects to anything on the same z-level + which is tuned to the same frequency. +*/ +/obj/item/part/computer/networking/radio + name = "Wireless networking component" + desc = "Radio module for computers" + + var/datum/radio_frequency/radio_connection = null + var/frequency = 1459 + var/filter = null + var/range = null + var/subspace = 0 + + init() + ..() + spawn(5) + radio_connection = radio_controller.add_object(src, src.frequency, src.filter) + + proc/set_frequency(new_frequency) + if(radio_controller) + radio_controller.remove_object(src, frequency) + frequency = new_frequency + radio_connection = radio_controller.add_object(src, frequency, filter) + else + frequency = new_frequency + spawn(rand(5,10)) + set_frequency(new_frequency) + + receive_signal(var/datum/signal/signal) + if(!signal || !computer || (computer.stat&~MAINT)) // closed laptops use maint, allow it + return + if(computer.program) + computer.program.receive_signal(signal) + + proc/post_signal(var/datum/signal/signal) + if(!computer || (computer.stat&~MAINT) || !computer.program) return + if(!radio_connection) return + + radio_connection.post_signal(src,signal,filter,range) + + get_machines(var/typekey) + if(!radio_connection || !radio_connection.frequency) + return list() + var/list/result = list() + var/turf/T = get_turf(loc) + var/z_level = T.z + for(var/obj/O in radio_connection.devices) + if(istype(O,typekey)) + T = get_turf(O) + if(istype(O) && (subspace || (O.z == z_level))) // radio does not work across z-levels + result |= O + return result + + verify_machine(var/obj/previous) + if(!previous) return 0 + if(subspace) + return ( radio_connection && (previous in radio_connection.devices) ) + else + var/turf/T = get_turf(loc) + var/turf/O = get_turf(previous) + if(!T || !O) + return 0 + return ( radio_connection && (previous in radio_connection.devices) && (T.z == O.z)) + +/* + Subspace networking: Communicates off-station. Allows centcom communications. +*/ +/obj/item/part/computer/networking/radio/subspace + name = "subspace networking terminal" + desc = "Communicates long distances and through spatial anomalies." + subspace = 1 + +/* + APC (/area) networking +*/ + +/obj/item/part/computer/networking/area + name = "short-wave networking terminal" + desc = "Connects to nearby computers through the area power network" + + get_machines(var/typekey) + var/area/A = get_area(loc) + if(!istype(A) || A == /area) + return list() + if(typekey == null) + typekey = /obj/machinery + var/list/machines = list() + for(var/area/area in A.related) + for(var/obj/O in area.contents) + if(istype(O,typekey)) + machines |= O + return machines + verify_machine(var/obj/previous) + if(!previous) return 0 + var/area/A = get_area(src) + if( A && A == get_area(previous) ) + return 1 + return 0 + +/* + Proximity networking: Connects to machines or computers adjacent to this device +*/ +/obj/item/part/computer/networking/prox + name = "proximity networking terminal" + desc = "Connects a computer to adjacent machines" + + get_machines(var/typekey) + var/turf/T = get_turf(loc) + if(!istype(T)) + return list() + if(typekey == null) + typekey = /obj/machinery + var/list/machines = list() + for(var/d in cardinal) + var/turf/T2 = get_step(T,d) + for(var/obj/O in T2) + if(istype(O,typekey)) + machines += O + return machines + + verify_machine(var/obj/previous) + if(!previous) + return 0 + if(get_dist(get_turf(previous),get_turf(loc)) == 1) + return 1 + return 0 +/* + Cable networking: Not currently used +*/ + +/obj/item/part/computer/networking/cable + name = "cable networking terminal" + desc = "Connects to other machines on the same cable network." + + get_machines(var/typekey) +// if(istype(computer,/obj/machinery/computer/laptop)) // laptops move, this could get breaky +// return list() + var/turf/T = get_turf(loc) + var/datum/powernet/P = null + for(var/obj/structure/cable/C in T) + if(C.d1 == 0) + P = C.powernet + break + if(!P) + return list() + if(!typekey) + typekey = /obj/machinery + else if(typekey == /datum/powernet) + return list(P) + var/list/candidates = list() + for(var/atom/A in P.nodes) + if(istype(A,typekey)) + candidates += A + else if(istype(A,/obj/machinery/power/terminal)) + var/obj/machinery/power/terminal/PT = A + if(istype(PT.master,typekey)) + candidates += PT.master + return candidates + + verify_machine(var/obj/previous) + if(!previous) + return 0 + var/turf/T = get_turf(loc) + var/datum/powernet/P = null + for(var/obj/structure/cable/C in T) + if(C.d1 == 0) + P = C.powernet + break + if(istype(previous,/datum/powernet)) + if(previous == P) + return 1 + return 0 + T = get_turf(previous.loc) + for(var/obj/structure/cable/C in T) + if(C.d1 == 0 && (C.powernet == P)) + return 1 + return 0 + diff --git a/code/WorkInProgress/computer3/program.dm b/code/WorkInProgress/computer3/program.dm new file mode 100644 index 0000000000..42794f4c2e --- /dev/null +++ b/code/WorkInProgress/computer3/program.dm @@ -0,0 +1,404 @@ + +/* +Programs are a file that can be executed +*/ + +/datum/file/program + name = "Untitled" + extension = "prog" + image = 'icons/NTOS/program.png' + var/desc = "An unidentifiable program." + + var/image/overlay = null // Icon to be put on top of the computer frame. + + var/active_state = "generic" // the icon_state that the computer goes to when the program is active + + drm = 0 // prevents a program from being copied + var/refresh = 0 // if true, computer does screen updates during process(). + var/error = 0 // set by background programs so an error pops up when used + + var/human_controls = 0 // if true, non-human animals cannot interact with this program (monkeys, xenos, etc) + var/ai_allowed = 1 // if true, silicon mobs (AI/cyborg) are allowed to use this program. + + var/datum/browser/popup = null + + // ID access: Note that computer3 does not normally check your ID. + // By default this is only really used for inserted cards. + var/list/req_access = list() // requires all of these UNLESS below succeeds + var/list/req_one_access = list() // requires one of these + + +/datum/file/program/New() + ..() + if(!active_state) + active_state = "generic" + overlay = image('icons/obj/computer3.dmi',icon_state = active_state) + + +/datum/file/program/proc/decode(text) + //adds line breaks + text = replacetext(text, "\n","
") + return text + + + +/datum/file/program/execute(var/datum/file/source) + if(computer && !computer.stat) + computer.program = src + computer.req_access = req_access + computer.req_one_access = req_one_access + update_icon() + computer.update_icon() + if(usr) + usr << browse(null, "window=\ref[computer]") + computer.attack_hand(usr) + + ..() + +/* + Standard Topic() for links +*/ + +/datum/file/program/Topic(href, href_list) + return + +/* + The computer object will transfer all empty-hand calls to the program (this includes AIs, Cyborgs, and Monkies) +*/ +/datum/file/program/proc/interact() + return + +/* + Standard receive_signal() +*/ + +/datum/file/program/proc/receive_signal(var/datum/signal/signal) + return +/* + The computer object will transfer all attackby() calls to the program + If the item is a valid interactable object, return 1. Else, return 0. + This helps identify what to use to actually hit the computer with, and + what can be used to interact with it. + + Screwdrivers will, by default, never call program/attackby(). That's used + for deconstruction instead. +*/ + + +/datum/file/program/proc/attackby(O as obj, user as mob) + return + +/* + Try not to overwrite this proc, I'd prefer we stayed + with interact() as the main proc +*/ +/datum/file/program/proc/attack_hand(mob/user as mob) + usr = user + interact() + +/* + Called when the computer is rebooted or the program exits/restarts. + Be sure not to save any work. Do NOT start the program again. + If it is the os, the computer will run it again automatically. + + Also, we are deleting the browser window on the chance that this is happening + when the computer is damaged or disassembled, causing us to lose our computer. + The popup window's title is a reference to the computer, making it unique, so + it could introduce bugs in that case. +*/ +/datum/file/program/proc/Reset() + error = 0 + update_icon() + if(popup) + popup.close() + del popup + return + +/* + The computer object will transfer process() calls to the program. +*/ +/datum/file/program/proc/process() + if(refresh && computer && !computer.stat) + computer.updateDialog() + update_icon() + +/datum/file/program/proc/update_icon() + return + +/datum/file/program/proc/check_access(obj/item/I) + if( (!istype(req_access) || !req_access.len) && (!istype(req_one_access) || !req_one_access.len) ) //no requirements + return 1 + + if(!I) + return 0 + + var/list/iAccess = I.GetAccess() + if(!iAccess || !iAccess.len) + return 0 + + var/list/temp = req_one_access & iAccess + if(temp.len) // a required access in item access list + return 1 + temp = req_access - iAccess + if(temp.len) // a required access not in item access list + return 0 + return 1 + + +/* + Because this does sanity checks I have added the code to make a popup here. + It also does sanity checks there that should prevent some edge case madness. +*/ +/datum/file/program/proc/interactable(var/mob/user = usr) + if(computer && computer.interactable(user)) + if(!popup) + popup = new(user, "\ref[computer]", name, nref=src) + popup.set_title_image(usr.browse_rsc_icon(overlay.icon, overlay.icon_state)) + popup.set_title_buttons(topic_link(src,"quit","")) + if(popup.user != user) + popup.user = user + popup.set_title_image(usr.browse_rsc_icon(overlay.icon, overlay.icon_state)) + popup.set_title(name) + return 1 + return 0 + + +/datum/file/program/proc/fake_link(var/text) + return "[text]" + +/* + Meant for text (not icons) - + lists all installed drives and their files + + I am NOT adding a computer sanity check here, + because why the flying fuck would you get to this + proc before having run it at least once? + If you cause runtimes with this function + may the shame of all ages come upon you. +*/ +/datum/file/program/proc/list_all_files_by_drive(var/typekey,var/linkop = "runfile") + var/dat = "" + if(!typekey) typekey = /datum/file + if(computer.hdd) + dat += "

[computer.hdd]

" + for(var/datum/file/F in computer.hdd.files) + if(istype(F,typekey)) + dat += topic_link(src,"[linkop]=\ref[F]",F.name) + "
" + if(computer.hdd.files.len == 0) + dat += "No files
" + dat += "
" + + if(computer.floppy) + if(!computer.floppy.inserted) + dat += "

[computer.floppy] - Eject



" + else + dat += "

[computer.floppy] - [topic_link(src,"eject_disk","Eject")]

" + for(var/datum/file/F in computer.floppy.inserted.files) + dat += topic_link(src,"[linkop]=\ref[F]",F.name) + "
" + if(computer.floppy.inserted.files.len == 0) + dat += "No files
" + dat += "
" + + if(computer.cardslot && istype(computer.cardslot.reader,/obj/item/weapon/card/data)) + dat += "

[computer.cardslot.reader] - [topic_link(src,"eject_card=reader","Eject")]

" + var/obj/item/weapon/card/data/D = computer.cardslot.reader + for(var/datum/file/F in D.files) + dat += topic_link(src,"[linkop]=\ref[F]",F.name) + "
" + if(D.files.len == 0) + dat += "No files
" + return dat + +// You don't NEED to use this version of topic() for this, you can do it yourself if you prefer +// If you do, do the interactable() check first, please, I don't want to repeat it here. It's not hard. +/datum/file/program/Topic(var/href,var/list/href_list) + if(!computer) + return 0 + + // + // usage: eject_disk + // only functions if there is a removable drive + // + if("eject_disk" in href_list) + if(computer.floppy) + computer.floppy.eject_disk() + return 1 + // + // usage: eject_card | eject_card=reader | eject_card=writer + // only functions if there is a cardslot + // + if("eject_card" in href_list) + if(computer.cardslot) + if(computer.cardslot.dualslot && href_list["eject_card"] == "writer") + computer.cardslot.remove(computer.cardslot.writer) + else + computer.cardslot.remove(computer.cardslot.reader) + return 1 + // + // usage: runfile=\ref[file] + // executes the file + // + if("runfile" in href_list) + var/datum/file/F = locate(href_list["runfile"]) + if(F && F.computer == computer) + F.execute(src) + return 1 + + if("close" in href_list) + usr.unset_machine() + popup.close() + return 1 + // + // usage: quit + // unloads the program, returning control to the OS + // + if("quit" in href_list) + computer.program = null + usr << browse(null,"window=\ref[computer]") // NTOS will need to resize the window + computer.update_icon() + computer.updateDialog() + return 1 + return 0 + + +/datum/file/program/RD + name = "R&D Manager" + image = 'icons/NTOS/research.png' + desc = "A software suit for generic research and development machinery interaction. Comes pre-packaged with extensive cryptographic databanks for secure connections with external devices." + active_state = "rdcomp" + volume = 11000 + +/datum/file/program/RDserv + name = "R&D Server" + image = 'icons/NTOS/server.png' + active_state = "rdcomp" + volume = 9000 + +/datum/file/program/SuitSensors + name = "Crew Monitoring" + image = 'icons/NTOS/monitoring.png' + active_state = "crew" + volume = 3400 + +/datum/file/program/Genetics + name = "Genetics Suite" + image = 'icons/NTOS/genetics.png' + desc = "A sophisticated software suite containing read-only genetics hardware specifications and a highly compressed genome databank." + active_state = "dna" + volume = 8000 + +/datum/file/program/Cloning + name = "Cloning Platform" + image = 'icons/NTOS/cloning.png' + desc = "A software platform for accessing external cloning apparatus." + active_state = "dna" + volume = 7000 + +/datum/file/program/TCOMmonitor + name = "TComm Monitor" + image = 'icons/NTOS/tcomms.png' + active_state = "comm_monitor" + volume = 5500 + +/datum/file/program/TCOMlogs + name = "TComm Log View" + image = 'icons/NTOS/tcomms.png' + active_state = "comm_logs" + volume = 5230 + +/datum/file/program/TCOMtraffic + name = "TComm Traffic" + image = 'icons/NTOS/tcomms.png' + active_state = "generic" + volume = 8080 + +/datum/file/program/securitycam + name = "Sec-Cam Viewport" + image = 'icons/NTOS/camera.png' + drm = 1 + active_state = "cameras" + volume = 2190 + +/datum/file/program/securityrecords + name = "Security Records" + image = 'icons/NTOS/records.png' + drm = 1 + active_state = "security" + volume = 2520 + +/datum/file/program/medicalrecords + name = "Medical Records" + image = 'icons/NTOS/medical.png' + drm = 1 + active_state = "medcomp" + volume = 5000 + +/datum/file/program/SMSmonitor + name = "Messaging Monitor" + image = 'icons/NTOS/pda.png' + active_state = "comm_monitor" + volume = 3070 + +/datum/file/program/OperationMonitor + name = "OR Monitor" + image = 'icons/NTOS/operating.png' + active_state = "operating" + volume = 4750 + +/datum/file/program/PodLaunch + name = "Pod Launch" + active_state = "computer_generic" + volume = 520 + +/datum/file/program/PowerMonitor + name = "Power Grid" + image = 'icons/NTOS/power.png' + active_state = "power" + volume = 7200 + +/datum/file/program/PrisonerManagement + name = "Prisoner Control" + image = 'icons/NTOS/prison.png' + drm = 1 + active_state = "power" + volume = 5000 + +/datum/file/program/Roboticscontrol + name = "Cyborg Maint" + image = 'icons/NTOS/borgcontrol.png' + active_state = "robot" + volume = 9050 + +/datum/file/program/AIupload + name = "AI Upload" + image = 'icons/NTOS/aiupload.png' + active_state = "command" + volume = 5000 + +/datum/file/program/Cyborgupload + name = "Cyborg Upload" + image = 'icons/NTOS/borgupload.png' + active_state = "command" + volume = 5000 + +/datum/file/program/Exosuit + name = "Exosuit Monitor" + image = 'icons/NTOS/exocontrol.png' + active_state = "mecha" + volume = 7000 + +/datum/file/program/EmergencyShuttle + name = "Shuttle Console" + active_state = "shuttle" + volume = 10000 + +/datum/file/program/Stationalert + name = "Alert Monitor" + image = 'icons/NTOS/alerts.png' + active_state = "computer_generic" + volume = 10150 + + + + + + diff --git a/code/WorkInProgress/computer3/program_disks.dm b/code/WorkInProgress/computer3/program_disks.dm new file mode 100644 index 0000000000..201fff3939 --- /dev/null +++ b/code/WorkInProgress/computer3/program_disks.dm @@ -0,0 +1,44 @@ + + +/obj/item/weapon/disk/file/arcade + name = "Arcade game grab pack" + desc = "A program install disk." + icon = 'icons/obj/stock_parts.dmi' + icon_state = "datadisk_arcade" + spawn_files = list(/datum/file/program/arcade,/datum/file/program/arcade,/datum/file/program/arcade,/datum/file/program/arcade) + +/*/obj/item/weapon/disk/file/aifixer + name = "AI System Integrity Restorer" + desc = "A program install disk." + icon = 'icons/obj/stock_parts.dmi' + icon_state = "datadisk_arcade" + spawn_files = list(/datum/file/program/aifixer)*/ + +/obj/item/weapon/disk/file/atmos_alert + name = "Atmospheric Alert Notifier" + desc = "A program install disk." + icon = 'icons/obj/stock_parts.dmi' + icon_state = "datadisk_arcade" + spawn_files = list(/datum/file/program/atmos_alert) + +/obj/item/weapon/disk/file/cameras + name = "Camera Viewer" + desc = "A program install disk." + icon = 'icons/obj/stock_parts.dmi' + icon_state = "datadisk_arcade" + spawn_files = list(/datum/file/program/security) + +/obj/item/weapon/disk/file/card + name = "ID Card Modifier" + desc = "A program install disk." + icon = 'icons/obj/stock_parts.dmi' + icon_state = "datadisk_arcade" + spawn_files = list(/datum/file/program/card_comp) +/* +/obj/item/weapon/disk/file/genetics + name = "Genetics & Cloning" + desc = "A program install disk." + icon = 'icons/obj/stock_parts.dmi' + icon_state = "datadisk_arcade" + spawn_files = list(/datum/file/program/cloning,/datum/file/program/dnascanner) +*/ diff --git a/code/WorkInProgress/computer3/server.dm b/code/WorkInProgress/computer3/server.dm new file mode 100644 index 0000000000..9e32918fea --- /dev/null +++ b/code/WorkInProgress/computer3/server.dm @@ -0,0 +1,32 @@ +/* + Todo: + I can probably get away with a global list on servers that contains database sort of stuff + (replacing the datacore probably) + with the justification that they loadbalance and duplicate data across each other. As long as + one server-type computer exists, the station will still have access to datacore-type info. + + I can doubtless use this for station alerts as well, which is good, because I was sort of + wondering how the hell I was going to port that. + + Also todo: Server computers should maybe generate heat the way the R&D server does? + At least the rack computer probably should. +*/ + +/obj/machinery/computer3/server + name = "server" + icon = 'icons/obj/computer3.dmi' + icon_state = "serverframe" + show_keyboard = 0 + +/obj/machinery/computer3/server/rack + name = "server rack" + icon_state = "rackframe" + + spawn_parts = list(/obj/item/part/computer/storage/hdd,/obj/item/part/computer/networking/radio/subspace) + + update_icon() + //overlays.Cut() + return + + attack_hand() // Racks have no screen, only AI can use them + return diff --git a/code/WorkInProgress/computer3/storage.dm b/code/WorkInProgress/computer3/storage.dm new file mode 100644 index 0000000000..acf9a76288 --- /dev/null +++ b/code/WorkInProgress/computer3/storage.dm @@ -0,0 +1,184 @@ +/* + Computer devices that can store programs, files, etc. +*/ + +/obj/item/part/computer/storage + name = "Storage Device" + desc = "A device used for storing and retrieving digital information." + + // storage capacity, kb + var/volume = 0 + var/max_volume = 64 // should be enough for anyone + + var/driveletter = null // drive letter according to the computer + + var/list/files = list() // a list of files in the memory (ALL files) + var/removeable = 0 // determinse if the storage device is a removable hard drive (ie floppy) + + + var/writeprotect = 0 // determines if the drive forbids writing. + // note that write-protect is hardware and does not respect emagging. + + var/list/spawnfiles = list()// For mappers, special drives, and data disks + + New() + ..() + if(islist(spawnfiles)) + if(removeable && spawnfiles.len) + var/obj/item/part/computer/storage/removable/R = src + R.inserted = new(src) + if(writeprotect) + R.inserted.writeprotect = 1 + for(var/typekey in spawnfiles) + addfile(new typekey(),1) + + // Add a file to the hard drive, returns 0 if failed + // forced is used when spawning files on a write-protect drive + proc/addfile(var/datum/file/F,var/forced = 0) + if(!F || crit_fail || (F in files)) + return 1 + if(writeprotect && !forced) + return 0 + if(volume + F.volume > max_volume) + if(!forced) + return 0 + max_volume = volume + F.volume + + files.Add(F) + volume += F.volume + F.computer = computer + F.device = src + return 1 + proc/removefile(var/datum/file/F,var/forced = 0) + if(!F || !(F in files)) + return 1 + if(writeprotect && !forced) + return 0 + + files -= F + volume -= F.volume + if(F.device == src) + F.device = null + F.computer = null + return 1 + + init(var/obj/machinery/computer/target) + computer = target + for(var/datum/file/F in files) + F.computer = computer + +/* + Standard hard drives for computers. Used in computer construction +*/ + +/obj/item/part/computer/storage/hdd + name = "Hard Drive" + max_volume = 25000 + icon_state = "hdd1" + + +/obj/item/part/computer/storage/hdd/big + name = "Big Hard Drive" + max_volume = 50000 + icon_state = "hdd2" + +/obj/item/part/computer/storage/hdd/gigantic + name = "Gigantic Hard Drive" + max_volume = 75000 + icon_state = "hdd3" + +/* + Removeable hard drives for portable storage +*/ + +/obj/item/part/computer/storage/removable + name = "Disk Drive" + max_volume = 3000 + removeable = 1 + + attackby_types = list(/obj/item/weapon/disk/file, /obj/item/weapon/pen) + var/obj/item/weapon/disk/file/inserted = null + + proc/eject_disk(var/forced = 0) + if(!forced) + return + files = list() + inserted.loc = computer.loc + if(usr) + if(!usr.get_active_hand()) + usr.put_in_active_hand(inserted) + else if(forced && !usr.get_inactive_hand()) + usr.put_in_inactive_hand(inserted) + for(var/datum/file/F in inserted.files) + F.computer = null + inserted = null + + + attackby(obj/O as obj, mob/user as mob) + if(inserted && istype(O,/obj/item/weapon/pen)) + usr << "You use [O] to carefully pry [inserted] out of [src]." + eject_disk(forced = 1) + return + + if(istype(O,/obj/item/weapon/disk/file)) + if(inserted) + usr << "There's already a disk in [src]!" + return + + usr << "You insert [O] into [src]." + usr.drop_item() + O.loc = src + inserted = O + writeprotect = inserted.writeprotect + + files = inserted.files + for(var/datum/file/F in inserted.files) + F.computer = computer + + return + + ..() + + addfile(var/datum/file/F) + if(!F || !inserted) + return 0 + + if(F in inserted.files) + return 1 + + if(inserted.volume + F.volume > inserted.max_volume) + return 0 + + inserted.files.Add(F) + F.computer = computer + F.device = inserted + return 1 + +/* + Removable hard drive presents... + removeable disk! +*/ + +/obj/item/weapon/disk/file + //parent_type = /obj/item/part/computer/storage // todon't: do this + name = "Data Disk" + desc = "A device that can be inserted and removed into computers easily as a form of portable data storage. This one stores 1 Megabyte" + var/list/files + var/list/spawn_files = list() + var/writeprotect = 0 + var/volume = 0 + var/max_volume = 1028 + + + New() + ..() + icon_state = "datadisk[rand(0,6)]" + src.pixel_x = rand(-5, 5) + src.pixel_y = rand(-5, 5) + files = list() + if(istype(spawn_files)) + for(var/typekey in spawn_files) + var/datum/file/F = new typekey() + F.device = src + files += F + volume += F.volume diff --git a/code/WorkInProgress/computer3/test_machines.dm b/code/WorkInProgress/computer3/test_machines.dm new file mode 100644 index 0000000000..998937e634 --- /dev/null +++ b/code/WorkInProgress/computer3/test_machines.dm @@ -0,0 +1,86 @@ + +/obj/machinery/computer3/testing + spawn_files = list(/datum/file/program/aifixer,/datum/file/program/arcade,/datum/file/program/atmos_alert, + /datum/file/program/security,/datum/file/program/card_comp, + /datum/file/program/borg_control,/datum/file/program/holodeck, /datum/file/program/communications, + /datum/file/program/crew,/datum/file/program/op_monitor, /datum/file/program/powermon, + + /datum/file/camnet_key,/datum/file/camnet_key/mining,/datum/file/camnet_key/entertainment,/datum/file/camnet_key/research, + /datum/file/camnet_key/bombrange,/datum/file/camnet_key/xeno,/datum/file/camnet_key/singulo,/datum/file/camnet_key/prison) + spawn_parts = list(/obj/item/part/computer/storage/hdd/big,/obj/item/part/computer/storage/removable,/obj/item/part/computer/ai_holder, + /obj/item/part/computer/networking/radio/subspace,/obj/item/part/computer/networking/cameras, + /obj/item/part/computer/cardslot/dual,/obj/item/part/computer/networking/area) + New(var/L,var/built=0) + if(!built && !battery) + battery = new /obj/item/weapon/cell(src) + ..(L,built) + +/obj/machinery/computer3/laptop/testing + spawn_files = list(/datum/file/program/aifixer,/datum/file/program/arcade,/datum/file/program/atmos_alert, + /datum/file/program/security,/datum/file/program/card_comp, + /datum/file/program/borg_control,/datum/file/program/holodeck, /datum/file/program/communications, + /datum/file/program/crew,/datum/file/program/op_monitor, /datum/file/program/powermon, + + /datum/file/camnet_key,/datum/file/camnet_key/mining,/datum/file/camnet_key/entertainment,/datum/file/camnet_key/research, + /datum/file/camnet_key/bombrange,/datum/file/camnet_key/xeno,/datum/file/camnet_key/singulo,/datum/file/camnet_key/prison) + spawn_parts = list(/obj/item/part/computer/storage/hdd/big,/obj/item/part/computer/storage/removable,/obj/item/part/computer/ai_holder, + /obj/item/part/computer/networking/radio/subspace,/obj/item/part/computer/networking/cameras, + /obj/item/part/computer/cardslot/dual,/obj/item/part/computer/networking/area) + New(var/L,var/built=0) + if(!built && !battery) + battery = new /obj/item/weapon/cell/super(src) + ..(L,built) + +/obj/machinery/computer3/wall_comp/testing + spawn_files = list(/datum/file/program/aifixer,/datum/file/program/arcade,/datum/file/program/atmos_alert, + /datum/file/program/security,/datum/file/program/card_comp, + /datum/file/program/borg_control,/datum/file/program/holodeck, /datum/file/program/communications, + /datum/file/program/crew,/datum/file/program/op_monitor, /datum/file/program/powermon, + + /datum/file/camnet_key,/datum/file/camnet_key/mining,/datum/file/camnet_key/entertainment,/datum/file/camnet_key/research, + /datum/file/camnet_key/bombrange,/datum/file/camnet_key/xeno,/datum/file/camnet_key/singulo,/datum/file/camnet_key/prison) + spawn_parts = list(/obj/item/part/computer/storage/hdd/big,/obj/item/part/computer/storage/removable,/obj/item/part/computer/ai_holder, + /obj/item/part/computer/networking/radio/subspace,/obj/item/part/computer/networking/cameras, + /obj/item/part/computer/cardslot/dual,/obj/item/part/computer/networking/area) + New(var/L,var/built=0) + if(!built && !battery) + battery = new /obj/item/weapon/cell(src) + ..(L,built) + +/obj/machinery/computer3/server/testing + spawn_files = list(/datum/file/program/aifixer,/datum/file/program/arcade,/datum/file/program/atmos_alert, + /datum/file/program/security,/datum/file/program/card_comp, + /datum/file/program/borg_control,/datum/file/program/holodeck, /datum/file/program/communications, + /datum/file/program/crew,/datum/file/program/op_monitor, /datum/file/program/powermon, + + /datum/file/camnet_key,/datum/file/camnet_key/mining,/datum/file/camnet_key/entertainment,/datum/file/camnet_key/research, + /datum/file/camnet_key/bombrange,/datum/file/camnet_key/xeno,/datum/file/camnet_key/singulo,/datum/file/camnet_key/prison) + spawn_parts = list(/obj/item/part/computer/storage/hdd/big,/obj/item/part/computer/storage/removable,/obj/item/part/computer/ai_holder, + /obj/item/part/computer/networking/radio/subspace,/obj/item/part/computer/networking/cameras, + /obj/item/part/computer/cardslot/dual,/obj/item/part/computer/networking/area) + New(var/L,var/built=0) + if(!built && !battery) + battery = new /obj/item/weapon/cell(src) + ..(L,built) + +/obj/machinery/computer3/server/rack/testing + spawn_files = list(/datum/file/program/aifixer,/datum/file/program/arcade,/datum/file/program/atmos_alert, + /datum/file/program/security,/datum/file/program/card_comp, + /datum/file/program/borg_control,/datum/file/program/holodeck, /datum/file/program/communications, + /datum/file/program/crew,/datum/file/program/op_monitor, /datum/file/program/powermon, + + /datum/file/camnet_key,/datum/file/camnet_key/mining,/datum/file/camnet_key/entertainment,/datum/file/camnet_key/research, + /datum/file/camnet_key/bombrange,/datum/file/camnet_key/xeno,/datum/file/camnet_key/singulo,/datum/file/camnet_key/prison) + spawn_parts = list(/obj/item/part/computer/storage/hdd/big,/obj/item/part/computer/storage/removable,/obj/item/part/computer/ai_holder, + /obj/item/part/computer/networking/radio/subspace,/obj/item/part/computer/networking/cameras, + /obj/item/part/computer/cardslot/dual,/obj/item/part/computer/networking/area) + New(var/L,var/built=0) + if(!built && !battery) + battery = new /obj/item/weapon/cell(src) + ..(L,built) + +/obj/item/weapon/storage/box/testing_disks + New() + ..() + for(var/typekey in typesof(/obj/item/weapon/disk/file) - /obj/item/weapon/disk/file) + new typekey(src) \ No newline at end of file diff --git a/code/WorkInProgress/computer3/upload/lawfile.dm b/code/WorkInProgress/computer3/upload/lawfile.dm new file mode 100644 index 0000000000..e3b21f537e --- /dev/null +++ b/code/WorkInProgress/computer3/upload/lawfile.dm @@ -0,0 +1,29 @@ +/* + Computer3 law changes: + + * Laws are a file type + * Connecting to the AI requires a network connection + * Connecting to a borg requires a radio or network. + +*/ + +/datum/file/ai_law + var/list/hacklaws = null + var/zerolaw = null + var/list/corelaws = null + var/list/auxlaws = null + + var/configurable = 0 + + // override this when you need to be able to alter the parameters of the lawset + proc/configure() + return + + execute(var/datum/file/program/source) + if(istype(usr,/mob/living/silicon)) + return + if(istype(source,/datum/file/program/NTOS)) + if(configurable) + configure() + return + if(istype(source,/datum/file/program/upload/ai)) \ No newline at end of file diff --git a/code/WorkInProgress/computer3/upload/programs.dm b/code/WorkInProgress/computer3/upload/programs.dm new file mode 100644 index 0000000000..bcf45159b6 --- /dev/null +++ b/code/WorkInProgress/computer3/upload/programs.dm @@ -0,0 +1,13 @@ +/* + Note that as with existing ai upload, this is not an interactive program. + That means that the work is done in execute() rather than interact() +*/ + +/datum/file/program/upload/ai + execute(var/datum/file/program/source) + if(!interactable() || istype(usr,/mob/living/silicon)) + return 0 + if(!computer.net) + usr << "An indecipherable set of code flicks across the screen. Nothing else happens." + return + var/list/results = computer.net.get_machines \ No newline at end of file diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index c6c1c38a4f..8b65de1f37 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -1386,3 +1386,8 @@ var/list/WALLITEMS = list( /proc/format_text(text) return replacetext(replacetext(text,"\proper ",""),"\improper ","") + +/proc/topic_link(var/datum/D, var/arglist, var/content) + if(istype(arglist,/list)) + arglist = list2params(arglist) + return "[content]" \ No newline at end of file diff --git a/code/datums/browser.dm b/code/datums/browser.dm index cee5acdd53..31124c6faf 100644 --- a/code/datums/browser.dm +++ b/code/datums/browser.dm @@ -13,6 +13,7 @@ var/body_elements var/head_content = "" var/content = "" + var/title_buttons = "" /datum/browser/New(nuser, nwindow_id, ntitle = 0, nwidth = 0, nheight = 0, var/atom/nref = null) @@ -29,9 +30,15 @@ ref = nref add_stylesheet("common", 'html/browser/common.css') // this CSS sheet is common to all UIs +/datum/browser/proc/set_title(ntitle) + title = format_text(ntitle) + /datum/browser/proc/add_head_content(nhead_content) head_content = nhead_content +/datum/browser/proc/set_title_buttons(ntitle_buttons) + title_buttons = ntitle_buttons + /datum/browser/proc/set_window_options(nwindow_options) window_options = nwindow_options diff --git a/code/setup.dm b/code/setup.dm index 86d1aaff87..4971241ea8 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -758,3 +758,12 @@ var/list/RESTRICTED_CAMERA_NETWORKS = list( //Those networks can only be accesse #define COLOR_YELLOW "#FFFF00" #define COLOR_ORANGE "#FF9900" #define COLOR_WHITE "#FFFFFF" + + +//computer3 error codes, move lower in the file when it passes dev -Sayu + #define PROG_CRASH 1 // Generic crash + #define MISSING_PERIPHERAL 2 // Missing hardware + #define BUSTED_ASS_COMPUTER 4 // Self-perpetuating error. BAC will continue to crash forever. + #define MISSING_PROGRAM 8 // Some files try to automatically launch a program. This is that failing. + #define FILE_DRM 16 // Some files want to not be copied/moved. This is them complaining that you tried. + #define NETWORK_FAILURE 32 \ No newline at end of file diff --git a/icons/NTOS/airestore.png b/icons/NTOS/airestore.png new file mode 100644 index 0000000000000000000000000000000000000000..d8e5207bfbf25919fcb8f77221a3ef9f93964ec2 GIT binary patch literal 3096 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 literal 0 HcmV?d00001 diff --git a/icons/NTOS/cardcomp.png b/icons/NTOS/cardcomp.png new file mode 100644 index 0000000000000000000000000000000000000000..e7df0ab20711aa98becf6e4d68babb77d6fb5434 GIT binary patch literal 3174 zcmV-s44LzZP)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0004zNkl~=wFufGh-?NxL`b>-kR5`gmd!tLIq4Tkx&**9>nJnQcs});@COB8&;sc~l19P!NgMzwjZs82EPQ!!J{MkR8Umo_ zn4I*B1i*ULX0O{(DVNH0(@-jn5k1HJ;<05}*x%dLaKLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0003MNklde&4+MdNf-xm&z`T(7eB5#GBT^Dt zt^ti#Cotw5BvZw~yK81Va{5sGRSHNdb9(?d@}*R~Rs)J|pL=(-n%PS=x?Tv?gP!CmTr#6Nq=)v6-VMXP%sLHp}e$ z?G-$Lf-@@#I1&JCH|z=+6%2SNzXM;i;ywafL4KuTR?yNu0YsRkpkdZL`E%dKsdEG( s-=#TFJ4cRU*ni7Afli literal 0 HcmV?d00001 diff --git a/icons/NTOS/comms.png b/icons/NTOS/comms.png new file mode 100644 index 0000000000000000000000000000000000000000..e089889d93027a49946cea67bb6ccadee40fb0f5 GIT binary patch literal 3157 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 literal 0 HcmV?d00001 diff --git a/icons/NTOS/copyfile.png b/icons/NTOS/copyfile.png new file mode 100644 index 0000000000000000000000000000000000000000..50c10b375787fc407b5da24a4347bd74ab500008 GIT binary patch literal 3030 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 CT3yEg literal 0 HcmV?d00001 diff --git a/icons/NTOS/exocontrol.png b/icons/NTOS/exocontrol.png new file mode 100644 index 0000000000000000000000000000000000000000..101f32e44db9031f6b1e7e875660eab5c524dff5 GIT binary patch literal 3355 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 literal 0 HcmV?d00001 diff --git a/icons/NTOS/file.png b/icons/NTOS/file.png new file mode 100644 index 0000000000000000000000000000000000000000..05556e01f807b5a6adc82e1b8fdb6f6113940a46 GIT binary patch literal 2984 zcmV;Z3s>}sP)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0002fNklcSVvGL1dxG-x-vQgaFA7aC5OIN{ptt0NLl1hQNTQfdQ|KND2W`45oTPG}<5;b-<_t eMjb#a02lyf)pSdidKsz!0000L*0GT)McKrO`A+kOrgvg-0Y)*SYD zb9$kwhmP?^k=%e^_LGGe3(Chk)2N_VM!;mjEqd$y*;-Lxu@@G z5^70HFPTyK;6P(Zk!*u0*Mez}ul{%-$MXNr{eur4JTRCX!)~xh++~V{8;=9O?wY_4 zpY7}JPv*WMscmp%gVlqBwy&c3yp3Np=-m{U{jq&GCb0r=E-Ok|Y>gTe~DWM4fh-!KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0004{Nkly7BCe<&09L(2;JY07?&ca`qx!0|tUIS1_%2^R+yj6WM57{%r;h-D z{<)yrvn$of?EnP6%l%N0s$PZ{1OV&Ax)Oj&L}#9vZP%)|vPq?#hzQIKBH|Jkq~9~e zC_MoHxEbBq8HSllm)1Tumlng5aGajMzdk2>cDU+y3wf*qbJWgPE_pN`AX?-g^deR* zs~b%zS;hWLiT8WUm(c=8Z%+V#S@(E|-r?mkmed&Qi;$>bBc=B2CpSKLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z00032Nkl)ino5$KEsXbvO52(V<55K+`BsG@@`*+ljz{1t%?=d~t8oK3Z0XR^E&)Ze_p5q5f2p|y&i*dhM0RX`L@q)Z48+*syQvDV1 zEaNB?J}a#OroGtnDNB=<>o^MQHP5xbUxXspQ%Lj*IBeHE38*SQFUp2%mckeUQd6uF z0swG2UnonH-h9us!SMq%ZP*ne=d1vw1o-cRN&?zP@gxG$Gg^WGn%{CGzz8q`bPIS7 Y0NR3N*e@5|c>n+a07*qoM6N<$f@!swDF6Tf literal 0 HcmV?d00001 diff --git a/icons/NTOS/monitoring.png b/icons/NTOS/monitoring.png new file mode 100644 index 0000000000000000000000000000000000000000..a94910e48a0f72672ba355067f436ecd3e73a1bb GIT binary patch literal 3011 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 FV1hPtm+}Ar literal 0 HcmV?d00001 diff --git a/icons/NTOS/movefile.png b/icons/NTOS/movefile.png new file mode 100644 index 0000000000000000000000000000000000000000..5b31c6c2a8811bc725b45f17cfc33db07aa357c2 GIT binary patch literal 2985 zcmV;a3s&@rP)|D^_ww@lRz|vCuzLs)$;-`! zo*{AqUjza0dRV*yaMRE;fKCVhpQKsoe1Yhg01=zBIT!& zC1$=TK@rP|Ibo3vKKm@PqnO#LJhq6%Ij6Hz*<$V$@wQAMN5qJ)hzm2hoGcOF60t^# zFqJFfH{#e-4l@G)6iI9sa9D{VHW4w29}?su;^hF~NC{tY+*d5%WDCTXa!E_i;d2ub z1#}&jF5T4HnnCyEWTkKf0>c0%E1Ah>(_PY1)0w;+02c53Su*0<(nUqKG_|(0G&D0Z z{i;y^b@OjZ+}lNZ8Th$p5Uu}MTtq^NHl z*T1?CO*}7&0ztZsv2j*bmJyf3G7=Z`5B*PvzoDiKdLpOAxi2$L0#SX*@cY_n(^h55xYX z#km%V()bZjV~l{*bt*u9?FT3d5g^g~#a;iSZ@&02Abxq_DwB(I|L-^bXThc7C4-yr zInE_0gw7K3GZ**7&k~>k0Z0NWkO#^@9q0fwx1%qjZ=)yBuQ3=5 z4Wo^*!gyjLF-e%Um=erBOdIALW)L%unZshS@>qSW9o8Sq#0s#5*edK%>{;v(b^`kb zN5rY%%y90wC>#%$kE_5P!JWYk;U;klcqzOl-UjcFXXA75rT9jCH~u<)0>40zCTJ7v z2qAyk54cquI@7b&LHdZ`+zlTss6bJ7%PQ)z$cROu4wBhpu-r)01)S~6}jY?%U? zgEALn#wiFzo#H}aQ8rT=DHkadR18&{>P1bW7E`~Y4p3)hWn`DhhRJ5j*2tcg9i<^O zEt(fCg;q*CP8+7ZTcWhYX$fb^_9d-LhL+6BEtPYWVlfK zTBusSTASKKb%HuWJzl+By+?gkLq)?+BTu761jmyXF)a;mc z^>(B7bo*HQ1NNg1st!zt28YLv>W*y3CdWx9U8f|cqfXDAO`Q48?auQqHZJR2&bcD4 z9Ip>EY~kKEPV6Wm+eXFV)D)_R=tM0@&p?(!V*Qu1PXHG9o^TY0bZ?)4%0 z1p8F`JoeS|<@=<@RE7GY07EYX@lwd>4oW|Yi!o+Su@M`;WuSK8LKk71XR(_ zRKHM1xJ5XYX`fk>`6eqY>qNG6HZQwBM=xi4&Sb88?zd}EYguc1@>KIS<&CX#T35dw zS|7K*XM_5Nf(;WJJvJWRMA($P>8E^?{IdL4o5MGE7bq2MEEwP7v8AO@qL5!WvekBL z-8R%V?zVyL=G&{be=K4bT`e{#t|)$A!YaA?jp;X)-+bB;zhj`(vULAW%ue3U;av{9 z4wp%n<(7@__S@Z2PA@Mif3+uO&y|X06?J#o zSi8M;ejj_^(0<4Lt#wLu#dYrva1Y$6_o(k^&}yhSh&h;f@JVA>W8b%oZ=0JGnu?n~ z9O4}sJsfnnx7n(>`H13?(iXTy*fM=I`sj`CT)*pTHEgYKqqP+u1IL8No_-(u{qS+0 z<2@%BCt82d{Gqm;(q7a7b>wu+b|!X?c13m#p7cK1({0<`{-e>4hfb-UsyQuty7Ua; zOu?B?XLHZaol8GAb3Wnxcu!2v{R_`T4=x`(GvqLI{-*2AOSimkUAw*F_TX^n z@STz9kDQ$NC=!KfXWC z8h`dn#xL(D3Z9UkR7|Q&Hcy#Notk!^zVUSB(}`#4&lYA1f0h2V_PNgUAAWQEt$#LR zcH#y9#i!p(Udq2b^lI6wp1FXzN3T;~FU%Lck$-deE#qz9yYP3D3t8{6?<+s(e(3(_ z^YOu_)K8!O1p}D#{JO;G(*OVf24YJ`L;(K){{a7>y{D4^000SaNLh0L01m_e01m_f zl`9S#00007bV*G`2i*f26e=}1hilyc008kxL_t(o!|j$a4udcZMeQm#K>`MDz|f`Y z*rhv%>)xd!VqxG03@uX6;!Z?vhzzEcve;7s$VE_hT0LcLy001J2 z)rg32i`X6=H#eqnh)&9@8W54TLTGh7!1MKnw(I?i^XcgO(>QE~(CQ!&0V2}lev1lT zu8seyysE|R*rVh4ptkG3h`D`yku@hYI;#%wD2q&VVUNzjfpFh=yDYNkq9Kq*=Vu4z z)FUGNn**^EydV#9p7%96E*uy}>=`dAp#xeS@eD}hQiap#B+r86myvfsGf8qltAqAi fZU6>g0I2~!LQUsM%rA@s00000NkvXXu0mjfN}8gF literal 0 HcmV?d00001 diff --git a/icons/NTOS/ntos.png b/icons/NTOS/ntos.png new file mode 100644 index 0000000000000000000000000000000000000000..8b9d735cc99d9f2053fd024bc4b7a04ca73ae97e GIT binary patch literal 67090 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 literal 0 HcmV?d00001 diff --git a/icons/NTOS/pda.png b/icons/NTOS/pda.png new file mode 100644 index 0000000000000000000000000000000000000000..c6b0bb00fb3d4b956b9a6b8992c6e01670706925 GIT binary patch literal 2953 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 literal 0 HcmV?d00001 diff --git a/icons/NTOS/power.png b/icons/NTOS/power.png new file mode 100644 index 0000000000000000000000000000000000000000..b2e4cc837f15e6262696d5c0272f359fb0aed75f GIT binary patch literal 3055 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 literal 0 HcmV?d00001 diff --git a/icons/NTOS/prison.png b/icons/NTOS/prison.png new file mode 100644 index 0000000000000000000000000000000000000000..a846fe00411518853313b1f3bef444b76d8bb57d GIT binary patch literal 3117 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 JPDHLkV1m49a6141 literal 0 HcmV?d00001 diff --git a/icons/NTOS/records.png b/icons/NTOS/records.png new file mode 100644 index 0000000000000000000000000000000000000000..eaaf68e50d1a5b40661ca43194a52bd1f18536c6 GIT binary patch literal 3069 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 LNkvXXu0mjfkIS_l literal 0 HcmV?d00001 diff --git a/icons/NTOS/research.png b/icons/NTOS/research.png new file mode 100644 index 0000000000000000000000000000000000000000..5ebd63aafccaa9616dee30a13ea4c65ebb3e440f GIT binary patch literal 3120 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 KMNUMnLSTX`{Kpgk literal 0 HcmV?d00001 diff --git a/icons/NTOS/server.png b/icons/NTOS/server.png new file mode 100644 index 0000000000000000000000000000000000000000..6d96b1141398bfed50fb6e890b5725c20d58ec2a GIT binary patch literal 3195 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 literal 0 HcmV?d00001 diff --git a/icons/NTOS/tb_close.png b/icons/NTOS/tb_close.png new file mode 100644 index 0000000000000000000000000000000000000000..b99a6d81542fd3d4def1b7093c8550bfa1c7502f GIT binary patch literal 453 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 XNA`leI!U!S00000NkvXXu0mjfq$U*( literal 0 HcmV?d00001 diff --git a/icons/obj/computer3.dmi b/icons/obj/computer3.dmi new file mode 100644 index 0000000000000000000000000000000000000000..4942da6a6b50d0b0b744a9177053426b7433ab4e GIT binary patch literal 37470 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 L@v!uP<-7k2m?O^n literal 0 HcmV?d00001 From 4067dffb819befa67c437be42658328c486d6f4a Mon Sep 17 00:00:00 2001 From: DJSnapshot Date: Sun, 22 Jun 2014 02:09:22 -0700 Subject: [PATCH 008/304] Can't forget to commit the DME. --- baystation12.dme | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/baystation12.dme b/baystation12.dme index ba4fd0ac65..45911ead56 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -478,8 +478,6 @@ #include "code\game\objects\items\devices\uplinks.dm" #include "code\game\objects\items\devices\violin.dm" #include "code\game\objects\items\devices\whistle.dm" -#include "code\game\objects\items\devices\laptops\laptop.dm" -#include "code\game\objects\items\devices\laptops\medical.dm" #include "code\game\objects\items\devices\PDA\cart.dm" #include "code\game\objects\items\devices\PDA\chatroom.dm" #include "code\game\objects\items\devices\PDA\PDA.dm" @@ -1333,6 +1331,29 @@ #include "code\WorkInProgress\Chinsky\ashtray.dm" #include "code\WorkInProgress\Chinsky\guestpass.dm" #include "code\WorkInProgress\Cib\MedicalSideEffects.dm" +#include "code\WorkInProgress\computer3\bios.dm" +#include "code\WorkInProgress\computer3\buildandrepair.dm" +#include "code\WorkInProgress\computer3\component.dm" +#include "code\WorkInProgress\computer3\computer.dm" +#include "code\WorkInProgress\computer3\computer3_notes.dm" +#include "code\WorkInProgress\computer3\file.dm" +#include "code\WorkInProgress\computer3\laptop.dm" +#include "code\WorkInProgress\computer3\networking.dm" +#include "code\WorkInProgress\computer3\NTOS.dm" +#include "code\WorkInProgress\computer3\program.dm" +#include "code\WorkInProgress\computer3\program_disks.dm" +#include "code\WorkInProgress\computer3\server.dm" +#include "code\WorkInProgress\computer3\storage.dm" +#include "code\WorkInProgress\computer3\computers\arcade.dm" +#include "code\WorkInProgress\computer3\computers\atmos_alert.dm" +#include "code\WorkInProgress\computer3\computers\camera.dm" +#include "code\WorkInProgress\computer3\computers\card.dm" +#include "code\WorkInProgress\computer3\computers\communications.dm" +#include "code\WorkInProgress\computer3\computers\crew.dm" +#include "code\WorkInProgress\computer3\computers\HolodeckControl.dm" +#include "code\WorkInProgress\computer3\computers\law.dm" +#include "code\WorkInProgress\computer3\computers\medical.dm" +#include "code\WorkInProgress\computer3\computers\security.dm" #include "code\WorkInProgress\kilakk\fax.dm" #include "code\WorkInProgress\Mini\atmos_control.dm" #include "code\WorkInProgress\Ported\policetape.dm" From 86db41a5823a66701a76a4b23f36b7b870c5ce2b Mon Sep 17 00:00:00 2001 From: Chinsky Date: Sun, 22 Jun 2014 14:30:50 +0400 Subject: [PATCH 009/304] Merge branch 'master' of https://github.com/Baystation12/Baystation12 Merge branch 'master' of https://github.com/Baystation12/Baystation12 Optimizes crew console scanning to only look for mobs instead of ALL clothing items in the world. --- code/game/machinery/computer/crew.dm | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/code/game/machinery/computer/crew.dm b/code/game/machinery/computer/crew.dm index 49d12a4847..563f621ca4 100644 --- a/code/game/machinery/computer/crew.dm +++ b/code/game/machinery/computer/crew.dm @@ -107,13 +107,9 @@ /obj/machinery/computer/crew/proc/scan() - for(var/obj/item/clothing/under/C in world) - if((C.has_sensor) && (istype(C.loc, /mob/living/carbon/human))) - var/check = 0 - for(var/O in src.tracked) - if(O == C) - check = 1 - break - if(!check) - src.tracked.Add(C) + for(var/mob/living/carbon/human/H in mob_list) + if(istype(H.w_uniform, /obj/item/clothing/under)) + var/obj/item/clothing/under/C = H.w_uniform + if (C.has_sensor) + tracked |= C return 1 \ No newline at end of file From 7a5a3d47aeff6ee378e4487ebbd9883e72224d88 Mon Sep 17 00:00:00 2001 From: DJSnapshot Date: Sun, 22 Jun 2014 03:31:06 -0700 Subject: [PATCH 010/304] Fixed up security, medical, card, and crew. Made Computer 3 actually do what it's supposed to do. --- .../computer3/computers/card.dm | 3 ++- .../computer3/computers/crew.dm | 3 ++- .../computer3/computers/medical.dm | 10 ++++------ .../computer3/computers/security.dm | 3 ++- code/WorkInProgress/computer3/program.dm | 1 + code/datums/browser.dm | 7 +++---- html/browser/common.css | 20 +++++++++++++++++++ 7 files changed, 34 insertions(+), 13 deletions(-) diff --git a/code/WorkInProgress/computer3/computers/card.dm b/code/WorkInProgress/computer3/computers/card.dm index 00e51778a3..7b62612398 100644 --- a/code/WorkInProgress/computer3/computers/card.dm +++ b/code/WorkInProgress/computer3/computers/card.dm @@ -174,7 +174,8 @@ dat = show_manifest() - popup = new(usr, "ID Computer", name, 940, 520) + popup.width = 940 + popup.height = 520 popup.set_content(dat) popup.open() return diff --git a/code/WorkInProgress/computer3/computers/crew.dm b/code/WorkInProgress/computer3/computers/crew.dm index d9ecace0c3..22a8b3425f 100644 --- a/code/WorkInProgress/computer3/computers/crew.dm +++ b/code/WorkInProgress/computer3/computers/crew.dm @@ -67,5 +67,6 @@ Topic(href, list/href_list) if(!interactable() || !computer.cardslot || ..(href,href_list)) return - computer.updateUsrDialog() + if("update" in href_list) + interact() return \ No newline at end of file diff --git a/code/WorkInProgress/computer3/computers/medical.dm b/code/WorkInProgress/computer3/computers/medical.dm index 13302f75b0..e370182744 100644 --- a/code/WorkInProgress/computer3/computers/medical.dm +++ b/code/WorkInProgress/computer3/computers/medical.dm @@ -44,7 +44,8 @@ usr << "\red Unable to establish a connection: \black You're too far away from the station!" return var/dat - if (src.temp) + + if (temp) dat = text("[src.temp]

Clear Screen") else dat = text("Confirm Identity: []
", src, (src.scan ? text("[]", src.scan.name) : "----------")) @@ -138,7 +139,8 @@ else else dat += text("{Log In}", src) - var/datum/browser/popup = new(usr, "med_comp", "Medical Records", 600, 400) + popup.width = 600 + popup.height = 400 popup.set_content(dat) popup.set_title_image(usr.browse_rsc_icon(computer.icon, computer.icon_state)) popup.open() @@ -147,15 +149,11 @@ Topic(href, href_list) if(!interactable() || !computer.cardslot || ..(href,href_list)) return - if (!( data_core.general.Find(src.active1) )) src.active1 = null - if (!( data_core.medical.Find(src.active2) )) src.active2 = null - usr.set_machine(src) - if (href_list["temp"]) src.temp = null diff --git a/code/WorkInProgress/computer3/computers/security.dm b/code/WorkInProgress/computer3/computers/security.dm index 8c6152e1c1..17903477fb 100644 --- a/code/WorkInProgress/computer3/computers/security.dm +++ b/code/WorkInProgress/computer3/computers/security.dm @@ -193,7 +193,8 @@ else else dat += text("{Log In}", src) - var/datum/browser/popup = new(usr, "secure_rec", "Security Records", 600, 400) + popup.width = 600 + popup.height = 400 popup.set_content(dat) popup.set_title_image(usr.browse_rsc_icon(computer.icon, computer.icon_state)) popup.open() diff --git a/code/WorkInProgress/computer3/program.dm b/code/WorkInProgress/computer3/program.dm index 42794f4c2e..e16afe4939 100644 --- a/code/WorkInProgress/computer3/program.dm +++ b/code/WorkInProgress/computer3/program.dm @@ -155,6 +155,7 @@ Programs are a file that can be executed popup = new(user, "\ref[computer]", name, nref=src) popup.set_title_image(usr.browse_rsc_icon(overlay.icon, overlay.icon_state)) popup.set_title_buttons(topic_link(src,"quit","")) + // popup.set_title_buttons("") if(popup.user != user) popup.user = user popup.set_title_image(usr.browse_rsc_icon(overlay.icon, overlay.icon_state)) diff --git a/code/datums/browser.dm b/code/datums/browser.dm index 31124c6faf..09281bf1f7 100644 --- a/code/datums/browser.dm +++ b/code/datums/browser.dm @@ -82,7 +82,7 @@
- [title ? "
[title]
" : ""] + [title ? "
[title]
[title_buttons]
" : ""]
"} @@ -144,7 +144,7 @@ // Otherwise, the user mob's machine var will be reset directly. // /proc/onclose(mob/user, windowid, var/atom/ref=null) - if(!user.client) return + if(!user || !user.client) return var/param = "null" if(ref) param = "\ref[ref]" @@ -166,11 +166,10 @@ //world << "windowclose: [atomref]" if(atomref!="null") // if passed a real atomref var/hsrc = locate(atomref) // find the reffed atom - var/href = "close=1" if(hsrc) //world << "[src] Topic [href] [hsrc]" usr = src.mob - src.Topic(href, params2list(href), hsrc) // this will direct to the atom's + src.Topic("close=1", list("close"="1"), hsrc) // this will direct to the atom's return // Topic() proc via client.Topic() // no atomref specified (or not found) diff --git a/html/browser/common.css b/html/browser/common.css index 9e8b8b0b43..1de45bd953 100644 --- a/html/browser/common.css +++ b/html/browser/common.css @@ -126,6 +126,7 @@ h4 width: 100%; height: 100%; + padding-top:32px; } .uiTitle @@ -138,6 +139,25 @@ h4 font-size: 16px; } +.uiTitleWrapper + { + position:fixed; + top:0px; + left:0px; + right:0px; + z-index: 10 + } + + .uiTitleButtons + { + position:fixed; + top:0px; + right:0px; + height:32px; + z-index:11; + } + + .uiTitle.icon { padding: 6px 8px 6px 42px; From 41362280f3a5ec9ca38f40f52271c7f7a2537579 Mon Sep 17 00:00:00 2001 From: DJSnapshot Date: Sun, 22 Jun 2014 03:46:36 -0700 Subject: [PATCH 011/304] lowercase ntos by request of mloc + updates to background. --- code/WorkInProgress/computer3/NTOS.dm | 22 ++++----- .../computer3/buildandrepair.dm | 2 +- .../computer3/computer3_notes.dm | 2 +- .../computer3/computers/aifixer.dm | 2 +- .../computer3/computers/camera.dm | 4 +- .../computer3/computers/card.dm | 2 +- .../computer3/computers/crew.dm | 24 ++++++---- .../computer3/computers/security.dm | 2 +- code/WorkInProgress/computer3/file.dm | 4 +- code/WorkInProgress/computer3/program.dm | 47 +++++++++---------- .../computer3/upload/lawfile.dm | 2 +- 11 files changed, 59 insertions(+), 54 deletions(-) diff --git a/code/WorkInProgress/computer3/NTOS.dm b/code/WorkInProgress/computer3/NTOS.dm index 54fad87ce0..ee68971083 100644 --- a/code/WorkInProgress/computer3/NTOS.dm +++ b/code/WorkInProgress/computer3/NTOS.dm @@ -2,10 +2,10 @@ The Big Bad NT Operating System */ -/datum/file/program/NTOS +/datum/file/program/ntos name = "Nanotrasen Operating System" extension = "prog" - active_state = "ntos" + active_state = "NTOS" var/obj/item/part/computer/storage/current // the drive being viewed, null for desktop/computer var/fileop = "runfile" @@ -13,12 +13,12 @@ Generate a basic list of files in the selected scope */ -/datum/file/program/NTOS/proc/list_files() +/datum/file/program/ntos/proc/list_files() if(!computer || !current) return null return current.files -/datum/file/program/NTOS/proc/filegrid(var/list/filelist) +/datum/file/program/ntos/proc/filegrid(var/list/filelist) var/dat = "" var/i = 0 for(var/datum/file/F in filelist) @@ -44,7 +44,7 @@ // I am separating this from filegrid so that I don't have to // make metadata peripheral files // -/datum/file/program/NTOS/proc/desktop(var/peripheralop = "viewperipheral") +/datum/file/program/ntos/proc/desktop(var/peripheralop = "viewperipheral") var/dat = "
" var/i = 0 var/list/peripherals = list(computer.hdd,computer.floppy,computer.cardslot) @@ -69,20 +69,20 @@ return dat -/datum/file/program/NTOS/proc/window(var/title,var/buttonbar,var/content) +/datum/file/program/ntos/proc/window(var/title,var/buttonbar,var/content) return {"
-
[title]
+
[title]
[buttonbar]
[content]
"} -/datum/file/program/NTOS/proc/buttonbar(var/type = 0) +/datum/file/program/ntos/proc/buttonbar(var/type = 0) switch(type) if(0) // FILE OPERATIONS return {""} -/datum/file/program/NTOS/interact() +/datum/file/program/ntos/interact() if(!interactable()) return var/dat = {" @@ -162,7 +162,7 @@ -
"} +
"} var/list/files = list_files() if(current) @@ -175,7 +175,7 @@ usr << browse(dat, "window=\ref[computer];size=670x510") onclose(usr, "\ref[computer]") -/datum/file/program/NTOS/Topic(href, list/href_list) +/datum/file/program/ntos/Topic(href, list/href_list) if(!interactable() || ..(href,href_list)) return diff --git a/code/WorkInProgress/computer3/buildandrepair.dm b/code/WorkInProgress/computer3/buildandrepair.dm index 2cb9139f2e..0b1f2d8fd0 100644 --- a/code/WorkInProgress/computer3/buildandrepair.dm +++ b/code/WorkInProgress/computer3/buildandrepair.dm @@ -17,7 +17,7 @@ var/list/records = null var/frame_desc = null - var/datum/file/program/OS = new/datum/file/program/NTOS + var/datum/file/program/OS = new/datum/file/program/ntos /obj/machinery/computer3/proc/disassemble(mob/user as mob) // todo return diff --git a/code/WorkInProgress/computer3/computer3_notes.dm b/code/WorkInProgress/computer3/computer3_notes.dm index f0d0bd5028..c27410e637 100644 --- a/code/WorkInProgress/computer3/computer3_notes.dm +++ b/code/WorkInProgress/computer3/computer3_notes.dm @@ -27,7 +27,7 @@ * Communications terminal printing - move it to a printer of some sort? Make a printer peripheral--but then which ones print the comms? * Remove the partially transparent border on program screens, as it clashes with some frames * Chop the corners on program screens now that screen sizes are standard - * NTOS: + * ntos: * Needs a text editor/viewer * Needs file copy and file move - I think I know how I'm gonna do it * Needs a peripheral view (eject disks and cards, network actions, ???) diff --git a/code/WorkInProgress/computer3/computers/aifixer.dm b/code/WorkInProgress/computer3/computers/aifixer.dm index 45790c50a7..a52e40a0d5 100644 --- a/code/WorkInProgress/computer3/computers/aifixer.dm +++ b/code/WorkInProgress/computer3/computers/aifixer.dm @@ -7,7 +7,7 @@ /datum/file/program/aifixer name = "AI system integrity restorer" desc = "Repairs and revives artificial intelligence cores." - image = 'icons/NTOS/airestore.png' + image = 'icons/ntos/airestore.png' active_state = "ai-fixer-empty" req_access = list(access_captain, access_robotics, access_heads) diff --git a/code/WorkInProgress/computer3/computers/camera.dm b/code/WorkInProgress/computer3/computers/camera.dm index 17e639166d..4da54340c1 100644 --- a/code/WorkInProgress/computer3/computers/camera.dm +++ b/code/WorkInProgress/computer3/computers/camera.dm @@ -65,7 +65,7 @@ prog.key = src prog.camera_list = null return - if(istype(source,/datum/file/program/NTOS)) + if(istype(source,/datum/file/program/ntos)) for(var/obj/item/part/computer/storage/S in list(computer.hdd,computer.floppy)) for(var/datum/file/F in S.files) if(istype(F,/datum/file/program/security)) @@ -175,7 +175,7 @@ /datum/file/program/security name = "camera monitor" desc = "Connets to the Nanotrasen Camera Network" - image = 'icons/NTOS/camera.png' + image = 'icons/ntos/camera.png' active_state = "camera-static" var/datum/file/camnet_key/key = null diff --git a/code/WorkInProgress/computer3/computers/card.dm b/code/WorkInProgress/computer3/computers/card.dm index 7b62612398..660e25a67c 100644 --- a/code/WorkInProgress/computer3/computers/card.dm +++ b/code/WorkInProgress/computer3/computers/card.dm @@ -13,7 +13,7 @@ /datum/file/program/card_comp name = "identification card console" desc = "Used to modify magnetic strip ID cards." - image = 'icons/NTOS/cardcomp.png' + image = 'icons/ntos/cardcomp.png' active_state = "id" var/obj/item/weapon/card/id/reader = null diff --git a/code/WorkInProgress/computer3/computers/crew.dm b/code/WorkInProgress/computer3/computers/crew.dm index 22a8b3425f..2d89b336f8 100644 --- a/code/WorkInProgress/computer3/computers/crew.dm +++ b/code/WorkInProgress/computer3/computers/crew.dm @@ -14,12 +14,12 @@ return scan() - var/t = "" + var/t = "Crew Monitoring
" t += "
Refresh " t += "Close
" - t += "
" + t += "

Name

Vitals

Position

" var/list/logs = list() - for(var/obj/item/clothing/under/C in tracked) + for(var/obj/item/clothing/under/C in src.tracked) var/log = "" var/turf/pos = get_turf(C) if((C) && (C.has_sensor) && (pos) && (pos.z == computer.z) && C.sensor_mode) @@ -32,7 +32,7 @@ var/dam3 = round(H.getFireLoss(),1) var/dam4 = round(H.getBruteLoss(),1) - var/life_status = "[H.stat > 1 ? "Deceased" : "Living"]" + var/life_status = "[H.stat > 1 ? "Deceased" : "Living"]" var/damage_report = "([dam1]/[dam2]/[dam3]/[dam4])" if(H.wear_id) @@ -42,17 +42,18 @@ switch(C.sensor_mode) if(1) - log += "" + log += "" if(2) - log += "" + log += "" if(3) var/area/player_area = get_area(H) - log += "" + log += "" logs += log logs = sortList(logs) for(var/log in logs) t += log t += "
NameVitalsPosition
[life_status]Not Available
[life_status]Not Available
[life_status] [damage_report]Not Available
[life_status] [damage_report]Not Available
[life_status] [damage_report][format_text(player_area.name)] ([pos.x], [pos.y])
[life_status] [damage_report][player_area.name] ([pos.x], [pos.y])
" + t += "
" popup.set_content(t) popup.open() @@ -67,6 +68,11 @@ Topic(href, list/href_list) if(!interactable() || !computer.cardslot || ..(href,href_list)) return - if("update" in href_list) + if( href_list["close"] ) + usr << browse(null, "window=crewcomp") + usr.unset_machine() + return + if(href_list["update"]) interact() - return \ No newline at end of file + //src.updateUsrDialog() + return \ No newline at end of file diff --git a/code/WorkInProgress/computer3/computers/security.dm b/code/WorkInProgress/computer3/computers/security.dm index 17903477fb..77161bb247 100644 --- a/code/WorkInProgress/computer3/computers/security.dm +++ b/code/WorkInProgress/computer3/computers/security.dm @@ -14,7 +14,7 @@ name = "Security Records" desc = "Used to view and edit personnel's security records" active_state = "security" - image = 'icons/NTOS/records.png' + image = 'icons/ntos/records.png' req_one_access = list(access_security, access_forensics_lockers) diff --git a/code/WorkInProgress/computer3/file.dm b/code/WorkInProgress/computer3/file.dm index cd959a7ea0..3693579067 100644 --- a/code/WorkInProgress/computer3/file.dm +++ b/code/WorkInProgress/computer3/file.dm @@ -10,7 +10,7 @@ var/name = "File" var/extension = "dat" var/volume = 10 // in KB - var/image = 'icons/NTOS/file.png' // determines the icon to use, found in icons/NTOS + var/image = 'icons/ntos/file.png' // determines the icon to use, found in icons/ntos var/obj/machinery/computer3/computer // the parent computer, if fixed var/obj/item/part/computer/storage/device // the device that is containing this file @@ -108,7 +108,7 @@ /datum/file/data/text name = "Text File" extension = "txt" - image = 'icons/NTOS/file.png' + image = 'icons/ntos/file.png' content = "" file_increment = 0.002 // 0.002 kilobytes per character (1024 characters per KB) diff --git a/code/WorkInProgress/computer3/program.dm b/code/WorkInProgress/computer3/program.dm index e16afe4939..985ed74d35 100644 --- a/code/WorkInProgress/computer3/program.dm +++ b/code/WorkInProgress/computer3/program.dm @@ -6,7 +6,7 @@ Programs are a file that can be executed /datum/file/program name = "Untitled" extension = "prog" - image = 'icons/NTOS/program.png' + image = 'icons/ntos/program.png' var/desc = "An unidentifiable program." var/image/overlay = null // Icon to be put on top of the computer frame. @@ -154,8 +154,7 @@ Programs are a file that can be executed if(!popup) popup = new(user, "\ref[computer]", name, nref=src) popup.set_title_image(usr.browse_rsc_icon(overlay.icon, overlay.icon_state)) - popup.set_title_buttons(topic_link(src,"quit","")) - // popup.set_title_buttons("") + popup.set_title_buttons(topic_link(src,"quit","")) if(popup.user != user) popup.user = user popup.set_title_image(usr.browse_rsc_icon(overlay.icon, overlay.icon_state)) @@ -254,7 +253,7 @@ Programs are a file that can be executed // if("quit" in href_list) computer.program = null - usr << browse(null,"window=\ref[computer]") // NTOS will need to resize the window + usr << browse(null,"window=\ref[computer]") // ntos will need to resize the window computer.update_icon() computer.updateDialog() return 1 @@ -263,85 +262,85 @@ Programs are a file that can be executed /datum/file/program/RD name = "R&D Manager" - image = 'icons/NTOS/research.png' + image = 'icons/ntos/research.png' desc = "A software suit for generic research and development machinery interaction. Comes pre-packaged with extensive cryptographic databanks for secure connections with external devices." active_state = "rdcomp" volume = 11000 /datum/file/program/RDserv name = "R&D Server" - image = 'icons/NTOS/server.png' + image = 'icons/ntos/server.png' active_state = "rdcomp" volume = 9000 /datum/file/program/SuitSensors name = "Crew Monitoring" - image = 'icons/NTOS/monitoring.png' + image = 'icons/ntos/monitoring.png' active_state = "crew" volume = 3400 /datum/file/program/Genetics name = "Genetics Suite" - image = 'icons/NTOS/genetics.png' + image = 'icons/nots/genetics.png' desc = "A sophisticated software suite containing read-only genetics hardware specifications and a highly compressed genome databank." active_state = "dna" volume = 8000 /datum/file/program/Cloning name = "Cloning Platform" - image = 'icons/NTOS/cloning.png' + image = 'icons/ntos/cloning.png' desc = "A software platform for accessing external cloning apparatus." active_state = "dna" volume = 7000 /datum/file/program/TCOMmonitor name = "TComm Monitor" - image = 'icons/NTOS/tcomms.png' + image = 'icons/ntos/tcomms.png' active_state = "comm_monitor" volume = 5500 /datum/file/program/TCOMlogs name = "TComm Log View" - image = 'icons/NTOS/tcomms.png' + image = 'icons/ntos/tcomms.png' active_state = "comm_logs" volume = 5230 /datum/file/program/TCOMtraffic name = "TComm Traffic" - image = 'icons/NTOS/tcomms.png' + image = 'icons/ntos/tcomms.png' active_state = "generic" volume = 8080 /datum/file/program/securitycam name = "Sec-Cam Viewport" - image = 'icons/NTOS/camera.png' + image = 'icons/ntos/camera.png' drm = 1 active_state = "cameras" volume = 2190 /datum/file/program/securityrecords name = "Security Records" - image = 'icons/NTOS/records.png' + image = 'icons/ntos/records.png' drm = 1 active_state = "security" volume = 2520 /datum/file/program/medicalrecords name = "Medical Records" - image = 'icons/NTOS/medical.png' + image = 'icons/ntos/medical.png' drm = 1 active_state = "medcomp" volume = 5000 /datum/file/program/SMSmonitor name = "Messaging Monitor" - image = 'icons/NTOS/pda.png' + image = 'icons/ntos/pda.png' active_state = "comm_monitor" volume = 3070 /datum/file/program/OperationMonitor name = "OR Monitor" - image = 'icons/NTOS/operating.png' + image = 'icons/ntos/operating.png' active_state = "operating" volume = 4750 @@ -352,38 +351,38 @@ Programs are a file that can be executed /datum/file/program/PowerMonitor name = "Power Grid" - image = 'icons/NTOS/power.png' + image = 'icons/ntos/power.png' active_state = "power" volume = 7200 /datum/file/program/PrisonerManagement name = "Prisoner Control" - image = 'icons/NTOS/prison.png' + image = 'icons/ntos/prison.png' drm = 1 active_state = "power" volume = 5000 /datum/file/program/Roboticscontrol name = "Cyborg Maint" - image = 'icons/NTOS/borgcontrol.png' + image = 'icons/ntos/borgcontrol.png' active_state = "robot" volume = 9050 /datum/file/program/AIupload name = "AI Upload" - image = 'icons/NTOS/aiupload.png' + image = 'icons/ntos/aiupload.png' active_state = "command" volume = 5000 /datum/file/program/Cyborgupload name = "Cyborg Upload" - image = 'icons/NTOS/borgupload.png' + image = 'icons/ntos/borgupload.png' active_state = "command" volume = 5000 /datum/file/program/Exosuit name = "Exosuit Monitor" - image = 'icons/NTOS/exocontrol.png' + image = 'icons/ntos/exocontrol.png' active_state = "mecha" volume = 7000 @@ -394,7 +393,7 @@ Programs are a file that can be executed /datum/file/program/Stationalert name = "Alert Monitor" - image = 'icons/NTOS/alerts.png' + image = 'icons/ntos/alerts.png' active_state = "computer_generic" volume = 10150 diff --git a/code/WorkInProgress/computer3/upload/lawfile.dm b/code/WorkInProgress/computer3/upload/lawfile.dm index e3b21f537e..7fcbac0066 100644 --- a/code/WorkInProgress/computer3/upload/lawfile.dm +++ b/code/WorkInProgress/computer3/upload/lawfile.dm @@ -22,7 +22,7 @@ execute(var/datum/file/program/source) if(istype(usr,/mob/living/silicon)) return - if(istype(source,/datum/file/program/NTOS)) + if(istype(source,/datum/file/program/ntos)) if(configurable) configure() return From 191e21ead6b3a656d456020c9fd38bad915ea259 Mon Sep 17 00:00:00 2001 From: Mloc-Argent Date: Sun, 22 Jun 2014 15:25:23 +0100 Subject: [PATCH 012/304] atmos: fix everlasting fires Fires were checking against a non-reduced air sample for existance, so the reduced sample wasn't working in zburn when it failed the check. Also fixed volatilefuel not being scaled in the phoron reagent. Signed-off-by: Mloc-Argent --- code/ZAS/Fire.dm | 20 ++++++-------------- code/modules/reagents/Chemistry-Reagents.dm | 4 ++-- 2 files changed, 8 insertions(+), 16 deletions(-) diff --git a/code/ZAS/Fire.dm b/code/ZAS/Fire.dm index 8b692c5b13..d4660e5a0e 100644 --- a/code/ZAS/Fire.dm +++ b/code/ZAS/Fire.dm @@ -84,7 +84,7 @@ turf/simulated/hotspot_expose(exposed_temperature, exposed_volume, soh) air_contents.trace_gases.Remove(fuel) //check if there is something to combust - if(!air_contents.check_recombustability(liquid)) + if(!air_contents.check_combustability(liquid)) //del src RemoveFire() @@ -116,7 +116,7 @@ turf/simulated/hotspot_expose(exposed_temperature, exposed_volume, soh) var/datum/gas_mixture/acs = enemy_tile.return_air() var/obj/effect/decal/cleanable/liquid_fuel/liq = locate() in enemy_tile if(!acs) continue - if(!acs.check_recombustability(liq)) continue + if(!acs.check_combustability(liq)) continue //If extinguisher mist passed over the turf it's trying to spread to, don't spread and //reduce firelevel. if(enemy_tile.fire_protection > world.time-30) @@ -134,16 +134,8 @@ turf/simulated/hotspot_expose(exposed_temperature, exposed_volume, soh) ///////////////////////////////// FLOW HAS BEEN CREATED /// DONT DELETE THE FIRE UNTIL IT IS MERGED BACK OR YOU WILL DELETE AIR /////////////////////////////////////////////// if(flow) - - if(flow.check_recombustability(liquid)) - //Ensure flow temperature is higher than minimum fire temperatures. - //this creates some energy ex nihilo but is necessary to get a fire started - //lets just pretend this energy comes from the ignition source and dont mention this again - //flow.temperature = max(PHORON_MINIMUM_BURN_TEMPERATURE+0.1,flow.temperature) - - //burn baby burn! - - flow.zburn(liquid,1) + //burn baby burn! + flow.zburn(liquid,1) //merge the air back S.assume_air(flow) @@ -275,9 +267,9 @@ datum/gas_mixture/proc/check_combustability(obj/effect/decal/cleanable/liquid_fu if(oxygen && (phoron || fuel || liquid)) if(liquid) return 1 - if (phoron >= 0.1) + if(QUANTIZE(phoron * vsc.fire_consuption_rate) >= 0.1) return 1 - if(fuel && fuel.moles >= 0.1) + if(fuel && QUANTIZE(fuel.moles * vsc.fire_consuption_rate) >= 0.1) return 1 return 0 diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index fc2f420c0e..46aafda18b 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -1581,14 +1581,14 @@ datum var/turf/the_turf = get_turf(O) var/datum/gas_mixture/napalm = new var/datum/gas/volatile_fuel/fuel = new - fuel.moles = 5 + fuel.moles = volume napalm.trace_gases += fuel the_turf.assume_air(napalm) reaction_turf(var/turf/T, var/volume) src = null var/datum/gas_mixture/napalm = new var/datum/gas/volatile_fuel/fuel = new - fuel.moles = 5 + fuel.moles = volume napalm.trace_gases += fuel T.assume_air(napalm) return From aa27bdc64c6d78368f66dc480b2b6f698332e346 Mon Sep 17 00:00:00 2001 From: DJSnapshot Date: Sun, 22 Jun 2014 17:19:40 -0700 Subject: [PATCH 013/304] laptop vending part 1. and more cleanup. --- baystation12.dme | 7 + code/WorkInProgress/computer3/NTOS.dm | 2 +- code/WorkInProgress/computer3/computer.dm | 3 + .../computer3/computers/card.dm | 99 ++++++-- .../computer3/computers/medical.dm | 5 + .../computer3/computers/message.dm | 29 ++- .../WorkInProgress/computer3/computers/pod.dm | 218 ------------------ .../computer3/computers/power.dm | 5 +- .../computer3/computers/prisoner.dm | 85 +++---- .../computer3/computers/robot.dm | 6 +- .../computer3/computers/security.dm | 2 +- .../computer3/computers/station_alert.dm | 53 ++--- code/WorkInProgress/computer3/laptop.dm | 2 +- code/WorkInProgress/computer3/program.dm | 2 +- icons/obj/computer3.dmi | Bin 37470 -> 37465 bytes 15 files changed, 178 insertions(+), 340 deletions(-) delete mode 100644 code/WorkInProgress/computer3/computers/pod.dm diff --git a/baystation12.dme b/baystation12.dme index 45911ead56..ddbd5a3e5b 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -1338,6 +1338,7 @@ #include "code\WorkInProgress\computer3\computer3_notes.dm" #include "code\WorkInProgress\computer3\file.dm" #include "code\WorkInProgress\computer3\laptop.dm" +#include "code\WorkInProgress\computer3\lapvend.dm" #include "code\WorkInProgress\computer3\networking.dm" #include "code\WorkInProgress\computer3\NTOS.dm" #include "code\WorkInProgress\computer3\program.dm" @@ -1350,10 +1351,16 @@ #include "code\WorkInProgress\computer3\computers\card.dm" #include "code\WorkInProgress\computer3\computers\communications.dm" #include "code\WorkInProgress\computer3\computers\crew.dm" +#include "code\WorkInProgress\computer3\computers\customs.dm" #include "code\WorkInProgress\computer3\computers\HolodeckControl.dm" #include "code\WorkInProgress\computer3\computers\law.dm" #include "code\WorkInProgress\computer3\computers\medical.dm" +#include "code\WorkInProgress\computer3\computers\Operating.dm" +#include "code\WorkInProgress\computer3\computers\power.dm" +#include "code\WorkInProgress\computer3\computers\prisoner.dm" +#include "code\WorkInProgress\computer3\computers\robot.dm" #include "code\WorkInProgress\computer3\computers\security.dm" +#include "code\WorkInProgress\computer3\computers\welcome.dm" #include "code\WorkInProgress\kilakk\fax.dm" #include "code\WorkInProgress\Mini\atmos_control.dm" #include "code\WorkInProgress\Ported\policetape.dm" diff --git a/code/WorkInProgress/computer3/NTOS.dm b/code/WorkInProgress/computer3/NTOS.dm index ee68971083..8b779d9077 100644 --- a/code/WorkInProgress/computer3/NTOS.dm +++ b/code/WorkInProgress/computer3/NTOS.dm @@ -5,7 +5,7 @@ /datum/file/program/ntos name = "Nanotrasen Operating System" extension = "prog" - active_state = "NTOS" + active_state = "ntos" var/obj/item/part/computer/storage/current // the drive being viewed, null for desktop/computer var/fileop = "runfile" diff --git a/code/WorkInProgress/computer3/computer.dm b/code/WorkInProgress/computer3/computer.dm index 48869571d1..95824e555e 100644 --- a/code/WorkInProgress/computer3/computer.dm +++ b/code/WorkInProgress/computer3/computer.dm @@ -127,6 +127,9 @@ update_icon() + proc/update_spawn_files() + for(var/typekey in spawn_files) + hdd.addfile(new typekey,1) proc/spawn_parts() for(var/typekey in spawn_parts) diff --git a/code/WorkInProgress/computer3/computers/card.dm b/code/WorkInProgress/computer3/computers/card.dm index 660e25a67c..6080b59643 100644 --- a/code/WorkInProgress/computer3/computers/card.dm +++ b/code/WorkInProgress/computer3/computers/card.dm @@ -31,28 +31,85 @@ // the list of jobs won't change after all... proc/scriptblock() var/global/dat = null - if(!dat) - var/jobs_all = "" - for(var/job in list_jobs()) - jobs_all += topic_link(src,"assign=[job]",replacetext(job," "," ")) + " "//make sure there isn't a line break in the middle of a job + var/counter = 0 + var jobs_all = "" + jobs_all += "" + + jobs_all += ""//Captain in special because he is head of heads ~Intercross21 + jobs_all += "" + jobs_all += "" + + counter = 0 + jobs_all += ""//Red + for(var/job in security_positions) + counter++ + if(counter >= 6) + jobs_all += "" + counter = 0 + jobs_all += "" + + counter = 0 + jobs_all += ""//Orange + for(var/job in engineering_positions) + counter++ + if(counter >= 6) + jobs_all += "" + counter = 0 + jobs_all += "" + + counter = 0 + jobs_all += ""//Green + for(var/job in medical_positions) + counter++ + if(counter >= 6) + jobs_all += "" + counter = 0 + jobs_all += "" + + counter = 0 + jobs_all += ""//Purple + for(var/job in science_positions) + counter++ + if(counter >= 6) + jobs_all += "" + counter = 0 + jobs_all += "" + + counter = 0 + jobs_all += ""//Grey + for(var/job in civilian_positions) + counter++ + if(counter >= 6) + jobs_all += "" + counter = 0 + jobs_all += "" + dat = {""} + function markRed(){ + var nameField = document.getElementById('namefield'); + nameField.style.backgroundColor = "#FFDDDD"; + } + function markGreen(){ + var nameField = document.getElementById('namefield'); + nameField.style.backgroundColor = "#DDFFDD"; + } + function markAccountGreen(){ + var nameField = document.getElementById('accountfield'); + nameField.style.backgroundColor = "#DDFFDD"; + } + function markAccountRed(){ + var nameField = document.getElementById('accountfield'); + nameField.style.backgroundColor = "#FFDDDD"; + } + function showAll(){ + var allJobsSlot = document.getElementById('alljobsslot'); + allJobsSlot.innerHTML = "hide
"+ "[jobs_all]"; + } + function hideAll(){ + var allJobsSlot = document.getElementById('alljobsslot'); + allJobsSlot.innerHTML = "[(writer.assignment) ? writer.assignment : "Unassgied"]"; + } + "} return dat // creates the list of access rights on the card diff --git a/code/WorkInProgress/computer3/computers/medical.dm b/code/WorkInProgress/computer3/computers/medical.dm index e370182744..8e6b7cb7fc 100644 --- a/code/WorkInProgress/computer3/computers/medical.dm +++ b/code/WorkInProgress/computer3/computers/medical.dm @@ -11,6 +11,11 @@ default_prog = /datum/file/program/med_data spawn_parts = list(/obj/item/part/computer/storage/hdd,/obj/item/part/computer/cardslot,/obj/item/part/computer/networking/radio) + +/obj/machinery/computer3/laptop/medical + spawn_parts = list(/obj/item/part/computer/storage/hdd,/obj/item/part/computer/cardslot,/obj/item/part/computer/networking/radio) + spawn_files = list(/datum/file/program/arcade,/datum/file/program/crew,/datum/file/program/med_data) + /datum/file/program/med_data name = "Medical Records" desc = "This can be used to check medical records." diff --git a/code/WorkInProgress/computer3/computers/message.dm b/code/WorkInProgress/computer3/computers/message.dm index d03f4a4753..3bbb580f5e 100644 --- a/code/WorkInProgress/computer3/computers/message.dm +++ b/code/WorkInProgress/computer3/computers/message.dm @@ -2,6 +2,9 @@ default_prog = /datum/file/program/message_mon spawn_parts = list(/obj/item/part/computer/storage/hdd,/obj/item/part/computer/networking/prox) + +//BROKEN AS HELL, DON'T USE UNTIL FIXED + /datum/file/program/message_mon name = "Message Monitor Console" desc = "Used to Monitor the crew's messages, that are sent via PDA. Can also be used to view Request Console messages." @@ -35,6 +38,13 @@ var/custommessage = "This is a test, please ignore." + procinitialize() + if(!linkedServer) + if(message_servers && message_servers.len > 0) + linkedServer = message_servers[1] + return + + update_icon() if(emag || hacking) overlay.icon_state = hack_icon @@ -45,12 +55,12 @@ interact() if(!interactable()) return - //If the computer is being hacked or is emagged, display the reboot message. if(hacking || emag) message = rebootmsg - - var/dat = "
/
" + var/dat = "Message Monitor Console" + dat += "

Message Monitor Console


" + dat += "

" if(auth) dat += "

\[Authenticated\] /" @@ -61,12 +71,9 @@ if(hacking || emag) screen = 2 - else - if(!auth) - screen = 0 - if( !linkedServer || (linkedServer.stat & (NOPOWER|BROKEN)) ) - message = noserver - screen = 0 + else if(!auth || !linkedServer || (linkedServer.stat & (NOPOWER|BROKEN))) + if(!linkedServer || (linkedServer.stat & (NOPOWER|BROKEN))) message = noserver + screen = 0 switch(screen) //Main menu @@ -202,9 +209,11 @@

"} dat += "
Command
SpecialCaptainCustom
Security
[replacetext(job, " ", " ")]
Engineering
[replacetext(job, " ", " ")]
Medical
[replacetext(job, " ", " ")]
Science
[replacetext(job, " ", " ")]
Civilian
[replacetext(job, " ", " ")][rc.rec_dpt][rc.message][rc.stamp][rc.id_auth][rc.priority]
" - message = defaultmsg + popup.width = 700 + popup.height = 700 popup.set_content(dat) + popup.set_title_image(usr.browse_rsc_icon(computer.icon, computer.icon_state)) popup.open() return diff --git a/code/WorkInProgress/computer3/computers/pod.dm b/code/WorkInProgress/computer3/computers/pod.dm deleted file mode 100644 index 47f45b1c91..0000000000 --- a/code/WorkInProgress/computer3/computers/pod.dm +++ /dev/null @@ -1,218 +0,0 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 - -/obj/machinery/computer3/pod - name = "Pod Launch Control" - desc = "A controll for launching pods. Some people prefer firing Mechas." - icon_state = "computer_generic" - var/id = 1.0 - var/obj/machinery/mass_driver/connected = null - var/timing = 0.0 - var/time = 30.0 - var/title = "Mass Driver Controls" - - -/obj/machinery/computer3/pod/New() - ..() - spawn( 5 ) - for(var/obj/machinery/mass_driver/M in world) - if(M.id == id) - connected = M - else - return - return - - -/obj/machinery/computer3/pod/proc/alarm() - if(stat & (NOPOWER|BROKEN)) - return - - if(!( connected )) - viewers(null, null) << "Cannot locate mass driver connector. Cancelling firing sequence!" - return - - for(var/obj/machinery/door/poddoor/M in world) - if(M.id == id) - M.open() - return - sleep(20) - - for(var/obj/machinery/mass_driver/M in world) - if(M.id == id) - M.power = connected.power - M.drive() - - sleep(50) - for(var/obj/machinery/door/poddoor/M in world) - if(M.id == id) - M.close() - return - return - - -/obj/machinery/computer3/pod/attackby(I as obj, user as mob) - if(istype(I, /obj/item/tool/screwdriver)) - playsound(loc, 'sound/items/Screwdriver.ogg', 50, 1) - if(do_after(user, 20)) - if(stat & BROKEN) - user << "\blue The broken glass falls out." - var/obj/structure/computerframe/A = new /obj/structure/computerframe( loc ) - new /obj/item/trash/shard( loc ) - - //generate appropriate circuitboard. Accounts for /pod/old computer types - var/obj/item/part/board/circuit/pod/M = null - if(istype(src, /obj/machinery/computer/pod/old)) - M = new /obj/item/part/board/circuit/olddoor( A ) - if(istype(src, /obj/machinery/computer/pod/old/syndicate)) - M = new /obj/item/part/board/circuit/syndicatedoor( A ) - if(istype(src, /obj/machinery/computer/pod/old/swf)) - M = new /obj/item/part/board/circuit/swfdoor( A ) - else //it's not an old computer. Generate standard pod circuitboard. - M = new /obj/item/part/board/circuit/pod( A ) - - for (var/obj/C in src) - C.loc = loc - M.id = id - A.circuit = M - A.state = 3 - A.icon_state = "3" - A.anchored = 1 - del(src) - else - user << "\blue You disconnect the monitor." - var/obj/structure/computerframe/A = new /obj/structure/computerframe( loc ) - - //generate appropriate circuitboard. Accounts for /pod/old computer types - var/obj/item/part/board/circuit/pod/M = null - if(istype(src, /obj/machinery/computer/pod/old)) - M = new /obj/item/part/board/circuit/olddoor( A ) - if(istype(src, /obj/machinery/computer/pod/old/syndicate)) - M = new /obj/item/part/board/circuit/syndicatedoor( A ) - if(istype(src, /obj/machinery/computer/pod/old/swf)) - M = new /obj/item/part/board/circuit/swfdoor( A ) - else //it's not an old computer. Generate standard pod circuitboard. - M = new /obj/item/part/board/circuit/pod( A ) - - for (var/obj/C in src) - C.loc = loc - M.id = id - A.circuit = M - A.state = 4 - A.icon_state = "4" - A.anchored = 1 - del(src) - else - attack_hand(user) - return - - -/obj/machinery/computer3/pod/attack_ai(var/mob/user as mob) - return attack_hand(user) - - -/obj/machinery/computer3/pod/attack_paw(var/mob/user as mob) - return attack_hand(user) - - -/obj/machinery/computer3/pod/attack_hand(var/mob/user as mob) - if(..()) - return - - var/dat = "" - user.set_machine(src) - if(connected) - var/d2 - if(timing) //door controls do not need timers. - d2 = "Stop Time Launch" - else - d2 = "Initiate Time Launch" - var/second = time % 60 - var/minute = (time - second) / 60 - dat += "
\nTimer System: [d2]\nTime Left: [minute ? "[minute]:" : null][second] - - + +" - var/temp = "" - var/list/L = list( 0.25, 0.5, 1, 2, 4, 8, 16 ) - for(var/t in L) - if(t == connected.power) - temp += "[t] " - else - temp += "[t] " - dat += "
\nPower Level: [temp]
\nFiring Sequence
\nTest Fire Driver
\nToggle Outer Door
" - else - dat += "
\nToggle Outer Door
" - dat += "

Close" - add_fingerprint(usr) - //user << browse(dat, "window=computer;size=400x500") - //onclose(user, "computer") - var/datum/browser/popup = new(user, "computer", title, 400, 500) - popup.set_content(dat) - popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) - popup.open() - return - - -/obj/machinery/computer3/pod/process() - if(!..()) - return - if(timing) - if(time > 0) - time = round(time) - 1 - else - alarm() - time = 0 - timing = 0 - updateDialog() - return - - -/obj/machinery/computer3/pod/Topic(href, href_list) - if(..()) - return - if((usr.contents.Find(src) || (in_range(src, usr) && istype(loc, /turf))) || (istype(usr, /mob/living/silicon))) - usr.set_machine(src) - if(href_list["power"]) - var/t = text2num(href_list["power"]) - t = min(max(0.25, t), 16) - if(connected) - connected.power = t - if(href_list["alarm"]) - alarm() - if(href_list["time"]) - timing = text2num(href_list["time"]) - if(href_list["tp"]) - var/tp = text2num(href_list["tp"]) - time += tp - time = min(max(round(time), 0), 120) - if(href_list["door"]) - for(var/obj/machinery/door/poddoor/M in world) - if(M.id == id) - if(M.density) - M.open() - else - M.close() - updateUsrDialog() - return - - - -/obj/machinery/computer3/pod/old - icon_state = "old" - name = "DoorMex Control Console" - title = "Door Controls" - - - -/obj/machinery/computer3/pod/old/syndicate - name = "ProComp Executive IIc" - desc = "The Syndicate operate on a tight budget. Operates external airlocks." - title = "External Airlock Controls" - req_access = list(access_syndicate) - -/obj/machinery/computer3/pod/old/syndicate/attack_hand(var/mob/user as mob) - if(!allowed(user)) - user << "\red Access Denied" - return - else - ..() - -/obj/machinery/computer3/pod/old/swf - name = "Magix System IV" - desc = "An arcane artifact that holds much magic. Running E-Knock 2.2: Sorceror's Edition" diff --git a/code/WorkInProgress/computer3/computers/power.dm b/code/WorkInProgress/computer3/computers/power.dm index 4bd838a207..6e27da0568 100644 --- a/code/WorkInProgress/computer3/computers/power.dm +++ b/code/WorkInProgress/computer3/computers/power.dm @@ -11,7 +11,8 @@ proc/format(var/obj/machinery/power/apc/A) var/static/list/S = list(" Off","AOff"," On", " AOn") var/static/list/chg = list("N","C","F") - return "[copytext(add_tspace("\The [A.area]", 30), 1, 30)] [S[A.equipment+1]] [S[A.lighting+1]] [S[A.environ+1]] [add_lspace(A.lastused_total, 6)] [A.cell ? "[add_lspace(round(A.cell.percent()), 3)]% [chg[A.charging+1]]" : " N/C"]
" + return "[copytext(add_tspace("\The [A.area]", 30), 1, 30)] [S[A.equipment+1]] [S[A.lighting+1]] [S[A.environ+1]] \ + [add_lspace(A.lastused_total, 6)] [A.cell ? "[add_lspace(round(A.cell.percent()), 3)]% [chg[A.charging+1]]" : " N/C"]
" interact() if(!interactable()) @@ -23,7 +24,7 @@ var/t = "" t += "Refresh

" if(!L || !L.len) - t += "\red No connection" + t += "No connection" else var/datum/powernet/powernet = computer.net.connect_to(/datum/powernet,null) if(powernet) diff --git a/code/WorkInProgress/computer3/computers/prisoner.dm b/code/WorkInProgress/computer3/computers/prisoner.dm index d88a8bffdf..529a210e43 100644 --- a/code/WorkInProgress/computer3/computers/prisoner.dm +++ b/code/WorkInProgress/computer3/computers/prisoner.dm @@ -1,11 +1,14 @@ //This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 - /obj/machinery/computer3/prisoner + default_prog = /datum/file/program/prisoner + spawn_parts = list(/obj/item/part/computer/storage/hdd,/obj/item/part/computer/networking/radio) + icon_state = "frame-sec" + +/datum/file/program/prisoner name = "Prisoner Management Comsole" - icon = 'icons/obj/computer.dmi' - icon_state = "explosive" + active_state = "explosive" req_access = list(access_armory) - circuit = "/obj/item/part/board/circuit/prisoner" + var/id = 0.0 var/temp = null var/status = 0 @@ -14,18 +17,9 @@ var/screen = 0 // 0 - No Access Denied, 1 - Access allowed - attack_ai(var/mob/user as mob) - return src.attack_hand(user) - - - attack_paw(var/mob/user as mob) - return - - - attack_hand(var/mob/user as mob) - if(..()) + interact() + if(!interactable()) return - user.set_machine(src) var/dat dat += "Prisoner Implant Manager System
" if(screen == 0) @@ -35,7 +29,7 @@ var/turf/Tr = null for(var/obj/item/weapon/implant/chem/C in world) Tr = get_turf(C) - if((Tr) && (Tr.z != src.z)) continue//Out of range + if((Tr) && (Tr.z != computer.z)) continue//Out of range if(!C.implanted) continue dat += "[C.imp_in.name] | Remaining Units: [C.reagents.total_volume] | Inject: " dat += "((1))" @@ -45,7 +39,7 @@ dat += "
Tracking Implants
" for(var/obj/item/weapon/implant/tracking/T in world) Tr = get_turf(T) - if((Tr) && (Tr.z != src.z)) continue//Out of range + if((Tr) && (Tr.z != computer.z)) continue//Out of range if(!T.implanted) continue var/loc_display = "Unknown" var/mob/living/carbon/M = T.imp_in @@ -55,55 +49,52 @@ if(T.malfunction) loc_display = pick(teleportlocs) dat += "ID: [T.id] | Location: [loc_display]
" - dat += "(Message Holder) |
" + dat += "(Send Message
) |
" dat += "********************************
" dat += "
Lock Console" - user << browse(dat, "window=computer;size=400x500") - onclose(user, "computer") + popup.width = 400 + popup.height = 500 + popup.set_content(dat) + popup.set_title_image(usr.browse_rsc_icon(computer.icon, computer.icon_state)) + popup.open() return process() if(!..()) - src.updateDialog() + interact() return Topic(href, href_list) - if(..()) + if(!interactable() || ..(href,href_list)) return - if((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon))) - usr.set_machine(src) - if(href_list["inject1"]) - var/obj/item/weapon/implant/I = locate(href_list["inject1"]) - if(I) I.activate(1) + if(href_list["inject1"]) + var/obj/item/weapon/implant/I = locate(href_list["inject1"]) + if(I) I.activate(1) - else if(href_list["inject5"]) - var/obj/item/weapon/implant/I = locate(href_list["inject5"]) - if(I) I.activate(5) + else if(href_list["inject5"]) + var/obj/item/weapon/implant/I = locate(href_list["inject5"]) + if(I) I.activate(5) - else if(href_list["inject10"]) - var/obj/item/weapon/implant/I = locate(href_list["inject10"]) - if(I) I.activate(10) + else if(href_list["inject10"]) + var/obj/item/weapon/implant/I = locate(href_list["inject10"]) + if(I) I.activate(10) - else if(href_list["lock"]) - if(src.allowed(usr)) - screen = !screen - else - usr << "Unauthorized Access." + else if(href_list["lock"]) + screen = !screen - else if(href_list["warn"]) - var/warning = copytext(sanitize(input(usr,"Message:","Enter your message here!","")),1,MAX_MESSAGE_LEN) - if(!warning) return - var/obj/item/weapon/implant/I = locate(href_list["warn"]) - if((I)&&(I.imp_in)) - var/mob/living/carbon/R = I.imp_in - R << "\green You hear a voice in your head saying: '[warning]'" + else if(href_list["warn"]) + var/warning = copytext(sanitize(input(usr,"Message:","Enter your message here!","")),1,MAX_MESSAGE_LEN) + if(!warning) return + var/obj/item/weapon/implant/I = locate(href_list["warn"]) + if((I)&&(I.imp_in)) + var/mob/living/carbon/R = I.imp_in + R << "\green You hear a voice in your head saying: '[warning]'" - src.add_fingerprint(usr) - src.updateUsrDialog() + interact() return diff --git a/code/WorkInProgress/computer3/computers/robot.dm b/code/WorkInProgress/computer3/computers/robot.dm index e3eca9ace2..98eea82f9c 100644 --- a/code/WorkInProgress/computer3/computers/robot.dm +++ b/code/WorkInProgress/computer3/computers/robot.dm @@ -74,9 +74,9 @@ dat += " Independent from AI |" if (istype(usr, /mob/living/silicon)) if(issilicon(usr) && is_special_character(usr) && !R.emagged) - dat += "(Hack) " - dat += "([R.canmove ? "Lockdown" : "Release"]) " - dat += "(Destroy)" + dat += "(Hack) " + dat += "([R.canmove ? "Lockdown" : "Release"]) " + dat += "(Destroy)" dat += "
" dat += "(Return to Main Menu)
" if(screen == 2) diff --git a/code/WorkInProgress/computer3/computers/security.dm b/code/WorkInProgress/computer3/computers/security.dm index 77161bb247..7d94f892bb 100644 --- a/code/WorkInProgress/computer3/computers/security.dm +++ b/code/WorkInProgress/computer3/computers/security.dm @@ -10,7 +10,7 @@ icon_state = "laptop" -/datum/file/program/secure_data//TODO:SANITY +/datum/file/program/secure_data name = "Security Records" desc = "Used to view and edit personnel's security records" active_state = "security" diff --git a/code/WorkInProgress/computer3/computers/station_alert.dm b/code/WorkInProgress/computer3/computers/station_alert.dm index 2ee767a39a..850bfc83c5 100644 --- a/code/WorkInProgress/computer3/computers/station_alert.dm +++ b/code/WorkInProgress/computer3/computers/station_alert.dm @@ -1,33 +1,23 @@ - /obj/machinery/computer3/station_alert + default_prog = /datum/file/program/station_alert + spawn_parts = list(/obj/item/part/computer/storage/hdd,/obj/item/part/computer/networking/radio) + icon_state = "frame-eng" + + +/datum/file/program/station_alert name = "Station Alert Console" desc = "Used to access the station's automated alert system." - icon_state = "alert:0" - circuit = "/obj/item/part/board/circuit/stationalert" + active_state = "alert:0" var/alarms = list("Fire"=list(), "Atmosphere"=list(), "Power"=list()) - - attack_ai(mob/user) - add_fingerprint(user) - if(stat & (BROKEN|NOPOWER)) - return - interact(user) - return - - - attack_hand(mob/user) - add_fingerprint(user) - if(stat & (BROKEN|NOPOWER)) - return - interact(user) - return - - interact(mob/user) usr.set_machine(src) - var/dat = "" + if(!interactable()) + return + var/dat = "Current Station Alerts\n" + dat += "Close

" for (var/cat in src.alarms) - dat += text("

[]

", cat) + dat += text("[]
\n", cat) var/list/L = src.alarms[cat] if (L.len) for (var/alarm in L) @@ -36,7 +26,7 @@ var/list/sources = alm[3] dat += "" dat += "• " - dat += "[format_text(A.name)]" + dat += "[A.name]" if (sources.len > 1) dat += text(" - [] sources", sources.len) dat += "
\n" @@ -45,11 +35,10 @@ dat += "
\n" //user << browse(dat, "window=alerts") //onclose(user, "alerts") - var/datum/browser/popup = new(user, "alerts", "Current Station Alerts") - popup.add_head_content("") popup.set_content(dat) - popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) + popup.set_title_image(usr.browse_rsc_icon(computer.icon, computer.icon_state)) popup.open() + return Topic(href, href_list) @@ -59,8 +48,6 @@ proc/triggerAlarm(var/class, area/A, var/O, var/alarmsource) - if(stat & (BROKEN)) - return var/list/L = src.alarms[class] for (var/I in L) if (I == A.name) @@ -82,8 +69,6 @@ proc/cancelAlarm(var/class, area/A as area, obj/origin) - if(stat & (BROKEN)) - return var/list/L = src.alarms[class] var/cleared = 0 for (var/I in L) @@ -98,17 +83,15 @@ return !cleared + process() - if(stat & (BROKEN|NOPOWER)) - icon_state = "atmos0" - return var/active_alarms = 0 for (var/cat in src.alarms) var/list/L = src.alarms[cat] if(L.len) active_alarms = 1 if(active_alarms) - icon_state = "alert:2" + active_state = "alert:2" else - icon_state = "alert:0" + active_state = "alert:0" ..() return diff --git a/code/WorkInProgress/computer3/laptop.dm b/code/WorkInProgress/computer3/laptop.dm index c681ff50a7..4b3368b946 100644 --- a/code/WorkInProgress/computer3/laptop.dm +++ b/code/WorkInProgress/computer3/laptop.dm @@ -25,7 +25,7 @@ item_state = "laptop-inhand" pixel_x = 2 pixel_y = -3 - w_class = 4 + w_class = 3 var/obj/machinery/computer3/laptop/stored_computer = null diff --git a/code/WorkInProgress/computer3/program.dm b/code/WorkInProgress/computer3/program.dm index 985ed74d35..67e1d7b3d3 100644 --- a/code/WorkInProgress/computer3/program.dm +++ b/code/WorkInProgress/computer3/program.dm @@ -281,7 +281,7 @@ Programs are a file that can be executed /datum/file/program/Genetics name = "Genetics Suite" - image = 'icons/nots/genetics.png' + image = 'icons/ntos/genetics.png' desc = "A sophisticated software suite containing read-only genetics hardware specifications and a highly compressed genome databank." active_state = "dna" volume = 8000 diff --git a/icons/obj/computer3.dmi b/icons/obj/computer3.dmi index 4942da6a6b50d0b0b744a9177053426b7433ab4e..1fb6ce267ef9d6da564cef9948c25f8ad2ed886b 100644 GIT binary patch delta 33737 zcmZs?2UrtZy9OFiL{Y>oA}T`k7eqn8Eh>ikc70EJGl3M&bjxwK99*{$V}Gy*0;X5tTp2~qC+{NWmh%; zXP>wLv_q4&hQTJyDi2HQHddJW(ksiFABQcP+B!7vR5?=X3cR}$Eru^44h)w2dgC+vXgKDb^}{ONZlosVTdF3tBV989r>IRJ2hQlAsP$c(TeBVE z226c-OD88M(Mvkdo;{;k(j%B@l*{LV_ZkQU!ZpBmR2MN3lX7)7rLoZ3w7j zfZbDSLxnTz!@!? zQB9`zyfLl`obAdeYHl`?2T(XiP4}*TRUO?^=-vx%pccQbN^IXI3a9y0yJDqSjk)-~ zMt+HWxM|6*FXB5;liZ2ss0Vy%XWGROal}{49f(+NAR})OVJCg~@^fpw zjjxviSp#TY-~9aii?xDl?%$>~t0x1E_nOP>HmlA6(=RRptB*0Hj=MuhbzH$O zTsRBhY0P?mar+#VgV_!iqooU-)eAy4J67Gf&ilAkqrVL!G}Ub6n(Gh$useP%);M|j z#=$ap#IVdxE$^S7{&ou;J%i;{EY#9V9XChJ738mW`r$NX5txukF(?0KF`fIro|o3I zn9A#iRUANMY6k#^IcH4luaeZ|Z*7jCh?8@aZMp6GR6NjFSXg*6U^XcsXR0;cDOd&dN82Zy5Ui}AC`o$1<|i#2IQapo^<$>jWC^Hjic z(4Z#zjTt7mCco7}Z&A<2CL^ERupnX5D{Y~d_e8z+Tz+?^O=U}Mw|=l?Z|d8TdPdbq zFCk(^mDRLC>XOtg_u*K#GLP^7Y2Y+0+Q4~TYxleN_6eu`#*cZHuO8CgCS?9?5pkA) zV-*E1O*Ef8xC7BN`Jd;hn(lMT0E+v!VnJTs;T_)!tnybA@q$lQn=4`n2ZZoUYRKQQ zn@HIQK3s(Y=>`@DkIRCJP7!yH+kC}9JThE6t0nm#I#L7Abmd*#~}n7Jv=bKdx_bZx7X+k~H?2+Vh&6%T-1%RzlT zz2d?`l?(&nVUxC^o>Ugd!f-rhJ5*WIn&PGlBZ(FUM~|*eL4(A`fj%AvTuIr$0l4j$ zL1lyGzYVLz5yutIwE7rbRi@k{Mx&g8tCNILpYuaF=~YGAus5MoXtFSAk)YnNYMBwz zBG)DXBu(rGubABfwgb}2S2}FAH0cE z<-{3aPZ8yBN_1>UFO*_xNxNr)rhRNgMTfd z7qEN;!bPw%RLp;_zknB=V~*7?jJH>(6=8&ha3kZD1|eC1eE};BUzP`s1|0fj9@T}D zw*Q#*qY59spzRdSs4Oh)8a3)(-CEBc2E18tUHMvqpV+EV|2%kW>J2)#fv5HNB!NKC z==X`O!6G8xpSy!a(Cca~omeayZ{F|2&sGhSZUZ@C$|ot5pln<)tL5$Cal|?vzaV9@ z4L~4v$cu^iuTR4>ci&#g(2;2cJ>XjWHyd(m$G+#0^gI&|9}Qs6o(Wn0EGny%Xe^<6 zGr;2m#vb=%;MsBEdNJiRavDDIC=FqCzR-_^xAbk!%+r!F(|)0=*Fw3`G)&_x>&;p| z{XE$%dq!nKt8uxrcJ1dkoscE!kOMJYtva%WraX~8s2ZD}8Kx4P_8Q%|l9c#eLLRtt z=Q76$yiH3`p?zq7s3pYrk~Ta=8T>|&D002pY0_kKxlJ$R56(O@6|xB-C0daRYG@Hm z(9kv^7fyn>#`zU`<sn@|VSgKDahj({|e~0%YPXfLTraHzu_K zEN#@Wn>-YMNjY{PuvLc)EbLxK-^RUI9rw@YO_AK}UX1XWB{IBHapsE^y1|il2m{7&>Gvx?*C^}O-7PWr{57Gdmd=IXwI+@MRAz5>V>Lx9gDaL#BFlp8K2tPGZ; zd>zQeZyA6v-s0CAjDAisRPQXOWtw){M9nY!D!Boy9gP5V;p5|)75ZPE<62q66(+;b zq-^E#r}!s447<~*cILGftqUV?Bsww=kA+<;sWKoh>iEbTTqD^z;OQxf>*t)wl|+|} zI%}ICzO10VrY7`CI~!R0{IJ#Z5IxKjdb(G$;>KqQdF^|OWVF*h8WA^OgQk6baVRui zlL<8P1_-8><6(oXV*%azUY?$JSsINrLLURv z@}Ag0b1;qJ^~s%(R%m&P9LF|4Nhl1MybXhEsBH9po%`=R#IEkEspb6oF2M9xb27s# zBR;Q;R*Zz<-Zd`0O`wnV-hZM<>&ggDb`1W-rJ9!Z{rK?;Y!Wxfa>ruJS_?LRN zjb9C*+`!VJ5J}+hubHpvRzcWsxWqt>RPBOud8~cly%sDF04(e7c0XloOMq4 zvpz86BSo6^B=L>D!7BDY(P6{ol z&t9*rK{k{*1JCRn^ESCFsXFIj%ID>It(l(N*jPpayxLwKrPTyb=f=YqD>b(6k_J1{ znoeP{$7?H#R0rSzF$h_5`HXsDBN4u~PYo=A3ma7FT{7Mf7XA(ge;JE-hDoRzBE!YIJy|dl9$CvWgM)(IZwl2^-YgzBt2WA|g?%Y_iV+v?r!wF|yabPelSlWXww=~G(^(=nl6kqs=S7Z#8D^ugA zs6UED{Nb!tLZYp#tX_~E`~7*Vv;>jkm(xXm^Yew#nlK(M|5P}@z60~xGi7f)^HY|z z+}d7tm=FjSnzuW8vf~Zxm)CDH_v=^BObVtHrqmyi2*cz6B^kzq!Y+7F?2pl8t@3sq zQw?;zbag$@p3lxgn5t3PzbTA0sDEe2#~ZLXcp@(Tr1od+j+<~3K)LC}xw$#VwPR;n z$fV_GRlp6^jfPQumjgOFVk@#@5+28(S|%p4Hi?U~Fi;Zr`HdJ9?|Zz;KGR;f3F?2h zArX;D0U1}mvfxpjX-}cUInbFT$w*Qq*b&|E8rmsJ>q;fhYsVvs{e!ZpLGYbm(DYS} zhBMq;9y?y`yF7-`la#Q~fwRGyWAK^4*DHP{1dHyZ`9e50nH16Ql5 zQURbFymDJix{tpAqS}+y%tkn5Z+>T$=^xbSJ=v2g6N@XBrWdBeK-<6Q_k!PicBO>vd3MygqRrW+F3rT7_5A`V-Tt7DjHwVoRpiEZS@rRD4JUkQ%J&^kFJO z0rzNp0`|ZFII_Wh*M3+mF`>g&sV7^e0O`@_GoMue%POA7!*c8%#3K|U^6ZM}y7n4g zZT|D}d#sxWUOl?6ipS%vb_F+Dt(P+9UXf=LMp?EsL zr-ti-3A;6%^$G>yN<;Ca56oMrxFLY%WR>?Wm!RQy#AJ@H`Xf1I3gy|WD7igubc=ri zL)C$Q|LABHE4kTdNJH;$CiTaK5u2uKJ7;|`IX`Wf4<0f64rl|1<7S-Vq5N9QD50U2WsA)R!O<&k*K_m0bzw_>r$v}eE&%i#|F zQd^08?vG_H%(DH4w7&aF+qQ4_>di3;d(v_`JUslA&+thWn_X*Q@NVm$>3g1$#P*Bf z>P~KyoZN;ups=D6xfns!Wfh_uRJ0l*xGN9EUp^U1rX6x)?O`vB6&0yzxk`RG;aXLB z+kDo*7Oguvf6AA{T0`z#@)s-u4Av^@gKyD~Wy~>}Ui)gelFiDfX^li*Ct2sYRG_2Ri+Jt>1BIVQCA@$xex35hVgPku>n)(8YdtuFm)F zrNW}pd)xLohr&X%e|)^ORU!N`+VO7m;$&~GnS9is-ExW!*sBD}y*aHd zgEHx`Nqk0uDxr-NgnT2os?uVEo5f_SoyGQ}*ES*$e?>h+cr^4bz>r@%S6HN2Q2d6q z98`?n;}H7ko-D{_2dUXtTuNx$S4AY&ogNK~Ui4Vu>wws9Y94_`PyFzv`Fe4Fj1;a5-1>=Gsm^I|Xg?)F!jzh(`kh{?^w~jn>DHX5$9#r@GvC3k} z)N{39g20fqbG-XmMy5_7eE$8zP&l`;dl!R8ELcu&3#_h~CfGV?AdWuhTh_uNvYT)$ zLd_o)!o!_|uJ7m4a~!KzK4cbrOqB~r!-$4<1L5OSyy_do;P)}zH|Ubvx6g`oR`V$$ z2*Z2dY!DghZ2!U?+-64d!7C#SI-H-eIoyU~cQ;Z_{v0`1tKcHb$*F)RA-EzNZas`6 zV*Q5~TBK0vx|@7k4jf0H9cdv8xXi#`JqO84*XMu6ML*f?bu~(fthqj=5BT1bF$5wN ze+IDv_f-Gx?7M>qQP{Fkd>Zg`9M(8+ymyNpfZq&19{BeUZ?zt7x}+kdzuJ>wCe2r zWOD9cnMdTGlkVoUIZTaA+1q&5FT$g@n1kUwv$d0USkE5F+&%W`FEVpfZ z{3y#*6>w2%$rlHds$;a`aph8Oj8<5>w}sldOti)$fgk>VY&J~YRkuema_f1ChfhY5 zO4&Q6{gwQ+55Ak28~RI_R7HAQl%;(6RTgYCd3=1d1&7?X8ID^kvI>vbd{yN00wlXS z@bNQmq~=&rjs$w?$6rD*k^X$rTZtUjw70=C;3D_-4r*Hbm<4~zhctj3xO;R~Yw9kq zWn7#9mVro|;CB6fI0_0!WTyX9e@5}>r?BN1)}wtFcl@m>_#v!7jk8r6Q(Hg`Lm=oa&7k9EQ@o;AGr+r_Z_DLA;v&`2Si3$T0 z2Xe#jwRiIL3tj|<=R9m>EDq1|td6WJ86P@-HP5>+a5Z8Ozf$- z`-_W#6T<vuAOcxeG7Ku*yUbc_SqS_!P7CYMK}OU-!=t%A`u|f zL3wGurkIH3&xNI>gK!~Y0c%t7-Z1A`&*XK72Yy@V{rUMxW$@y7eQRo{7A2xwkp}y6 zIygbKZzK1%yk5xF6b!Crcx2?%$&)$jX3Yy2rh`o7p)}vxqrw=idLx)e)r3;`) z#`hsV8El*+Oo#M<--p0=n^!6w3-IjL5%2(>oW#o>jK;;MnXjz?|185<^V--+X>ni%G-b!K0Z#_}})z(=HAL5B|)N|4&3_ z<~RNh-1-;6UxHE@L;9C_IrXYzNB&P|r-CITcW4aW(y&Pu{EpyyTuOEzE*`xC^&c?^ z{cosRNdUema=kq7+$6FCemme=y~&Ut+;c7J-%z&3qxL&)$ZE)T?f>sZaOD*zKQUYn zCf#FCtIVHCYbEVJm&6|=qUPiBeZezX!Y)R<7wIv#Gb9}><1`ncilJB}9PJV0^!p=Z zzb{j4bgf1OFs~0iG*&ERT3qLdtbVAsR9O~(kIHTkx=OpRz2|!ZtF59WEx?Yixm#$o z&~C^1=b}o~rMD}(;LgqKv3!bwi*Vw>eY+An_IkqqcLQH)e7C|_k-pus0-kp-@vMLP z4=VCxkJ&v>&ez||r zb_!iL9!H(=(R>^v_i?ie?k_%slqnTCzMy>IpAp2LLx~*QD{{EQcSK}$S}2J-lXA3JhL^e?UZndjh@k|LMerz1irlR6gO zjHP{Nms;uFF@zC)e#6~ZGVDg9_&=e`Koi)_-)8uJO-;G6NoYxvb{)mF8$8v8>_WiF zR{VY7v;eE_0=Z|LbumJmoV-cx%E+u5?(ff07$_($y%?|%q&|F~(9y7%yzL;ogyhhI z&S<@L{iy=WPT4G`tXg=mVNFuWLi7s?s#TW{dFRZi3-YAR4V>unWlB~SXwLx_!PMk5 zPYOuuW6mOfG1Rha#3neuNY(}Q-0mat1*iqK@)+{bHs}YF`jJw6^ff!07DrF7E_q7* z`QG5$!Hv5a8>+2zAA>_Q=bG=!1jo~;y6bhAsu7l7Js+rpRKtEH2C$xVt6yaS!t6qb zj$HrHV~kHPLhJ7Ymw}X=%=>M9_`X`B9r*w_nDLqvsQ6bmsnjf?ztI~#UO^YkPnC=; z8S_h>_U+r(=0p4;un^AuoeE4w-TH&DUZ56OGn?^Go!4!~AC$$MbPZDy3 zeR&prD>Ch{sdUdg%|PuQ^!K=QC~%FR`yLV$^&>f4YHB9%GLyD9lyPpsB6sz&iUDBe z6=!dm3qfzz(sHCBLATEGq%#)cQ^-#=8s9Af5T6HfNSHm_f=fCD*IP^a&igYq*llM^ zSaaH*y$;~yeK5Y{<5R-p^KBd)(k?+ZDGg`i$ydG;QTH;y$+f*Ey+jntpk!^>IBbC1 z>u1ac%q*SS!e^ShYqQ5t0R2ivHO@WAQODmqQ8B#w^$Q1zXJhE)nr)Jj1+}&I#>U2( zv*Aw8TbzeUI=X~jHhON+LL7?NZ^j^eLizA29M@8aSlk5*B7zTcIvrf&!A-uuxy3DXsT@1(@8Qo=#Faby01|@7h~E zNcS%5l$KfF9Zj@futM;&99?zaQV7N7-t` zkG05WEy$IUyQDoc!n-z_^ma*W^!3US$V;@3TEr}2!o8%5TI<@Z!r7DEjfLF%z)QHG zBTUX2S=U?sWREOMw-w_BZQ6TZF>KK2@Yjohp-Sh5{;41ujIla&LIug&!4wJlkIOlP zna@VqdtD^?y%o2~>cI!wOqG%*?Psl%oU=XPsvnTAX+!7_wK*yz zIXEbq5JwxYYouSHyR`tMtz#N9u}AU^WiEW(CkbvKp7sO>U)+ttU$vz@!NF6drZK`{ zVL?Tk;#mW(c*`)NGLDSIqYOw6V(KdJ%Zaur66{(&#T@d>y2hO{fE?{pY%SPyjFs?7 zKmJOQGM}}WOZz2Mqb-b*NourT5Hx($oc|GHnlR4P2nEb~*#?n=k?vofL>s7PE^P29 z1iB6Q^wDbRK?8TT>#nC-kY=|5Apip}`1AtwY_&Aj_vFqnS}rtLqtShA>xhQTVidJ% zv_tCQ8KJnZk4nfN8cq%NFf6C~+uXn@VGTQ?W>bzzC={AxCL3l@Q<@REp#Lyq+QZ z0i)vN8sMN{?WXQak|Dh*?lmwJ10B*FsSX8|_Z`)>5IRn*UxQsY-jt8te14zQXG1da z0(t>q9Dmm&R~-7qq~7H`>uuvJ$q;x+g&Q}8{qdL8#5;%b3km(@*-M23S$q9J*q4{U za^yJl2G#KbcYqb(bd|YJ=(-kPODZw;D+Vt9!W|_^DV&QP`PR~IlABP7guz*~L#Don zNR4;*rTwgr!+IpwTs?_6?fHx#JmuN~T=o2A&+08a$A_+R?!uOBK-w^?biSU7q7)EK zdh^&lLjAcHmScye{*aFCyXreME=j^~YA->A73@f+6CNEH{!Q&nmdsRefqw4;=Ue_$ zy{Reh@S?6GIwdqaNMip?%nrdaFY(H|8NP%dm#z9vs8GWA&6}1Nx{EHaL|=N3f5?oB zrMyk5hZNMn5TOyYozP6RX#PAK&nJ5PhGXD_FcT0D8GI>%0!y#+x8n9T{rNB0eeUyd zStlVb0>i}jhOUW`NCkij^SQOJD}hFjbqI~YX?WJuDrLE;xLb^NdKB04zWe8Y30^DX zH_s@3C5b5!;iomkl${X{MUk3)xCLNKVL=9?ws_B}%5trgu$})yykZ#|?-2GaWPrr3 zc`LX2QQHD@>w<%24f-O(Cb07>D$563vaf2Dn!GppRPjqihG*T# ziU$>NR02B;F59*wKhOjC?8=0kTyJ9R0#RKPE(OZKE(WE%(YE~q6kZ3TQ!K-8Rv0GS#}|3 zxZTwyxTCL`_<;tXHt;|%6F=s&|C%0@F&YHeQAvX~UA{%AcT5Zo@k{xf*dJ>b9#90# zv|y=S#{x_z4!=*^=-W$FRJ*Q2N%+`+75y=wH}u_y(*cq*b*|81#6yn$d_dv5YW-JyguVdi&1{=A&;CqW+nT|`4)Rcg_3VP3mhJrT3 zI6j{c2)sQ5Ro6T_bcw`~$a07-v5Qv!D&g`7mskr2A;^5fwiq9oax8-o$KGK7;eMlH z0gx?>gooSuB3}f9Qzj--c%F(!0J@4hag5}SomB2QAi$~m^X-+ruQ3g~C}pLGEJ=aa zN2-*(?8tAbe9RP0B|`sEKcw|jv&D?+EE9y9U!Pc~vfRjk}A{>hy=3*|!X&TmocvD5>% z^NPGXl*?Xt9%YK2Y=_r_0!MYapHRN}aNI`^*+gaue0_^3wFD!8Na^%pEsi8(gqwM5 zDJu@~q`;wtt~aASItmq-eOnF;x)trVrN#^{9~ZExMn4#o0lk_gKMJvI*soBOO~nTa z%QAs4j8#Fo!QpMB0eLvNzR3@8yF35)C}Wk0XR-VS;cs-X(>T*v-9Qpcq`up&CKUiM z-%3&rZz7E-I~LqW*2CixN~zQBWKIQ}a%ZKldSR<^`9aCNjS7z_o$^Vf1cR%0*Ggov zVglt03twlF#lLoJ9rlAzb|YSl4ZCdlojvvgr2n z>p(RPo3hV9TzyD!M&Qo57z!pz@S8T>1({^=;|G68SJM)eXE0*3t6Qww97WtpaUbGR zriis;Jj9SNfnSXzjrml`L{q*orip;)_K%CRRcw*>AXI`kj9N#TZ=6-@z7pbd4N@mb-aph+|Y9dL%O_-etuyUGX-1BZmJnNU63sA}gbo$~A* z9?BKCu2-=ZJ&0R^c-^YliTuPRcp&tsv?n>hN;UbQOHC{$=Zunneo@nW{GVG!c^Lr6 zfo8Cx$9?mQ%F+dJCHS6M^>O*0z?L{2A(K1?Xmk=QLUBV3VqJ#d3ce|7NwEXfu%Jz{9sJlN8=m@68E8YYvFaD_w>z#Jm1_X*$) zl$h)p13*IkG?0MXy5k==r4_G7x`}`tb428_8SP)CSN-r`r6&Qr4sG2~ZXg>o&z6hB z4z`Eg<$HU3r?o6`I2__n4RdU`Fu!FfSdGE^4^EIh29b3!cE}iLF-`r)!*!D(#u|-A zk3YS$Hat=F!b%uxW2HM1c>PZ=FLyt6nU6o&?k(Mv-DA&l+}e|A0eF6TsdLrkgw?N^ z`u554!8f`y0sUIuToIIKy?KSsG2Vmo<`WuuUSt+Bbovhqa6WBu&=NdRQ`w((94ENT zD_4d(6Dn@eB4G64iVwhaNOC3 zd`7$s93LND`w#je0P<)3wW|0UdbzU+w&d_SL!tUz1+9gxd0{q@S%A zE%!LZg8VuM*i9&U${nYXX7e2I~^d3A$W?_+O8YVpZAi<&JyP7^T-rJe;?MO~O zdFC`a9V84TpQi;6$8Ht|A`7hI!`^aQ*93A33j^@)*94^OC6uOS1jjMWYzFRk;{Z=w z(7Vx)m!Q5+gBW$`44jm<-n3!H`?V1wVF0dupI|F$4cChJQS0?V(KC=9IdviCN~mmz zPsP~cbkNG8cgeupSPeQQx@7biE>CMbcNH27G76QZ_|07 z{|QW@1NXWW$~O$({30K+@(obd=PS*S3SMhbD3`)2B{sZpoE4Ju=6oh05(ah<3&w?^ha#f?PqyxYUfB|7H?d4HSob_bA&BW_q zsWY_j!acdjJ1lUUeK|AiC0L#L*`OEcwFVV(ox$7 zT>HOSOH;@h@cUJf^6i}=2`bOOki1+gVaz?Z;AcmE!IwDmH=}it;y1{Q$~TD2`wzK3 z`~doaH%!K?y+K~8g*Y={i|vQ}>kzzF2KY|-&uy@Cl1?YxLRP10PBEg~|F@^s6%SWp zy!&dFF^vZp;b_yXN`axYR*-o6XB{h3GA6?-!X%luhA?tU7Ju1%?gs#>Hlw^bwU0{sD{idVQ1IS7T z34@+Z3xHlO=F6m1ufsGqg@X#dYr9gv=btfIp0apIVcIn1?Ihm!aTV(-fI+FxEM}!t zRNdwQa5DbS-^qfbR}&;$bR67FuYbG{mb0=e45=6Y&riN_5_8<TXm<-%NeFsl6h257T2#lym3GUPfIp=P6@`hwN0Iw>Vwzw`P{%Opq- z!z+Dsyq4m(1G^&Z7P?8#_e#qA1!w2)NT9`f?%ewIvckiOwEHx??4@XO2))^?jUGTH zLQXqy^nv3uj(e>>NTq))`Jbc@l3B`k{F0H^(llC4{+6UjO4K+DbmvFl{5L*p%-Nl=ovK#Irouv$IhzIuPYs zaDOv@Eh^D~xssZk`YvILDIaS;d z+8Oc^_fN6T1xe%D*oG7p$I(_y0zr#CBUS3}6tu|V+`16Q3JvD3=94>)z9Qb>u6hW9 zDMw1`NiJ2|hqXzlhueYMY2&KxxDk@K4=5NIxj0)gzHnU?Za_4X7p_S_8ISM)`%`yl z-D=F3fJoI=Ka6cDJX*Fk=H1vix<|?|kzmtOyInG)?Wt_Gt5a-i#$9m~_LSk&{|~1%RM0-@j^d|I3HGAG8x(|Tn54?i)z{jl zj9=`Eg)1q-g0B?3W#MTC;4_xjalF#%^)iu=qP;I^Ee&*a{uUSn4m6LhjfgM4gf~U} z-j$G$gS4p4J;tff*ac)}RCn$UOFx_0J>kAbN2xQ-DHooNux`90E+s{E2H32e4)3=< zBRfwO)33scC2nMu*?6l;*Dok(yMjWO_B<|%#qw&bEW7Cpv4gv4#xeXxyM{sRiB~p3w>jq%f*8Xx??&c`wHa~eb8+6)%(e_^ zEt)V2K$6!FlKbS^gUosdOB@3G_`M$&W_WpyEb0m50k!SrHy>?yyX+jfPb)%j}7+LOkF_0baQ(;Nnq|LmQD_vNj|u$R1gYxlXXWU@Z17ogF)wl7JR5 z3lr;gIcxqt>yTUHZ2EFJ*?YLcQ|Io_bMN>+Pi72%FOlDl*$_JulqP!;ry6N=Qxbr{ zMM&Kw4BqI&sQ=*5q?#>p=Dz9hn0C&fP2#$==hSQ1ifl`GW7XSi)p8zCjpW;VSH7zu z-GCSFdLrgV`(_!^9?R3J7~Q$n#m{mvlz6gr-cr02P+*Er1Yovuvru%J!$KxwOr3w@ zOjLuYhks$DNwW=ql>K?GYT?Pj;>)wSyfagN7-Y3phd))!d#3x;+FlrWthlO7)rq-% zG!MVSA@U4)TOjaR0J0uik~mQ2cAy`&099_jm$+549=1S_FNv#Ls$Wt3a$6U9Ys<3C zSV^49^T9WJk&-fo{1d9P-jw5<&z(Y|CN7abeCjeW4P!Y0ZjnkJA5W#LLXSrzTM1!f zWw8w>TJR?=hcpLJ-x{PcL(N}~h!b8x69to_^_GCl*CsyVi*U;>;4X<<*k}E=7=u-J zs%voB2d%+d(!uxFeviR~E%!s$R%yD}fk9QQm2Pc7pR>l!qwRh*2*ojcLsYkBpy@y~ zwc@ApXhRj%YA&h54%zFcsD@iJo=aLC9=D*;bS#Ldj_is5#9N-RL3CDITz2cUhH?Ob z#Aqg~GL&xH3pa{lS|H&vfkjM#8y}OZDXX647HOeuT9)vOCxhu(`tSq)OEz$FKUCIa zA$ISiqu6}qirZ$MstetwiJe8=C3sjpaj4s`M&gX@Chsw_)bL`y=nseKsAko5B+p>kYX4GjF7Z_2K zjcbTHM`Q4F&PQ4r$eWJMTM_vL3I-3 zW6T)XIH5)DsUl6=G+EZ85B_XjoDME*y3VH##ZGl153j*9A16~rkyBP4SoD|vb@xFx zTQ|D?9w{?;j_#fbJsD(qyOzWIfKEPl*nI(Ms7yK-Am%>jL4r#rvCoWK!hd zi!I=rXu#GYpvP;6wfm-~H&)Ti!oob=F0J)?m4zgr79e0xHxyc4bl-Am$^RG# zA63Bh3MNCeiOI=pGymFtSA_|rDdhSi6+jJ@)T9y_AsR=MSALZE7Bx zxc%Hhu=l^_CdzMYc@5&w;VA6SZpO@W@%H${deljg&ctQZ>3#ok5S^9w_kVgG7=@sB zf`8KMq@w3FW}=bdu5Ag5pE*2>LU_B=X-=Z6VI?s2;5sqp;QEeohlb)HGBS%H{O>orMWid^cVO%M8@NXnjus zcBHZ11v`$v7BFw46AO+01Zv5oZ*<=I(4T0O*2rk&@1_tlfzov6-0X%!2fxxoJ+8Ny zn)GH?)v0-}p`gz+)Ua-`Q)l7;EM|6-Ud~S;qhVgMJwqiO-ikeTxAFRJ#hc$@Ut(V# z>HnZS{bVtHi2*y2Plr)3)UOk+g|370dVt>k0?fWp=C{Vsm#iPbPAQ@DQmcn4BU?T~ zpGY`;O{_F5;~Nr!GgC8B3=Z~PIw$YIx->RR&>2=`E-vivP3mhPNo`~xi&{}CP~)Jz zn%9EH2+~fhM{d$)-9+t&TORO@eC6<#SZaKoXzhJQkV%`QDl5%GfqB~x`qheV)0N z<1xDAr+Q$Zmhk*%aFVLYfP&iFSr3v?b0caRWFm4cTam_<9^-XWsnhy-b01%@#V3(! zZau{XKzh9x>lFTFv63Y)AaMNbG>DX$H23r?6f&%w)b$xM<5E za4f@EhMW6>jnRfTcWP`0_O}AZxFwJr352KJU33#%U8ZAv>5phq3EwABAznYwV#hro zIM(akgD>8vGXo`BSVvThV}~w@y#)kXXHkB*0&7#<*B8bkqn706;U}j+CRaObBs%(F z&-0>4+Z~VK?G^2=dIAVtdLJ}&;?vxCC?xa&Y(*Qq2}q9XfF}QbvHX4*91Z)YeD1Vt4khBJHk^NR``qENhUfK(9T$*I z`#+0jHd{mU8~@M~)N{q0L_XY*0yvy^9&3pzgh1>C% zMZm&~$9O<|WYD48n0ZPseXnWTGxwPBE)<*=XD!w>UiBEI>W!^r8gs+d9-Ib)*oa=` zu)Tt*&tqc417r*}ol7y63l0bBD4@aK7?K^IQ%q2^+da6f!8UhP!toHBrs0I!7X#CY z7hU;x*UVWkid&0Et@7PwyfJDfykDRu@cK`mTcBM@yVLVYosMogRP=NJS{JuVAJ8{uf0yr{)Pqd(m+Ml! z7(M>l??$>Hd{EYQ;vw5iWf&I@RU8-OA>Zcck%W*-;C23inC~EV#0yBW$CHq*JSl}P z>qm0?GXWp^??r{{t$2e-5$;rJ!JdHYtFLk4^TWb?bi_7Kg334{_*wVBktxAXD}EcOIv5u<&5`wvVf3DogIe z&Z>0&^SiGbCz5#POZUA=fx_d07#NWH>%+4qxbE1?+W)jU>ek6M^S$<#<2KcU76!M+ zj<3VoKlOc%c!SZu@X6vsOB&@`^|8Msz5;Q19ci!0u06PbYb|)~3PS6L(Z84b!Fzk8 z7zFI?Y-WT>*kRptwnZF$<28|I*+Mbu5KZORR-Z28!;yB~#_P)vrMSvCahlc{ZfDq) zDI+fI3t!_h=+OgUedDWpIAoRWM2-gteI6GVuF*F9MfvX6zEIClebWqPWI{ou_gSZP<_skYR!Rqb}921l?+M)gwL4HV)?Wg0;z!7f{> zgk2A=PqzHW*zpT}5GDS925bgXQHt4`mU})S=Y_@jsc#xd!O;5y&G7C~z3L42++ONI zlTd7_fDL^_>1YY_P=XL|pxL6?WEtA6x^Aw*E`cS?OIoQGy?)I4aH2!7kf z^8eVz-`m4}0}g80fj$^Ji4r#ZI4s5E0O5NvV(jGN>q=<51t_-FVDDpCijbJoBD|PJLM^?-TNIl1;+(^cOU*voWOSd>2cUA@H222JAJPZDua#WI(5|xu+i&a*05zV zo-8_wI$s zN>UtqJ2j6V9&Y0_wcn5z9v(2&zR%V)0VZZX!1WgH-L;D;m;`)cn1VD;{{(LKM*G8? zSn%{Clr7+7bv=xc-j|(MtHYS5U9$>y^2K#u0Y=vMLXRO?RpaSE!b0OU`%vKauTO1! zY}<_f54GxR!G1fH7RrrJgtmrl#c*TbFEZRsl_nBoV*DSdH zwDd2_?Xf>P$~Ee4@wR0|%*XSHi8tkZ~PT6y15qrm3)yw!TUX1HH$$UVytk;2Z1*%Pe8YHJyJ9kTT#e zz}$Y_g72^LfuHw=-JyTnqBujLuT0N7K|=rUW#6l zN!?d))M~l>W(GRwl>alg(aFoRvp`)~1ru->R3&4A_*Mxs#y~&VG_2v!!yipyJ#Q>d zj+XlMrb|u&9V8JZV=LCjUqq{n)URHc`65r^N!EyZsNiBAN@Ts11=VYQ3U!9~@B9eO z&LSsdkg%=r(lmEJF;N|0LW^V#SyGDMcF|?=4m%b#nsmR`L#+2tL|2-Vl8Mf+ZhFy$ z)He;HHcp2sOYp@pY8!?m`XeNz++z~%O{KmeO1wlvu*$Zta#MW7`hUT@LJXxqbYBw5 z$GF6@B)a|K8BqK2F4@aX&sSRhl3^y@x{g8dfK`evU9N^kqyyqVgNvH9x!sf-skSOR zfKdi#B`KR*OV$}3sxUU!B~RzIe`z7Vdc&LY1x9g4A@A{dbdwtI(dua#oY)#p1+ZQ2uH_loaz3a zb9wWh_^{x(4p3EwZB!mNlHa{Xth1dMy!3ivf@oDhDG~m?Og`my_OF6-+BR>F;TOz* zcnsGZ_6zIkI?OndeEVXN0T7qt`^=iTKWrx~YRyccUwd;EMqh6UA8HC7(*irWsxIC= zno}a|t(W~q&sd7w|7a<4+3(K#4h@3nD`(Bb>MIV8WM8Q(qdW+?O|$joS&bsIN8u85pbRgKXYqH&cA% zE->JSb`vatu!5Y+zY=p|4OXd%einxSr^BnMu1Y^LgRj}*m*VwFlqKcR8VS3Eym;%} zQQkzVL{_uU=vJJ-hwfc@WJKyuFE~j&+1m6wvY zIMlMx>cPa<6aPf$ z?6PkovSm-mIvD#t7{+Y(bNhV1zt{77Ua#kmxnIXPb6@8^_c_<~zOHjEOGDokF6=Og zMlrS#EB^JqV;^@Dt2hTIE4yq`WErFX0EdF7fuFl!JT>?xeO!>y(h53WA~WS15PN4z z#a1==)1W^BxjKj+V6JY zvf#Xu6?F|dV0o_-zE6ORfi09qp%mtbGcOwc2wk+1-wa>eyRPQGTzKu90-w%r?S!!( z`MGh+zYa?p?@_zto>9%37 zY2AIv4N2_t3)s4%bALv1{A0 zF`c|GKV`M&SO$6aY8}!&u-6FUQuy|c9kg`IcwmrMd|Z=|FYs>*#@kwLt|IU+(r`UM z8nKC_*!3a^hFH>^)OEsuqhyOh2jY?o}7!qS_0vUMby4%Cx7FstB;KB3Q z_1>_UK3b;UVaVGoK>)PNo}(jzKe?lVaz*zFte4`T`GA0sMHqDa42iUJZC1cbaqNop z1P=K2=R-o$ypdLI=I7k5GKq`Jfm_IPMXlh7;<=z z-R2*tSd&pSEnycrP3S0?|2z4M?kKqw`~Cj*z0`{vb>meb*Of|R#=fl@!~S#BAHW?N zt2T+VN%nd;T&v@IYmx>Bo-zXKS5yS%xg;NSr--k8_+XyBt^P;FaLzIs2$yJ?wRZ|& z9I`%J@V@M8?OW9cO$i*@W(jHqx(?8<0^e0^Y8|IxQ<@@?So~-E`=ZZ}n z<35~l8}aD->S)o;q~yKLHmo<6K~@QrjxnJh%IocEh67i&{mnl}0Add{qmU7dN>@74 z%#BJsI5+*m^k^VzEmoEHk=)0?p}Sh8%{H>Og3O(bML_mQjLkPi)+Uq$ja?DBX~bvqMEhreoHf&T`!u~=R$*+2U_8!5+3_}X1CAw#yt76B|{czxAqGb1h+@krKegL(76Sh!H8_!+p+Vn7*8e$JyyOn*C#tKa- z5nvZ$?sUg#)8b9vbN|mKnWBE8GMI%TkdYjI z=F-dveq7qO(3Xnr0b69OL;;SR;otNAvA!aWK5?mC&$1QVx%mR?*G98T8_sJ+X7t{T7+hTMB*O#>Wl*0?qtfp ze`lU)L307S>d?D~bm^$(39g2BVp8e!FvKpH_EW zXi#cD%ULlufZiLW(&H)1mDV^L!Npa3pTJyL*aV1f<(Dum2^B3+Du4bSVWZ^b#6P%in8Xl0w}#M zr4O45)2?)W^Z+jNH})Bq;+^+Z;xA~hN2Q&!Z1sR^?nka!WMV2gZ(5;P8P;uSGn{V! zn5PD$LYrD`htuV($^P?27L_bI(+*Q!JG9Us_Kf^SUuWvuh>Cn6wZvcx`K@%8)Uk2b z>vWxNwd`;1;khDrtings6|$nXGqo=g=K{!XuEhO99y^wrL$@l!{R#O>o3!Wr57(@; z-n{n6nudFo{1_O=U5>=!nOpz$O(u-R0lEpm#p>HF+0E~qe0sG}JEh_f=SPAj^cqDP zn(}10qGSqLefzSnAj5RMI(x7)h;L;$MD{4SROpG?ngxe`_P(3}rn7& zAnv_Mcw+=o*(<0Q*^uNi*=NG5ebhvJICTU0$G#+b?Hmj}o7PjGsF z!^bjypMv6I@32{pY#;i> zE9^eolO)}8%%kRa3n3T$fkoWKB9A?-e@a1g=1dzXRv<9n3Wu0|&F;Cx<>?sY8RJ00 z5l!^(06ZOiFBu^CvFHEriVpH2OjNY1FIXUK_hM3sHP<)DR}&yQC-kqPN_$xBqzJ2ec72mrb zW>xv-c>bAMd%%h9`MMJ4W9~yA*B2O8bQ`3t)1VXd8B`(BQ&h5@Yie|Qi&B%mp}=q7 zsMJ>(Yq?q$N?F*NffUiOX+$}F&O^B)j!=qxJB#kPlvczYi97W0$xK}87;LcvySR2f zt2{OJi$tHpZo;d}+dq*L%;TIHUPO%Qr+yXoqTOSF5Fyq+IQ;E{{Thi8r_BtCb!(kX z%&-cKzB6C}7%*HJAt7faYU7>+;V~&%)q{e+NHM63eBtVK&oxY_VL{=WKbn>S0oiqeA19p-axn94p>e+X-uke^jb`aYS|#YCttVXuJC8SO*$#ZU6ZBu zx9ckwLs=@ii+hUthImCtTd?$Th(6mE{Q{tRJnr8&l?n~@ojFw^1-LVRu}h;__n`gq zI2_K?hGxWV+XPe(CvK0#jEbSO1YZ4A zkV9HxsGSmhOT3#EetbJ7X%=Dcev0n69IoF__tg`4%w{R>Fvybcmr6;ZMDT|O0^^2k zq0rE>k+Qg(cyf!1Qf+y^O_UZiqmpik`+}}_{-Tgp^z&df#5}K&gfv+f zFIpyVv3m=8?Zrs~2n=8SiO<)u^btD$BbE>^;RM?RViYdp zQ4+F5n8B$-hmye1cMRteH?-@f`Okcc9jx-Hs{-Gl(dX%se7fadrVT#wE2=XT&p|`G zWv5&JvqACTA!plSVdrB-|gPblrdkj)0<(I<1=T(IZ zo;uIQ%>JE&;Tn96&b7NGUBPqOPxKSQZN9Am(0Z3l^tEM@Yr(=lJ>!OdesHwc%K6AQ zW;@P2YO^6a_ZyhfTsZ}`lsv=TDTCxWMHyr$P?`u7SWMjr-#TCPG(CMMTBHIlGszf| z&Mh!b3qrc&lAdIujgUN2{Z2mB;#L=n><1S1+!^D`OckR3dy_`Ar_Ai3larINMS1Kk zinI{i+N&p8H;}M4HJi?jKVj~awNXn?TsfB&c~H$@F46P#Z*JH`$0p66zeQjV-n0q~ zwU+KpcYAsMjEua$9ABlpx573JZvVk4wc>ZD5W(CoXMcVE+tjdQ1XMBddIGtR3|Xjl zJ1)&|xUBRc7D52~{$X5u;NYefkwGR#qu3x@4Trvw-oT$OGnM(V=?}BEXZBg1*X~_` z!ecE28SAc`3Y`C>Q%I!CD**#x#Q=S7)RGIx{olg{yn~;UwCs*E5w@16xr$&ig*zR4 zHa}q)=qJkJYU3}jQR(78&vzL8|m4gcJ%tZ$S19F zIYVe+whiOe6zR3M$n08^w36hxBw+Muh#;d&UAYoss0Gw9XOAOuAh0=mDF6g_?7NE~ zZ>OYtGVGu&6Saut7nXG~8_Q^?U#g8#`>?$bhXaLT!Qi=A-MQIX>z?4O4WR+$`+nHD zwh$J;k|A*wNw=bGcNn^X;9TrUO5RFk0Zf?7=un24&`Mp;oYrDCV6%@K3<*IL=iVbZ1^^2nih5*am8sA1-o;m2Al^CV?oRDj?!~o3 zHF2RsU%NJjP%5orqYEEk%*H22J{v%s*EN9GVq+}ESGrPIA7(_#RKyUkicW5F&d&y@ z!UUJan%IwI6RM)nrvnEyj3!808`7bTwB9p*!{hBVts;||Keg8H_YqaH5h%k&07@dyA$q2vVeq{t=z}Te`l^B1N#At-Y9Ad4JhVwan0;YcCR7J?RAUY4;bxu3*BJYPDYm})59#!N9M3}tjp}?g~c)5W1UKK zf4wiP-cGsmSLJ_Bb2TV!VYnp@tB>R&8xjE=e6g%WSg7OyUc#ZMso5$geoM2>l-7_l zakzA^*BZWWVm02&Ni^Ir0n8K#>O>Y!Y5WmnB`=Of;1UGt?$r(LCaWD~(9_Oxl$v5> zpJDEUAr4U+Q^MDH4S+`MrYlJ%_vkgXfsj{$+Q&Q>my838LR%&fOXjBsKkJqDmNHAG zuf8&4<52|cnIOQAWj3Ej+P+0y91yhdmnK4J;O>}qZF$M6@?09e9xO_JNfda6tIpdr z1pod8|I8Nssmr4FC^2TsH1UYjpO8Vh#%b0|tUDPN455vcPj}?*J56#6V7xNds(vAL z6tfo*GFQGLjp`^b?v=H`jYMilv~(@(&g1M=Ap357Zl(GI+KAb}2KV`W)65;@Ic=Eg zbtW6oMX2(JE!*a1nEl&tFY>Q^AhgiKZ_3#w_0NKMGZVI>x!#@x z8F}_%Ij>v6PRG(41-cY9EwhFsp@^m3GRI;bsDnujDZXrdn(K*Z*C9e8dWBFbduI+n zA@auck@WKf3#Jg`lS)3K?&2I<1=GE(>U>;(yi7`Y?2FB^2iq6;t@w#|!sVK??o zHD_Zl^XryxNoR}6e1d)3JK2$bv82n(Q`Owkf0a&toyTWuiRpigQ%Zf)h&#$H!>HaF zK-nIQGgF*g+%WVQuaOnZ2>rDIFsX`@En|^K{aDU^6hCBj4v76Co8BwYSGaY0qr;tQ zmi%CZ5N|=bM-ff+8wdR7M8o`LNOY7_PEOBPpS7!8WglnF9sL4 ze!#cc7Ax_CGCM4ayufE4{YIUR+%itPNDS=qdND26`Q#^N>wOTuQk5aguiFtx<-XLi zNIw2$U*m8tbeXSlS@B_04$O9@C}DWHsA70I<{MXeDZRkvH*l=7Bk|`AqIKSFOzQLa zl}gIDrGPiXUe0|O0uvwU(y`=l&2M&0s`D(ZbD7N|&P=enkO9rHJv$$vH;{Y@Sg5q4 zKoLLMtff4!OdID?DFr(^y0w9$9#GC-@fE(tOA-JiT-pT#YB=yj<@me!w)POlv6EuE^+(P>q&1e{IXP~bD_+}>V?Yma7X+wNHx5B|O% z8!50W+n1stx<&us-Y>2Vu)EI)Xcnzm@oLx4*vk@+q|kN)XoIglG+&_a#GJx;JU6E; zA�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 Date: Mon, 23 Jun 2014 02:31:36 -0400 Subject: [PATCH 014/304] Gives the suit coolers a proper process() proc --- .../objects/items/devices/suit_cooling.dm | 21 ++++++++++++------- code/modules/mob/living/carbon/human/life.dm | 7 +------ 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/code/game/objects/items/devices/suit_cooling.dm b/code/game/objects/items/devices/suit_cooling.dm index 2fcf545d9b..f26cc037fc 100644 --- a/code/game/objects/items/devices/suit_cooling.dm +++ b/code/game/objects/items/devices/suit_cooling.dm @@ -16,23 +16,28 @@ //TODO: make it heat up the surroundings when not in space /obj/item/device/suit_cooling_unit/New() + processing_objects |= src + cell = new/obj/item/weapon/cell() //comes with the crappy default power cell - high-capacity ones shouldn't be hard to find cell.loc = src -/obj/item/device/suit_cooling_unit/proc/cool_mob(mob/M) - if (!on || !cell) return - - //make sure they have a suit and we are attached to it - if (!attached_to_suit(M)) +/obj/item/device/suit_cooling_unit/process() + if (!on || !cell) return - var/mob/living/carbon/human/H = M + if (!ismob(loc)) + return + + if (!attached_to_suit(loc)) //make sure they have a suit and we are attached to it + return + + var/mob/living/carbon/human/H = loc var/efficiency = H.get_pressure_protection() //you need to have a good seal for effective cooling var/env_temp = get_environment_temperature() //wont save you from a fire var/temp_adj = min(H.bodytemperature - max(thermostat, env_temp), max_cooling) - if (temp_adj < 0) //only cools, doesn't heat + if (temp_adj < 0.5) //only cools, doesn't heat, also we don't need extreme precision return var/charge_usage = (temp_adj/max_cooling)*charge_consumption @@ -85,7 +90,7 @@ /obj/item/device/suit_cooling_unit/proc/turn_off() if (ismob(src.loc)) - src.loc << "\The [src] clicks and whines as it powers down." //let them know + src.loc:show_message("\The [src] clicks and whines as it powers down.", 2) //let them know in case it's run out of power. on = 0 updateicon() diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 3654b2d5f2..47b31dbaa8 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -785,13 +785,8 @@ */ proc/stabilize_body_temperature() - //TODO find a better place to put this - if (s_store && istype(s_store, /obj/item/device/suit_cooling_unit)) - var/obj/item/device/suit_cooling_unit/CU = s_store - CU.cool_mob(src) - if (species.flags & IS_SYNTHETIC) - bodytemperature += species.synth_temp_gain //that CPU/posibrain just keeps putting out heat. + bodytemperature += species.synth_temp_gain //just keep putting out heat. return var/body_temperature_difference = species.body_temperature - bodytemperature From 2025e84b67a1054825c4a014ec218ee92c217594 Mon Sep 17 00:00:00 2001 From: DJSnapshot Date: Sun, 22 Jun 2014 23:42:47 -0700 Subject: [PATCH 015/304] fixes for potential runtimes. --- code/WorkInProgress/computer3/NTOS.dm | 8 ++++---- code/WorkInProgress/computer3/computers/medical.dm | 3 +++ code/WorkInProgress/computer3/computers/prisoner.dm | 2 +- code/WorkInProgress/computer3/computers/security.dm | 4 ++++ code/WorkInProgress/computer3/program.dm | 6 +++--- 5 files changed, 15 insertions(+), 8 deletions(-) diff --git a/code/WorkInProgress/computer3/NTOS.dm b/code/WorkInProgress/computer3/NTOS.dm index 8b779d9077..b7c2defc4a 100644 --- a/code/WorkInProgress/computer3/NTOS.dm +++ b/code/WorkInProgress/computer3/NTOS.dm @@ -25,16 +25,16 @@ i++ if(i==1) dat += "" - if(i>= 7) + if(i>= 6) i = 0 dat += "" continue dat += {" - +

[F.name] -
+
"} dat += "" @@ -53,7 +53,7 @@ i++ if(i==1) dat += "" - if(i>= 8) + if(i>= 6) i = 0 dat += "" continue diff --git a/code/WorkInProgress/computer3/computers/medical.dm b/code/WorkInProgress/computer3/computers/medical.dm index 8e6b7cb7fc..ee55a857b2 100644 --- a/code/WorkInProgress/computer3/computers/medical.dm +++ b/code/WorkInProgress/computer3/computers/medical.dm @@ -41,6 +41,9 @@ return 0 interact() + if(!computer.cardslot) + computer.Crash(MISSING_PERIPHERAL) + return usr.set_machine(src) scan = computer.cardslot.reader if(!interactable()) diff --git a/code/WorkInProgress/computer3/computers/prisoner.dm b/code/WorkInProgress/computer3/computers/prisoner.dm index 529a210e43..51beec5c03 100644 --- a/code/WorkInProgress/computer3/computers/prisoner.dm +++ b/code/WorkInProgress/computer3/computers/prisoner.dm @@ -5,7 +5,7 @@ icon_state = "frame-sec" /datum/file/program/prisoner - name = "Prisoner Management Comsole" + name = "Prisoner Management Console" active_state = "explosive" req_access = list(access_armory) diff --git a/code/WorkInProgress/computer3/computers/security.dm b/code/WorkInProgress/computer3/computers/security.dm index 7d94f892bb..a9abf0a5f4 100644 --- a/code/WorkInProgress/computer3/computers/security.dm +++ b/code/WorkInProgress/computer3/computers/security.dm @@ -44,10 +44,14 @@ return 0 interact() + if(!computer.cardslot) + computer.Crash(MISSING_PERIPHERAL) + return usr.set_machine(src) scan = computer.cardslot.reader if(!interactable()) return + return if (computer.z > 6) usr << "\red Unable to establish a connection: \black You're too far away from the station!" return diff --git a/code/WorkInProgress/computer3/program.dm b/code/WorkInProgress/computer3/program.dm index 67e1d7b3d3..4c977489f5 100644 --- a/code/WorkInProgress/computer3/program.dm +++ b/code/WorkInProgress/computer3/program.dm @@ -349,20 +349,20 @@ Programs are a file that can be executed active_state = "computer_generic" volume = 520 -/datum/file/program/PowerMonitor +/datum/file/program/powermon name = "Power Grid" image = 'icons/ntos/power.png' active_state = "power" volume = 7200 -/datum/file/program/PrisonerManagement +/datum/file/program/prisoner name = "Prisoner Control" image = 'icons/ntos/prison.png' drm = 1 active_state = "power" volume = 5000 -/datum/file/program/Roboticscontrol +/datum/file/program/borg_control name = "Cyborg Maint" image = 'icons/ntos/borgcontrol.png' active_state = "robot" From e96b682cf4757e36f7674a6466dc4aa445a0daad Mon Sep 17 00:00:00 2001 From: DJSnapshot Date: Sun, 22 Jun 2014 23:45:38 -0700 Subject: [PATCH 016/304] laptop vendor! --- code/WorkInProgress/computer3/lapvend.dm | 398 +++++++++++++++++++++++ 1 file changed, 398 insertions(+) create mode 100644 code/WorkInProgress/computer3/lapvend.dm diff --git a/code/WorkInProgress/computer3/lapvend.dm b/code/WorkInProgress/computer3/lapvend.dm new file mode 100644 index 0000000000..d36af863d1 --- /dev/null +++ b/code/WorkInProgress/computer3/lapvend.dm @@ -0,0 +1,398 @@ +/obj/machinery/lapvend + name = "Laptop Vendor" + desc = "A generic vending machine." + icon = 'icons/obj/vending.dmi' + icon_state = "robotics" + layer = 2.9 + anchored = 1 + density = 1 + var/datum/browser/popup = null + var/obj/machinery/computer3/laptop/vended/newlap = null + var/obj/item/device/laptop/relap = null + var/vendmode = 0 + + + var/cardreader = 0 + var/floppy = 0 + var/radionet = 0 + var/camera = 0 + var/network = 0 + var/power = 0 + + +/obj/machinery/lapvend/New() + ..() + spawn(4) + power_change() + return + return + + +/obj/machinery/lapvend/blob_act() + if (prob(50)) + spawn(0) + del(src) + return + + return + + +/obj/machinery/lapvend/attackby(obj/item/weapon/W as obj, mob/user as mob) + if(vendmode == 1) + if(istype(W, /obj/item/weapon/card)) + var/obj/item/weapon/card/I = W + scan_card(I) + vendmode = 0 + if(vendmode == 3) + if(istype(W,/obj/item/weapon/card)) + var/obj/item/weapon/card/I = W + reimburse(I) + vendmode = 0 + if(vendmode == 0) + if(istype(W, /obj/item/device/laptop)) + var/obj/item/device/laptop/L = W + relap = L + calc_reimburse(L) + usr.drop_item() + L.loc = src + vendmode = 3 + usr << "You slot your [L.name] into \The [src.name]" + else + ..() + + +/obj/machinery/lapvend/attack_hand(mob/user as mob) + user.set_machine(src) + var/vendorname = (src.name) //import the machine's name + var/dat = "
[vendorname]


" //display the name, and added a horizontal rule + if(vendmode == 0) + dat += "
Please choose your laptop customization options

" + dat += "
Your comptuer will automatically be loaded with any programs you can use after the transaction is complete." + dat += "
Some programs will require additional components to be installed!


" + dat += "
HDD (Required) : Added

" + dat += "
Card Reader : Single (50) | Dual (125)
" + dat += "
Floppy Drive: Add (50)
" + dat += "
Radio Network card Add (50)
" + dat += "
Camera Card Add (100)
" + dat += "
Network card Area (75) Adjacent (50)Powernet (25)
" + dat += "
Power source upgrade
Extended (175) Unreal (250)" + + if(vendmode == 0 || vendmode == 1) + dat += "

Cart

" + dat += "Total: [total()]
" + if(cardreader == 1) + dat += "Card Reader: (single) (50)
" + else if (cardreader == 2) + dat += "Card Reader: (double) (125)
" + else + dat += "Card Reader: None
" + if(floppy == 0) + dat += "Floppy Drive: None
" + else + dat += "Floppy Drive: Added (50)
" + if(radionet == 1) + dat += "Radio Card: Added (50)
" + else + dat += "Radio Card: None
" + if(camera == 1) + dat += "Camera Card: Added (100)
" + else + dat += "Camera Card: None
" + if(network == 1) + dat += "Network card: Area (75)
" + else if(network == 2) + dat += "Network card: Adjacent (50)
" + else if(network == 3) + dat += "Network card: Powernet (25)
" + else + dat += "Network card: None" + if (power == 0) + dat += "Power source: Regular" + else if (power == 1) + dat += "Power source: Extended (175)
" + else + dat += "Power source: Unreal (250)
" + + if(vendmode == 0) + dat += "
Vend Laptop" + + if(vendmode == 1) + dat += "Please swipe your card and enter your PIN to complete the transaction" + + if(vendmode == 3) + dat += "Please swipe your card and enter your PIN to be finish returning your computer
" + dat += "Cancel" + + + + + popup = new(user, "lapvend", name, 450, 500) + popup.set_content(dat) + popup.open() + return + + +/obj/machinery/lapvend/Topic(href, href_list) + if ((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf)))) + usr.set_machine(src) + switch(href_list["choice"]) + if("single_add") + cardreader = 1 + if ("dual_add") + cardreader = 2 + if ("floppy_add") + floppy = 1 + if ("radio_add") + radionet = 1 + if ("camnet_add") + camera = 1 + if ("area_add") + network = 1 + if ("prox_add") + network = 2 + if ("cable_add") + network = 3 + if ("high_add") + power = 1 + if ("super_add") + power = 2 + + if ("single_rem" || "dual_rem") + cardreader = 0 + if ("floppy_rem") + floppy = 0 + if ("radio_rem") + radionet = 0 + if ("camnet_rem") + camera = 0 + if ("area_rem" || "prox_rem" || "cable_rem") + network = 0 + if ("high_rem" || "super_rem") + power = 0 + + if("vend") + vendmode = 1 + + if("cancel") + relap.loc = src.loc + relap = null + vendmode = 0 + + src.updateUsrDialog() + return + + +/obj/machinery/lapvend/proc/vend() + if(cardreader > 0) + if(cardreader == 1) + newlap.spawn_parts += (/obj/item/part/computer/cardslot) + else + newlap.spawn_parts += (/obj/item/part/computer/cardslot/dual) + if(floppy == 1) + newlap.spawn_parts += (/obj/item/part/computer/storage/removable) + if(radionet == 1) + newlap.spawn_parts += (/obj/item/part/computer/networking/radio) + if(camera == 1) + newlap.spawn_parts += (/obj/item/part/computer/networking/cameras) + if (network == 1) + newlap.spawn_parts += (/obj/item/part/computer/networking/area) + if (network == 2) + newlap.spawn_parts += (/obj/item/part/computer/networking/prox) + if (network == 3) + newlap.spawn_parts += (/obj/item/part/computer/networking/cable) + if (power == 1) + del(newlap.battery) + newlap.battery = new /obj/item/weapon/cell/high(newlap) + if (power == 2) + del(newlap.battery) + newlap.battery = new /obj/item/weapon/cell/super(newlap) + + newlap.spawn_parts() + +/obj/machinery/lapvend/proc/scan_card(var/obj/item/weapon/card/I) + if (istype(I, /obj/item/weapon/card/id)) + var/obj/item/weapon/card/id/C = I + visible_message("[usr] swipes a card through [src].") + if(vendor_account) + var/attempt_pin = input("Enter pin code", "Vendor transaction") as num + var/datum/money_account/D = attempt_account_access(C.associated_account_number, attempt_pin, 2) + if(D) + var/transaction_amount = total() + if(transaction_amount <= D.money) + + //transfer the money + D.money -= transaction_amount + vendor_account.money += transaction_amount + + //Transaction logs + var/datum/transaction/T = new() + T.target_name = "[vendor_account.owner_name] (via [src.name])" + T.purpose = "Purchase of Laptop" + if(transaction_amount > 0) + T.amount = "([transaction_amount])" + else + T.amount = "[transaction_amount]" + T.source_terminal = src.name + T.date = current_date_string + T.time = worldtime2text() + D.transaction_log.Add(T) + // + T = new() + T.target_name = D.owner_name + T.purpose = "Purchase of Laptop" + T.amount = "[transaction_amount]" + T.source_terminal = src.name + T.date = current_date_string + T.time = worldtime2text() + vendor_account.transaction_log.Add(T) + + newlap = new /obj/machinery/computer3/laptop/vended(src.loc) + + choose_progs(C) + vend() + popup.close() + newlap.close_computer() + newlap = null + cardreader = 0 + floppy = 0 + radionet = 0 + camera = 0 + network = 0 + power = 0 + else + usr << "\icon[src]You don't have that much money!" + else + usr << "\icon[src]Unable to access account. Check security settings and try again." + else + usr << "\icon[src]Unable to access vendor account. Please record the machine ID and call CentComm Support." + +/obj/machinery/lapvend/proc/total() + var/total = 0 + + if(cardreader == 1) + total += 50 + if(cardreader == 2) + total += 125 + if(floppy == 1) + total += 50 + if(radionet == 1) + total += 50 + if(camera == 1) + total += 100 + if(network == 1) + total += 75 + if(network == 2) + total += 50 + if(network == 3) + total += 25 + if(power == 1) + total += 175 + if(power == 2) + total += 250 + + return total + +/obj/machinery/lapvend/proc/choose_progs(var/obj/item/weapon/card/id/C) + if(access_security in C.access) + newlap.spawn_files += (/datum/file/program/secure_data) + newlap.spawn_files += (/datum/file/camnet_key) + newlap.spawn_files += (/datum/file/program/security) + if(access_armory in C.access) + newlap.spawn_files += (/datum/file/program/prisoner) + if(access_atmospherics in C.access) + newlap.spawn_files += (/datum/file/program/atmos_alert) + if(access_change_ids in C.access) + newlap.spawn_files += (/datum/file/program/card_comp) + if(access_heads in C.access) + newlap.spawn_files += (/datum/file/program/communications) + if(access_medical in C.access) + newlap.spawn_files += (/datum/file/program/crew) + newlap.spawn_files += (/datum/file/program/med_data) + if(access_engine in C.access) + newlap.spawn_files += (/datum/file/program/powermon) + if(access_research in C.access) + newlap.spawn_files += (/datum/file/camnet_key/research) + newlap.spawn_files += (/datum/file/camnet_key/bombrange) + newlap.spawn_files += (/datum/file/camnet_key/xeno) + if(access_rd in C.access) + newlap.spawn_files += (/datum/file/program/borg_control) + if(access_cent_specops in C.access) + newlap.spawn_files += (/datum/file/camnet_key/creed) + newlap.spawn_files += (/datum/file/program/arcade) + newlap.spawn_files += (/datum/file/camnet_key/entertainment) + newlap.update_spawn_files() + +/obj/machinery/lapvend/proc/calc_reimburse(var/obj/item/device/laptop/L) + if(istype(L.stored_computer.cardslot,/obj/item/part/computer/cardslot)) + cardreader = 1 + if(istype(L.stored_computer.cardslot,/obj/item/part/computer/cardslot/dual)) + cardreader = 2 + if(istype(L.stored_computer.floppy,/obj/item/part/computer/storage/removable)) + floppy = 1 + if(istype(L.stored_computer.radio,/obj/item/part/computer/networking/radio)) + radionet = 1 + if(istype(L.stored_computer.camnet,/obj/item/part/computer/networking/cameras)) + camera = 1 + if(istype(L.stored_computer.net,/obj/item/part/computer/networking/area)) + network = 1 + if(istype(L.stored_computer.net,/obj/item/part/computer/networking/prox)) + network = 2 + if(istype(L.stored_computer.net,/obj/item/part/computer/networking/cable)) + network = 3 + if(istype(L.stored_computer.battery, /obj/item/weapon/cell/high)) + power = 1 + if(istype(L.stored_computer.battery, /obj/item/weapon/cell/super)) + power = 2 + + + +/obj/machinery/lapvend/proc/reimburse(var/obj/item/weapon/card/I) + if (istype(I, /obj/item/weapon/card/id)) + var/obj/item/weapon/card/id/C = I + visible_message("[usr] swipes a card through [src].") + if(vendor_account) + var/attempt_pin = input("Enter pin code", "Vendor transaction") as num + var/datum/money_account/D = attempt_account_access(C.associated_account_number, attempt_pin, 2) + if(D) + var/transaction_amount = total() + + //transfer the money + D.money += transaction_amount + vendor_account.money -= transaction_amount + + //Transaction logs + var/datum/transaction/T = new() + T.target_name = "[vendor_account.owner_name] (via [src.name])" + T.purpose = "Return purchase of Laptop" + if(transaction_amount > 0) + T.amount = "([transaction_amount])" + else + T.amount = "[transaction_amount]" + T.source_terminal = src.name + T.date = current_date_string + T.time = worldtime2text() + D.transaction_log.Add(T) + // + T = new() + T.target_name = D.owner_name + T.purpose = "Return purchase of Laptop" + T.amount = "[transaction_amount]" + T.source_terminal = src.name + T.date = current_date_string + T.time = worldtime2text() + vendor_account.transaction_log.Add(T) + + del(relap) + + vendmode = 0 + cardreader = 0 + floppy = 0 + radionet = 0 + camera = 0 + network = 0 + power = 0 + + else + usr << "\icon[src]Unable to access account. Check security settings and try again." + else + usr << "\icon[src]Unable to access vendor account. Please record the machine ID and call CentComm Support." \ No newline at end of file From e225661c2c486027b5b9f9b6d864ecd604c26671 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 23 Jun 2014 02:53:09 -0400 Subject: [PATCH 017/304] Fixes #5193 --- code/modules/mob/living/living.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 4447c5f225..9865901886 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -431,7 +431,8 @@ else stop_pulling() . = ..() - if ((s_active && !( s_active in contents ) )) + + if (s_active && !( s_active in contents ) && get_turf(s_active) != get_turf(src)) //check !( s_active in contents ) first so we hopefully don't have to call get_turf() so much. s_active.close(src) if(update_slimes) From dc6b2ef3bf4156687a5e6077b6ee7c39432dcd65 Mon Sep 17 00:00:00 2001 From: DJSnapshot Date: Sun, 22 Jun 2014 23:55:26 -0700 Subject: [PATCH 018/304] allows laptops to be recharged in rechargers. --- code/game/machinery/recharger.dm | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm index 094d3af123..a5d9a6ce1d 100644 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -8,12 +8,12 @@ obj/machinery/recharger use_power = 1 idle_power_usage = 4 active_power_usage = 250 - var/obj/item/weapon/charging = null + var/obj/item/charging = null obj/machinery/recharger/attackby(obj/item/weapon/G as obj, mob/user as mob) if(istype(user,/mob/living/silicon)) return - if(istype(G, /obj/item/weapon/gun/energy) || istype(G, /obj/item/weapon/melee/baton)) + if(istype(G, /obj/item/weapon/gun/energy) || istype(G, /obj/item/weapon/melee/baton) || istype(G,/obj/item/device/laptop)) if(charging) return @@ -31,6 +31,11 @@ obj/machinery/recharger/attackby(obj/item/weapon/G as obj, mob/user as mob) return if (istype(G, /obj/item/weapon/gun/energy/staff)) return + if(istype(G, /obj/item/device/laptop)) + var/obj/item/device/laptop/L = G + if(!L.stored_computer.battery) + user << "There's no battery in it!" + return user.drop_item() G.loc = src charging = G @@ -79,6 +84,16 @@ obj/machinery/recharger/process() use_power(150) else icon_state = "recharger2" + return + if(istype(charging, /obj/item/device/laptop)) + var/obj/item/device/laptop/L = charging + if(L.stored_computer.battery.charge < L.stored_computer.battery.maxcharge) + L.stored_computer.battery.give(100) + icon_state = "recharger1" + use_power(250) + else + icon_state = "recharger2" + return obj/machinery/recharger/emp_act(severity) if(stat & (NOPOWER|BROKEN) || !anchored) From 80580de834b4d4478f4922de4bdf0781b00cefde Mon Sep 17 00:00:00 2001 From: DJSnapshot Date: Mon, 23 Jun 2014 00:07:55 -0700 Subject: [PATCH 019/304] added laptops and extra chargers to the map. --- maps/tgstation2.dmm | 36 +++++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/maps/tgstation2.dmm b/maps/tgstation2.dmm index 9330039a8b..92986dd969 100644 --- a/maps/tgstation2.dmm +++ b/maps/tgstation2.dmm @@ -791,7 +791,7 @@ "apk" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/camera{c_tag = "Brig Evidence Storage"; dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/security/brig) "apl" = (/obj/structure/rack,/obj/item/weapon/storage/box/seccarts{pixel_x = 3; pixel_y = 2},/obj/item/weapon/storage/box/handcuffs,/obj/item/weapon/storage/box/flashbangs{pixel_x = -2; pixel_y = -2},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/security/warden) "apm" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/table,/obj/item/weapon/folder/red,/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/security/main) -"apn" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/disposalpipe/segment,/obj/item/weapon/storage/fancy/donut_box,/turf/simulated/floor{icon_state = "redfull"; dir = 9},/area/security/main) +"apn" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/disposalpipe/segment,/obj/machinery/recharger{pixel_y = 0},/obj/item/weapon/storage/fancy/donut_box,/turf/simulated/floor{icon_state = "redfull"; dir = 9},/area/security/main) "apo" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/carpet{icon_state = "carpetnoconnect"},/area/security/hos) "app" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/security/hos) "apq" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/structure/stool,/turf/simulated/floor{icon_state = "redfull"; dir = 9},/area/security/main) @@ -1604,7 +1604,7 @@ "aER" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2) "aES" = (/obj/structure/table,/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/turf/simulated/floor,/area/storage/primary) "aET" = (/obj/effect/landmark/start{name = "Assistant"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor,/area/storage/primary) -"aEU" = (/obj/structure/table/woodentable,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/security/vacantoffice) +"aEU" = (/obj/machinery/lapvend,/turf/simulated/floor{icon_state = "dark"},/area/hallway/secondary/exit) "aEV" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor/plating,/area/security/vacantoffice) "aEW" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/stool/bed/chair/office/dark{dir = 8},/turf/simulated/floor/plating,/area/security/vacantoffice) "aEX" = (/obj/structure/table/woodentable,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/wood,/area/security/vacantoffice) @@ -2227,7 +2227,7 @@ "aQQ" = (/obj/machinery/door/morgue{dir = 2; name = "Confession Booth"},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) "aQR" = (/obj/machinery/light/small,/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1480; name = "Confessional Intercom"; pixel_x = 25},/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) "aQS" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plating,/area/maintenance/fsmaint2) -"aQT" = (/obj/machinery/computer/arcade,/turf/simulated/floor{icon_state = "dark"},/area/hallway/secondary/exit) +"aQT" = (/obj/structure/table/woodentable,/obj/machinery/recharger{pixel_y = 0},/turf/simulated/floor/wood,/area/library) "aQU" = (/obj/structure/closet/emcloset,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/exit) "aQV" = (/obj/structure/closet/emcloset,/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/hallway/secondary/exit) "aQW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/exit) @@ -4025,7 +4025,7 @@ "bzu" = (/turf/simulated/floor{dir = 4; icon_state = "loadingarea"},/area/hallway/primary/central) "bzv" = (/obj/structure/filingcabinet/chestdrawer,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/simulated/floor{icon_state = "blue"; dir = 10},/area/crew_quarters/heads) "bzw" = (/obj/machinery/requests_console{announcementConsole = 1; department = "Head of Personnel's Desk"; departmentType = 5; name = "Head of Personnel RC"; pixel_y = -30},/obj/machinery/camera{c_tag = "Head of Personnel's Office"; dir = 1},/turf/simulated/floor,/area/crew_quarters/heads) -"bzx" = (/obj/structure/table,/obj/item/device/eftpos{eftpos_name = "HoP EFTPOS scanner"},/turf/simulated/floor,/area/crew_quarters/heads) +"bzx" = (/obj/structure/table,/obj/machinery/recharger{pixel_y = 0},/turf/simulated/floor,/area/storage/primary) "bzy" = (/obj/structure/stool/bed/chair/office/dark{dir = 1},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/wood,/area/medical/psych) "bzz" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/wall/r_wall,/area/turret_protected/ai_server_room) "bzA" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor{dir = 4; icon_state = "whiteyellowfull"},/area/crew_quarters/sleep/engi) @@ -6162,7 +6162,7 @@ "coz" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) "coA" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) "coB" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) -"coC" = (/obj/structure/table/reinforced,/turf/simulated/floor,/area/hallway/primary/aft) +"coC" = (/obj/structure/table/woodentable,/obj/machinery/recharger{pixel_y = 0},/turf/simulated/floor/plating,/area/security/vacantoffice) "coD" = (/obj/structure/table/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/cyan,/obj/item/weapon/folder/yellow,/turf/simulated/floor,/area/hallway/primary/aft) "coE" = (/obj/structure/table/reinforced,/obj/item/weapon/packageWrap,/obj/item/weapon/hand_labeler,/turf/simulated/floor,/area/hallway/primary/aft) "coF" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) @@ -6338,6 +6338,7 @@ "crT" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/obj/machinery/meter,/obj/machinery/firealarm{pixel_y = 24},/turf/simulated/floor,/area/atmos) "crU" = (/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/obj/machinery/atmospherics/pipe/simple/visible/supply{tag = "icon-intact (SOUTHWEST)"; icon_state = "intact"; dir = 10},/turf/simulated/floor,/area/atmos) "crV" = (/obj/structure/stool/bed/chair/comfy/brown,/obj/effect/landmark/start{name = "Psychiatrist"},/turf/simulated/floor{icon_state = "bcarpet06"},/area/medical/psych) +"crW" = (/obj/structure/table/woodentable,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/recharger{pixel_y = 0},/turf/simulated/floor/plating,/area/security/vacantoffice) "crX" = (/obj/structure/reagent_dispensers/fueltank,/obj/effect/decal/cleanable/blood/oil{amount = 0},/turf/simulated/floor/plating,/area/maintenance/asmaint) "crY" = (/obj/machinery/computer/atmos_alert,/obj/machinery/alarm{pixel_y = 22},/turf/simulated/floor,/area/engine/engineering_monitoring) "crZ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) @@ -8236,6 +8237,7 @@ "dcu" = (/obj/machinery/camera{c_tag = "Central Compartment South"; dir = 1; network = list("Tcomsat")},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light,/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "dcv" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 120; icon_state = "in"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "dcw" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/wall/r_wall,/area/tcommsat/chamber) +"dcx" = (/obj/structure/table/woodentable,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/recharger{pixel_y = 0},/turf/simulated/floor/plating,/area/security/vacantoffice) "dcy" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/space,/area/turret_protected/tcomsat) "dcz" = (/obj/structure/window/reinforced,/obj/structure/lattice,/obj/machinery/light{dir = 1},/turf/space,/area/turret_protected/tcomsat) "dcA" = (/turf/simulated/wall/r_wall,/area/turret_protected/tcomfoyer) @@ -10666,10 +10668,12 @@ "dXh" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 8},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/asmaint) "dXi" = (/obj/structure/table,/obj/item/weapon/storage/box/cups,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "dXj" = (/obj/structure/reagent_dispensers/water_cooler,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) +"dXk" = (/obj/machinery/lapvend,/turf/simulated/floor,/area/storage/primary) "dXl" = (/turf/unsimulated/wall{icon_state = "phoron14"},/area/alien) "dXm" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall,/area/medical/virology) "dXn" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/medical{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "virologyq_airlock_exterior"; locked = 1; name = "Virology Quarantine Airlock"; req_access_txt = "39"},/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "virologyq_airlock_control"; name = "Virology Quarantine Access Button"; pixel_x = -24; pixel_y = 0; req_access_txt = "39"},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "dXo" = (/turf/unsimulated/wall{icon_state = "phoron10"},/area/alien) +"dXp" = (/obj/structure/table,/obj/machinery/recharger{pixel_y = 0},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbreak) "dXq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "dXr" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "dXs" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) @@ -10733,6 +10737,8 @@ "dYy" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/structure/closet/l3closet/virology,/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/item/clothing/mask/gas,/turf/simulated/floor{dir = 4; icon_state = "warnwhite"},/area/medical/virology) "dYz" = (/obj/machinery/portable_atmospherics/canister,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/research_outpost/power) "dYA" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor,/area/quartermaster/office) +"dYB" = (/obj/structure/table,/obj/item/device/eftpos{eftpos_name = "HoP EFTPOS scanner"},/obj/machinery/recharger{pixel_y = 0},/turf/simulated/floor,/area/crew_quarters/heads) +"dYC" = (/obj/structure/table/reinforced,/obj/machinery/recharger{pixel_y = 0},/turf/simulated/floor,/area/hallway/primary/aft) "dYF" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "dYG" = (/obj/machinery/atmospherics/pipe/simple/visible/supply,/obj/structure/disposalpipe/sortjunction/flipped{dir = 1; sortType = "Atmospherics"; name = "Atmospherics"},/turf/simulated/floor,/area/atmos) "dYH" = (/obj/machinery/door/airlock/maintenance{name = "Incinerator Access"; req_access_txt = null; req_one_access_txt = "5;12"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/incinerator) @@ -10974,23 +10980,23 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafazQasSazRavtazSazTazUazVazWazSavtazXazYasSazZaAaatKaAbaAcaAcaAcaAcaAcaAcavzbezaAeazbaAfaAgaAhazbbghapaapaapaapaapaapaapaapaaAjaygaafaAkaAkaAkaAkaAkaAkaAkaafaygaykaylaAlaAmaAnaAoaAlaylaQnaApaxraxraxraxraAqaAraypaAsaAraAtaxraxraxraxrayzapEaAualNaQvaNFaHybdEaHqaHravdaAvazBazBazBazBazBazBaAwaAxaAyazBasPasPasPasPbgobgrasPasPbdKasRasRasRasRasRbdKasPaaaaaaaaaaaeaaaaaaaaaaaaaafaAAaABbdTaADaAAaafaaaaaaaafaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxRayVaAEaAFaAFaAFaAFaAGayVaxRaAHasSaAIaAJaAKaAKaAKaAKaAKaAKaAKaAKawibfxbfzazbbckaANaAOazbaAPaAQaAPaAPaAPaAPaAPaAPaAPaAPaARaaaaAkaASaATaAUbbTaAWaAkaaaaygaykaylaAlaAXbewaAZaAlaylaQnapxaxraBaaBbazlaBcaBdazoazpaBdaBeazsaBfaBfaxrayzapEayAalNbdZaIkaIhbdEbejbelavdaAvazBaBiaAxaBjaBjazBaAwaBkaAyazBaBlaBmaBnaBobhDaULaBqaafbfBbfdbfdbfdbfdbfdbfgaafaaaaaaaaaaaaaaaaaaaaaaaaaafaAAaBuaBvaBwaAAaafaaaaaaaBqaBqaBqaBqaBqbhqbhCaBqaBqaBqaBqaBqaBqaBqbgHaBFaBFaBFaBGaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaBHaBIaBJaBIaBIaDRaDSaBIaBIaBJaBMaBNasSayWaBOaQlaQjaSQaBSaBTaBUaBVaAKawiaPOatKazbazbaBXaBYaARaBZaCaaCbaCcaCdaCeaCfaCgaXEaCiaARaafaAkaQmaCkaClaCmaCnaAkaafaygaykaylaCoaCpaCqaCpaCraylaQnaCsaxrayoaypaCtaCuaAraCvaAsaAraCwaCxaypaCyaxrayzapEayAalNaQvaIAaIDaQxaIvaHraCAaCBazBaCCaAxaAxaAxazCaCDaCEaCFazBaCGaCHaCIaCJaYFaULaBqaaaaafaaaaafaaaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaAAaZbaCMaCNaAAaBqaCOaCPaBqaQSaQDaQDaQDaQDaQDaQDaQFaRdaRdaRdaRdaRfaRdaRdaRdaRhaDaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBHaBMaBIaDbaDcaDcaDdaDeaDfaDgaDhaDcaDcaDiaDjayUayWaZuaAKaRqaDmaDnaDoaDnaDpaDqaDraDsaqYaZnaDuaDvaAcaDwaDxaDyaDzaDzaDzaDAaDzaDzaDBaCaaARaaaaAkaRAaRTaRVaCmaSaaAkaaaaygaykaylaRuaDHaDIaDJaRyaylaQnaDLaxraxraxraxraDMaAraypaDNaBdaDOaTuaypaDQaVHaVzaVAaVpaVwaKJaVGaShaShaShaSEaScaVdaTiaTnbabaSPaSPaSPaUgaSPaTFaTTaTUaTVaUkaUGaVQaULaBqaBqaBqaBqaBqaBqaBqaBqaBqaCOaCPaBqaBqaBqaCOaEjaEkaBqaBqaAAaAAaElaEmaAAaEnaVqaVoaVoaVsaEsaEsaEsaEsaEsaWyaVraEuaEuaEuaEuaUNaEuaEyaEyaVnaEyaEyaEyaEyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBHaBMaBIaDbaDcaDcaDdaDeaDfaDgaDhaDcaDcaDiaDjayUayWaZuaAKaRqaDmaDnaDoaDnaDpaDqaDraDsaqYaZnaDuaDvaAcaDwaDxaDyaDzaDzaDzaDAaDzaDzaDBdXkaARaaaaAkaRAaRTaRVaCmaSaaAkaaaaygaykaylaRuaDHaDIaDJaRyaylaQnaDLaxraxraxraxraDMaAraypaDNaBdaDOaTuaypaDQaVHaVzaVAaVpaVwaKJaVGaShaShaShaSEaScaVdaTiaTnbabaSPaSPaSPaUgaSPaTFaTTaTUaTVaUkaUGaVQaULaBqaBqaBqaBqaBqaBqaBqaBqaBqaCOaCPaBqaBqaBqaCOaEjaEkaBqaBqaAAaAAaElaEmaAAaEnaVqaVoaVoaVsaEsaEsaEsaEsaEsaWyaVraEuaEuaEuaEuaUNaEuaEyaEyaVnaEyaEyaEyaEyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDiaEBaECaEDaDcaEEaDcaEEaDcaEEaDcaEEaDcaEFaEGazSayWaEHaAKaVuaEJaEKaELaEMaENaAKaEOaVtaAcaEQaAcaERaqYaAPaESaDBaDzaDzaDzaDzaDzaDzaETaWjaWgaVJaVIaWMaWNaWKaWLaWJaAkaafaygaWIaWpaWuaWxaWqaWsaWkaWpaZdaZcaxraFmaypazlaFnaBdazoaFoaAraCwaVvaypaFqaVHaWTaFsaFtaXcbdZagjagjagjagjaVEaVFaWSaVxaVybazaVxaXfaVxaXeaVxaXgaXhaFGaFHaFIaBoaXjaXmaXXaXVaXVaXCaYcaXYaXYaXYaXYaXYbaCaXYaXYaYwaYgaYeaXnaYHaYGaYxaWOaWPaWQaWQaWQaWRaEsaEsaGeaEsaGfaGgaGhaEsaEuaWUaEuaGjaXlaXkaGmaGnaGoaIbasHaGraGsaGtaGuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGvaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaXoaDcaDcaBJaDcaEEaDcaEEaGxaEEaDcaEEaDcaEFaEGazSayWaGyaAKaYQaYRaYKaYPaYKaQlaQlaYJaYNaYOaYLaYMaYLaYLbakbajaGKaGLaGLaGLaGMaGLaGLaGNaGOaARaaaaZXaAkaGQaZOaGQaAkaAkaaaaygavOaylbaiaZIaZiaZqaZDaZEaZhbglaxraHbaypaCxaCuaAraypaAsaAraCwaZgaypaHdawGaYhaHfaHgaUnaYfalNalNalNalNalNaHjaYbazBaHlaAxazBaHmazBaHnazBaHobcvbcwbcNbczbdNbcXaYUbdlbdmbbvbdAbbwbbvbbvbbxbbzbbybbAbbybbFbbybbybbibcubcbbawbawbbEbaSbawbaxbawbaWaYIaHOaHPaHQaHRaHSaHTaEsaHUbaXaEuaHWaHXaYiaHZaGnaIaaIbasHaIcaEyaEyaEyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDiaIdaECaEDaDcaEEaDcaEEaDcaEEaDcaEEaDcaEFaEGazSaIeawzawyawxawuawuawuawzawCawDawzawAaImaInawBauKauKaAPaGOaIpaCaaIqaGOaGOaIraIsaItaIuaARaaaawaaaaavMavNavMaaaaafaaaaygavOaylaIyaIzavZaIBaICaylavLapaaxraIEaypazlaIFaIGazoaIHaIIaIJaIKaILaIMawGaBsaIOaIPaIQaBKaISaaaaaaaUnaIUaIVaBLazBaIXaAxaAxaAxaCEaAxaAxaAxauOaBoaKyaBoaBoavJaBoaJcaBoaJdavHavGaJgaJhaJiaJjaJkavFaJjavEaJjaJjaJjaJjavDaJjaJjavCaJjaJjaJjaJjasIayRayvaAzaAiaBraBpazHbMsazIavpavlavmavnazFayNayPazDazEasHaIbaJDaJEaJFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJHaJIaBIaDbaDcaDcaDcaJJaDcaDcaJKaDcaDcaDiaJLaJMayWaxTaJNaJOaJOaJOaJOaJOaJOaJOaJPasDatKatKavkatKatKaAPaJSaJTaJUaJVaJVaJVaJVaJWaJXaJYaARaJZavaaKbaKcavbaKeaKbaKbaKfaygavcaylaylaylayKayJayLawGayBavKaxraxraxraxraKlaKmaCxaCxaKnayHawGawGaxraxraIOaIOaIOaIOaKpaKqaKraKsaUnaKtaIVaKuazBazBazBazBazBazBazBazBazBauOaKwaKvaKxaIZauMavIaKBaKCaJdauyauWauXaKGaKHaJjaKIauVaKKawtaKKaKMaKNaKOauQaKQaKRauxaKTauUaKVaJjauwauvaKYaJraKZaJtaJuaysaEsaLbauuaLdavfauoaveaunaEuaEyaLhasHaIbaLiaLjaLkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDiaIdaECaEDaDcaEEaDcaEEaDcaEEaDcaEEaDcaEFaEGazSaIeawzawyawxawuawuawuawzawCawDawzawAaImaInawBauKauKaAPaGOaIpaCaaIqbzxaGOaIraIsaItaIuaARaaaawaaaaavMavNavMaaaaafaaaaygavOaylaIyaIzavZaIBaICaylavLapaaxraIEaypazlaIFaIGazoaIHaIIaIJaIKaILaIMawGaBsaIOaIPaIQaBKaISaaaaaaaUnaIUaIVaBLazBaIXaAxaAxaAxaCEaAxaAxaAxauOaBoaKyaBoaBoavJaBoaJcaBoaJdavHavGaJgaJhaJiaJjaJkavFaJjavEaJjaJjaJjaJjavDaJjaJjavCaJjaJjaJjaJjasIayRayvaAzaAiaBraBpazHbMsazIavpavlavmavnazFayNayPazDazEasHaIbaJDaJEaJFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJHaJIaBIaDbaDcaDcaDcaJJaDcaDcaJKaDcaDcaDiaJLaJMayWaxTaJNaJOaJOaJOaJOaJOaJOaJOaJPasDatKatKavkatKatKaAPaJSaJTaJUaJVaJVaJVaJVaJWaJXaJYaARaJZavaaKbaKcavbaKeaKbaKbaKfaygavcaylaylaylayKayJayLawGayBavKaxraxraxraxraKlaKmaCxaCxaKnayHawGawGaxraxraIOaIOaIOaIOaKpaKqaKraKsaUnaKtaIVaKuazBazBazBazBazBazBazBazBazBauOaKwaKvaKxaIZauMavIaKBaKCaJdauyauWauXaKGaKHaJjaKIauVaKKawtaKKaKMaKNaKOauQaKQaKRauxaKTauUaKVaJjauwauvaKYaJraQTaJtaJuaysaEsaLbauuaLdavfauoaveaunaEuaEyaLhasHaIbaLiaLjaLkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJHaBIaBJaBIaBIaDRaDSaBIaBIaBJaJIaLmasSaLnaxTawXaLoaLoaLpaLoaLqatHaLraLsasDaLtaLuaACaLwazwaLyaLzaLAaLzaLzaLzaLzaLzaLzaLzaLBaLCazNaAdaLFaLFayTaLHaLFaLFaLFaLIazKaLKaLLaLFazJaLNaLOaLPaDKaIOaLRaLSaIOaIPaLTaLTaLTaLTaLTaLTaLUaLVaLWaLXaLYaLZaMaaMbaMcaIOaIOaIOaDGaMeaMfaMeaMgaMhaMiaMjaIOaMkaIOaBoaMlaxMaOOaMoaMnaMpaxKaMraMsaMtaJdaxLaMvaMwaMwaMxaJjaMyaxJaMAaxBaMAaMAaMCaMDaxDaMDaMFayOayCayQaMDaJjasIarZaHPaHPaCXaDFaHPaHPaEsaMOaMPaEuaytaMRaHZavTaEuaMSaymayeaIbaEyaEyaEyaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawXayVaMVaAFaAFaAFaAFaMWayVawXaAHasSaAIaMXaMYaMZavSaNbaNbaNcatHaNdaLsaxAaNfaLuaxzaNhaNiaNjaNkaNlaLzaLzaLzaLzaLzaLzaLzaxhaxiaxuaLzaLzaLzaxpayuaLzaLzaLzaLzaxvaLzaLzaLzaxtaNmaLuaLPaIOaIOaIOaIOaIOaIOaIOaIOaIOaIOaIOaIOaNsaNtaNuaNvaNwaNxaNyaNzaNAaIOaIOaIOaLPaIOaIOaIOaIOaIOaIOaIOaIOaNBaCzaCjaCWaCQaMpaNEaMpaMpawEaNGaMsaNHaJdawFawJawSaNLaNMaJjaNNawTaNPawHaNRaNSaJjaNTawIaNTaJjaJjaJjavCaJjaJjasIarZaNVaHPaHPaNWaHPaNXaEsaEuaEuaEuaEuaEuaEuavQaEuaIbaIbasHaIbaNZaOaaEyaaaaafaaaaaaaaaaaaaaaaaaaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafazQasSaMYavtazSaObaOcaOdaOeazSavtaOfaOgasSayWaxTaMYaOhaOiaNbaNbaNcatHaOjaLsasDaNfaLuasXaLAaLzaLzaLzaChaEzaBPaLzausardaOmaOraALatmarMaOmaOvaOwaOxathatlatkatjatiatcatbatbasYatdaNmaLuaLPaIOaOHaIOaOIaOIaOIaOIaOIaOIaOIaOIaOJaOKaOIaOIaOIaOIaOLaOIaOIaOIaOIaOIaOMaONaOIaOIaOIaOIaOIaOIaOIaIOaIOaIOaBoaAYasOaOQaOQaOQaORasQaNGaMsaBQaJdaJdaJdaJdaJdaOUaJjaOVasKasLasNaNPaNPaJjaOZasMaPbaPcaPbaPbasJaPeaJjasIarZaPfaPfaPgaPhaPiaPiaPjaEsaPkaPlaPmaEyaskaVbasbaIbaIbasHaIbaEyaPsaEyaPtaPtaPtaPuaPvaPwaaaaaaaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafatHaxRayVaJMayWaxTaxTayXaJMayVaJMaPxawYaPyaxTaxRaPzaPzaLpaPzaLqatHaPAaLsasDaPBaPBasCatzaPBaPEaPEaPEaPEaPEaPFaPGaPEaPEaPEaPEaPEasEaPIaPJaPIaPKasGaPMaLzaLAaPNasFaPPaPQaLAaLzaPRaPRaUnaIOaIOaIPaPTaKraKraPUaPUaPUaPUaPVawGawRaxqaPZaQaaQaaQbaQcaQaaQdaQeaQfawGaQgaPUaPUaPUaPUaKraKraQhaINaIOaIOaBoaQiashaQkaQkaQkaQkasyassasiaQoavXarFdZFaQsaQtaQuaJdaJdaszaQwasBaQyaQzaJjaQAasAaQCaQCaQCaQCascaQEaJjasaarZaQGaHPaPgaPhaHPaHPaQHaEsaQIaQJaQKaEyaQLarpaPraSoaPoasgaIbaQQaQRaEyasfaQTaPtaQUaQVaQWaafaaaaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafatHaxRayVaJMayWaxTaxTayXaJMayVaJMaPxawYaPyaxTaxRaPzaPzaLpaPzaLqatHaPAaLsasDaPBaPBasCatzaPBaPEaPEaPEaPEaPEaPFaPGaPEaPEaPEaPEaPEasEaPIaPJaPIaPKasGaPMaLzaLAaPNasFaPPaPQaLAaLzaPRaPRaUnaIOaIOaIPaPTaKraKraPUaPUaPUaPUaPVawGawRaxqaPZaQaaQaaQbaQcaQaaQdaQeaQfawGaQgaPUaPUaPUaPUaKraKraQhaINaIOaIOaBoaQiashaQkaQkaQkaQkasyassasiaQoavXarFdZFaQsaQtaQuaJdaJdaszaQwasBaQyaQzaJjaQAasAaQCaQCaQCaQCascaQEaJjasaarZaQGaHPaPgaPhaHPaHPaQHaEsaQIaQJaQKaEyaQLarpaPraSoaPoasgaIbaQQaQRaEyasfaEUaPtaQUaQVaQWaafaaaaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawXaQXaxTaQYaPyaxTaxTaQZaQYaxTaQXaPyaxTaxTaxTaRaaRbaRbaRbaRbaRbaRbaRbaRcatUaPBaReaufaFvautaumaRjaRkaRlaRmaRnaRoaRpaukaRraRsaRtaujaRvaRwaxIaPKatwaPMaPMaRzaPMaugaPSaPSaRBaRCaPSaPSaPSaRDaIOaIPaREaaaaaaaaaaaaaaaaaaaaaaPWaRFaRGaRHaRIaRJaRKaRJaRLaRMaRNaROaPWaaaaaaaaaaaaaaaaaaaaaaRPaINaIOauZaRRaRSatDaQoaQoaQoaQoaQoaRUatGaQoaQoaQoaQraMpaRWaRXaRYaRZatxaSbatyaSdaSeaJdaPbatCaSgaSgaSgaSgatTaSiaJjasIarZaSjaSjaPgaPhaSkaSkaSlaEsaEsaSmaEsaEyaLhatZaulaulaulatNaTJaEyaEyaEyaSpaSqaSraSsaStaSuaafaafaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaxRaSvaSwaSvaSvaSvaSvaSvaSvaSwaSvaSvaSxaxTaxTaSyaxTaxTaSzaxTaSAaSBaSCaSDatuaPBaReattbeRaPEaSHaRnaRnaRnaRnaRnaRoaSIaRnaRnaRnaRtasEaSJaSKauRaPKatwaPMaSMaSNaupatvaPSasnaSRaSSaSTaSUaSVaIOaIOaIPaREaaaaaaaaaaaaaPWaPWaPWaPWaSWaSXaSYaSZaTaaTbaTcaTdaTeaTfaTgaPWaPWaPWaPWaaaaaaaaaaaaaRPaINaIOaIOaThaQoatnaTjaTkaQoaTlaTmaCIatqaToaTkaQoaQraMpaTpaRXaTqaTratraTtatsaTvaRXaTwaTxaTyaSgaTzaTAaSgaTBaPbaJjasIarZaQGaHPaPgaPhaHPaHPaHPaTCaTDaHPaTEaEyarDastaSoaSoaSoasgaIbaIbaEyaTKaSsaSsaSsaSsaStaTLaTMaTMaTNaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasSasSaTOaTPaTPaTPaTPaTPaTPaTPazYasSatHaTQaTRaTSaTSaTSaFuaTSaTSaTSaBgaTSaBgaPBaReattbeRaPEaTXaRnaRnaTYaTZaUaaUbaTYaRnaRnaRnaUcasEaUdaUeaUfaPKaFkaPMaUhaUiaUjaFpaPSaUlaSUaSUaSSaSUaUmaIOaIOaIPaKqaPVaUnaUoaPWaPWaUpaUqaUraUsaUtaUtaUuaUvaUtaUuaUvaUtaUwaUxaUyaUzaUAaPWaPWaUoaUnaUBaUCaINaIOaIOaBoaUDatnaToaTkaQoaUEaUFaQoaFjaUHaTkaQoaQraMpaUIaRXaUJaFzaFyaUMaFxaUOaRXaUPaUQaURaSgaUSaUTaSgaUUaUVaJjasIarZaUWaUWaPgaPhaUXaHPaHPaUYaHPaUZaVaaEyaIbaTGaTHaSoaTGaFwaQqaVfaEyaVgaSsaSsaSsaSsaSsaVhaViaVjaVkaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaafaVmazTaxVaxTaExaEwaEvaEtaEraEXaEWaEVaEUaEPaEIaEAaOqaEqaPEaVBaRnaRnaTYaUaaVCaVDaTYaRnaRnaRnaRtasEaPKaPKaEfaPKaEgaEhaEhaEhaEhaEoaEiaEpaSSaSSaSSaHcaUmaIOaIOaIPaLTaLTaVKaVLaVMaPWaVNaTbaUtaVOaUtaUtaUtaUtaVPaUtaUtaUtaVRaVSaVSaVTaVUaPWaVVaVLaVWaVXaLTaINaIOaIOaThaQoatDaQoaQoaQoaVYaVZaQoaFjaWaaTkaQoaQraMpaWbaRXaWcaWdaWeaWfaFiaUOaWhaJdaPbaURaWiaSgaSgaSgaUUaPbaJjaFharZaEsaEsaFgaPhaWlaWmaHPaWnaWoaKZaFfaFaaymaFdaFeaFcaFdaFbaymaEZaFaaEYaWzaSsaSsaSsaWAaWBaWCaTMaWDaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaWEaWFaWGayWaWHaGlaGzaGqaGBaGAaGDaGCaGEaGqaGGaGFaGIaYCaFXaPEaWVaRnaWWaWXaYdaYAaYBaWYaWYaWYaXaaXbaFYaXdaGcaGbaGaaFZaReaReaXiaPBaGdaPSaIoaIlaHFaHEaHBaHpaIRaIOaIOaIOaIOaXpaXqaXraXsaXtaXuaUtaXvaXwaXxaXyaXzaXAaXBaIWaXDaKUaXFaXtaXGaXHaXIaXJaXKaXLaXMaXNaXOaIOaXPaBoaRSatnaXQaTkaQoaXRaXSaQoaFjaToaTkaQoaQraXTaRWaRXaWcaRXaXUaRXaGJaUOaXWaJdaQAaURaSgaSgaSgaSgaUUaQEaJjaYDaGRaXZaYaaQOaQPaPgaPgaPgaPgaPgaPgaFVaEyaIbaTGaTHaSoaTGaTHaIbasHaEyaSnaSsaSsaSsaSsaYkaYlaYmaafaafaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaafaVmazTaxVaxTaExaEwaEvaEtaEraEXaEWaEVcrWaEPaEIaEAaOqaEqaPEaVBaRnaRnaTYaUaaVCaVDaTYaRnaRnaRnaRtasEaPKaPKaEfaPKaEgaEhaEhaEhaEhaEoaEiaEpaSSaSSaSSaHcaUmaIOaIOaIPaLTaLTaVKaVLaVMaPWaVNaTbaUtaVOaUtaUtaUtaUtaVPaUtaUtaUtaVRaVSaVSaVTaVUaPWaVVaVLaVWaVXaLTaINaIOaIOaThaQoatDaQoaQoaQoaVYaVZaQoaFjaWaaTkaQoaQraMpaWbaRXaWcaWdaWeaWfaFiaUOaWhaJdaPbaURaWiaSgaSgaSgaUUaPbaJjaFharZaEsaEsaFgaPhaWlaWmaHPaWnaWoaKZaFfaFaaymaFdaFeaFcaFdaFbaymaEZaFaaEYaWzaSsaSsaSsaWAaWBaWCaTMaWDaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaWEaWFaWGayWaWHaGlaGzdcxaGBaGAaGDaGCaGEaGqaGGaGFaGIaYCaFXaPEaWVaRnaWWaWXaYdaYAaYBaWYaWYaWYaXaaXbaFYaXdaGcaGbaGaaFZaReaReaXiaPBaGdaPSaIoaIlaHFaHEaHBaHpaIRaIOaIOaIOaIOaXpaXqaXraXsaXtaXuaUtaXvaXwaXxaXyaXzaXAaXBaIWaXDaKUaXFaXtaXGaXHaXIaXJaXKaXLaXMaXNaXOaIOaXPaBoaRSatnaXQaTkaQoaXRaXSaQoaFjaToaTkaQoaQraXTaRWaRXaWcaRXaXUaRXaGJaUOaXWaJdaQAaURaSgaSgaSgaSgaUUaQEaJjaYDaGRaXZaYaaQOaQPaPgaPgaPgaPgaPgaPgaFVaEyaIbaTGaTHaSoaTGaTHaIbasHaEyaSnaSsaSsaSsaSsaYkaYlaYmaafaafaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaYnavtaYnaxTaYoaBgaYpaYqaYraYraYraYraYsaYtaTSaYuaYvaOlaCSaYyaYyaYyaYzaYyaOsaRnaTWaUKaWZaWZaPDaSGaFOaFPaFEaFDaFJaFFaFAaIgaFCaFBaFLaFKaFMaYSaYSaYSaYTaUnaHhaIOaYVaYWaYXaYYaYZaZaaPWaHkaHiaZeaZfaPWaPWaPWaPWaPWaPWaPWaPWaPWaHeaXwaZkaZlaPWaZaaYZaZmaGTaYWaZoaIOaIOaThaQoaZpaQoaQoaQoaFHaQoaQoaFUaQoaZraZraZraZraZsaZtaKAaRXaRXaRXaZvaZwaZxaJdaZyaZzaSgaZAaZAaZBaZzaZCaJjaFWaBDaZFaZGaPgaPgaPgaPgaZHaPgaPgaPgaFVawKaIbaPoaPraSoaPoaPraIbasHawKaYjaSsaSsaZJaSsaSsaZKaYmaafaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaZLaZMaWGayWaZNaBWaZPaZQaZRaZSaZTaYraZUaZVaTSaZWbaEaOlaCSaZYaZZbaaaCLaYybacbadbaeaPEbafbagbahaOnaPEaCRaBtbalbalbalbalaHubalbalbanbaobaobaobapbaobaqaUnbasbatbauawGawGawGbaAaFTbaAbayaFQbaybaAbaBbaBbaBbaBbaBbaBbaBbaBbaBaCVbaDbbubaDaPWaPWaPWawGawGawGaZoaIOaIOaUnbaFbaGaBlbaHaQobaIaQobaJbaKbaLaZrbaMaFRbaOaJdaJdaJdbaPbaQbaQbaQaJdaJdaJdbaRaSgaSgaLeaFNbaUbaVaGwaJjaBEaBDbaYaEsbaZbbabbbaWmbbcbbabbdaWmbbeaEybbfaQMaQNbbgaQMaQNaIbbbhaEyaDkbbjbbkaSsaSsbblbbmaYmaafaafaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaafaxRbbnaPybboaBgbbpbbpbbqaAMbbsbbqbbtbbpaTSaQpaOTaGHaByaBzaBzaBAaBBaBzbbBbadbbCaPEbafbagbbDaGPaPEaBxbfabalbbGbbHbbHazqbbIbalbbJbbKbbLbbMbarbarbaraUnaIOaIOaYVawGbbPbbQbbRbbSaBRaFraFlbbWbaAbaBbbXbbYbbZbcaaBhbccbcdbaBaCVbcebcfbcgbchbcibcjaAVbdsawGbcmbcnbcnaUnbcqbcqaBoaBobcoaThbcobcpaBoaBoaRRaBoaBoaBobcqbcrbcrbcrbcrbcrbcrbcsbcrbcqazGbctbctaCKaZFaZFaZFaZFbcqaBEaBDbaYaEsaEsaEsaEsaEsarZaEsaEsaEsaEsaEyaBCbcAawKavUawKbcybcAaEyaEybcBaSsbcCaSsaSsaWAbcDbcEaTMaWDaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaafaxRbbnaPybboaBgbbpbbpcoCaAMbbsbbqbbtbbpaTSaQpaOTaGHaByaBzaBzaBAaBBaBzbbBbadbbCaPEbafbagbbDaGPaPEaBxbfabalbbGbbHbbHazqbbIbalbbJbbKbbLbbMbarbarbaraUnaIOaIOaYVawGbbPbbQbbRbbSaBRaFraFlbbWbaAbaBbbXbbYbbZbcaaBhbccbcdbaBaCVbcebcfbcgbchbcibcjaAVbdsawGbcmbcnbcnaUnbcqbcqaBoaBobcoaThbcobcpaBoaBoaRRaBoaBoaBobcqbcrbcrbcrbcrbcrbcrbcsbcrbcqazGbctbctaCKaZFaZFaZFaZFbcqaBEaBDbaYaEsaEsaEsaEsaEsarZaEsaEsaEsaEsaEyaBCbcAawKavUawKbcybcAaEyaEybcBaSsbcCaSsaSsaWAbcDbcEaTMaWDaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazQasSbcFaAFaWGatHatHatHatHatHatHbcGbboaBgaTSaTSaTSaTSaTSaTSaTSaTSaTSbcHaReaOlaCSaZYbcIbcJbcKaYybcLbcMaDEaPEbafbagbcOaOpaPEaBxbfabalbbHbcQbcQbbHbcQbalbbJbcRbcSbcSbcTbcUbcVbarbcWaIOaYVaGpbcYbgCbdabdbbdbbdaaGibddbaAbaBbdebdfbdgbdhbdibdjbdkaGYaHabdnbdobclbdpbdqbdrbclaLgawGaZobdtaIOaNsbdubdvaZFaZFaZFaZFaZFaZFaZFbdwaZFaZFaZFaZFbdxaZFaZFaZFaZFaZFaZFaZFaZFbdyaZFaZFaZFaZFaZFaZFaZFaZFbdzaDPaDTaCYaDUaCYaDVaCYaDXaDWaDYaCYaDZaCYaEaaEbaCYaCYaCYaCYaCYaCYaEcaEdaEebdObcCaSsaSsaSsaVkbdPaVjaVkaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQaaaaafbdRazTaxVbdSaCTbdUbdUbdUbdUbdUbdUbdVbdWaPBaXiaReaOlaCSaYyaYybdXbdYaYyaPEaPEaCUaPEbafbeabcOaOoaPEbfbaFSbalbecbedbbHbcQbeebalbbJbefbcSbcSbcSbegbehbarbeiaIOaYVaGkbekbgCbembenbeobepaGibeqbaAbaBberbesbetbetbetbeubevbaBaCVbexbclbclbdpbeybdrbclaLfawGbeAaIOaIOaNsbdubdvaZFaZFaZFaZFaZFaZFaZFbeBaZFaZFaZFaZFaZFaZFbeCaCYaCYaCYaCYaCYaCYaCZaCYaCYaCYaCYaCYaCYaCYaDlaDDaDCaDtaZFaZFaZFaZFaZFaBDaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFbeIbdzbeJaSsaSsbcCaSsaSsbeKbeLaTMaTMaTNaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbdQaWEaWFbeMayWbeNbUVbePbePbeQbePbePbePbeRaPBaPBaPBaPBaOlaCSaZYbeSbeTbeUaYybeVbeWbUWaPEaPEaPEaPEbUmaPEbUybfabalbUqbbHbcQbUibUkbalbbJbarbfcbcSbcSbPhbfebarbULaIOaYVbTrbfhbgCbembfibfjbepaGibfkbaAbflbfmbfnbetbfobetbdfbfpbfqaCVbfrbfsbftbfubfubfvbclbfwawGcuRcuSaXNcvvcxRdPwdPxdTPdPxdPxdPxdPxdTQbTtdTSctbctbctaaZFaZFaZFaZFbfDaZFbfybfOaZFctcctectdbfIbWUbfIbfIbfKdTUdTVdTWaZFaZFaZFaZFaZFbfObfPbfDaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFbdzbfQbfRbfSbfTbfUbfVbbmbfWaafaaaaafaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -11006,14 +11012,14 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaeaaaaaaaaabowbowbowbowbowbowbowbusbutbusbuublpblpblpbrybrybrybryboAblpbuvbuwbalbuxbcSbndboCbuybuzbtcbOxbuBbqfbuCbuDbuEbpcbuFbtgbuGbuHbuIbuJbOmbMfboMbOpbOobNBbOnbuRbrSbuRbOvbOwbuTbuTbNqbuUbuVbuWbuXbuYbuZbMkawGbvcaIOaIOawGbLSbMnbMrbMBbMSbMTbMUbnebMLbMPbMQbMRbNabMZbNcbNbbApbHvbMYbMWbNlbNkbNGbNobNfbNebNibNhbMjbMlbMhbMibiSbvybvzbMgbvBbvBbkBbvCbvDbvEbkBbNVbkCbvGbvHbvIbvJbOebvLbvMbOfbvObvPbvQbsIbkJbvRbvSbvTbvUbvVbvVbvVbvVbvWbvXbpObMebvYbMebpObvZaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowbwabrvbwbbwcblpblpblpblpblpblpblpboAblpbuvbwdbalbwebegbndbncbqfbwgbqfbNFbcSbrFbRdbffaIObpcbuFbtgboMbwibwjbwkbwlbMdboMbwpbwnbHhbzzbNgbNjbNmbNnbwubGIbwwbNqbGCbwybwzbwAbwBbwBbnTbINbambdDaIRbgUbLQbLRbLNbLPbeZbixbLYbLZbLDbLXbLVbLWbFNbLDbLAbLzbDcbDcbDcbDcbDcbHfbIIbHfbAqbLJbLGbAqbAqbAqbAqbLybiSbiSbxbbxbbxbbxbbkBbkBbkBbkBbkBbMMbxebxfbxgbxhbxibMobMpbMpbMqbxmbojbxnbxobxpbvRbojbvTbxqbojbxrbojbxsbkIbupbuqburbxtbkIaaaaaaaafaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowbusbutbusbxubxvblpblpbxwbSRbSSbSRbSXbSRbSYbTabSTbSUbSVbzmbFnbSWbTcbTdbSVbxFbxGbRgbffaIObxHbxIbxJboMbxKbxLbxMbxNbSdbRzbXwbSfbRUbRJbSubSvbSsbStbSkbSrbSebShbybbycbycbydbyebyfbQEbtvcbPbDNbONbgUbixcbQcciccjcarcawcaWcbabPucbccbecbOcdabPucdkbWubRSceEceJceFbDccckccFccEbAqbSCbTsbRebRvbAybAqbwNbRybRBbRwbRxbRpbRpbRibRmbRpbRtbRrbRsbREbRDbRpbRCbQubSPbyPbyQbSLbySbySbySbySbySbyTbyUbyVbupburbkIbojbvVbyWbyXbyYbyZbzabzbaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowbzcbzdbzcbzebzfbzgbzgbzgbzgbzgbzhbPLblpbuvbzjbalbzkbOXbsZbwfbzoboEbRZbzqbzrbarbarbzsaIObztbzubtgboMbzvbzwbzxbwjbQTboMbRGbRAbRHbOpbQwbzEbQDbuTbQvbzIbzJbNqbzKbzLbzMbzNbyebyfbQEbtvbpcbDNbNwbOHbOLbOMbOJbOKbEpbXtbXrbXsbLDbLDbLDbXubWzbLDbWybWubXqbXpbXobOSbDcbNvbVRbVQbWtbRcbQUbQKbRjbQabYcbrBbYObZMbZNbZObvMbvMbArbvMbAsbvMbOfbQqbQqbQqbQsbQrbQtbAvbAwbAxbRTbAzbAAbABbACbySbADbAEbAFaafaafbkIbAGbvVbyXbyXbvWbAHbAIbAJaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowbzcbzdbzcbzebzfbzgbzgbzgbzgbzgbzhbPLblpbuvbzjbalbzkbOXbsZbwfbzoboEbRZbzqbzrbarbarbzsaIObztbzubtgboMbzvbzwdYBbwjbQTboMbRGbRAbRHbOpbQwbzEbQDbuTbQvbzIbzJbNqbzKbzLbzMbzNbyebyfbQEbtvbpcbDNbNwbOHbOLbOMbOJbOKbEpbXtbXrbXsbLDbLDbLDbXubWzbLDbWybWubXqbXpbXobOSbDcbNvbVRbVQbWtbRcbQUbQKbRjbQabYcbrBbYObZMbZNbZObvMbvMbArbvMbAsbvMbOfbQqbQqbQqbQsbQrbQtbAvbAwbAxbRTbAzbAAbABbACbySbADbAEbAFaafaafbkIbAGbvVbyXbyXbvWbAHbAIbAJaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowbAKbALbAMbalbalbANbrvbrvbrvbAObalbalbAPbAQbARbalbASbASbASbRKbASbAUbRLbAWbAXbAYbAUbffaIObAZbBaaUnboMawGawGawGawGbQlboMbOpbQObOpbQmbQnbQobQnbuTbuTbuTbuTbNqawGawGawGawGawGbtvbPobtvbpcbVabuDbVbbUSbQkbUUbUZbUdbUfbUgbrAbTFbTGbUbbUcbVKbVJbVMbVLbVxbVwbVIbVCbQcbVpbVvbVtbVmbPTbQbbQabOQbPEbAqbSKbSJbzCbzCbzCbzCbzCbQjbzCbzCbELbQhbQiblTblTbBUbKjbOqbBWbAwbBXbQZbBZbCabCbbCcbySbADbAEbCdaaaaaabkIbCebCfbkIbvWbkIbkIbvWbkIaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabCgaafaaaaaaaaaaaabASbChbNpbQRbCkbAUbQQbCmbCnbCobAUbffaIObQMbQLbQNbQLbPzbPebPIbPFbPNbPJbQfbQPaXNbCzbCAbCBbCCbCDbCEaIOaMibDbaMjaNsbCubCGbCHaCzbPdaIObpcbDNbSHbymbymbSBbSBbSBbymbymbSmbSxbRXbSibScbSgbRYbRXbRWbRVbRSbRRbRQbRPbDcbRObRNbRMbRIbOtbOrbAybAgbNrbAqbRkbCTbzCbPbbPcbFUbOWbOZbPabOObELbOPbOTbIZblTblTbQdbOqbBWbDubDvbPXbDxbDybDzbDAbySbADbDBbyVbyVbyVbyVbyVbkIbkIaaaaaaaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGvaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabASbDCbDDbDmbDFbDGbDnbDIbDlbDKbAUbffbDLbDiaIOaIOaIObDbaNsbCubCGbDNaIOaIObDdaIOaIObDPbDQbDRaIOaIOaIOaIObDbaIOaNsbCubCGbDSaXNbDYaXNbFrbENbDZbymbEbbBxbBxbBxbEebEdbEgbEfbEibEhbzGbEjbCUbCYbCZbDabDcbDebDfbDgbDcbDhbDkbDwbDEbAgbCQbCRbAgbAgbAqbksbCTbzCbEqbEobEybEtbEsbErbEMbELbEBbEzbEmbEmblTbDqbEnbECbEDbEEbEFbDzbDtbEHbEIbySbADbAEbyVbEJbEKbFsbyVaafaafaafaafaafaafaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbEPbEQbEQbFgbtybtybjBbjBbjBbjBbEOaafaafaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowaaaaaaaaaaaaaaaaaaaaaaaabERbESbBTbESbEUaaaaaaaaabASbASbEVbEWbDmbEWbEXbEYbEZbFdbFbbAUbFcbffbEwbFebuDbFfbFybFAbFhbFibuEaIObFjbEuaZjbEvbFaaIObDSaXNaXNaXNaXNbDWbjvbFobFpbFqbFrbFCbFJbFHbuDbuEaIObymbFmbBxbFlbETbBxbEdbFubFtbFzbFxbFwbFvbFEbFFbFBbFDbFKbFQbFGbDcbDcbHfbHfbHfbAqbEGbExbEAbElbEkbAqbksbCTbzCbFRbFPbFUbFTbFWbFVbFXbELbFYbEzbEmbEmblTbFIbFZbFLbFMbyHbFObGabFSbGebGfbySbGbbxZbxZbxZbxZbVNbAFaaaaaaaaaaaaaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafbGjbmNbGhbmNbtybjBbjBbjSbmLbjSbjBbjBaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabGpbGqbGrbGqbGpbGsbGtbGubASbGvbEWbGwbBbbGybGzbGAbGAbBcbuSbAUbGDbGDbBibGDaUnaUnaUnaUnaUnaUnaUnbGFbGFbGFbGFaUnbBgbBfbBeaUnbGHbGHbGHbBhbAfaUnaUnaUnaUnbAVbAubGKaIUaKtbzYbymbzXbBxbBxbBxbAebAcbApbAobzGbzZbAbbAabvxbzGbzObzPbyzbyAbyCbvwbzTbzUbEcbAgbAgbAgbAtbAybATbAgbAqbksbhQbhQbhQbhQbhQbhQbhQbhQbhQbhQbBRbBQbBqbBqblTbBnbBdbHqbjfbjfbjfbjfbBObBPbBNbjfbjfbjfbjfbjfbAEbADbHxaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagbxXbmNbmNbtnbjBbjBbjSbjSbBSbjSbjSbjBbjBaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBTbHBbHCbHBbBTbHDbHEbHFbASbHGbHHbEWbHIbHJbAUbHKbHLbBrbHNbAUbHObHObBBbGDaaaaaaaaaaaabGFbBvbHRbvAbHTbHUbHVbCtbBVbHXbBYbCtbHZbCjbCpbClbBGbBDbBKbBJbBMbCvbCwbzlbBobGKbGKbymbBmbBlbBlbBkbymbBCbBybBwbBubBtbBsbBpbCsbCybCqbCrbBHbBIbBEbBFbCNbCObFkbCIbBLbCFbBjbAgbAgbCJbAqbksbhQbCxbCxbCxbCPbCMbCxbCxbCxbhQbCLbCKbDpbDpblTbwxbCVbBWbCXbDjbDMbDObDTbDUbDrbDsbDHbDJbDXbjfbyVbDVbyVbngbngbngbngbngaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabxYbjBbxXbjBbjBbjSbjSbjSbjSbjSbjSbjSbjBbjBaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabGpbHBbHBbHBbJdbJebEWbEWbJfbJgbEWbEWbJhbJibAUbAUbAUbJRbAUbAUbJvbJlbJDbJnaaabJCbJpbJBbJrbJsbHVbJtbJubJPbJKbJbbJybJxbJwbJbbCSbJobJEbJFbJGbJHbJIbGHbGHbJJbJcbDobJQbJNbJUbJSbJZbJWbJWbJWbIDbICbJabIFbzGbJjbJMbJLbIxbzGbIybIzbEcbIAbIBbIBbIubIvbEcbAqbIwbAqbAqbAqbAqbAqbAqbksbhQbKFbKvbCxbCxbCxbCxbCxbKubhQbKtbEzbKpbKpblTbKjbKsbKrbKqbKgbKgbKgbKgbKhbIYbIYbKibKobJYbjfbKfbKdbJTbJObJXbJVbJAbJzaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbtybjBbptbpubpubjSbjSbjSbjSbjSbjSbjSbjSbjBbjBaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabGpbHBbHBbHBbJdbJebEWbEWbJfbJgbEWbEWbJhbJibAUbAUbAUbJRbAUbAUbJvbJlbJDbJnaaabJCbJpbJBbJrbJsbHVbJtbJubJPbJKbJbbJybJxbJwbJbbCSbJobJEbJFbJGbJHbJIbGHbGHbJJbJcbDobJQbJNbJUbJSbJZbJWbJWbJWbIDbICbJabIFbzGbJjbJMbJLbIxbzGbIybIzbEcbIAdXpbIBbIubIvbEcbAqbIwbAqbAqbAqbAqbAqbAqbksbhQbKFbKvbCxbCxbCxbCxbCxbKubhQbKtbEzbKpbKpblTbKjbKsbKrbKqbKgbKgbKgbKgbKhbIYbIYbKibKobJYbjfbKfbKdbJTbJObJXbJVbJAbJzaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbtybjBbptbpubpubjSbjSbjSbjSbjSbjSbjSbjSbjBbjBaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBTbHCbHCbHCbBTbKKbKLbKMbKNbKObEWbKPbLsbltbLibKVbKVbKZbKWbKVbKDbjwbKQbKYaaabGLbLabLbbLcbLdbHVbLebLfbLgbLhbCtbKHbKGbKRbCtbLlbLmbLnbLobLpbLqbLrbKUboNbKSbKIbGKbPybPybKnbymbFmbBxbFlbETbBxbHcbKcbFtbKmbKlbKkbKebKBbKCbGXbGYbLxbIAbIBbIBbIubKxbEcbKwbKzbKAbmobKybKbbKabkybksbhQbCxbLEbCxbCxbCxbCxbCxbCxbhQbLCbEzbHPbHPblTbLObojbBWbMabIYbIYbLFbLHbLIbLKbIYbLLbLMbLBbLwbLvbLubLtbLjbKXbKTbJAbKJaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabjBbjBbkQbjSbjSbjSbjSbjSbjSbjSbjSbjSbjSbjSbjBbjBaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaabGpbMwbMxbMybGpbMzbGtbGubASbASbMAbMAbMAbASbASbGDbJkbJkbGibJkbJkbJkblPbKYaaabGLbMDbMEbMFbMGbMHbMIbMJbMGbMGbMKbGBbGlbGkbGHbGHbGHbGHbGHbGHbMObGHbGHbyKbGGbGmbGKbPycpqasZbymbEbbBxbBxbBxbHdbHcbApbFtbHabGZbHbbBtbGVbGWbGXbGYbGRbGSbGTbGUbGNbGObEcbGPbGcbGdbmobGgbHgbHebkybksbhQbhQbIpbCxbCxbCxbCxbhQbhQbhQbIobHYbHPbHPblTbHQbojbBWbCXbHAbHybHzbHtbHubHrbHsbHnbHpbGEbGxbGMbGJbGQbngbHlbHkbGobGnaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbjBbjSbjSbjSbjSbjSbjSbjXbjSbHmbjSbjSbjSbjSbjSbjBbjBaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNObESbNPbESbNQaaaaafaaaaaabASbNRbNSbNTbASaaabGDccpcbybzibJkbJkbJkblPbKYaaabGLbNWbNXbNYbNZbHVbOabObbOcbOdbGFbIabIqbIcbIbbIdbIdbIdbIdbIdbIdbItbIdbIebIebIEbGKbGKbGKbGKbymbymbHwbHMbHwbymbymbHvbHobHjbHibzGbBubCUbInbIlbImbEcbIkbEcbEcbEcbEcbEcbIjbIfbBAbmobHSbIsbCibkybksbhQbIMbIVbIUbIRbIQbITbISbIMblUbIPbIObIZblTblTbJmbojbOVbngbngbjfbjfbjfbjfbIWbjfbIXbIYbIHbjfbIhbCWbyVbngbIKbIJbIGbngaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabjBbulbulbulbulbulbulbILbjSbuPbulbHmbjSbjSbjSbjSbjBaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -11028,7 +11034,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaafaafaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbSFbSGcnjcngcnhcnQbSFcrKcrFcrwcrvcrEcrCcrrcrrcrucnEcnEcnDcnFbAkbYpbjqbjxcnCbwMcnzctfcnBcnwcnxcnybfNbtVcnpcnqdTTbfNbkjbqZdZLdZOdZOdZMdZNbqZdYtdZPdZQbiDdZTdZRdZSdZHbiDdZGbtBcrVbwUbxPbtKbxQbiKdZKdZJbiKcrXbPwbiddZUbssdZVdZWbidbfMdWwdXGbGKaaaaafaaaaaaaafaaaaaaaaaaaaccBcrZcslcskccBaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYUbYUcoebYWbYUaaaaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafcrLbEQbEQbFgbtybtybjBbjBbjBbjBbEOaafaafaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaafaafaafbTebTebTebTebTebTebTebTebTebTebTebTebTeaaaaaacmobSGbSGbSGbSGcmAbSFcqicqgcqfcqecqdcpVcqccpVcpUcpTcpScpQcpOcpLcqjcqwcmCcqMbgXbgXbgXbgXbgXbgXbgXbfNbfNcmBbfNbfNbfNbkjbqZbqZdZrdZsdZtdZubqZcqxcqDcqTbiDbkdbiDbiDbiDbiDbwUdZydZzbwUcqXcqWcqXbiKbXLdZBbiKbPybPybiddZDbssbidbidbidbfMcpWcmNbGKaaaaafaaaaaaaafaaaaaeaaaaaacrfcbWcrpcoBcrfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYUcqQcmGbZVbYUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaaaaaabTecnScqacnSbTecnOcpYcnObTecnMcpZcnMbTeaaaaaacphbSGcpXbSGbSGcpRbSFcFVcFUcQKcFXcRqcRpcFMcFKcFRbqVbqVcFTbqVbqKcFIcFJbjxcpCcpDcpucpucpEcpucpucoMcpvcpwcpxcpyeaqcoMbkjbEaeaxbMXbMXeaveaweaDeaEdLbdPueazeaAeayeaeeaeeaudXBbwUbwUbwUdhOcZLdyNbiKbiKbiKbiKbPybPybidbssbsseareasbidbfMbGKbGKbGKaaaaafaaaaaaaafaaaaaaaaaaaacWzcWQcRYcRScWzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYUcaycqbcaAbYUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaaaaaabTecnScnRcnSbTecnOcnPcnObTecnMcnNcnMbTeaaaaaacphbSGbSGbSGcpicoIcoHcsOcsNcvgcuVcsWcsPcsMcsEcsmcoycoEcoDcoCbAkbYpcpdcpbcpccpgcpfcpecpfcoOcoWcoMcoNcoZcpacoXdZZcoMbkjbEaeabbMXbOsbMXeaaeageahcCNeajeaceadeaeeafeaeeandXBciZboNcDacEycExcFHcFGboNboNboNboNcEzbidbidbidbidbidbidbfMbGKaafaafaafcbfaafaafaafaafaafaafaafccQbudcCKcylccQaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYUcbjcpjcblbYUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaaaaaabTecnScnRcnSbTecnOcnPcnObTecnMcnNcnMbTeaaaaaacphbSGbSGbSGcpicoIcoHcsOcsNcvgcuVcsWcsPcsMcsEcsmcoycoEcoDdYCbAkbYpcpdcpbcpccpgcpfcpecpfcoOcoWcoMcoNcoZcpacoXdZZcoMbkjbEaeabbMXbOsbMXeaaeageahcCNeajeaceadeaeeafeaeeandXBciZboNcDacEycExcFHcFGboNboNboNboNcEzbidbidbidbidbidbidbfMbGKaafaafaafcbfaafaafaafaafaafaafaafccQbudcCKcylccQaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYUcbjcpjcblbYUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaaaaaabTecrgcnicrebTecrccnfcrbbTecracnccqZbTeaaaaafcphcrdbSGbSGcqqbWbbSFdPYdPVcvgcvgdPTcvgcvgcvgcvgcrzbYpcrxcrybAkbYpdRPcrlbyOcrhcricrkcricrocrqcrscrtcrmcrncoMcoMcoMbkjbEaeboebrebsebpebqebiebjdQhebhebmebnebkeblebcebbebadQabJNebfdQedQddPZbCTbyDbXPbXQbGKbvKboNboNboNboNboNboNciNbGKaaaaaaaaaaafaaaaaaaafaaaaaaaaaaaabuddQidQSdQRbudaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaacbZccacrNcccccdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaafaafbTecqocdMcqpbTecdWcdMcdXbTecdLcdMcdNbTeaaaaafcqrbSGbSGbSIcqqcqybSFdPAdPvcqvcqucqtcqscqAcqAcqAcqBcqAcmpcqzbAkbAkbjqcqIcqJcpDcqCcqCcqHcqPdaWcoMcqOcYGcqNcqKcqLcoMbkjbEaeaLeaMeaNeaOeaPbEaeaFdPDeaHdXBeaIeaJeaKeaSeaRdXBbfMbPydXFeaUeaTeaQdXFaaaaaaaaabGKbGKbGKbXObXPbXPbXQbGKbGKbGKaaaaaaaaabudbudbudbudbudbudbudbudbuddPHdPSdPPbudaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaafccScqYccSaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaachdaafaafaafaaaaafcsLaafcsLaafcdmaafcdlaafcdmaafcdlaafaafaaabSFcsKbUXcsIdbicszbQGcsBcsAbQGcsCcsDcmJcmJdTDcmJchBcsGcsFchBcsHcstcsucsvcswcaOcaOcaOcaOcsxcsycaOcjXcjXcjXcjXcjXcjXbkjbEaebRebPebQebNebObEaeaFdTLebMdXBebKebIebJebHebGdXBbfMbPydXFebFebEcnsdXFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaabudcnbcmXcmYdTJdTKcdydTHcfcdTIdTFdTEdTGcrHaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaafcebceccebaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From 9096e61ad1754f02464de07f672317a2c7d55c0f Mon Sep 17 00:00:00 2001 From: DJSnapshot Date: Mon, 23 Jun 2014 00:19:50 -0700 Subject: [PATCH 020/304] DME fix --- baystation12.dme | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/baystation12.dme b/baystation12.dme index ddbd5a3e5b..2068f9ff37 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -1384,5 +1384,5 @@ #include "code\ZAS\Zone.dm" #include "interface\interface.dm" #include "interface\skin.dmf" -#include "maps\test2.dmm" +#include "maps\tgstation2.dmm" // END_INCLUDE From d8ef1647a733f2e1fed1deaef6741e81a08cb1a3 Mon Sep 17 00:00:00 2001 From: DJSnapshot Date: Mon, 23 Jun 2014 01:54:03 -0700 Subject: [PATCH 021/304] Forgot to commit welcome.dm --- .../computer3/computers/welcome.dm | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 code/WorkInProgress/computer3/computers/welcome.dm diff --git a/code/WorkInProgress/computer3/computers/welcome.dm b/code/WorkInProgress/computer3/computers/welcome.dm new file mode 100644 index 0000000000..11695ce532 --- /dev/null +++ b/code/WorkInProgress/computer3/computers/welcome.dm @@ -0,0 +1,34 @@ +/obj/machinery/computer3/laptop/vended + default_prog = /datum/file/program/welcome + + +/datum/file/program/welcome + name = "Welcome Screen" + desc = "First time boot splash screen" + active_state = "osod" + image = 'icons/ntos/program.png' + + + interact() + usr.set_machine(src) + if(!interactable()) + return + var/dat = "" + dat += "
Welcome to NTOS
" + dat += "
Thank you for choosing NTOS, your gateway to the future of mobile computing technology, sponsored by Nanotrasen (R)

" + dat += "Getting started with NTOS:
" + dat += "To leave a current program, click the X button in the top right corner of the window. This will return you to the NTOS desktop. \ + From the desktop, you can open the hard drive, usually located in the top left corner to access all the programs installed on your computer. \ + When you rented your laptop, you were supplied with programs that your Nanotrasen Issued ID has given you access to use. \ + In the event of a serious error, the right click menu will give you the ability to reset your computer. To open and close your laptop, alt-click your device.\ + If you have any questions or technical issues, please contact your local computer technical experts at your local Central Command." + popup.set_content(dat) + popup.set_title_image(usr.browse_rsc_icon(computer.icon, computer.icon_state)) + popup.open() + return + + Topic(href, href_list) + if(!interactable() || ..(href,href_list)) + return + interact() + return \ No newline at end of file From db6a403c2f69130e328cadc32b631f74f6fae053 Mon Sep 17 00:00:00 2001 From: DJSnapshot Date: Mon, 23 Jun 2014 02:09:17 -0700 Subject: [PATCH 022/304] uses get_turf instead of get_turf_loc now --- code/WorkInProgress/computer3/computers/prisoner.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/WorkInProgress/computer3/computers/prisoner.dm b/code/WorkInProgress/computer3/computers/prisoner.dm index 51beec5c03..3ec29a5480 100644 --- a/code/WorkInProgress/computer3/computers/prisoner.dm +++ b/code/WorkInProgress/computer3/computers/prisoner.dm @@ -44,7 +44,7 @@ var/loc_display = "Unknown" var/mob/living/carbon/M = T.imp_in if(M.z == 1 && !istype(M.loc, /turf/space)) - var/turf/mob_loc = get_turf_loc(M) + var/turf/mob_loc = get_turf(M) loc_display = mob_loc.loc if(T.malfunction) loc_display = pick(teleportlocs) From 6b3c130702ccbe5abe1a5339d6d363cb9560f1ba Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 23 Jun 2014 10:55:03 -0400 Subject: [PATCH 023/304] Removes dynamic proc call --- code/game/objects/items/devices/suit_cooling.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/game/objects/items/devices/suit_cooling.dm b/code/game/objects/items/devices/suit_cooling.dm index f26cc037fc..f7f893ebbe 100644 --- a/code/game/objects/items/devices/suit_cooling.dm +++ b/code/game/objects/items/devices/suit_cooling.dm @@ -90,7 +90,8 @@ /obj/item/device/suit_cooling_unit/proc/turn_off() if (ismob(src.loc)) - src.loc:show_message("\The [src] clicks and whines as it powers down.", 2) //let them know in case it's run out of power. + var/mob/M = src.loc + M.show_message("\The [src] clicks and whines as it powers down.", 2) //let them know in case it's run out of power. on = 0 updateicon() From 22b39e8c1118e720fe6d8d3967d70fdf65cbdcfa Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Mon, 23 Jun 2014 19:36:11 +0200 Subject: [PATCH 024/304] Adds pipe between Teleporter and starboard bridge maintenance. Adds pipe between the library and crematory. Adds pipe between port bridge maintenance and staff meeting room. Replaces pipe turn in EVA maintenance with manifold. Third or forth time's the charm. These fixes will stick one day I'm sure. --- maps/tgstation2.dmm | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/maps/tgstation2.dmm b/maps/tgstation2.dmm index 9137ca4027..abc12fe5c6 100644 --- a/maps/tgstation2.dmm +++ b/maps/tgstation2.dmm @@ -2893,7 +2893,7 @@ "bdG" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/crew_quarters/fitness) "bdH" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_x = -2; pixel_y = -28},/turf/simulated/floor{dir = 10; icon_state = "neutral"},/area/crew_quarters/fitness) "bdI" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/crew_quarters/fitness) -"bdJ" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plating,/area/maintenance/fpmaint) +"bdJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/wall,/area/library) "bdK" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/crew_quarters/fitness) "bdL" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/crew_quarters/fitness) "bdM" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "solar_chapel_inner"; locked = 1; name = "Engineering External Access"; req_access = null; req_access_txt = "13"},/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) @@ -5056,7 +5056,7 @@ "bTl" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall/r_wall,/area/turret_protected/ai) "bTm" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/structure/lattice,/turf/space,/area) "bTn" = (/obj/structure/table/reinforced,/obj/item/stack/sheet/mineral/phoron,/obj/item/stack/sheet/mineral/phoron,/obj/item/stack/sheet/mineral/phoron,/obj/item/stack/sheet/mineral/phoron,/obj/item/stack/sheet/mineral/phoron,/obj/item/stack/sheet/mineral/phoron,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) -"bTo" = (/obj/machinery/door/airlock/maintenance{name = "Teleporter Maintenance"; req_access_txt = "17"},/obj/structure/sign/securearea{pixel_x = -32; pixel_y = 0},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/teleporter) +"bTo" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/plating,/area/maintenance/fpmaint) "bTp" = (/obj/machinery/requests_console{announcementConsole = 1; department = "Bridge"; departmentType = 5; name = "Bridge RC"; pixel_y = -30},/turf/simulated/floor/wood,/area/bridge/meeting_room) "bTq" = (/turf/simulated/wall/r_wall,/area/hallway/primary/starboard) "bTr" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "heads_meeting"; name = "Meeting Room Window Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/bridge/meeting_room) @@ -8868,6 +8868,8 @@ "doB" = (/obj/machinery/light{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/obj/structure/table/reinforced,/obj/item/weapon/wrench,/obj/item/weapon/screwdriver,/obj/item/weapon/crowbar,/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 9},/area/mine/explored) "doC" = (/obj/machinery/mining/drill,/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/explored) "doD" = (/obj/machinery/light{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 5},/area/mine/explored) +"doE" = (/obj/machinery/door/airlock/maintenance{name = "Teleporter Maintenance"; req_access_txt = "17"},/obj/structure/sign/securearea{pixel_x = -32; pixel_y = 0},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/teleporter) +"doF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall/r_wall,/area/bridge/meeting_room) "dqT" = (/turf/simulated/mineral,/area/mine/unexplored) "dqU" = (/turf/space,/area/syndicate_station/mining) "dqV" = (/obj/structure/transit_tube{icon_state = "D-SE"},/obj/structure/lattice,/turf/space,/area) @@ -10707,7 +10709,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatHasTatIasTatHasVatJasVatHatKatLatMaPLatOatOatPatKatKaafaaaalPaafaoTaoUaoUaoUaoUaoVaoWaoXaoYaoYaoYaoYaoZaafalPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafapxbeuatRatSapbapxarEarAatXatWasqarEarbauaaubaucaucaudaueaOzapAapEapFalNaNDaNFaHyaPqaHqaHrauhauiaGVaPHaPCaOEaOEaOFaOGaOParTaSOauqaJsavYavYaKkaSFaMmaTsaODasRasRasRasRasRaOSasPasPasPaaaalQaaaapvapvapvapvapvaafaoPaafapvapvapvapvapvaaaampaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatHauzauAauBatHauCauDauEatHaqYaqYauFauGauHauIauJaKFatKaaaaaaampaaaapwapwapwapwapwaafaoWaafapwapwapwapwapwaaaalPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaagapxauLapaapxaHDapxarEarAaMQarCasqarBarbaHAauSauTauTaLxaHCaKLaHsaHtaJbaHvaHwaHxaHyaHzaHqaHravdauiaGVaGVaGVaGWaGWaGXaGVaGVarTaJvaJqaJsavYavYaKkaKoaJCaKiaGZasRasRasRasRasRaGUaGSavqavraaaalQaaaaafaaaaafaafaaaaaaaoPaaaaaaaafaaaaaaaafaaaalPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatHavsavtavuatHavsavtavuatHaUlaTiaTaaTaaTaaTaaWtaVtarwaaaaaaalPaaaaafaaaaafaafaaaaaaavAaaaaaaaafaaaaaaaafaaaalPaafaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaagapxapxapxapxaHDapxarbarbarbarbarbaYnaHIaHHaHGaHGaHGaHGaHKaHJaNqapEaJmalNaIjaIkaIhaIiaHYaIfaHNaHVaNQaLlavPavRavRaTIavRaKSavVavWavhaKPaviaviaKPaLcaKXaLaawbasRasRasRasRasRawbawcawdaweaaaalQalQalPaaaaaaaafaaaaaaaoPaaaaafaafaafaafalPalPalPaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaasSatHawfawgasSatHawfawgasSatKaZOatKatKatKatKatKaZeaspaaaaaaalPalPalPaaaaaaaafaaaawjawkawjaafaafaafaafalPalPalPaafapxapxapxapxawlawmawmawmawmawmawmawmawnapxapxawoawpawqapxawrawsaNJbdJbdwaJfaJfaJfaJfaJfbcGaJfaJpaLDaJfaJfaJeaJeaJlaIYaJaaJnahmaIxaIAaIDaITaIvaHravdaIwawLawLbcxawMawNaVcawLauiawPawQaLQayMayMayMayMaMdaMmaMqawUasRasRasRasRasRawUawVawdaweaaaaaaaaaaafaafaaaaafaaaaaaawWaaaaaaaafaaaaaaaafaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaasSatHawfawgasSatHawfawgasSatKaZOatKatKatKatKatKaZeaspaaaaaaalPalPalPaaaaaaaafaaaawjawkawjaafaafaafaafalPalPalPaafapxapxapxapxawlawmawmawmawmawmawmawmawnapxapxawoawpawqapxawrawsaNJbTobdwaJfaJfaJfaJfaJfbcGaJfaJpaLDaJfaJfaJeaJeaJlaIYaJaaJnahmaIxaIAaIDaITaIvaHravdaIwawLawLbcxawMawNaVcawLauiawPawQaLQayMayMayMayMaMdaMmaMqawUasRasRasRasRasRawUawVawdaweaaaaaaaaaaafaafaaaaafaaaaaaawWaaaaaaaafaaaaaaaafaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawXawYawYawYawZaxaawYawYaxbaxcbdSaxbaxbaxbbdUatKbdVaspaaaaafaafaaaaaaaaaaaaaafaaaaxgbdWaKgaafaaaaafaaaaaaaaaaaaaaaapxapaapaaxjapaapaapaapaapaapaapaapaaxkaxlaxmaxnaxnaxnaxnaxnaxnaxoaJBaMMaxraxraxraxraxsaJAaxraMIaxraxsaxraxraxraxraxwaxxaxyaKdaKaaHxaJRaJRaJRaHrauhaJQawLawOawMaxCawMaVeaxEaWraxGaxHaMuaMmaMmaMmaMBaMEaMGaMHaJwasRasRasRasRasRaJxaJyaxNaxOaaaaaaaaaaaaaafaaaaafaaaaxPaxQaxPaaaaafaaaaaaaafaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxRaxSaxTaxUaxVaxTaxTaxWaxUaxTaxXaxYaxZaxZbjWatKbdVatLaafaafaaaaaaaaaaaaaaaaafaybaycaydbdBayfaaaaafaaaaaaaaaaaaaaaapxapaapxaygayhayiayiayiayiayiayiayiayjaygaykaylaylaylaylaylaylaylaQnaynaxrayoaypayqayrbdCbbraPaaPdaywayxaypayyaxrayzapEayAalNaQvaNFaNIbdEaHqaHravdbdFayDaxFaxFayEayFayGbeDayIavVbdHbdcbbUbbUbbUbaNbaTaPnbavbdGasRasRasRasRasRbdIasPasPasPaaaaaaaaaaafaafaafaafaaaaySbjYaySaaaaafaaaaaaaafaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafatHayUayVayUayWaxTaxTayXayUayVayUayYaxSaxVbjZatHbdVatKatKazaatOatOatOatOatPatKazbazcazdazeazbapxapxawoawpawqapxapxapxapaaryaygaaaaafaaaaafaaaaafaaaaafaaaaygaykaylazfazgazhaziazjaylaQnapaaxrazkazkazlazmaznazoaPpaBdazrazsaztaztaxrayzapEazualNaQvaNFaHybdEaHqaHrauhazvbbOazxazyazzazAazBazBazCazBasPbeXbfGbeFbeGbeHbeObeEasPbdLasRasRasRasRasRbdKasPaafaaaaaaaaaaaaaafaafaaaaafazLazMbdMazOazPaafaaaaaaaafaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -10717,7 +10719,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBHaBMaBIaDbaDcaDcaDdaDeaDfaDgaDhaDcaDcaDiaDjayUayWaZuaAKaRqaDmaDnaDoaDnaDpaDqbfCaDsaqYaZnaDuaDvaAcaDwaDxaDyaDzaDzaDzaDAaDzaDzaDBaCaaARaaaaAkaRAaRTaRVaCmaSaaAkaaaaygaykaylaRuaDHaDIaDJaRyaylaQnaDLaxraxraxraxraDMaAraypaDNaBdaDOaTuaypaDQaVHaVzaVAaVpaVwaKJaVGaShaShaShaSEaScaVdbfFaTnbabaSPaSPaSPaUgaSPaTFaTTaTUaTVaUkaUGaVQaULaBqaBqaBqaBqaBqaBqaBqaBqaBqaCOaCPaBqaBqaBqaCOaEjaEkaBqaBqaAAaAAaElaEmaAAaEnaVqaVoaVoaVsaEsaEsaEsaEsaEsaWyaVraEuaEuaEuaEuaUNaEuaEyaEyaVnaEyaEyaEyaEyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDiaEBaECaEDaDcaEEaDcaEEaDcaEEaDcaEEaDcaEFaEGazSayWaEHaAKaVuaEJaEKaELaEMaENaAKbirbjoaAcaEQaAcaERaqYaAPaESaDBaDzaDzaDzaDzaDzaDzaETaWjaWgaVJaVIaWMaWNaWKaWLaWJaAkaafaygaWIaWpaWuaWxaWqaWsaWkaWpaZdaZcaxraFmaypazlaFnaBdazoaFoaAraCwaVvaypaFqaVHaWTaFsaFtaXcbdZagjagjagjagjaVEaVFaWSaVxaVybazaVxaXfaVxaXeaVxaXgaXhaFGaFHaFIaBoaXjaXmaXXaXVaXVaXCaYcaXYaXYaXYaXYaXYbaCaXYaXYaYwaYgaYeaXnaYHaYGaYxaWOaWPaWQaWQaWQaWRaEsaEsaGeaEsaGfaGgaGhaEsaEuaWUaEuaGjaXlaXkaGmaGnaGoaIbasHaGraGsaGtaGuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGvaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaXoaDcaDcaBJaDcaEEaDcaEEaGxaEEaDcaEEaDcaEFaEGazSayWaGyaAKaYQaYRaYKaYPaYKaQlaQlaYJaYNaYOaYLaYMaYLaYLbakbajaGKaGLaGLaGLaGMaGLaGLaGNaGOaARaaaaZXaAkayJbjVayJaAkaAkaaaaygavOaylbaiaZIaZiaZqaZDaZEaZhbglaxraHbaypaCxaCuaAraypaAsaAraCwaZgaypaHdawGaYhaHfaHgaUnaYfalNalNalNalNalNaHjaYbazBaHlaAxazBaHmazBaHnazBaHobcvbcwbcNbczbdNbcXaYUbdlbdmbbvbdAbbwbbvbbvbbxbbzbbybbAbbybbFbbybbybbibcubcbbawbawbbEbaSbawbaxbawbaWaYIaHOaHPaHQaHRaHSaHTaEsaHUbaXaEuaHWaHXaYiaHZaGnaIaaIbasHaIcaEyaEyaEyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDiaIdaECaEDaDcaEEaDcaEEaDcaEEaDcaEEaDcaEFaEGazSaIeawzawyawxawuawuawuawzawCawDawzawAaImaInawBauKauKaAPaGOaIpaCaaIqaGOaGOaIraIsaItaIuaARaaaawaaaaavMavNavMaaaaafaaaaygavOaylaIyaIzavZaIBaICaylavLawhaxraIEaypazlaIFaIGazoaIHaIIaIJaIKaILaIMawGaBsaIOaIPavKaBKaISaaaaaaaUnaIUaIVaBLazBaIXaAxaAxaAxaCEaAxaAxaAxauOaBoaKyaBoaBoavJaBoaJcaBoaJdavHavGaJgaJhaJiaJjaJkavFaJjavEaJjaJjaJjaJjavDaJjaJjavCaJjaJjaJjaJjasIayRayvaAzaAiaBraBpazHaEsazIavpavlavmavnazFayNayPazDazEasHaIbaJDaJEaJFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDiaIdaECaEDaDcaEEaDcaEEaDcaEEaDcaEEaDcaEFaEGazSaIeawzawyawxawuawuawuawzawCawDawzawAaImaInawBauKauKaAPaGOaIpaCaaIqaGOaGOaIraIsaItaIuaARaaaawaaaaavMavNavMaaaaafaaaaygavOaylaIyaIzavZaIBaICaylavLawhaxraIEaypazlaIFaIGazoaIHaIIaIJaIKaILaIMawGaBsaIOaIPavKaBKaISaaaaaaaUnaIUaIVaBLazBaIXaAxaAxaAxaCEaAxaAxaAxauOaBoaKyaBoaBoavJaBoaJcaBoaJdavHavGaJgaJhaJiaJjaJkavFaJjavEaJjaJjaJjaJjavDaJjaJjavCaJjaJjaJjaJjasIayRayvaAzaAiaBraBpazHbdJazIavpavlavmavnazFayNayPazDazEasHaIbaJDaJEaJFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJHaJIaBIaDbaDcaDcaDcaJJaDcaDcaJKaDcaDcaDiaJLaJMayWaxTaJNaJOaJOaJOaJOaJOaJOaJOaJPasDatKatKavkatKatKaAPaJSaJTaJUaJVaJVaJVaJVaJWaJXaJYaARaJZavaaKbaKcavbaKeaKbaKbaKfaygavcaylaylaylavzayJayLawGaUnavyaxraxraxraxraKlaKmaCxaCxaKnayHawGawGaxraxraIOaIOaIOaIOaKpaKqaKraKsaUnaKtaIVaKuazBazBazBazBazBazBazBazBazBauOaKwaKvaKxaIZauMavIaKBaKCaJdauyauWauXaKGaKHaJjaKIauVaKKawtaKKaKMaKNaKOauQaKQaKRauxaKTauUaKVaJjauwauvaKYaJraKZavxaJuaysaEsaLbauuaLdavfauoaveaunaEuaEyaLhasHaIbaLiaLjaLkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJHaBIaBJaBIaBIaDRaDSaBIaBIaBJaJIaLmasSaLnaxTawXaLoaLoaLpaLoaLqatHaLraLsasDaLtaLuaACaLwazwaLyaLzaLAaLzaLzaLzaLzaLzaLzaLzaLBaLCazNaAdaLFaLFayTaLHaLFaLFaLFaLIazKaLKaLLaLFazJaLNaLOaLPaxeaxfaMkaLSaxdaIPaLTaLTaLTaLTaLTaLTaLUaLVaLWaLXaLYaLZaMaaMbaMcaIOaIOaIOaDGaMeaMfaMeaMgaMhaMiaMjaIOaMkawwaBoaMlaxMaOOaMoaMnaMpaxKaMraMsaMtaJdaxLaMvaMwaMwaMxaJjaMyaxJaMAaxBaMAaMAaMCaMDaxDaMDaMFayOayCayQaMDaJjasIarZaHPaHPaCXaDFaHPaHPaEsaMOaMPaEuaytaMRaHZavTaEuaMSaymayeaIbaEyaEyaEyaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawXayVaMVaAFaAFaAFaAFaMWayVawXaAHasSaAIaMXaMYawvavSaNbaNbaNcatHaNdaLsaxAaNfaLuaxzaNhaNiaNjaNkaNlaLzaLzaLzaLzaLzaLzaLzaxhaxiaxuaLzaLzaLzaxpayuaLzaLzaLzaLzaxvaLzaLzaLzaxtaNmaLuaLPaIOaIOaIOaIOaIOaIOaIOaIOaIOaIOaIOaIOaNsaNtaNuaNvaNwaNxaNyaNzaNAaIOaIOaIOaLPaIOaIOaIOaIOaIOaIOaIOaIOaNBbNwaCjaCWaCQaMpaNEaMpaMpawEaNGaMsawiaJdawFawJawSaNLaNMaJjaNNawTaNPawHaNRaNSaJjaNTawIaNTaJjaJjaJjavCaJjaJjasIarZaNVaHPaHPaNWaHPaNXaEsaEuaEuaEuaEuaEuaEuavQaEuaIbaIbasHaIbaNZaOaaEyaaaaafaaaaaaaaaaaaaaaaaaaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -10736,13 +10738,13 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbdQaWEaWFbeMaAbbeNbUVbePbePbeQbePbePbePbeRaPBaPBaPBaPBaOlaCSaZYbeSbeTbeUaYybeVbeWbUWaPEaPEaPEaPEbUmaPEcuRbfabalctebbHbcQcsXcsZbalbbJbarbfcbcSbcSbPhbfebarbULaIOaYVbTrbfhbgCbembfibfjbepaGibfkbaAbflbfmbfnbetbfobetbdfbfpbfqaCVbfrbfsbftbfubfubfvbclbfwawGcCTcuScFlcvvcxRdPwdPxdTPdPxcFHdPxcGedTQbTtdTSctbctbctaaZFaZFaZFaZFbfDaZFbfybfOaZFctccByctdbfIbWUcGxbfIbfKdTUdTVdTWaZFaZFaZFaZFaZFbfObfPbfDaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFbdzbfQbfRbfSbfTbfUbfVbbmbfWaafaaaaafaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbdQcpzcpvcqkcqxbfXbePbfYbfZbgabgabgbbgcbgdbgebgebgebgebPBbUubUrbUrbUtbUsbUrbUobUobUpbUobUnbUlbUlbSbbRucqMcrQbUCcrpbUBbUBcrocqYbalcqPbarbgybcSbcSbPhbgzbgAbffaIOaYVbaAbgCbTpbdabdabdabdaaGibgEbaAbaBbgFbgGbWJbgIbgJbgGbgKbaBaCVbURbUQbgNbgObgPbgQbgRbgSawGcrZaHfcrWawGbTqbTqbgUbgUbgUbgUcmTcmTcsUcsVcsrcsscsVcsUcmTcmTcmTckbckbckbckbckbbcqbcqcskbhbbhbbhbbhbbhbbktcslbcqcsYcsncsobhkbhkbhlbhlbhlbhlbhlbhmbhnbhnbhobhnaZFbhnbhobhnbhnbhpbTqcsJcsJbNtbhrbhgaPtaPtaPtaaaaaaaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbdQaZLaZMbeMaAbbhsbePbhtbePbhubhvbePbePbePaRebhwbhxbhxbTHaYyaZYbhzbcJbhAaYybUabTZbTTbTSbTVbTUbTXbTWbTYbTXbTMbTNbLkbTCbLkbLkcmKcmVclMbTbbhSbcSbcSbTLbhUbhVbffaIObhWbaAbhXbaAbhZbVnbibbSOaGibaAbaAbaBbiebifbigbihbiibijbikbaBaCVbTybimckrbiobipbgQbclbiqawGcnGcoacoNawGcqlcqncqSbTncrDcrGcrMcoOcqUcqVcrAcrBcogcofcpscoYcmTcmIcmWcmUcpMckbcnscpNcndcptbVUcktcktclSbktcggbiSbiScksbiSbiUbiUbhlbiVbiWbiXbhlbiYbiZbiYbhlbhmbhnbhpbNtbSQbTibSQbNtbThbTgbNtbjebTEbjgbhgaaaaaaaaaaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQaaachMaMYbbnayabjhbePbjibePbjjbjkbjlbQYbePbjnaReaXibcHbTjaYyaYyaYyaYyaYyaYybTAbjrbjsaRebjtbalbalbalbTzbalbalbalbrnbalbalbalbMVbalblubRFbjzbcSbcSbPhbjAbgAbSwaIObSybaAbjCbaAbaAbaAbaAbaAbTkbaAbTmbTlbjGbjHbbXbjIbbXbjJbjKbTvbTxbTybjNbclbjObjPbgQbjQbjRbaDbSNaIObDbcgQchOcgPcgjchNcjwckLciicjachochocgRcgScjtcjpciHciEciDciCciBciAckcckbcjDcgeclFcgecjvcjucgecgfbktcggbiSbkwcfKcgdbkzbkAbkBbkCbkDbkCbSjbkFbkGbkHbhlbkIbkJbkKbNtbSzbSEbSDbSMbNHbSAbNtbkRbkSbkTbhgaaaaaaaaaaaeaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQaaachMaMYbbnayabjhbePbjibePbjjbjkbjlbQYbePbjnaReaXibcHbTjaYyaYyaYyaYyaYyaYybTAbjrbjsaRebjtbalbalbalbTzbalbalbalbrnbalbalbalbMVbalblubRFbjzbcSbcSbPhbjAbgAbSwaIObSybaAbjCbaAbaAbaAbaAdoFbTkbaAbTmbTlbjGbjHbbXbjIbbXbjJbjKbTvbTxbTybjNbclbjObjPbgQbjQbjRbaDbSNaIObDbcgQchOcgPcgjchNcjwckLciicjachochocgRcgScjtcjpciHciEciDciCciBciAckcckbcjDcgeclFcgecjvcjucgecgfbktcggbiSbkwcfKcgdbkzbkAbkBbkCbkDbkCbSjbkFbkGbkHbhlbkIbkJbkKbNtbSzbSEbSDbSMbNHbSAbNtbkRbkSbkTbhgaaaaaaaaaaaeaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazQasSbcFaAFaZMaTPaTPaTPbkUaTPbkVayWcViaxTbePbkWbkXbkYbkZblablbblcbldbldbldbldbXnbWDbWDbWDbTXbTXbTXbWCblhblhblhblibalbljblkbWEblmblnbloblpblpblrblschfckRcnZbgAbjzbcSbXvbWwbWxbWxbWRbEvbWMbXmbWXbWLbZTbWIbXmbWTbXkbXjbXibTvbTvbTvbTvbWHbTvbTvbTvbTvbWjbWGbWQbWSbWObWPbWKbWNbWsbWFbWVaIObDbbgUdVHdVIdVJcVwcVubgUcVvdUTcjtcjtcjtcjtcjtcjpdVzdVydVBdVAdVDdVCdVuckbdVwdVvcVjcgecjvcjucgedVLbktcggdVNbYedVMbYbbXHbXMbXFbXGbXGbXGbXUbXWbXAbXzbXybXxbXEbXDbXhbXgbXebNHbXcbXbbXfbNtbmPbkSbmsbhgaaaaaaaaaaaaaaaaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabmQcOncOfcOwcOocOxcOxcOGcUZaxTbePbmSbmTbkZbmUbePbePbePaPBbmVbmWbmXbmYbmXbmXbmXbmYbmXaPBaPBbalbalbalbmZbalblpblpbnablpblpblpblpblpbnbbVobndbcSbWebWdbWdbWdbWabWcbVYbVcbVgbWibWncrRbWfbWfbWhbWgbWqbWpbVsbWrbWobnxbnybnzbnAbnBbnCbnzbnDbnxbPVbTybnFbnGbnFbaDbaDbaDbWAbaDdUZaIObDbcgQchOcgPdVadVbbWBbgUdUSdUTdUXdUYdUVdUWdVndVmdVldVkcmTdVpdUEdVodVfdVedVddVccVhdVidVhdVgdVidVqbUedVrdVsdTXbnYdTYboabobbocbodboebofbofbogbkCbohbhlbWvbojbokbNtbVZbVAbVzbUJbVVbVXbNtbmPbkSborbhgaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaabmQcNOcLFcInaxSaxSaxSbosaxSaxSbePbotboubovbkZbePaaaaaaaaaaafaafbowbowbowbowbowbowbowaaaaaaboxboybozboAboBblpblpblpblpblpblpblpblpbUNbjzbUOdYAboEboFbarbarbVGbVHbaraUnboHboIbVEaUnboLboMboMbNsboMbVFbUGboMabLboQboRbnzboSbnBboSbnzboTboQbPVbVkboVbfuboWbVybVBbVDbUFbnFbpcaIObDbbgUbWmcqndUQdURdUNbixdUOdUPdUJdUKdULbVWdUGdUFdUIdUHcmTckbdUEdUDdUAckbdUCdUBdUydUxdUzdUzdUvdUwbktcggbiSdUubkxbkxboabpybpzbpAbpBbpCbpCbpDbpEbpFbhlbpGbojbpHbNtbUYbUTbUPbUJbNHbUIbNtbkRbkSbpMbhgaaaaaaaaaaaaaafbpNbpObMebpObMebpObpQaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacHGaxRcHMcHMbpRaTPbpSazQasSbpTbpSbePbpUbpVbpWbpXbePaaaaaaaaaaaaaaabowbowbowbowbowbowbowaaaaaabpYbpZblpbqabqbbqbbqbbqbbqbbqcbqbbqbbqbbqdbqebqfcGybqhbqibarbqjbPhbqkbqlbtfbffbqnbqoaUnaUnboMbqpbVdbqrbXdbTuboMbTwbVfbVhbqxbqybqzbqybqAbVibVjbTxbVkbqEbfubqFbaDbqGbnFbTIbnFbpcaIOcHTbgUdUjdUkdUhdUidUgbixdUedUfdUcdUddUadUbbZzdUsdUrdUqdUpbPZdUodUnbPZbPZbPZbPZdUmdUlbPZbPZbktdTZbktcggbiSdTXbnYdTYbrabrbbrcbrdbrebrebrebpDbkCbrfbrgbrhbkJbVlbNtbUEbUAbUzbUDbNHbUvbNtbUwbmrbhgbhgaaaaaaaaaaaaaafbrobrpbrqbrrbrrbrsbroaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowbrubrvbrwbrxblpblpblpbrybrybrybryboAblpblpblpbnbbqgbqTbrzboZbrCbrDbrEbPhbcSbrFbRgbffbqnbrHbrIbrJbNNbrLbPPbrNbPObNMboMaafbrQbrRbnzbqybrSbqybnzbrTbrUbPVbPWbrWbrXbrYbaDbrZbnFbOlaUnbpcbNybTDbNzbNAbNCbNDbPKbIibixbPMbPQbLDbPRbPubPSbLDbLDbPYbPUbPZbPZbQxbQpbQFbIrbQIbQHbQSbQJbQVbPZbJqbRabQWbQXbRfbRhbRbbRbbPGbsEbkBbsFbrebrebrebsGbkCbsHbrhbsIbsIbPHbrhbNEbNKbNJbNIbNHbNLbNtbmPbsPbhgaaaaaaaaaaaaaaaaafbsQbsRbrqbrrbrqbTGbMeaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowbSKbsUbSKbsVbsWblpblpblpblpblpblpboAblpbsXbalbalbsYbcSbndboCbtabtbbtcbPhbcSbcSbtdaIObqnbtebtfbtgbPrbtibtjbtkbPqbNxboMaafbrUbrUbIgbtobtpbnzbtqbOvbNgbPpbNqbtvbtvbtvbtvbtvbtvbToawGbLTaHfaHfawGbMcbMmbLUbOIbPfbixbOLbOYbPubPvbPsbPtbOibOhbOgbNUbOybOubOkbOjbOCbOBbOAbOzbOGbOFbOEbODbNubPAbPAboDbPCbPDbPDbPDbtZbHWbkBbubbkCbkCbucbPgbkCbuebkIbOUbugbORbkIbMtbMCbMvbRqbAHbrhbNtbuobhgbhgbupbuqbuqbuqburbkIbrobrrbrqbrrbrrbSibroaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowbSKbsUbSKbsVbsWblpblpblpblpblpblpboAblpbsXbalbalbsYbcSbndboCbtabtbbtcbPhbcSbcSbtdaIObqnbtebtfbtgbPrbtibtjbtkbPqbNxboMaafbrUbrUbIgbtobtpbnzbtqbOvbNgbPpbNqbtvbtvbtvbtvbtvbtvdoEawGbLTaHfaHfawGbMcbMmbLUbOIbPfbixbOLbOYbPubPvbPsbPtbOibOhbOgbNUbOybOubOkbOjbOCbOBbOAbOzbOGbOFbOEbODbNubPAbPAboDbPCbPDbPDbPDbtZbHWbkBbubbkCbkCbucbPgbkCbuebkIbOUbugbORbkIbMtbMCbMvbRqbAHbrhbNtbuobhgbhgbupbuqbuqbuqburbkIbrobrrbrqbrrbrrbSibroaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaeaaaaaaaaabowbowbowbowbowbowbowbNvbutbNvbuublpblpblpbrybrybrybryboAblpbuvbuwbalbuxbcSbndboCbuybuzbtcbOxbuBbqfbuCbuDbuEbpcbuFbtgbuGbuHbuIbuJbOmbMfboMbOpbOobNBbOnbuRbrSbuRbOvbOwbuTbuTbNqbuUbuVbuWbuXbuYbuZbMkawGbvcaIOaIOawGbLSbMnbMrbMBbMSbMTbMUbnebMLbMPbMbbMRbNabMZbMsbNbbApbHvbMYbMWbNlbNkbNGbNobNfbNebNibNhbMjbMlbMhbMibiSbvybvzbMgbvBbvBbkBbvCbvDbvEbkBbNVbkCbvGbLubvIbvJbOebvLbvMbOfbvObvPbvQbsIbkJbLVbLQbMubMNbMQbvVbvVbNcbvWbvXbpObMebNdbMebpObvZaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowbwabrvbwbbKOblpblpblpblpblpblpblpboAblpbuvbwdbalbwebegbndbncbqfbwgbqfbNFbcSbrFbRdbffaIObpcbuFbtgboMbwibwjbwkbwlbMdboMbwpbwnbHhbzzbNgbNjbNmbNnbwubGIbwwbNqbGCbwybwzbwAbwBbwBbnTbINbambdDaIRbgUbJfbLRbLNbLPbeZbixbLYbLZbLDbLXcbObLWbFNbLDbLAbLzbDcbDcbDcbDcbDcbHfbIIbHfbAqbLJbLGbAqbAqbAqbAqbLybiSbiSbkIbkIbkIbxbbkBbkBbkBbkBbkBbMMbxebxfbxgbxhbxibMobHMbMpbMqbojbojbxnbxobxpbJebJdbKfbKubMpbJgbMpbKEbkIbupbuqburbKLbkIbKMaaaaafaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowbNvbutbNvbxubxvblpblpbxwbSRbSSbSRbSXbSRbSYbTabSTbSUbSVbzmbFnbSWbTcbTdbSVbxFbxGbRgbffaIObxHbxIbxJboMbxKbxLbxMbxNbSdbRzbXwbSfbRUbRJbSubSvbSsbStbSkbSrbSebShbybbycbycbydbyebyfbQEbtvcbPbDNbONbgUbixcbQcciccjcarcawcaWcbabPucbccbebLWcfMbPucdkbWubRSceEceJcfQbDccckccFccEbAqbSCbTsbRebRvbAybAqbwNbRybRBbRwbRxbRpbRpbRibRmbRpbRtbRrbRsbREbRDbRpbRCbQubSPbyPbyQbSLbySbrhbrhbrhbyScglcgkbyVbupburbkIbojbvVbyWcfLcdQceFbzacfDaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From 8fe013d531d7e5458cc6cea3120c531c4ff31b7f Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Tue, 24 Jun 2014 03:21:27 +0930 Subject: [PATCH 025/304] Allows climbing onto tables and crates, also adds falling off if you are dumb enough to stand on one that is flipped or opened. --- .../structures/crates_lockers/crates.dm | 35 +++++++++++++++++++ code/game/objects/structures/tables_racks.dm | 34 +++++++++++++++--- 2 files changed, 64 insertions(+), 5 deletions(-) diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index 6ad94282f1..0492522389 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -10,6 +10,36 @@ // mouse_drag_pointer = MOUSE_ACTIVE_POINTER //??? var/rigged = 0 +//Maybe move both of these procs to a root structure somewhere and have a 'climbable' var on structures. +/obj/structure/closet/crate/proc/can_touch(var/mob/user) + if (!user) + return 0 + if (user.stat) //zombie goasts go away + return 0 + if (issilicon(user)) + user << "You need hands for this." + return 0 + return 1 + +/obj/structure/closet/crate/verb/do_climb() + + set name = "Climb crate" + set desc = "Climbs onto a crate." + set category = "Object" + set src in oview(1) + + if (!can_touch(usr)) + return + + usr.visible_message("[usr] starts climbing onto \the [src]!") + + if(!do_after(usr,50)) + return + + usr.loc = get_turf(src) + if (get_turf(usr) == get_turf(src)) + usr.visible_message("[usr] climbs onto \the [src]!") + /obj/structure/closet/crate/can_open() return 1 @@ -36,6 +66,11 @@ O.loc = get_turf(src) icon_state = icon_opened src.opened = 1 + + for(var/mob/living/M in get_turf(src)) + M.Weaken(5) + M << "\red You topple as \the [src] moves under you!" + return 1 /obj/structure/closet/crate/close() diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 81c017def5..584aba3d5a 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -412,7 +412,7 @@ return 0 return T.straight_table_check(direction) -/obj/structure/table/verb/can_touch(var/mob/user) +/obj/structure/table/proc/can_touch(var/mob/user) if (!user) return 0 if (user.stat) //zombie goasts go away @@ -422,20 +422,44 @@ return 0 return 1 +/obj/structure/table/verb/do_climb() + set name = "Climb table" + set desc = "Climbs onto a table." + set category = "Object" + set src in oview(1) + + if (!can_touch(usr)) + return + + usr.visible_message("[usr] starts climbing onto \the [src]!") + + if(!do_after(usr,50)) + return + + usr.loc = get_turf(src) + if (get_turf(usr) == get_turf(src)) + usr.visible_message("[usr] climbs onto \the [src]!") + /obj/structure/table/verb/do_flip() set name = "Flip table" set desc = "Flips a non-reinforced table" set category = "Object" set src in oview(1) - if(ismouse(usr)) - return - if (!can_touch(usr)) + + if (!can_touch(usr) || ismouse(usr)) return + if(!flip(get_cardinal_dir(usr,src))) usr << "It won't budge." else usr.visible_message("[usr] flips \the [src]!") - return + + + for(var/mob/living/M in get_turf(src)) + M.Weaken(5) + M << "\red You topple as \the [src] moves under you!" + + return /obj/structure/table/proc/unflipping_check(var/direction) for(var/mob/M in oview(src,0)) From da89c36cde89ecd381d140b7ca358b85fbcaf7ba Mon Sep 17 00:00:00 2001 From: Mloc-Argent Date: Mon, 23 Jun 2014 19:34:35 +0100 Subject: [PATCH 026/304] atmos: fix a geometry error reverse_dir is a list of reversed dir fields Signed-off-by: Mloc-Argent --- code/ZAS/Turf.dm | 10 ++++++++++ code/global.dm | 2 ++ 2 files changed, 12 insertions(+) diff --git a/code/ZAS/Turf.dm b/code/ZAS/Turf.dm index 162939baa9..35dc8f684e 100644 --- a/code/ZAS/Turf.dm +++ b/code/ZAS/Turf.dm @@ -26,6 +26,10 @@ #endif var/turf/unsim = get_step(src, d) + + if(!unsim) + continue + block = unsim.c_airblock(src) if(block & AIR_BLOCKED) @@ -75,6 +79,10 @@ #endif var/turf/unsim = get_step(src, d) + + if(!unsim) //edge of map + continue + var/block = unsim.c_airblock(src) if(block & AIR_BLOCKED) @@ -108,6 +116,8 @@ if(istype(unsim, /turf/simulated)) var/turf/simulated/sim = unsim + sim.open_directions |= reverse_dir[d] + if(air_master.has_valid_zone(sim)) //Might have assigned a zone, since this happens for each direction. diff --git a/code/global.dm b/code/global.dm index 1eb82f08cd..c59de977da 100644 --- a/code/global.dm +++ b/code/global.dm @@ -141,6 +141,8 @@ var/list/ninjastart = list() // list/traitors = list() //traitor list var/list/cardinal = list( NORTH, SOUTH, EAST, WEST ) var/list/alldirs = list(NORTH, SOUTH, EAST, WEST, NORTHEAST, NORTHWEST, SOUTHEAST, SOUTHWEST) +// reverse_dir[dir] = reverse of dir +var/list/reverse_dir = list(2, 1, 3, 8, 10, 9, 11, 4, 6, 5, 7, 12, 14, 13, 15, 32, 34, 33, 35, 40, 42, 41, 43, 36, 38, 37, 39, 44, 46, 45, 47, 16, 18, 17, 19, 24, 26, 25, 27, 20, 22, 21, 23, 28, 30, 29, 31, 48, 50, 49, 51, 56, 58, 57, 59, 52, 54, 53, 55, 60, 62, 61, 63) var/datum/station_state/start_state = null var/datum/configuration/config = null From 6d0098c4fb63e81f5c3d7456aa566883a962a6da Mon Sep 17 00:00:00 2001 From: Mloc-Argent Date: Mon, 23 Jun 2014 19:38:04 +0100 Subject: [PATCH 027/304] turf: adds a damage model for walls New proc for walls: take_damage(). Damage is tracked in the "damage" var, walls will break if "damage" hits "damage_cap". Damage can be repaired with a weldingtool. Damage overlays are cached in the global wall var "damage_overlays" to reduce overhead. Signed-off-by: Mloc-Argent --- code/game/turfs/simulated/walls.dm | 246 ++++++++++++------ code/game/turfs/simulated/walls_reinforced.dm | 15 ++ icons/turf/walls.dmi | Bin 147272 -> 150122 bytes 3 files changed, 182 insertions(+), 79 deletions(-) diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm index 7522683941..61bb4732a5 100644 --- a/code/game/turfs/simulated/walls.dm +++ b/code/game/turfs/simulated/walls.dm @@ -4,6 +4,13 @@ icon = 'icons/turf/walls.dmi' var/mineral = "metal" var/rotting = 0 + + var/damage = 0 + var/damage_cap = 100 //Wall will break down to girders if damage reaches this point + + var/damage_overlay + var/global/damage_overlays[8] + opacity = 1 density = 1 blocks_air = 1 @@ -13,6 +20,83 @@ var/walltype = "metal" +/turf/simulated/wall/Del() + for(var/obj/effect/E in src) if(E.name == "Wallrot") del E + ..() + +/turf/simulated/wall/ChangeTurf(var/newtype) + for(var/obj/effect/E in src) if(E.name == "Wallrot") del E + ..(newtype) + +//Appearance + +/turf/simulated/wall/examine() + . = ..() + + if(!damage) + usr << "It looks fully intact." + else + var/dam = damage / damage_cap + if(dam <= 0.3) + usr << "It looks slightly damaged." + else if(dam <= 0.6) + usr << "It looks moderately damaged." + else + usr << "It looks heavily damaged." + + if(rotting) + usr << "There is fungus growing on [src]." + +/turf/simulated/wall/proc/update_icon() + if(!damage_overlays[1]) //list hasn't been populated + generate_overlays() + + if(!damage) + overlays.Cut() + return + + var/overlay = round(damage / damage_cap * damage_overlays.len) + 1 + if(overlay > damage_overlays.len) + overlay = damage_overlays.len + + if(damage_overlay && overlay == damage_overlay) //No need to update. + return + + overlays.Cut() + overlays += damage_overlays[overlay] + damage_overlay = overlay + + return + +/turf/simulated/wall/proc/generate_overlays() + var/alpha_inc = 256 / damage_overlays.len + + for(var/i = 1; i <= damage_overlays.len; i++) + var/image/img = image(icon = 'icons/turf/walls.dmi', icon_state = "overlay_damage") + img.blend_mode = BLEND_MULTIPLY + img.alpha = (i * alpha_inc) - 1 + damage_overlays[i] = img + +//Damage + +/turf/simulated/wall/proc/take_damage(dam) + if(dam) + damage = max(0, damage + dam) + update_damage() + return + +/turf/simulated/wall/proc/update_damage() + var/cap = damage_cap + if(rotting) + cap = cap / 10 + + if(damage >= cap) + dismantle_wall() + else + update_icon() + + return + /turf/simulated/wall/proc/dismantle_wall(devastated=0, explode=0) if(istype(src,/turf/simulated/wall/r_wall)) if(!devastated) @@ -64,31 +148,76 @@ ChangeTurf(/turf/simulated/floor/plating) /turf/simulated/wall/ex_act(severity) - if(rotting) severity = 1.0 switch(severity) if(1.0) - //SN src = null src.ChangeTurf(/turf/space) return if(2.0) - if (prob(50)) - dismantle_wall(0,1) + if(prob(75)) + take_damage(rand(150, 250)) else dismantle_wall(1,1) if(3.0) - var/proba - if (istype(src, /turf/simulated/wall/r_wall)) - proba = 15 - else - proba = 40 - if (prob(proba)) - dismantle_wall(0,1) + take_damage(rand(0, 250)) else return /turf/simulated/wall/blob_act() - if(prob(50) || rotting) + take_damage(rand(75, 125)) + return + +// Wall-rot effect, a nasty fungus that destroys walls. +/turf/simulated/wall/proc/rot() + if(!rotting) + rotting = 1 + + var/number_rots = rand(2,3) + for(var/i=0, iThe thermite starts melting through the wall." + + spawn(100) + if(O) del(O) +// F.sd_LumReset() //TODO: ~Carn + return + +/turf/simulated/wall/meteorhit(obj/M as obj) + if (prob(15) && !rotting) dismantle_wall() + else if(prob(70) && !rotting) + ChangeTurf(/turf/simulated/floor/plating) + else + ReplaceWithLattice() + return 0 + +//Interactions /turf/simulated/wall/attack_paw(mob/user as mob) if ((HULK in user.mutations)) @@ -99,6 +228,7 @@ return else usr << text("\blue You punch the wall.") + take_damage(rand(25, 75)) return return src.attack_hand(user) @@ -116,6 +246,7 @@ return else M << text("\blue You smash against the wall.") + take_damage(rand(25, 75)) return M << "\blue You push the wall but nothing happens!" @@ -130,6 +261,7 @@ return else usr << text("\blue You punch the wall.") + take_damage(rand(25, 75)) return if(rotting) @@ -193,17 +325,32 @@ //DECONSTRUCTION if( istype(W, /obj/item/weapon/weldingtool) ) + + var/response = "Dismantle" + if(damage) + response = alert(user, "Would you like to repair or dismantle [src]?", "[src]", "Repair", "Dismantle") + var/obj/item/weapon/weldingtool/WT = W - if( WT.remove_fuel(0,user) ) - user << "You begin slicing through the outer plating." - playsound(src, 'sound/items/Welder.ogg', 100, 1) - sleep(100) - if( !istype(src, /turf/simulated/wall) || !user || !WT || !WT.isOn() || !T ) return + if(WT.remove_fuel(0,user)) + if(response == "Repair") + user << "You start repairing the damage to [src]." + playsound(src, 'sound/items/Welder.ogg', 100, 1) + if(do_after(user, max(5, damage / 5)) && WT && WT.isOn()) + user << "You finish repairing the damage to [src]." + take_damage(-damage) - if( user.loc == T && user.get_active_hand() == WT ) - user << "You remove the outer plating." - dismantle_wall() + else if(response == "Dismantle") + user << "You begin slicing through the outer plating." + playsound(src, 'sound/items/Welder.ogg', 100, 1) + + sleep(100) + if( !istype(src, /turf/simulated/wall) || !user || !WT || !WT.isOn() || !T ) return + + if( user.loc == T && user.get_active_hand() == WT ) + user << "You remove the outer plating." + dismantle_wall() + return else user << "You need more welding fuel to complete this task." return @@ -306,62 +453,3 @@ else return attack_hand(user) return - -// Wall-rot effect, a nasty fungus that destroys walls. -/turf/simulated/wall/proc/rot() - if(!rotting) - rotting = 1 - - var/number_rots = rand(2,3) - for(var/i=0, iThe thermite starts melting through the wall." - - spawn(100) - if(O) del(O) -// F.sd_LumReset() //TODO: ~Carn - return - -/turf/simulated/wall/meteorhit(obj/M as obj) - if (prob(15) && !rotting) - dismantle_wall() - else if(prob(70) && !rotting) - ChangeTurf(/turf/simulated/floor/plating) - else - ReplaceWithLattice() - return 0 - -/turf/simulated/wall/Del() - for(var/obj/effect/E in src) if(E.name == "Wallrot") del E - ..() - -/turf/simulated/wall/ChangeTurf(var/newtype) - for(var/obj/effect/E in src) if(E.name == "Wallrot") del E - ..(newtype) \ No newline at end of file diff --git a/code/game/turfs/simulated/walls_reinforced.dm b/code/game/turfs/simulated/walls_reinforced.dm index f70322ee57..b89c127a0e 100644 --- a/code/game/turfs/simulated/walls_reinforced.dm +++ b/code/game/turfs/simulated/walls_reinforced.dm @@ -5,6 +5,8 @@ opacity = 1 density = 1 + damage_cap = 200 + walltype = "rwall" var/d_state = 0 @@ -81,6 +83,19 @@ user << "This wall is too thick to slice through. You will need to find a different path." return + if(damage && istype(W, /obj/item/weapon/weldingtool)) + var/obj/item/weapon/weldingtool/WT = W + if(WT.remove_fuel(0,user)) + user << "You start repairing the damage to [src]." + playsound(src, 'sound/items/Welder.ogg', 100, 1) + if(do_after(user, max(5, damage / 5)) && WT && WT.isOn()) + user << "You finish repairing the damage to [src]." + take_damage(-damage) + return + else + user << "You need more welding fuel to complete this task." + return + var/turf/T = user.loc //get user's location for delay checks //DECONSTRUCTION diff --git a/icons/turf/walls.dmi b/icons/turf/walls.dmi index 31333372f413ec5508d45e7de4326c35f8f6fb3a..3f83a6a057b19e7456acfe8b1d3836fb8014354a 100644 GIT binary patch delta 15198 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 delta 12325 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 From 1aca3fe7f2b8d846aa8e5c4ad0b64804563693bd Mon Sep 17 00:00:00 2001 From: Mloc-Argent Date: Mon, 23 Jun 2014 20:54:20 +0100 Subject: [PATCH 028/304] atmos: make fires more destructive Fires can now burn through walls, windows, and (with a high enough temperature) rwalls. New proc: adjacent_fire_act(). Called on turfs that a fire isn't able to spread to. (walls, floor surrounded by windows, etc.) Signed-off-by: Mloc-Argent --- code/ZAS/Fire.dm | 15 +++++++++++---- code/game/objects/structures/window.dm | 2 +- code/game/turfs/simulated/floor.dm | 15 +++++++++++++++ code/game/turfs/simulated/walls.dm | 8 ++++++++ code/game/turfs/simulated/walls_reinforced.dm | 1 + code/game/turfs/turf.dm | 3 +++ 6 files changed, 39 insertions(+), 5 deletions(-) diff --git a/code/ZAS/Fire.dm b/code/ZAS/Fire.dm index 33161b8214..2d181dc600 100644 --- a/code/ZAS/Fire.dm +++ b/code/ZAS/Fire.dm @@ -63,9 +63,11 @@ turf/simulated/hotspot_expose(exposed_temperature, exposed_volume, soh) if(!istype(S)) del src + return if(!S.zone) del src + return var/datum/gas_mixture/air_contents = S.return_air() //get liquid fuels on the ground. @@ -87,6 +89,7 @@ turf/simulated/hotspot_expose(exposed_temperature, exposed_volume, soh) if(!air_contents.check_combustability(liquid)) //del src RemoveFire() + return //get a firelevel and set the icon firelevel = air_contents.calculate_firelevel(liquid) @@ -104,15 +107,16 @@ turf/simulated/hotspot_expose(exposed_temperature, exposed_volume, soh) //im not sure how to implement a version that works for every creature so for now monkeys are firesafe for(var/mob/living/carbon/human/M in loc) M.FireBurn(firelevel, air_contents.temperature, air_contents.return_pressure() ) //Burn the humans! + + loc.fire_act(air_contents, air_contents.temperature, air_contents.return_volume()) for(var/atom/A in loc) A.fire_act(air_contents, air_contents.temperature, air_contents.return_volume()) //spread for(var/direction in cardinal) - if(S.open_directions & direction) //Grab all valid bordering tiles + var/turf/simulated/enemy_tile = get_step(S, direction) - var/turf/simulated/enemy_tile = get_step(S, direction) - - if(istype(enemy_tile)) + if(istype(enemy_tile)) + if(S.open_directions & direction) //Grab all valid bordering tiles var/datum/gas_mixture/acs = enemy_tile.return_air() var/obj/effect/decal/cleanable/liquid_fuel/liq = locate() in enemy_tile if(!acs) continue @@ -128,6 +132,9 @@ turf/simulated/hotspot_expose(exposed_temperature, exposed_volume, soh) if( prob( 50 + 50 * (firelevel/vsc.fire_firelevel_multiplier) ) && S.CanPass(null, enemy_tile, 0,0) && enemy_tile.CanPass(null, S, 0,0)) new/obj/fire(enemy_tile,firelevel) + else + enemy_tile.adjacent_fire_act(loc, air_contents, air_contents.temperature, air_contents.return_volume()) + //seperate part of the present gas //this is done to prevent the fire burning all gases in a single pass var/datum/gas_mixture/flow = air_contents.remove_ratio(vsc.fire_consuption_rate) diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 2c9b755f56..bc4d5fd25e 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -324,7 +324,7 @@ //checks if this window is full-tile one /obj/structure/window/proc/is_fulltile() - if(dir in list(5,6,9,10)) + if(dir & (dir - 1)) return 1 return 0 diff --git a/code/game/turfs/simulated/floor.dm b/code/game/turfs/simulated/floor.dm index 90aa2a4f02..7af70b386e 100644 --- a/code/game/turfs/simulated/floor.dm +++ b/code/game/turfs/simulated/floor.dm @@ -75,6 +75,21 @@ var/list/wood_icons = list("wood","wood-broken") src.hotspot_expose(1000,CELL_VOLUME) return +/turf/simulated/floor/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) + if(!burnt && prob(5)) + burn_tile() + else if(prob(1) && !is_plating()) + make_plating() + burn_tile() + return + +/turf/simulated/floor/adjacent_fire_act(turf/simulated/floor/adj_turf, datum/gas_mixture/adj_air, adj_temp, adj_volume) + var/dir_to = get_dir(src, adj_turf) + + for(var/obj/structure/window/W in src) + if(W.dir == dir_to || W.is_fulltile()) //Same direction or diagonal (full tile) + W.fire_act(adj_air, adj_temp, adj_volume) + /turf/simulated/floor/blob_act() return diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm index 61bb4732a5..d264f8375d 100644 --- a/code/game/turfs/simulated/walls.dm +++ b/code/game/turfs/simulated/walls.dm @@ -11,6 +11,8 @@ var/damage_overlay var/global/damage_overlays[8] + var/max_temperature = 1800 //K, walls will take damage if they're next to a fire hotter than this + opacity = 1 density = 1 blocks_air = 1 @@ -97,6 +99,12 @@ return +/turf/simulated/wall/adjacent_fire_act(turf/simulated/floor/adj_turf, datum/gas_mixture/adj_air, adj_temp, adj_volume) + if(adj_temp > max_temperature) + take_damage(rand(10, 20) * (adj_temp / max_temperature)) + + return ..() + /turf/simulated/wall/proc/dismantle_wall(devastated=0, explode=0) if(istype(src,/turf/simulated/wall/r_wall)) if(!devastated) diff --git a/code/game/turfs/simulated/walls_reinforced.dm b/code/game/turfs/simulated/walls_reinforced.dm index b89c127a0e..10c7a2cbce 100644 --- a/code/game/turfs/simulated/walls_reinforced.dm +++ b/code/game/turfs/simulated/walls_reinforced.dm @@ -6,6 +6,7 @@ density = 1 damage_cap = 200 + max_temperature = 6000 walltype = "rwall" diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index 9cbf30315a..f0d206ec71 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -149,6 +149,9 @@ return return +/turf/proc/adjacent_fire_act(turf/simulated/floor/source, temperature, volume) + return + /turf/proc/is_plating() return 0 /turf/proc/is_asteroid_floor() From c007b013d0a63d858f85861add83ec433023b612 Mon Sep 17 00:00:00 2001 From: DJSnapshot Date: Mon, 23 Jun 2014 14:43:43 -0700 Subject: [PATCH 029/304] Clicking the magnetic card slot option on the desktop will eject all cards. No more eating cards! --- code/WorkInProgress/computer3/NTOS.dm | 8 ++++++++ code/WorkInProgress/computer3/component.dm | 4 ++++ 2 files changed, 12 insertions(+) diff --git a/code/WorkInProgress/computer3/NTOS.dm b/code/WorkInProgress/computer3/NTOS.dm index b7c2defc4a..0b921ad43b 100644 --- a/code/WorkInProgress/computer3/NTOS.dm +++ b/code/WorkInProgress/computer3/NTOS.dm @@ -186,6 +186,14 @@ interact() return // else ??? + if(istype(C,/obj/item/part/computer/cardslot)) + if(computer.cardslot.reader != null) + computer.cardslot.remove() + if(istype(C,/obj/item/part/computer/cardslot/dual)) + if(computer.cardslot.writer != null) + computer.cardslot.remove(computer.cardslot.writer) + if(computer.cardslot.reader != null) + computer.cardslot.remove(computer.cardslot.reader) interact() return diff --git a/code/WorkInProgress/computer3/component.dm b/code/WorkInProgress/computer3/component.dm index a6965ab9e5..8dc2ec835b 100644 --- a/code/WorkInProgress/computer3/component.dm +++ b/code/WorkInProgress/computer3/component.dm @@ -111,6 +111,8 @@ var/mob/living/carbon/human/user = usr if(istype(user) && !user.get_active_hand()) user.put_in_hands(reader) + else + reader.loc = computer.loc reader = null // Authorizes the user based on the computer's requirements @@ -190,5 +192,7 @@ var/mob/living/carbon/human/user = usr if(ishuman(user) && !user.get_active_hand()) user.put_in_hands(card) + else + card.loc = computer.loc From 7fe8a89e58a18e377511ceabdef9027d5ecffbcc Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Tue, 24 Jun 2014 07:17:24 +0930 Subject: [PATCH 030/304] Makes table/crate falling a bit more dangerous. --- .../structures/crates_lockers/crates.dm | 36 +++++++++++++++++- code/game/objects/structures/tables_racks.dm | 38 ++++++++++++++++++- 2 files changed, 71 insertions(+), 3 deletions(-) diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index 0492522389..4dca87cf99 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -68,10 +68,44 @@ src.opened = 1 for(var/mob/living/M in get_turf(src)) + + if(M.lying) return //No spamming this on people. + M.Weaken(5) M << "\red You topple as \the [src] moves under you!" - return 1 + if(prob(100)) + + var/mob/living/carbon/human/H = M + if(!istype(M)) + H << "\red You land heavily!" + M.adjustBruteLoss(rand(15,30)) + return + + var/datum/organ/external/affecting + + switch(pick(list("ankle","wrist","head","knee","elbow"))) + if("ankle") + affecting = H.get_organ(pick("l_foot", "r_foot")) + if("knee") + affecting = H.get_organ(pick("l_leg", "r_leg")) + if("wrist") + affecting = H.get_organ(pick("l_hand", "r_hand")) + if("elbow") + affecting = H.get_organ(pick("l_arm", "r_arm")) + if("head") + affecting = H.get_organ("head") + + if(affecting) + M << "\red You land heavily on your [affecting.display_name]!" + affecting.take_damage(rand(15,30), 0) + else + H << "\red You land heavily!" + H.adjustBruteLoss(rand(15,30)) + + H.UpdateDamageIcon() + H.updatehealth() + return /obj/structure/closet/crate/close() if(!src.opened) diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 584aba3d5a..aac7a2eb26 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -451,14 +451,48 @@ if(!flip(get_cardinal_dir(usr,src))) usr << "It won't budge." - else - usr.visible_message("[usr] flips \the [src]!") + return + usr.visible_message("[usr] flips \the [src]!") for(var/mob/living/M in get_turf(src)) + + if(M.lying) return //No spamming this on people. + M.Weaken(5) M << "\red You topple as \the [src] moves under you!" + if(prob(100)) + + var/mob/living/carbon/human/H = M + if(!istype(M)) + H << "\red You land heavily!" + M.adjustBruteLoss(rand(15,30)) + return + + var/datum/organ/external/affecting + + switch(pick(list("ankle","wrist","head","knee","elbow"))) + if("ankle") + affecting = H.get_organ(pick("l_foot", "r_foot")) + if("knee") + affecting = H.get_organ(pick("l_leg", "r_leg")) + if("wrist") + affecting = H.get_organ(pick("l_hand", "r_hand")) + if("elbow") + affecting = H.get_organ(pick("l_arm", "r_arm")) + if("head") + affecting = H.get_organ("head") + + if(affecting) + M << "\red You land heavily on your [affecting.display_name]!" + affecting.take_damage(rand(15,30), 0) + else + H << "\red You land heavily!" + H.adjustBruteLoss(rand(15,30)) + + H.UpdateDamageIcon() + H.updatehealth() return /obj/structure/table/proc/unflipping_check(var/direction) From 0ac199f92d06b68418462935a000418849e60393 Mon Sep 17 00:00:00 2001 From: DJSnapshot Date: Mon, 23 Jun 2014 15:15:53 -0700 Subject: [PATCH 031/304] shuttle controller fix --- .../computer3/computers/communications.dm | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/code/WorkInProgress/computer3/computers/communications.dm b/code/WorkInProgress/computer3/computers/communications.dm index 23b2540ade..20c29aaec4 100644 --- a/code/WorkInProgress/computer3/computers/communications.dm +++ b/code/WorkInProgress/computer3/computers/communications.dm @@ -124,7 +124,7 @@ return if(authenticated) call_shuttle_proc(usr) - if(emergency_shuttle.online) + if(emergency_shuttle.online()) post_status("shuttle") state = STATE_DEFAULT if("cancelshuttle" in href_list) @@ -269,8 +269,8 @@ proc/main_menu() var/dat = "" if (computer.radio.subspace) - if(emergency_shuttle.online && emergency_shuttle.location==0) - var/timeleft = emergency_shuttle.timeleft() + if(emergency_shuttle.online() && emergency_shuttle.location()) + var/timeleft = emergency_shuttle.estimate_arrival_time() dat += "Emergency shuttle\n
\nETA: [timeleft / 60 % 60]:[add_zero(num2text(timeleft % 60), 2)]
" refresh = 1 else @@ -286,8 +286,8 @@ dat += "
\[ Restore Backup Routing Data \]" dat += "
\[ Change alert level \]" - if(emergency_shuttle.location==0) - if (emergency_shuttle.online) + if(emergency_shuttle.location()) + if (emergency_shuttle.online()) dat += "
\[ Cancel Shuttle Call \]" else dat += "
\[ Call Emergency Shuttle \]" From e3930fa79e4a02342551d006f42bb0fea1e5aefa Mon Sep 17 00:00:00 2001 From: Chinsky Date: Tue, 24 Jun 2014 03:35:56 +0400 Subject: [PATCH 032/304] Monkey cube now expand when eaten, leading to !!FUN!! --- .../reagent_containers/food/snacks.dm | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm index da91085e27..4314c5bb90 100644 --- a/code/modules/reagents/reagent_containers/food/snacks.dm +++ b/code/modules/reagents/reagent_containers/food/snacks.dm @@ -1550,6 +1550,51 @@ if(wrapped) Unwrap(user) + On_Consume(var/mob/M) + M << "Something inside of you suddently expands!" + //Do not try to understand. + var/obj/item/weapon/surprise = new/obj/item/weapon(M) + surprise.icon = 'icons/mob/monkey.dmi' + surprise.icon_state = "monkey1" + var/specie = "monkey" + if(monkey_type) + switch(monkey_type) + if("tajara") + surprise.icon_state = "tajkey1" + specie = "farwa" + if("unathi") + surprise.icon_state = "stokkey1" + specie = "stok" + if("skrell") + surprise.icon_state = "skrellkey1" + specie = "neaera" + surprise.name = "malformed [specie]" + surprise.desc = "Looks like \a very deformed [specie], a little small for its kind." + surprise.transform *= 0.6 + surprise.add_blood(M) + + if (istype(M, /mob/living/carbon/human)) + var/mob/living/carbon/human/H = M + var/datum/organ/external/E = H.get_organ("chest") + E.fracture() + for (var/datum/organ/internal/I in E.internal_organs) + I.take_damage(rand(I.min_bruised_damage, I.min_broken_damage+5)) + + if (!E.hidden && prob(60)) //set it snuggly + E.hidden = surprise + E.cavity = 0 + else //someone is having a bad day + E.createwound(CUT, 30) + E.implants += surprise + H.visible_message("Something that looks like \a [surprise] sticks out of a wound!") + H.embedded_flag = 1 + H.verbs += /mob/proc/yank_out_object + else if (ismonkey(M)) + M.visible_message("[M] suddenly tears in half!") + surprise.loc = M.loc + M.gib() + ..() + proc/Expand() for(var/mob/M in viewers(src,7)) M << "\red \The [src] expands!" From b2b99076058a4fbc33f4adf931dede85df0eed64 Mon Sep 17 00:00:00 2001 From: Chinsky Date: Tue, 24 Jun 2014 03:56:34 +0400 Subject: [PATCH 033/304] Lowers caused damage to make it destroy organs rarer. --- code/modules/reagents/reagent_containers/food/snacks.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm index 4314c5bb90..61bc359108 100644 --- a/code/modules/reagents/reagent_containers/food/snacks.dm +++ b/code/modules/reagents/reagent_containers/food/snacks.dm @@ -1578,7 +1578,7 @@ var/datum/organ/external/E = H.get_organ("chest") E.fracture() for (var/datum/organ/internal/I in E.internal_organs) - I.take_damage(rand(I.min_bruised_damage, I.min_broken_damage+5)) + I.take_damage(rand(I.min_bruised_damage, I.min_broken_damage+1)) if (!E.hidden && prob(60)) //set it snuggly E.hidden = surprise From ece48ae0c477b6a5d2552995d52995153abe86e6 Mon Sep 17 00:00:00 2001 From: Chinsky Date: Tue, 24 Jun 2014 04:09:35 +0400 Subject: [PATCH 034/304] Moved same code into single organ helper to handle embedding. --- .../mob/living/carbon/human/human_damage.dm | 18 +++++------------- .../mob/living/carbon/human/human_defense.dm | 10 +++------- code/modules/organs/organ_external.dm | 13 +++++++++++++ .../reagents/reagent_containers/food/snacks.dm | 7 ++----- 4 files changed, 23 insertions(+), 25 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm index 0688f13428..086b098999 100644 --- a/code/modules/mob/living/carbon/human/human_damage.dm +++ b/code/modules/mob/living/carbon/human/human_damage.dm @@ -65,13 +65,13 @@ if (organ_name in organs_by_name) var/datum/organ/external/O = get_organ(organ_name) - + if(amount > 0) O.take_damage(amount, 0, sharp=is_sharp(damage_source), edge=has_edge(damage_source), used_weapon=damage_source) else //if you don't want to heal robot organs, they you will have to check that yourself before using this proc. O.heal_damage(-amount, 0, internal=0, robo_repair=(O.status & ORGAN_ROBOT)) - + hud_updateflag |= 1 << HEALTH_HUD /mob/living/carbon/human/proc/adjustFireLossByPart(var/amount, var/organ_name, var/obj/damage_source = null) @@ -80,13 +80,13 @@ if (organ_name in organs_by_name) var/datum/organ/external/O = get_organ(organ_name) - + if(amount > 0) O.take_damage(0, amount, sharp=is_sharp(damage_source), edge=has_edge(damage_source), used_weapon=damage_source) else //if you don't want to heal robot organs, they you will have to check that yourself before using this proc. O.heal_damage(0, -amount, internal=0, robo_repair=(O.status & ORGAN_ROBOT)) - + hud_updateflag |= 1 << HEALTH_HUD /mob/living/carbon/human/Stun(amount) @@ -302,14 +302,6 @@ This function restores all organs. if(istype(used_weapon,/obj/item/weapon)) var/obj/item/weapon/W = used_weapon //Sharp objects will always embed if they do enough damage. if( (damage > (10*W.w_class)) && ( (sharp && !ismob(W.loc)) || prob(damage/W.w_class) ) ) - organ.implants += W - visible_message("\The [W] sticks in the wound!") - embedded_flag = 1 - src.verbs += /mob/proc/yank_out_object - W.add_blood(src) - if(ismob(W.loc)) - var/mob/living/H = W.loc - H.drop_item() - W.loc = src + organ.embed(W) return 1 diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index a98955d0c8..baa1ebb145 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -98,11 +98,7 @@ emp_act (SP.name) = "[P.name] shrapnel" (SP.desc) = "[SP.desc] It looks like it was fired from [P.shot_from]." (SP.loc) = organ - organ.implants += SP - visible_message("The projectile sticks in the wound!") - embedded_flag = 1 - src.verbs += /mob/proc/yank_out_object - SP.add_blood(src) + organ.embed(SP) return (..(P , def_zone)) @@ -236,7 +232,7 @@ emp_act if ((weapon_sharp || weapon_edge) && prob(getarmor(def_zone, "melee"))) weapon_sharp = 0 weapon_edge = 0 - + if(armor >= 2) return 0 if(!I.force) return 0 @@ -314,4 +310,4 @@ emp_act var/obj/item/clothing/suit/space/SS = wear_suit var/penetrated_dam = max(0,(damage - max(0,(SS.breach_threshold - SS.damage)))) - if(penetrated_dam) SS.create_breaches(damtype, penetrated_dam) + if(penetrated_dam) SS.create_breaches(damtype, penetrated_dam) diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index c51d516715..08d4366383 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -703,6 +703,19 @@ This function completely restores a damaged organ to perfect condition. /datum/organ/external/proc/is_usable() return !(status & (ORGAN_DESTROYED|ORGAN_MUTATED|ORGAN_DEAD)) +/datum/organ/external/proc/embed(var/obj/item/weapon/W, var/silent = 0) + if(!silent) + owner.visible_message("\The [W] sticks in the wound!") + implants += W + owner.embedded_flag = 1 + owner.verbs += /mob/proc/yank_out_object + W.add_blood(owner) + if(ismob(W.loc)) + var/mob/living/H = W.loc + H.drop_item() + W.loc = owner + + /**************************************************** ORGAN DEFINES ****************************************************/ diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm index 61bc359108..6868e8fcdc 100644 --- a/code/modules/reagents/reagent_containers/food/snacks.dm +++ b/code/modules/reagents/reagent_containers/food/snacks.dm @@ -1569,7 +1569,7 @@ surprise.icon_state = "skrellkey1" specie = "neaera" surprise.name = "malformed [specie]" - surprise.desc = "Looks like \a very deformed [specie], a little small for its kind." + surprise.desc = "Looks like \a very deformed [specie], a little small for its kind. It shows no signs of life." surprise.transform *= 0.6 surprise.add_blood(M) @@ -1585,10 +1585,7 @@ E.cavity = 0 else //someone is having a bad day E.createwound(CUT, 30) - E.implants += surprise - H.visible_message("Something that looks like \a [surprise] sticks out of a wound!") - H.embedded_flag = 1 - H.verbs += /mob/proc/yank_out_object + E.embed(surprise) else if (ismonkey(M)) M.visible_message("[M] suddenly tears in half!") surprise.loc = M.loc From 3ff6c418467963d0bcfb44e2385b41e02980c723 Mon Sep 17 00:00:00 2001 From: Chinsky Date: Tue, 24 Jun 2014 04:19:09 +0400 Subject: [PATCH 035/304] Made monkey cube subtypes define what type of monkey they spawn instead of weird switch in Expand(). Rewrote belly expanding accordingly. Also now you get a living monkey from the monkey. --- .../reagent_containers/food/snacks.dm | 59 +++++++------------ 1 file changed, 22 insertions(+), 37 deletions(-) diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm index 6868e8fcdc..5b41fe5641 100644 --- a/code/modules/reagents/reagent_containers/food/snacks.dm +++ b/code/modules/reagents/reagent_containers/food/snacks.dm @@ -1532,7 +1532,7 @@ filling_color = "#ADAC7F" var/wrapped = 0 - var/monkey_type = null + var/monkey_type = /mob/living/carbon/monkey New() ..() @@ -1552,28 +1552,19 @@ On_Consume(var/mob/M) M << "Something inside of you suddently expands!" - //Do not try to understand. - var/obj/item/weapon/surprise = new/obj/item/weapon(M) - surprise.icon = 'icons/mob/monkey.dmi' - surprise.icon_state = "monkey1" - var/specie = "monkey" - if(monkey_type) - switch(monkey_type) - if("tajara") - surprise.icon_state = "tajkey1" - specie = "farwa" - if("unathi") - surprise.icon_state = "stokkey1" - specie = "stok" - if("skrell") - surprise.icon_state = "skrellkey1" - specie = "neaera" - surprise.name = "malformed [specie]" - surprise.desc = "Looks like \a very deformed [specie], a little small for its kind. It shows no signs of life." - surprise.transform *= 0.6 - surprise.add_blood(M) + if (istype(M, /mob/living/carbon/human)) + //Do not try to understand. + var/obj/item/weapon/surprise = new/obj/item/weapon(M) + var/mob/living/carbon/monkey/ook = new monkey_type(null) //no other way to get access to the vars, alas + surprise.icon = ook.icon + surprise.icon_state = ook.icon_state + surprise.name = "malformed [ook.name]" + surprise.desc = "Looks like \a very deformed [ook.name], a little small for its kind. It shows no signs of life." + del(ook) //rip nullspace monkey + surprise.transform *= 0.6 + surprise.add_blood(M) var/mob/living/carbon/human/H = M var/datum/organ/external/E = H.get_organ("chest") E.fracture() @@ -1588,23 +1579,17 @@ E.embed(surprise) else if (ismonkey(M)) M.visible_message("[M] suddenly tears in half!") - surprise.loc = M.loc + var/mob/living/carbon/monkey/ook = new monkey_type(M.loc) + ook.name = "malformed [ook.name]" + ook.transform *= 0.6 + ook.add_blood(M) M.gib() ..() proc/Expand() for(var/mob/M in viewers(src,7)) M << "\red \The [src] expands!" - if(monkey_type) - switch(monkey_type) - if("tajara") - new /mob/living/carbon/monkey/tajara(get_turf(src)) - if("unathi") - new /mob/living/carbon/monkey/unathi(get_turf(src)) - if("skrell") - new /mob/living/carbon/monkey/skrell(get_turf(src)) - else - new /mob/living/carbon/monkey(get_turf(src)) + new monkey_type(src) del(src) proc/Unwrap(mob/user as mob) @@ -1622,18 +1607,18 @@ /obj/item/weapon/reagent_containers/food/snacks/monkeycube/farwacube name = "farwa cube" - monkey_type ="tajara" + monkey_type = /mob/living/carbon/monkey/tajara /obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/farwacube name = "farwa cube" - monkey_type ="tajara" + monkey_type =/mob/living/carbon/monkey/tajara /obj/item/weapon/reagent_containers/food/snacks/monkeycube/stokcube name = "stok cube" - monkey_type ="unathi" + monkey_type = /mob/living/carbon/monkey/unathi /obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/stokcube name = "stok cube" - monkey_type ="unathi" + monkey_type =/mob/living/carbon/monkey/unathi /obj/item/weapon/reagent_containers/food/snacks/monkeycube/neaeracube @@ -1641,7 +1626,7 @@ monkey_type ="skrell" /obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/neaeracube name = "neaera cube" - monkey_type ="skrell" + monkey_type =/mob/living/carbon/monkey/skrell /obj/item/weapon/reagent_containers/food/snacks/spellburger From a5c2af7a57539f1c32eaacc60dce39253918ce38 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Tue, 24 Jun 2014 11:11:02 +0930 Subject: [PATCH 036/304] Shuffling around table and crate knock/climb procs. --- code/game/objects/structures.dm | 81 ++++++++++++++++++- .../structures/crates_lockers/crates.dm | 70 +--------------- code/game/objects/structures/tables_racks.dm | 69 +--------------- 3 files changed, 84 insertions(+), 136 deletions(-) diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm index 594c95b6c8..36d428ec5b 100644 --- a/code/game/objects/structures.dm +++ b/code/game/objects/structures.dm @@ -1,11 +1,12 @@ -obj/structure +/obj/structure icon = 'icons/obj/structures.dmi' + var/climbable -obj/structure/blob_act() +/obj/structure/blob_act() if(prob(50)) del(src) -obj/structure/ex_act(severity) +/obj/structure/ex_act(severity) switch(severity) if(1.0) del(src) @@ -17,12 +18,84 @@ obj/structure/ex_act(severity) if(3.0) return -obj/structure/meteorhit(obj/O as obj) +/obj/structure/meteorhit(obj/O as obj) del(src) +/obj/structure/New() + ..() + if(climbable) + verbs += /obj/structure/proc/do_climb +/obj/structure/proc/do_climb() + set name = "Climb structure" + set desc = "Climbs onto a structure." + set category = "Object" + set src in oview(1) + if (!can_touch(usr) || !climbable) + return + usr.visible_message("[usr] starts climbing onto \the [src]!") + if(!do_after(usr,50)) + return + usr.loc = get_turf(src) + if (get_turf(usr) == get_turf(src)) + usr.visible_message("[usr] climbs onto \the [src]!") + +/obj/structure/proc/structure_shaken() + + for(var/mob/living/M in get_turf(src)) + + if(M.lying) return //No spamming this on people. + + M.Weaken(5) + M << "\red You topple as \the [src] moves under you!" + + if(prob(25)) + + var/damage = rand(15,30) + var/mob/living/carbon/human/H = M + if(!istype(M)) + H << "\red You land heavily!" + M.adjustBruteLoss(damage) + return + + var/datum/organ/external/affecting + + switch(pick(list("ankle","wrist","head","knee","elbow"))) + if("ankle") + affecting = H.get_organ(pick("l_foot", "r_foot")) + if("knee") + affecting = H.get_organ(pick("l_leg", "r_leg")) + if("wrist") + affecting = H.get_organ(pick("l_hand", "r_hand")) + if("elbow") + affecting = H.get_organ(pick("l_arm", "r_arm")) + if("head") + affecting = H.get_organ("head") + + if(affecting) + M << "\red You land heavily on your [affecting.display_name]!" + affecting.take_damage(damage, 0) + if(affecting.parent) + affecting.parent.add_autopsy_data("Misadventure", damage) + else + H << "\red You land heavily!" + H.adjustBruteLoss(damage) + + H.UpdateDamageIcon() + H.updatehealth() + return + +/obj/structure/proc/can_touch(var/mob/user) + if (!user) + return 0 + if (user.stat || user.restrained() || user.paralysis || user.sleeping || user.lying || user.weakened) + return 0 + if (issilicon(user)) + user << "You need hands for this." + return 0 + return 1 \ No newline at end of file diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index 4dca87cf99..802d34e083 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -7,39 +7,10 @@ icon_state = "crate" icon_opened = "crateopen" icon_closed = "crate" + climbable = 1 // mouse_drag_pointer = MOUSE_ACTIVE_POINTER //??? var/rigged = 0 -//Maybe move both of these procs to a root structure somewhere and have a 'climbable' var on structures. -/obj/structure/closet/crate/proc/can_touch(var/mob/user) - if (!user) - return 0 - if (user.stat) //zombie goasts go away - return 0 - if (issilicon(user)) - user << "You need hands for this." - return 0 - return 1 - -/obj/structure/closet/crate/verb/do_climb() - - set name = "Climb crate" - set desc = "Climbs onto a crate." - set category = "Object" - set src in oview(1) - - if (!can_touch(usr)) - return - - usr.visible_message("[usr] starts climbing onto \the [src]!") - - if(!do_after(usr,50)) - return - - usr.loc = get_turf(src) - if (get_turf(usr) == get_turf(src)) - usr.visible_message("[usr] climbs onto \the [src]!") - /obj/structure/closet/crate/can_open() return 1 @@ -67,44 +38,9 @@ icon_state = icon_opened src.opened = 1 - for(var/mob/living/M in get_turf(src)) + if(climbable) + structure_shaken() - if(M.lying) return //No spamming this on people. - - M.Weaken(5) - M << "\red You topple as \the [src] moves under you!" - - if(prob(100)) - - var/mob/living/carbon/human/H = M - if(!istype(M)) - H << "\red You land heavily!" - M.adjustBruteLoss(rand(15,30)) - return - - var/datum/organ/external/affecting - - switch(pick(list("ankle","wrist","head","knee","elbow"))) - if("ankle") - affecting = H.get_organ(pick("l_foot", "r_foot")) - if("knee") - affecting = H.get_organ(pick("l_leg", "r_leg")) - if("wrist") - affecting = H.get_organ(pick("l_hand", "r_hand")) - if("elbow") - affecting = H.get_organ(pick("l_arm", "r_arm")) - if("head") - affecting = H.get_organ("head") - - if(affecting) - M << "\red You land heavily on your [affecting.display_name]!" - affecting.take_damage(rand(15,30), 0) - else - H << "\red You land heavily!" - H.adjustBruteLoss(rand(15,30)) - - H.UpdateDamageIcon() - H.updatehealth() return /obj/structure/closet/crate/close() diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index aac7a2eb26..f0e2b623c7 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -19,6 +19,8 @@ anchored = 1.0 layer = 2.8 throwpass = 1 //You can throw objects over this, despite it's density.") + climbable = 1 + var/parts = /obj/item/weapon/table_parts var/flipped = 0 var/health = 100 @@ -412,34 +414,6 @@ return 0 return T.straight_table_check(direction) -/obj/structure/table/proc/can_touch(var/mob/user) - if (!user) - return 0 - if (user.stat) //zombie goasts go away - return 0 - if (issilicon(user)) - user << "You need hands for this." - return 0 - return 1 - -/obj/structure/table/verb/do_climb() - set name = "Climb table" - set desc = "Climbs onto a table." - set category = "Object" - set src in oview(1) - - if (!can_touch(usr)) - return - - usr.visible_message("[usr] starts climbing onto \the [src]!") - - if(!do_after(usr,50)) - return - - usr.loc = get_turf(src) - if (get_turf(usr) == get_turf(src)) - usr.visible_message("[usr] climbs onto \the [src]!") - /obj/structure/table/verb/do_flip() set name = "Flip table" set desc = "Flips a non-reinforced table" @@ -455,44 +429,9 @@ usr.visible_message("[usr] flips \the [src]!") - for(var/mob/living/M in get_turf(src)) + if(climbable) + structure_shaken() - if(M.lying) return //No spamming this on people. - - M.Weaken(5) - M << "\red You topple as \the [src] moves under you!" - - if(prob(100)) - - var/mob/living/carbon/human/H = M - if(!istype(M)) - H << "\red You land heavily!" - M.adjustBruteLoss(rand(15,30)) - return - - var/datum/organ/external/affecting - - switch(pick(list("ankle","wrist","head","knee","elbow"))) - if("ankle") - affecting = H.get_organ(pick("l_foot", "r_foot")) - if("knee") - affecting = H.get_organ(pick("l_leg", "r_leg")) - if("wrist") - affecting = H.get_organ(pick("l_hand", "r_hand")) - if("elbow") - affecting = H.get_organ(pick("l_arm", "r_arm")) - if("head") - affecting = H.get_organ("head") - - if(affecting) - M << "\red You land heavily on your [affecting.display_name]!" - affecting.take_damage(rand(15,30), 0) - else - H << "\red You land heavily!" - H.adjustBruteLoss(rand(15,30)) - - H.UpdateDamageIcon() - H.updatehealth() return /obj/structure/table/proc/unflipping_check(var/direction) From 14bf0f064c6ac218ca3379e821473fb547981d5c Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Tue, 24 Jun 2014 10:59:08 +0930 Subject: [PATCH 037/304] Removed ability for drones to talk on Binary. --- code/modules/mob/living/silicon/robot/drone/drone.dm | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/code/modules/mob/living/silicon/robot/drone/drone.dm b/code/modules/mob/living/silicon/robot/drone/drone.dm index 485ff99e3b..a20ebf2e21 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone.dm @@ -104,15 +104,8 @@ if(copytext(message,1,2) == "*") return emote(copytext(message,2)) else if(length(message) >= 2) - if(copytext(message, 1 ,3) == ":b" || copytext(message, 1 ,3) == ":B") - if(!is_component_functioning("comms")) - src << "\red Your binary communications component isn't functional." - return - - robot_talk(trim(copytext(message,3))) - - else if(copytext(message, 1 ,3) == ":d" || copytext(message, 1 ,3) == ":D") + if(copytext(message, 1 ,3) == ":d" || copytext(message, 1 ,3) == ":D") if(!is_component_functioning("radio")) src << "\red Your radio transmitter isn't functional." From ef277f1e6b5209e5f22a30d5e75bb4df93b2092f Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Tue, 24 Jun 2014 10:59:57 +0930 Subject: [PATCH 038/304] Added extra bit of info to drone spawn. --- code/modules/mob/living/silicon/robot/drone/drone.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/silicon/robot/drone/drone.dm b/code/modules/mob/living/silicon/robot/drone/drone.dm index a20ebf2e21..26af79a56e 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone.dm @@ -323,7 +323,7 @@ src << "
You are a maintenance drone, a tiny-brained robotic repair machine." src << "You have no individual will, no personality, and no drives or urges other than your laws." src << "Use :b to talk to your fellow synthetics, :d to talk to other drones, and say to speak silently to your nearby fellows." - src << "Remember, you are lawed against interference with the crew." + src << "Remember, you are lawed against interference with the crew. Also remember, you DO NOT take orders from the AI." src << "Don't invade their worksites, don't steal their resources, don't tell them about the changeling in the toilets." src << "If a crewmember has noticed you, you are probably breaking your third law." From e27cdb3620527e2b3b699ac257145d93dbab32b1 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Tue, 24 Jun 2014 11:11:55 +0930 Subject: [PATCH 039/304] Fixes #5323 --- code/modules/mob/living/silicon/robot/drone/drone.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/code/modules/mob/living/silicon/robot/drone/drone.dm b/code/modules/mob/living/silicon/robot/drone/drone.dm index 26af79a56e..08758ae8ce 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone.dm @@ -60,7 +60,6 @@ //Some tidying-up. flavor_text = "It's a tiny little repair drone. The casing is stamped with an NT logo and the subscript: 'NanoTrasen Recursive Repair Systems: Fixing Tomorrow's Problem, Today!'" - updatename() updateicon() //Redefining some robot procs... From 9e0562b16c485d92f1fccc0add65ea6bbedafd57 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 23 Jun 2014 11:57:32 -0400 Subject: [PATCH 040/304] Adds shuttle controller Moves all ferry shuttle processing into one place: the new shuttle controller. Also cleans up the emergency shuttle controller a bit more and fixes multi-shuttle cooldown. --- baystation12.dme | 1 + .../emergency_shuttle_controller.dm | 293 +++++++++++ code/controllers/master_controller.dm | 9 +- code/controllers/shuttle_controller.dm | 481 ++++++++---------- code/controllers/verbs.dm | 6 +- code/game/gamemodes/gameticker.dm | 2 +- code/game/machinery/computer/shuttle.dm | 4 +- code/game/supplyshuttle.dm | 9 - code/modules/admin/topic.dm | 6 +- code/modules/shuttles/shuttle.dm | 206 +------- code/modules/shuttles/shuttle_console.dm | 47 +- code/modules/shuttles/shuttles_multi.dm | 21 +- 12 files changed, 542 insertions(+), 543 deletions(-) create mode 100644 code/controllers/emergency_shuttle_controller.dm diff --git a/baystation12.dme b/baystation12.dme index 2724174e37..1fa1d56c23 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -78,6 +78,7 @@ #include "code\controllers\_DynamicAreaLighting_TG.dm" #include "code\controllers\autotransfer.dm" #include "code\controllers\configuration.dm" +#include "code\controllers\emergency_shuttle_controller.dm" #include "code\controllers\failsafe.dm" #include "code\controllers\hooks-defs.dm" #include "code\controllers\hooks.dm" diff --git a/code/controllers/emergency_shuttle_controller.dm b/code/controllers/emergency_shuttle_controller.dm new file mode 100644 index 0000000000..7b8781b386 --- /dev/null +++ b/code/controllers/emergency_shuttle_controller.dm @@ -0,0 +1,293 @@ +//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 + +// Controls the emergency shuttle + + +// these define the time taken for the shuttle to get to SS13 +// and the time before it leaves again +#define SHUTTLE_PREPTIME 300 // 5 minutes = 300 seconds - after this time, the shuttle cannot be recalled +#define SHUTTLE_LEAVETIME 180 // 3 minutes = 180 seconds - the duration for which the shuttle will wait at the station +#define SHUTTLE_TRANSIT_DURATION 300 // 5 minutes = 300 seconds - how long it takes for the shuttle to get to the station +#define SHUTTLE_TRANSIT_DURATION_RETURN 120 // 2 minutes = 120 seconds - for some reason it takes less time to come back, go figure. + +var/global/datum/emergency_shuttle_controller/emergency_shuttle + +/datum/emergency_shuttle_controller + var/datum/shuttle/ferry/emergency/shuttle + var/list/escape_pods + + var/launch_time //the time at which the shuttle will be launched + var/auto_recall = 0 //if set, the shuttle will be auto-recalled + var/auto_recall_time //the time at which the shuttle will be auto-recalled + var/evac = 0 //1 = emergency evacuation, 0 = crew transfer + var/wait_for_launch = 0 //if the shuttle is waiting to launch + + var/deny_shuttle = 0 //allows admins to prevent the shuttle from being called + var/departed = 0 //if the shuttle has left the station at least once + +/datum/emergency_shuttle_controller/proc/setup_pods() + escape_pods = list() + + var/datum/shuttle/ferry/escape_pod/pod + + pod = new() + pod.location = 0 + pod.warmup_time = 0 + pod.area_station = locate(/area/shuttle/escape_pod1/station) + pod.area_offsite = locate(/area/shuttle/escape_pod1/centcom) + pod.area_transition = locate(/area/shuttle/escape_pod1/transit) + pod.travel_time = SHUTTLE_TRANSIT_DURATION_RETURN + escape_pods += pod + + pod = new() + pod.location = 0 + pod.warmup_time = 0 + pod.area_station = locate(/area/shuttle/escape_pod2/station) + pod.area_offsite = locate(/area/shuttle/escape_pod2/centcom) + pod.area_transition = locate(/area/shuttle/escape_pod2/transit) + pod.travel_time = SHUTTLE_TRANSIT_DURATION_RETURN + escape_pods += pod + + pod = new() + pod.location = 0 + pod.warmup_time = 0 + pod.area_station = locate(/area/shuttle/escape_pod3/station) + pod.area_offsite = locate(/area/shuttle/escape_pod3/centcom) + pod.area_transition = locate(/area/shuttle/escape_pod3/transit) + pod.travel_time = SHUTTLE_TRANSIT_DURATION_RETURN + escape_pods += pod + + //There is no pod 4, apparently. + + pod = new() + pod.location = 0 + pod.warmup_time = 0 + pod.area_station = locate(/area/shuttle/escape_pod5/station) + pod.area_offsite = locate(/area/shuttle/escape_pod5/centcom) + pod.area_transition = locate(/area/shuttle/escape_pod5/transit) + pod.travel_time = SHUTTLE_TRANSIT_DURATION_RETURN + escape_pods += pod + + +/datum/emergency_shuttle_controller/proc/process() + if (wait_for_launch) + if (auto_recall && world.time >= auto_recall_time) + recall() + if (world.time >= launch_time) //time to launch the shuttle + stop_launch_countdown() + + //set the travel time + if (!shuttle.location) //leaving from the station + //launch the pods! + for (var/datum/shuttle/ferry/escape_pod/pod in escape_pods) + pod.launch(src) + + shuttle.travel_time = SHUTTLE_TRANSIT_DURATION_RETURN + else + shuttle.travel_time = SHUTTLE_TRANSIT_DURATION + + shuttle.launch(src) + +//called when the shuttle has arrived. +/datum/emergency_shuttle_controller/proc/shuttle_arrived() + if (!shuttle.location) //at station + set_launch_countdown(SHUTTLE_LEAVETIME) //get ready to return + +//begins the launch countdown and sets the amount of time left until launch +//if the launch countdown has already been set then this may reduce the countdown time, but not extend it +//to reset for a later time, just stop the timer first +/datum/emergency_shuttle_controller/proc/set_launch_countdown(var/seconds) + if (wait_for_launch) + launch_time = min(world.time + seconds*10, launch_time) + else + wait_for_launch = 1 + launch_time = world.time + seconds*10 + +/datum/emergency_shuttle_controller/proc/stop_launch_countdown() + wait_for_launch = 0 + +//calls the shuttle for an emergency evacuation +/datum/emergency_shuttle_controller/proc/call_evac() + if(!can_call()) return + + //set the launch timer + set_launch_countdown(get_shuttle_prep_time()) + auto_recall_time = rand(world.time + 300, launch_time - 300) + + evac = 1 + captain_announce("An emergency evacuation shuttle has been called. It will arrive in approximately [round(estimate_arrival_time()/60)] minutes.") + world << sound('sound/AI/shuttlecalled.ogg') + for(var/area/A in world) + if(istype(A, /area/hallway)) + A.readyalert() + +//calls the shuttle for a routine crew transfer +/datum/emergency_shuttle_controller/proc/call_transfer() + if(!can_call()) return + + //set the launch timer + set_launch_countdown(get_shuttle_prep_time()) + auto_recall_time = rand(world.time + 300, launch_time - 300) + + captain_announce("A crew transfer has been initiated. The shuttle has been called. It will arrive in [round(estimate_arrival_time()/60)] minutes.") + +//recalls the shuttle +/datum/emergency_shuttle_controller/proc/recall() + if (!can_recall()) return + + wait_for_launch = 0 + shuttle.cancel_launch(src) + + if (evac) + captain_announce("The emergency shuttle has been recalled.") + world << sound('sound/AI/shuttlerecalled.ogg') + + for(var/area/A in world) + if(istype(A, /area/hallway)) + A.readyreset() + evac = 0 + else + captain_announce("The scheduled crew transfer has been cancelled.") + +/datum/emergency_shuttle_controller/proc/can_call() + if (deny_shuttle) + return 0 + if (shuttle.moving_status != SHUTTLE_IDLE || !shuttle.location) //must be idle at centcom + return 0 + if (wait_for_launch) //already launching + return 0 + return 1 + +//this only returns 0 if it would absolutely make no sense to recall +//e.g. the shuttle is already at the station or wasn't called to begin with +//other reasons for the shuttle not being recallable should be handled elsewhere +/datum/emergency_shuttle_controller/proc/can_recall() + if (shuttle.moving_status == SHUTTLE_INTRANSIT) //if the shuttle is already in transit then it's too late + return 0 + if (!shuttle.location) //already at the station. + return 0 + if (!wait_for_launch) //we weren't going anywhere, anyways... + return 0 + return 1 + +/datum/emergency_shuttle_controller/proc/get_shuttle_prep_time() + // During mutiny rounds, the shuttle takes twice as long. + if(ticker && istype(ticker.mode,/datum/game_mode/mutiny)) + return SHUTTLE_PREPTIME * 3 //15 minutes + + return SHUTTLE_PREPTIME + + +/* + These procs are not really used by the controller itself, but are for other parts of the + game whose logic depends on the emergency shuttle. +*/ + +//so we don't have emergency_shuttle.shuttle.location everywhere +/datum/emergency_shuttle_controller/proc/location() + if (!shuttle) + return 1 //if we dont have a shuttle datum, just act like it's at centcom + return shuttle.location + +//returns the time left until the shuttle arrives at it's destination, in seconds +/datum/emergency_shuttle_controller/proc/estimate_arrival_time() + var/eta + if (isnull(shuttle.jump_time)) + eta = launch_time + shuttle.travel_time + else + eta = shuttle.jump_time + shuttle.travel_time + return (eta - world.time)/10 + +//returns the time left until the shuttle launches, in seconds +/datum/emergency_shuttle_controller/proc/estimate_launch_time() + return (launch_time - world.time)/10 + +/datum/emergency_shuttle_controller/proc/has_eta() + return (wait_for_launch || shuttle.moving_status != SHUTTLE_IDLE) + +//returns 1 if the shuttle has gone to the station and come back at least once, +//used for game completion checking purposes +/datum/emergency_shuttle_controller/proc/returned() + return (departed && shuttle.moving_status != SHUTTLE_IDLE && shuttle.location) //we've gone to the station at least once, no longer in transit and are idle back at centcom + +//returns 1 if the shuttle is not idle at centcom +/datum/emergency_shuttle_controller/proc/online() + if (!shuttle.location) //not at centcom + return 1 + if (wait_for_launch || shuttle.moving_status != SHUTTLE_IDLE) + return 1 + return 0 + +//returns 1 if the shuttle is currently in transit (or just leaving) to the station +/datum/emergency_shuttle_controller/proc/going_to_station() + return (!shuttle.direction && shuttle.moving_status != SHUTTLE_IDLE) + +//returns 1 if the shuttle is currently in transit (or just leaving) to centcom +/datum/emergency_shuttle_controller/proc/going_to_centcom() + return (shuttle.direction && shuttle.moving_status != SHUTTLE_IDLE) + +//returns 1 if the shuttle is docked at the station and waiting to leave +/datum/emergency_shuttle_controller/proc/waiting_to_leave() + if (shuttle.location) + return 0 //not at station + if (!wait_for_launch) + return 0 //not going anywhere + if (shuttle.moving_status != SHUTTLE_IDLE) + return 0 //shuttle is doing stuff + return 1 + +/* + Some slapped-together star effects for maximum spess immershuns. Basically consists of a + spawner, an ender, and bgstar. Spawners create bgstars, bgstars shoot off into a direction + until they reach a starender. +*/ + +/obj/effect/bgstar + name = "star" + var/speed = 10 + var/direction = SOUTH + layer = 2 // TURF_LAYER + +/obj/effect/bgstar/New() + ..() + pixel_x += rand(-2,30) + pixel_y += rand(-2,30) + var/starnum = pick("1", "1", "1", "2", "3", "4") + + icon_state = "star"+starnum + + speed = rand(2, 5) + +/obj/effect/bgstar/proc/startmove() + + while(src) + sleep(speed) + step(src, direction) + for(var/obj/effect/starender/E in loc) + del(src) + + +/obj/effect/starender + invisibility = 101 + +/obj/effect/starspawner + invisibility = 101 + var/spawndir = SOUTH + var/spawning = 0 + +/obj/effect/starspawner/West + spawndir = WEST + +/obj/effect/starspawner/proc/startspawn() + spawning = 1 + while(spawning) + sleep(rand(2, 30)) + var/obj/effect/bgstar/S = new/obj/effect/bgstar(locate(x,y,z)) + S.direction = spawndir + spawn() + S.startmove() + +#undef SHUTTLE_PREPTIME +#undef SHUTTLE_LEAVETIME +#undef SHUTTLE_TRANSIT_DURATION +#undef SHUTTLE_TRANSIT_DURATION_RETURN \ No newline at end of file diff --git a/code/controllers/master_controller.dm b/code/controllers/master_controller.dm index 77f3adfdbd..1c480fd8d4 100644 --- a/code/controllers/master_controller.dm +++ b/code/controllers/master_controller.dm @@ -52,7 +52,8 @@ datum/controller/game_controller/New() if(!syndicate_code_phrase) syndicate_code_phrase = generate_code_phrase() if(!syndicate_code_response) syndicate_code_response = generate_code_phrase() - if(!emergency_shuttle) emergency_shuttle = new /datum/shuttle_controller/emergency_shuttle() + if(!emergency_shuttle) emergency_shuttle = new /datum/emergency_shuttle_controller() + if(!shuttle_controller) shuttle_controller = new /datum/shuttle_controller() datum/controller/game_controller/proc/setup() world.tick_lag = config.Ticklag @@ -67,9 +68,6 @@ datum/controller/game_controller/proc/setup() if(!ticker) ticker = new /datum/controller/gameticker() - if(!shuttles) setup_shuttles() - shuttle_list = shuttles - setup_objects() setupgenetics() setupfactions() @@ -135,6 +133,7 @@ datum/controller/game_controller/proc/process() vote.process() transfer_controller.process() + shuttle_controller.process() process_newscaster() //AIR @@ -230,7 +229,7 @@ datum/controller/game_controller/proc/process() total_cost = air_cost + sun_cost + mobs_cost + diseases_cost + machines_cost + objects_cost + networks_cost + powernets_cost + nano_cost + events_cost + ticker_cost var/end_time = world.timeofday - if(end_time < start_time) + if(end_time < start_time) //why not just use world.time instead? start_time -= 864000 //deciseconds in a day sleep( round(minimum_ticks - (end_time - start_time),1) ) else diff --git a/code/controllers/shuttle_controller.dm b/code/controllers/shuttle_controller.dm index 11678a7d91..3428ca918c 100644 --- a/code/controllers/shuttle_controller.dm +++ b/code/controllers/shuttle_controller.dm @@ -1,287 +1,220 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 -// Controls the emergency shuttle +var/global/datum/shuttle_controller/shuttle_controller -// these define the time taken for the shuttle to get to SS13 -// and the time before it leaves again -#define SHUTTLE_PREPTIME 300 // 5 minutes = 300 seconds - after this time, the shuttle cannot be recalled -#define SHUTTLE_LEAVETIME 180 // 3 minutes = 180 seconds - the duration for which the shuttle will wait at the station -#define SHUTTLE_TRANSIT_DURATION 300 // 5 minutes = 300 seconds - how long it takes for the shuttle to get to the station -#define SHUTTLE_TRANSIT_DURATION_RETURN 120 // 2 minutes = 120 seconds - for some reason it takes less time to come back, go figure. +/datum/shuttle_controller + var/list/shuttles //maps shuttle tags to shuttle datums, so that they can be looked up. + var/list/process_shuttles //simple list of shuttles, for processing -var/global/datum/shuttle_controller/emergency_shuttle/emergency_shuttle +/datum/shuttle_controller/proc/process() + //process ferry shuttles + for (var/datum/shuttle/ferry/shuttle in process_shuttles) + if (shuttle.in_use) + shuttle.process() -/datum/shuttle_controller/emergency_shuttle - var/datum/shuttle/ferry/emergency/shuttle - var/list/escape_pods + +/datum/shuttle_controller/New() + shuttles = list() + process_shuttles = list() + + var/datum/shuttle/ferry/shuttle - var/launch_time //the time at which the shuttle will be launched - var/auto_recall = 0 //if set, the shuttle will be auto-recalled - var/auto_recall_time //the time at which the shuttle will be auto-recalled - var/evac = 0 //1 = emergency evacuation, 0 = crew transfer - var/wait_for_launch = 0 //if the shuttle is waiting to launch + // Escape shuttle and pods + shuttle = new/datum/shuttle/ferry/emergency() + shuttle.location = 1 + shuttle.warmup_time = 10 + shuttle.area_offsite = locate(/area/shuttle/escape/centcom) + shuttle.area_station = locate(/area/shuttle/escape/station) + shuttle.area_transition = locate(/area/shuttle/escape/transit) + shuttle.travel_time = 300 + //shuttle.docking_controller_tag = "supply_shuttle" + //shuttle.dock_target_station = "cargo_bay" + shuttles["Escape"] = shuttle + process_shuttles += shuttle - var/deny_shuttle = 0 //allows admins to prevent the shuttle from being called - var/departed = 0 //if the shuttle has left the station at least once - -/datum/shuttle_controller/emergency_shuttle/proc/setup_pods() - escape_pods = list() + //give the emergency shuttle controller it's shuttle + emergency_shuttle.shuttle = shuttle + emergency_shuttle.setup_pods() + process_shuttles += emergency_shuttle.escape_pods - var/datum/shuttle/ferry/escape_pod/pod + // Supply shuttle + shuttle = new/datum/shuttle/ferry/supply() + shuttle.location = 1 + shuttle.warmup_time = 10 + shuttle.area_offsite = locate(/area/supply/dock) + shuttle.area_station = locate(/area/supply/station) + shuttle.docking_controller_tag = "supply_shuttle" + shuttle.dock_target_station = "cargo_bay" + shuttles["Supply"] = shuttle + process_shuttles += shuttle - pod = new() - pod.location = 0 - pod.warmup_time = 0 - pod.area_station = locate(/area/shuttle/escape_pod1/station) - pod.area_offsite = locate(/area/shuttle/escape_pod1/centcom) - pod.area_transition = locate(/area/shuttle/escape_pod1/transit) - pod.travel_time = SHUTTLE_TRANSIT_DURATION_RETURN - escape_pods += pod + supply_controller.shuttle = shuttle - pod = new() - pod.location = 0 - pod.warmup_time = 0 - pod.area_station = locate(/area/shuttle/escape_pod2/station) - pod.area_offsite = locate(/area/shuttle/escape_pod2/centcom) - pod.area_transition = locate(/area/shuttle/escape_pod2/transit) - pod.travel_time = SHUTTLE_TRANSIT_DURATION_RETURN - escape_pods += pod + // Admin shuttles. + shuttle = new() + shuttle.location = 1 + shuttle.warmup_time = 10 + shuttle.area_offsite = locate(/area/shuttle/transport1/centcom) + shuttle.area_station = locate(/area/shuttle/transport1/station) + shuttle.docking_controller_tag = "centcom_shuttle" + shuttle.dock_target_station = "centcom_shuttle_dock_airlock" + shuttle.dock_target_offsite = "centcom_shuttle_bay" + shuttles["Centcom"] = shuttle + process_shuttles += shuttle + + shuttle = new() + shuttle.location = 1 + shuttle.warmup_time = 10 //want some warmup time so people can cancel. + shuttle.area_offsite = locate(/area/shuttle/administration/centcom) + shuttle.area_station = locate(/area/shuttle/administration/station) + shuttle.docking_controller_tag = "admin_shuttle" + shuttle.dock_target_station = "admin_shuttle_dock_airlock" + shuttle.dock_target_offsite = "admin_shuttle_bay" + shuttles["Administration"] = shuttle + process_shuttles += shuttle + + shuttle = new() + shuttle.area_offsite = locate(/area/shuttle/alien/base) + shuttle.area_station = locate(/area/shuttle/alien/mine) + shuttles["Alien"] = shuttle + //process_shuttles += shuttle //don't need to process this. It can only be moved using admin magic anyways. + + // Public shuttles + shuttle = new() + shuttle.location = 1 + shuttle.warmup_time = 10 + shuttle.area_offsite = locate(/area/shuttle/constructionsite/site) + shuttle.area_station = locate(/area/shuttle/constructionsite/station) + shuttle.docking_controller_tag = "engineering_shuttle" + shuttle.dock_target_station = "engineering_dock_airlock" + shuttle.dock_target_offsite = "engineering_station_airlock" + shuttles["Engineering"] = shuttle + process_shuttles += shuttle + + shuttle = new() + shuttle.warmup_time = 10 + shuttle.area_offsite = locate(/area/shuttle/mining/outpost) + shuttle.area_station = locate(/area/shuttle/mining/station) + shuttle.docking_controller_tag = "mining_shuttle" + shuttle.dock_target_station = "mining_dock_airlock" + shuttle.dock_target_offsite = "mining_outpost_airlock" + shuttles["Mining"] = shuttle + process_shuttles += shuttle + + shuttle = new() + shuttle.warmup_time = 10 + shuttle.area_offsite = locate(/area/shuttle/research/outpost) + shuttle.area_station = locate(/area/shuttle/research/station) + shuttle.docking_controller_tag = "research_shuttle" + shuttle.dock_target_station = "research_dock_airlock" + shuttle.dock_target_offsite = "research_outpost_dock" + shuttles["Research"] = shuttle + process_shuttles += shuttle + + // ERT Shuttle + var/datum/shuttle/ferry/multidock/specops/ERT = new() + ERT.location = 0 + ERT.warmup_time = 10 + ERT.area_offsite = locate(/area/shuttle/specops/station) //centcom is the home station, the Exodus is offsite + ERT.area_station = locate(/area/shuttle/specops/centcom) + ERT.docking_controller_tag = "specops_shuttle_port" + ERT.docking_controller_tag_station = "specops_shuttle_port" + ERT.docking_controller_tag_offsite = "specops_shuttle_fore" + ERT.dock_target_station = "specops_centcom_dock" + ERT.dock_target_offsite = "specops_dock_airlock" + shuttles["Special Operations"] = ERT + process_shuttles += ERT + + //Vox Shuttle. + var/datum/shuttle/multi_shuttle/VS = new/datum/shuttle/multi_shuttle() + VS.origin = /area/shuttle/vox/station + + VS.destinations = list( + "Fore Starboard Solars" = /area/vox_station/northeast_solars, + "Fore Port Solars" = /area/vox_station/northwest_solars, + "Aft Starboard Solars" = /area/vox_station/southeast_solars, + "Aft Port Solars" = /area/vox_station/southwest_solars, + "Mining asteroid" = /area/vox_station/mining + ) + + VS.announcer = "NSV Icarus" + VS.arrival_message = "Attention, Exodus, we just tracked a small target bypassing our defensive perimeter. Can't fire on it without hitting the station - you've got incoming visitors, like it or not." + VS.departure_message = "Your guests are pulling away, Exodus - moving too fast for us to draw a bead on them. Looks like they're heading out of the system at a rapid clip." + VS.interim = /area/vox_station/transit + + VS.warmup_time = 10 + shuttles["Vox Skipjack"] = VS + + //Nuke Ops shuttle. + var/datum/shuttle/multi_shuttle/MS = new/datum/shuttle/multi_shuttle() + MS.origin = /area/syndicate_station/start + + MS.destinations = list( + "Northwest of the station" = /area/syndicate_station/northwest, + "North of the station" = /area/syndicate_station/north, + "Northeast of the station" = /area/syndicate_station/northeast, + "Southwest of the station" = /area/syndicate_station/southwest, + "South of the station" = /area/syndicate_station/south, + "Southeast of the station" = /area/syndicate_station/southeast, + "Telecomms Satellite" = /area/syndicate_station/commssat, + "Mining Asteroid" = /area/syndicate_station/mining + ) + + MS.announcer = "NSV Icarus" + MS.arrival_message = "Attention, Exodus, you have a large signature approaching the station - looks unarmed to surface scans. We're too far out to intercept - brace for visitors." + MS.departure_message = "Your visitors are on their way out of the system, Exodus, burning delta-v like it's nothing. Good riddance." + MS.interim = /area/syndicate_station/transit + + MS.warmup_time = 10 + shuttles["Syndicate"] = MS + + +//This is called by gameticker after all the machines and radio frequencies have been properly initialized +/datum/shuttle_controller/proc/setup_shuttle_docks() + var/datum/shuttle/shuttle + var/datum/shuttle/ferry/multidock/multidock + var/list/dock_controller_map = list() //so we only have to iterate once through each list - pod = new() - pod.location = 0 - pod.warmup_time = 0 - pod.area_station = locate(/area/shuttle/escape_pod3/station) - pod.area_offsite = locate(/area/shuttle/escape_pod3/centcom) - pod.area_transition = locate(/area/shuttle/escape_pod3/transit) - pod.travel_time = SHUTTLE_TRANSIT_DURATION_RETURN - escape_pods += pod + //multidock shuttles + var/list/dock_controller_map_station = list() + var/list/dock_controller_map_offsite = list() + + for (var/shuttle_tag in shuttles) + shuttle = shuttles[shuttle_tag] + if (shuttle.docking_controller_tag) + dock_controller_map[shuttle.docking_controller_tag] = shuttle + if (istype(shuttle, /datum/shuttle/ferry/multidock)) + multidock = shuttle + dock_controller_map_station[multidock.docking_controller_tag_station] = multidock + dock_controller_map_offsite[multidock.docking_controller_tag_offsite] = multidock + + //search for the controllers, if we have one. + if (dock_controller_map.len) + for (var/obj/machinery/embedded_controller/radio/C in machines) //only radio controllers are supported at the moment + if (istype(C.program, /datum/computer/file/embedded_program/docking)) + if (C.id_tag in dock_controller_map) + shuttle = dock_controller_map[C.id_tag] + shuttle.docking_controller = C.program + dock_controller_map -= C.id_tag + if (C.id_tag in dock_controller_map_station) + multidock = dock_controller_map_station[C.id_tag] + if (istype(multidock)) + multidock.docking_controller_station = C.program + dock_controller_map_station -= C.id_tag + if (C.id_tag in dock_controller_map_offsite) + multidock = dock_controller_map_offsite[C.id_tag] + if (istype(multidock)) + multidock.docking_controller_offsite = C.program + dock_controller_map_offsite -= C.id_tag - //There is no pod 4, apparently. + //sanity check + if (dock_controller_map.len || dock_controller_map_station.len || dock_controller_map_offsite.len) + var/dat = "" + for (var/dock_tag in dock_controller_map + dock_controller_map_station + dock_controller_map_offsite) + dat += "\"[dock_tag]\", " + world << "/red /b warning: shuttles with docking tags [dat] could not find their controllers!" - pod = new() - pod.location = 0 - pod.warmup_time = 0 - pod.area_station = locate(/area/shuttle/escape_pod5/station) - pod.area_offsite = locate(/area/shuttle/escape_pod5/centcom) - pod.area_transition = locate(/area/shuttle/escape_pod5/transit) - pod.travel_time = SHUTTLE_TRANSIT_DURATION_RETURN - escape_pods += pod - - -/datum/shuttle_controller/emergency_shuttle/proc/process() - if (wait_for_launch) - if (auto_recall && world.time >= auto_recall_time) - recall() - if (world.time >= launch_time) //time to launch the shuttle - wait_for_launch = 0 - - //set the travel time - if (!shuttle.location) //leaving from the station - //launch the pods! - for (var/datum/shuttle/ferry/escape_pod/pod in escape_pods) - pod.launch(src) - - shuttle.travel_time = SHUTTLE_TRANSIT_DURATION_RETURN - else - shuttle.travel_time = SHUTTLE_TRANSIT_DURATION - - shuttle.launch(src) - - //process the shuttles - if (shuttle.in_use) - shuttle.process_shuttle() - for (var/datum/shuttle/ferry/escape_pod/pod in escape_pods) - if (pod.in_use) - pod.process_shuttle() - -//called when the shuttle has arrived. -/datum/shuttle_controller/emergency_shuttle/proc/shuttle_arrived() - if (!shuttle.location) //at station - launch_time = world.time + SHUTTLE_LEAVETIME*10 - wait_for_launch = 1 //get ready to return - -//so we don't have emergency_shuttle.shuttle.location everywhere -/datum/shuttle_controller/emergency_shuttle/proc/location() - if (!shuttle) - return 1 //if we dont have a shuttle datum, just act like it's at centcom - return shuttle.location - -//calls the shuttle for an emergency evacuation -/datum/shuttle_controller/emergency_shuttle/proc/call_evac() - if(!can_call()) return - - //set the launch timer - launch_time = world.time + get_shuttle_prep_time()*10 - auto_recall_time = rand(world.time + 300, launch_time - 300) - wait_for_launch = 1 - - evac = 1 - captain_announce("An emergency evacuation shuttle has been called. It will arrive in approximately [round(estimate_arrival_time()/60)] minutes.") - world << sound('sound/AI/shuttlecalled.ogg') - for(var/area/A in world) - if(istype(A, /area/hallway)) - A.readyalert() - -//calls the shuttle for a routine crew transfer -/datum/shuttle_controller/emergency_shuttle/proc/call_transfer() - if(!can_call()) return - - //set the launch timer - launch_time = world.time + get_shuttle_prep_time() - auto_recall_time = rand(world.time + 300, launch_time - 300) - wait_for_launch = 1 - - captain_announce("A crew transfer has been initiated. The shuttle has been called. It will arrive in [round(estimate_arrival_time()/60)] minutes.") - -//recalls the shuttle -/datum/shuttle_controller/emergency_shuttle/proc/recall() - if (!can_recall()) return - - wait_for_launch = 0 - shuttle.cancel_launch(src) - - if (evac) - captain_announce("The emergency shuttle has been recalled.") - world << sound('sound/AI/shuttlerecalled.ogg') - - for(var/area/A in world) - if(istype(A, /area/hallway)) - A.readyreset() - evac = 0 - else - captain_announce("The scheduled crew transfer has been cancelled.") - -/datum/shuttle_controller/emergency_shuttle/proc/can_call() - if (deny_shuttle) - return 0 - if (shuttle.moving_status != SHUTTLE_IDLE || !shuttle.location) //must be idle at centcom - return 0 - if (wait_for_launch) //already launching - return 0 - return 1 - -//this only returns 0 if it would absolutely make no sense to recall -//e.g. the shuttle is already at the station or wasn't called to begin with -//other reasons for the shuttle not being recallable should be handled elsewhere -/datum/shuttle_controller/emergency_shuttle/proc/can_recall() - if (shuttle.moving_status == SHUTTLE_INTRANSIT) //if the shuttle is already in transit then it's too late - return 0 - if (!shuttle.location) //already at the station. - return 0 - if (!wait_for_launch) //we weren't going anywhere, anyways... - return 0 - return 1 - -/datum/shuttle_controller/emergency_shuttle/proc/get_shuttle_prep_time() - // During mutiny rounds, the shuttle takes twice as long. - if(ticker && istype(ticker.mode,/datum/game_mode/mutiny)) - return SHUTTLE_PREPTIME * 3 //15 minutes - - return SHUTTLE_PREPTIME - - -/* - These procs are not really used by the controller itself, but are for other parts of the - game whose logic depends on the emergency shuttle. -*/ - -//returns the time left until the shuttle arrives at it's destination, in seconds -/datum/shuttle_controller/emergency_shuttle/proc/estimate_arrival_time() - var/eta - if (isnull(shuttle.jump_time)) - eta = launch_time + shuttle.travel_time - else - eta = shuttle.jump_time + shuttle.travel_time - return (eta - world.time)/10 - -//returns the time left until the shuttle launches, in seconds -/datum/shuttle_controller/emergency_shuttle/proc/estimate_launch_time() - return (launch_time - world.time)/10 - -/datum/shuttle_controller/emergency_shuttle/proc/has_eta() - return (wait_for_launch || shuttle.moving_status != SHUTTLE_IDLE) - -//returns 1 if the shuttle has gone to the station and come back at least once, -//used for game completion checking purposes -/datum/shuttle_controller/emergency_shuttle/proc/returned() - return (departed && shuttle.moving_status != SHUTTLE_IDLE && shuttle.location) //we've gone to the station at least once, no longer in transit and are idle back at centcom - -//returns 1 if the shuttle is not idle at centcom -/datum/shuttle_controller/emergency_shuttle/proc/online() - if (!shuttle.location) //not at centcom - return 1 - if (wait_for_launch || shuttle.moving_status != SHUTTLE_IDLE) - return 1 - return 0 - -//returns 1 if the shuttle is currently in transit (or just leaving) to the station -/datum/shuttle_controller/emergency_shuttle/proc/going_to_station() - return (!shuttle.direction && shuttle.moving_status != SHUTTLE_IDLE) - -//returns 1 if the shuttle is currently in transit (or just leaving) to centcom -/datum/shuttle_controller/emergency_shuttle/proc/going_to_centcom() - return (shuttle.direction && shuttle.moving_status != SHUTTLE_IDLE) - -//returns 1 if the shuttle is docked at the station and waiting to leave -/datum/shuttle_controller/emergency_shuttle/proc/waiting_to_leave() - if (shuttle.location) - return 0 //not at station - if (!wait_for_launch) - return 0 //not going anywhere - if (shuttle.moving_status != SHUTTLE_IDLE) - return 0 //shuttle is doing stuff - return 1 - -/* - Some slapped-together star effects for maximum spess immershuns. Basically consists of a - spawner, an ender, and bgstar. Spawners create bgstars, bgstars shoot off into a direction - until they reach a starender. -*/ - -/obj/effect/bgstar - name = "star" - var/speed = 10 - var/direction = SOUTH - layer = 2 // TURF_LAYER - -/obj/effect/bgstar/New() - ..() - pixel_x += rand(-2,30) - pixel_y += rand(-2,30) - var/starnum = pick("1", "1", "1", "2", "3", "4") - - icon_state = "star"+starnum - - speed = rand(2, 5) - -/obj/effect/bgstar/proc/startmove() - - while(src) - sleep(speed) - step(src, direction) - for(var/obj/effect/starender/E in loc) - del(src) - - -/obj/effect/starender - invisibility = 101 - -/obj/effect/starspawner - invisibility = 101 - var/spawndir = SOUTH - var/spawning = 0 - -/obj/effect/starspawner/West - spawndir = WEST - -/obj/effect/starspawner/proc/startspawn() - spawning = 1 - while(spawning) - sleep(rand(2, 30)) - var/obj/effect/bgstar/S = new/obj/effect/bgstar(locate(x,y,z)) - S.direction = spawndir - spawn() - S.startmove() - - + //makes all shuttles docked to something at round start go into the docked state + for (var/shuttle_tag in shuttles) + shuttle = shuttles[shuttle_tag] + shuttle.dock() diff --git a/code/controllers/verbs.dm b/code/controllers/verbs.dm index 491a1b2c43..e8785482a9 100644 --- a/code/controllers/verbs.dm +++ b/code/controllers/verbs.dm @@ -27,8 +27,7 @@ message_admins("Admin [key_name_admin(usr)] has restarted the [controller] controller.") return - -/client/proc/debug_controller(controller in list("Master","Failsafe","Ticker","Lighting","Air","Jobs","Sun","Radio","Supply","Emergency Shuttle","Configuration","pAI", "Cameras", "Transfer Controller")) +/client/proc/debug_controller(controller in list("Master","Failsafe","Ticker","Lighting","Air","Jobs","Sun","Radio","Supply","Shuttles","Emergency Shuttle","Configuration","pAI", "Cameras", "Transfer Controller")) set category = "Debug" set name = "Debug Controller" set desc = "Debug the various periodic loop controllers for the game (be careful!)" @@ -62,6 +61,9 @@ if("Supply") debug_variables(supply_controller) feedback_add_details("admin_verb","DSupply") + if("Shuttles") + debug_variables(shuttle_controller) + feedback_add_details("admin_verb","DShuttles") if("Emergency Shuttle") debug_variables(emergency_shuttle) feedback_add_details("admin_verb","DEmergency") diff --git a/code/game/gamemodes/gameticker.dm b/code/game/gamemodes/gameticker.dm index f53a09313c..0c8a7aa8bd 100644 --- a/code/game/gamemodes/gameticker.dm +++ b/code/game/gamemodes/gameticker.dm @@ -130,7 +130,7 @@ var/global/datum/controller/gameticker/ticker //here to initialize the random events nicely at round start setup_economy() - setup_shuttle_docks() + shuttle_controller.setup_shuttle_docks() spawn(0)//Forking here so we dont have to wait for this to finish mode.post_setup() diff --git a/code/game/machinery/computer/shuttle.dm b/code/game/machinery/computer/shuttle.dm index 9d8b1da6f9..b8b25b3e34 100644 --- a/code/game/machinery/computer/shuttle.dm +++ b/code/game/machinery/computer/shuttle.dm @@ -41,7 +41,7 @@ message_admins("[key_name_admin(user)] has launched the shuttle") log_game("[user.ckey] has launched the shuttle early") world << "\blue Alert: Shuttle launch time shortened to 10 seconds!" - emergency_shuttle.launch_time = min(world.time + 100, emergency_shuttle.launch_time) + emergency_shuttle.set_launch_countdown(10) //src.authorized = null del(src.authorized) src.authorized = list( ) @@ -62,7 +62,7 @@ switch(choice) if("Launch") world << "\blue Alert: Shuttle launch time shortened to 10 seconds!" - emergency_shuttle.launch_time = min(world.time + 100, emergency_shuttle.launch_time) + emergency_shuttle.set_launch_countdown(10) emagged = 1 if("Cancel") return diff --git a/code/game/supplyshuttle.dm b/code/game/supplyshuttle.dm index e2dfe3b442..ef6dbf2c5f 100644 --- a/code/game/supplyshuttle.dm +++ b/code/game/supplyshuttle.dm @@ -162,15 +162,6 @@ var/list/mechtoys = list( points += points_per_process sleep(processing_interval) - - spawn(0) - set background = 1 - while(1) - if(processing) - if (shuttle.in_use) - shuttle.process_shuttle() - - sleep(10) //To stop things being sent to centcomm which should not be sent to centcomm. Recursively checks for these types. proc/forbidden_atoms_check(atom/A) diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index dcbbf837b2..653a2a8e7f 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1924,15 +1924,15 @@ if("moveshuttle") - if(!shuttles) return // Something is very wrong, the global shuttle list has not been created. + if(!shuttle_controller) return // Something is very wrong, the shuttle controller has not been created. feedback_inc("admin_secrets_fun_used",1) feedback_add_details("admin_secrets_fun_used","ShA") - var/shuttle_tag = input("Which shuttle do you want to call?") as null|anything in shuttles + var/shuttle_tag = input("Which shuttle do you want to call?") as null|anything in shuttle_controller.shuttles if(shuttle_tag) - var/datum/shuttle/S = shuttles[shuttle_tag] + var/datum/shuttle/S = shuttle_controller.shuttles[shuttle_tag] if(istype(S) && S.moving_status == 0) S.move() message_admins("\blue [key_name_admin(usr)] moved the [shuttle_tag] shuttle", 1) diff --git a/code/modules/shuttles/shuttle.dm b/code/modules/shuttles/shuttle.dm index 3d6e421f5b..5a4394142f 100644 --- a/code/modules/shuttles/shuttle.dm +++ b/code/modules/shuttles/shuttle.dm @@ -3,14 +3,12 @@ //shuttle moving state defines are in setup.dm -var/global/list/shuttles - /datum/shuttle var/warmup_time = 0 - var/moving_status = SHUTTLE_IDLE //prevents people from doing things they shouldn't when the shuttle is in transit + var/moving_status = SHUTTLE_IDLE var/docking_controller_tag //tag of the controller used to coordinate docking - var/datum/computer/file/embedded_program/docking/docking_controller //the controller itself + var/datum/computer/file/embedded_program/docking/docking_controller //the controller itself. (micro-controller, not game controller) /datum/shuttle/proc/short_jump(var/area/origin,var/area/destination) if(moving_status != SHUTTLE_IDLE) return @@ -35,7 +33,7 @@ var/global/list/shuttles move(locate(departing),locate(interim)) - sleep(travel_time) + sleep(travel_time*10) move(locate(interim),locate(destination)) @@ -116,200 +114,4 @@ var/global/list/shuttles if(!M.buckled) M.Weaken(3) - return - - - -/proc/setup_shuttles() - shuttles = list() - - var/datum/shuttle/ferry/shuttle - - // Escape shuttle and pods - shuttle = new/datum/shuttle/ferry/emergency() - shuttle.location = 1 - shuttle.warmup_time = 10 - shuttle.area_offsite = locate(/area/shuttle/escape/centcom) - shuttle.area_station = locate(/area/shuttle/escape/station) - shuttle.area_transition = locate(/area/shuttle/escape/transit) - shuttle.travel_time = SHUTTLE_TRANSIT_DURATION - //shuttle.docking_controller_tag = "supply_shuttle" - //shuttle.dock_target_station = "cargo_bay" - shuttles["Escape"] = shuttle - - emergency_shuttle.shuttle = shuttle - emergency_shuttle.setup_pods() - - // Supply shuttle - shuttle = new/datum/shuttle/ferry/supply() - shuttle.location = 1 - shuttle.warmup_time = 10 - shuttle.area_offsite = locate(/area/supply/dock) - shuttle.area_station = locate(/area/supply/station) - shuttle.docking_controller_tag = "supply_shuttle" - shuttle.dock_target_station = "cargo_bay" - shuttles["Supply"] = shuttle - - supply_controller.shuttle = shuttle - - // Admin shuttles. - shuttle = new() - shuttle.location = 1 - shuttle.warmup_time = 10 - shuttle.area_offsite = locate(/area/shuttle/transport1/centcom) - shuttle.area_station = locate(/area/shuttle/transport1/station) - shuttle.docking_controller_tag = "centcom_shuttle" - shuttle.dock_target_station = "centcom_shuttle_dock_airlock" - shuttle.dock_target_offsite = "centcom_shuttle_bay" - shuttles["Centcom"] = shuttle - - shuttle = new() - shuttle.location = 1 - shuttle.warmup_time = 10 //want some warmup time so people can cancel. - shuttle.area_offsite = locate(/area/shuttle/administration/centcom) - shuttle.area_station = locate(/area/shuttle/administration/station) - shuttle.docking_controller_tag = "admin_shuttle" - shuttle.dock_target_station = "admin_shuttle_dock_airlock" - shuttle.dock_target_offsite = "admin_shuttle_bay" - shuttles["Administration"] = shuttle - - shuttle = new() - shuttle.area_offsite = locate(/area/shuttle/alien/base) - shuttle.area_station = locate(/area/shuttle/alien/mine) - shuttles["Alien"] = shuttle - - // Public shuttles - shuttle = new() - shuttle.location = 1 - shuttle.warmup_time = 10 - shuttle.area_offsite = locate(/area/shuttle/constructionsite/site) - shuttle.area_station = locate(/area/shuttle/constructionsite/station) - shuttle.docking_controller_tag = "engineering_shuttle" - shuttle.dock_target_station = "engineering_dock_airlock" - shuttle.dock_target_offsite = "engineering_station_airlock" - shuttles["Engineering"] = shuttle - - shuttle = new() - shuttle.warmup_time = 10 - shuttle.area_offsite = locate(/area/shuttle/mining/outpost) - shuttle.area_station = locate(/area/shuttle/mining/station) - shuttle.docking_controller_tag = "mining_shuttle" - shuttle.dock_target_station = "mining_dock_airlock" - shuttle.dock_target_offsite = "mining_outpost_airlock" - shuttles["Mining"] = shuttle - - shuttle = new() - shuttle.warmup_time = 10 - shuttle.area_offsite = locate(/area/shuttle/research/outpost) - shuttle.area_station = locate(/area/shuttle/research/station) - shuttle.docking_controller_tag = "research_shuttle" - shuttle.dock_target_station = "research_dock_airlock" - shuttle.dock_target_offsite = "research_outpost_dock" - shuttles["Research"] = shuttle - - // ERT Shuttle - var/datum/shuttle/ferry/multidock/specops/ERT = new() - ERT.location = 0 - ERT.warmup_time = 10 - ERT.area_offsite = locate(/area/shuttle/specops/station) //centcom is the home station, the Exodus is offsite - ERT.area_station = locate(/area/shuttle/specops/centcom) - ERT.docking_controller_tag = "specops_shuttle_port" - ERT.docking_controller_tag_station = "specops_shuttle_port" - ERT.docking_controller_tag_offsite = "specops_shuttle_fore" - ERT.dock_target_station = "specops_centcom_dock" - ERT.dock_target_offsite = "specops_dock_airlock" - shuttles["Special Operations"] = ERT - - //Vox Shuttle. - var/datum/shuttle/multi_shuttle/VS = new/datum/shuttle/multi_shuttle() - VS.origin = /area/shuttle/vox/station - - VS.destinations = list( - "Fore Starboard Solars" = /area/vox_station/northeast_solars, - "Fore Port Solars" = /area/vox_station/northwest_solars, - "Aft Starboard Solars" = /area/vox_station/southeast_solars, - "Aft Port Solars" = /area/vox_station/southwest_solars, - "Mining asteroid" = /area/vox_station/mining - ) - - VS.announcer = "NSV Icarus" - VS.arrival_message = "Attention, Exodus, we just tracked a small target bypassing our defensive perimeter. Can't fire on it without hitting the station - you've got incoming visitors, like it or not." - VS.departure_message = "Your guests are pulling away, Exodus - moving too fast for us to draw a bead on them. Looks like they're heading out of the system at a rapid clip." - VS.interim = /area/vox_station/transit - - VS.warmup_time = 10 - shuttles["Vox Skipjack"] = VS - - //Nuke Ops shuttle. - var/datum/shuttle/multi_shuttle/MS = new/datum/shuttle/multi_shuttle() - MS.origin = /area/syndicate_station/start - - MS.destinations = list( - "Northwest of the station" = /area/syndicate_station/northwest, - "North of the station" = /area/syndicate_station/north, - "Northeast of the station" = /area/syndicate_station/northeast, - "Southwest of the station" = /area/syndicate_station/southwest, - "South of the station" = /area/syndicate_station/south, - "Southeast of the station" = /area/syndicate_station/southeast, - "Telecomms Satellite" = /area/syndicate_station/commssat, - "Mining Asteroid" = /area/syndicate_station/mining - ) - - MS.announcer = "NSV Icarus" - MS.arrival_message = "Attention, Exodus, you have a large signature approaching the station - looks unarmed to surface scans. We're too far out to intercept - brace for visitors." - MS.departure_message = "Your visitors are on their way out of the system, Exodus, burning delta-v like it's nothing. Good riddance." - MS.interim = /area/syndicate_station/transit - - MS.warmup_time = 10 - shuttles["Syndicate"] = MS - - -/proc/setup_shuttle_docks() - var/datum/shuttle/shuttle - var/datum/shuttle/ferry/multidock/multidock - var/list/dock_controller_map = list() //so we only have to iterate once through each list - - //multidock shuttles - var/list/dock_controller_map_station = list() - var/list/dock_controller_map_offsite = list() - - for (var/shuttle_tag in shuttles) - shuttle = shuttles[shuttle_tag] - if (shuttle.docking_controller_tag) - dock_controller_map[shuttle.docking_controller_tag] = shuttle - if (istype(shuttle, /datum/shuttle/ferry/multidock)) - multidock = shuttle - dock_controller_map_station[multidock.docking_controller_tag_station] = multidock - dock_controller_map_offsite[multidock.docking_controller_tag_offsite] = multidock - - //search for the controllers, if we have one. - if (dock_controller_map.len) - for (var/obj/machinery/embedded_controller/radio/C in machines) //only radio controllers are supported at the moment - if (istype(C.program, /datum/computer/file/embedded_program/docking)) - if (C.id_tag in dock_controller_map) - shuttle = dock_controller_map[C.id_tag] - shuttle.docking_controller = C.program - dock_controller_map -= C.id_tag - if (C.id_tag in dock_controller_map_station) - multidock = dock_controller_map_station[C.id_tag] - if (istype(multidock)) - multidock.docking_controller_station = C.program - dock_controller_map_station -= C.id_tag - if (C.id_tag in dock_controller_map_offsite) - multidock = dock_controller_map_offsite[C.id_tag] - if (istype(multidock)) - multidock.docking_controller_offsite = C.program - dock_controller_map_offsite -= C.id_tag - - //sanity check - if (dock_controller_map.len || dock_controller_map_station.len || dock_controller_map_offsite.len) - var/dat = "" - for (var/dock_tag in dock_controller_map + dock_controller_map_station + dock_controller_map_offsite) - dat += "\"[dock_tag]\", " - world << "/red /b warning: shuttles with docking tags [dat] could not find their controllers!" - - //makes all shuttles docked to something at round start go into the docked state - for (var/shuttle_tag in shuttles) - shuttle = shuttles[shuttle_tag] - shuttle.dock() - \ No newline at end of file + return \ No newline at end of file diff --git a/code/modules/shuttles/shuttle_console.dm b/code/modules/shuttles/shuttle_console.dm index e1ae517a4c..6dc1e5c9d3 100644 --- a/code/modules/shuttles/shuttle_console.dm +++ b/code/modules/shuttles/shuttle_console.dm @@ -9,8 +9,7 @@ var/direction = 0 //0 = going to station, 1 = going to offsite. var/process_state = IDLE_STATE - //this mutex ensures that only one console is processing the shuttle's controls at a time - var/obj/machinery/computer/shuttle_control/in_use = null //this doesn't have to be a console... + var/in_use = null //tells the controller whether this shuttle needs processing var/area_transition var/travel_time = 0 @@ -68,7 +67,7 @@ return area_station return area_offsite -/datum/shuttle/ferry/proc/process_shuttle() +/datum/shuttle/ferry/proc/process() switch(process_state) if (WAIT_LAUNCH) if (skip_docking_checks() || docking_controller.can_launch()) @@ -98,7 +97,7 @@ return dock_target -/datum/shuttle/ferry/proc/launch(var/obj/machinery/computer/shuttle_control/user) +/datum/shuttle/ferry/proc/launch(var/user) if (!can_launch()) return in_use = user //obtain an exclusive lock on the shuttle @@ -106,12 +105,15 @@ process_state = WAIT_LAUNCH undock() -/datum/shuttle/ferry/proc/force_launch(var/obj/machinery/computer/shuttle_control/user) +/datum/shuttle/ferry/proc/force_launch(var/user) if (!can_force()) return in_use = user //obtain an exclusive lock on the shuttle - short_jump() + if (travel_time && area_transition) + long_jump(null, null, area_transition, travel_time) + else + short_jump() process_state = WAIT_ARRIVE @@ -166,27 +168,6 @@ var/launch_override = 0 - -//TODO move this stuff into the shuttle datum itself, instead of manipulating the shuttle's members -/obj/machinery/computer/shuttle_control/process() - if (!shuttles || !(shuttle_tag in shuttles)) - return - - var/datum/shuttle/ferry/shuttle = shuttles[shuttle_tag] - if (!istype(shuttle)) - return - - if (shuttle.in_use == src) - shuttle.process_shuttle() - -/obj/machinery/computer/shuttle_control/Del() - var/datum/shuttle/ferry/shuttle = shuttles[shuttle_tag] - if (!istype(shuttle)) - return - - if (shuttle.in_use == src) - shuttle.in_use = null //shuttle may not dock properly if this gets deleted while in transit, but its not a big deal - /obj/machinery/computer/shuttle_control/attack_hand(user as mob) if(..(user)) return @@ -196,7 +177,7 @@ /obj/machinery/computer/shuttle_control/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null) var/data[0] - var/datum/shuttle/ferry/shuttle = shuttles[shuttle_tag] + var/datum/shuttle/ferry/shuttle = shuttle_controller.shuttles[shuttle_tag] if (!istype(shuttle)) return @@ -241,7 +222,6 @@ ui.open() ui.set_auto_update(1) -//TODO: Canceling launches, dock overrides using the console, forcing dock/undock /obj/machinery/computer/shuttle_control/Topic(href, href_list) if(..()) return @@ -249,7 +229,7 @@ usr.set_machine(src) src.add_fingerprint(usr) - var/datum/shuttle/ferry/shuttle = shuttles[shuttle_tag] + var/datum/shuttle/ferry/shuttle = shuttle_controller.shuttles[shuttle_tag] if (!istype(shuttle)) return @@ -260,11 +240,11 @@ else if(href_list["cancel"]) shuttle.cancel_launch() - /obj/machinery/computer/shuttle_control/attackby(obj/item/weapon/W as obj, mob/user as mob) if (istype(W, /obj/item/weapon/card/emag)) src.req_access = list() + src.req_one_access = list() hacked = 1 usr << "You short out the console's ID checking system. It's now available to everyone!" else @@ -273,8 +253,3 @@ /obj/machinery/computer/shuttle_control/bullet_act(var/obj/item/projectile/Proj) visible_message("[Proj] ricochets off [src]!") -#undef IDLE_STATE -#undef WAIT_LAUNCH -#undef WAIT_ARRIVE -#undef WAIT_FINISH - diff --git a/code/modules/shuttles/shuttles_multi.dm b/code/modules/shuttles/shuttles_multi.dm index f553600715..4b737cd2cf 100644 --- a/code/modules/shuttles/shuttles_multi.dm +++ b/code/modules/shuttles/shuttles_multi.dm @@ -4,8 +4,8 @@ var/cloaked = 1 var/at_origin = 1 var/move_time = 240 - var/cooldown = 200 - var/last_move = 0 + var/cooldown = 20 + var/last_move = 0 //the time at which we last moved var/announcer var/arrival_message @@ -21,6 +21,10 @@ ..() if(origin) last_departed = origin +/datum/shuttle/multi_shuttle/move() + ..() + last_move = world.time + /datum/shuttle/multi_shuttle/proc/announce_departure() if(cloaked || isnull(departure_message)) @@ -44,7 +48,7 @@ return src.add_fingerprint(user) - var/datum/shuttle/multi_shuttle/MS = shuttles[shuttle_tag] + var/datum/shuttle/multi_shuttle/MS = shuttle_controller.shuttles[shuttle_tag] if(!istype(MS)) return var/dat @@ -57,7 +61,7 @@ var/area/areacheck = get_area(src) dat += "Location: [areacheck.name]
" - if((MS.last_move + MS.cooldown) > world.time) + if((MS.last_move + MS.cooldown*10) > world.time) dat += "Engines charging.
" else dat += "Engines ready.
" @@ -76,17 +80,13 @@ usr.set_machine(src) src.add_fingerprint(usr) - var/datum/shuttle/multi_shuttle/MS = shuttles[shuttle_tag] + var/datum/shuttle/multi_shuttle/MS = shuttle_controller.shuttles[shuttle_tag] if(!istype(MS)) return if (MS.moving_status != SHUTTLE_IDLE) usr << "\blue [shuttle_tag] vessel is moving." return - if((MS.last_move + MS.cooldown) > world.time) - usr << "\red The ship is inoperable while the engines are charging." - return - if(href_list["start"]) if(MS.at_origin) @@ -109,6 +109,9 @@ usr << "\red Ship stealth systems have been [(MS.cloaked ? "activated. The station will not" : "deactivated. The station will")] be warned of our arrival." if(href_list["move_multi"]) + if((MS.last_move + MS.cooldown) > world.time) + usr << "\red The ship's drive is inoperable while the engines are charging." + return var/choice = input("Select a destination.") as null|anything in MS.destinations if(!choice) return From e17b8bffab68f4455c4ede6de9ce50b6449f77f4 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 23 Jun 2014 21:49:10 -0400 Subject: [PATCH 041/304] Replaces the emergency shuttle control console Replaces the old emergency shuttle control console with a nice new NanoUI one. Improves the NanoUI for the docking controllers. --- .../emergency_shuttle_controller.dm | 37 ++- code/controllers/shuttle_controller.dm | 34 +-- .../airlock_docking_controller.dm | 1 + code/modules/shuttles/shuttle_console.dm | 10 +- code/modules/shuttles/shuttle_emergency.dm | 215 +++++++++++++++++- maps/tgstation2.dmm | 2 +- nano/templates/docking_airlock_console.tmpl | 25 +- .../escape_shuttle_control_console.tmpl | 80 +++++++ nano/templates/simple_docking_console.tmpl | 4 +- 9 files changed, 346 insertions(+), 62 deletions(-) create mode 100644 nano/templates/escape_shuttle_control_console.tmpl diff --git a/code/controllers/emergency_shuttle_controller.dm b/code/controllers/emergency_shuttle_controller.dm index 7b8781b386..71d0cea0b9 100644 --- a/code/controllers/emergency_shuttle_controller.dm +++ b/code/controllers/emergency_shuttle_controller.dm @@ -21,6 +21,7 @@ var/global/datum/emergency_shuttle_controller/emergency_shuttle var/auto_recall_time //the time at which the shuttle will be auto-recalled var/evac = 0 //1 = emergency evacuation, 0 = crew transfer var/wait_for_launch = 0 //if the shuttle is waiting to launch + var/autopilot = 1 //set to 0 to disable the shuttle automatically launching var/deny_shuttle = 0 //allows admins to prevent the shuttle from being called var/departed = 0 //if the shuttle has left the station at least once @@ -76,32 +77,23 @@ var/global/datum/emergency_shuttle_controller/emergency_shuttle if (world.time >= launch_time) //time to launch the shuttle stop_launch_countdown() - //set the travel time if (!shuttle.location) //leaving from the station //launch the pods! for (var/datum/shuttle/ferry/escape_pod/pod in escape_pods) pod.launch(src) - - shuttle.travel_time = SHUTTLE_TRANSIT_DURATION_RETURN - else - shuttle.travel_time = SHUTTLE_TRANSIT_DURATION - shuttle.launch(src) + if(autopilot) + shuttle.launch(src) //called when the shuttle has arrived. /datum/emergency_shuttle_controller/proc/shuttle_arrived() - if (!shuttle.location) //at station + if (!shuttle.location && autopilot) //at station set_launch_countdown(SHUTTLE_LEAVETIME) //get ready to return //begins the launch countdown and sets the amount of time left until launch -//if the launch countdown has already been set then this may reduce the countdown time, but not extend it -//to reset for a later time, just stop the timer first /datum/emergency_shuttle_controller/proc/set_launch_countdown(var/seconds) - if (wait_for_launch) - launch_time = min(world.time + seconds*10, launch_time) - else - wait_for_launch = 1 - launch_time = world.time + seconds*10 + wait_for_launch = 1 + launch_time = world.time + seconds*10 /datum/emergency_shuttle_controller/proc/stop_launch_countdown() wait_for_launch = 0 @@ -111,6 +103,7 @@ var/global/datum/emergency_shuttle_controller/emergency_shuttle if(!can_call()) return //set the launch timer + autopilot = 1 set_launch_countdown(get_shuttle_prep_time()) auto_recall_time = rand(world.time + 300, launch_time - 300) @@ -126,10 +119,11 @@ var/global/datum/emergency_shuttle_controller/emergency_shuttle if(!can_call()) return //set the launch timer + autopilot = 1 set_launch_countdown(get_shuttle_prep_time()) auto_recall_time = rand(world.time + 300, launch_time - 300) - captain_announce("A crew transfer has been initiated. The shuttle has been called. It will arrive in [round(estimate_arrival_time()/60)] minutes.") + captain_announce("A crew transfer has been initiated. The shuttle has been called. It will arrive in approximately [round(estimate_arrival_time()/60)] minutes.") //recalls the shuttle /datum/emergency_shuttle_controller/proc/recall() @@ -192,10 +186,10 @@ var/global/datum/emergency_shuttle_controller/emergency_shuttle //returns the time left until the shuttle arrives at it's destination, in seconds /datum/emergency_shuttle_controller/proc/estimate_arrival_time() var/eta - if (isnull(shuttle.jump_time)) - eta = launch_time + shuttle.travel_time + if (isnull(shuttle.last_move_time)) + eta = launch_time + shuttle.travel_time*10 else - eta = shuttle.jump_time + shuttle.travel_time + eta = shuttle.last_move_time + shuttle.travel_time*10 return (eta - world.time)/10 //returns the time left until the shuttle launches, in seconds @@ -285,9 +279,4 @@ var/global/datum/emergency_shuttle_controller/emergency_shuttle var/obj/effect/bgstar/S = new/obj/effect/bgstar(locate(x,y,z)) S.direction = spawndir spawn() - S.startmove() - -#undef SHUTTLE_PREPTIME -#undef SHUTTLE_LEAVETIME -#undef SHUTTLE_TRANSIT_DURATION -#undef SHUTTLE_TRANSIT_DURATION_RETURN \ No newline at end of file + S.startmove() \ No newline at end of file diff --git a/code/controllers/shuttle_controller.dm b/code/controllers/shuttle_controller.dm index 3428ca918c..b0d05ea202 100644 --- a/code/controllers/shuttle_controller.dm +++ b/code/controllers/shuttle_controller.dm @@ -130,19 +130,19 @@ var/global/datum/shuttle_controller/shuttle_controller VS.origin = /area/shuttle/vox/station VS.destinations = list( - "Fore Starboard Solars" = /area/vox_station/northeast_solars, - "Fore Port Solars" = /area/vox_station/northwest_solars, - "Aft Starboard Solars" = /area/vox_station/southeast_solars, - "Aft Port Solars" = /area/vox_station/southwest_solars, - "Mining asteroid" = /area/vox_station/mining + "Fore Starboard Solars" = locate(/area/vox_station/northeast_solars), + "Fore Port Solars" = locate(/area/vox_station/northwest_solars), + "Aft Starboard Solars" = locate(/area/vox_station/southeast_solars), + "Aft Port Solars" = locate(/area/vox_station/southwest_solars), + "Mining asteroid" = locate(/area/vox_station/mining) ) VS.announcer = "NSV Icarus" VS.arrival_message = "Attention, Exodus, we just tracked a small target bypassing our defensive perimeter. Can't fire on it without hitting the station - you've got incoming visitors, like it or not." VS.departure_message = "Your guests are pulling away, Exodus - moving too fast for us to draw a bead on them. Looks like they're heading out of the system at a rapid clip." - VS.interim = /area/vox_station/transit + VS.interim = locate(/area/vox_station/transit) - VS.warmup_time = 10 + VS.warmup_time = 0 shuttles["Vox Skipjack"] = VS //Nuke Ops shuttle. @@ -150,22 +150,22 @@ var/global/datum/shuttle_controller/shuttle_controller MS.origin = /area/syndicate_station/start MS.destinations = list( - "Northwest of the station" = /area/syndicate_station/northwest, - "North of the station" = /area/syndicate_station/north, - "Northeast of the station" = /area/syndicate_station/northeast, - "Southwest of the station" = /area/syndicate_station/southwest, - "South of the station" = /area/syndicate_station/south, - "Southeast of the station" = /area/syndicate_station/southeast, - "Telecomms Satellite" = /area/syndicate_station/commssat, - "Mining Asteroid" = /area/syndicate_station/mining + "Northwest of the station" = locate(/area/syndicate_station/northwest), + "North of the station" = locate(/area/syndicate_station/north), + "Northeast of the station" = locate(/area/syndicate_station/northeast), + "Southwest of the station" = locate(/area/syndicate_station/southwest), + "South of the station" = locate(/area/syndicate_station/south), + "Southeast of the station" = locate(/area/syndicate_station/southeast), + "Telecomms Satellite" = locate(/area/syndicate_station/commssat), + "Mining Asteroid" = locate(/area/syndicate_station/mining) ) MS.announcer = "NSV Icarus" MS.arrival_message = "Attention, Exodus, you have a large signature approaching the station - looks unarmed to surface scans. We're too far out to intercept - brace for visitors." MS.departure_message = "Your visitors are on their way out of the system, Exodus, burning delta-v like it's nothing. Good riddance." - MS.interim = /area/syndicate_station/transit + MS.interim = locate(/area/syndicate_station/transit) - MS.warmup_time = 10 + MS.warmup_time = 0 shuttles["Syndicate"] = MS diff --git a/code/game/machinery/embedded_controller/airlock_docking_controller.dm b/code/game/machinery/embedded_controller/airlock_docking_controller.dm index 69db042b7e..0e9877d797 100644 --- a/code/game/machinery/embedded_controller/airlock_docking_controller.dm +++ b/code/game/machinery/embedded_controller/airlock_docking_controller.dm @@ -21,6 +21,7 @@ "processing" = airlock_program.memory["processing"], "docking_status" = docking_program.get_docking_status(), "airlock_disabled" = !(docking_program.undocked() || docking_program.override_enabled), + "override_enabled" = docking_program.override_enabled, ) ui = nanomanager.try_update_ui(user, src, ui_key, ui, data) diff --git a/code/modules/shuttles/shuttle_console.dm b/code/modules/shuttles/shuttle_console.dm index 6dc1e5c9d3..18f242bd5c 100644 --- a/code/modules/shuttles/shuttle_console.dm +++ b/code/modules/shuttles/shuttle_console.dm @@ -57,7 +57,7 @@ if (destination == area_station) location = 0 if (destination == area_offsite) location = 1 - //if this is a long_jump retain the location we were last at until we get to the new one + //if this is a long_jump retain the location we were last at until we get to the new one /datum/shuttle/ferry/proc/get_location_area(location_id = null) if (isnull(location_id)) @@ -73,7 +73,7 @@ if (skip_docking_checks() || docking_controller.can_launch()) if (travel_time && area_transition) - long_jump(null, null, area_transition, travel_time) + long_jump(interim=area_transition, travel_time=travel_time) else short_jump() @@ -115,9 +115,10 @@ else short_jump() + process_state = WAIT_ARRIVE -/datum/shuttle/ferry/proc/cancel_launch(var/obj/machinery/computer/shuttle_control/user) +/datum/shuttle/ferry/proc/cancel_launch(var/user) if (!can_cancel()) return moving_status = SHUTTLE_IDLE @@ -165,7 +166,6 @@ var/shuttle_tag // Used to coordinate data in shuttle controller. var/hacked = 0 // Has been emagged, no access restrictions. - var/launch_override = 0 /obj/machinery/computer/shuttle_control/attack_hand(user as mob) @@ -238,7 +238,7 @@ if(href_list["force"]) shuttle.force_launch(src) else if(href_list["cancel"]) - shuttle.cancel_launch() + shuttle.cancel_launch(src) /obj/machinery/computer/shuttle_control/attackby(obj/item/weapon/W as obj, mob/user as mob) diff --git a/code/modules/shuttles/shuttle_emergency.dm b/code/modules/shuttles/shuttle_emergency.dm index b03734507d..93854c94e1 100644 --- a/code/modules/shuttles/shuttle_emergency.dm +++ b/code/modules/shuttles/shuttle_emergency.dm @@ -1,22 +1,227 @@ - /datum/shuttle/ferry/emergency - var/jump_time = null //the time at which the shuttle last jumped. Used for ETAs + var/last_move_time = null //the time at which the shuttle last moved. Used for ETAs /datum/shuttle/ferry/emergency/arrived() emergency_shuttle.shuttle_arrived() +/datum/shuttle/ferry/emergency/long_jump(var/area/departing,var/area/destination,var/area/interim,var/travel_time) + if (!location) + travel_time = SHUTTLE_TRANSIT_DURATION_RETURN + else + travel_time = SHUTTLE_TRANSIT_DURATION + ..() + +/* +/area/shuttle/escape/centcom/verb/shuttle_long_jump(var/area/A as area, var/area/B as area, var/area/I as area, var/travel_time as num) + set category = "Debug" + //set src in world + var/datum/shuttle/ferry/emergency/E = shuttle_controller.shuttles["Escape"] + E.long_jump(A, B, I, travel_time) + +/area/shuttle/escape/centcom/verb/shuttle_move(var/area/A as area, var/area/B as area) + set category = "Debug" + //set src in world + var/datum/shuttle/ferry/emergency/E = shuttle_controller.shuttles["Escape"] + E.long_jump(A, B) +*/ + /datum/shuttle/ferry/emergency/move(var/area/origin,var/area/destination) if (destination == area_transition) - jump_time = world.time + last_move_time = world.time else - jump_time = null + last_move_time = null if (!location) //leaving the station emergency_shuttle.departed = 1 captain_announce("The Emergency Shuttle has left the station. Estimate [round(emergency_shuttle.estimate_arrival_time()/60,1)] minutes until the shuttle docks at Central Command.") ..(origin, destination) +/datum/shuttle/ferry/emergency/launch(var/user) + if (!can_launch()) return + + if (istype(user, /obj/machinery/computer/shuttle_control/emergency)) //if we were given a command by an emergency shuttle console + var/obj/machinery/computer/shuttle_control/emergency/C = user + if (!C.has_authorization()) + return + + if (emergency_shuttle.autopilot) + emergency_shuttle.autopilot = 0 + world << "\blue Alert: The shuttle autopilot has been overridden. Launch sequence initiated!" + + ..(user) + +/datum/shuttle/ferry/emergency/force_launch(var/user) + if (!can_force()) return + + if (istype(user, /obj/machinery/computer/shuttle_control/emergency)) //if we were given a command by an emergency shuttle console + var/obj/machinery/computer/shuttle_control/emergency/C = user + if (!C.has_authorization()) + return + + if (emergency_shuttle.autopilot) + emergency_shuttle.autopilot = 0 + world << "\blue Alert: The shuttle autopilot has been overridden. Bluespace drive engaged!" + + ..(user) + +/datum/shuttle/ferry/emergency/cancel_launch(var/user) + if (!can_cancel()) return + + if (istype(user, /obj/machinery/computer/shuttle_control/emergency)) //if we were given a command by an emergency shuttle console + var/obj/machinery/computer/shuttle_control/emergency/C = user + if (!C.has_authorization()) + return + + if (emergency_shuttle.autopilot) + emergency_shuttle.autopilot = 0 + world << "\blue Alert: The shuttle autopilot has been overridden. Launch sequence aborted!" + + ..(user) + +/obj/machinery/computer/shuttle_control/emergency + shuttle_tag = "Escape" + var/debug = 0 + var/req_authorizations = 3 + var/list/authorized = list() + +/obj/machinery/computer/shuttle_control/emergency/proc/has_authorization() + return (authorized.len >= req_authorizations || emagged) + +//returns 1 if the ID was accepted and a new authorization was added, 0 otherwise +/obj/machinery/computer/shuttle_control/emergency/proc/read_authorization(var/ident) + if (authorized.len >= req_authorizations) + return 0 //don't need any more + + var/list/access + var/auth_name + var/dna_hash + + if(istype(ident, /obj/item/weapon/card/id)) + var/obj/item/weapon/card/id/ID = ident + access = ID.access + auth_name = "[ID.registered_name] ([ID.assignment])" + dna_hash = ID.dna_hash + + if(istype(ident, /obj/item/device/pda)) + var/obj/item/device/pda/PDA = ident + access = PDA.id.access + auth_name = "[PDA.id.registered_name] ([PDA.id.assignment])" + dna_hash = PDA.id.dna_hash + + if (!access || !istype(access)) + return 0 //not an ID + + if (dna_hash in authorized) + src.visible_message("[src] buzzes. That ID has already been scanned.") + return 0 + + if (!(access_heads in access)) + src.visible_message("[src] buzzes, rejecting [ident].") + return 0 + + src.visible_message("[src] beeps as it scans [ident].") + authorized[dna_hash] = auth_name + if (req_authorizations - authorized.len) + world << "\blue Alert: [req_authorizations - authorized.len] authorization\s needed override the shuttle autopilot." + return 1 + + + + +/obj/machinery/computer/shuttle_control/emergency/attackby(obj/item/weapon/W as obj, mob/user as mob) + if (istype(W, /obj/item/weapon/card/emag) && !emagged) + user << "\blue You short out the [src]'s authorization protocols." + emagged = 1 + return + + read_authorization(W) + ..() + +/obj/machinery/computer/shuttle_control/emergency/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null) + var/data[0] + var/datum/shuttle/ferry/emergency/shuttle = shuttle_controller.shuttles[shuttle_tag] + if (!istype(shuttle)) + return + + var/shuttle_state + switch(shuttle.moving_status) + if(SHUTTLE_IDLE) shuttle_state = "idle" + if(SHUTTLE_WARMUP) shuttle_state = "warmup" + if(SHUTTLE_INTRANSIT) shuttle_state = "in_transit" + + var/shuttle_status + switch (shuttle.process_state) + if(IDLE_STATE) + if (shuttle.in_use) + shuttle_status = "Busy." + else if (!shuttle.location) + shuttle_status = "Standing-by at [station_name]." + else + shuttle_status = "Standing-by at Central Command." + if(WAIT_LAUNCH) + shuttle_status = "Shuttle has recieved command and will depart shortly." + if(WAIT_ARRIVE) + shuttle_status = "Proceeding to destination." + if(WAIT_FINISH) + shuttle_status = "Arriving at destination now." + + //build a list of authorizations + var/list/auth_list[req_authorizations] + + if (!emagged) + var/i = 1 + for (var/dna_hash in authorized) + auth_list[i++] = list("auth_name"=authorized[dna_hash], "auth_hash"=dna_hash) + + while (i <= req_authorizations) //for some reason dream maker gives warnings if you use for(; i <= req_authorizations; i++) here. + auth_list[i++] = list("auth_name"="", "auth_hash"=-1) + else + for (var/i = 1; i <= req_authorizations; i++) + auth_list[i] = list("auth_name"="ERROR", "auth_hash"=-1) + + var/has_auth = has_authorization() + + data = list( + "shuttle_status" = shuttle_status, + "shuttle_state" = shuttle_state, + "has_docking" = shuttle.docking_controller? 1 : 0, + "docking_status" = shuttle.docking_controller? shuttle.docking_controller.get_docking_status() : null, + "docking_override" = shuttle.docking_controller? shuttle.docking_controller.override_enabled : null, + "can_launch" = shuttle.can_launch() && has_auth, + "can_cancel" = shuttle.can_cancel() && has_auth, + "can_force" = shuttle.can_force() && has_auth, + "auth_list" = auth_list, + "has_auth" = has_auth, + "user" = debug? user : null, + ) + + ui = nanomanager.try_update_ui(user, src, ui_key, ui, data) + + if (!ui) + ui = new(user, src, ui_key, "escape_shuttle_control_console.tmpl", "Shuttle Control", 470, 380) + ui.set_initial_data(data) + ui.open() + ui.set_auto_update(1) + +/obj/machinery/computer/shuttle_control/emergency/Topic(href, href_list) + if(..()) + return + + if(href_list["auth"]) + if (!emagged && href_list["auth"] == -1) + //They selected an empty entry. Try to scan their id. + if (ishuman(usr)) + var/mob/living/carbon/human/H = usr + if (!read_authorization(H.get_active_hand())) //try to read what's in their hand first + read_authorization(H.wear_id) + else + //remove the authorization + var/dna_hash = href_list["auth"] + authorized -= dna_hash + + + /datum/shuttle/ferry/escape_pod //pass @@ -42,4 +247,4 @@ for(var/obj/machinery/door/D in destination) spawn(0) - D.open() \ No newline at end of file + D.open() diff --git a/maps/tgstation2.dmm b/maps/tgstation2.dmm index 89d11b60da..8134b4404d 100644 --- a/maps/tgstation2.dmm +++ b/maps/tgstation2.dmm @@ -7525,7 +7525,7 @@ "cOK" = (/turf/unsimulated/beach/sand{tag = "icon-seashallow"; icon_state = "seashallow"},/area/centcom/ferry) "cOL" = (/obj/machinery/air_sensor{frequency = 1441; id_tag = "engine_sensor"; output = 63},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/engine/engine_room) "cOM" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) -"cON" = (/obj/machinery/computer/shuttle,/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) +"cON" = (/obj/machinery/computer/shuttle_control/emergency,/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) "cOO" = (/turf/unsimulated/beach/sand{tag = "icon-beachcorner"; icon_state = "beachcorner"},/area/centcom/ferry) "cOP" = (/turf/unsimulated/beach/sand{tag = "icon-beach (SOUTHEAST)"; icon_state = "beach"; dir = 6},/area/centcom/ferry) "cOQ" = (/obj/structure/shuttle/engine/propulsion{icon_state = "burst_r"; dir = 4},/turf/space,/area/shuttle/specops/centcom) diff --git a/nano/templates/docking_airlock_console.tmpl b/nano/templates/docking_airlock_console.tmpl index abc263a5a6..b19d13a3a6 100644 --- a/nano/templates/docking_airlock_console.tmpl +++ b/nano/templates/docking_airlock_console.tmpl @@ -5,42 +5,51 @@ {{if docking_status == "docked"}}
- {{if airlock_disabled}} + {{if !override_enabled}} DOCKED {{else}} DOCKED-OVERRIDE ENABLED {{/if}} - {{:~link('Override', 'alert', {'command' : 'toggle_override'}, null, airlock_disabled ? null : 'redBackground')}} + {{:~link('Override', 'alert', {'command' : 'toggle_override'}, null, override_enabled ? 'redBackground' : null)}}
{{else docking_status == "docking"}}
- {{if airlock_disabled}} + {{if !override_enabled}} DOCKING {{else}} DOCKING-OVERRIDE ENABLED {{/if}} - {{:~link('Override', 'alert', {'command' : 'toggle_override'}, null, airlock_disabled ? null : 'redBackground')}} + {{:~link('Override', 'alert', {'command' : 'toggle_override'}, null, override_enabled ? 'redBackground' : null)}}
{{else docking_status == "undocking"}}
- {{if airlock_disabled}} + {{if !override_enabled}} UNDOCKING {{else}} UNDOCKING-OVERRIDE ENABLED {{/if}} - {{:~link('Override', 'alert', {'command' : 'toggle_override'}, null, airlock_disabled ? null : 'redBackground')}} + {{:~link('Override', 'alert', {'command' : 'toggle_override'}, null, override_enabled ? 'redBackground' : null)}}
{{else docking_status == "undocked"}} - NOT IN USE +
+ {{if !override_enabled}} + NOT IN USE + {{else}} + OVERRIDE ENABLED + {{/if}} + + {{:~link('Override', 'alert', {'command' : 'toggle_override'}, null, override_enabled ? 'redBackground' : null)}} + +
{{else}} ERROR - {{:~link('Override', 'alert', {'command' : 'toggle_override'}, null, airlock_disabled ? null : 'redBackground')}} + {{:~link('Override', 'alert', {'command' : 'toggle_override'}, null, override_enabled ? 'redBackground' : null)}} {{/if}} diff --git a/nano/templates/escape_shuttle_control_console.tmpl b/nano/templates/escape_shuttle_control_console.tmpl new file mode 100644 index 0000000000..ad2d682ade --- /dev/null +++ b/nano/templates/escape_shuttle_control_console.tmpl @@ -0,0 +1,80 @@ +

Shuttle Status

+
+
+ {{:shuttle_status}} +
+
+
+
+
+ Bluespace Drive: +
+
+ {{if shuttle_state == "idle"}} + IDLE + {{else shuttle_state == "warmup"}} + SPINNING UP + {{else shuttle_state == "in_transit"}} + ENGAGED + {{else}} + ERROR + {{/if}} +
+
+
+{{if has_docking}} +
+
+
+ Docking Status: +
+
+ {{if docking_status == "docked"}} + DOCKED + {{else docking_status == "docking"}} + {{if !docking_override}} + DOCKING + {{else}} + DOCKING-MANUAL + {{/if}} + {{else docking_status == "undocking"}} + {{if !docking_override}} + UNDOCKING + {{else}} + UNDOCKING-MANUAL + {{/if}} + {{else docking_status == "undocked"}} + UNDOCKED + {{else}} + ERROR + {{/if}} +
+
+
+{{/if}} +

Shuttle Authorization

+
+
+ {{if has_auth}} + Access Granted. Shuttle controls unlocked. + {{else}} + Additional authorization required. + {{/if}} +
+
+
+ {{for auth_list}} + {{:~link(auth_name, 'eject', {'auth' : auth_hash}, null, 'itemContentWide')}} + {{/for}} +
+ +

Shuttle Control

+
+
+
+ {{:~link('Launch Shuttle', 'arrowthickstop-1-e', {'move' : '1'}, can_launch? null : 'disabled' , null)}} + {{:~link('Cancel Launch', 'cancel', {'cancel' : '1'}, can_cancel? null : 'disabled' , null)}} + {{:~link('Force Launch', 'alert', {'force' : '1'}, can_force? null : 'disabled' , can_force? 'redBackground' : null)}} +
+
+
\ No newline at end of file diff --git a/nano/templates/simple_docking_console.tmpl b/nano/templates/simple_docking_console.tmpl index 5b6cc6d1e1..7d941bea37 100644 --- a/nano/templates/simple_docking_console.tmpl +++ b/nano/templates/simple_docking_console.tmpl @@ -24,9 +24,9 @@ {{/if}} {{else docking_status == "undocked"}} {{if !override_enabled}} - UNDOCKED + NOT IN USE {{else}} - UNDOCKED-OVERRIDE ENABLED + OVERRIDE ENABLED {{/if}} {{else}} ERROR From 4cc0d6b6ee866f4716edd9d035e3ec5a23473007 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Tue, 24 Jun 2014 11:35:08 +0930 Subject: [PATCH 042/304] Fixes #5339 --- code/modules/paperwork/paper_bundle.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/modules/paperwork/paper_bundle.dm b/code/modules/paperwork/paper_bundle.dm index da9a3e150e..0143b595ad 100644 --- a/code/modules/paperwork/paper_bundle.dm +++ b/code/modules/paperwork/paper_bundle.dm @@ -61,7 +61,10 @@ usr << browse("", "window=[name]") //Closes the dialog P = src[page] P.attackby(W, user) + + update_icon() + attack_self(usr) //Update the browsed page. add_fingerprint(usr) return From ebacf05acf413e5d904514f734e49f96d195fcc4 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 23 Jun 2014 21:53:17 -0400 Subject: [PATCH 043/304] Fixes escape shuttle not transitioning --- code/modules/shuttles/shuttle.dm | 6 +++--- code/modules/shuttles/shuttle_supply.dm | 2 +- code/modules/shuttles/shuttles_multi.dm | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/code/modules/shuttles/shuttle.dm b/code/modules/shuttles/shuttle.dm index 5a4394142f..6ad36cd8a2 100644 --- a/code/modules/shuttles/shuttle.dm +++ b/code/modules/shuttles/shuttle.dm @@ -31,11 +31,11 @@ if (moving_status == SHUTTLE_IDLE) return //someone cancelled the launch - move(locate(departing),locate(interim)) + move(departing, interim) sleep(travel_time*10) - move(locate(interim),locate(destination)) + move(interim, destination) moving_status = SHUTTLE_IDLE @@ -69,7 +69,7 @@ //world << "move_shuttle() called for [shuttle_tag] leaving [origin] en route to [destination]." - //world << "area_coming_from: [area_coming_from]" + //world << "area_coming_from: [origin]" //world << "destination: [destination]" if(origin == destination) diff --git a/code/modules/shuttles/shuttle_supply.dm b/code/modules/shuttles/shuttle_supply.dm index 3d878bcb60..1610a5deee 100644 --- a/code/modules/shuttles/shuttle_supply.dm +++ b/code/modules/shuttles/shuttle_supply.dm @@ -58,7 +58,7 @@ if (!at_station()) //at centcom supply_controller.sell() -/datum/shuttle/ferry/emergency/long_jump(var/area/departing,var/area/destination,var/area/interim,var/travel_time) +/datum/shuttle/ferry/supply/long_jump(var/area/departing,var/area/destination,var/area/interim,var/travel_time) short_jump(departing, destination) //long jumps are disabled // returns 1 if the supply shuttle should be prevented from moving because it contains forbidden atoms diff --git a/code/modules/shuttles/shuttles_multi.dm b/code/modules/shuttles/shuttles_multi.dm index 4b737cd2cf..11974c7034 100644 --- a/code/modules/shuttles/shuttles_multi.dm +++ b/code/modules/shuttles/shuttles_multi.dm @@ -109,7 +109,7 @@ usr << "\red Ship stealth systems have been [(MS.cloaked ? "activated. The station will not" : "deactivated. The station will")] be warned of our arrival." if(href_list["move_multi"]) - if((MS.last_move + MS.cooldown) > world.time) + if((MS.last_move + MS.cooldown*10) > world.time) usr << "\red The ship's drive is inoperable while the engines are charging." return @@ -124,7 +124,7 @@ MS.at_origin = 0 - MS.long_jump(MS.last_departed,MS.destinations[choice],MS.interim,MS.move_time) + MS.long_jump(MS.last_departed, MS.destinations[choice], MS.interim, MS.move_time) MS.last_departed = MS.destinations[choice] return @@ -132,7 +132,7 @@ MS.announce_departure() - MS.short_jump(locate(MS.last_departed),locate(MS.destinations[choice])) + MS.short_jump(MS.last_departed, MS.destinations[choice]) MS.last_departed = MS.destinations[choice] updateUsrDialog() \ No newline at end of file From d892099ea3fd7ecd4cf0f12aa2795ce970ac853c Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 23 Jun 2014 23:48:28 -0400 Subject: [PATCH 044/304] Adds direction arg for area/move_contents_to() Attempts to fix shuttle corner transition effect Fixes bad ETAs appearing on status displays --- baystation12.dme | 1 + .../emergency_shuttle_controller.dm | 24 ++- code/controllers/shuttle_controller.dm | 3 +- code/modules/shuttles/shuttle.dm | 11 +- code/modules/shuttles/shuttle_console.dm | 160 ----------------- code/modules/shuttles/shuttle_emergency.dm | 38 ++--- code/modules/shuttles/shuttle_ferry.dm | 161 ++++++++++++++++++ code/modules/shuttles/shuttle_supply.dm | 3 - code/modules/shuttles/shuttles_multi.dm | 5 +- code/setup.dm | 21 ++- 10 files changed, 219 insertions(+), 208 deletions(-) create mode 100644 code/modules/shuttles/shuttle_ferry.dm diff --git a/baystation12.dme b/baystation12.dme index 1fa1d56c23..d14983d796 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -1294,6 +1294,7 @@ #include "code\modules\shuttles\shuttle.dm" #include "code\modules\shuttles\shuttle_console.dm" #include "code\modules\shuttles\shuttle_emergency.dm" +#include "code\modules\shuttles\shuttle_ferry.dm" #include "code\modules\shuttles\shuttle_specops.dm" #include "code\modules\shuttles\shuttle_supply.dm" #include "code\modules\shuttles\shuttles_multi.dm" diff --git a/code/controllers/emergency_shuttle_controller.dm b/code/controllers/emergency_shuttle_controller.dm index 71d0cea0b9..f888932cdc 100644 --- a/code/controllers/emergency_shuttle_controller.dm +++ b/code/controllers/emergency_shuttle_controller.dm @@ -2,14 +2,6 @@ // Controls the emergency shuttle - -// these define the time taken for the shuttle to get to SS13 -// and the time before it leaves again -#define SHUTTLE_PREPTIME 300 // 5 minutes = 300 seconds - after this time, the shuttle cannot be recalled -#define SHUTTLE_LEAVETIME 180 // 3 minutes = 180 seconds - the duration for which the shuttle will wait at the station -#define SHUTTLE_TRANSIT_DURATION 300 // 5 minutes = 300 seconds - how long it takes for the shuttle to get to the station -#define SHUTTLE_TRANSIT_DURATION_RETURN 120 // 2 minutes = 120 seconds - for some reason it takes less time to come back, go figure. - var/global/datum/emergency_shuttle_controller/emergency_shuttle /datum/emergency_shuttle_controller @@ -37,7 +29,8 @@ var/global/datum/emergency_shuttle_controller/emergency_shuttle pod.area_station = locate(/area/shuttle/escape_pod1/station) pod.area_offsite = locate(/area/shuttle/escape_pod1/centcom) pod.area_transition = locate(/area/shuttle/escape_pod1/transit) - pod.travel_time = SHUTTLE_TRANSIT_DURATION_RETURN + pod.transit_direction = NORTH + pod.move_time = SHUTTLE_TRANSIT_DURATION_RETURN escape_pods += pod pod = new() @@ -46,7 +39,8 @@ var/global/datum/emergency_shuttle_controller/emergency_shuttle pod.area_station = locate(/area/shuttle/escape_pod2/station) pod.area_offsite = locate(/area/shuttle/escape_pod2/centcom) pod.area_transition = locate(/area/shuttle/escape_pod2/transit) - pod.travel_time = SHUTTLE_TRANSIT_DURATION_RETURN + pod.transit_direction = NORTH + pod.move_time = SHUTTLE_TRANSIT_DURATION_RETURN escape_pods += pod pod = new() @@ -55,7 +49,8 @@ var/global/datum/emergency_shuttle_controller/emergency_shuttle pod.area_station = locate(/area/shuttle/escape_pod3/station) pod.area_offsite = locate(/area/shuttle/escape_pod3/centcom) pod.area_transition = locate(/area/shuttle/escape_pod3/transit) - pod.travel_time = SHUTTLE_TRANSIT_DURATION_RETURN + pod.transit_direction = EAST + pod.move_time = SHUTTLE_TRANSIT_DURATION_RETURN escape_pods += pod //There is no pod 4, apparently. @@ -66,7 +61,8 @@ var/global/datum/emergency_shuttle_controller/emergency_shuttle pod.area_station = locate(/area/shuttle/escape_pod5/station) pod.area_offsite = locate(/area/shuttle/escape_pod5/centcom) pod.area_transition = locate(/area/shuttle/escape_pod5/transit) - pod.travel_time = SHUTTLE_TRANSIT_DURATION_RETURN + pod.transit_direction = EAST //should this be WEST? I have no idea. + pod.move_time = SHUTTLE_TRANSIT_DURATION_RETURN escape_pods += pod @@ -187,9 +183,9 @@ var/global/datum/emergency_shuttle_controller/emergency_shuttle /datum/emergency_shuttle_controller/proc/estimate_arrival_time() var/eta if (isnull(shuttle.last_move_time)) - eta = launch_time + shuttle.travel_time*10 + eta = launch_time + shuttle.move_time*10 else - eta = shuttle.last_move_time + shuttle.travel_time*10 + eta = shuttle.last_move_time + shuttle.move_time*10 return (eta - world.time)/10 //returns the time left until the shuttle launches, in seconds diff --git a/code/controllers/shuttle_controller.dm b/code/controllers/shuttle_controller.dm index b0d05ea202..889f1a72e4 100644 --- a/code/controllers/shuttle_controller.dm +++ b/code/controllers/shuttle_controller.dm @@ -26,7 +26,8 @@ var/global/datum/shuttle_controller/shuttle_controller shuttle.area_offsite = locate(/area/shuttle/escape/centcom) shuttle.area_station = locate(/area/shuttle/escape/station) shuttle.area_transition = locate(/area/shuttle/escape/transit) - shuttle.travel_time = 300 + shuttle.transit_direction = NORTH + shuttle.move_time = 300 //shuttle.docking_controller_tag = "supply_shuttle" //shuttle.dock_target_station = "cargo_bay" shuttles["Escape"] = shuttle diff --git a/code/modules/shuttles/shuttle.dm b/code/modules/shuttles/shuttle.dm index 6ad36cd8a2..ebc9fe1c9d 100644 --- a/code/modules/shuttles/shuttle.dm +++ b/code/modules/shuttles/shuttle.dm @@ -22,7 +22,8 @@ move(origin, destination) moving_status = SHUTTLE_IDLE -/datum/shuttle/proc/long_jump(var/area/departing,var/area/destination,var/area/interim,var/travel_time) +/datum/shuttle/proc/long_jump(var/area/departing, var/area/destination, var/area/interim, var/travel_time, var/direction) + //world << "shuttle/long_jump: departing=[departing], destination=[destination], interim=[interim], travel_time=[travel_time]" if(moving_status != SHUTTLE_IDLE) return //it would be cool to play a sound here @@ -31,11 +32,11 @@ if (moving_status == SHUTTLE_IDLE) return //someone cancelled the launch - move(departing, interim) + move(departing, interim, direction) sleep(travel_time*10) - move(interim, destination) + move(interim, destination, direction) moving_status = SHUTTLE_IDLE @@ -65,7 +66,7 @@ return 0 //just moves the shuttle from A to B, if it can be moved -/datum/shuttle/proc/move(var/area/origin,var/area/destination) +/datum/shuttle/proc/move(var/area/origin, var/area/destination, var/direction=null) //world << "move_shuttle() called for [shuttle_tag] leaving [origin] en route to [destination]." @@ -99,7 +100,7 @@ for(var/mob/living/simple_animal/pest in destination) pest.gib() - origin.move_contents_to(destination) //might need to use the "direction" argument here, I dunno. + origin.move_contents_to(destination, direction=direction) for(var/mob/M in destination) if(M.client) diff --git a/code/modules/shuttles/shuttle_console.dm b/code/modules/shuttles/shuttle_console.dm index 18f242bd5c..d45b66fce5 100644 --- a/code/modules/shuttles/shuttle_console.dm +++ b/code/modules/shuttles/shuttle_console.dm @@ -1,162 +1,3 @@ -#define IDLE_STATE 0 -#define WAIT_LAUNCH 1 -#define WAIT_ARRIVE 2 -#define WAIT_FINISH 3 - - -/datum/shuttle/ferry - var/location = 0 //0 = at area_station, 1 = at area_offsite - var/direction = 0 //0 = going to station, 1 = going to offsite. - var/process_state = IDLE_STATE - - var/in_use = null //tells the controller whether this shuttle needs processing - - var/area_transition - var/travel_time = 0 - - var/area_station - var/area_offsite - //TODO: change location to a string and use a mapping for area and dock targets. - var/dock_target_station - var/dock_target_offsite - -/datum/shuttle/ferry/short_jump(var/area/origin,var/area/destination) - if(isnull(location)) - return - - if(!destination) - destination = get_location_area(!location) - if(!origin) - origin = get_location_area(location) - - direction = !location - ..(origin, destination) - -/datum/shuttle/ferry/long_jump(var/area/departing,var/area/destination,var/area/interim,var/travel_time) - if(isnull(location)) - return - - if(!destination) - destination = get_location_area(!location) - if(!departing) - departing = get_location_area(location) - - direction = !location - ..(departing, destination, interim, travel_time) - -/datum/shuttle/ferry/move(var/area/origin,var/area/destination) - if(!destination) - destination = get_location_area(!location) - if(!origin) - origin = get_location_area(location) - - if (docking_controller && !docking_controller.undocked()) - docking_controller.force_undock() - ..(origin, destination) - - - if (destination == area_station) location = 0 - if (destination == area_offsite) location = 1 - //if this is a long_jump retain the location we were last at until we get to the new one - -/datum/shuttle/ferry/proc/get_location_area(location_id = null) - if (isnull(location_id)) - location_id = location - - if (!location_id) - return area_station - return area_offsite - -/datum/shuttle/ferry/proc/process() - switch(process_state) - if (WAIT_LAUNCH) - if (skip_docking_checks() || docking_controller.can_launch()) - - if (travel_time && area_transition) - long_jump(interim=area_transition, travel_time=travel_time) - else - short_jump() - - process_state = WAIT_ARRIVE - if (WAIT_ARRIVE) - if (moving_status == SHUTTLE_IDLE) - dock() - process_state = WAIT_FINISH - if (WAIT_FINISH) - if (skip_docking_checks() || docking_controller.docked()) - process_state = IDLE_STATE - in_use = null //release lock - arrived() - -/datum/shuttle/ferry/current_dock_target() - var/dock_target - if (!location) //station - dock_target = dock_target_station - else - dock_target = dock_target_offsite - return dock_target - - -/datum/shuttle/ferry/proc/launch(var/user) - if (!can_launch()) return - - in_use = user //obtain an exclusive lock on the shuttle - - process_state = WAIT_LAUNCH - undock() - -/datum/shuttle/ferry/proc/force_launch(var/user) - if (!can_force()) return - - in_use = user //obtain an exclusive lock on the shuttle - - if (travel_time && area_transition) - long_jump(null, null, area_transition, travel_time) - else - short_jump() - - - process_state = WAIT_ARRIVE - -/datum/shuttle/ferry/proc/cancel_launch(var/user) - if (!can_cancel()) return - - moving_status = SHUTTLE_IDLE - process_state = WAIT_FINISH - - if (docking_controller && !docking_controller.undocked()) - docking_controller.force_undock() - - spawn(10) - dock() - - return - -/datum/shuttle/ferry/proc/can_launch() - if (moving_status != SHUTTLE_IDLE) - return 0 - - if (in_use) - return 0 - - return 1 - -/datum/shuttle/ferry/proc/can_force() - if (moving_status == SHUTTLE_IDLE && process_state == WAIT_LAUNCH) - return 1 - return 0 - -/datum/shuttle/ferry/proc/can_cancel() - if (moving_status == SHUTTLE_WARMUP || process_state == WAIT_LAUNCH) - return 1 - return 0 - -//This gets called when the shuttle finishes arriving at it's destination -//This can be used by subtypes to do things when the shuttle arrives. -/datum/shuttle/ferry/proc/arrived() - return //do nothing for now - - /obj/machinery/computer/shuttle_control name = "shuttle control console" icon = 'icons/obj/computer.dmi' @@ -252,4 +93,3 @@ /obj/machinery/computer/shuttle_control/bullet_act(var/obj/item/projectile/Proj) visible_message("[Proj] ricochets off [src]!") - diff --git a/code/modules/shuttles/shuttle_emergency.dm b/code/modules/shuttles/shuttle_emergency.dm index 93854c94e1..8ad5a21844 100644 --- a/code/modules/shuttles/shuttle_emergency.dm +++ b/code/modules/shuttles/shuttle_emergency.dm @@ -5,34 +5,25 @@ /datum/shuttle/ferry/emergency/arrived() emergency_shuttle.shuttle_arrived() -/datum/shuttle/ferry/emergency/long_jump(var/area/departing,var/area/destination,var/area/interim,var/travel_time) +/datum/shuttle/ferry/emergency/long_jump(var/area/departing, var/area/destination, var/area/interim, var/travel_time, var/direction) + //world << "shuttle/ferry/emergency/long_jump: departing=[departing], destination=[destination], interim=[interim], travel_time=[travel_time]" if (!location) travel_time = SHUTTLE_TRANSIT_DURATION_RETURN else travel_time = SHUTTLE_TRANSIT_DURATION + + //update move_time so we get correct ETAs + move_time = travel_time + ..() -/* -/area/shuttle/escape/centcom/verb/shuttle_long_jump(var/area/A as area, var/area/B as area, var/area/I as area, var/travel_time as num) - set category = "Debug" - //set src in world - var/datum/shuttle/ferry/emergency/E = shuttle_controller.shuttles["Escape"] - E.long_jump(A, B, I, travel_time) - -/area/shuttle/escape/centcom/verb/shuttle_move(var/area/A as area, var/area/B as area) - set category = "Debug" - //set src in world - var/datum/shuttle/ferry/emergency/E = shuttle_controller.shuttles["Escape"] - E.long_jump(A, B) -*/ - /datum/shuttle/ferry/emergency/move(var/area/origin,var/area/destination) if (destination == area_transition) last_move_time = world.time else last_move_time = null - if (!location) //leaving the station + if (origin == area_station) //leaving the station emergency_shuttle.departed = 1 captain_announce("The Emergency Shuttle has left the station. Estimate [round(emergency_shuttle.estimate_arrival_time()/60,1)] minutes until the shuttle docks at Central Command.") ..(origin, destination) @@ -174,11 +165,11 @@ for (var/dna_hash in authorized) auth_list[i++] = list("auth_name"=authorized[dna_hash], "auth_hash"=dna_hash) - while (i <= req_authorizations) //for some reason dream maker gives warnings if you use for(; i <= req_authorizations; i++) here. - auth_list[i++] = list("auth_name"="", "auth_hash"=-1) + while (i <= req_authorizations) //fill up the rest of the list with blank entries + auth_list[i++] = list("auth_name"="", "auth_hash"=null) else for (var/i = 1; i <= req_authorizations; i++) - auth_list[i] = list("auth_name"="ERROR", "auth_hash"=-1) + auth_list[i] = list("auth_name"="ERROR", "auth_hash"=null) var/has_auth = has_authorization() @@ -209,6 +200,8 @@ return if(href_list["auth"]) + /* + //This doesn't work at all. if (!emagged && href_list["auth"] == -1) //They selected an empty entry. Try to scan their id. if (ishuman(usr)) @@ -216,9 +209,10 @@ if (!read_authorization(H.get_active_hand())) //try to read what's in their hand first read_authorization(H.wear_id) else - //remove the authorization - var/dna_hash = href_list["auth"] - authorized -= dna_hash + */ + //remove the authorization + var/dna_hash = href_list["auth"] + authorized -= dna_hash diff --git a/code/modules/shuttles/shuttle_ferry.dm b/code/modules/shuttles/shuttle_ferry.dm new file mode 100644 index 0000000000..3d1c2f4ba8 --- /dev/null +++ b/code/modules/shuttles/shuttle_ferry.dm @@ -0,0 +1,161 @@ +#define IDLE_STATE 0 +#define WAIT_LAUNCH 1 +#define WAIT_ARRIVE 2 +#define WAIT_FINISH 3 + + +/datum/shuttle/ferry + var/location = 0 //0 = at area_station, 1 = at area_offsite + var/direction = 0 //0 = going to station, 1 = going to offsite. + var/process_state = IDLE_STATE + + var/in_use = null //tells the controller whether this shuttle needs processing + + var/area_transition + var/move_time = 0 //the time spent in the transition area + var/transit_direction = null //needed for area/move_contents_to() to properly handle shuttle corners - not exactly sure how it works. + + var/area_station + var/area_offsite + //TODO: change location to a string and use a mapping for area and dock targets. + var/dock_target_station + var/dock_target_offsite + +/datum/shuttle/ferry/short_jump(var/area/origin,var/area/destination) + if(isnull(location)) + return + + if(!destination) + destination = get_location_area(!location) + if(!origin) + origin = get_location_area(location) + + direction = !location + ..(origin, destination) + +/datum/shuttle/ferry/long_jump(var/area/departing, var/area/destination, var/area/interim, var/travel_time, var/direction) + //world << "shuttle/ferry/long_jump: departing=[departing], destination=[destination], interim=[interim], travel_time=[travel_time]" + if(isnull(location)) + return + + if(!destination) + destination = get_location_area(!location) + if(!departing) + departing = get_location_area(location) + + direction = !location + ..(departing, destination, interim, travel_time, direction) + +/datum/shuttle/ferry/move(var/area/origin,var/area/destination) + if(!destination) + destination = get_location_area(!location) + if(!origin) + origin = get_location_area(location) + + if (docking_controller && !docking_controller.undocked()) + docking_controller.force_undock() + ..(origin, destination) + + + if (destination == area_station) location = 0 + if (destination == area_offsite) location = 1 + //if this is a long_jump retain the location we were last at until we get to the new one + +/datum/shuttle/ferry/proc/get_location_area(location_id = null) + if (isnull(location_id)) + location_id = location + + if (!location_id) + return area_station + return area_offsite + +/datum/shuttle/ferry/proc/process() + switch(process_state) + if (WAIT_LAUNCH) + if (skip_docking_checks() || docking_controller.can_launch()) + + //world << "shuttle/ferry/process: area_transition=[area_transition], travel_time=[travel_time]" + if (move_time && area_transition) + long_jump(interim=area_transition, travel_time=move_time, direction=transit_direction) + else + short_jump() + + process_state = WAIT_ARRIVE + if (WAIT_ARRIVE) + if (moving_status == SHUTTLE_IDLE) + dock() + process_state = WAIT_FINISH + if (WAIT_FINISH) + if (skip_docking_checks() || docking_controller.docked()) + process_state = IDLE_STATE + in_use = null //release lock + arrived() + +/datum/shuttle/ferry/current_dock_target() + var/dock_target + if (!location) //station + dock_target = dock_target_station + else + dock_target = dock_target_offsite + return dock_target + + +/datum/shuttle/ferry/proc/launch(var/user) + if (!can_launch()) return + + in_use = user //obtain an exclusive lock on the shuttle + + process_state = WAIT_LAUNCH + undock() + +/datum/shuttle/ferry/proc/force_launch(var/user) + if (!can_force()) return + + in_use = user //obtain an exclusive lock on the shuttle + + if (move_time && area_transition) + long_jump(interim=area_transition, travel_time=move_time, direction=transit_direction) + else + short_jump() + + + process_state = WAIT_ARRIVE + +/datum/shuttle/ferry/proc/cancel_launch(var/user) + if (!can_cancel()) return + + moving_status = SHUTTLE_IDLE + process_state = WAIT_FINISH + + if (docking_controller && !docking_controller.undocked()) + docking_controller.force_undock() + + spawn(10) + dock() + + return + +/datum/shuttle/ferry/proc/can_launch() + if (moving_status != SHUTTLE_IDLE) + return 0 + + if (in_use) + return 0 + + return 1 + +/datum/shuttle/ferry/proc/can_force() + if (moving_status == SHUTTLE_IDLE && process_state == WAIT_LAUNCH) + return 1 + return 0 + +/datum/shuttle/ferry/proc/can_cancel() + if (moving_status == SHUTTLE_WARMUP || process_state == WAIT_LAUNCH) + return 1 + return 0 + +//This gets called when the shuttle finishes arriving at it's destination +//This can be used by subtypes to do things when the shuttle arrives. +/datum/shuttle/ferry/proc/arrived() + return //do nothing for now + diff --git a/code/modules/shuttles/shuttle_supply.dm b/code/modules/shuttles/shuttle_supply.dm index 1610a5deee..f75193ea03 100644 --- a/code/modules/shuttles/shuttle_supply.dm +++ b/code/modules/shuttles/shuttle_supply.dm @@ -58,9 +58,6 @@ if (!at_station()) //at centcom supply_controller.sell() -/datum/shuttle/ferry/supply/long_jump(var/area/departing,var/area/destination,var/area/interim,var/travel_time) - short_jump(departing, destination) //long jumps are disabled - // returns 1 if the supply shuttle should be prevented from moving because it contains forbidden atoms /datum/shuttle/ferry/supply/proc/forbidden_atoms_check() if (!at_station()) diff --git a/code/modules/shuttles/shuttles_multi.dm b/code/modules/shuttles/shuttles_multi.dm index 11974c7034..037e5ac3d4 100644 --- a/code/modules/shuttles/shuttles_multi.dm +++ b/code/modules/shuttles/shuttles_multi.dm @@ -73,7 +73,6 @@ user << browse("[dat]", "window=[shuttle_tag]shuttlecontrol;size=300x600") /obj/machinery/computer/shuttle_control/multi/Topic(href, href_list) - if(..()) return @@ -82,6 +81,8 @@ var/datum/shuttle/multi_shuttle/MS = shuttle_controller.shuttles[shuttle_tag] if(!istype(MS)) return + + //world << "multi_shuttle: last_departed=[MS.last_departed], origin=[MS.origin], interim=[MS.interim], travel_time=[MS.move_time]" if (MS.moving_status != SHUTTLE_IDLE) usr << "\blue [shuttle_tag] vessel is moving." @@ -98,7 +99,7 @@ //TODO: Actually end the mission. MS.return_warning = 1 return - + MS.long_jump(MS.last_departed,MS.origin,MS.interim,MS.move_time) MS.last_departed = MS.origin MS.at_origin = 1 diff --git a/code/setup.dm b/code/setup.dm index 3c190f1e2a..b40cd05fa7 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -762,7 +762,26 @@ var/list/RESTRICTED_CAMERA_NETWORKS = list( //Those networks can only be accesse #define COLOR_ORANGE "#FF9900" #define COLOR_WHITE "#FFFFFF" + + +/* + Shuttles +*/ + +// these define the time taken for the shuttle to get to SS13 +// and the time before it leaves again +#define SHUTTLE_PREPTIME 300 // 5 minutes = 300 seconds - after this time, the shuttle departs centcom and cannot be recalled +#define SHUTTLE_LEAVETIME 180 // 3 minutes = 180 seconds - the duration for which the shuttle will wait at the station after arriving +#define SHUTTLE_TRANSIT_DURATION 300 // 5 minutes = 300 seconds - how long it takes for the shuttle to get to the station +#define SHUTTLE_TRANSIT_DURATION_RETURN 120 // 2 minutes = 120 seconds - for some reason it takes less time to come back, go figure. + //Shuttle moving status #define SHUTTLE_IDLE 0 #define SHUTTLE_WARMUP 1 -#define SHUTTLE_INTRANSIT 2 \ No newline at end of file +#define SHUTTLE_INTRANSIT 2 + +//Ferry shuttle processing status +#define IDLE_STATE 0 +#define WAIT_LAUNCH 1 +#define WAIT_ARRIVE 2 +#define WAIT_FINISH 3 From 96bbe1d9db55b1de5bc35a6f98bcbbcbe91db0fb Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Tue, 24 Jun 2014 13:30:04 +0930 Subject: [PATCH 045/304] Added spawnpoint datum, moved existing latejoin spawn to datum setup. --- baystation12.dme | 1 + code/controllers/master_controller.dm | 5 ++- code/game/objects/effects/landmarks.dm | 8 +++++ code/global.dm | 5 +++ code/modules/client/preferences.dm | 12 +++++++ code/modules/client/preferences_savefile.dm | 2 ++ code/modules/mob/new_player/new_player.dm | 26 +++++++++++---- code/modules/spawnpoints.dm | 36 +++++++++++++++++++++ 8 files changed, 88 insertions(+), 7 deletions(-) create mode 100644 code/modules/spawnpoints.dm diff --git a/baystation12.dme b/baystation12.dme index e1421ebc1b..25ee0cd65f 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -667,6 +667,7 @@ #include "code\game\verbs\who.dm" #include "code\js\byjax.dm" #include "code\js\menus.dm" +#include "code\modules\spawnpoints.dm" #include "code\modules\admin\admin.dm" #include "code\modules\admin\admin_investigate.dm" #include "code\modules\admin\admin_memo.dm" diff --git a/code/controllers/master_controller.dm b/code/controllers/master_controller.dm index 77f3adfdbd..d64b237034 100644 --- a/code/controllers/master_controller.dm +++ b/code/controllers/master_controller.dm @@ -32,7 +32,7 @@ datum/controller/game_controller var/last_thing_processed var/mob/list/expensive_mobs = list() var/rebuild_active_areas = 0 - + var/list/shuttle_list //for debugging and VV datum/controller/game_controller/New() @@ -85,6 +85,9 @@ datum/controller/game_controller/proc/setup() var/datum/ore_distribution/O = new() O.populate_distribution_map() + //Set up spawn points. + populate_spawn_points() + spawn(0) if(ticker) ticker.pregame() diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm index ae155f32ad..e287ee845d 100644 --- a/code/game/objects/effects/landmarks.dm +++ b/code/game/objects/effects/landmarks.dm @@ -40,6 +40,14 @@ latejoin += loc del(src) + if("JoinLateGateway") + latejoin_gateway += loc + del(src) + + if("JoinLateCryo") + latejoin_cryo += loc + del(src) + //prisoners if("prisonwarp") prisonwarp += loc diff --git a/code/global.dm b/code/global.dm index 1eb82f08cd..c938c5b7a9 100644 --- a/code/global.dm +++ b/code/global.dm @@ -125,7 +125,12 @@ var/airtunnel_bottom = 72 // default var/list/monkeystart = list() var/list/wizardstart = list() var/list/newplayer_start = list() + +//Spawnpoints. var/list/latejoin = list() +var/list/latejoin_gateway = list() +var/list/latejoin_cryo = list() + var/list/prisonwarp = list() //prisoners go to these var/list/holdingfacility = list() //captured people go here var/list/xeno_spawn = list()//Aliens spawn at these. diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 60d0036c3c..529746fe58 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -53,6 +53,7 @@ datum/preferences var/be_random_name = 0 //whether we are a random name every round var/gender = MALE //gender of character (well duh) var/age = 30 //age of character + var/spawnpoint = "Arrivals Shuttle" //where this character will spawn (0-2). var/b_type = "A+" //blood type (not-chooseable) var/underwear = 1 //underwear type var/undershirt = 1 //undershirt type @@ -247,6 +248,7 @@ datum/preferences dat += "Gender: [gender == MALE ? "Male" : "Female"]
" dat += "Age: [age]" + dat += "Spawn Point: [spawnpoint]
" dat += "
" dat += "UI Style: [UI_style]
" @@ -1179,6 +1181,16 @@ datum/preferences var/skin_style_name = input(user, "Select a new skin style") as null|anything in list("default1", "default2", "default3") if(!skin_style_name) return + if("spawnpoint") + var/list/spawnkeys = list() + for(var/S in spawntypes) + spawnkeys += S + var/choice = input(user, "Where would you like to spawn when latejoining?") as null|anything in spawnkeys + if(!choice || !spawntypes[choice]) + spawnpoint = "Arrivals Shuttle" + return + spawnpoint = choice + else switch(href_list["preference"]) if("gender") diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index d8cbab3f0b..68bb5a9e3e 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -108,6 +108,7 @@ S["age"] >> age S["species"] >> species S["language"] >> language + S["spawnpoint"] >> spawnpoint //colors to be consolidated into hex strings (requires some work with dna code) S["hair_red"] >> r_hair @@ -168,6 +169,7 @@ real_name = reject_bad_name(real_name) if(isnull(species)) species = "Human" if(isnull(language)) language = "None" + if(isnull(spawnpoint)) spawnpoint = "Arrivals Shuttle" if(isnull(nanotrasen_relation)) nanotrasen_relation = initial(nanotrasen_relation) if(!real_name) real_name = random_name(gender) be_random_name = sanitize_integer(be_random_name, 0, 1, initial(be_random_name)) diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index 1bc7730b36..b4d3f02196 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -159,7 +159,7 @@ src << alert("You are currently not whitelisted to play [client.prefs.species].") return 0 - AttemptLateSpawn(href_list["SelectedJob"]) + AttemptLateSpawn(href_list["SelectedJob"],client.prefs.spawnpoint) return if(href_list["privacy_poll"]) @@ -270,7 +270,7 @@ return 1 - proc/AttemptLateSpawn(rank) + proc/AttemptLateSpawn(rank,var/spawning_at) if (src != usr) return 0 if(!ticker || ticker.current_state != GAME_STATE_PLAYING) @@ -291,7 +291,21 @@ var/mob/living/carbon/human/character = create_character() //creates the human and transfers vars and mind job_master.EquipRank(character, rank, 1) //equips the human EquipCustomItems(character) - character.loc = pick(latejoin) + + //Find our spawning point. + var/join_message + var/datum/spawnpoint/S + + if(spawning_at) + S = spawntypes[spawning_at] + + if(S && istype(S)) + character.loc = pick(S.turfs) + join_message = S.msg + else + character.loc = pick(latejoin) + join_message = "has arrived on the station" + character.lastarea = get_area(loc) // Moving wheelchair if they have one if(character.buckled && istype(character.buckled, /obj/structure/stool/bed/chair/wheelchair)) @@ -305,18 +319,18 @@ if(character.mind.assigned_role != "Cyborg") data_core.manifest_inject(character) ticker.minds += character.mind//Cyborgs and AIs handle this in the transform proc. //TODO!!!!! ~Carn - AnnounceArrival(character, rank) + AnnounceArrival(character, rank, join_message) else character.Robotize() del(src) - proc/AnnounceArrival(var/mob/living/carbon/human/character, var/rank) + proc/AnnounceArrival(var/mob/living/carbon/human/character, var/rank, var/join_message) if (ticker.current_state == GAME_STATE_PLAYING) var/obj/item/device/radio/intercom/a = new /obj/item/device/radio/intercom(null)// BS12 EDIT Arrivals Announcement Computer, rather than the AI. if(character.mind.role_alt_title) rank = character.mind.role_alt_title - a.autosay("[character.real_name],[rank ? " [rank]," : " visitor," ] has arrived on the station.", "Arrivals Announcement Computer") + a.autosay("[character.real_name],[rank ? " [rank]," : " visitor," ] [join_message ? join_message : "has arrived on the station"].", "Arrivals Announcement Computer") del(a) proc/LateChoices() diff --git a/code/modules/spawnpoints.dm b/code/modules/spawnpoints.dm new file mode 100644 index 0000000000..71692f01cc --- /dev/null +++ b/code/modules/spawnpoints.dm @@ -0,0 +1,36 @@ +var/list/spawntypes = list() + +/proc/populate_spawn_points() + spawntypes = list() + for(var/type in typesof(/datum/spawnpoint)-/datum/spawnpoint) + var/datum/spawnpoint/S = new type() + spawntypes[S.display_name] = S + +/datum/spawnpoint + var/msg //Message to display on the arrivals computer. + var/list/turfs //List of turfs to spawn on. + var/display_name //Name used in preference setup. + +/datum/spawnpoint/arrivals + display_name = "Arrivals Shuttle" + msg = "has arrived on the station" + +/datum/spawnpoint/arrivals/New() + ..() + turfs = latejoin + +/datum/spawnpoint/gateway + display_name = "Gateway" + msg = "has completed translation from offsite gateway" + +/datum/spawnpoint/gateway/New() + ..() + turfs = latejoin_gateway + +/datum/spawnpoint/cryo + display_name = "Cryogenic Storage" + msg = "has completed cryogenic revival and clocked in" + +/datum/spawnpoint/cryo/New() + ..() + turfs = latejoin_cryo \ No newline at end of file From 66315cdc71678ff020dc411c8350fcd700e04fc5 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Tue, 24 Jun 2014 13:31:27 +0930 Subject: [PATCH 046/304] Added latejoin landmarks to the map and modified the gateway annex to be all-access/more casual. --- maps/tgstation2.dmm | 82 ++++++++++++++++++++++----------------------- 1 file changed, 40 insertions(+), 42 deletions(-) diff --git a/maps/tgstation2.dmm b/maps/tgstation2.dmm index abc12fe5c6..bef38e2eb8 100644 --- a/maps/tgstation2.dmm +++ b/maps/tgstation2.dmm @@ -1115,7 +1115,7 @@ "avw" = (/obj/machinery/computer/shuttle_control/mining,/turf/simulated/floor{dir = 9; icon_state = "blue"},/area/bridge) "avx" = (/obj/structure/table/woodentable,/obj/structure/disposalpipe/segment,/obj/item/weapon/deck,/turf/simulated/floor/wood,/area/library) "avy" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/fpmaint) -"avz" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/command{icon_state = "door_closed"; lockdownbyai = 0; locked = 0; name = "Gateway Access"; req_access_txt = "62"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/gateway) +"avz" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/gateway) "avA" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "solar_tool_airlock"; name = "exterior access button"; pixel_x = -25; pixel_y = -25; req_access_txt = "13"},/turf/simulated/floor/plating/airless,/area/solar/auxport) "avB" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/prison) "avC" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall,/area/hydroponics) @@ -1333,7 +1333,7 @@ "azG" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/primary/starboard) "azH" = (/obj/machinery/newscaster{pixel_x = 30},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor/wood,/area/library) "azI" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) -"azJ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/primary/port) +"azJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/primary/port) "azK" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor,/area/hallway/primary/port) "azL" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) "azM" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) @@ -1399,9 +1399,9 @@ "aAU" = (/obj/machinery/light/small{dir = 1},/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor{icon_state = "vault"},/area/security/nuke_storage) "aAV" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor/wood,/area/crew_quarters/captain) "aAW" = (/obj/machinery/computer/secure_data/detective_computer,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/nuke_storage) -"aAX" = (/obj/machinery/gateway{dir = 10},/turf/simulated/floor{icon_state = "vault"; dir = 4},/area/gateway) +"aAX" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/airlock/glass{name = "Gateway Access"},/turf/simulated/floor,/area/gateway) "aAY" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/glass/rag,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "bar"; name = "Bar Shutters"; opacity = 0},/obj/structure/noticeboard{pixel_x = -30; pixel_y = 0},/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar) -"aAZ" = (/obj/machinery/gateway{dir = 6},/turf/simulated/floor{icon_state = "vault"; dir = 1},/area/gateway) +"aAZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/wall,/area/library) "aBa" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/rig,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva) "aBb" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/rig/atmos,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig/atmos,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva) "aBc" = (/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact-f (NORTHWEST)"; icon_state = "intact-f"; dir = 9},/turf/simulated/floor/plating,/area/maintenance/port) @@ -1468,9 +1468,9 @@ "aCl" = (/obj/machinery/nuclearbomb{r_code = "LOLNO"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/nuke_storage) "aCm" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "vault"; dir = 10},/area/security/nuke_storage) "aCn" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor{icon_state = "vault"; dir = 4},/area/security/nuke_storage) -"aCo" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/obj/structure/window/reinforced,/turf/simulated/floor{icon_state = "dark"},/area/gateway) -"aCp" = (/obj/structure/window/reinforced,/turf/simulated/floor{icon_state = "dark"},/area/gateway) -"aCq" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/window{name = "Gateway Chamber"; icon_state = "right"; dir = 2; req_access_txt = "62"},/turf/simulated/floor{icon_state = "dark"},/area/gateway) +"aCo" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor,/area/gateway) +"aCp" = (/obj/structure/table,/obj/item/weapon/storage/fancy/cigarettes{pixel_y = 2},/turf/simulated/floor,/area/gateway) +"aCq" = (/obj/machinery/light{dir = 4},/obj/structure/closet/l3closet/scientist,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor,/area/gateway) "aCr" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/window/reinforced,/turf/simulated/floor{icon_state = "dark"},/area/gateway) "aCs" = (/obj/structure/rack{dir = 1},/obj/item/weapon/extinguisher,/obj/item/clothing/mask/gas,/turf/simulated/floor/plating,/area/maintenance/fpmaint) "aCt" = (/obj/machinery/door/airlock/glass_engineering{name = "Engineering Hardsuits"; req_access_txt = "0"; req_one_access_txt = "11;24"},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) @@ -1539,9 +1539,9 @@ "aDE" = (/obj/machinery/washing_machine,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/crew_quarters/locker) "aDF" = (/obj/structure/stool/bed/chair/office/dark{dir = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/wood,/area/library) "aDG" = (/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/obj/machinery/light{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/turf/simulated/floor,/area/hallway/primary/central) -"aDH" = (/obj/structure/table,/obj/item/weapon/paper/pamphlet,/turf/simulated/floor,/area/gateway) +"aDH" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/gateway) "aDI" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/gateway) -"aDJ" = (/obj/structure/table,/obj/item/device/radio/off{pixel_y = 6},/obj/item/device/radio/off{pixel_x = 6; pixel_y = 4},/obj/item/device/radio/off{pixel_x = -6; pixel_y = 4},/obj/item/device/radio/off,/turf/simulated/floor,/area/gateway) +"aDJ" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/plating,/area/maintenance/fpmaint) "aDK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/item/weapon/cigbutt,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/port) "aDL" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/maintenance/fpmaint) "aDM" = (/obj/item/device/radio/intercom{freerange = 1; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -30},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/table/reinforced,/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = -1},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva) @@ -1626,7 +1626,7 @@ "aFn" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/table/reinforced,/obj/machinery/cell_charger,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/item/weapon/cable_coil{pixel_x = 3; pixel_y = -7},/obj/item/weapon/cable_coil{pixel_x = 3; pixel_y = -7},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva) "aFo" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) "aFp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/tank/oxygen,/obj/item/weapon/tank/oxygen,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor/plating,/area/storage/emergency2) -"aFq" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/device/modkit/tajaran,/obj/item/device/modkit/tajaran,/obj/item/device/modkit/tajaran,/obj/item/device/suit_cooling_unit,/obj/item/device/suit_cooling_unit,/obj/item/device/suit_cooling_unit,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva) +"aFq" = (/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/effect/landmark{name = "JoinLateCryo"},/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/sleep/cryo) "aFr" = (/obj/machinery/light_switch{pixel_y = 28},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/wood,/area/bridge/meeting_room) "aFs" = (/obj/machinery/door/airlock/glass{name = "Central Access"},/turf/simulated/floor,/area/hallway/primary/fore) "aFt" = (/obj/machinery/door/airlock/glass{name = "Central Access"},/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/fore) @@ -1790,11 +1790,11 @@ "aIv" = (/obj/machinery/light_switch{pixel_x = 27},/obj/structure/flora/pottedplant{tag = "icon-plant-21"; icon_state = "plant-21"},/turf/simulated/floor/carpet{icon_state = "carpetnoconnect"},/area/crew_quarters/sleep/bedrooms) "aIw" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/crew_quarters/sleep) "aIx" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fsmaint) -"aIy" = (/obj/structure/closet/secure_closet/exile,/turf/simulated/floor,/area/gateway) -"aIz" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/light_switch{pixel_y = -25},/turf/simulated/floor,/area/gateway) +"aIy" = (/obj/machinery/alarm{pixel_y = 23},/obj/effect/landmark{name = "JoinLateCryo"},/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/sleep/cryo) +"aIz" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/landmark{name = "JoinLateCryo"},/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/sleep/cryo) "aIA" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/wall,/area/crew_quarters/sleep/bedrooms) -"aIB" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/closet/l3closet/scientist,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/gateway) -"aIC" = (/obj/machinery/light{dir = 4},/obj/structure/closet/l3closet/scientist,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/gateway) +"aIB" = (/obj/effect/landmark{name = "JoinLateCryo"},/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/sleep/cryo) +"aIC" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/obj/structure/window/reinforced,/obj/machinery/light_switch{pixel_x = -24},/turf/simulated/floor{icon_state = "dark"},/area/gateway) "aID" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/stool/bed,/obj/item/weapon/bedsheet/mime,/turf/simulated/floor/carpet{icon_state = "carpetnoconnect"},/area/crew_quarters/sleep/bedrooms) "aIE" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva) "aIF" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva) @@ -1959,9 +1959,9 @@ "aLI" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 32},/turf/simulated/floor{icon_state = "warningcorner"; dir = 4},/area/hallway/primary/port) "aLJ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor/plating,/area/maintenance/fsmaint) "aLK" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor,/area/hallway/primary/port) -"aLL" = (/turf/simulated/floor{icon_state = "warningcorner"; dir = 8},/area/hallway/primary/port) +"aLL" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "dark"},/area/gateway) "aLM" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = "0"},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/crew_quarters/fitness) -"aLN" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/primary/port) +"aLN" = (/obj/machinery/camera{c_tag = "Gateway"; dir = 4; network = list("SS13")},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/vending/coffee,/turf/simulated/floor,/area/gateway) "aLO" = (/obj/machinery/door/airlock/glass{name = "Central Access"},/turf/simulated/floor{icon_state = "warningcorner"; dir = 4},/area/hallway/primary/port) "aLP" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/turf/simulated/floor,/area/hallway/primary/central) "aLQ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "escapecorner"},/area/crew_quarters/fitness) @@ -2072,7 +2072,7 @@ "aNR" = (/mob/living/simple_animal/cow{name = "Betsy"},/turf/simulated/floor/grass,/area/hydroponics) "aNS" = (/obj/structure/flora/ausbushes/sparsegrass,/turf/simulated/floor/grass,/area/hydroponics) "aNT" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hydroponics) -"aNU" = (/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/sleep/cryo) +"aNU" = (/turf/simulated/floor,/area/gateway) "aNV" = (/obj/machinery/bookbinder{pixel_y = 0},/turf/simulated/floor/wood,/area/library) "aNW" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/wood,/area/library) "aNX" = (/obj/machinery/photocopier,/turf/simulated/floor/wood,/area/library) @@ -2109,7 +2109,7 @@ "aOC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall/r_wall,/area/crew_quarters/sleep/cryo) "aOD" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = "0"},/turf/simulated/floor/plating,/area/crew_quarters/fitness) "aOE" = (/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/sleep/cryo) -"aOF" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/sleep/cryo) +"aOF" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/sign/biohazard{pixel_x = 32},/obj/structure/closet/wardrobe/xenos,/turf/simulated/floor,/area/gateway) "aOG" = (/obj/machinery/cryopod,/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/sleep/cryo) "aOH" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=QM"; location = "CHW"},/turf/simulated/floor,/area/hallway/primary/central) "aOI" = (/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central) @@ -2242,7 +2242,7 @@ "aRf" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor/plating,/area/maintenance/fsmaint2) "aRg" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/beach/water{tag = "icon-seadeep"; icon_state = "seadeep"},/area/crew_quarters/fitness) "aRh" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/plating,/area/maintenance/fsmaint2) -"aRi" = (/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/sleep/cryo) +"aRi" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/device/modkit/tajaran,/obj/item/device/modkit/tajaran,/obj/item/device/modkit/tajaran,/obj/item/device/suit_cooling_unit,/obj/item/device/suit_cooling_unit,/obj/item/device/suit_cooling_unit,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva) "aRj" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/crew_quarters/locker) "aRk" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor,/area/crew_quarters/locker) "aRl" = (/obj/structure/reagent_dispensers/fueltank,/obj/machinery/light_switch{pixel_y = 28},/turf/simulated/floor,/area/crew_quarters/locker) @@ -2254,11 +2254,11 @@ "aRr" = (/obj/machinery/vending/cigarette,/turf/simulated/floor,/area/crew_quarters/locker) "aRs" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor,/area/crew_quarters/locker) "aRt" = (/obj/structure/closet/secure_closet/personal,/turf/simulated/floor,/area/crew_quarters/locker) -"aRu" = (/obj/machinery/camera{c_tag = "Gateway"; dir = 4; network = list("SS13")},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/table,/obj/structure/sign/biohazard{pixel_x = -32},/obj/item/weapon/storage/firstaid/regular,/turf/simulated/floor,/area/gateway) +"aRu" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/closet/wardrobe/black,/turf/simulated/floor,/area/gateway) "aRv" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/table,/obj/item/weapon/cable_coil/random,/obj/item/weapon/cable_coil/random,/turf/simulated/floor,/area/storage/art) "aRw" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/storage/art) "aRx" = (/obj/machinery/vending/cola,/turf/simulated/floor{icon_state = "neutral"; dir = 5},/area/crew_quarters/fitness) -"aRy" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/table,/obj/machinery/recharger{pixel_y = 0},/obj/structure/sign/biohazard{pixel_x = 32},/turf/simulated/floor,/area/gateway) +"aRy" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -30},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/vending/cola,/turf/simulated/floor,/area/gateway) "aRz" = (/obj/machinery/door/airlock{name = "Port Emergency Storage"; req_access_txt = "0"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/storage/emergency2) "aRA" = (/obj/machinery/camera{c_tag = "Vault"; dir = 4; network = list("SS13")},/obj/structure/closet/crate{name = "Gold Crate"},/obj/item/stack/sheet/mineral/gold{pixel_x = -1; pixel_y = 5},/obj/item/stack/sheet/mineral/gold{pixel_y = 2},/obj/item/stack/sheet/mineral/gold{pixel_x = 1; pixel_y = -2},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -30},/obj/item/weapon/storage/belt/champion,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor{icon_state = "vault"; dir = 1},/area/security/nuke_storage) "aRB" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/storage/tools) @@ -2504,7 +2504,7 @@ "aWh" = (/obj/machinery/processor,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen) "aWi" = (/obj/effect/landmark/start{name = "Botanist"},/turf/simulated/floor,/area/hydroponics) "aWj" = (/obj/structure/table,/obj/machinery/light{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/turf/simulated/floor,/area/storage/primary) -"aWk" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/gateway) +"aWk" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/table,/obj/item/weapon/deck,/turf/simulated/floor,/area/gateway) "aWl" = (/obj/structure/table/woodentable,/obj/item/weapon/paper,/turf/simulated/floor/wood,/area/library) "aWm" = (/obj/structure/stool/bed/chair/comfy/black{dir = 8},/turf/simulated/floor/wood,/area/library) "aWn" = (/obj/structure/table/woodentable,/obj/item/device/camera_film,/obj/item/device/camera_film,/turf/simulated/floor/wood,/area/library) @@ -2514,7 +2514,7 @@ "aWr" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/crew_quarters/sleep) "aWs" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/gateway) "aWt" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint2) -"aWu" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -30},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor,/area/gateway) +"aWu" = (/obj/machinery/gateway,/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/obj/effect/landmark{name = "JoinLateGateway"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/gateway) "aWv" = (/obj/structure/table/reinforced,/obj/machinery/light{dir = 1},/obj/machinery/faxmachine{anchored = 0; department = "Internal Affairs"},/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice) "aWw" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/hand_labeler,/obj/item/weapon/pen,/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice) "aWx" = (/obj/structure/stool,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor,/area/gateway) @@ -2710,7 +2710,7 @@ "baf" = (/obj/machinery/portable_atmospherics/pump,/turf/simulated/floor{icon_state = "delivery"},/area/crew_quarters/locker) "bag" = (/obj/machinery/portable_atmospherics/scrubber,/turf/simulated/floor{icon_state = "delivery"},/area/crew_quarters/locker) "bah" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/crew_quarters/locker) -"bai" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/closet/emcloset,/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/turf/simulated/floor,/area/gateway) +"bai" = (/obj/machinery/gateway{dir = 6},/obj/effect/landmark{name = "JoinLateGateway"},/turf/simulated/floor{icon_state = "vault"; dir = 1},/area/gateway) "baj" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/turf/simulated/floor,/area/storage/primary) "bak" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall,/area/storage/primary) "bal" = (/turf/simulated/wall,/area/quartermaster/storage) @@ -2893,7 +2893,7 @@ "bdG" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/crew_quarters/fitness) "bdH" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_x = -2; pixel_y = -28},/turf/simulated/floor{dir = 10; icon_state = "neutral"},/area/crew_quarters/fitness) "bdI" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/crew_quarters/fitness) -"bdJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/wall,/area/library) +"bdJ" = (/obj/machinery/gateway{dir = 10},/obj/effect/landmark{name = "JoinLateGateway"},/turf/simulated/floor{icon_state = "vault"; dir = 4},/area/gateway) "bdK" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/crew_quarters/fitness) "bdL" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/crew_quarters/fitness) "bdM" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "solar_chapel_inner"; locked = 1; name = "Engineering External Access"; req_access = null; req_access_txt = "13"},/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) @@ -2932,7 +2932,7 @@ "bet" = (/turf/simulated/wall,/area/turret_protected/ai) "beu" = (/obj/structure/closet,/obj/item/weapon/storage/backpack,/turf/simulated/floor/plating,/area/maintenance/fpmaint) "bev" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) -"bew" = (/obj/machinery/gateway,/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/gateway) +"bew" = (/obj/machinery/door/airlock/maintenance{name = "Teleporter Maintenance"; req_access_txt = "17"},/obj/structure/sign/securearea{pixel_x = -32; pixel_y = 0},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/teleporter) "bex" = (/obj/machinery/vending/coffee,/turf/simulated/floor/wood,/area/crew_quarters/captain) "bey" = (/obj/structure/table/woodentable,/turf/simulated/floor/carpet,/area/crew_quarters/captain) "bez" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/fpmaint2) @@ -5056,7 +5056,7 @@ "bTl" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall/r_wall,/area/turret_protected/ai) "bTm" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/structure/lattice,/turf/space,/area) "bTn" = (/obj/structure/table/reinforced,/obj/item/stack/sheet/mineral/phoron,/obj/item/stack/sheet/mineral/phoron,/obj/item/stack/sheet/mineral/phoron,/obj/item/stack/sheet/mineral/phoron,/obj/item/stack/sheet/mineral/phoron,/obj/item/stack/sheet/mineral/phoron,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) -"bTo" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/plating,/area/maintenance/fpmaint) +"bTo" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall/r_wall,/area/bridge/meeting_room) "bTp" = (/obj/machinery/requests_console{announcementConsole = 1; department = "Bridge"; departmentType = 5; name = "Bridge RC"; pixel_y = -30},/turf/simulated/floor/wood,/area/bridge/meeting_room) "bTq" = (/turf/simulated/wall/r_wall,/area/hallway/primary/starboard) "bTr" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "heads_meeting"; name = "Meeting Room Window Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/bridge/meeting_room) @@ -8868,8 +8868,6 @@ "doB" = (/obj/machinery/light{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/obj/structure/table/reinforced,/obj/item/weapon/wrench,/obj/item/weapon/screwdriver,/obj/item/weapon/crowbar,/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 9},/area/mine/explored) "doC" = (/obj/machinery/mining/drill,/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/explored) "doD" = (/obj/machinery/light{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 5},/area/mine/explored) -"doE" = (/obj/machinery/door/airlock/maintenance{name = "Teleporter Maintenance"; req_access_txt = "17"},/obj/structure/sign/securearea{pixel_x = -32; pixel_y = 0},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/teleporter) -"doF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall/r_wall,/area/bridge/meeting_room) "dqT" = (/turf/simulated/mineral,/area/mine/unexplored) "dqU" = (/turf/space,/area/syndicate_station/mining) "dqV" = (/obj/structure/transit_tube{icon_state = "D-SE"},/obj/structure/lattice,/turf/space,/area) @@ -10705,23 +10703,23 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqYaqZaqYaaaaaaaaaaaaaaaaaaaaaalPaafaoTaoUaoUaoUaoUaoVaoWaoXaoYaoYaoYaoYaoZaafalPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapxapaagxapxarbarbarcaguarbarbarbareareareakKargarearearhariagharkalNaggalNarmalNalNakJagjagjbbNagjakpalpakOakMakLakLakLamaagjagtamcagqalNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalPaafapvapvapvapvapvaafaoPaafapvapvapvapvapvaafalPaaaaaaaaaaaaaaaaaaaaaaaaajiajiajiajiajiajiajiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafarwarxarwaaaaaaaaaaaaaaaaaaaaaalPaafapwapwapwapwapwaafaoWaafapwapwapwapwapwaafalPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaagapxaryaHDapxarEatVatXaNYaOtatYarbaWvarGarHarIarJarKaNCaMJaFsaNKarOarPaLEaLGaLGaLGaLGaNoaLJaLGaNoaLGaNraNnaLvaKWaNeaMTaNaajhaMNalNasdasealNaaaaafaKEaKzaKzaKDaKzaKzaKjaafaaaaaaaaaalQaaaaaaaaaaafaaaaaaaaaaoPaaaaaaaaaaafaaaaaaaaaalQaaaaaaaaaaaaaaaaaaaaaaaaajiajiajiajiajiajiajiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasjaPXaslaaaasmaPYasoaaaaafaspaqYaspaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaaaaafaaaaaaaaaaoWaaaaaaaaaaafaaaaaaaaaalQaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafapxapxapxapxaHDapxarEarAatXatWaOWasrarbaWwarIarIarIarJasuaOzaswasxaOXalNaMLaIkaMKaMKaMKaMUaOAaOBaGVaOCaGVaGVaGVaGVaGVaOyarTaMzasPasPasPasPasPasPasPasPaLMasRasRasRasRasRaLMasPaaaaaaaaaalPaafaojaojaojaojaojaafaoPaafaojaojaojaojaojaafalPaaaaaaaaaaaaaaaaaaaaaaaaaaaajiajiajiajiajiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasSasTasUasTasSasVasWasVasSaafaspbebaOkaaaaaaaaaaaaaaaaaaaaaalPaafaolaolaolaolaolaafaoWaafaolaolaolaolaolaafalPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafapxasZataapxaHDapxauParAatXatWasqauNarbatearIatfatfarJatgaOzapAapEaOYalNaNDaNFaNIaSLaHqaHratoatpaGVaNObkqaNUaNpaRiaRQaSfarTaYEatAaJsavYaRgaKkaQBaRxasPaNgasRasRasRasRasRaLMasPaafaaaaaaalQaafaoMaoNaoNaoNaoNaoOaoPaoQaoRaoRaoRaoRaoSaafalPaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatHasTatIasTatHasVatJasVatHatKatLatMaPLatOatOatPatKatKaafaaaalPaafaoTaoUaoUaoUaoUaoVaoWaoXaoYaoYaoYaoYaoZaafalPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafapxbeuatRatSapbapxarEarAatXatWasqarEarbauaaubaucaucaudaueaOzapAapEapFalNaNDaNFaHyaPqaHqaHrauhauiaGVaPHaPCaOEaOEaOFaOGaOParTaSOauqaJsavYavYaKkaSFaMmaTsaODasRasRasRasRasRaOSasPasPasPaaaalQaaaapvapvapvapvapvaafaoPaafapvapvapvapvapvaaaampaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasSasTasUasTasSasVasWasVasSaafaspbebaOkaaaaaaaaaaaaaaaaaaaaaalPaafaolaolaolaolaolaafaoWaafaolaolaolaolaolaafalPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafapxasZataapxaHDapxauParAatXatWasqauNarbatearIatfatfarJatgaOzapAapEaOYalNaNDaNFaNIaSLaHqaHratoatpaGVaNObkqaIyaNpaFqaRQaSfarTaYEatAaJsavYaRgaKkaQBaRxasPaNgasRasRasRasRasRaLMasPaafaaaaaaalQaafaoMaoNaoNaoNaoNaoOaoPaoQaoRaoRaoRaoRaoSaafalPaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatHasTatIasTatHasVatJasVatHatKatLatMaPLatOatOatPatKatKaafaaaalPaafaoTaoUaoUaoUaoUaoVaoWaoXaoYaoYaoYaoYaoZaafalPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafapxbeuatRatSapbapxarEarAatXatWasqarEarbauaaubaucaucaudaueaOzapAapEapFalNaNDaNFaHyaPqaHqaHrauhauiaGVaPHaPCaIBaOEaIzaOGaOParTaSOauqaJsavYavYaKkaSFaMmaTsaODasRasRasRasRasRaOSasPasPasPaaaalQaaaapvapvapvapvapvaafaoPaafapvapvapvapvapvaaaampaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatHauzauAauBatHauCauDauEatHaqYaqYauFauGauHauIauJaKFatKaaaaaaampaaaapwapwapwapwapwaafaoWaafapwapwapwapwapwaaaalPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaagapxauLapaapxaHDapxarEarAaMQarCasqarBarbaHAauSauTauTaLxaHCaKLaHsaHtaJbaHvaHwaHxaHyaHzaHqaHravdauiaGVaGVaGVaGWaGWaGXaGVaGVarTaJvaJqaJsavYavYaKkaKoaJCaKiaGZasRasRasRasRasRaGUaGSavqavraaaalQaaaaafaaaaafaafaaaaaaaoPaaaaaaaafaaaaaaaafaaaalPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatHavsavtavuatHavsavtavuatHaUlaTiaTaaTaaTaaTaaWtaVtarwaaaaaaalPaaaaafaaaaafaafaaaaaaavAaaaaaaaafaaaaaaaafaaaalPaafaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaagapxapxapxapxaHDapxarbarbarbarbarbaYnaHIaHHaHGaHGaHGaHGaHKaHJaNqapEaJmalNaIjaIkaIhaIiaHYaIfaHNaHVaNQaLlavPavRavRaTIavRaKSavVavWavhaKPaviaviaKPaLcaKXaLaawbasRasRasRasRasRawbawcawdaweaaaalQalQalPaaaaaaaafaaaaaaaoPaaaaafaafaafaafalPalPalPaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaasSatHawfawgasSatHawfawgasSatKaZOatKatKatKatKatKaZeaspaaaaaaalPalPalPaaaaaaaafaaaawjawkawjaafaafaafaafalPalPalPaafapxapxapxapxawlawmawmawmawmawmawmawmawnapxapxawoawpawqapxawrawsaNJbTobdwaJfaJfaJfaJfaJfbcGaJfaJpaLDaJfaJfaJeaJeaJlaIYaJaaJnahmaIxaIAaIDaITaIvaHravdaIwawLawLbcxawMawNaVcawLauiawPawQaLQayMayMayMayMaMdaMmaMqawUasRasRasRasRasRawUawVawdaweaaaaaaaaaaafaafaaaaafaaaaaaawWaaaaaaaafaaaaaaaafaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaasSatHawfawgasSatHawfawgasSatKaZOatKatKatKatKatKaZeaspaaaaaaalPalPalPaaaaaaaafaaaawjawkawjaafaafaafaafalPalPalPaafapxapxapxapxawlawmawmawmawmawmawmawmawnapxapxawoawpawqapxawrawsaNJaDJbdwaJfaJfaJfaJfaJfbcGaJfaJpaLDaJfaJfaJeaJeaJlaIYaJaaJnahmaIxaIAaIDaITaIvaHravdaIwawLawLbcxawMawNaVcawLauiawPawQaLQayMayMayMayMaMdaMmaMqawUasRasRasRasRasRawUawVawdaweaaaaaaaaaaafaafaaaaafaaaaaaawWaaaaaaaafaaaaaaaafaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawXawYawYawYawZaxaawYawYaxbaxcbdSaxbaxbaxbbdUatKbdVaspaaaaafaafaaaaaaaaaaaaaafaaaaxgbdWaKgaafaaaaafaaaaaaaaaaaaaaaapxapaapaaxjapaapaapaapaapaapaapaapaaxkaxlaxmaxnaxnaxnaxnaxnaxnaxoaJBaMMaxraxraxraxraxsaJAaxraMIaxraxsaxraxraxraxraxwaxxaxyaKdaKaaHxaJRaJRaJRaHrauhaJQawLawOawMaxCawMaVeaxEaWraxGaxHaMuaMmaMmaMmaMBaMEaMGaMHaJwasRasRasRasRasRaJxaJyaxNaxOaaaaaaaaaaaaaafaaaaafaaaaxPaxQaxPaaaaafaaaaaaaafaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxRaxSaxTaxUaxVaxTaxTaxWaxUaxTaxXaxYaxZaxZbjWatKbdVatLaafaafaaaaaaaaaaaaaaaaafaybaycaydbdBayfaaaaafaaaaaaaaaaaaaaaapxapaapxaygayhayiayiayiayiayiayiayiayjaygaykaylaylaylaylaylaylaylaQnaynaxrayoaypayqayrbdCbbraPaaPdaywayxaypayyaxrayzapEayAalNaQvaNFaNIbdEaHqaHravdbdFayDaxFaxFayEayFayGbeDayIavVbdHbdcbbUbbUbbUbaNbaTaPnbavbdGasRasRasRasRasRbdIasPasPasPaaaaaaaaaaafaafaafaafaaaaySbjYaySaaaaafaaaaaaaafaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafatHayUayVayUayWaxTaxTayXayUayVayUayYaxSaxVbjZatHbdVatKatKazaatOatOatOatOatPatKazbazcazdazeazbapxapxawoawpawqapxapxapxapaaryaygaaaaafaaaaafaaaaafaaaaafaaaaygaykaylazfazgazhaziazjaylaQnapaaxrazkazkazlazmaznazoaPpaBdazrazsaztaztaxrayzapEazualNaQvaNFaHybdEaHqaHrauhazvbbOazxazyazzazAazBazBazCazBasPbeXbfGbeFbeGbeHbeObeEasPbdLasRasRasRasRasRbdKasPaafaaaaaaaaaaaaaafaafaaaaafazLazMbdMazOazPaafaaaaaaaafaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafazQasSazRavtazSazTazUazVazWazSavtazXazYasSazZblwatHblyblAblAblAblAblAblAaVtbezaAeazbaAfaAgaAhazbbghapaapaapaapaapaapaapaapaaAjaygaafaAkaAkaAkaAkaAkaAkaAkaafaygaykaylaAlaAmaAnaAoaAlaylaQnaApaxraxraxraxrbkiaAraypaAsaArblqaxraxraxraxrayzapEaAualNaQvaNFaHybdEaHqaHravdaAvazBazBazBazBazBazBaAwaAxaAyazBasPasPasPasPbgobgrasPasPbdKasRasRasRasRasRbdKasPaaaaaaaaaaaeaaaaaaaaaaaaaafaAAaABbdTaADaAAaafaaaaaaaafaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxRayVaAEaAFaAFaAFaAFaAGayVaxRaAHasSaAIblNaAKaAKaAKaAKaAKaAKaAKaAKaZebfxbfzazbbckaANaAOazbaAPaAQaAPaAPaAPaAPaAPaAPaAPaAPaARaaaaAkaASaATaAUbbTaAWaAkaaaaygaykaylaAlaAXbewaAZaAlaylaQnapxaxraBaaBbazlblEaBdazoazpaBdblGazsaBfaBfaxrayzapEayAalNbdZaIkaIhbdEbejbelavdaAvaHraBiaAxaBjaBjazBaAwaBkaAyazBaBlaBmaBnaBobhDaULaBqaafbfBbfdbfdbfdbfdbfdbfgaafaaaaaaaaaaaaaaaaaaaaaaaaaafaAAaBuaBvaBwaAAaafaaaaaaaBqaBqaBqaBqaBqbhqbhCaBqaBqaBqaBqaBqaBqaBqbgHaBFaBFaBFaBGaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaBHaBIaBJaBIaBIaDRaDSaBIaBIaBJaBMaBNasSbeAbfbaQlaQjaSQaBSaBTaBUaBVaAKaZeaPOatKazbazbaBXaBYaARaBZaCaaCbaCcaCdaCeaCfaCgaXEaCiaARaafaAkaQmaCkaClaCmaCnaAkaafaygaykaylaCoaCpaCqaCpaCraylaQnaCsaxrayoaypaCtaCuaAraCvaAsaAraCwaCxaypaCyaxrayzapEayAalNaQvaIAaIDaQxaIvaHraCAaCBaHraCCaAxaAxaAxazCaCDaCEaCFazBaCGaCHaCIaCJaYFaULaBqaaaaafaaaaafaaaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaAAaZbaCMaCNaAAaBqaCOaCPaBqaQSaQDaQDaQDaQDaQDaQDaQFaRdaRdaRdaRdaRfaRdaRdaRdaRhaDaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBHaBMaBIaDbaDcaDcaDdaDeaDfaDgaDhaDcaDcaDiaDjayUayWaZuaAKaRqaDmaDnaDoaDnaDpaDqbfCaDsaqYaZnaDuaDvaAcaDwaDxaDyaDzaDzaDzaDAaDzaDzaDBaCaaARaaaaAkaRAaRTaRVaCmaSaaAkaaaaygaykaylaRuaDHaDIaDJaRyaylaQnaDLaxraxraxraxraDMaAraypaDNaBdaDOaTuaypaDQaVHaVzaVAaVpaVwaKJaVGaShaShaShaSEaScaVdbfFaTnbabaSPaSPaSPaUgaSPaTFaTTaTUaTVaUkaUGaVQaULaBqaBqaBqaBqaBqaBqaBqaBqaBqaCOaCPaBqaBqaBqaCOaEjaEkaBqaBqaAAaAAaElaEmaAAaEnaVqaVoaVoaVsaEsaEsaEsaEsaEsaWyaVraEuaEuaEuaEuaUNaEuaEyaEyaVnaEyaEyaEyaEyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDiaEBaECaEDaDcaEEaDcaEEaDcaEEaDcaEEaDcaEFaEGazSayWaEHaAKaVuaEJaEKaELaEMaENaAKbirbjoaAcaEQaAcaERaqYaAPaESaDBaDzaDzaDzaDzaDzaDzaETaWjaWgaVJaVIaWMaWNaWKaWLaWJaAkaafaygaWIaWpaWuaWxaWqaWsaWkaWpaZdaZcaxraFmaypazlaFnaBdazoaFoaAraCwaVvaypaFqaVHaWTaFsaFtaXcbdZagjagjagjagjaVEaVFaWSaVxaVybazaVxaXfaVxaXeaVxaXgaXhaFGaFHaFIaBoaXjaXmaXXaXVaXVaXCaYcaXYaXYaXYaXYaXYbaCaXYaXYaYwaYgaYeaXnaYHaYGaYxaWOaWPaWQaWQaWQaWRaEsaEsaGeaEsaGfaGgaGhaEsaEuaWUaEuaGjaXlaXkaGmaGnaGoaIbasHaGraGsaGtaGuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGvaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaXoaDcaDcaBJaDcaEEaDcaEEaGxaEEaDcaEEaDcaEFaEGazSayWaGyaAKaYQaYRaYKaYPaYKaQlaQlaYJaYNaYOaYLaYMaYLaYLbakbajaGKaGLaGLaGLaGMaGLaGLaGNaGOaARaaaaZXaAkayJbjVayJaAkaAkaaaaygavOaylbaiaZIaZiaZqaZDaZEaZhbglaxraHbaypaCxaCuaAraypaAsaAraCwaZgaypaHdawGaYhaHfaHgaUnaYfalNalNalNalNalNaHjaYbazBaHlaAxazBaHmazBaHnazBaHobcvbcwbcNbczbdNbcXaYUbdlbdmbbvbdAbbwbbvbbvbbxbbzbbybbAbbybbFbbybbybbibcubcbbawbawbbEbaSbawbaxbawbaWaYIaHOaHPaHQaHRaHSaHTaEsaHUbaXaEuaHWaHXaYiaHZaGnaIaaIbasHaIcaEyaEyaEyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDiaIdaECaEDaDcaEEaDcaEEaDcaEEaDcaEEaDcaEFaEGazSaIeawzawyawxawuawuawuawzawCawDawzawAaImaInawBauKauKaAPaGOaIpaCaaIqaGOaGOaIraIsaItaIuaARaaaawaaaaavMavNavMaaaaafaaaaygavOaylaIyaIzavZaIBaICaylavLawhaxraIEaypazlaIFaIGazoaIHaIIaIJaIKaILaIMawGaBsaIOaIPavKaBKaISaaaaaaaUnaIUaIVaBLazBaIXaAxaAxaAxaCEaAxaAxaAxauOaBoaKyaBoaBoavJaBoaJcaBoaJdavHavGaJgaJhaJiaJjaJkavFaJjavEaJjaJjaJjaJjavDaJjaJjavCaJjaJjaJjaJjasIayRayvaAzaAiaBraBpazHbdJazIavpavlavmavnazFayNayPazDazEasHaIbaJDaJEaJFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJHaJIaBIaDbaDcaDcaDcaJJaDcaDcaJKaDcaDcaDiaJLaJMayWaxTaJNaJOaJOaJOaJOaJOaJOaJOaJPasDatKatKavkatKatKaAPaJSaJTaJUaJVaJVaJVaJVaJWaJXaJYaARaJZavaaKbaKcavbaKeaKbaKbaKfaygavcaylaylaylavzayJayLawGaUnavyaxraxraxraxraKlaKmaCxaCxaKnayHawGawGaxraxraIOaIOaIOaIOaKpaKqaKraKsaUnaKtaIVaKuazBazBazBazBazBazBazBazBazBauOaKwaKvaKxaIZauMavIaKBaKCaJdauyauWauXaKGaKHaJjaKIauVaKKawtaKKaKMaKNaKOauQaKQaKRauxaKTauUaKVaJjauwauvaKYaJraKZavxaJuaysaEsaLbauuaLdavfauoaveaunaEuaEyaLhasHaIbaLiaLjaLkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJHaBIaBJaBIaBIaDRaDSaBIaBIaBJaJIaLmasSaLnaxTawXaLoaLoaLpaLoaLqatHaLraLsasDaLtaLuaACaLwazwaLyaLzaLAaLzaLzaLzaLzaLzaLzaLzaLBaLCazNaAdaLFaLFayTaLHaLFaLFaLFaLIazKaLKaLLaLFazJaLNaLOaLPaxeaxfaMkaLSaxdaIPaLTaLTaLTaLTaLTaLTaLUaLVaLWaLXaLYaLZaMaaMbaMcaIOaIOaIOaDGaMeaMfaMeaMgaMhaMiaMjaIOaMkawwaBoaMlaxMaOOaMoaMnaMpaxKaMraMsaMtaJdaxLaMvaMwaMwaMxaJjaMyaxJaMAaxBaMAaMAaMCaMDaxDaMDaMFayOayCayQaMDaJjasIarZaHPaHPaCXaDFaHPaHPaEsaMOaMPaEuaytaMRaHZavTaEuaMSaymayeaIbaEyaEyaEyaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxRayVaAEaAFaAFaAFaAFaAGayVaxRaAHasSaAIblNaAKaAKaAKaAKaAKaAKaAKaAKaZebfxbfzazbbckaANaAOazbaAPaAQaAPaAPaAPaAPaAPaAPaAPaAPaARaaaaAkaASaATaAUbbTaAWaAkaaaaygaykaylaAlbdJaWubaiaAlaylaQnapxaxraBaaBbazlblEaBdazoazpaBdblGazsaBfaBfaxrayzapEayAalNbdZaIkaIhbdEbejbelavdaAvaHraBiaAxaBjaBjazBaAwaBkaAyazBaBlaBmaBnaBobhDaULaBqaafbfBbfdbfdbfdbfdbfdbfgaafaaaaaaaaaaaaaaaaaaaaaaaaaafaAAaBuaBvaBwaAAaafaaaaaaaBqaBqaBqaBqaBqbhqbhCaBqaBqaBqaBqaBqaBqaBqbgHaBFaBFaBFaBGaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaBHaBIaBJaBIaBIaDRaDSaBIaBIaBJaBMaBNasSbeAbfbaQlaQjaSQaBSaBTaBUaBVaAKaZeaPOatKazbazbaBXaBYaARaBZaCaaCbaCcaCdaCeaCfaCgaXEaCiaARaafaAkaQmaCkaClaCmaCnaAkaafaygaykaylaICaAlaLLaAlaCraylaQnaCsaxrayoaypaCtaCuaAraCvaAsaAraCwaCxaypaCyaxrayzapEayAalNaQvaIAaIDaQxaIvaHraCAaCBaHraCCaAxaAxaAxazCaCDaCEaCFazBaCGaCHaCIaCJaYFaULaBqaaaaafaaaaafaaaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaAAaZbaCMaCNaAAaBqaCOaCPaBqaQSaQDaQDaQDaQDaQDaQDaQFaRdaRdaRdaRdaRfaRdaRdaRdaRhaDaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBHaBMaBIaDbaDcaDcaDdaDeaDfaDgaDhaDcaDcaDiaDjayUayWaZuaAKaRqaDmaDnaDoaDnaDpaDqbfCaDsaqYaZnaDuaDvaAcaDwaDxaDyaDzaDzaDzaDAaDzaDzaDBaCaaARaaaaAkaRAaRTaRVaCmaSaaAkaaaaygaykaylaLNaNUaDIaNUaOFaylaQnaDLaxraxraxraxraDMaAraypaDNaBdaDOaTuaypaDQaVHaVzaVAaVpaVwaKJaVGaShaShaShaSEaScaVdbfFaTnbabaSPaSPaSPaUgaSPaTFaTTaTUaTVaUkaUGaVQaULaBqaBqaBqaBqaBqaBqaBqaBqaBqaCOaCPaBqaBqaBqaCOaEjaEkaBqaBqaAAaAAaElaEmaAAaEnaVqaVoaVoaVsaEsaEsaEsaEsaEsaWyaVraEuaEuaEuaEuaUNaEuaEyaEyaVnaEyaEyaEyaEyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDiaEBaECaEDaDcaEEaDcaEEaDcaEEaDcaEEaDcaEFaEGazSayWaEHaAKaVuaEJaEKaELaEMaENaAKbirbjoaAcaEQaAcaERaqYaAPaESaDBaDzaDzaDzaDzaDzaDzaETaWjaWgaVJaVIaWMaWNaWKaWLaWJaAkaafaygaWIaWpaRyaWxaWqaWsaRuaWpaZdaZcaxraFmaypazlaFnaBdazoaFoaAraCwaVvaypaRiaVHaWTaFsaFtaXcbdZagjagjagjagjaVEaVFaWSaVxaVybazaVxaXfaVxaXeaVxaXgaXhaFGaFHaFIaBoaXjaXmaXXaXVaXVaXCaYcaXYaXYaXYaXYaXYbaCaXYaXYaYwaYgaYeaXnaYHaYGaYxaWOaWPaWQaWQaWQaWRaEsaEsaGeaEsaGfaGgaGhaEsaEuaWUaEuaGjaXlaXkaGmaGnaGoaIbasHaGraGsaGtaGuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGvaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaXoaDcaDcaBJaDcaEEaDcaEEaGxaEEaDcaEEaDcaEFaEGazSayWaGyaAKaYQaYRaYKaYPaYKaQlaQlaYJaYNaYOaYLaYMaYLaYLbakbajaGKaGLaGLaGLaGMaGLaGLaGNaGOaARaaaaZXaAkayJbjVayJaAkaAkaaaaygavOaylaWkaZIaZiaZqaZDaZEaZhbglaxraHbaypaCxaCuaAraypaAsaAraCwaZgaypaHdawGaYhaHfaHgaUnaYfalNalNalNalNalNaHjaYbazBaHlaAxazBaHmazBaHnazBaHobcvbcwbcNbczbdNbcXaYUbdlbdmbbvbdAbbwbbvbbvbbxbbzbbybbAbbybbFbbybbybbibcubcbbawbawbbEbaSbawbaxbawbaWaYIaHOaHPaHQaHRaHSaHTaEsaHUbaXaEuaHWaHXaYiaHZaGnaIaaIbasHaIcaEyaEyaEyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDiaIdaECaEDaDcaEEaDcaEEaDcaEEaDcaEEaDcaEFaEGazSaIeawzawyawxawuawuawuawzawCawDawzawAaImaInawBauKauKaAPaGOaIpaCaaIqaGOaGOaIraIsaItaIuaARaaaawaaaaavMavNavMaaaaafaaaaygavOaylaCpaCoavZaDHaCqaylavLawhaxraIEaypazlaIFaIGazoaIHaIIaIJaIKaILaIMawGaBsaIOaIPavKaBKaISaaaaaaaUnaIUaIVaBLazBaIXaAxaAxaAxaCEaAxaAxaAxauOaBoaKyaBoaBoavJaBoaJcaBoaJdavHavGaJgaJhaJiaJjaJkavFaJjavEaJjaJjaJjaJjavDaJjaJjavCaJjaJjaJjaJjasIayRayvaAzaAiaBraBpazHaAZazIavpavlavmavnazFayNayPazDazEasHaIbaJDaJEaJFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJHaJIaBIaDbaDcaDcaDcaJJaDcaDcaJKaDcaDcaDiaJLaJMayWaxTaJNaJOaJOaJOaJOaJOaJOaJOaJPasDatKatKavkatKatKaAPaJSaJTaJUaJVaJVaJVaJVaJWaJXaJYaARaJZavaaKbaKcavbaKeaKbaKbaKfaygavcaylaylavzaAXazJayLawGaUnavyaxraxraxraxraKlaKmaCxaCxaKnayHawGawGaxraxraIOaIOaIOaIOaKpaKqaKraKsaUnaKtaIVaKuazBazBazBazBazBazBazBazBazBauOaKwaKvaKxaIZauMavIaKBaKCaJdauyauWauXaKGaKHaJjaKIauVaKKawtaKKaKMaKNaKOauQaKQaKRauxaKTauUaKVaJjauwauvaKYaJraKZavxaJuaysaEsaLbauuaLdavfauoaveaunaEuaEyaLhasHaIbaLiaLjaLkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJHaBIaBJaBIaBIaDRaDSaBIaBIaBJaJIaLmasSaLnaxTawXaLoaLoaLpaLoaLqatHaLraLsasDaLtaLuaACaLwazwaLyaLzaLAaLzaLzaLzaLzaLzaLzaLzaLBaLCazNaAdaLFaLFayTaLHaLFaLFaLFaLIazKaLKaLzaLzaxtaNmaLOaLPaxeaxfaMkaLSaxdaIPaLTaLTaLTaLTaLTaLTaLUaLVaLWaLXaLYaLZaMaaMbaMcaIOaIOaIOaDGaMeaMfaMeaMgaMhaMiaMjaIOaMkawwaBoaMlaxMaOOaMoaMnaMpaxKaMraMsaMtaJdaxLaMvaMwaMwaMxaJjaMyaxJaMAaxBaMAaMAaMCaMDaxDaMDaMFayOayCayQaMDaJjasIarZaHPaHPaCXaDFaHPaHPaEsaMOaMPaEuaytaMRaHZavTaEuaMSaymayeaIbaEyaEyaEyaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawXayVaMVaAFaAFaAFaAFaMWayVawXaAHasSaAIaMXaMYawvavSaNbaNbaNcatHaNdaLsaxAaNfaLuaxzaNhaNiaNjaNkaNlaLzaLzaLzaLzaLzaLzaLzaxhaxiaxuaLzaLzaLzaxpayuaLzaLzaLzaLzaxvaLzaLzaLzaxtaNmaLuaLPaIOaIOaIOaIOaIOaIOaIOaIOaIOaIOaIOaIOaNsaNtaNuaNvaNwaNxaNyaNzaNAaIOaIOaIOaLPaIOaIOaIOaIOaIOaIOaIOaIOaNBbNwaCjaCWaCQaMpaNEaMpaMpawEaNGaMsawiaJdawFawJawSaNLaNMaJjaNNawTaNPawHaNRaNSaJjaNTawIaNTaJjaJjaJjavCaJjaJjasIarZaNVaHPaHPaNWaHPaNXaEsaEuaEuaEuaEuaEuaEuavQaEuaIbaIbasHaIbaNZaOaaEyaaaaafaaaaaaaaaaaaaaaaaaaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafazQasSaMYavtazSaObaOcaOdaOeazSavtaOfaOgasSayWaxTaMYaOhaOiaNbaNbaNcatHaOjaLsasDaNfaLuasXaLAaLzaLzaLzaChaEzaBPaLzausardaOmaOraALatmarMaOmaOvaOwaOxathatlatkatjatiatcatbatbasYatdaNmaLuaLPaIOaOHaIOaOIaOIaOIaOIaOIaOIaOIaOIaOJaOKaOIaOIaOIaOIaOLaOIaOIaOIaOIaOIaOMaONaOIaOIaOIaOIaOIaOIaOIaIOaIOaIOaBoaAYasOaOQaOQaOQaORasQaNGaMsaBQaJdaJdaJdaJdaJdaOUaJjaOVasKasLasNaNPaNPaJjaOZasMaPbaPcaPbaPbasJaPeaJjasIarZaPfaPfaPgaPhaPiaPiaPjaEsaPkaPlaPmaEyaskaVbasbaIbaIbasHaIbaEyaPsaEyaPtaPtaPtaPuaPvaPwaaaaaaaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafatHaxRayVaJMayWaxTaxTayXaJMayVaJMaPxawYaPyaxTaxRaPzaPzaLpaPzaLqatHaPAaLsasDaPBaPBasCatzaPBaPEaPEaPEaPEaPEaPFaPGaPEaPEaPEaPEaPEasEaPIaPJaPIaPKasGaPMaLzaLAaPNasFaPPaPQaLAaLzaPRaPRaUnaIOaIOaIPaPTaKraKraPUaPUaPUaPUaPVawGawRaxqaPZaQaaQaaQbaQcaQaaQdaQeaQfawGaQgaPUaPUaPUaPUaKraKraQhaINaIOaIOaBoaQiashaQkaQkaQkaQkasyassasiaQoavXarFdZFaQsaQtaQuaJdaJdaszaQwasBaQyaQzaJjaQAasAaQCaQCaQCaQCascaQEaJjasaarZaQGaHPaPgaPhaHPaHPaQHaEsavjaQJaQKaEyaQLarpaPraSoaPoasgaIbaQQaQRaEyasfaQTaPtaQUaQVaQWaafaaaaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -10738,13 +10736,13 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbdQaWEaWFbeMaAbbeNbUVbePbePbeQbePbePbePbeRaPBaPBaPBaPBaOlaCSaZYbeSbeTbeUaYybeVbeWbUWaPEaPEaPEaPEbUmaPEcuRbfabalctebbHbcQcsXcsZbalbbJbarbfcbcSbcSbPhbfebarbULaIOaYVbTrbfhbgCbembfibfjbepaGibfkbaAbflbfmbfnbetbfobetbdfbfpbfqaCVbfrbfsbftbfubfubfvbclbfwawGcCTcuScFlcvvcxRdPwdPxdTPdPxcFHdPxcGedTQbTtdTSctbctbctaaZFaZFaZFaZFbfDaZFbfybfOaZFctccByctdbfIbWUcGxbfIbfKdTUdTVdTWaZFaZFaZFaZFaZFbfObfPbfDaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFbdzbfQbfRbfSbfTbfUbfVbbmbfWaafaaaaafaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbdQcpzcpvcqkcqxbfXbePbfYbfZbgabgabgbbgcbgdbgebgebgebgebPBbUubUrbUrbUtbUsbUrbUobUobUpbUobUnbUlbUlbSbbRucqMcrQbUCcrpbUBbUBcrocqYbalcqPbarbgybcSbcSbPhbgzbgAbffaIOaYVbaAbgCbTpbdabdabdabdaaGibgEbaAbaBbgFbgGbWJbgIbgJbgGbgKbaBaCVbURbUQbgNbgObgPbgQbgRbgSawGcrZaHfcrWawGbTqbTqbgUbgUbgUbgUcmTcmTcsUcsVcsrcsscsVcsUcmTcmTcmTckbckbckbckbckbbcqbcqcskbhbbhbbhbbhbbhbbktcslbcqcsYcsncsobhkbhkbhlbhlbhlbhlbhlbhmbhnbhnbhobhnaZFbhnbhobhnbhnbhpbTqcsJcsJbNtbhrbhgaPtaPtaPtaaaaaaaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbdQaZLaZMbeMaAbbhsbePbhtbePbhubhvbePbePbePaRebhwbhxbhxbTHaYyaZYbhzbcJbhAaYybUabTZbTTbTSbTVbTUbTXbTWbTYbTXbTMbTNbLkbTCbLkbLkcmKcmVclMbTbbhSbcSbcSbTLbhUbhVbffaIObhWbaAbhXbaAbhZbVnbibbSOaGibaAbaAbaBbiebifbigbihbiibijbikbaBaCVbTybimckrbiobipbgQbclbiqawGcnGcoacoNawGcqlcqncqSbTncrDcrGcrMcoOcqUcqVcrAcrBcogcofcpscoYcmTcmIcmWcmUcpMckbcnscpNcndcptbVUcktcktclSbktcggbiSbiScksbiSbiUbiUbhlbiVbiWbiXbhlbiYbiZbiYbhlbhmbhnbhpbNtbSQbTibSQbNtbThbTgbNtbjebTEbjgbhgaaaaaaaaaaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQaaachMaMYbbnayabjhbePbjibePbjjbjkbjlbQYbePbjnaReaXibcHbTjaYyaYyaYyaYyaYyaYybTAbjrbjsaRebjtbalbalbalbTzbalbalbalbrnbalbalbalbMVbalblubRFbjzbcSbcSbPhbjAbgAbSwaIObSybaAbjCbaAbaAbaAbaAdoFbTkbaAbTmbTlbjGbjHbbXbjIbbXbjJbjKbTvbTxbTybjNbclbjObjPbgQbjQbjRbaDbSNaIObDbcgQchOcgPcgjchNcjwckLciicjachochocgRcgScjtcjpciHciEciDciCciBciAckcckbcjDcgeclFcgecjvcjucgecgfbktcggbiSbkwcfKcgdbkzbkAbkBbkCbkDbkCbSjbkFbkGbkHbhlbkIbkJbkKbNtbSzbSEbSDbSMbNHbSAbNtbkRbkSbkTbhgaaaaaaaaaaaeaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQaaachMaMYbbnayabjhbePbjibePbjjbjkbjlbQYbePbjnaReaXibcHbTjaYyaYyaYyaYyaYyaYybTAbjrbjsaRebjtbalbalbalbTzbalbalbalbrnbalbalbalbMVbalblubRFbjzbcSbcSbPhbjAbgAbSwaIObSybaAbjCbaAbaAbaAbaAbTobTkbaAbTmbTlbjGbjHbbXbjIbbXbjJbjKbTvbTxbTybjNbclbjObjPbgQbjQbjRbaDbSNaIObDbcgQchOcgPcgjchNcjwckLciicjachochocgRcgScjtcjpciHciEciDciCciBciAckcckbcjDcgeclFcgecjvcjucgecgfbktcggbiSbkwcfKcgdbkzbkAbkBbkCbkDbkCbSjbkFbkGbkHbhlbkIbkJbkKbNtbSzbSEbSDbSMbNHbSAbNtbkRbkSbkTbhgaaaaaaaaaaaeaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazQasSbcFaAFaZMaTPaTPaTPbkUaTPbkVayWcViaxTbePbkWbkXbkYbkZblablbblcbldbldbldbldbXnbWDbWDbWDbTXbTXbTXbWCblhblhblhblibalbljblkbWEblmblnbloblpblpblrblschfckRcnZbgAbjzbcSbXvbWwbWxbWxbWRbEvbWMbXmbWXbWLbZTbWIbXmbWTbXkbXjbXibTvbTvbTvbTvbWHbTvbTvbTvbTvbWjbWGbWQbWSbWObWPbWKbWNbWsbWFbWVaIObDbbgUdVHdVIdVJcVwcVubgUcVvdUTcjtcjtcjtcjtcjtcjpdVzdVydVBdVAdVDdVCdVuckbdVwdVvcVjcgecjvcjucgedVLbktcggdVNbYedVMbYbbXHbXMbXFbXGbXGbXGbXUbXWbXAbXzbXybXxbXEbXDbXhbXgbXebNHbXcbXbbXfbNtbmPbkSbmsbhgaaaaaaaaaaaaaaaaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabmQcOncOfcOwcOocOxcOxcOGcUZaxTbePbmSbmTbkZbmUbePbePbePaPBbmVbmWbmXbmYbmXbmXbmXbmYbmXaPBaPBbalbalbalbmZbalblpblpbnablpblpblpblpblpbnbbVobndbcSbWebWdbWdbWdbWabWcbVYbVcbVgbWibWncrRbWfbWfbWhbWgbWqbWpbVsbWrbWobnxbnybnzbnAbnBbnCbnzbnDbnxbPVbTybnFbnGbnFbaDbaDbaDbWAbaDdUZaIObDbcgQchOcgPdVadVbbWBbgUdUSdUTdUXdUYdUVdUWdVndVmdVldVkcmTdVpdUEdVodVfdVedVddVccVhdVidVhdVgdVidVqbUedVrdVsdTXbnYdTYboabobbocbodboebofbofbogbkCbohbhlbWvbojbokbNtbVZbVAbVzbUJbVVbVXbNtbmPbkSborbhgaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaabmQcNOcLFcInaxSaxSaxSbosaxSaxSbePbotboubovbkZbePaaaaaaaaaaafaafbowbowbowbowbowbowbowaaaaaaboxboybozboAboBblpblpblpblpblpblpblpblpbUNbjzbUOdYAboEboFbarbarbVGbVHbaraUnboHboIbVEaUnboLboMboMbNsboMbVFbUGboMabLboQboRbnzboSbnBboSbnzboTboQbPVbVkboVbfuboWbVybVBbVDbUFbnFbpcaIObDbbgUbWmcqndUQdURdUNbixdUOdUPdUJdUKdULbVWdUGdUFdUIdUHcmTckbdUEdUDdUAckbdUCdUBdUydUxdUzdUzdUvdUwbktcggbiSdUubkxbkxboabpybpzbpAbpBbpCbpCbpDbpEbpFbhlbpGbojbpHbNtbUYbUTbUPbUJbNHbUIbNtbkRbkSbpMbhgaaaaaaaaaaaaaafbpNbpObMebpObMebpObpQaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacHGaxRcHMcHMbpRaTPbpSazQasSbpTbpSbePbpUbpVbpWbpXbePaaaaaaaaaaaaaaabowbowbowbowbowbowbowaaaaaabpYbpZblpbqabqbbqbbqbbqbbqbbqcbqbbqbbqbbqdbqebqfcGybqhbqibarbqjbPhbqkbqlbtfbffbqnbqoaUnaUnboMbqpbVdbqrbXdbTuboMbTwbVfbVhbqxbqybqzbqybqAbVibVjbTxbVkbqEbfubqFbaDbqGbnFbTIbnFbpcaIOcHTbgUdUjdUkdUhdUidUgbixdUedUfdUcdUddUadUbbZzdUsdUrdUqdUpbPZdUodUnbPZbPZbPZbPZdUmdUlbPZbPZbktdTZbktcggbiSdTXbnYdTYbrabrbbrcbrdbrebrebrebpDbkCbrfbrgbrhbkJbVlbNtbUEbUAbUzbUDbNHbUvbNtbUwbmrbhgbhgaaaaaaaaaaaaaafbrobrpbrqbrrbrrbrsbroaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowbrubrvbrwbrxblpblpblpbrybrybrybryboAblpblpblpbnbbqgbqTbrzboZbrCbrDbrEbPhbcSbrFbRgbffbqnbrHbrIbrJbNNbrLbPPbrNbPObNMboMaafbrQbrRbnzbqybrSbqybnzbrTbrUbPVbPWbrWbrXbrYbaDbrZbnFbOlaUnbpcbNybTDbNzbNAbNCbNDbPKbIibixbPMbPQbLDbPRbPubPSbLDbLDbPYbPUbPZbPZbQxbQpbQFbIrbQIbQHbQSbQJbQVbPZbJqbRabQWbQXbRfbRhbRbbRbbPGbsEbkBbsFbrebrebrebsGbkCbsHbrhbsIbsIbPHbrhbNEbNKbNJbNIbNHbNLbNtbmPbsPbhgaaaaaaaaaaaaaaaaafbsQbsRbrqbrrbrqbTGbMeaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowbSKbsUbSKbsVbsWblpblpblpblpblpblpboAblpbsXbalbalbsYbcSbndboCbtabtbbtcbPhbcSbcSbtdaIObqnbtebtfbtgbPrbtibtjbtkbPqbNxboMaafbrUbrUbIgbtobtpbnzbtqbOvbNgbPpbNqbtvbtvbtvbtvbtvbtvdoEawGbLTaHfaHfawGbMcbMmbLUbOIbPfbixbOLbOYbPubPvbPsbPtbOibOhbOgbNUbOybOubOkbOjbOCbOBbOAbOzbOGbOFbOEbODbNubPAbPAboDbPCbPDbPDbPDbtZbHWbkBbubbkCbkCbucbPgbkCbuebkIbOUbugbORbkIbMtbMCbMvbRqbAHbrhbNtbuobhgbhgbupbuqbuqbuqburbkIbrobrrbrqbrrbrrbSibroaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowbSKbsUbSKbsVbsWblpblpblpblpblpblpboAblpbsXbalbalbsYbcSbndboCbtabtbbtcbPhbcSbcSbtdaIObqnbtebtfbtgbPrbtibtjbtkbPqbNxboMaafbrUbrUbIgbtobtpbnzbtqbOvbNgbPpbNqbtvbtvbtvbtvbtvbtvbewawGbLTaHfaHfawGbMcbMmbLUbOIbPfbixbOLbOYbPubPvbPsbPtbOibOhbOgbNUbOybOubOkbOjbOCbOBbOAbOzbOGbOFbOEbODbNubPAbPAboDbPCbPDbPDbPDbtZbHWbkBbubbkCbkCbucbPgbkCbuebkIbOUbugbORbkIbMtbMCbMvbRqbAHbrhbNtbuobhgbhgbupbuqbuqbuqburbkIbrobrrbrqbrrbrrbSibroaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaeaaaaaaaaabowbowbowbowbowbowbowbNvbutbNvbuublpblpblpbrybrybrybryboAblpbuvbuwbalbuxbcSbndboCbuybuzbtcbOxbuBbqfbuCbuDbuEbpcbuFbtgbuGbuHbuIbuJbOmbMfboMbOpbOobNBbOnbuRbrSbuRbOvbOwbuTbuTbNqbuUbuVbuWbuXbuYbuZbMkawGbvcaIOaIOawGbLSbMnbMrbMBbMSbMTbMUbnebMLbMPbMbbMRbNabMZbMsbNbbApbHvbMYbMWbNlbNkbNGbNobNfbNebNibNhbMjbMlbMhbMibiSbvybvzbMgbvBbvBbkBbvCbvDbvEbkBbNVbkCbvGbLubvIbvJbOebvLbvMbOfbvObvPbvQbsIbkJbLVbLQbMubMNbMQbvVbvVbNcbvWbvXbpObMebNdbMebpObvZaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowbwabrvbwbbKOblpblpblpblpblpblpblpboAblpbuvbwdbalbwebegbndbncbqfbwgbqfbNFbcSbrFbRdbffaIObpcbuFbtgboMbwibwjbwkbwlbMdboMbwpbwnbHhbzzbNgbNjbNmbNnbwubGIbwwbNqbGCbwybwzbwAbwBbwBbnTbINbambdDaIRbgUbJfbLRbLNbLPbeZbixbLYbLZbLDbLXcbObLWbFNbLDbLAbLzbDcbDcbDcbDcbDcbHfbIIbHfbAqbLJbLGbAqbAqbAqbAqbLybiSbiSbkIbkIbkIbxbbkBbkBbkBbkBbkBbMMbxebxfbxgbxhbxibMobHMbMpbMqbojbojbxnbxobxpbJebJdbKfbKubMpbJgbMpbKEbkIbupbuqburbKLbkIbKMaaaaafaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowbNvbutbNvbxubxvblpblpbxwbSRbSSbSRbSXbSRbSYbTabSTbSUbSVbzmbFnbSWbTcbTdbSVbxFbxGbRgbffaIObxHbxIbxJboMbxKbxLbxMbxNbSdbRzbXwbSfbRUbRJbSubSvbSsbStbSkbSrbSebShbybbycbycbydbyebyfbQEbtvcbPbDNbONbgUbixcbQcciccjcarcawcaWcbabPucbccbebLWcfMbPucdkbWubRSceEceJcfQbDccckccFccEbAqbSCbTsbRebRvbAybAqbwNbRybRBbRwbRxbRpbRpbRibRmbRpbRtbRrbRsbREbRDbRpbRCbQubSPbyPbyQbSLbySbrhbrhbrhbyScglcgkbyVbupburbkIbojbvVbyWcfLcdQceFbzacfDaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From abc07e435c1b310993f684320b4b9f503bea18d7 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Tue, 24 Jun 2014 13:41:59 +0930 Subject: [PATCH 047/304] Minor formatting fix. --- code/modules/client/preferences.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 529746fe58..f2d835d2a5 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -247,8 +247,8 @@ datum/preferences dat += "
" dat += "Gender: [gender == MALE ? "Male" : "Female"]
" - dat += "Age: [age]" - dat += "Spawn Point: [spawnpoint]
" + dat += "Age: [age]
" + dat += "Spawn Point: [spawnpoint]" dat += "
" dat += "UI Style: [UI_style]
" From df99c593895198d74c60b6052736f58812297aa4 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Tue, 24 Jun 2014 13:44:52 +0930 Subject: [PATCH 048/304] Removed pointless option on cryopod. --- code/game/machinery/cryopod.dm | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm index 5246d97e32..ce9749402d 100644 --- a/code/game/machinery/cryopod.dm +++ b/code/game/machinery/cryopod.dm @@ -26,7 +26,7 @@ var/global/list/frozen_items = list() /obj/machinery/computer/cryopod/attack_ai() src.attack_hand() -obj/machinery/computer/cryopod/attack_hand(mob/user = usr) +/obj/machinery/computer/cryopod/attack_hand(mob/user = usr) if(stat & (NOPOWER|BROKEN)) return @@ -43,12 +43,11 @@ obj/machinery/computer/cryopod/attack_hand(mob/user = usr) dat += "View storage log.
" dat += "Recover object.
" dat += "Recover all objects.
" - dat += "Revive crew.

" user << browse(dat, "window=cryopod_console") onclose(user, "cryopod_console") -obj/machinery/computer/cryopod/Topic(href, href_list) +/obj/machinery/computer/cryopod/Topic(href, href_list) if(..()) return @@ -95,9 +94,6 @@ obj/machinery/computer/cryopod/Topic(href, href_list) I.loc = get_turf(src) frozen_items -= I - else if(href_list["crew"]) - user << "\red Functionality unavailable at this time." - src.updateUsrDialog() return @@ -240,7 +236,7 @@ obj/machinery/computer/cryopod/Topic(href, href_list) current_mode.possible_traitors.Remove(occupant) // Delete them from datacore. - + if(PDA_Manifest.len) PDA_Manifest.Cut() for(var/datum/data/record/R in data_core.medical) From 226266154995e89f6f3d5fa9520164acd96b3f8d Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Tue, 24 Jun 2014 14:03:11 +0930 Subject: [PATCH 049/304] Ravensdale thinks the gateway has lore problems, commenting it out of spawn. --- code/modules/spawnpoints.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/spawnpoints.dm b/code/modules/spawnpoints.dm index 71692f01cc..c701a65c6a 100644 --- a/code/modules/spawnpoints.dm +++ b/code/modules/spawnpoints.dm @@ -19,13 +19,13 @@ var/list/spawntypes = list() ..() turfs = latejoin -/datum/spawnpoint/gateway +/*/datum/spawnpoint/gateway display_name = "Gateway" msg = "has completed translation from offsite gateway" /datum/spawnpoint/gateway/New() ..() - turfs = latejoin_gateway + turfs = latejoin_gateway*/ /datum/spawnpoint/cryo display_name = "Cryogenic Storage" From 24730cfd9facb586226f563fd6ef2479efe6e72d Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Tue, 24 Jun 2014 14:11:08 +0930 Subject: [PATCH 050/304] Drones now have plasma cutters instead of emags. --- code/modules/mob/living/silicon/robot/robot_modules.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index 5e73996377..5ebaf5df7c 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -306,8 +306,8 @@ src.modules += new /obj/item/weapon/matter_decompiler(src) src.modules += new /obj/item/weapon/reagent_containers/spray/cleaner/drone(src) - src.emag = new /obj/item/weapon/card/emag(src) - src.emag.name = "Cryptographic Sequencer" + src.emag = new /obj/item/weapon/pickaxe/plasmacutter(src) + src.emag.name = "Plasma Cutter" for(var/T in stacktypes) var/obj/item/stack/sheet/W = new T(src) From 5811e8f86f64166397ee5953220824ee1c3ae8fd Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Tue, 24 Jun 2014 14:27:59 +0930 Subject: [PATCH 051/304] Cat icons/inhands. --- icons/mob/head.dmi | Bin 109518 -> 110003 bytes icons/mob/items_lefthand.dmi | Bin 149780 -> 150282 bytes icons/mob/items_righthand.dmi | Bin 151338 -> 151800 bytes icons/obj/objects.dmi | Bin 121280 -> 122711 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi index 4d21da4b7d5eafc3a6b3182f51ef793fb82a744e..a36dcfbbdca4f317f0df7575f2112288618f248c 100644 GIT binary patch delta 11971 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 delta 9998 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 F{|9gRqK*In diff --git a/icons/mob/items_righthand.dmi b/icons/mob/items_righthand.dmi index eccf612ecb5dd010a5777a515ab1503238bfa1a5..4d4722b380e850c99faea50dc215f716ffb7a49c 100644 GIT binary patch delta 10506 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 MsHsw_Wcl*{03yjI?f?J) delta 9991 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
Z@Jcx#?q<6Ip@(0#)j+0hiuN$HCxU- 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 delta 24852 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 K_g=^8(SHF!jogy} From b67bb6470de83839ce917164291d1cc63528c58e Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Tue, 24 Jun 2014 14:41:08 +0930 Subject: [PATCH 052/304] Made cats pick-up-able. --- code/modules/mob/holder.dm | 10 +++++++++- .../mob/living/simple_animal/friendly/cat.dm | 19 +++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/holder.dm b/code/modules/mob/holder.dm index a31c958b2c..f7d495f6ed 100644 --- a/code/modules/mob/holder.dm +++ b/code/modules/mob/holder.dm @@ -48,4 +48,12 @@ name = "maintenance drone" desc = "It's a small maintenance robot." icon_state = "drone" - origin_tech = "magnets=3;engineering=5" \ No newline at end of file + origin_tech = "magnets=3;engineering=5" + + +/obj/item/weapon/holder/cat + + name = "cat" + desc = "It's a cat. Meow." + icon_state = "cat" + origin_tech = null \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm index 92a27c27b7..a8a9122ef8 100644 --- a/code/modules/mob/living/simple_animal/friendly/cat.dm +++ b/code/modules/mob/living/simple_animal/friendly/cat.dm @@ -60,6 +60,25 @@ stop_automated_movement = 1 walk_to(src,movement_target,0,3) + +/mob/living/simple_animal/cat/MouseDrop(atom/over_object) + + var/mob/living/carbon/human/H = over_object + if(!istype(H)) return ..() + + //This REALLY needs to be moved to a general mob proc somewhere. + if(H.a_intent == "help") + var/obj/item/weapon/holder/cat/C = new(loc) + src.loc = C + C.name = loc.name + C.attack_hand(H) + H << "You scoop up [src]." + src << "[H] scoops you up." + H.status_flags |= PASSEMOTES + return + else + return ..() + //RUNTIME IS ALIVE! SQUEEEEEEEE~ /mob/living/simple_animal/cat/Runtime name = "Runtime" From 114e42b06b217f65387ad89939d862477ae38974 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Tue, 24 Jun 2014 14:49:08 +0930 Subject: [PATCH 053/304] Fixed up mental focus inhands. --- icons/mob/items_lefthand.dmi | Bin 150282 -> 150229 bytes icons/mob/items_righthand.dmi | Bin 151800 -> 151634 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/mob/items_lefthand.dmi b/icons/mob/items_lefthand.dmi index bfbc206fb88ec038d23028fa9b12af31960b3bce..b55222ded06f9b105d93865392d7ece631b0cf64 100644 GIT binary patch delta 10451 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 X7m&ie4t`8M1XWkjQ7(S)^ws|d)RADT diff --git a/icons/mob/items_righthand.dmi b/icons/mob/items_righthand.dmi index 4d4722b380e850c99faea50dc215f716ffb7a49c..0aa57a3d4309bc605d80d91f8cd87577b62cacfa 100644 GIT binary patch delta 29702 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%0DJ13Ib&YHcj1HBC^yNUUj~C4*X+3IUBI} z)1&sI{KDem;uQGQ6Aml+d2u_2H3GR&bN6dF-(MM7SVF))N1PXW`7$(mgU-&I%@w~h zN?IJ`4&_!jgfj5DyR3FxBu-;pk{qPA%{aKYI8JVY!>i@CxHvgqPP`f)&Hb<<8R_Gq ze+2FDp?=rMGVXtu#&}RI);6T3WVCqEGehI|!zdnkaR*Te3EeWR6=*SW2v*#r_8HnB z@;!!E11;BE88pIHmMt`s-9z>OOs33a*|vN)^{W&4)TvYM`=T86us3c~)!Q@~5Lk!C9Ks8*Gs&-TgPAhkBU z;1ywbvRyR;Hwb$BrB>EJyY*V$bX2XSTW+J?V^Qe*G6rKp_~8;bdU2fjuklAS-abqO zwK?LJ|FPx&61bt#6YwgDdvVz5+WYKI@y(s~{Lwt~Q&)uuuTkYFnX^>Bz(s*#uGM^G zdbZD>A1Lc5D!=5L#Jl-2Xz&GE|A_;upOFzac-atS^9J$n?F}_yn)JkpG+(fu7=2Cr zp<@+R6ne$|_=zTeH=gxR29>?nf>e|fB%Mhp0}tG%)}XT<1|IiAUxJ<$*&lfnFiQn} z5TeiDVY~~*`hmUZdGojVMGVGK^1}tLd{mqgb^Nv6 z{|K6zpcTCVEQGp*k=vb|#lE$hh-gf$u)l3(l_l^hw_80$OlMLDr{FjKbQsJ!DsE=`o6*8q*Vpq3Fu*dOxH#r95@tE* zfW6Mg-~T=V{&lf@cO2yX{%OZphPBb!%1RKFL_8@qXFrRgA6#M&2Kj|it4;Fvdji|7 z6<)j>Oxsu-Vm^K8{cZGDaHFbg6UZKvt zpauWb3voF5U$fE#lUoM8KgS=827mtTcb;<*34=v$>e|TQLX#>^T(2r2{rJaNd5`g^ zmHV+PAP-B1D78;^@m|CJHqG`10Dbmn%dI*zL62Oq7NL&kV=U3JS(?dt_TN>DWz1vR zp6qKhHHZd~MkK+EA300zZMQCTPy)2{S^j%gm4Ew_M@u%1Wu5ZDn8mvNOZ1iGQE128 Xyf1qQ;{9P@yQiY5OozH-`ttt(Jif{{ delta 29920 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 Sf>{vo_42v0T+uU=xBmmqs#0_S From 481f3caec50f5237a209693ca76e33542f0ac5fd Mon Sep 17 00:00:00 2001 From: Chinsky Date: Tue, 24 Jun 2014 13:46:15 +0400 Subject: [PATCH 054/304] Moved scooping into a separate helper. --- code/modules/mob/holder.dm | 16 ++++++++++++++++ code/modules/mob/living/carbon/monkey/diona.dm | 10 ++-------- .../mob/living/silicon/robot/drone/drone.dm | 3 +-- .../silicon/robot/drone/drone_abilities.dm | 9 +-------- .../mob/living/simple_animal/friendly/cat.dm | 11 +++-------- 5 files changed, 23 insertions(+), 26 deletions(-) diff --git a/code/modules/mob/holder.dm b/code/modules/mob/holder.dm index f7d495f6ed..d65679d947 100644 --- a/code/modules/mob/holder.dm +++ b/code/modules/mob/holder.dm @@ -34,6 +34,22 @@ for(var/mob/living/M in contents) M.show_message(message,m_type) +//Mob procs and vars for scooping up +/mob/living/var/holder_type + +/mob/living/proc/get_scooped(var/mob/living/carbon/grabber) + if(!holder_type) + return + var/obj/item/weapon/holder/H = new holder_type(loc) + src.loc = H + H.name = loc.name + H.attack_hand(grabber) + + grabber << "You scoop up [src]." + src << "[grabber] scoops you up." + grabber.status_flags |= PASSEMOTES + return + //Mob specific holders. /obj/item/weapon/holder/diona diff --git a/code/modules/mob/living/carbon/monkey/diona.dm b/code/modules/mob/living/carbon/monkey/diona.dm index 8e6f10df4b..2469ded956 100644 --- a/code/modules/mob/living/carbon/monkey/diona.dm +++ b/code/modules/mob/living/carbon/monkey/diona.dm @@ -12,6 +12,7 @@ var/ready_evolve = 0 universal_understand = 0 // Dionaea do not need to speak to people universal_speak = 0 // before becoming an adult. Use *chirp. + holder_type = /obj/item/weapon/holder/diona /mob/living/carbon/monkey/diona/attack_hand(mob/living/carbon/human/M as mob) @@ -24,14 +25,7 @@ src.verbs -= /mob/living/carbon/monkey/diona/proc/merge src.loc = M else - var/obj/item/weapon/holder/diona/D = new(loc) - src.loc = D - D.name = loc.name - D.attack_hand(M) - M << "You scoop up [src]." - src << "[M] scoops you up." - M.status_flags |= PASSEMOTES - return + get_scooped(M) ..() diff --git a/code/modules/mob/living/silicon/robot/drone/drone.dm b/code/modules/mob/living/silicon/robot/drone/drone.dm index 485ff99e3b..5e49feced3 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone.dm @@ -25,8 +25,7 @@ //Used for self-mailing. var/mail_destination = "" - //Used for pulling. - + holder_type = /obj/item/weapon/holder/drone /mob/living/silicon/robot/drone/New() ..() diff --git a/code/modules/mob/living/silicon/robot/drone/drone_abilities.dm b/code/modules/mob/living/silicon/robot/drone/drone_abilities.dm index 6ed1259890..2c45af24d1 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_abilities.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_abilities.dm @@ -47,12 +47,5 @@ /mob/living/silicon/robot/drone/attack_hand(mob/living/carbon/human/M as mob) if(M.a_intent == "help") - var/obj/item/weapon/holder/drone/D = new(loc) - src.loc = D - D.attack_hand(M) - M << "You scoop up [src]." - src << "[M] scoops you up." - M.status_flags |= PASSEMOTES - return - + get_scooped(M) ..() \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm index a8a9122ef8..1fc3b8fe42 100644 --- a/code/modules/mob/living/simple_animal/friendly/cat.dm +++ b/code/modules/mob/living/simple_animal/friendly/cat.dm @@ -21,6 +21,7 @@ min_oxy = 16 //Require atleast 16kPA oxygen minbodytemp = 223 //Below -50 Degrees Celcius maxbodytemp = 323 //Above 50 Degrees Celcius + holder_type = /obj/item/weapon/holder/cat /mob/living/simple_animal/cat/Life() //MICE! @@ -63,18 +64,12 @@ /mob/living/simple_animal/cat/MouseDrop(atom/over_object) - var/mob/living/carbon/human/H = over_object + var/mob/living/carbon/H = over_object if(!istype(H)) return ..() //This REALLY needs to be moved to a general mob proc somewhere. if(H.a_intent == "help") - var/obj/item/weapon/holder/cat/C = new(loc) - src.loc = C - C.name = loc.name - C.attack_hand(H) - H << "You scoop up [src]." - src << "[H] scoops you up." - H.status_flags |= PASSEMOTES + get_scooped(H) return else return ..() From 5c002d3701f723c85c33f42cc6485a6032557651 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Tue, 24 Jun 2014 21:18:47 +0930 Subject: [PATCH 055/304] Changed cryo message a bit. --- code/modules/spawnpoints.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/spawnpoints.dm b/code/modules/spawnpoints.dm index c701a65c6a..e2809ec720 100644 --- a/code/modules/spawnpoints.dm +++ b/code/modules/spawnpoints.dm @@ -29,7 +29,7 @@ var/list/spawntypes = list() /datum/spawnpoint/cryo display_name = "Cryogenic Storage" - msg = "has completed cryogenic revival and clocked in" + msg = "has completed cryogenic revival" /datum/spawnpoint/cryo/New() ..() From e7aef647c24470a24543d37822739885db00f1f0 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Tue, 24 Jun 2014 18:03:45 -0400 Subject: [PATCH 056/304] Fixes #5351 Multi-shuttle origin was being assigned a path, not an actual area. --- code/controllers/shuttle_controller.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/controllers/shuttle_controller.dm b/code/controllers/shuttle_controller.dm index 889f1a72e4..850d4511ab 100644 --- a/code/controllers/shuttle_controller.dm +++ b/code/controllers/shuttle_controller.dm @@ -128,7 +128,7 @@ var/global/datum/shuttle_controller/shuttle_controller //Vox Shuttle. var/datum/shuttle/multi_shuttle/VS = new/datum/shuttle/multi_shuttle() - VS.origin = /area/shuttle/vox/station + VS.origin = locate(/area/shuttle/vox/station) VS.destinations = list( "Fore Starboard Solars" = locate(/area/vox_station/northeast_solars), @@ -148,7 +148,7 @@ var/global/datum/shuttle_controller/shuttle_controller //Nuke Ops shuttle. var/datum/shuttle/multi_shuttle/MS = new/datum/shuttle/multi_shuttle() - MS.origin = /area/syndicate_station/start + MS.origin = locate(/area/syndicate_station/start) MS.destinations = list( "Northwest of the station" = locate(/area/syndicate_station/northwest), From 05ced4b89d333b2971c907740ba6f54e4a062cee Mon Sep 17 00:00:00 2001 From: mwerezak Date: Tue, 24 Jun 2014 21:29:50 -0400 Subject: [PATCH 057/304] Fixes missing announcements, bad returned() check Also fixes some bad grammar in the shuttle authorization announcements, and reduces the number of authorizations required to 2. 3 seemed a bit high. --- .../emergency_shuttle_controller.dm | 7 +- code/modules/shuttles/shuttle_emergency.dm | 69 +++++++++++-------- 2 files changed, 45 insertions(+), 31 deletions(-) diff --git a/code/controllers/emergency_shuttle_controller.dm b/code/controllers/emergency_shuttle_controller.dm index f888932cdc..4e3364b8b2 100644 --- a/code/controllers/emergency_shuttle_controller.dm +++ b/code/controllers/emergency_shuttle_controller.dm @@ -77,8 +77,7 @@ var/global/datum/emergency_shuttle_controller/emergency_shuttle //launch the pods! for (var/datum/shuttle/ferry/escape_pod/pod in escape_pods) pod.launch(src) - - if(autopilot) + shuttle.launch(src) //called when the shuttle has arrived. @@ -119,7 +118,7 @@ var/global/datum/emergency_shuttle_controller/emergency_shuttle set_launch_countdown(get_shuttle_prep_time()) auto_recall_time = rand(world.time + 300, launch_time - 300) - captain_announce("A crew transfer has been initiated. The shuttle has been called. It will arrive in approximately [round(estimate_arrival_time()/60)] minutes.") + captain_announce("A crew transfer has been scheduled. The shuttle has been called. It will arrive in approximately [round(estimate_arrival_time()/60)] minutes.") //recalls the shuttle /datum/emergency_shuttle_controller/proc/recall() @@ -198,7 +197,7 @@ var/global/datum/emergency_shuttle_controller/emergency_shuttle //returns 1 if the shuttle has gone to the station and come back at least once, //used for game completion checking purposes /datum/emergency_shuttle_controller/proc/returned() - return (departed && shuttle.moving_status != SHUTTLE_IDLE && shuttle.location) //we've gone to the station at least once, no longer in transit and are idle back at centcom + return (departed && shuttle.moving_status == SHUTTLE_IDLE && shuttle.location) //we've gone to the station at least once, no longer in transit and are idle back at centcom //returns 1 if the shuttle is not idle at centcom /datum/emergency_shuttle_controller/proc/online() diff --git a/code/modules/shuttles/shuttle_emergency.dm b/code/modules/shuttles/shuttle_emergency.dm index 8ad5a21844..928426ef7f 100644 --- a/code/modules/shuttles/shuttle_emergency.dm +++ b/code/modules/shuttles/shuttle_emergency.dm @@ -11,10 +11,10 @@ travel_time = SHUTTLE_TRANSIT_DURATION_RETURN else travel_time = SHUTTLE_TRANSIT_DURATION - + //update move_time so we get correct ETAs move_time = travel_time - + ..() /datum/shuttle/ferry/emergency/move(var/area/origin,var/area/destination) @@ -22,10 +22,23 @@ last_move_time = world.time else last_move_time = null - + if (origin == area_station) //leaving the station emergency_shuttle.departed = 1 - captain_announce("The Emergency Shuttle has left the station. Estimate [round(emergency_shuttle.estimate_arrival_time()/60,1)] minutes until the shuttle docks at Central Command.") + + if (emergency_shuttle.evac) + captain_announce("The Emergency Shuttle has left the station. Estimate [round(emergency_shuttle.estimate_arrival_time()/60,1)] minutes until the shuttle docks at Central Command.") + else + captain_announce("The Crew Transfer Shuttle has left the station. Estimate [round(emergency_shuttle.estimate_arrival_time()/60,1)] minutes until the shuttle docks at Central Command.") + + if (destination == area_station) //arrived at the station + if(autopilot) + if (evac) + captain_announce("The Emergency Shuttle has docked with the station. You have approximately [round(estimate_launch_time()/60,1)] minutes to board the Emergency Shuttle.") + world << sound('sound/AI/shuttledock.ogg') + else + captain_announce("The scheduled Crew Transfer Shuttle has docked with the station. It will depart in approximately [round(estimate_launch_time()/60,1)] minutes.") + ..(origin, destination) /datum/shuttle/ferry/emergency/launch(var/user) @@ -35,25 +48,25 @@ var/obj/machinery/computer/shuttle_control/emergency/C = user if (!C.has_authorization()) return - + if (emergency_shuttle.autopilot) emergency_shuttle.autopilot = 0 world << "\blue Alert: The shuttle autopilot has been overridden. Launch sequence initiated!" - + ..(user) /datum/shuttle/ferry/emergency/force_launch(var/user) if (!can_force()) return - + if (istype(user, /obj/machinery/computer/shuttle_control/emergency)) //if we were given a command by an emergency shuttle console var/obj/machinery/computer/shuttle_control/emergency/C = user if (!C.has_authorization()) return - + if (emergency_shuttle.autopilot) emergency_shuttle.autopilot = 0 world << "\blue Alert: The shuttle autopilot has been overridden. Bluespace drive engaged!" - + ..(user) /datum/shuttle/ferry/emergency/cancel_launch(var/user) @@ -63,17 +76,17 @@ var/obj/machinery/computer/shuttle_control/emergency/C = user if (!C.has_authorization()) return - + if (emergency_shuttle.autopilot) emergency_shuttle.autopilot = 0 world << "\blue Alert: The shuttle autopilot has been overridden. Launch sequence aborted!" - + ..(user) /obj/machinery/computer/shuttle_control/emergency shuttle_tag = "Escape" var/debug = 0 - var/req_authorizations = 3 + var/req_authorizations = 2 var/list/authorized = list() /obj/machinery/computer/shuttle_control/emergency/proc/has_authorization() @@ -81,32 +94,34 @@ //returns 1 if the ID was accepted and a new authorization was added, 0 otherwise /obj/machinery/computer/shuttle_control/emergency/proc/read_authorization(var/ident) + if (!ident) + return 0 if (authorized.len >= req_authorizations) return 0 //don't need any more var/list/access var/auth_name var/dna_hash - + if(istype(ident, /obj/item/weapon/card/id)) var/obj/item/weapon/card/id/ID = ident access = ID.access auth_name = "[ID.registered_name] ([ID.assignment])" dna_hash = ID.dna_hash - + if(istype(ident, /obj/item/device/pda)) var/obj/item/device/pda/PDA = ident access = PDA.id.access auth_name = "[PDA.id.registered_name] ([PDA.id.assignment])" dna_hash = PDA.id.dna_hash - + if (!access || !istype(access)) return 0 //not an ID - + if (dna_hash in authorized) src.visible_message("[src] buzzes. That ID has already been scanned.") return 0 - + if (!(access_heads in access)) src.visible_message("[src] buzzes, rejecting [ident].") return 0 @@ -114,18 +129,18 @@ src.visible_message("[src] beeps as it scans [ident].") authorized[dna_hash] = auth_name if (req_authorizations - authorized.len) - world << "\blue Alert: [req_authorizations - authorized.len] authorization\s needed override the shuttle autopilot." + world << "\blue Alert: [req_authorizations - authorized.len] authorization\s needed to override the shuttle autopilot." return 1 - - - + + + /obj/machinery/computer/shuttle_control/emergency/attackby(obj/item/weapon/W as obj, mob/user as mob) if (istype(W, /obj/item/weapon/card/emag) && !emagged) user << "\blue You short out the [src]'s authorization protocols." emagged = 1 return - + read_authorization(W) ..() @@ -159,7 +174,7 @@ //build a list of authorizations var/list/auth_list[req_authorizations] - + if (!emagged) var/i = 1 for (var/dna_hash in authorized) @@ -170,9 +185,9 @@ else for (var/i = 1; i <= req_authorizations; i++) auth_list[i] = list("auth_name"="ERROR", "auth_hash"=null) - + var/has_auth = has_authorization() - + data = list( "shuttle_status" = shuttle_status, "shuttle_state" = shuttle_state, @@ -236,9 +251,9 @@ for(var/obj/machinery/door/D in origin) spawn(0) D.close() - + ..(origin, destination) - + for(var/obj/machinery/door/D in destination) spawn(0) D.open() From bdafc1136fefffd6a40ab9ea5715ac0268e7191c Mon Sep 17 00:00:00 2001 From: mwerezak Date: Tue, 24 Jun 2014 23:23:45 -0400 Subject: [PATCH 058/304] Fixes airlocks being stuck if they run out of air --- code/game/machinery/embedded_controller/airlock_program.dm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/code/game/machinery/embedded_controller/airlock_program.dm b/code/game/machinery/embedded_controller/airlock_program.dm index 72c2427cf0..29b93b3583 100644 --- a/code/game/machinery/embedded_controller/airlock_program.dm +++ b/code/game/machinery/embedded_controller/airlock_program.dm @@ -116,11 +116,15 @@ cycleDoors(TARGET_INOPEN) if("abort") + stop_cycling() + /* + //dont do this. If the airlock can't get enough air to pressurize the person inside is stuck state = STATE_PRESSURIZE target_state = TARGET_NONE memory["target_pressure"] = ONE_ATMOSPHERE signalPump(tag_airpump, 1, 1, memory["target_pressure"]) process() + */ if("force_ext") toggleDoor(memory["exterior_status"], tag_exterior_door, memory["secure"], "toggle") From 079a52de6a2bdc211acc94217526701b8240ba39 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Tue, 24 Jun 2014 23:28:33 -0400 Subject: [PATCH 059/304] Adds multi-airlock docking controller --- baystation12.dme | 2 + .../airlock_docking_controller_multi.dm | 157 +++++++++++++ .../embedded_controller/docking_program.dm | 24 +- .../docking_program_multi.dm | 221 ++++++++++++++++++ .../embedded_controller_base.dm | 2 +- 5 files changed, 402 insertions(+), 4 deletions(-) create mode 100644 code/game/machinery/embedded_controller/airlock_docking_controller_multi.dm create mode 100644 code/game/machinery/embedded_controller/docking_program_multi.dm diff --git a/baystation12.dme b/baystation12.dme index e7e7585f12..7b6fca07a6 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -387,8 +387,10 @@ #include "code\game\machinery\doors\windowdoor.dm" #include "code\game\machinery\embedded_controller\airlock_controllers.dm" #include "code\game\machinery\embedded_controller\airlock_docking_controller.dm" +#include "code\game\machinery\embedded_controller\airlock_docking_controller_multi.dm" #include "code\game\machinery\embedded_controller\airlock_program.dm" #include "code\game\machinery\embedded_controller\docking_program.dm" +#include "code\game\machinery\embedded_controller\docking_program_multi.dm" #include "code\game\machinery\embedded_controller\embedded_controller_base.dm" #include "code\game\machinery\embedded_controller\embedded_program_base.dm" #include "code\game\machinery\embedded_controller\simple_docking_controller.dm" diff --git a/code/game/machinery/embedded_controller/airlock_docking_controller_multi.dm b/code/game/machinery/embedded_controller/airlock_docking_controller_multi.dm new file mode 100644 index 0000000000..b5aa7f101e --- /dev/null +++ b/code/game/machinery/embedded_controller/airlock_docking_controller_multi.dm @@ -0,0 +1,157 @@ +//a controller for a docking port with multiple independent airlocks +//this is the master controller, that things will try to dock with. +/obj/machinery/embedded_controller/radio/docking_port_multi + name = "docking port controller" + var/child_tags_txt //for mapping + var/datum/computer/file/embedded_program/docking/multi/docking_program + +/obj/machinery/embedded_controller/radio/docking_port_multi/initialize() + ..() + docking_program = new/datum/computer/file/embedded_program/docking/multi(src) + program = docking_program + + +/obj/machinery/embedded_controller/radio/docking_port_multi/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null) + var/data[0] + + data = list( + "docking_status" = docking_program.get_docking_status(), + //child override status + ) + + ui = nanomanager.try_update_ui(user, src, ui_key, ui, data) + + if (!ui) + ui = new(user, src, ui_key, "simple_docking_console.tmpl", name, 470, 290) + ui.set_initial_data(data) + ui.open() + ui.set_auto_update(1) + +/obj/machinery/embedded_controller/radio/docking_port_multi/Topic(href, href_list) + if(..()) + return + + /* + usr.set_machine(src) + src.add_fingerprint(usr) + + var/clean = 0 + switch(href_list["command"]) //anti-HTML-hacking checks + if("force_door") + clean = 1 + if("toggle_override") + clean = 1 + + + if(clean) + program.receive_user_command(href_list["command"]) + + return 1 + */ + return + + + +//a docking port based on an airlock +/obj/machinery/embedded_controller/radio/airlock/docking_port_multi + name = "docking port controller" + var/master_tag //for mapping + var/datum/computer/file/embedded_program/airlock/multi_docking/airlock_program + tag_secure = 1 + +/obj/machinery/embedded_controller/radio/airlock/docking_port_multi/initialize() + ..() + airlock_program = new/datum/computer/file/embedded_program/airlock/multi_docking(src) + program = airlock_program + +/obj/machinery/embedded_controller/radio/airlock/docking_port_multi/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null) + var/data[0] + + data = list( + "chamber_pressure" = round(airlock_program.memory["chamber_sensor_pressure"]), + "exterior_status" = airlock_program.memory["exterior_status"], + "interior_status" = airlock_program.memory["interior_status"], + "processing" = airlock_program.memory["processing"], + "docking_status" = airlock_program.master_status, + "airlock_disabled" = (airlock_program.docking_enabled && !airlock_program.override_enabled), + "override_enabled" = airlock_program.override_enabled, + ) + + ui = nanomanager.try_update_ui(user, src, ui_key, ui, data) + + if (!ui) + ui = new(user, src, ui_key, "docking_airlock_console.tmpl", name, 470, 290) + ui.set_initial_data(data) + ui.open() + ui.set_auto_update(1) + +/obj/machinery/embedded_controller/radio/airlock/docking_port_multi/Topic(href, href_list) + if(..()) + return + + usr.set_machine(src) + src.add_fingerprint(usr) + + var/clean = 0 + switch(href_list["command"]) //anti-HTML-hacking checks + if("cycle_ext") + clean = 1 + if("cycle_int") + clean = 1 + if("force_ext") + clean = 1 + if("force_int") + clean = 1 + if("abort") + clean = 1 + if("toggle_override") + clean = 1 + + if(clean) + program.receive_user_command(href_list["command"]) + + return 1 + + + +/*** DEBUG VERBS ***/ + +/datum/computer/file/embedded_program/docking/multi/proc/print_state() + world << "id_tag: [id_tag]" + world << "dock_state: [dock_state]" + world << "control_mode: [control_mode]" + world << "tag_target: [tag_target]" + world << "response_sent: [response_sent]" + +/datum/computer/file/embedded_program/docking/multi/post_signal(datum/signal/signal, comm_line) + world << "Program [id_tag] sent a message!" + print_state() + world << "[id_tag] sent command \"[signal.data["command"]]\" to \"[signal.data["recipient"]]\"" + ..(signal) + +/obj/machinery/embedded_controller/radio/docking_port_multi/verb/view_state() + set category = "Debug" + set src in view(1) + src.program:print_state() + +/obj/machinery/embedded_controller/radio/docking_port_multi/verb/spoof_signal(var/command as text, var/sender as text) + set category = "Debug" + set src in view(1) + var/datum/signal/signal = new + signal.data["tag"] = sender + signal.data["command"] = command + signal.data["recipient"] = id_tag + + src.program:receive_signal(signal) + +/obj/machinery/embedded_controller/radio/docking_port_multi/verb/debug_init_dock(var/target as text) + set category = "Debug" + set src in view(1) + src.program:initiate_docking(target) + +/obj/machinery/embedded_controller/radio/docking_port_multi/verb/debug_init_undock() + set category = "Debug" + set src in view(1) + src.program:initiate_undocking() + +/**/ diff --git a/code/game/machinery/embedded_controller/docking_program.dm b/code/game/machinery/embedded_controller/docking_program.dm index a96850acfe..f6f1eaf7c7 100644 --- a/code/game/machinery/embedded_controller/docking_program.dm +++ b/code/game/machinery/embedded_controller/docking_program.dm @@ -80,11 +80,13 @@ if ("confirm_dock") if (control_mode == MODE_CLIENT && dock_state == STATE_UNDOCKED && receive_tag == tag_target) dock_state = STATE_DOCKING + broadcast_docking_status() if (!override_enabled) prepare_for_docking() else if (control_mode == MODE_CLIENT && dock_state == STATE_DOCKING && receive_tag == tag_target) dock_state = STATE_DOCKED + broadcast_docking_status() if (!override_enabled) finish_docking() //client done docking! response_sent = 0 @@ -94,7 +96,10 @@ if ("request_dock") if (control_mode == MODE_NONE && dock_state == STATE_UNDOCKED) control_mode = MODE_SERVER + dock_state = STATE_DOCKING + broadcast_docking_status() + tag_target = receive_tag if (!override_enabled) prepare_for_docking() @@ -111,6 +116,8 @@ if ("request_undock") if (control_mode == MODE_SERVER && dock_state == STATE_DOCKED && receive_tag == tag_target) dock_state = STATE_UNDOCKING + broadcast_docking_status() + if (!override_enabled) prepare_for_undocking() @@ -129,7 +136,10 @@ else if (control_mode == MODE_SERVER && received_confirm) send_docking_command(tag_target, "confirm_dock") //tell the client we are done docking. + dock_state = STATE_DOCKED + broadcast_docking_status() + if (!override_enabled) finish_docking() //server done docking! response_sent = 0 @@ -176,6 +186,8 @@ return dock_state = STATE_UNDOCKING + broadcast_docking_status() + if (!override_enabled) prepare_for_undocking() @@ -213,6 +225,8 @@ /datum/computer/file/embedded_program/docking/proc/reset() dock_state = STATE_UNDOCKED + broadcast_docking_status() + control_mode = MODE_NONE tag_target = null response_sent = 0 @@ -241,6 +255,12 @@ signal.data["recipient"] = recipient post_signal(signal) +/datum/computer/file/embedded_program/docking/proc/broadcast_docking_status() + var/datum/signal/signal = new + signal.data["tag"] = id_tag + signal.data["dock_status"] = get_docking_status() + post_signal(signal) + //this is mostly for NanoUI /datum/computer/file/embedded_program/docking/proc/get_docking_status() switch (dock_state) @@ -248,10 +268,8 @@ if (STATE_DOCKING) return "docking" if (STATE_UNDOCKING) return "undocking" if (STATE_DOCKED) return "docked" - - - + #undef STATE_UNDOCKED #undef STATE_DOCKING #undef STATE_UNDOCKING diff --git a/code/game/machinery/embedded_controller/docking_program_multi.dm b/code/game/machinery/embedded_controller/docking_program_multi.dm new file mode 100644 index 0000000000..43906f9d5f --- /dev/null +++ b/code/game/machinery/embedded_controller/docking_program_multi.dm @@ -0,0 +1,221 @@ +/* + These programs are for docking controllers that consist of multiple independent airlocks + Each airlock has an airlock controller running the child program, and there is one docking controller running the master program +*/ + +/* + the master program +*/ +/datum/computer/file/embedded_program/docking/multi + var/list/children_tags + var/list/children_ready + var/list/children_override + +/datum/computer/file/embedded_program/docking/multi/New(var/obj/machinery/embedded_controller/M) + ..(M) + + if (istype(M,/obj/machinery/embedded_controller/radio/docking_port_multi)) //if our parent controller is the right type, then we can auto-init stuff at construction + var/obj/machinery/embedded_controller/radio/docking_port_multi/controller = M + //parse child_tags_txt and create child tags + children_tags = text2list(controller.child_tags_txt, ";") + + children_ready = list() + children_override = list() + for (var/child_tag in children_tags) + children_ready[child_tag] = 0 + children_override[child_tag] = "disabled" + +/datum/computer/file/embedded_program/docking/multi/proc/clear_children_ready_status() + for (var/child_tag in children_tags) + children_ready[child_tag] = 0 + +/datum/computer/file/embedded_program/docking/multi/receive_signal(datum/signal/signal, receive_method, receive_param) + var/receive_tag = signal.data["tag"] //for docking signals, this is the sender id + var/command = signal.data["command"] + var/recipient = signal.data["recipient"] //the intended recipient of the docking signal + + if (receive_tag in children_tags) + + //track children status + if (signal.data["override_status"]) + children_override[receive_tag] = signal.data["override_status"] + + if (recipient == id_tag) + switch (command) + if ("ready_for_docking") + children_ready[receive_tag] = 1 + if ("ready_for_undocking") + children_ready[receive_tag] = 1 + if ("status_override_enabled") + children_override[receive_tag] = 1 + if ("status_override_disabled") + children_override[receive_tag] = 0 + + ..(signal, receive_method, receive_param) + +/datum/computer/file/embedded_program/docking/multi/prepare_for_docking() + //clear children ready status + clear_children_ready_status() + + //tell children to prepare for docking + for (var/child_tag in children_tags) + send_docking_command(child_tag, "prepare_for_docking") + +/datum/computer/file/embedded_program/docking/multi/ready_for_docking() + //check children ready status + for (var/child_tag in children_tags) + if (!children_ready[child_tag]) + return 0 + return 1 + +/datum/computer/file/embedded_program/docking/multi/finish_docking() + //tell children to finish docking + for (var/child_tag in children_tags) + send_docking_command(child_tag, "finish_docking") + + //clear ready flags + clear_children_ready_status() + +/datum/computer/file/embedded_program/docking/multi/prepare_for_undocking() + //clear children ready status + clear_children_ready_status() + + //tell children to prepare for undocking + for (var/child_tag in children_tags) + send_docking_command(child_tag, "prepare_for_undocking") + +/datum/computer/file/embedded_program/docking/multi/ready_for_undocking() + //check children ready status + for (var/child_tag in children_tags) + if (!children_ready[child_tag]) + return 0 + return 1 + +/datum/computer/file/embedded_program/docking/multi/finish_undocking() + //tell children to finish undocking + for (var/child_tag in children_tags) + send_docking_command(child_tag, "finish_undocking") + + //clear ready flags + clear_children_ready_status() + + + + +/* + the child program + technically should be "slave" but eh... I'm too politically correct. +*/ +/datum/computer/file/embedded_program/airlock/multi_docking + var/master_tag + + var/master_status = "undocked" + var/override_enabled = 0 + var/docking_enabled = 0 + var/docking_mode = 0 //0 = docking, 1 = undocking + var/response_sent = 0 + +/datum/computer/file/embedded_program/airlock/multi_docking/New(var/obj/machinery/embedded_controller/M) + ..(M) + + if (istype(M, /obj/machinery/embedded_controller/radio/airlock/docking_port_multi)) //if our parent controller is the right type, then we can auto-init stuff at construction + var/obj/machinery/embedded_controller/radio/airlock/docking_port_multi/controller = M + src.master_tag = controller.master_tag + +/datum/computer/file/embedded_program/airlock/multi_docking/receive_user_command(command) + if (command == "toggle_override") + if (override_enabled) + override_enabled = 0 + broadcast_override_status() + else + override_enabled = 1 + broadcast_override_status() + return + + if (!docking_enabled|| override_enabled) //only allow the port to be used as an airlock if nothing is docked here or the override is enabled + ..(command) + +/datum/computer/file/embedded_program/airlock/multi_docking/receive_signal(datum/signal/signal, receive_method, receive_param) + ..() + + var/receive_tag = signal.data["tag"] //for docking signals, this is the sender id + var/command = signal.data["command"] + var/recipient = signal.data["recipient"] //the intended recipient of the docking signal + + if (receive_tag != master_tag) + return //only respond to master + + //track master's status + if (signal.data["dock_status"]) + master_status = signal.data["dock_status"] + + if (recipient != id_tag) + return //this signal is not for us + + switch (command) + if ("prepare_for_docking") + docking_enabled = 1 + docking_mode = 0 + response_sent = 0 + + if (!override_enabled) + begin_cycle_in() + + if ("prepare_for_undocking") + docking_mode = 1 + response_sent = 0 + + if (!override_enabled) + stop_cycling() + close_doors() + + if ("finish_docking") + if (!override_enabled) + open_doors() + + if ("finish_undocking") + docking_enabled = 0 + +/datum/computer/file/embedded_program/airlock/multi_docking/process() + ..() + + if (docking_enabled && !response_sent) + + switch (docking_mode) + if (0) //docking + if (ready_for_docking()) + send_signal_to_master("ready_for_docking") + response_sent = 1 + if (1) //undocking + if (ready_for_undocking()) + send_signal_to_master("ready_for_undocking") + response_sent = 1 + +//checks if we are ready for docking +/datum/computer/file/embedded_program/airlock/multi_docking/proc/ready_for_docking() + return done_cycling() + +//checks if we are ready for undocking +/datum/computer/file/embedded_program/airlock/multi_docking/proc/ready_for_undocking() + return check_doors_secured() + +/datum/computer/file/embedded_program/airlock/multi_docking/proc/open_doors() + toggleDoor(memory["interior_status"], tag_interior_door, memory["secure"], "open") + toggleDoor(memory["exterior_status"], tag_exterior_door, memory["secure"], "open") + +/datum/computer/file/embedded_program/airlock/multi_docking/cycleDoors(var/target) + if (!docking_enabled|| override_enabled) //only allow the port to be used as an airlock if nothing is docked here or the override is enabled + ..(target) + +/datum/computer/file/embedded_program/airlock/multi_docking/proc/send_signal_to_master(var/command) + var/datum/signal/signal = new + signal.data["tag"] = id_tag + signal.data["command"] = command + signal.data["recipient"] = master_tag + post_signal(signal) + +/datum/computer/file/embedded_program/airlock/multi_docking/proc/broadcast_override_status() + var/datum/signal/signal = new + signal.data["tag"] = id_tag + signal.data["override_status"] = override_enabled? "enabled" : "disabled" + post_signal(signal) diff --git a/code/game/machinery/embedded_controller/embedded_controller_base.dm b/code/game/machinery/embedded_controller/embedded_controller_base.dm index 0d6241211e..a9a8b40ed5 100644 --- a/code/game/machinery/embedded_controller/embedded_controller_base.dm +++ b/code/game/machinery/embedded_controller/embedded_controller_base.dm @@ -1,5 +1,5 @@ /obj/machinery/embedded_controller - var/datum/computer/file/embedded_program/program + var/datum/computer/file/embedded_program/program //the currently executing program name = "Embedded Controller" anchored = 1 From fccc16f8b8dd558d8b1974031d266d700400f3ef Mon Sep 17 00:00:00 2001 From: mwerezak Date: Wed, 25 Jun 2014 00:07:35 -0400 Subject: [PATCH 060/304] Fix for long_jumps never leaving transition area The previous behaviour of move() called without arguments assumed a short_jump, which meant that the wrong origin area would be used. --- code/modules/shuttles/shuttle_ferry.dm | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/code/modules/shuttles/shuttle_ferry.dm b/code/modules/shuttles/shuttle_ferry.dm index 3d1c2f4ba8..e37ba86e37 100644 --- a/code/modules/shuttles/shuttle_ferry.dm +++ b/code/modules/shuttles/shuttle_ferry.dm @@ -47,15 +47,11 @@ ..(departing, destination, interim, travel_time, direction) /datum/shuttle/ferry/move(var/area/origin,var/area/destination) - if(!destination) - destination = get_location_area(!location) - if(!origin) - origin = get_location_area(location) if (docking_controller && !docking_controller.undocked()) docking_controller.force_undock() - ..(origin, destination) + ..(origin, destination) if (destination == area_station) location = 0 if (destination == area_offsite) location = 1 From 717a697fe222161bfed01abe6404af0625321f6f Mon Sep 17 00:00:00 2001 From: mwerezak Date: Wed, 25 Jun 2014 00:12:25 -0400 Subject: [PATCH 061/304] Adds escape shuttle docking controllers --- code/controllers/shuttle_controller.dm | 3 ++ maps/tgstation2.dmm | 66 +++++++++++++++----------- 2 files changed, 42 insertions(+), 27 deletions(-) diff --git a/code/controllers/shuttle_controller.dm b/code/controllers/shuttle_controller.dm index 850d4511ab..30abf05521 100644 --- a/code/controllers/shuttle_controller.dm +++ b/code/controllers/shuttle_controller.dm @@ -26,6 +26,9 @@ var/global/datum/shuttle_controller/shuttle_controller shuttle.area_offsite = locate(/area/shuttle/escape/centcom) shuttle.area_station = locate(/area/shuttle/escape/station) shuttle.area_transition = locate(/area/shuttle/escape/transit) + shuttle.docking_controller_tag = "escape_shuttle" + shuttle.dock_target_station = "escape_dock" + shuttle.dock_target_offsite = "centcom_dock" shuttle.transit_direction = NORTH shuttle.move_time = 300 //shuttle.docking_controller_tag = "supply_shuttle" diff --git a/maps/tgstation2.dmm b/maps/tgstation2.dmm index e0c7b0de6e..ee8c9bcf40 100644 --- a/maps/tgstation2.dmm +++ b/maps/tgstation2.dmm @@ -2449,10 +2449,10 @@ "aVe" = (/obj/structure/stool{pixel_y = 8},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/crew_quarters/sleep) "aVf" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) "aVg" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "escape"},/area/hallway/secondary/exit) -"aVh" = (/obj/machinery/door/airlock/external{name = "Escape Airlock"},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plating,/area/hallway/secondary/exit) -"aVi" = (/obj/machinery/light/small,/turf/simulated/floor/plating,/area/hallway/secondary/exit) -"aVj" = (/turf/simulated/floor/plating,/area/hallway/secondary/exit) -"aVk" = (/obj/machinery/door/airlock/external{name = "Escape Airlock"},/turf/simulated/floor/plating,/area/hallway/secondary/exit) +"aVh" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1380; master_tag = "escape_dock_north_airlock"; name = "interior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = "0"; req_one_access_txt = "13"},/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact-f (EAST)"; icon_state = "intact-f"; dir = 4},/turf/simulated/floor,/area/hallway/secondary/exit) +"aVi" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/simulated/floor,/area/hallway/secondary/exit) +"aVj" = (/obj/machinery/light/small,/obj/machinery/embedded_controller/radio/airlock/docking_port_multi{frequency = 1380; id_tag = "escape_dock_north_airlock"; master_tag = "escape_dock"; pixel_y = 30; req_one_access_txt = "13"; tag_airpump = "escape_dock_north_pump"; tag_chamber_sensor = "escape_dock_north_sensor"; tag_exterior_door = "escape_dock_north_outer"; tag_interior_door = "escape_dock_north_inner"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1380; id_tag = "escape_dock_north_pump"},/turf/simulated/floor/plating,/area/hallway/secondary/exit) +"aVk" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_north_inner"; locked = 1; name = "Escape Airlock"; req_access_txt = "13"},/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact-f (EAST)"; icon_state = "intact-f"; dir = 4},/turf/simulated/floor/plating,/area/hallway/secondary/exit) "aVl" = (/turf/space,/area/shuttle/transport1/station) "aVm" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry) "aVn" = (/obj/machinery/door/airlock/maintenance{name = "Chapel Maintenance"; req_access_txt = "0"; req_one_access_txt = "12;22"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/chapel/main) @@ -2899,7 +2899,7 @@ "bdM" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "solar_chapel_inner"; locked = 1; name = "Engineering External Access"; req_access = null; req_access_txt = "13"},/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) "bdN" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=2"; freq = 1400; location = "Bar"},/obj/structure/plasticflaps{opacity = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/crew_quarters/bar) "bdO" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor,/area/hallway/secondary/exit) -"bdP" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/hallway/secondary/exit) +"bdP" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_north_outer"; locked = 1; name = "Escape Airlock"; req_access_txt = "13"},/turf/simulated/floor/plating,/area/hallway/secondary/exit) "bdQ" = (/turf/space,/area/shuttle/specops/station) "bdR" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry) "bdS" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{dir = 1; icon_state = "arrival"},/area/hallway/secondary/entry) @@ -2932,6 +2932,7 @@ "bet" = (/turf/simulated/wall,/area/turret_protected/ai) "beu" = (/obj/structure/closet,/obj/item/weapon/storage/backpack,/turf/simulated/floor/plating,/area/maintenance/fpmaint) "bev" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) +"bew" = (/obj/machinery/airlock_sensor{frequency = 1380; id_tag = "escape_dock_north_sensor"; pixel_x = 0; pixel_y = -25},/turf/simulated/floor/plating,/area/hallway/secondary/exit) "bex" = (/obj/machinery/vending/coffee,/turf/simulated/floor/wood,/area/crew_quarters/captain) "bey" = (/obj/structure/table/woodentable,/turf/simulated/floor/carpet,/area/crew_quarters/captain) "bez" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/fpmaint2) @@ -3008,7 +3009,7 @@ "bfS" = (/obj/machinery/newscaster{pixel_y = -32},/turf/simulated/floor{dir = 2; icon_state = "escape"},/area/hallway/secondary/exit) "bfT" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 2; icon_state = "escape"},/area/hallway/secondary/exit) "bfU" = (/obj/machinery/light,/turf/simulated/floor{dir = 2; icon_state = "escape"},/area/hallway/secondary/exit) -"bfV" = (/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/hallway/secondary/exit) +"bfV" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor,/area/hallway/secondary/exit) "bfW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/exit) "bfX" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor,/area/hallway/secondary/entry) "bfY" = (/obj/machinery/conveyor{dir = 5; id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal) @@ -3175,7 +3176,7 @@ "bjd" = (/turf/simulated/floor/engine/vacuum,/area/rnd/mixing) "bje" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/closet/hydrant{pixel_x = -32},/turf/simulated/floor/plating,/area/storage/emergency) "bjf" = (/turf/simulated/wall/r_wall,/area/rnd/mixing) -"bjg" = (/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating,/area/storage/emergency) +"bjg" = (/obj/structure/lattice,/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1380; master_tag = "escape_dock_north_airlock"; name = "exterior access button"; pixel_x = 5; pixel_y = 25; req_access_txt = "0"; req_one_access_txt = "13"},/turf/space,/area) "bjh" = (/obj/machinery/camera{c_tag = "Arrivals Auxiliary Docking"; dir = 8; network = list("SS13")},/turf/simulated/floor,/area/hallway/secondary/entry) "bji" = (/obj/machinery/conveyor{dir = 1; id = "garbage"},/obj/structure/sign/vacuum{pixel_x = -32},/turf/simulated/floor/plating,/area/maintenance/disposal) "bjj" = (/obj/machinery/door_control{id = "Disposal Exit"; name = "Disposal Vent Control"; pixel_x = -25; pixel_y = 4; req_access_txt = "12"},/obj/machinery/driver_button{id = "trash"; pixel_x = -26; pixel_y = -6},/turf/simulated/floor/plating,/area/maintenance/disposal) @@ -7524,6 +7525,7 @@ "cOK" = (/turf/unsimulated/beach/sand{tag = "icon-seashallow"; icon_state = "seashallow"},/area/centcom/ferry) "cOL" = (/obj/machinery/air_sensor{frequency = 1441; id_tag = "engine_sensor"; output = 63},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/engine/engine_room) "cOM" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) +"cON" = (/obj/structure/lattice,/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1380; master_tag = "escape_dock_south_airlock"; name = "exterior access button"; pixel_x = 5; pixel_y = -25; req_access_txt = "0"; req_one_access_txt = "13"},/turf/space,/area) "cOO" = (/turf/unsimulated/beach/sand{tag = "icon-beachcorner"; icon_state = "beachcorner"},/area/centcom/ferry) "cOP" = (/turf/unsimulated/beach/sand{tag = "icon-beach (SOUTHEAST)"; icon_state = "beach"; dir = 6},/area/centcom/ferry) "cOQ" = (/obj/structure/shuttle/engine/propulsion{icon_state = "burst_r"; dir = 4},/turf/space,/area/shuttle/specops/centcom) @@ -7598,7 +7600,7 @@ "cQh" = (/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/evac) "cQi" = (/obj/machinery/sleeper{icon_state = "sleeper_0-r"; orient = "RIGHT"},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/holding) "cQj" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/shuttle/escape/centcom) -"cQk" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) +"cQk" = (/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact-f (EAST)"; icon_state = "intact-f"; dir = 4},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1380; master_tag = "escape_dock_south_airlock"; name = "interior access button"; pixel_x = 25; pixel_y = -25; req_access_txt = "0"; req_one_access_txt = "13"},/turf/simulated/floor,/area/hallway/secondary/exit) "cQl" = (/turf/unsimulated/floor{dir = 10; icon_state = "whitegreen"},/area/centcom/holding) "cQm" = (/turf/simulated/shuttle/wall{icon_state = "swall_s9"; dir = 2},/area/shuttle/transport1/centcom) "cQn" = (/turf/simulated/shuttle/wall{icon_state = "swall13"; dir = 2},/area/shuttle/transport1/centcom) @@ -7823,7 +7825,7 @@ "cUy" = (/turf/simulated/shuttle/wall{dir = 8; icon_state = "swall_floor_f6"},/area/supply/dock) "cUz" = (/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/holding) "cUA" = (/obj/machinery/door/airlock/glass{name = "Arrivals Processing"},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/holding) -"cUB" = (/obj/machinery/door/airlock/external{name = "Arrivals Airlock"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/evac) +"cUB" = (/obj/machinery/atmospherics/pipe/manifold/hidden{tag = "icon-manifold-f (WEST)"; icon_state = "manifold-f"; dir = 8},/turf/simulated/floor,/area/hallway/secondary/exit) "cUC" = (/turf/unsimulated/floor{dir = 8; icon_state = "carpetside"},/area/wizard_station) "cUD" = (/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/evac) "cUE" = (/turf/unsimulated/floor{dir = 4; icon_state = "carpetside"},/area/wizard_station) @@ -8145,7 +8147,7 @@ "daI" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/lattice,/turf/space,/area/turret_protected/tcomsat) "daJ" = (/obj/machinery/computer/crew,/obj/machinery/status_display{pixel_y = 30},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) "daK" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/tcommsat/chamber) -"daL" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/extinguisher,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) +"daL" = (/obj/machinery/light/small{dir = 1},/obj/machinery/embedded_controller/radio/airlock/docking_port_multi{frequency = 1380; id_tag = "escape_dock_south_airlock"; master_tag = "escape_dock"; pixel_y = -30; req_one_access_txt = "13"; tag_airpump = "escape_dock_south_pump"; tag_chamber_sensor = "escape_dock_south_sensor"; tag_exterior_door = "escape_dock_south_outer"; tag_interior_door = "escape_dock_south_inner"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1380; id_tag = "escape_dock_south_pump"},/turf/simulated/floor/plating,/area/hallway/secondary/exit) "daM" = (/turf/simulated/shuttle/wall{dir = 1; icon_state = "wall_space"},/area/shuttle/escape/centcom) "daN" = (/obj/machinery/computer/security,/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) "daO" = (/obj/machinery/door/airlock/maintenance_hatch{name = "Telecoms Server Access"; req_access_txt = "61"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/tcommsat/chamber) @@ -8868,6 +8870,17 @@ "doD" = (/obj/machinery/light{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 5},/area/mine/explored) "doE" = (/obj/machinery/door/airlock/maintenance{name = "Teleporter Maintenance"; req_access_txt = "17"},/obj/structure/sign/securearea{pixel_x = -32; pixel_y = 0},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/teleporter) "doF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall/r_wall,/area/bridge/meeting_room) +"doG" = (/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact-f (EAST)"; icon_state = "intact-f"; dir = 4},/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_south_inner"; locked = 1; name = "Escape Airlock"; req_access_txt = "13"},/turf/simulated/floor/plating,/area/hallway/secondary/exit) +"doH" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_south_outer"; locked = 1; name = "Escape Airlock"; req_access_txt = "13"},/turf/simulated/floor/plating,/area/hallway/secondary/exit) +"doI" = (/obj/machinery/airlock_sensor{frequency = 1380; id_tag = "escape_dock_south_sensor"; pixel_x = 0; pixel_y = 25},/turf/simulated/floor/plating,/area/hallway/secondary/exit) +"doJ" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 32; pixel_y = 0},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/hallway/secondary/exit) +"doK" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/embedded_controller/radio/docking_port_multi{child_tags_txt = "escape_dock_north_airlock;escape_dock_south_airlock"; frequency = 1380; id_tag = "escape_dock"; pixel_x = 0; pixel_y = -25; req_one_access_txt = "13"},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/hallway/secondary/exit) +"doL" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/wall,/area/hallway/secondary/exit) +"doM" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating,/area/storage/emergency) +"doN" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/extinguisher,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "escape_shuttle"; pixel_x = 8; pixel_y = 25; req_access_txt = "0"; req_one_access_txt = "13"; tag_door = "escape_shuttle_hatch"},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) +"doO" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "centcom_dock_airlock"; locked = 1; name = "Arrivals Airlock"; req_access_txt = "13"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/evac) +"doP" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access_txt = "13"},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) +"doQ" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "centcom_dock"; name = "docking port controller"; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; req_one_access_txt = "13"; tag_door = "centcom_dock_airlock"},/turf/unsimulated/floor{dir = 6; icon_state = "warning"},/area/centcom/evac) "dqT" = (/turf/simulated/mineral,/area/mine/unexplored) "dqU" = (/turf/space,/area/syndicate_station/mining) "dqV" = (/obj/structure/transit_tube{icon_state = "D-SE"},/obj/structure/lattice,/turf/space,/area) @@ -10129,7 +10142,6 @@ "dRa" = (/obj/machinery/telecomms/processor/preset_cent,/turf/unsimulated/floor{icon_state = "green"; dir = 1},/area/centcom/control) "dRb" = (/obj/machinery/telecomms/bus/preset_cent,/turf/unsimulated/floor{icon_state = "green"; dir = 1},/area/centcom/control) "dRc" = (/obj/machinery/telecomms/receiver/preset_cent,/turf/unsimulated/floor{icon_state = "green"; dir = 9},/area/centcom/control) -"dRd" = (/turf/unsimulated/floor{dir = 6; icon_state = "warning"},/area/centcom/evac) "dRe" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/centcom/evac) "dRf" = (/obj/structure/stool/bed/chair{dir = 8},/turf/unsimulated/floor{icon_state = "greencorner"},/area/centcom/control) "dRg" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/centcom/evac) @@ -10723,19 +10735,19 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawXayVaMVaAFaAFaAFaAFaMWayVawXaAHasSaAIaMXaMYawvavSaNbaNbaNcatHaNdaLsaxAaNfaLuaxzaNhaNiaNjaNkaNlaLzaLzaLzaLzaLzaLzaLzaxhaxiaxuaLzaLzaLzaxpayuaLzaLzaLzaLzaxvaLzaLzaLzaxtaNmaLuaLPaIOaIOaIOaIOaIOaIOaIOaIOaIOaIOaIOaIOaNsaNtaNuaNvaNwaNxaNyaNzaNAaIOaIOaIOaLPaIOaIOaIOaIOaIOaIOaIOaIOaNBbNwaCjaCWaCQaMpaNEaMpaMpawEaNGaMsawiaJdawFawJawSaNLaNMaJjaNNawTaNPawHaNRaNSaJjaNTawIaNTaJjaJjaJjavCaJjaJjasIarZaNVaHPaHPaNWaHPaNXaEsaEuaEuaEuaEuaEuaEuavQaEuaIbaIbasHaIbaNZaOaaEyaaaaafaaaaaaaaaaaaaaaaaaaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafazQasSaMYavtazSaObaOcaOdaOeazSavtaOfaOgasSayWaxTaMYaOhaOiaNbaNbaNcatHaOjaLsasDaNfaLuasXaLAaLzaLzaLzaChaEzaBPaLzausardaOmaOraALatmarMaOmaOvaOwaOxathatlatkatjatiatcatbatbasYatdaNmaLuaLPaIOaOHaIOaOIaOIaOIaOIaOIaOIaOIaOIaOJaOKaOIaOIaOIaOIaOLaOIaOIaOIaOIaOIaOMaONaOIaOIaOIaOIaOIaOIaOIaIOaIOaIOaBoaAYasOaOQaOQaOQaORasQaNGaMsaBQaJdaJdaJdaJdaJdaOUaJjaOVasKasLasNaNPaNPaJjaOZasMaPbaPcaPbaPbasJaPeaJjasIarZaPfaPfaPgaPhaPiaPiaPjaEsaPkaPlaPmaEyaskaVbasbaIbaIbasHaIbaEyaPsaEyaPtaPtaPtaPuaPvaPwaaaaaaaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafatHaxRayVaJMayWaxTaxTayXaJMayVaJMaPxawYaPyaxTaxRaPzaPzaLpaPzaLqatHaPAaLsasDaPBaPBasCatzaPBaPEaPEaPEaPEaPEaPFaPGaPEaPEaPEaPEaPEasEaPIaPJaPIaPKasGaPMaLzaLAaPNasFaPPaPQaLAaLzaPRaPRaUnaIOaIOaIPaPTaKraKraPUaPUaPUaPUaPVawGawRaxqaPZaQaaQaaQbaQcaQaaQdaQeaQfawGaQgaPUaPUaPUaPUaKraKraQhaINaIOaIOaBoaQiashaQkaQkaQkaQkasyassasiaQoavXarFdZFaQsaQtaQuaJdaJdaszaQwasBaQyaQzaJjaQAasAaQCaQCaQCaQCascaQEaJjasaarZaQGaHPaPgaPhaHPaHPaQHaEsavjaQJaQKaEyaQLarpaPraSoaPoasgaIbaQQaQRaEyasfaQTaPtaQUaQVaQWaafaaaaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawXaQXaxTaQYaPyaxTaxTaQZaQYaxTaQXaPyaxTaxTaxTaRaaRbaRbaRbaRbaRbaRbaRbaRcatUaPBaReaufaFvautaumaRjaRkaRlaRmaRnaRoaRpaukaRraRsaRtaujaRvaRwaxIaPKatwaPMaPMaRzaPMaugaPSaPSaRBaRCaPSaPSaPSaRDaIOaIPaREaaaaaaaaaaaaaaaaaaaaaaPWaRFaRGaRHaRIaRJaRKaRJaRLaRMaRNaROaPWaaaaaaaaaaaaaaaaaaaaaaRPaINaIOauZaRRaRSatDaQoaQoaQoaQoaQoaRUatGaQoaQoaQoaQraMpaRWaRXaRYaRZatxaSbatyaSdaSeaJdaPbatCaSgaSgaSgaSgatTaSiaJjasIarZaSjaSjaPgaPhaSkaSkaSlaEsaEsaSmaEsaEyaLhatZaulaulaulatNaTJaEyaEyaEyaSpaSqaSraSsaStaSuaafaafaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawXaQXaxTaQYaPyaxTaxTaQZaQYaxTaQXaPyaxTaxTaxTaRaaRbaRbaRbaRbaRbaRbaRbaRcatUaPBaReaufaFvautaumaRjaRkaRlaRmaRnaRoaRpaukaRraRsaRtaujaRvaRwaxIaPKatwaPMaPMaRzaPMaugaPSaPSaRBaRCaPSaPSaPSaRDaIOaIPaREaaaaaaaaaaaaaaaaaaaaaaPWaRFaRGaRHaRIaRJaRKaRJaRLaRMaRNaROaPWaaaaaaaaaaaaaaaaaaaaaaRPaINaIOauZaRRaRSatDaQoaQoaQoaQoaQoaRUatGaQoaQoaQoaQraMpaRWaRXaRYaRZatxaSbatyaSdaSeaJdaPbatCaSgaSgaSgaSgatTaSiaJjasIarZaSjaSjaPgaPhaSkaSkaSlaEsaEsaSmaEsaEyaLhatZaulaulaulatNaTJaEyaEyaEyaSpaSqaSraSsbeKaSuaafaafaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaxRaSvaSwaSvaSvaSvaSvaSvaSvaSwaSvaSvaSxaxTaxTaSyaxTavvaSzaxTaSAaSBaSCaSDatuaPBaReattbeRaPEaSHaRnaRnaRnaRnaRnaRoaSIaRnaRnaRnaRtasEaSJaSKauRaPKatwaPMaSMaSNaupatvaPSasnaSRaSSaSTaSUaSVaIOaIOaIPaREaaaaaaaaaaaaaPWaPWaPWaPWaSWaSXaSYaSZavwaTbaTcaTdaTeaTfaTgaPWaPWaPWaPWaaaaaaaaaaaaaRPaINaIOaIOaThaQoatnaTjaTkaQoaTlaTmaCIatqaToaTkaQoaQraMpaTpaRXaTqaTratraTtatsaTvaRXaTwaTxaTyaSgaTzaTAaSgaTBaPbaJjasIarZaQGaHPaPgaPhaHPaHPaHPaTCaTDaHPaTEaEyarDastaSoaSoaSoasgaIbaIbaEyaTKaSsaSsaSsaSsaStaTLaTMaTMaTNaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasSasSaTOaTPaTPaTPaTPaTPaTPaTPazYasSatHaTQaTRaTSaTSaTSaFuaTSaTSaTSaBgaTSaBgaPBaReattbeRaPEaTXaRnaRnaTYaTZaUaaUbaTYaRnaRnaRnaUcasEaUdaUeaUfaPKaFkaPMaUhaUiaUjaFpaPSaKhaSUaSUaSSaSUaUmaIOaIOaIPaKqaPVaUnaUoaPWaPWaUpaUqaUraUsaUtaUtaUuaUvaUtaUuaUvaUtaUwaUxaUyaUzaUAaPWaPWaUoaUnaUBaUCaINaIOaIOaBoaUDatnaToaTkaQoaUEaUFaQoaFjaUHaTkaQoaQraMpaUIaRXaUJaFzaFyaUMaFxaUOaRXaUPaUQaURaSgaUSaUTaSgaUUaUVaJjasIarZaUWaUWaPgaPhaUXaHPaHPaUYaHPaUZaVaaEyaIbaTGaTHaSoaTGaFwaQqaVfaEyaVgaSsaSsaSsaSsaSsaVhaViaVjaVkaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaafaVmazTaxVaxTaExaEwaEvaEtaEraEXaEWaEVaEUaEPaEIaEAaOqaEqaPEaVBaRnaRnaTYaUaaVCaVDaTYaRnaRnaRnaRtasEaPKaPKaEfaPKaEgaEhaEhaEhaEhaEoaEiaEpaSSaSSaSSaHcaUmaIOaIOaIPaLTaLTaVKaVLaVMaPWaVNaTbaUtaVOaUtaUtaUtaUtaVPaUtaUtaUtaVRaVSaVSaVTaVUaPWaVVaVLaVWaVXaLTaINaIOaIOaThaQoatDaQoaQoaQoaVYaVZaQoaFjaWaaTkaQoaQraMpaWbaRXaWcaWdaWeaWfaFiaUOaWhaJdaPbaURaWiaSgaSgaSgaUUaPbaJjaFharZaEsaEsaFgaPhaWlaWmaHPaWnaWoaKZaFfaFaaymaFdaFeaFcaFdaFbaymaEZaFaaEYaWzaSsaSsaSsaWAaWBaWCaTMaWDaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaWEaWFaWGayWaWHaGlaGzaGqaGBaGAaGDaGCaGEaGqaGGaGFaGIaYCaFXaPEaWVaRnaWWaWXaYdaYAaYBaWYaWYaWYaXaaXbaFYaXdaGcaGbaGaaFZaReaReaXiaPBaGdaPSaIoaIlaHFaHEaHBaHpaIRaIOaIOaIOaIOaXpaXqaXraXsaXtaXuaUtaXvaXwaXxaXyaXzaXAaXBaIWaXDaKUaXFaXtaXGaXHaXIaXJaXKaXLaXMaXNaXOaIOaXPaBoaRSatnaXQaTkaQoaXRaXSaQoaFjaToaTkaQoaQraXTaRWaRXaWcaRXaXUaRXaGJaUOaXWaJdaQAaURaSgaSgaSgaSgaUUaQEaJjaYDaGRaXZaYaaQOaQPaPgaPgaPgaPgaPgaPgaFVaEyaIbaTGaTHaSoaTGaTHaIbasHaEyaSnaSsaSsaSsaSsaYkaYlaYmaafaafaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaOuaQIaNHaMZaYoaBgaYpaYqaYraYraYraYraYsaYtaTSaYuaYvaOlaCSaYyaYyaYyaYzaYyaOsaRnaTWaUKaWZaWZaPDaSGaFOaFPaFEaFDaFJaFFaFAaIgaFCaFBaFLaFKaFMaYSaYSaYSaYTaUnaHhaIOaYVaYWaYXaYYaYZaZaaPWaHkaHiaLRaZfaPWaPWaPWaPWaPWaPWaPWaPWaPWaHeaXwaZkaZlaPWaZaaYZaZmaGTaYWaZoaIOaIOaThaQoaZpaQoaQoaQoaFHaQoaQoaFUaQoaZraZraZraZraZsaZtaKAaRXaRXaRXaZvaZwaZxaJdaZyaZzaSgaZAaZAaZBaZzaZCaJjaFWaBDaZFaZGaPgaPgaPgaPgaZHaPgaPgaPgaFVawKaIbaPoaPraSoaPoaPraIbasHawKaYjaSsaSsaZJaSsaSsaZKaYmaafaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaZLaZMaWGaAbaZNaBWaZPaZQaZRaZSaZTaYraZUaZVaTSaZWbaEaOlaCSaZYaZZbaaaCLaYybacbadbaeaPEbafbagbahaOnaPEaCRaBtbalbalbalbalaHubalbalbanbaobaobaobapbaobaqaUnbasbatbauawGawGawGbaAaFTbaAbayaFQbaybaAbaBbaBbaBbaBbaBbaBbaBbaBbaBaCVbaDbbubaDaPWaPWaPWawGawGawGaZoaIOaIOaUnbaFbaGaBlbaHaQobaIaQobaJbaKbaLaZrbaMaFRbaOaJdaJdaJdbaPbaQbaQbaQaJdaJdaJdbaRaSgaSgaLeaFNbaUbaVaGwaJjaBEaBDbaYaEsbaZbbabbbaWmbbcbbabbdaWmbbeaEybbfaQMaQNbbgaQMaQNaIbbbhaEyaDkbbjbbkaSsaSsbblbbmaYmaafaafaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlayBaxRbbnayabboaBgbbpbbpbbqaAMbbsbbqbbtbbpaTSaQpaOTaGHaByaBzaBzaBAaBBaBzbbBbadbbCaPEbafbagbbDaGPaPEaBxbfabalbbGbbHbbHazqbbIbalbbJbbKbbLbbMbarbarbaraUnaIOaIOaYVawGbbPbbQbbRbbSaBRaFraFlbbWbaAbaBbbXbbYbbZbcaaBhbccbcdbaBaCVbcebcfbcgbchbcibcjaAVbdsawGbcmbcnbcnaUnbcqbcqaBoaBobcoaThbcobcpaBoaBoaRRaBoaBoaBobcqbcrbcrbcrbcrbcrbcrbcsaAabcqazGbctbctaCKaZFaZFaZFayZbcqaBEaBDbaYaEsaEsaEsaEsaEsarZaEsaEsaEsaEsaEyaBCbcAawKavUawKbcyayKbcqaPtbcBaSsbcCaSsaSsaWAbcDbcEaTMaWDaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazQasSbcFaAFaWGatHatHatHatHatHatHaIQaJoaBgaTSaTSaTSaTSaTSaTSaTSaTSaTSaHMaHMaOlaCSaZYbcIbcJbcKaYybcLbcMaDEaPEbafbagbcOaOpaPEaBxbfabalbbHbcQbcQbbHbcQbalbbJbcRbcSbcSbcTbcUbcVbarbcWaIOaYVaGpbcYbgCbdabdbbdbbdaaGibddbaAbaBbdebdfbdgbdhbdibdjbdkaGYaHabdnbdobclbdpbdqbdrbclaLgawGaJtbdtaIOaNsbdubdvaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFbdxaZFaZFaZFaZFaZFaZFaZFaZFbdyaZFaZFaZFaZFaZFaZFaZFaBDbdzaDPaDTaCYaDUaCYaDVaCYaDXaDWaDYaCYaDZaCYaEaaEbaCYaCYaCYaCYaCYaCYaEcaEdaEebdObcCaSsaSsaSsaVkbdPaVjaVkaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQaaaaafbdRazTaDraDlaCTaAJaAJaAJaAJaAJaAJaAtaAqaBOaBeaBcaOlaCSaYyaYybdXbdYaYyaPEaPEaCUaPEbafbeabcOaOoaPEaDKaFSbalbecbedbbHbcQbeebalbbJbefbcSbcSbcSbegbehbarbeiaIOaYVaGkbekbgCbembenbeobepaGibeqbaAbaBberbesbetbetbetaEObevbaBaCVbexbclbclbdpbeybdrbclaLfawGaGQaIOaIOaNsbdubdvaZFaZFaZFaZFaZFaZFaZFbeBaZFaZFaZFaZFaZFaZFbeCaCYaCYaCYaCYaCYaCYaCZaCYaCYaCYaCYaCYaCYaCYaHLaDDaDCaDtaZFaZFaZFaZFaZFaBDaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFbeIbdzbeJaSsaSsbcCaSsaSsbeKbeLaTMaTMaTNaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbdQaWEaWFbeMaAbbeNbUVbePbePbeQbePbePbePbeRaPBaPBaPBaPBaOlaCSaZYbeSbeTbeUaYybeVbeWbUWaPEaPEaPEaPEbUmaPEcuRbfabalctebbHbcQcsXcsZbalbbJbarbfcbcSbcSbPhbfebarbULaIOaYVbTrbfhbgCbembfibfjbepaGibfkbaAbflbfmbfnbetbfobetbdfbfpbfqaCVbfrbfsbftbfubfubfvbclbfwawGcCTcuScFlcvvcxRdPwdPxdTPdPxcFHdPxcGedTQbTtdTSctbctbctaaZFaZFaZFaZFbfDaZFbfybfOaZFctccByctdbfIbWUcGxbfIbfKdTUdTVdTWaZFaZFaZFaZFaZFbfObfPbfDaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFbdzbfQbfRbfSbfTbfUbfVbbmbfWaafaaaaafaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbdQcpzcpvcqkcqxbfXbePbfYbfZbgabgabgbbgcbgdbgebgebgebgebPBbUubUrbUrbUtbUsbUrbUobUobUpbUobUnbUlbUlbSbbRucqMcrQbUCcrpbUBbUBcrocqYbalcqPbarbgybcSbcSbPhbgzbgAbffaIOaYVbaAbgCbTpbdabdabdabdaaGibgEbaAbaBbgFbgGbWJbgIbgJbgGbgKbaBaCVbURbUQbgNbgObgPbgQbgRbgSawGcrZaHfcrWawGbTqbTqbgUbgUbgUbgUcmTcmTcsUcsVcsrcsscsVcsUcmTcmTcmTckbckbckbckbckbbcqbcqcskbhbbhbbhbbhbbhbbktcslbcqcsYcsncsobhkbhkbhlbhlbhlbhlbhlbhmbhnbhnbhobhnaZFbhnbhobhnbhnbhpbTqcsJcsJbNtbhrbhgaPtaPtaPtaaaaaaaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbdQaZLaZMbeMaAbbhsbePbhtbePbhubhvbePbePbePaRebhwbhxbhxbTHaYyaZYbhzbcJbhAaYybUabTZbTTbTSbTVbTUbTXbTWbTYbTXbTMbTNbLkbTCbLkbLkcmKcmVclMbTbbhSbcSbcSbTLbhUbhVbffaIObhWbaAbhXbaAbhZbVnbibbSOaGibaAbaAbaBbiebifbigbihbiibijbikbaBaCVbTybimckrbiobipbgQbclbiqawGcnGcoacoNawGcqlcqncqSbTncrDcrGcrMcoOcqUcqVcrAcrBcogcofcpscoYcmTcmIcmWcmUcpMckbcnscpNcndcptbVUcktcktclSbktcggbiSbiScksbiSbiUbiUbhlbiVbiWbiXbhlbiYbiZbiYbhlbhmbhnbhpbNtbSQbTibSQbNtbThbTgbNtbjebTEbjgbhgaaaaaaaaaaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasSasSaTOaTPaTPaTPaTPaTPaTPaTPazYasSatHaTQaTRaTSaTSaTSaFuaTSaTSaTSaBgaTSaBgaPBaReattbeRaPEaTXaRnaRnaTYaTZaUaaUbaTYaRnaRnaRnaUcasEaUdaUeaUfaPKaFkaPMaUhaUiaUjaFpaPSaKhaSUaSUaSSaSUaUmaIOaIOaIPaKqaPVaUnaUoaPWaPWaUpaUqaUraUsaUtaUtaUuaUvaUtaUuaUvaUtaUwaUxaUyaUzaUAaPWaPWaUoaUnaUBaUCaINaIOaIOaBoaUDatnaToaTkaQoaUEaUFaQoaFjaUHaTkaQoaQraMpaUIaRXaUJaFzaFyaUMaFxaUOaRXaUPaUQaURaSgaUSaUTaSgaUUaUVaJjasIarZaUWaUWaPgaPhaUXaHPaHPaUYaHPaUZaVaaEyaIbaTGaTHaSoaTGaFwaQqaVfaEyaVgaSsaSsaSsaViaVhaVkaVjbewbdPaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaafaVmazTaxVaxTaExaEwaEvaEtaEraEXaEWaEVaEUaEPaEIaEAaOqaEqaPEaVBaRnaRnaTYaUaaVCaVDaTYaRnaRnaRnaRtasEaPKaPKaEfaPKaEgaEhaEhaEhaEhaEoaEiaEpaSSaSSaSSaHcaUmaIOaIOaIPaLTaLTaVKaVLaVMaPWaVNaTbaUtaVOaUtaUtaUtaUtaVPaUtaUtaUtaVRaVSaVSaVTaVUaPWaVVaVLaVWaVXaLTaINaIOaIOaThaQoatDaQoaQoaQoaVYaVZaQoaFjaWaaTkaQoaQraMpaWbaRXaWcaWdaWeaWfaFiaUOaWhaJdaPbaURaWiaSgaSgaSgaUUaPbaJjaFharZaEsaEsaFgaPhaWlaWmaHPaWnaWoaKZaFfaFaaymaFdaFeaFcaFdaFbaymaEZaFaaEYaWzaSsaSsbfVaWAaWBaWCaTMaWDaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaWEaWFaWGayWaWHaGlaGzaGqaGBaGAaGDaGCaGEaGqaGGaGFaGIaYCaFXaPEaWVaRnaWWaWXaYdaYAaYBaWYaWYaWYaXaaXbaFYaXdaGcaGbaGaaFZaReaReaXiaPBaGdaPSaIoaIlaHFaHEaHBaHpaIRaIOaIOaIOaIOaXpaXqaXraXsaXtaXuaUtaXvaXwaXxaXyaXzaXAaXBaIWaXDaKUaXFaXtaXGaXHaXIaXJaXKaXLaXMaXNaXOaIOaXPaBoaRSatnaXQaTkaQoaXRaXSaQoaFjaToaTkaQoaQraXTaRWaRXaWcaRXaXUaRXaGJaUOaXWaJdaQAaURaSgaSgaSgaSgaUUaQEaJjaYDaGRaXZaYaaQOaQPaPgaPgaPgaPgaPgaPgaFVaEyaIbaTGaTHaSoaTGaTHaIbasHaEyaSnaSsaSsaSsbfVaYkaYlaYmaafbjgaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaOuaQIaNHaMZaYoaBgaYpaYqaYraYraYraYraYsaYtaTSaYuaYvaOlaCSaYyaYyaYyaYzaYyaOsaRnaTWaUKaWZaWZaPDaSGaFOaFPaFEaFDaFJaFFaFAaIgaFCaFBaFLaFKaFMaYSaYSaYSaYTaUnaHhaIOaYVaYWaYXaYYaYZaZaaPWaHkaHiaLRaZfaPWaPWaPWaPWaPWaPWaPWaPWaPWaHeaXwaZkaZlaPWaZaaYZaZmaGTaYWaZoaIOaIOaThaQoaZpaQoaQoaQoaFHaQoaQoaFUaQoaZraZraZraZraZsaZtaKAaRXaRXaRXaZvaZwaZxaJdaZyaZzaSgaZAaZAaZBaZzaZCaJjaFWaBDaZFaZGaPgaPgaPgaPgaZHaPgaPgaPgaFVawKaIbaPoaPraSoaPoaPraIbasHawKaYjaSsaSsaZJbfVaSsaZKaYmaafaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaZLaZMaWGaAbaZNaBWaZPaZQaZRaZSaZTaYraZUaZVaTSaZWbaEaOlaCSaZYaZZbaaaCLaYybacbadbaeaPEbafbagbahaOnaPEaCRaBtbalbalbalbalaHubalbalbanbaobaobaobapbaobaqaUnbasbatbauawGawGawGbaAaFTbaAbayaFQbaybaAbaBbaBbaBbaBbaBbaBbaBbaBbaBaCVbaDbbubaDaPWaPWaPWawGawGawGaZoaIOaIOaUnbaFbaGaBlbaHaQobaIaQobaJbaKbaLaZrbaMaFRbaOaJdaJdaJdbaPbaQbaQbaQaJdaJdaJdbaRaSgaSgaLeaFNbaUbaVaGwaJjaBEaBDbaYaEsbaZbbabbbaWmbbcbbabbdaWmbbeaEybbfaQMaQNbbgaQMaQNaIbbbhaEyaDkbbjbbkaSsbfVbblbbmaYmaafcONaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlayBaxRbbnayabboaBgbbpbbpbbqaAMbbsbbqbbtbbpaTSaQpaOTaGHaByaBzaBzaBAaBBaBzbbBbadbbCaPEbafbagbbDaGPaPEaBxbfabalbbGbbHbbHazqbbIbalbbJbbKbbLbbMbarbarbaraUnaIOaIOaYVawGbbPbbQbbRbbSaBRaFraFlbbWbaAbaBbbXbbYbbZbcaaBhbccbcdbaBaCVbcebcfbcgbchbcibcjaAVbdsawGbcmbcnbcnaUnbcqbcqaBoaBobcoaThbcobcpaBoaBoaRRaBoaBoaBobcqbcrbcrbcrbcrbcrbcrbcsaAabcqazGbctbctaCKaZFaZFaZFayZbcqaBEaBDbaYaEsaEsaEsaEsaEsarZaEsaEsaEsaEsaEyaBCbcAawKavUawKbcyayKbcqaPtbcBaSsbcCaSsbfVaWAbcDbcEaTMaWDaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazQasSbcFaAFaWGatHatHatHatHatHatHaIQaJoaBgaTSaTSaTSaTSaTSaTSaTSaTSaTSaHMaHMaOlaCSaZYbcIbcJbcKaYybcLbcMaDEaPEbafbagbcOaOpaPEaBxbfabalbbHbcQbcQbbHbcQbalbbJbcRbcSbcSbcTbcUbcVbarbcWaIOaYVaGpbcYbgCbdabdbbdbbdaaGibddbaAbaBbdebdfbdgbdhbdibdjbdkaGYaHabdnbdobclbdpbdqbdrbclaLgawGaJtbdtaIOaNsbdubdvaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFbdxaZFaZFaZFaZFaZFaZFaZFaZFbdyaZFaZFaZFaZFaZFaZFaZFaBDbdzaDPaDTaCYaDUaCYaDVaCYaDXaDWaDYaCYaDZaCYaEaaEbaCYaCYaCYaCYaCYaCYaEcaEdaEebdObcCaSscUBcQkdoGdaLdoIdoHaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQaaaaafbdRazTaDraDlaCTaAJaAJaAJaAJaAJaAJaAtaAqaBOaBeaBcaOlaCSaYyaYybdXbdYaYyaPEaPEaCUaPEbafbeabcOaOoaPEaDKaFSbalbecbedbbHbcQbeebalbbJbefbcSbcSbcSbegbehbarbeiaIOaYVaGkbekbgCbembenbeobepaGibeqbaAbaBberbesbetbetbetaEObevbaBaCVbexbclbclbdpbeybdrbclaLfawGaGQaIOaIOaNsbdubdvaZFaZFaZFaZFaZFaZFaZFbeBaZFaZFaZFaZFaZFaZFbeCaCYaCYaCYaCYaCYaCYaCZaCYaCYaCYaCYaCYaCYaCYaHLaDDaDCaDtaZFaZFaZFaZFaZFaBDaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFbeIbdzbeJaSsaSsbcCaSsbfVaStbeLaTMaTMaTNaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbdQaWEaWFbeMaAbbeNbUVbePbePbeQbePbePbePbeRaPBaPBaPBaPBaOlaCSaZYbeSbeTbeUaYybeVbeWbUWaPEaPEaPEaPEbUmaPEcuRbfabalctebbHbcQcsXcsZbalbbJbarbfcbcSbcSbPhbfebarbULaIOaYVbTrbfhbgCbembfibfjbepaGibfkbaAbflbfmbfnbetbfobetbdfbfpbfqaCVbfrbfsbftbfubfubfvbclbfwawGcCTcuScFlcvvcxRdPwdPxdTPdPxcFHdPxcGedTQbTtdTSctbctbctaaZFaZFaZFaZFbfDaZFbfybfOaZFctccByctdbfIbWUcGxbfIbfKdTUdTVdTWaZFaZFaZFaZFaZFbfObfPbfDaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFbdzbfQbfRbfSbfTbfUdoKdoJbfWaafaaaaafaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbdQcpzcpvcqkcqxbfXbePbfYbfZbgabgabgbbgcbgdbgebgebgebgebPBbUubUrbUrbUtbUsbUrbUobUobUpbUobUnbUlbUlbSbbRucqMcrQbUCcrpbUBbUBcrocqYbalcqPbarbgybcSbcSbPhbgzbgAbffaIOaYVbaAbgCbTpbdabdabdabdaaGibgEbaAbaBbgFbgGbWJbgIbgJbgGbgKbaBaCVbURbUQbgNbgObgPbgQbgRbgSawGcrZaHfcrWawGbTqbTqbgUbgUbgUbgUcmTcmTcsUcsVcsrcsscsVcsUcmTcmTcmTckbckbckbckbckbbcqbcqcskbhbbhbbhbbhbbhbbktcslbcqcsYcsncsobhkbhkbhlbhlbhlbhlbhlbhmbhnbhnbhobhnaZFbhnbhobhnbhnbhpbTqcsJcsJbNtbhrbhgdoLaPtaPtaaaaaaaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbdQaZLaZMbeMaAbbhsbePbhtbePbhubhvbePbePbePaRebhwbhxbhxbTHaYyaZYbhzbcJbhAaYybUabTZbTTbTSbTVbTUbTXbTWbTYbTXbTMbTNbLkbTCbLkbLkcmKcmVclMbTbbhSbcSbcSbTLbhUbhVbffaIObhWbaAbhXbaAbhZbVnbibbSOaGibaAbaAbaBbiebifbigbihbiibijbikbaBaCVbTybimckrbiobipbgQbclbiqawGcnGcoacoNawGcqlcqncqSbTncrDcrGcrMcoOcqUcqVcrAcrBcogcofcpscoYcmTcmIcmWcmUcpMckbcnscpNcndcptbVUcktcktclSbktcggbiSbiScksbiSbiUbiUbhlbiVbiWbiXbhlbiYbiZbiYbhlbhmbhnbhpbNtbSQbTibSQbNtbThbTgbNtbjebTEdoMbhgaaaaaaaaaaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQaaachMaMYbbnayabjhbePbjibePbjjbjkbjlbQYbePbjnaReaXibcHbTjaYyaYyaYyaYyaYyaYybTAbjrbjsaRebjtbalbalbalbTzbalbalbalbrnbalbalbalbMVbalblubRFbjzbcSbcSbPhbjAbgAbSwaIObSybaAbjCbaAbaAbaAbaAdoFbTkbaAbTmbTlbjGbjHbbXbjIbbXbjJbjKbTvbTxbTybjNbclbjObjPbgQbjQbjRbaDbSNaIObDbcgQchOcgPcgjchNcjwckLciicjachochocgRcgScjtcjpciHciEciDciCciBciAckcckbcjDcgeclFcgecjvcjucgecgfbktcggbiSbkwcfKcgdbkzbkAbkBbkCbkDbkCbSjbkFbkGbkHbhlbkIbkJbkKbNtbSzbSEbSDbSMbNHbSAbNtbkRbkSbkTbhgaaaaaaaaaaaeaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazQasSbcFaAFaZMaTPaTPaTPbkUaTPbkVayWcViaxTbePbkWbkXbkYbkZblablbblcbldbldbldbldbXnbWDbWDbWDbTXbTXbTXbWCblhblhblhblibalbljblkbWEblmblnbloblpblpblrblschfckRcnZbgAbjzbcSbXvbWwbWxbWxbWRbEvbWMbXmbWXbWLbZTbWIbXmbWTbXkbXjbXibTvbTvbTvbTvbWHbTvbTvbTvbTvbWjbWGbWQbWSbWObWPbWKbWNbWsbWFbWVaIObDbbgUdVHdVIdVJcVwcVubgUcVvdUTcjtcjtcjtcjtcjtcjpdVzdVydVBdVAdVDdVCdVuckbdVwdVvcVjcgecjvcjucgedVLbktcggdVNbYedVMbYbbXHbXMbXFbXGbXGbXGbXUbXWbXAbXzbXybXxbXEbXDbXhbXgbXebNHbXcbXbbXfbNtbmPbkSbmsbhgaaaaaaaaaaaaaaaaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabmQcOncOfcOwcOocOxcOxcOGcUZaxTbePbmSbmTbkZbmUbePbePbePaPBbmVbmWbmXbmYbmXbmXbmXbmYbmXaPBaPBbalbalbalbmZbalblpblpbnablpblpblpblpblpbnbbVobndbcSbWebWdbWdbWdbWabWcbVYbVcbVgbWibWncrRbWfbWfbWhbWgbWqbWpbVsbWrbWobnxbnybnzbnAbnBbnCbnzbnDbnxbPVbTybnFbnGbnFbaDbaDbaDbWAbaDdUZaIObDbcgQchOcgPdVadVbbWBbgUdUSdUTdUXdUYdUVdUWdVndVmdVldVkcmTdVpdUEdVodVfdVedVddVccVhdVidVhdVgdVidVqbUedVrdVsdTXbnYdTYboabobbocbodboebofbofbogbkCbohbhlbWvbojbokbNtbVZbVAbVzbUJbVVbVXbNtbmPbkSborbhgaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -11012,7 +11024,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNVcNWcNWcNVaaaaaaaaacMQcNrcNXcNYcNZcNYcMQdRydRZdRZdRydRJdRCcJJdRzcIRcJocLVcJJcLMcOhcIRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacObcJQcJQcOccOccJQcJQcObaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOdcOecOecOecOedgYdgYcOecOecOgaaacMQcNrcNrcNrcNrcNrcMQdRydRYdRYdRydRRdRCcJJdRzcIRcJIcJJcJJcJJcLccIRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOBdXUdXTcOFaaaaaaaaaaaaaaaaaaaaaaaaaaacIRcOicJQcJQcJQcJQcOjcIRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOkcOlcOmdgSdgRcOpcOpcOqcOqcOecOgcMQcMQcMQcMQcMQcMQcMQdRydRydRydRydRBdRCcJJdRzcIRdRAcORdRAdRDdRAcIRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOBdaCbaidROdaFcOFaaaaaaaaaaaaaaaaaaaaaaaacIRcIRcIRcIRcIRcIRcIRcIRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOkcOlcOvcOpcOpcOpcOpcOpcOpdgVdgTaaaaaaaaaaaaaaaaaacIRdREdRydREdRydRHdRCcJJdRFdRGcJIcJJdRIcJJcMvcNdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOVdaLcOMcOMdaJcOVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOkcOlcOvcOpcOpcOpcOpcOpcOpdgVdgTaaaaaaaaaaaaaaaaaacIRdREdRydREdRydRHdRCcJJdRFdRGcJIcJJdRIcJJcMvcNdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOVdoNcOMcOMdaJcOVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOkcOlcOpcOHcOHcOHcOHcOHcOHcOecOIaaaaaaaaaaaaaaaaaacIRdREdRydREdRydRJdRCcJJdRFdRGcKacJJcLxdRLcMXcNdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadXIcOYcOYcOYcOMdXIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOQcOecOecOecOecOecOecOecOecOIaaaaaaaaaaaaaaaaaaaaacIRdREdRydREdRydRRdRQcMEdRTcOydRAdRSdRVdRWdRAcNdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOVcZpcOYcOZdaNcOVdaMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOycOycOycOycOycOycOycOycOycOycOycOycOycOycOycOycOycOycOycOycOycOycOycOycOycOycOydRncJJcJJdRmcLccNdcNdcNdaaaaaaaaaaaaaaaaaaaaacOBdTBcPrdXIcSocPpdTBcPpcOFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -11020,13 +11032,13 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacPgcPicPicPtcPucPvcPtcPucPudYldYhdYmcPucPxcPycPhcPicPidgPdRrdRrdRrdRrdRrcOycPkcLvcPlcJJcJJcJJcLccLvcPkcNdcNdcNdcNdcNdcNdaaaaaacOVcPLcOYcOYdancRWcRWdakcOVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacPgcPicPtdazdgQdavcPEcPFcPFcPFcPFcPFcPFcPGcPHcPhcPicPidRsdRrdRrdRrdRrdRrcOycPkcLvcPlcJJcJJcJJcPncLvcPkcPKcPKcPKcPKcPKcNdaaaaaadXIcPLcOYcOYdXIcQMcQMcQMcOVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacPgcPidYfcPCcPNcPCcPOcPCcPCcPCcPCcPCcPCcPCdgLcPicPicPicOycOycOycOycQccWbcOycPkcLvcPlcJJcJJcJJcVqcWacKwcRVcRVcRVcRVcRVcRVcRVcRXcOVcZIcOYcOYdaccPpcPpcPpcPsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacPgcPicPUdaedgMdafcPEcPXcPXcPXcPXcPXcPXcPYcPZcPhcPicPicOydhjdhJdPFdPtdPtcOydKhdKjdiycJJcJJcJJcJJcUPcQhcQhcQhcQhcQhcUGcUBcUDcUBcQkcOYcOYcOYcOYdaddadcPMdXIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacPgcPicPUdaedgMdafcPEcPXcPXcPXcPXcPXcPXcPYcPZcPhcPicPicOydhjdhJdPFdPtdPtcOydKhdKjdiycJJcJJcJJcJJcUPcQhcQhcQhcQhcQhcUGdoOcUDdoOdoPcOYcOYcOYcOYdaddadcPMdXIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacPgcPicPicPUcPucQmcPUcPucPudYldYhdYmcPucQncPycPhcPicPicOydPQdPUdQfdPtdPtdQgdQQdQXcJJcJJcJJcJJcJJcUPcQhcQhcQhcQhcQhcUGcSacRVcRXcOVdahcOYcPMdYgcPLcOYdagcOVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacPgcPicPicPicPicPicPicPicPicPicPicPicPicPicPjcPhcPicPicOydRhdRidRjdPtdPtdQgdQQdQXcJJcJJcJJcJJdRfdRgcRVdRecQhcQhcQwdRdcNdaaaaaadYgcPLcOYcPMdYecPLcOYcPMdYgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacPgcPicPicPicPicPicPicPicPicPicPicPicPicPicPjcPhcPicPicOydRhdRidRjdPtdPtdQgdQQdQXcJJcJJcJJcJJdRfdRgcRVdRecQhcQhcQwdoQcNdaaaaaadYgcPLcOYcPMdYecPLcOYcPMdYgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOycOycOycOycOycOycQzcQzcQzcQzcQzcQzcQzcQzcQzcQzcQzcQzcQzcVCcVCcVCcQAcQAcQzcVBcLfcVxcJJcJJcJJcPncQQcPkcVMcQhcUGcVOcVNcNdaaaaaadYecPLcOYcPMdYecPLcOYcPMdYeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOycUXcUYcUYcUYcURcUVcQLcQAcQAcQAcQAcQAcQAcQAcQAcQAcQAcQAcQAcQAcQAcQAcQAcQzcPkcLvcPlcJJcJJcJJcVqcVpcRVcVrcQhcQhcQScVscNdaaaaaadXXcPLcOYcPMdYecPLcOYcPMdXXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOycPbcPbcPbcPbcPbcUJcQTcUHcUKcQYcQAcQWcUOcUNcQYcQAcQAcQAcQAcQAcQAcQAcQAcQzcPkcLvcPIcJJcJJcJJcJJcUPcQhcQhcQhcQhcQhcUGcSacRVcRXcOVcZIcOYcPMdXXcPLcOYcZKcOVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOycPbcQxcPbcPbcPbcQVcQTcUfcUicQYcQAcQWcSAcSzcQYcQAcQAcSecSecSecSecSecSecQzcShcSgcSrcSicUzcUzcUzcUAcUzcUzcQhcQhcQhcUGcUBcUDcUBcQkcOYcOYcOYcOYcOYcOYcPMdXIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOycPbcQxcPbcPbcPbcQVcQTcUfcUicQYcQAcQWcSAcSzcQYcQAcQAcSecSecSecSecSecSecQzcShcSgcSrcSicUzcUzcUzcUAcUzcUzcQhcQhcQhcUGdoOcUDdoOdoPcOYcOYcOYcOYcOYcOYcPMdXIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOycPbdgJcPbcPbcPbcQVcQLcQAcQAcQAcQAcQAcQAcQAcQAcQAcQCcRUcRUcRUcRUcRUcRUcQzcQzcQzcQzcQzcRZcRZcQzcQzcQzcQzcSacRVcRVcRVcRVcRVcRXcOVdXUdXTcRCdXIcZBcOYcZrcOVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOycPbcPbcREcPbcRGcQVcQTcRNcRFcQYcQAcQWcRAcRzcQYcQAcQCcRycQBcQBcQBcQBcQBcQzcRBcRBcRBcRDcOtcOtcRRcRhcRhcQzcPKcPKcPKcPKcNdaaaaaacOVcRLcRMcPAcRgcOVcZpcZrcOVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOycQRcPbcPbcQPcPbcQVcQTcQUcQXcQYcQAcQWcRacQZcQYcQAcQCcQBcQBcQBcQBcQBcQBcQzcZccWncWkcWgcOtcOtcOtcRhcRhcQzcNdcNdcNdcNdcNdaaaaaadXIcPAcPAcPAcZecOVcZdcZdcOVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From 3ab7e510d5cd3251df147ebc6998666ef3708c91 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Wed, 25 Jun 2014 14:34:28 +0930 Subject: [PATCH 062/304] Removed reference to :b in drone spawn text. --- code/modules/mob/living/silicon/robot/drone/drone.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/silicon/robot/drone/drone.dm b/code/modules/mob/living/silicon/robot/drone/drone.dm index 08758ae8ce..55270907ac 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone.dm @@ -321,7 +321,7 @@ full_law_reset() src << "
You are a maintenance drone, a tiny-brained robotic repair machine." src << "You have no individual will, no personality, and no drives or urges other than your laws." - src << "Use :b to talk to your fellow synthetics, :d to talk to other drones, and say to speak silently to your nearby fellows." + src << "Use :d to talk to other drones and say to speak silently to your nearby fellows." src << "Remember, you are lawed against interference with the crew. Also remember, you DO NOT take orders from the AI." src << "Don't invade their worksites, don't steal their resources, don't tell them about the changeling in the toilets." src << "If a crewmember has noticed you, you are probably breaking your third law." From e08e5fd09fb5409d1bbf1052226435303a3cfc38 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Wed, 25 Jun 2014 08:13:34 +0200 Subject: [PATCH 063/304] Removes lonely scrubber pipes: Under table in security lobby Beneath vending machine in escape Beneath status display in staff meeting room Beneath left door in AI Upload Access Beneath status display by AI Upload Access Inside window in starboard Engineering maintenance Adds missing scrubber pipes: Cargo warehouse, straight pipe Between Medbay and Misc. Research Restores lost scrubber: Security checkpoint, Arrivals --- maps/tgstation2.dmm | 62 +++++++++++++++++++++------------------------ 1 file changed, 29 insertions(+), 33 deletions(-) diff --git a/maps/tgstation2.dmm b/maps/tgstation2.dmm index 9330039a8b..d433fb3d4d 100644 --- a/maps/tgstation2.dmm +++ b/maps/tgstation2.dmm @@ -233,7 +233,7 @@ "aey" = (/obj/machinery/disposal,/obj/item/device/radio/intercom{broadcasting = 0; freerange = 0; frequency = 1475; listening = 1; name = "Station Intercom (Security)"; pixel_x = -30; pixel_y = 0},/obj/structure/disposalpipe/trunk,/obj/machinery/requests_console{announcementConsole = 1; department = "Head of Security's Desk"; departmentType = 5; name = "Head of Security RC"; pixel_x = 0; pixel_y = 30},/turf/simulated/floor{icon_state = "dark"},/area/security/hos) "aez" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor,/area/security/brig) "aeA" = (/obj/structure/table/woodentable,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/item/weapon/reagent_containers/food/drinks/flask/barflask,/turf/simulated/floor{icon_state = "dark"},/area/security/hos) -"aeB" = (/obj/structure/table/reinforced,/obj/structure/table/reinforced{icon_state = "table_horizontal"; dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/window/southright,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/turf/simulated/floor,/area/security/lobby) +"aeB" = (/obj/machinery/door/window/brigdoor{base_state = "rightsecure"; dir = 1; icon_state = "rightsecure"; req_access_txt = "63"},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/lobby) "aeC" = (/obj/machinery/door/firedoor,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/glass_security{name = "Prison Wing"; req_access_txt = "2"},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/prison) "aeD" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/security/brig) "aeE" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/security/brig) @@ -279,7 +279,7 @@ "afs" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/security/brig) "aft" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/security/brig) "afu" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/security/brig) -"afv" = (/obj/structure/table/reinforced{icon_state = "table_horizontal"; dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/machinery/door/window/southright,/turf/simulated/floor,/area/security/lobby) +"afv" = (/obj/structure/table/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/window/southright,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/turf/simulated/floor,/area/security/lobby) "afw" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/security/brig) "afx" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/security/brig) "afy" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; external_pressure_bound = 100; on = 1; pressure_checks = 1},/turf/simulated/floor,/area/security/main) @@ -567,7 +567,7 @@ "akU" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/wall,/area/security/brig) "akV" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable,/turf/simulated/floor/plating,/area/security/lobby) "akW" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall,/area/security/main) -"akX" = (/obj/machinery/door/window/brigdoor{dir = 1; req_access_txt = "63"},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/lobby) +"akX" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/machinery/door/window/southright,/obj/structure/table/reinforced,/turf/simulated/floor,/area/security/lobby) "akY" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/cable,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/structure/window/reinforced{dir = 4},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating,/area/security/lobby) "akZ" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{id_tag = "BrigFoyer"; layer = 2.8; name = "Brig"; req_access_txt = "63"},/turf/simulated/floor{icon_state = "redfull"; dir = 9},/area/security/lobby) "ala" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "dark"},/area/security/warden) @@ -939,7 +939,7 @@ "asc" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor{dir = 5; icon_state = "green"},/area/hydroponics) "asd" = (/obj/structure/rack{dir = 1},/obj/item/clothing/suit/fire/firefighter,/obj/item/weapon/tank/oxygen,/obj/item/clothing/mask/gas,/obj/item/weapon/extinguisher,/obj/item/clothing/head/hardhat/red,/obj/item/clothing/glasses/meson,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 10},/area/maintenance/fsmaint) "ase" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 6},/area/maintenance/fsmaint) -"asf" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/vending/cola,/turf/simulated/floor{icon_state = "dark"},/area/hallway/secondary/exit) +"asf" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/checkpoint2) "asg" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 4; icon_state = "chapel"},/area/chapel/main) "ash" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/stool{pixel_y = 8},/turf/simulated/floor/wood,/area/crew_quarters/bar) "asi" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/disposalpipe/segment,/turf/simulated/floor/wood,/area/crew_quarters/bar) @@ -1518,7 +1518,7 @@ "aDj" = (/obj/structure/shuttle/engine/propulsion{icon_state = "burst_r"; dir = 8},/turf/space,/area/shuttle/arrival/station) "aDk" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/turf/simulated/floor{dir = 8; icon_state = "escape"},/area/hallway/secondary/exit) "aDl" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor,/area/hallway/primary/starboard) -"aDm" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/security/checkpoint2) +"aDm" = (/obj/structure/closet/secure_closet/security,/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "red"; dir = 9},/area/security/checkpoint2) "aDn" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor,/area/security/checkpoint2) "aDo" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/structure/stool/bed/chair/office/dark,/turf/simulated/floor,/area/security/checkpoint2) "aDp" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/checkpoint2) @@ -1593,7 +1593,7 @@ "aEG" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion"; dir = 8},/turf/space,/area/shuttle/arrival/station) "aEH" = (/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry) "aEI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/closet/crate,/obj/item/clothing/mask/gas,/obj/item/device/flashlight,/obj/item/device/flashlight,/turf/simulated/floor/plating,/area/maintenance/port) -"aEJ" = (/turf/simulated/floor{icon_state = "red"},/area/security/checkpoint2) +"aEJ" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/security/checkpoint2) "aEK" = (/obj/structure/table/reinforced,/obj/machinery/computer/skills{icon_state = "medlaptop"},/turf/simulated/floor{icon_state = "red"},/area/security/checkpoint2) "aEL" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/turf/simulated/floor{icon_state = "red"},/area/security/checkpoint2) "aEM" = (/obj/machinery/recharger{pixel_y = 4},/obj/structure/table/reinforced,/turf/simulated/floor{icon_state = "red"},/area/security/checkpoint2) @@ -1655,7 +1655,7 @@ "aFQ" = (/obj/machinery/door/airlock/command{name = "Conference Room"; req_access = null; req_access_txt = "19"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/wood,/area/bridge/meeting_room) "aFR" = (/obj/machinery/light/small,/turf/simulated/floor{icon_state = "wood"},/area/crew_quarters/bar) "aFS" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/sortjunction/wildcard,/turf/simulated/floor/plating,/area/maintenance/port) -"aFT" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall/r_wall,/area/bridge/meeting_room) +"aFT" = (/obj/structure/closet/wardrobe/red,/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/checkpoint2) "aFU" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/wood,/area/crew_quarters/bar) "aFV" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/carpet,/area/library) "aFW" = (/obj/structure/disposalpipe/segment,/obj/machinery/light{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/primary/starboard) @@ -2191,7 +2191,7 @@ "aQg" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/primary/central) "aQh" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/primary/central) "aQi" = (/obj/machinery/computer/security/telescreen/entertainment{pixel_x = -32},/obj/structure/stool{pixel_y = 8},/turf/simulated/floor/wood,/area/crew_quarters/bar) -"aQj" = (/obj/structure/closet/secure_closet/security,/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor{icon_state = "red"; dir = 9},/area/security/checkpoint2) +"aQj" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "red"},/area/security/checkpoint2) "aQk" = (/obj/structure/stool{pixel_y = 8},/turf/simulated/floor/wood,/area/crew_quarters/bar) "aQl" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall,/area/security/checkpoint2) "aQm" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "vault"; dir = 1},/area/security/nuke_storage) @@ -2250,7 +2250,7 @@ "aRn" = (/turf/simulated/floor,/area/crew_quarters/locker) "aRo" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/crew_quarters/locker) "aRp" = (/obj/machinery/vending/coffee,/turf/simulated/floor,/area/crew_quarters/locker) -"aRq" = (/obj/structure/closet/wardrobe/red,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/checkpoint2) +"aRq" = (/obj/machinery/camera{c_tag = "Security Checkpoint"; dir = 1},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "red"; dir = 10},/area/security/checkpoint2) "aRr" = (/obj/machinery/vending/cigarette,/turf/simulated/floor,/area/crew_quarters/locker) "aRs" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor,/area/crew_quarters/locker) "aRt" = (/obj/structure/closet/secure_closet/personal,/turf/simulated/floor,/area/crew_quarters/locker) @@ -2328,7 +2328,7 @@ "aSN" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/storage/emergency2) "aSO" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/disposalpipe/segment,/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/crew_quarters/fitness) "aSP" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall,/area/crew_quarters/toilet) -"aSQ" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/checkpoint2) +"aSQ" = (/obj/machinery/door/airlock/security{name = "Security Checkpoint"; req_access = null; req_access_txt = "1"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor,/area/security/checkpoint2) "aSR" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor,/area/storage/tools) "aSS" = (/turf/simulated/floor,/area/storage/tools) "aST" = (/obj/machinery/light_switch{pixel_y = 28},/obj/machinery/camera{c_tag = "Auxiliary Tool Storage"; dir = 2},/turf/simulated/floor,/area/storage/tools) @@ -2462,7 +2462,7 @@ "aVr" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/fsmaint2) "aVs" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plating,/area/maintenance/fsmaint2) "aVt" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/fpmaint2) -"aVu" = (/obj/machinery/camera{c_tag = "Security Checkpoint"; dir = 1},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "red"; dir = 10},/area/security/checkpoint2) +"aVu" = (/obj/machinery/vending/cola,/turf/simulated/floor{icon_state = "dark"},/area/hallway/secondary/exit) "aVv" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable,/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/ai_monitored/storage/eva) "aVw" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall,/area/hallway/primary/fore) "aVx" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/wall,/area/crew_quarters/toilet) @@ -2640,8 +2640,8 @@ "aYN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/sign/double/map/right,/turf/simulated/wall,/area/maintenance/fpmaint2) "aYO" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall,/area/maintenance/fpmaint2) "aYP" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/obj/machinery/door/window{dir = 1; name = "Security Checkpoint"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "delivery"},/area/hallway/secondary/entry) -"aYQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/wall,/area/security/checkpoint2) -"aYR" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/airlock/security{name = "Security Checkpoint"; req_access = null; req_access_txt = "1"},/turf/simulated/floor,/area/security/checkpoint2) +"aYQ" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/storage) +"aYR" = (/obj/machinery/door/airlock/highsecurity{name = "Messaging Server"; req_access_txt = "30"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_server_room) "aYS" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/storage/tools) "aYT" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/wall,/area/storage/tools) "aYU" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/fsmaint2) @@ -2911,7 +2911,7 @@ "bdY" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet) "bdZ" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/plating,/area/maintenance/fsmaint) "bea" = (/obj/machinery/portable_atmospherics/scrubber,/obj/machinery/light,/turf/simulated/floor{icon_state = "delivery"},/area/crew_quarters/locker) -"beb" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/disposalpipe/sortjunction/flipped{dir = 2; name = "Miscellaneous Research"; sortType = "Miscellaneous Research"},/turf/simulated/floor/plating,/area/maintenance/asmaint) +"beb" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor{dir = 1; icon_state = "whiteredcorner"},/area/medical/patient_wing) "bec" = (/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -27},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/storage) "bed" = (/obj/structure/closet/crate/freezer,/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/storage) "bee" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/storage) @@ -3349,9 +3349,9 @@ "bmu" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor{dir = 1; icon_state = "whitered_b"; tag = "icon-whitered_b (WEST)"},/area/medical/patient_wing) "bmv" = (/obj/machinery/airlock_sensor{id_tag = "tox_airlock_sensor"; master_tag = "tox_airlock_control"; pixel_y = 24},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/binary/pump{dir = 4; icon_state = "intact_on"; on = 1},/turf/simulated/floor/engine,/area/rnd/mixing) "bmw" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor{dir = 8; icon_state = "yellowcorner"},/area/hallway/primary/aft) -"bmx" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{dir = 1; icon_state = "whiteredcorner"},/area/medical/patient_wing) +"bmx" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/disposalpipe/sortjunction/flipped{dir = 2; name = "Miscellaneous Research"; sortType = "Miscellaneous Research"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/asmaint) "bmy" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/maintenance/asmaint) -"bmz" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{name = "Medbay Patient Wing Maintenance Access"; req_access_txt = "5"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/medical/patient_wing) +"bmz" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{name = "Medbay Patient Wing Maintenance Access"; req_access_txt = "5"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/medical/patient_wing) "bmA" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/asmaint) "bmB" = (/obj/structure/table/woodentable,/obj/item/weapon/book/manual/engineering_guide{pixel_x = 3; pixel_y = 2},/obj/item/weapon/book/manual/atmospipes,/turf/simulated/floor/carpet,/area/engine/break_room) "bmC" = (/obj/structure/table/woodentable,/obj/item/weapon/book/manual/engineering_construction,/obj/item/weapon/book/manual/evaguide{pixel_x = -2; pixel_y = 7},/turf/simulated/floor/carpet,/area/engine/break_room) @@ -4898,7 +4898,6 @@ "bQj" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "hazard door north"},/obj/machinery/door/airlock/command{name = "Server Room"; req_access = null; req_access_txt = "30"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "dark"},/area/server) "bQk" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "bQl" = (/obj/machinery/door/airlock/command{name = "Head of Personnel"; req_access = null; req_access_txt = "57"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/hallway/primary/central) -"bQm" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall/r_wall,/area/turret_protected/ai_server_room) "bQn" = (/turf/simulated/wall/r_wall,/area/turret_protected/ai_upload_foyer) "bQo" = (/obj/machinery/door/airlock/highsecurity{icon_state = "door_closed"; locked = 0; name = "AI Upload Access"; req_access_txt = "16"},/turf/simulated/floor{icon_state = "vault"},/area/turret_protected/ai_upload_foyer) "bQp" = (/obj/machinery/light{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) @@ -4973,7 +4972,6 @@ "bRG" = (/obj/machinery/blackbox_recorder,/turf/simulated/floor/bluegrid,/area/turret_protected/ai_server_room) "bRH" = (/obj/machinery/light_switch{pixel_y = -25},/obj/machinery/camera{c_tag = "Messaging Server"; dir = 1},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_server_room) "bRI" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/medical/genetics) -"bRJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/door/airlock/highsecurity{name = "Messaging Server"; req_access_txt = "30"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_server_room) "bRK" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/obj/machinery/door/airlock/mining{name = "Mining Dock"; req_access_txt = "48"},/turf/simulated/floor,/area/quartermaster/miningdock) "bRL" = (/obj/structure/filingcabinet,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/quartermaster/qm) "bRM" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics_cloning) @@ -5082,7 +5080,6 @@ "bTL" = (/obj/structure/stool/bed/chair{dir = 4},/obj/effect/landmark/start{name = "Cargo Technician"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/quartermaster/office) "bTM" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/port) "bTN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall,/area/quartermaster/storage) -"bTO" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/storage) "bTP" = (/obj/structure/closet/crate/internals,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/storage) "bTQ" = (/obj/structure/closet/crate/medical,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/storage) "bTR" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port) @@ -10632,7 +10629,6 @@ "dWz" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/computer/med_data/laptop,/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "dWA" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/medical/virology) "dWB" = (/obj/machinery/door/window/southright{name = "Virology Isolation Room Two"; req_access_txt = "39"},/turf/simulated/floor{dir = 2; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) -"dWC" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/asmaint) "dWD" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/medical/virology) "dWE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/medical{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "virologyq_airlock_interior"; locked = 1; name = "Virology Quarantine Airlock"; req_access_txt = "39"},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "dWF" = (/obj/structure/closet/secure_closet/personal/patient,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) @@ -10948,9 +10944,9 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcaaaaaaaafaaaaeFajjajkajlajmajnagbagcaeFajqageajqagdajqaenahbagfajtafTahfaenaceafYajvajwafXagaaceafZajAajAajBaceajCajhajhaceajDajEajFajFajGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajiajiajiajiajiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcaaaaaaaafaaaaeFajHajIajJajKajLaeVaeXaffaffafhaflafnaffafsaiwafnaftafhafuaiYaflafxafwafBafzafIafHafRafKakeakfakgakhakiakjakkaklakmaknakoahTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajiaaaaaaajiaaaaaaajiajiajiajiajiajiajiaaaaaaajiaaaaaaajiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcaaaaafaafaeFakqakraksafkakuakvaeOaeLaeNaezaeuaeqaeoaeTahzaeoaeSaezaevagTaeuaeqaeoaeoaelaeKaeIaiRaeGaeEaeDakNahaajhakPaceaklakQajFajFakRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajiajiajiajiaaaajiajiajiajiajiajiajiajiajiaaaajiajiajiajiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcaaaaaaaafaeFaeFaeFaeFaeFaeFaeFaeFaebakTakUaeFaeFagXakVaecakXakYakZaeeaefagXaeFaeFaeFaedaekalealealfalgaegalialjalealkaceaceacfacfacfacfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajiajiajiajiaaaajiajiajiajiajiajiajiajiajiaaaajiajiajiajiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcaaaaaaaafaeFaeFaeFaeFaeFaeFaeFaeFaebakTakUaeFaeFagXakVaecaeBakYakZaeeaefagXaeFaeFaeFaedaekalealealfalgaegalialjalealkaceaceacfacfacfacfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajiajiajiajiaaaajiajiajiajiajiajiajiajiajiaaaajiajiajiajiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcafcafcafcaaaaaaafcafcafcafcafcafcafcaaaaaaafcafcafcafcaaaaaeaaaaafaafaafallaeFalmalnadXadYadTadUadPaltaluadKalwadQalyalzadMadLalCadKalDalEadPadNadFalealHalIalJadHalLagraleakPalNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalOalOalOalOalOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalPalPalPalQalQaaaaaaaaaaaaaaaaaaaaaaaaajiajiajiajiaaaajiajiajiajiajiajiajiajiajiaaaajiajiajiajiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaalQalQalPalQalQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcafcafcafcafcafcafcaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafalRaeFalSalTadpaeFadAadBalXalYalZadoambaeBafvameacUamgalCagpamialYamjadGadFaleamlammammacCammagialeakPalNaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaalOalOalOalOalOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalPaaaaafaaaampaaaaaaaaaaaaaaaaaaaaaaaaajiajiajiajiajiajiajiajiajiajiajiajiajiajiajiajiajiajiajiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaalQalQalPalQalQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcafcafcafcafcafcafcaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafalRaeFalSalTadpaeFadAadBalXalYalZadoambafvakXameacUamgalCagpamialYamjadGadFaleamlammammacCammagialeakPalNaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaalOalOalOalOalOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalPaaaaafaaaampaaaaaaaaaaaaaaaaaaaaaaaaajiajiajiajiajiajiajiajiajiajiajiajiajiajiajiajiajiajiajiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaafaaaampaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcafcafcafcafcafcafcaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafamqamraeFamsamtadmaeFadgadhacXamyamzamAamBacWacVamEacUamFalCamAamGamHacSacIacFaleamLamMammacCammadnaleakPalNaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaalOalOalOalOalOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalPaafamOaafalPaaaaaaaaaaaaaaaaaaaaaaaaajiajiajiajiajiajiajiajiajiajiajiajiajiajiajiajiajiajiajiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalPaafamPaafalPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcafcafcafcafcafcafcaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafamqalRaeFacjackabZacaacgaciaeFaeFaeFagXamWamFabWamYacBanaadzagXaeFaeFaeFacAacnacmaczacyanhaclammabzaleakPalNaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaalOalOalOalOalOaaaaaaaaaaaaaaaaaaalPalPalPalPalPaaaaaaaaaankaaaaaaaaaalPalPalQalQalQaaaaaaajiajiajiajiajiajiajiajiajiajiajiajiajiajiajiajiajiajiajiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQalQalQalPalPaaaaaaaaaanlaaaaaaaaaalPalPalQalQalQaaaaaaaaaaaaafcafcafcafcafcafcafcaaaaaaaaaaaaaaaaaaaaaaafaafanmannanoanpaeFaiHanrajsaeFajpajrajuanwanxadKajzajMajxajyajNamFalCadKanDalEadPadNajQaleajPajOanHacCammapcaleakPalNaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaalOalOalOalOalOaaaaaaaaaaaaaaaaaaampaaaaaaaafaafaafaaaaaaankaafaafaaaaafaafaaaaaaalQaaaaaaajiajiajiajiajiajiajiajiajiajiajiajiajiajiajiajiajiajiajiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -10973,28 +10969,28 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafatHayUayVayUayWaxTaxTayXayUayVayUayYaxSaxVayZatKaxfatKatKazaatOatOatOatOatPatKazbazcazdazeazbapxapxawoawpawqapxapxapxapaaryaygaaaaafaaaaafaaaaafaaaaafaaaaygaykaylazfazgazhaziazjaylaQnapaaxrazkazkazlazmaznazoaPpaBdazrazsaztaztaxrayzapEazualNaQvaNFaHybdEaHqaHrauhazvbbOazxazyazzazAazBazBazCazBasPbeXbfGbeFbeGbeHbeObeEasPbdLasRasRasRasRasRbdKasPaafaaaaaaaaaaaaaafaafaaaaafazLazMbdMazOazPaafaaaaaaaafaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafazQasSazRavtazSazTazUazVazWazSavtazXazYasSazZaAaatKaAbaAcaAcaAcaAcaAcaAcavzbezaAeazbaAfaAgaAhazbbghapaapaapaapaapaapaapaapaaAjaygaafaAkaAkaAkaAkaAkaAkaAkaafaygaykaylaAlaAmaAnaAoaAlaylaQnaApaxraxraxraxraAqaAraypaAsaAraAtaxraxraxraxrayzapEaAualNaQvaNFaHybdEaHqaHravdaAvazBazBazBazBazBazBaAwaAxaAyazBasPasPasPasPbgobgrasPasPbdKasRasRasRasRasRbdKasPaaaaaaaaaaaeaaaaaaaaaaaaaafaAAaABbdTaADaAAaafaaaaaaaafaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxRayVaAEaAFaAFaAFaAFaAGayVaxRaAHasSaAIaAJaAKaAKaAKaAKaAKaAKaAKaAKawibfxbfzazbbckaANaAOazbaAPaAQaAPaAPaAPaAPaAPaAPaAPaAPaARaaaaAkaASaATaAUbbTaAWaAkaaaaygaykaylaAlaAXbewaAZaAlaylaQnapxaxraBaaBbazlaBcaBdazoazpaBdaBeazsaBfaBfaxrayzapEayAalNbdZaIkaIhbdEbejbelavdaAvazBaBiaAxaBjaBjazBaAwaBkaAyazBaBlaBmaBnaBobhDaULaBqaafbfBbfdbfdbfdbfdbfdbfgaafaaaaaaaaaaaaaaaaaaaaaaaaaafaAAaBuaBvaBwaAAaafaaaaaaaBqaBqaBqaBqaBqbhqbhCaBqaBqaBqaBqaBqaBqaBqbgHaBFaBFaBFaBGaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaBHaBIaBJaBIaBIaDRaDSaBIaBIaBJaBMaBNasSayWaBOaQlaQjaSQaBSaBTaBUaBVaAKawiaPOatKazbazbaBXaBYaARaBZaCaaCbaCcaCdaCeaCfaCgaXEaCiaARaafaAkaQmaCkaClaCmaCnaAkaafaygaykaylaCoaCpaCqaCpaCraylaQnaCsaxrayoaypaCtaCuaAraCvaAsaAraCwaCxaypaCyaxrayzapEayAalNaQvaIAaIDaQxaIvaHraCAaCBazBaCCaAxaAxaAxazCaCDaCEaCFazBaCGaCHaCIaCJaYFaULaBqaaaaafaaaaafaaaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaAAaZbaCMaCNaAAaBqaCOaCPaBqaQSaQDaQDaQDaQDaQDaQDaQFaRdaRdaRdaRdaRfaRdaRdaRdaRhaDaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBHaBMaBIaDbaDcaDcaDdaDeaDfaDgaDhaDcaDcaDiaDjayUayWaZuaAKaRqaDmaDnaDoaDnaDpaDqaDraDsaqYaZnaDuaDvaAcaDwaDxaDyaDzaDzaDzaDAaDzaDzaDBaCaaARaaaaAkaRAaRTaRVaCmaSaaAkaaaaygaykaylaRuaDHaDIaDJaRyaylaQnaDLaxraxraxraxraDMaAraypaDNaBdaDOaTuaypaDQaVHaVzaVAaVpaVwaKJaVGaShaShaShaSEaScaVdaTiaTnbabaSPaSPaSPaUgaSPaTFaTTaTUaTVaUkaUGaVQaULaBqaBqaBqaBqaBqaBqaBqaBqaBqaCOaCPaBqaBqaBqaCOaEjaEkaBqaBqaAAaAAaElaEmaAAaEnaVqaVoaVoaVsaEsaEsaEsaEsaEsaWyaVraEuaEuaEuaEuaUNaEuaEyaEyaVnaEyaEyaEyaEyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDiaEBaECaEDaDcaEEaDcaEEaDcaEEaDcaEEaDcaEFaEGazSayWaEHaAKaVuaEJaEKaELaEMaENaAKaEOaVtaAcaEQaAcaERaqYaAPaESaDBaDzaDzaDzaDzaDzaDzaETaWjaWgaVJaVIaWMaWNaWKaWLaWJaAkaafaygaWIaWpaWuaWxaWqaWsaWkaWpaZdaZcaxraFmaypazlaFnaBdazoaFoaAraCwaVvaypaFqaVHaWTaFsaFtaXcbdZagjagjagjagjaVEaVFaWSaVxaVybazaVxaXfaVxaXeaVxaXgaXhaFGaFHaFIaBoaXjaXmaXXaXVaXVaXCaYcaXYaXYaXYaXYaXYbaCaXYaXYaYwaYgaYeaXnaYHaYGaYxaWOaWPaWQaWQaWQaWRaEsaEsaGeaEsaGfaGgaGhaEsaEuaWUaEuaGjaXlaXkaGmaGnaGoaIbasHaGraGsaGtaGuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGvaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaXoaDcaDcaBJaDcaEEaDcaEEaGxaEEaDcaEEaDcaEFaEGazSayWaGyaAKaYQaYRaYKaYPaYKaQlaQlaYJaYNaYOaYLaYMaYLaYLbakbajaGKaGLaGLaGLaGMaGLaGLaGNaGOaARaaaaZXaAkaGQaZOaGQaAkaAkaaaaygavOaylbaiaZIaZiaZqaZDaZEaZhbglaxraHbaypaCxaCuaAraypaAsaAraCwaZgaypaHdawGaYhaHfaHgaUnaYfalNalNalNalNalNaHjaYbazBaHlaAxazBaHmazBaHnazBaHobcvbcwbcNbczbdNbcXaYUbdlbdmbbvbdAbbwbbvbbvbbxbbzbbybbAbbybbFbbybbybbibcubcbbawbawbbEbaSbawbaxbawbaWaYIaHOaHPaHQaHRaHSaHTaEsaHUbaXaEuaHWaHXaYiaHZaGnaIaaIbasHaIcaEyaEyaEyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaBHaBIaBJaBIaBIaDRaDSaBIaBIaBJaBMaBNasSayWaBOaQlaDmasfaBSaBTaBUaBVaAKawiaPOatKazbazbaBXaBYaARaBZaCaaCbaCcaCdaCeaCfaCgaXEaCiaARaafaAkaQmaCkaClaCmaCnaAkaafaygaykaylaCoaCpaCqaCpaCraylaQnaCsaxrayoaypaCtaCuaAraCvaAsaAraCwaCxaypaCyaxrayzapEayAalNaQvaIAaIDaQxaIvaHraCAaCBazBaCCaAxaAxaAxazCaCDaCEaCFazBaCGaCHaCIaCJaYFaULaBqaaaaafaaaaafaaaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaAAaZbaCMaCNaAAaBqaCOaCPaBqaQSaQDaQDaQDaQDaQDaQDaQFaRdaRdaRdaRdaRfaRdaRdaRdaRhaDaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBHaBMaBIaDbaDcaDcaDdaDeaDfaDgaDhaDcaDcaDiaDjayUayWaZuaAKaFTaEJaDnaDoaDnaDpaDqaDraDsaqYaZnaDuaDvaAcaDwaDxaDyaDzaDzaDzaDAaDzaDzaDBaCaaARaaaaAkaRAaRTaRVaCmaSaaAkaaaaygaykaylaRuaDHaDIaDJaRyaylaQnaDLaxraxraxraxraDMaAraypaDNaBdaDOaTuaypaDQaVHaVzaVAaVpaVwaKJaVGaShaShaShaSEaScaVdaTiaTnbabaSPaSPaSPaUgaSPaTFaTTaTUaTVaUkaUGaVQaULaBqaBqaBqaBqaBqaBqaBqaBqaBqaCOaCPaBqaBqaBqaCOaEjaEkaBqaBqaAAaAAaElaEmaAAaEnaVqaVoaVoaVsaEsaEsaEsaEsaEsaWyaVraEuaEuaEuaEuaUNaEuaEyaEyaVnaEyaEyaEyaEyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDiaEBaECaEDaDcaEEaDcaEEaDcaEEaDcaEEaDcaEFaEGazSayWaEHaAKaRqaQjaEKaELaEMaENaAKaEOaVtaAcaEQaAcaERaqYaAPaESaDBaDzaDzaDzaDzaDzaDzaETaWjaWgaVJaVIaWMaWNaWKaWLaWJaAkaafaygaWIaWpaWuaWxaWqaWsaWkaWpaZdaZcaxraFmaypazlaFnaBdazoaFoaAraCwaVvaypaFqaVHaWTaFsaFtaXcbdZagjagjagjagjaVEaVFaWSaVxaVybazaVxaXfaVxaXeaVxaXgaXhaFGaFHaFIaBoaXjaXmaXXaXVaXVaXCaYcaXYaXYaXYaXYaXYbaCaXYaXYaYwaYgaYeaXnaYHaYGaYxaWOaWPaWQaWQaWQaWRaEsaEsaGeaEsaGfaGgaGhaEsaEuaWUaEuaGjaXlaXkaGmaGnaGoaIbasHaGraGsaGtaGuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGvaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaXoaDcaDcaBJaDcaEEaDcaEEaGxaEEaDcaEEaDcaEFaEGazSayWaGyaAKaAKaSQaYKaYPaYKaQlaQlaYJaYNaYOaYLaYMaYLaYLbakbajaGKaGLaGLaGLaGMaGLaGLaGNaGOaARaaaaZXaAkaGQaZOaGQaAkaAkaaaaygavOaylbaiaZIaZiaZqaZDaZEaZhbglaxraHbaypaCxaCuaAraypaAsaAraCwaZgaypaHdawGaYhaHfaHgaUnaYfalNalNalNalNalNaHjaYbazBaHlaAxazBaHmazBaHnazBaHobcvbcwbcNbczbdNbcXaYUbdlbdmbbvbdAbbwbbvbbvbbxbbzbbybbAbbybbFbbybbybbibcubcbbawbawbbEbaSbawbaxbawbaWaYIaHOaHPaHQaHRaHSaHTaEsaHUbaXaEuaHWaHXaYiaHZaGnaIaaIbasHaIcaEyaEyaEyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDiaIdaECaEDaDcaEEaDcaEEaDcaEEaDcaEEaDcaEFaEGazSaIeawzawyawxawuawuawuawzawCawDawzawAaImaInawBauKauKaAPaGOaIpaCaaIqaGOaGOaIraIsaItaIuaARaaaawaaaaavMavNavMaaaaafaaaaygavOaylaIyaIzavZaIBaICaylavLapaaxraIEaypazlaIFaIGazoaIHaIIaIJaIKaILaIMawGaBsaIOaIPaIQaBKaISaaaaaaaUnaIUaIVaBLazBaIXaAxaAxaAxaCEaAxaAxaAxauOaBoaKyaBoaBoavJaBoaJcaBoaJdavHavGaJgaJhaJiaJjaJkavFaJjavEaJjaJjaJjaJjavDaJjaJjavCaJjaJjaJjaJjasIayRayvaAzaAiaBraBpazHbMsazIavpavlavmavnazFayNayPazDazEasHaIbaJDaJEaJFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJHaJIaBIaDbaDcaDcaDcaJJaDcaDcaJKaDcaDcaDiaJLaJMayWaxTaJNaJOaJOaJOaJOaJOaJOaJOaJPasDatKatKavkatKatKaAPaJSaJTaJUaJVaJVaJVaJVaJWaJXaJYaARaJZavaaKbaKcavbaKeaKbaKbaKfaygavcaylaylaylayKayJayLawGayBavKaxraxraxraxraKlaKmaCxaCxaKnayHawGawGaxraxraIOaIOaIOaIOaKpaKqaKraKsaUnaKtaIVaKuazBazBazBazBazBazBazBazBazBauOaKwaKvaKxaIZauMavIaKBaKCaJdauyauWauXaKGaKHaJjaKIauVaKKawtaKKaKMaKNaKOauQaKQaKRauxaKTauUaKVaJjauwauvaKYaJraKZaJtaJuaysaEsaLbauuaLdavfauoaveaunaEuaEyaLhasHaIbaLiaLjaLkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJHaBIaBJaBIaBIaDRaDSaBIaBIaBJaJIaLmasSaLnaxTawXaLoaLoaLpaLoaLqatHaLraLsasDaLtaLuaACaLwazwaLyaLzaLAaLzaLzaLzaLzaLzaLzaLzaLBaLCazNaAdaLFaLFayTaLHaLFaLFaLFaLIazKaLKaLLaLFazJaLNaLOaLPaDKaIOaLRaLSaIOaIPaLTaLTaLTaLTaLTaLTaLUaLVaLWaLXaLYaLZaMaaMbaMcaIOaIOaIOaDGaMeaMfaMeaMgaMhaMiaMjaIOaMkaIOaBoaMlaxMaOOaMoaMnaMpaxKaMraMsaMtaJdaxLaMvaMwaMwaMxaJjaMyaxJaMAaxBaMAaMAaMCaMDaxDaMDaMFayOayCayQaMDaJjasIarZaHPaHPaCXaDFaHPaHPaEsaMOaMPaEuaytaMRaHZavTaEuaMSaymayeaIbaEyaEyaEyaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawXayVaMVaAFaAFaAFaAFaMWayVawXaAHasSaAIaMXaMYaMZavSaNbaNbaNcatHaNdaLsaxAaNfaLuaxzaNhaNiaNjaNkaNlaLzaLzaLzaLzaLzaLzaLzaxhaxiaxuaLzaLzaLzaxpayuaLzaLzaLzaLzaxvaLzaLzaLzaxtaNmaLuaLPaIOaIOaIOaIOaIOaIOaIOaIOaIOaIOaIOaIOaNsaNtaNuaNvaNwaNxaNyaNzaNAaIOaIOaIOaLPaIOaIOaIOaIOaIOaIOaIOaIOaNBaCzaCjaCWaCQaMpaNEaMpaMpawEaNGaMsaNHaJdawFawJawSaNLaNMaJjaNNawTaNPawHaNRaNSaJjaNTawIaNTaJjaJjaJjavCaJjaJjasIarZaNVaHPaHPaNWaHPaNXaEsaEuaEuaEuaEuaEuaEuavQaEuaIbaIbasHaIbaNZaOaaEyaaaaafaaaaaaaaaaaaaaaaaaaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafazQasSaMYavtazSaObaOcaOdaOeazSavtaOfaOgasSayWaxTaMYaOhaOiaNbaNbaNcatHaOjaLsasDaNfaLuasXaLAaLzaLzaLzaChaEzaBPaLzausardaOmaOraALatmarMaOmaOvaOwaOxathatlatkatjatiatcatbatbasYatdaNmaLuaLPaIOaOHaIOaOIaOIaOIaOIaOIaOIaOIaOIaOJaOKaOIaOIaOIaOIaOLaOIaOIaOIaOIaOIaOMaONaOIaOIaOIaOIaOIaOIaOIaIOaIOaIOaBoaAYasOaOQaOQaOQaORasQaNGaMsaBQaJdaJdaJdaJdaJdaOUaJjaOVasKasLasNaNPaNPaJjaOZasMaPbaPcaPbaPbasJaPeaJjasIarZaPfaPfaPgaPhaPiaPiaPjaEsaPkaPlaPmaEyaskaVbasbaIbaIbasHaIbaEyaPsaEyaPtaPtaPtaPuaPvaPwaaaaaaaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafatHaxRayVaJMayWaxTaxTayXaJMayVaJMaPxawYaPyaxTaxRaPzaPzaLpaPzaLqatHaPAaLsasDaPBaPBasCatzaPBaPEaPEaPEaPEaPEaPFaPGaPEaPEaPEaPEaPEasEaPIaPJaPIaPKasGaPMaLzaLAaPNasFaPPaPQaLAaLzaPRaPRaUnaIOaIOaIPaPTaKraKraPUaPUaPUaPUaPVawGawRaxqaPZaQaaQaaQbaQcaQaaQdaQeaQfawGaQgaPUaPUaPUaPUaKraKraQhaINaIOaIOaBoaQiashaQkaQkaQkaQkasyassasiaQoavXarFdZFaQsaQtaQuaJdaJdaszaQwasBaQyaQzaJjaQAasAaQCaQCaQCaQCascaQEaJjasaarZaQGaHPaPgaPhaHPaHPaQHaEsaQIaQJaQKaEyaQLarpaPraSoaPoasgaIbaQQaQRaEyasfaQTaPtaQUaQVaQWaafaaaaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafatHaxRayVaJMayWaxTaxTayXaJMayVaJMaPxawYaPyaxTaxRaPzaPzaLpaPzaLqatHaPAaLsasDaPBaPBasCatzaPBaPEaPEaPEaPEaPEaPFaPGaPEaPEaPEaPEaPEasEaPIaPJaPIaPKasGaPMaLzaLAaPNasFaPPaPQaLAaLzaPRaPRaUnaIOaIOaIPaPTaKraKraPUaPUaPUaPUaPVawGawRaxqaPZaQaaQaaQbaQcaQaaQdaQeaQfawGaQgaPUaPUaPUaPUaKraKraQhaINaIOaIOaBoaQiashaQkaQkaQkaQkasyassasiaQoavXarFdZFaQsaQtaQuaJdaJdaszaQwasBaQyaQzaJjaQAasAaQCaQCaQCaQCascaQEaJjasaarZaQGaHPaPgaPhaHPaHPaQHaEsaQIaQJaQKaEyaQLarpaPraSoaPoasgaIbaQQaQRaEyaVuaQTaPtaQUaQVaQWaafaaaaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawXaQXaxTaQYaPyaxTaxTaQZaQYaxTaQXaPyaxTaxTaxTaRaaRbaRbaRbaRbaRbaRbaRbaRcatUaPBaReaufaFvautaumaRjaRkaRlaRmaRnaRoaRpaukaRraRsaRtaujaRvaRwaxIaPKatwaPMaPMaRzaPMaugaPSaPSaRBaRCaPSaPSaPSaRDaIOaIPaREaaaaaaaaaaaaaaaaaaaaaaPWaRFaRGaRHaRIaRJaRKaRJaRLaRMaRNaROaPWaaaaaaaaaaaaaaaaaaaaaaRPaINaIOauZaRRaRSatDaQoaQoaQoaQoaQoaRUatGaQoaQoaQoaQraMpaRWaRXaRYaRZatxaSbatyaSdaSeaJdaPbatCaSgaSgaSgaSgatTaSiaJjasIarZaSjaSjaPgaPhaSkaSkaSlaEsaEsaSmaEsaEyaLhatZaulaulaulatNaTJaEyaEyaEyaSpaSqaSraSsaStaSuaafaafaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaxRaSvaSwaSvaSvaSvaSvaSvaSvaSwaSvaSvaSxaxTaxTaSyaxTaxTaSzaxTaSAaSBaSCaSDatuaPBaReattbeRaPEaSHaRnaRnaRnaRnaRnaRoaSIaRnaRnaRnaRtasEaSJaSKauRaPKatwaPMaSMaSNaupatvaPSasnaSRaSSaSTaSUaSVaIOaIOaIPaREaaaaaaaaaaaaaPWaPWaPWaPWaSWaSXaSYaSZaTaaTbaTcaTdaTeaTfaTgaPWaPWaPWaPWaaaaaaaaaaaaaRPaINaIOaIOaThaQoatnaTjaTkaQoaTlaTmaCIatqaToaTkaQoaQraMpaTpaRXaTqaTratraTtatsaTvaRXaTwaTxaTyaSgaTzaTAaSgaTBaPbaJjasIarZaQGaHPaPgaPhaHPaHPaHPaTCaTDaHPaTEaEyarDastaSoaSoaSoasgaIbaIbaEyaTKaSsaSsaSsaSsaStaTLaTMaTMaTNaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasSasSaTOaTPaTPaTPaTPaTPaTPaTPazYasSatHaTQaTRaTSaTSaTSaFuaTSaTSaTSaBgaTSaBgaPBaReattbeRaPEaTXaRnaRnaTYaTZaUaaUbaTYaRnaRnaRnaUcasEaUdaUeaUfaPKaFkaPMaUhaUiaUjaFpaPSaUlaSUaSUaSSaSUaUmaIOaIOaIPaKqaPVaUnaUoaPWaPWaUpaUqaUraUsaUtaUtaUuaUvaUtaUuaUvaUtaUwaUxaUyaUzaUAaPWaPWaUoaUnaUBaUCaINaIOaIOaBoaUDatnaToaTkaQoaUEaUFaQoaFjaUHaTkaQoaQraMpaUIaRXaUJaFzaFyaUMaFxaUOaRXaUPaUQaURaSgaUSaUTaSgaUUaUVaJjasIarZaUWaUWaPgaPhaUXaHPaHPaUYaHPaUZaVaaEyaIbaTGaTHaSoaTGaFwaQqaVfaEyaVgaSsaSsaSsaSsaSsaVhaViaVjaVkaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaafaVmazTaxVaxTaExaEwaEvaEtaEraEXaEWaEVaEUaEPaEIaEAaOqaEqaPEaVBaRnaRnaTYaUaaVCaVDaTYaRnaRnaRnaRtasEaPKaPKaEfaPKaEgaEhaEhaEhaEhaEoaEiaEpaSSaSSaSSaHcaUmaIOaIOaIPaLTaLTaVKaVLaVMaPWaVNaTbaUtaVOaUtaUtaUtaUtaVPaUtaUtaUtaVRaVSaVSaVTaVUaPWaVVaVLaVWaVXaLTaINaIOaIOaThaQoatDaQoaQoaQoaVYaVZaQoaFjaWaaTkaQoaQraMpaWbaRXaWcaWdaWeaWfaFiaUOaWhaJdaPbaURaWiaSgaSgaSgaUUaPbaJjaFharZaEsaEsaFgaPhaWlaWmaHPaWnaWoaKZaFfaFaaymaFdaFeaFcaFdaFbaymaEZaFaaEYaWzaSsaSsaSsaWAaWBaWCaTMaWDaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaWEaWFaWGayWaWHaGlaGzaGqaGBaGAaGDaGCaGEaGqaGGaGFaGIaYCaFXaPEaWVaRnaWWaWXaYdaYAaYBaWYaWYaWYaXaaXbaFYaXdaGcaGbaGaaFZaReaReaXiaPBaGdaPSaIoaIlaHFaHEaHBaHpaIRaIOaIOaIOaIOaXpaXqaXraXsaXtaXuaUtaXvaXwaXxaXyaXzaXAaXBaIWaXDaKUaXFaXtaXGaXHaXIaXJaXKaXLaXMaXNaXOaIOaXPaBoaRSatnaXQaTkaQoaXRaXSaQoaFjaToaTkaQoaQraXTaRWaRXaWcaRXaXUaRXaGJaUOaXWaJdaQAaURaSgaSgaSgaSgaUUaQEaJjaYDaGRaXZaYaaQOaQPaPgaPgaPgaPgaPgaPgaFVaEyaIbaTGaTHaSoaTGaTHaIbasHaEyaSnaSsaSsaSsaSsaYkaYlaYmaafaafaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaYnavtaYnaxTaYoaBgaYpaYqaYraYraYraYraYsaYtaTSaYuaYvaOlaCSaYyaYyaYyaYzaYyaOsaRnaTWaUKaWZaWZaPDaSGaFOaFPaFEaFDaFJaFFaFAaIgaFCaFBaFLaFKaFMaYSaYSaYSaYTaUnaHhaIOaYVaYWaYXaYYaYZaZaaPWaHkaHiaZeaZfaPWaPWaPWaPWaPWaPWaPWaPWaPWaHeaXwaZkaZlaPWaZaaYZaZmaGTaYWaZoaIOaIOaThaQoaZpaQoaQoaQoaFHaQoaQoaFUaQoaZraZraZraZraZsaZtaKAaRXaRXaRXaZvaZwaZxaJdaZyaZzaSgaZAaZAaZBaZzaZCaJjaFWaBDaZFaZGaPgaPgaPgaPgaZHaPgaPgaPgaFVawKaIbaPoaPraSoaPoaPraIbasHawKaYjaSsaSsaZJaSsaSsaZKaYmaafaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaZLaZMaWGayWaZNaBWaZPaZQaZRaZSaZTaYraZUaZVaTSaZWbaEaOlaCSaZYaZZbaaaCLaYybacbadbaeaPEbafbagbahaOnaPEaCRaBtbalbalbalbalaHubalbalbanbaobaobaobapbaobaqaUnbasbatbauawGawGawGbaAaFTbaAbayaFQbaybaAbaBbaBbaBbaBbaBbaBbaBbaBbaBaCVbaDbbubaDaPWaPWaPWawGawGawGaZoaIOaIOaUnbaFbaGaBlbaHaQobaIaQobaJbaKbaLaZrbaMaFRbaOaJdaJdaJdbaPbaQbaQbaQaJdaJdaJdbaRaSgaSgaLeaFNbaUbaVaGwaJjaBEaBDbaYaEsbaZbbabbbaWmbbcbbabbdaWmbbeaEybbfaQMaQNbbgaQMaQNaIbbbhaEyaDkbbjbbkaSsaSsbblbbmaYmaafaafaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaZLaZMaWGayWaZNaBWaZPaZQaZRaZSaZTaYraZUaZVaTSaZWbaEaOlaCSaZYaZZbaaaCLaYybacbadbaeaPEbafbagbahaOnaPEaCRaBtbalbalbalbalaHubalbalbanbaobaobaobapbaobaqaUnbasbatbauawGawGawGbaAbaAbaAbayaFQbaybaAbaBbaBbaBbaBbaBbaBbaBbaBbaBaCVbaDbbubaDaPWaPWaPWawGawGawGaZoaIOaIOaUnbaFbaGaBlbaHaQobaIaQobaJbaKbaLaZrbaMaFRbaOaJdaJdaJdbaPbaQbaQbaQaJdaJdaJdbaRaSgaSgaLeaFNbaUbaVaGwaJjaBEaBDbaYaEsbaZbbabbbaWmbbcbbabbdaWmbbeaEybbfaQMaQNbbgaQMaQNaIbbbhaEyaDkbbjbbkaSsaSsbblbbmaYmaafaafaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaafaxRbbnaPybboaBgbbpbbpbbqaAMbbsbbqbbtbbpaTSaQpaOTaGHaByaBzaBzaBAaBBaBzbbBbadbbCaPEbafbagbbDaGPaPEaBxbfabalbbGbbHbbHazqbbIbalbbJbbKbbLbbMbarbarbaraUnaIOaIOaYVawGbbPbbQbbRbbSaBRaFraFlbbWbaAbaBbbXbbYbbZbcaaBhbccbcdbaBaCVbcebcfbcgbchbcibcjaAVbdsawGbcmbcnbcnaUnbcqbcqaBoaBobcoaThbcobcpaBoaBoaRRaBoaBoaBobcqbcrbcrbcrbcrbcrbcrbcsbcrbcqazGbctbctaCKaZFaZFaZFaZFbcqaBEaBDbaYaEsaEsaEsaEsaEsarZaEsaEsaEsaEsaEyaBCbcAawKavUawKbcybcAaEyaEybcBaSsbcCaSsaSsaWAbcDbcEaTMaWDaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazQasSbcFaAFaWGatHatHatHatHatHatHbcGbboaBgaTSaTSaTSaTSaTSaTSaTSaTSaTSbcHaReaOlaCSaZYbcIbcJbcKaYybcLbcMaDEaPEbafbagbcOaOpaPEaBxbfabalbbHbcQbcQbbHbcQbalbbJbcRbcSbcSbcTbcUbcVbarbcWaIOaYVaGpbcYbgCbdabdbbdbbdaaGibddbaAbaBbdebdfbdgbdhbdibdjbdkaGYaHabdnbdobclbdpbdqbdrbclaLgawGaZobdtaIOaNsbdubdvaZFaZFaZFaZFaZFaZFaZFbdwaZFaZFaZFaZFbdxaZFaZFaZFaZFaZFaZFaZFaZFbdyaZFaZFaZFaZFaZFaZFaZFaZFbdzaDPaDTaCYaDUaCYaDVaCYaDXaDWaDYaCYaDZaCYaEaaEbaCYaCYaCYaCYaCYaCYaEcaEdaEebdObcCaSsaSsaSsaVkbdPaVjaVkaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQaaaaafbdRazTaxVbdSaCTbdUbdUbdUbdUbdUbdUbdVbdWaPBaXiaReaOlaCSaYyaYybdXbdYaYyaPEaPEaCUaPEbafbeabcOaOoaPEbfbaFSbalbecbedbbHbcQbeebalbbJbefbcSbcSbcSbegbehbarbeiaIOaYVaGkbekbgCbembenbeobepaGibeqbaAbaBberbesbetbetbetbeubevbaBaCVbexbclbclbdpbeybdrbclaLfawGbeAaIOaIOaNsbdubdvaZFaZFaZFaZFaZFaZFaZFbeBaZFaZFaZFaZFaZFaZFbeCaCYaCYaCYaCYaCYaCYaCZaCYaCYaCYaCYaCYaCYaCYaDlaDDaDCaDtaZFaZFaZFaZFaZFaBDaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFbeIbdzbeJaSsaSsbcCaSsaSsbeKbeLaTMaTMaTNaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbdQaWEaWFbeMayWbeNbUVbePbePbeQbePbePbePbeRaPBaPBaPBaPBaOlaCSaZYbeSbeTbeUaYybeVbeWbUWaPEaPEaPEaPEbUmaPEbUybfabalbUqbbHbcQbUibUkbalbbJbarbfcbcSbcSbPhbfebarbULaIOaYVbTrbfhbgCbembfibfjbepaGibfkbaAbflbfmbfnbetbfobetbdfbfpbfqaCVbfrbfsbftbfubfubfvbclbfwawGcuRcuSaXNcvvcxRdPwdPxdTPdPxdPxdPxdPxdTQbTtdTSctbctbctaaZFaZFaZFaZFbfDaZFbfybfOaZFctcctectdbfIbWUbfIbfIbfKdTUdTVdTWaZFaZFaZFaZFaZFbfObfPbfDaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFbdzbfQbfRbfSbfTbfUbfVbbmbfWaafaaaaafaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbdQaYnavtaYnaxTbfXbePbfYbfZbgabgabgbbgcbgdbgebgebgebgebPBbUubUrbUrbUtbUsbUrbUobUobUpbUobUnbUlbUlbSbbRubTJbTRbUCbTQbUBbUBbTPbTObalbTKbarbgybcSbcSbPhbgzbgAbffaIOaYVbaAbgCbTpbdabdabdabdaaGibgEbaAbaBbgFbgGbWJbgIbgJbgGbgKbaBaCVbURbUQbgNbgObgPbgQbgRbgSawGcsoaHfaHfawGbTqbTqbgUbgUbgUbgUcmTcmTcsUcsVcsrcsscsVcsUcmTcmTcmTckbckbckbckbckbbhbbhbbRqbhbbhbbhbbhbbhbbktcsXbxbcsYcsZaZFbhkbhkbhlbhlbhlbhlbhlbhmbhnbhnbhobhnaZFbhnbhobhnbhnbhpbNtbNtbNtbNtbhrbhgaPtaPtaPtaaaaaaaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbdQaYnavtaYnaxTbfXbePbfYbfZbgabgabgbbgcbgdbgebgebgebgebPBbUubUrbUrbUtbUsbUrbUobUobUpbUobUnbUlbUlbSbbRubTJbTRbUCbTQbUBbUBbTPaYQbalbTKbarbgybcSbcSbPhbgzbgAbffaIOaYVbaAbgCbTpbdabdabdabdaaGibgEbaAbaBbgFbgGbWJbgIbgJbgGbgKbaBaCVbURbUQbgNbgObgPbgQbgRbgSawGcsoaHfaHfawGbTqbTqbgUbgUbgUbgUcmTcmTcsUcsVcsrcsscsVcsUcmTcmTcmTckbckbckbckbckbbhbbhbbRqbhbbhbbhbbhbbhbbktcsXbxbcsYcsZaZFbhkbhkbhlbhlbhlbhlbhlbhmbhnbhnbhobhnaZFbhnbhobhnbhnbhpbNtbNtbNtbNtbhrbhgaPtaPtaPtaaaaaaaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbdQaZLaZMbeMayWbhsbePbhtbePbhubhvbePbePbePaRebhwbhxbhxbTHaYyaZYbhzbcJbhAaYybUabTZbTTbTSbTVbTUbTXbTWbTYbTXbTMbTNbLkbTCbLkbLkbKEbTDblqbTbbhSbcSbcSbTLbhUbhVbffaIObhWbaAbhXbaAbhZbVnbibbSOaGibaAbaAbaBbiebifbigbihbiibijbikbaBaCVbTybimckrbiobipbgQbclbiqawGbToaIObirawGcqlcqncqSbTncrDcrGcrMcsncqUcqVcrAcrBcogcofcpscoYcmTcmIbVecmUcpMckbcqkcpNcpzcptbVUcktcktclSbktcggbiSbiScksbiSbiUbiUbhlbiVbiWbiXbhlbiYbiZbiYbhlbhmbhnbhpbNtbSQbTibSQbNtbThbTgbNtbjebTEbjgbhgaaaaaaaaaaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQaaaaaaaMYbbnaPybjhbePbjibePbjjbjkbjlbQYbePbjnaRebjoaRebTjaYyaYyaYyaYyaYyaYybTAbjrbjsaRebjtbalbalbalbTzbalbalbalbrnbalbalbalbMVbalblubRFbjzbcSbcSbPhbjAbgAbSwaIObSybaAbjCbaAbaAbaAbaAbxBbTkbaAbTmbTlbjGbjHbbXbjIbbXbjJbjKbTvbTxbTybjNbclbjObjPbgQbjQbjRbaDbSNaIOaIOcgQcglcgPcgjcgkchOciichMchNchochocgRcgScjtcjpciHciEciDciCciBciAckcckbcjDcgecjwcgecjvcjucgecgfbktcggbiSbkwcfKcgdbkzbkAbkBbkCbkDbkCbSjbkFbkGbkHbhlbkIbkJbkKbNtbSzbSEbSDbSMbNHbSAbNtbkRbkSbkTbhgaaaaaaaaaaaeaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazQasSbcFaAFaZMaTPaTPaTPbkUaTPbkVayWaxTaxTbePbkWbkXbkYbkZblablbblcbldbldbldbldbXnbWDbWDbWDbTXbTXbTXbWCblhblhblhblibalbljblkbWEblmblnbloblpblpblrblschfckRcnZbgAbjzbcSbXvbWwbWxbWxbWRbEvbWMbXmbWXbWLbZTbWIbXmbWTbXkbXjbXibTvbTvbTvbTvbWHbTvbTvbTvbTvbWjbWGbWQbWSbWObWPbWKbWNbWsbWFbWVaIOaIObgUdVHdVIdVJdVKdVEbOIdVFdVGcjtcjtcjtcjtcjtcjpdVzdVydVBdVAdVDdVCdVuckbdVwdVvdVxcgecjvcjucgedVLbktcggdVNbYedVMbYbbXHbXMbXFbXGbXGbXGbXUbXWbXAbXzbXybXxbXEbXDbXhbXgbXebNHbXcbXbbXfbNtbmPbkSbmsbhgaaaaaaaaaaaaaaaaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -11005,9 +11001,9 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowbsTbsUbsTbsVbsWblpblpblpblpblpblpboAblpbsXbalbalbsYbcSbndboCbtabtbbtcbPhbcSbcSbtdaIObqnbtebtfbtgbPrbtibtjbtkbPqbNxboMaafbrUbrUbIgbtobtpbnzbtqbOvbNgbPpbNqbtvbtvbtvbtvbtvbtvbXJawGbLTaHfaHfawGbMcbMmbLUbMbbPfbixbOUbOYbPubPvbPsbPtbOibOhbOgbNUbOybOubOkbOjbOCbOBbOAbOzbOGbOFbOEbODbNubPAbPAboDbPCbPDbPDbPDbtZbHWbkBbubbkCbkCbucbPgbkCbuebkBbufbugbORbMubMtbMCbMvbNdbMNbNtbNtbuobhgbhgbupbuqbuqbuqburbkIbrobrrbrqbrrbrrbrsbroaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaeaaaaaaaaabowbowbowbowbowbowbowbusbutbusbuublpblpblpbrybrybrybryboAblpbuvbuwbalbuxbcSbndboCbuybuzbtcbOxbuBbqfbuCbuDbuEbpcbuFbtgbuGbuHbuIbuJbOmbMfboMbOpbOobNBbOnbuRbrSbuRbOvbOwbuTbuTbNqbuUbuVbuWbuXbuYbuZbMkawGbvcaIOaIOawGbLSbMnbMrbMBbMSbMTbMUbnebMLbMPbMQbMRbNabMZbNcbNbbApbHvbMYbMWbNlbNkbNGbNobNfbNebNibNhbMjbMlbMhbMibiSbvybvzbMgbvBbvBbkBbvCbvDbvEbkBbNVbkCbvGbvHbvIbvJbOebvLbvMbOfbvObvPbvQbsIbkJbvRbvSbvTbvUbvVbvVbvVbvVbvWbvXbpObMebvYbMebpObvZaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowbwabrvbwbbwcblpblpblpblpblpblpblpboAblpbuvbwdbalbwebegbndbncbqfbwgbqfbNFbcSbrFbRdbffaIObpcbuFbtgboMbwibwjbwkbwlbMdboMbwpbwnbHhbzzbNgbNjbNmbNnbwubGIbwwbNqbGCbwybwzbwAbwBbwBbnTbINbambdDaIRbgUbLQbLRbLNbLPbeZbixbLYbLZbLDbLXbLVbLWbFNbLDbLAbLzbDcbDcbDcbDcbDcbHfbIIbHfbAqbLJbLGbAqbAqbAqbAqbLybiSbiSbxbbxbbxbbxbbkBbkBbkBbkBbkBbMMbxebxfbxgbxhbxibMobMpbMpbMqbxmbojbxnbxobxpbvRbojbvTbxqbojbxrbojbxsbkIbupbuqburbxtbkIaaaaaaaafaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowbusbutbusbxubxvblpblpbxwbSRbSSbSRbSXbSRbSYbTabSTbSUbSVbzmbFnbSWbTcbTdbSVbxFbxGbRgbffaIObxHbxIbxJboMbxKbxLbxMbxNbSdbRzbXwbSfbRUbRJbSubSvbSsbStbSkbSrbSebShbybbycbycbydbyebyfbQEbtvcbPbDNbONbgUbixcbQcciccjcarcawcaWcbabPucbccbecbOcdabPucdkbWubRSceEceJceFbDccckccFccEbAqbSCbTsbRebRvbAybAqbwNbRybRBbRwbRxbRpbRpbRibRmbRpbRtbRrbRsbREbRDbRpbRCbQubSPbyPbyQbSLbySbySbySbySbySbyTbyUbyVbupburbkIbojbvVbyWbyXbyYbyZbzabzbaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowbusbutbusbxubxvblpblpbxwbSRbSSbSRbSXbSRbSYbTabSTbSUbSVbzmbFnbSWbTcbTdbSVbxFbxGbRgbffaIObxHbxIbxJboMbxKbxLbxMbxNbSdbRzbXwbSfbRUaYRbSubSvbSsbStbSkbSrbSebShbybbycbycbydbyebyfbQEbtvcbPbDNbONbgUbixcbQcciccjcarcawcaWcbabPucbccbecbOcdabPucdkbWubRSceEceJceFbDccckccFccEbAqbSCbTsbRebRvbAybAqbwNbRybRBbRwbRxbRpbRpbRibRmbRpbRtbRrbRsbREbRDbRpbRCbQubSPbyPbyQbSLbySbySbySbySbySbyTbyUbyVbupburbkIbojbvVbyWbyXbyYbyZbzabzbaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowbzcbzdbzcbzebzfbzgbzgbzgbzgbzgbzhbPLblpbuvbzjbalbzkbOXbsZbwfbzoboEbRZbzqbzrbarbarbzsaIObztbzubtgboMbzvbzwbzxbwjbQTboMbRGbRAbRHbOpbQwbzEbQDbuTbQvbzIbzJbNqbzKbzLbzMbzNbyebyfbQEbtvbpcbDNbNwbOHbOLbOMbOJbOKbEpbXtbXrbXsbLDbLDbLDbXubWzbLDbWybWubXqbXpbXobOSbDcbNvbVRbVQbWtbRcbQUbQKbRjbQabYcbrBbYObZMbZNbZObvMbvMbArbvMbAsbvMbOfbQqbQqbQqbQsbQrbQtbAvbAwbAxbRTbAzbAAbABbACbySbADbAEbAFaafaafbkIbAGbvVbyXbyXbvWbAHbAIbAJaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowbAKbALbAMbalbalbANbrvbrvbrvbAObalbalbAPbAQbARbalbASbASbASbRKbASbAUbRLbAWbAXbAYbAUbffaIObAZbBaaUnboMawGawGawGawGbQlboMbOpbQObOpbQmbQnbQobQnbuTbuTbuTbuTbNqawGawGawGawGawGbtvbPobtvbpcbVabuDbVbbUSbQkbUUbUZbUdbUfbUgbrAbTFbTGbUbbUcbVKbVJbVMbVLbVxbVwbVIbVCbQcbVpbVvbVtbVmbPTbQbbQabOQbPEbAqbSKbSJbzCbzCbzCbzCbzCbQjbzCbzCbELbQhbQiblTblTbBUbKjbOqbBWbAwbBXbQZbBZbCabCbbCcbySbADbAEbCdaaaaaabkIbCebCfbkIbvWbkIbkIbvWbkIaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowbAKbALbAMbalbalbANbrvbrvbrvbAObalbalbAPbAQbARbalbASbASbASbRKbASbAUbRLbAWbAXbAYbAUbffaIObAZbBaaUnboMawGawGawGawGbQlboMbOpbQObOpbOpbQnbQobQnbuTbuTbuTbuTbNqawGawGawGawGawGbtvbPobtvbpcbVabuDbVbbUSbQkbUUbUZbUdbUfbUgbrAbTFbTGbUbbUcbVKbVJbVMbVLbVxbVwbVIbVCbQcbVpbVvbVtbVmbPTbQbbQabOQbPEbAqbSKbSJbzCbzCbzCbzCbzCbQjbzCbzCbELbQhbQiblTblTbBUbKjbOqbBWbAwbBXbQZbBZbCabCbbCcbySbADbAEbCdaaaaaabkIbCebCfbkIbvWbkIbkIbvWbkIaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabCgaafaaaaaaaaaaaabASbChbNpbQRbCkbAUbQQbCmbCnbCobAUbffaIObQMbQLbQNbQLbPzbPebPIbPFbPNbPJbQfbQPaXNbCzbCAbCBbCCbCDbCEaIOaMibDbaMjaNsbCubCGbCHaCzbPdaIObpcbDNbSHbymbymbSBbSBbSBbymbymbSmbSxbRXbSibScbSgbRYbRXbRWbRVbRSbRRbRQbRPbDcbRObRNbRMbRIbOtbOrbAybAgbNrbAqbRkbCTbzCbPbbPcbFUbOWbOZbPabOObELbOPbOTbIZblTblTbQdbOqbBWbDubDvbPXbDxbDybDzbDAbySbADbDBbyVbyVbyVbyVbyVbkIbkIaaaaaaaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGvaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabASbDCbDDbDmbDFbDGbDnbDIbDlbDKbAUbffbDLbDiaIOaIOaIObDbaNsbCubCGbDNaIOaIObDdaIOaIObDPbDQbDRaIOaIOaIOaIObDbaIOaNsbCubCGbDSaXNbDYaXNbFrbENbDZbymbEbbBxbBxbBxbEebEdbEgbEfbEibEhbzGbEjbCUbCYbCZbDabDcbDebDfbDgbDcbDhbDkbDwbDEbAgbCQbCRbAgbAgbAqbksbCTbzCbEqbEobEybEtbEsbErbEMbELbEBbEzbEmbEmblTbDqbEnbECbEDbEEbEFbDzbDtbEHbEIbySbADbAEbyVbEJbEKbFsbyVaafaafaafaafaafaafaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbEPbEQbEQbFgbtybtybjBbjBbjBbjBbEOaafaafaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowaaaaaaaaaaaaaaaaaaaaaaaabERbESbBTbESbEUaaaaaaaaabASbASbEVbEWbDmbEWbEXbEYbEZbFdbFbbAUbFcbffbEwbFebuDbFfbFybFAbFhbFibuEaIObFjbEuaZjbEvbFaaIObDSaXNaXNaXNaXNbDWbjvbFobFpbFqbFrbFCbFJbFHbuDbuEaIObymbFmbBxbFlbETbBxbEdbFubFtbFzbFxbFwbFvbFEbFFbFBbFDbFKbFQbFGbDcbDcbHfbHfbHfbAqbEGbExbEAbElbEkbAqbksbCTbzCbFRbFPbFUbFTbFWbFVbFXbELbFYbEzbEmbEmblTbFIbFZbFLbFMbyHbFObGabFSbGebGfbySbGbbxZbxZbxZbxZbVNbAFaaaaaaaaaaaaaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafbGjbmNbGhbmNbtybjBbjBbjSbmLbjSbjBbjBaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -11018,7 +11014,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaabGpbMwbMxbMybGpbMzbGtbGubASbASbMAbMAbMAbASbASbGDbJkbJkbGibJkbJkbJkblPbKYaaabGLbMDbMEbMFbMGbMHbMIbMJbMGbMGbMKbGBbGlbGkbGHbGHbGHbGHbGHbGHbMObGHbGHbyKbGGbGmbGKbPycpqasZbymbEbbBxbBxbBxbHdbHcbApbFtbHabGZbHbbBtbGVbGWbGXbGYbGRbGSbGTbGUbGNbGObEcbGPbGcbGdbmobGgbHgbHebkybksbhQbhQbIpbCxbCxbCxbCxbhQbhQbhQbIobHYbHPbHPblTbHQbojbBWbCXbHAbHybHzbHtbHubHrbHsbHnbHpbGEbGxbGMbGJbGQbngbHlbHkbGobGnaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbjBbjSbjSbjSbjSbjSbjSbjXbjSbHmbjSbjSbjSbjSbjSbjBbjBaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNObESbNPbESbNQaaaaafaaaaaabASbNRbNSbNTbASaaabGDccpcbybzibJkbJkbJkblPbKYaaabGLbNWbNXbNYbNZbHVbOabObbOcbOdbGFbIabIqbIcbIbbIdbIdbIdbIdbIdbIdbItbIdbIebIebIEbGKbGKbGKbGKbymbymbHwbHMbHwbymbymbHvbHobHjbHibzGbBubCUbInbIlbImbEcbIkbEcbEcbEcbEcbEcbIjbIfbBAbmobHSbIsbCibkybksbhQbIMbIVbIUbIRbIQbITbISbIMblUbIPbIObIZblTblTbJmbojbOVbngbngbjfbjfbjfbjfbIWbjfbIXbIYbIHbjfbIhbCWbyVbngbIKbIJbIGbngaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabjBbulbulbulbulbulbulbILbjSbuPbulbHmbjSbjSbjSbjSbjBaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafcbxbGDbGDbGDbGDbJkblQblPbPiaaabPjbJpbPkbPlbPmbHVbHVbPnblOblMblNbmwblSblRbgXbgXbgXbgXbgXbgXbgXbgXbgXbPwbPxboobonbmAbmybGKbymblCblBblEblDblGblFblIblHblKblJblYblXbmabmbbmcbmdbmebmfbmgbmibmjbmkbidbmlbmmbmnbmobmpblfblebkybksbhQblyblxblwbicbicbicblzblVblUblTblAblTblTbQebgnbojbojbQgaafbjcblZblWbjabmvbjabmqbmtbnEbjfblLbnHbnhbngbnwbnjbnjbolaagaagaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabombmNbmNbmNbmNbmNbmNbmNbmMbmLbjSbjSbjSbjSbmObmLbjBaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaBcaCcaCcaDcaEbGDccfbJkbmKbGDaaaaaaaaaaaabGFbQybQzbQAbQBbGFbQCbGFbmIbmHbmJbgXbgXbmEbmGbmFbmCbmBbmDbfNbfNbfNbfNbfNbfNbkjbnZbnXbpdboXboUboObpkbpjbpibphbpobpnbnIbpmbnIbnJbnubnvbnNbnObnLbnMbnObnSbnPbnQbnVbnWaWtbnUbmubmxbmzbebbpbbpabpfbpebplbpgbpqbpgbpsbprbRlbmhbojbRnbojbgnbojbojbRoaafbjcbjdbjdbopboqboKboPboYbpwbjfbgqbgpbUKbngbngbngbngbngaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabjBbpubpubpubpubpubpubpvbjSbptbpubkabjSbjSbjSbjSbjBaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaBcaCcaCcaDcaEbGDccfbJkbmKbGDaaaaaaaaaaaabGFbQybQzbQAbQBbGFbQCbGFbmIbmHbmJbgXbgXbmEbmGbmFbmCbmBbmDbfNbfNbfNbfNbfNbfNbkjbnZbnXbpdboXboUboObpkbpjbpibphbpobpnbnIbpmbnIbnJbnubnvbnNbnObnLbnMbnObnSbnPbnQbnVbnWaWtbnUbmubebbmzbmxbpbbpabpfbpebplbpgbpqbpgbpsbprbRlbmhbojbRnbojbgnbojbojbRoaafbjcbjdbjdbopboqboKboPboYbpwbjfbgqbgpbUKbngbngbngbngbngaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabjBbpubpubpubpubpubpubpvbjSbptbpubkabjSbjSbjSbjSbjBaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkfcbncbocbpbJkbgsbJkbJkbgtbGDbguaaaaaaaaabGFbGFbGFbGFbGFbGFbGFbGFbhybhibhhbgXbgXbhBbgwbgxbgxbgwbgvbfNbgMbgLbgDbgBbfNbhGbymbymbfCbfAbfFbfEbBzbggbgibhHbfJbcPbgfbfLbgTbgVbgWbgYbgjbgkbbVbcZbgkbhfbhjbhEbhIbhabhcbhdbinbilbidbhYbhQbhNbhNbhJbicbiubisbicbicbiabSlbgmbSnbojbSobgnbojbSpbSqaafbjcbjdbjbbjabiAbjabivbiybjmbjfbgqbgpbjubitbyVaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbjBbjSbjSbjSbjSbjSbjSbjXbjSbkabjSbjSbjSbjSbjSbjBbjBaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccecaCcaCcaDcbtbiLbkebGDbkubGDccgbkvbkEccgccgbjFbjLbjMbgZbjTbjUblvbYpbjqbjxbllbjybgwbjEbjDbiNbiMbiObfNbiQbiPbjpbiRbfNbkjbPybjZbjYbjWbjVbiTbiTbkhbkgbkkbiDbkdbkcbkbbiDbiDbiBbiCbizbwUbhebhFbhebiKbiIbiJbiGbiHbiEbiFbiGbklbidbkibhQbknbkrbkobkMbkLbkPbkNbhQbhQbrhbiwbrhbrhbrhbhTbxqbhRbrhbjfbjfbjfbjfbjfbkmbjfbjfbjfbjfbjfbgqbgpblgbkpbyVaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabjBbjBbkQbjSbjSbjSbjSbjSbjSbjSbjSbjSbjSbjSbjBbjBaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQalQchdalQalQalQalQalQaaaaaaaaaaaaaaaaaaaafaafaaabxWbxTbxTbxTbxVbxTbxTbxRbxSccgbwobwhccgbwJbwKbwHbwIbwDbwGbwtbwvbwSbwObfHbxUbwMbgwbjEbwLbxjbiMbxdbfNbiQbiPbxcbxabfNbxObPybymbvnbvlbvpbvobtLbtXbvebvdbiDbvfbvkbvjbuObiDbuQbvFbvNbwUbhebhFaJzbiKbvrbvsbiGbvtbvubuabiGbtTbidbksbhQbhQbhQbhQbhQbhQbvqbhQbhQbwqbwmbvvbxlbxxbrhbiwbxEbvabrhbxybwCbwTbwrbwsbwYbxkbumbwVbumbumbuLbunbAEbyVbyVbyVaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbtybjBbuPbulbulbjSbjSbjSbjSbjSbjSbjSbjSbjBbjBaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -11043,7 +11039,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaaaaaacbMcicbSZbSZclKckickickiclBckickickiclBckickiclDclGckiclIckiclJclhcljcliclhclnclnclnclncoPclpclocbwclAclzclxclrclbcdzccsclacldcaPcaPclccaPclecaOcqhcqhclfcqGcencjXbPybfMbTBbvhbvibVTbVSbvmbVSbvbbTBbTfbvgbGKaaaaaaaaaaaaaaaaaabVudWtdWudWvcoGdWxdWydWzdWAdWqdWBcgidWrdWqdWpdWsbVubVubVuaaaaaabudccCcoLccCcoKcmEcbWcoFcoBcozcbUcbWcoxcfccfccfcbudaaaaaachcaaaciOciOciOciOciOaafciPaafciOciOciOciOciOaafchcaaaaaaaaaaaaaaaaaaaaaaaacmdaaaaaaaaacmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaaaaaacbMcbJcbKcbDcbIcbDcbHcbDcbGcbDcbFcbDcbEcbDcbDcbCcbBcbAcbzcbwcbvcbscbubSZcbmcbmcbqcbrcbrbWlcbhcbicbgcazcaVcaXcaYcaTcaScaUcaOcaQcaPcaRcaPcaNcaMcaOcjXcjXcjXcjXcjXcjXbPybfMbTBbyGbyIbvibYgbvibVSbyFbTBbyEbUjbGKaaaaaaaaaaaaaaaaaabVudWDdWEcaZcaZdWHdWIdWGcgTdWFbXKdWLdWMdWFbXKdWLbVuaaaaaaaaaaaabudccCccCccCccLccGcbLcbRcbScbTcbUcbWcbUcbWcbXcbWccBaafaafchcaafcjGcjHcjHcjHcjHcjIciPcjJcjKcjKcjKcjKcjLaafchcaaaaaaaaaaaaaaaaaaaaaaaacmdcmdcmdcmdcmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaafaaaaaaaaacbMbSZcctccuccvckjccJccNccPbSZccDccIccHckjbSZbSZccAccxccwcczccycchcclbSZcbrcbrcbrbSZccbbWlcbYbQGcbhccMchEcbVcaYcaTcaSccscaOccrccqccoccnccmcaPcaObPybPybPybPybPybPybPybfMbTBbVSbnsbnrbVSbntbnpbnobTBbnqbnnbGKaaaaaaaaaaaaaaaaaabVucsjbsxdWOdWPdWQdWRdWNciFcsjbXKdWydWMdWScsRdWybVuaaaaaaaaaaaaccQbudcdcccTccTccRcdncdpcdncdocdtcdwcdrcdscdycdAcdxaaaaaachcaafckzckzckzckzckzaaaciPaafckzckzckzckzckzaaachcaaacmdaaaaaacmdaaaaaacmdcmdcmdcmdcmdcmdcmdaaaaaacmdaaaaaacmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaaaccXclgccUclgccWclgccUclgccWclgccUclgccWclgclgclgccUclgccWclgccVbQGbQGcdecdfcdgcdhcdibQGcdBbQGbQGbQGbQGbQGbQGcddccZbZKcdbcaOcaOcaOcaOcaOcaOcaOcaObPybPybGKbXOdWCdWJbGKbfMbTBbsJbsDbsCbVSdWKbYdbsybTBbSabhObGKaaaaaaaaaaaaaaaaaabVucsjbsxbXKcaZccKdWYdXbcaZdWZdXadWUdWTdWWdWVdWXbVuaafaafaaaaaaaaaaaaclkaaabudcdKcdCcdHcdIcdGcdCcdDcdFcdGcdCcdJbudaaaaaachdaaaaafaaaaafaaaaafaaacobaaaaafaaaaafaafaafaafchcaaacmdcmdcmdcmdaaacmdcmdcmdcmdcmdcmdcmdcmdcmdaaacmdcmdcmdcmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGvaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaaaccXclgccUclgccWclgccUclgccWclgccUclgccWclgclgclgccUclgccWclgccVbQGbQGcdecdfcdgcdhcdibQGcdBbQGbQGbQGbQGbQGbQGcddccZbZKcdbcaOcaOcaOcaOcaOcaOcaOcaObPybPybGKbXObXPdWJbGKbfMbTBbsJbsDbsCbVSdWKbYdbsybTBbSabhObGKaaaaaaaaaaaaaaaaaabVucsjbsxbXKcaZccKdWYdXbcaZdWZdXadWUdWTdWWdWVdWXbVuaafaafaaaaaaaaaaaaclkaaabudcdKcdCcdHcdIcdGcdCcdDcdFcdGcdCcdJbudaaaaaachdaaaaafaaaaafaaaaafaaacobaaaaafaaaaafaafaafaafchcaaacmdcmdcmdcmdaaacmdcmdcmdcmdcmdcmdcmdcmdcmdaaacmdcmdcmdcmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGvaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaafaafaafaaaaafcdlaafcdmaafcdlaafcdmaafcdlaafcdmaafaaaaafcdlaafcdmaafaaaaaabQGcdecdfcdvcdhcdibQGcdQcdqcdOcdPcdTcdUcdRcdScdUceHcexcepcePceLceKceoceoceocdVbPybPybGKaafaafaaabGKbfMbTBbTBbVPcoicohcoibVPcojbTBbGKbXIbGKaaaaaaaaaaaaaaaaaabVudXmdXndWPcaZdXidXjcsJcaZceQceRceXceTbYXceSbYTbZJaaaaaaaaaaaaaaaaaacooaafbudcfbcficfjcfccfhcfecffcfccfdcfscfEbudaaaaaachcaaaciOciOciOciOciOaafcfVaafciOciOciOciOciOaafchcaaacmdcmdcmdcmdaaacmdcmdcmdcmdcmdcmdcmdcmdcmdaaacmdcmdcmdcmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvctvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaafaafbTecdXcdMcdWbTecdXcdMcdWbTecdNcdMcdLbTeaaabTecdNcdMcdLbTeaaaaaabQGbQGcfRcfRcfRcfRcfRcgncfRcgpceocfUcdPcgmcdPcdPcfNcfPcfOcfIcfHcfMcfLceoceocfQbYPbPybGKaafaaaaaabGKcmHdXccmNbVPcmObYdcmPbVPcmQaafcmRcmScmRaaaaaaaaaaaaaaaaaabVudXtcghcspdXsdXqdXrdUUcbNcgOaafaaaclZaagcgLcrHaaaaaaaaaaaeaaaaaaaaaaaaaaabudcgsccCccCcfccgsccCccCcfccgsccCccCbudaafaafchcaafcjGcjHcjHcjHcjHcoQcoRcoQcjKcjKcjKcjKcjLaafchcaaacmdcmdcmdcmdaaacmdcmdcmdcmdcmdcmdcmdcmdcmdaaacmdcmdcmdcmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvctvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaaaaaabTeceicgMcejbTechDchPchJbTecekcemcelbTeaaabTecerbVqceqbTeaaaaaaaaachnbZdcgVbZpchbcgWchCbYKcrjcrjcdZcrjcgEcdYcehcegcdYcefcgEceecedceabYocgpcgpbGKbGKbGKaaaaaaaaabGKbvKdXgdXhbVPcoicqmcoibVPcmQaafaaaaafaaaaaaaaaaaaaaaaaaaaabVudXtbYLdXzdXAdXAdVRdWydXybVuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabudchQccCccCcfcchQccCccCcfcchQccCccCbudaaaaaachcaafckzckzckzckzckzaaacfVaaackzckzckzckzckzaaachcaaacmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From ac410a405ad1937218cbfa68a3a2a79adf7f70fe Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Wed, 25 Jun 2014 08:28:28 +0200 Subject: [PATCH 064/304] Removes lonely supply pipes: Beneath northeast door in security lobby Beneath north Fitness maintenance door Beneath table in Tech Storage Room between Toxin Mixing and Launch rooms. Beneath Engineering EVA maintenance door Adds missing supply pipes: Chemistry, straight pipe Teleporter door, straight pipe (flips existing pipe) Restores lost vent: Security checkpoint, Arrivals --- maps/tgstation2.dmm | 41 ++++++++++++++++++++--------------------- 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/maps/tgstation2.dmm b/maps/tgstation2.dmm index d433fb3d4d..fc40a80fa9 100644 --- a/maps/tgstation2.dmm +++ b/maps/tgstation2.dmm @@ -211,7 +211,7 @@ "aec" = (/obj/machinery/door/window/brigdoor{dir = 1; req_access_txt = "63"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/lobby) "aed" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/glass_security{id_tag = "BrigWest"; layer = 2.8; name = "Brig"; req_access_txt = "63"},/turf/simulated/floor,/area/security/brig) "aee" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/cable,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/security/lobby) -"aef" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/glass_security{id_tag = "BrigFoyer"; layer = 2.8; name = "Brig"; req_access_txt = "63"},/turf/simulated/floor{icon_state = "redfull"; dir = 9},/area/security/lobby) +"aef" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/crew_quarters/fitness) "aeg" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Detective"; req_access_txt = "4"},/turf/simulated/floor,/area/security/detectives_office) "aeh" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/turf/simulated/floor/plating,/area/security/prison) "aei" = (/obj/structure/stool/bed,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/security/prison) @@ -1999,7 +1999,7 @@ "aMw" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "aMx" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "aMy" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/simulated/floor{icon_state = "hydrofloor"},/area/hydroponics) -"aMz" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/crew_quarters/fitness) +"aMz" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "aMA" = (/turf/simulated/floor{icon_state = "asteroid"; dir = 1},/turf/simulated/floor{icon_state = "siding2"; dir = 1},/turf/simulated/floor{icon_state = "siding1"; dir = 1},/area/hydroponics) "aMB" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor,/area/crew_quarters/fitness) "aMC" = (/obj/machinery/door/window/eastright{base_state = "left"; dir = 8; icon_state = "left"; name = "Hydroponics Pasture"; req_access_txt = "35"},/turf/simulated/floor{icon_state = "hydrofloor"},/area/hydroponics) @@ -4127,7 +4127,7 @@ "bBs" = (/obj/structure/stool/bed/chair,/turf/simulated/floor{icon_state = "white"},/area/medical/cmo) "bBt" = (/turf/simulated/floor{icon_state = "white"},/area/medical/cmo) "bBu" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{name = "CMO's Office"; req_access_txt = "40"},/turf/simulated/floor{icon_state = "white"},/area/medical/cmo) -"bBv" = (/obj/structure/table,/obj/item/device/flashlight{pixel_x = 1; pixel_y = 5},/obj/item/device/flashlight{pixel_x = 1; pixel_y = 5},/obj/item/device/flash,/obj/item/device/flash,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/ai_status_display{pixel_x = -32; pixel_y = 0},/turf/simulated/floor/plating,/area/storage/tech) +"bBv" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/command{name = "Teleport Access"; req_access_txt = "17"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/teleporter) "bBw" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) "bBx" = (/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "bBy" = (/obj/machinery/hologram/holopad,/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) @@ -4509,7 +4509,7 @@ "bIK" = (/obj/structure/disposaloutlet,/obj/structure/window/reinforced{dir = 1},/obj/structure/disposalpipe/trunk{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating{nitrogen = 0.01; oxygen = 0.01},/area/rnd/mixing) "bIL" = (/turf/simulated/floor/airless{dir = 6; icon_state = "warning"},/area/rnd/test_area) "bIM" = (/obj/machinery/shieldwallgen{req_access = list(55)},/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) -"bIN" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/command{name = "Teleport Access"; req_access_txt = "17"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/teleporter) +"bIN" = (/obj/structure/table,/obj/item/device/flashlight{pixel_x = 1; pixel_y = 5},/obj/item/device/flashlight{pixel_x = 1; pixel_y = 5},/obj/item/device/flash,/obj/item/device/flash,/obj/machinery/ai_status_display{pixel_x = -32; pixel_y = 0},/turf/simulated/floor/plating,/area/storage/tech) "bIO" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "warningcorner"; dir = 8},/area/rnd/storage) "bIP" = (/obj/machinery/light_switch{pixel_y = -23},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/turf/simulated/floor{icon_state = "floorgrime"},/area/rnd/storage) "bIQ" = (/obj/machinery/door/window/southright{dir = 1; name = "Test Chamber"; req_access_txt = "47"},/obj/machinery/door/window/southright{name = "Test Chamber"; req_access_txt = "47"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "misclab"; name = "Test Chamber Blast Doors"; opacity = 0},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) @@ -4577,7 +4577,7 @@ "bKa" = (/obj/machinery/door_control{id = "medprivb"; name = "Privacy Shutters"; pixel_y = 25},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/table,/obj/item/weapon/clipboard,/obj/item/weapon/paper_bin,/obj/item/weapon/pen,/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 0; pixel_y = 36},/turf/simulated/floor{dir = 5; icon_state = "whitered"},/area/medical/patient_b) "bKb" = (/obj/machinery/light{dir = 1},/obj/machinery/newscaster{pixel_y = 32},/turf/simulated/floor{dir = 1; icon_state = "whitered"},/area/medical/patient_b) "bKc" = (/turf/simulated/floor{icon_state = "white_2"},/area/medical/medbay2) -"bKd" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/rnd/mixing) +"bKd" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/rnd/mixing) "bKe" = (/obj/structure/stool/bed/chair/office/dark{dir = 1},/obj/effect/landmark/start{name = "Chief Medical Officer"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/door_control{desc = "A remote control-switch for shutters."; id = "cmooffice"; name = "CMO Privacy Shutters"; pixel_x = 38; pixel_y = 21},/obj/machinery/door_control{desc = "A remote control switch for the CMO's office."; id = "cmodoor"; name = "CMO Office Door Control"; normaldoorcontrol = 1; pixel_x = 28; pixel_y = 21; range = 6},/obj/machinery/door_control{desc = "A remote control-switch for shutters."; id = "virologyquar"; name = "Virology Emergency Lockdown Control"; pixel_x = -15; pixel_y = 38; req_access_txt = "5"},/obj/machinery/door_control{desc = "A remote control-switch for shutters."; id = "medbayquar"; name = "Medbay Emergency Lockdown Control"; pixel_x = -15; pixel_y = 30; req_access_txt = "5"},/turf/simulated/floor{icon_state = "white"},/area/medical/cmo) "bKf" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor{icon_state = "warningcorner"; dir = 1},/area/rnd/mixing) "bKg" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing) @@ -4679,7 +4679,7 @@ "bLY" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) "bLZ" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/turf/simulated/floor{tag = "icon-whiteblue (EAST)"; icon_state = "whiteblue"; dir = 4},/area/medical/medbay2) "bMa" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/firedoor/border_only{dir = 4; name = "hazard door east"},/obj/machinery/door/airlock/glass_research{name = "Toxins Lab"; req_access_txt = "8"},/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing) -"bMb" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) +"bMb" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "floorgrime"},/area/engine/engine_eva_maintenance) "bMc" = (/obj/structure/table,/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -27},/obj/item/weapon/reagent_containers/glass/bottle/stoxin{pixel_x = -6; pixel_y = 10},/obj/item/weapon/reagent_containers/glass/bottle/antitoxin{pixel_x = 5; pixel_y = 5},/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline{pixel_x = 1},/turf/simulated/floor{dir = 8; icon_state = "whiteyellow"},/area/medical/chemistry) "bMd" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/crew_quarters/heads) "bMe" = (/obj/structure/window/shuttle,/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/research/station) @@ -4898,6 +4898,7 @@ "bQj" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "hazard door north"},/obj/machinery/door/airlock/command{name = "Server Room"; req_access = null; req_access_txt = "30"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "dark"},/area/server) "bQk" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "bQl" = (/obj/machinery/door/airlock/command{name = "Head of Personnel"; req_access = null; req_access_txt = "57"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/hallway/primary/central) +"bQm" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light/small{dir = 8},/turf/simulated/floor{icon_state = "floorgrime"},/area/engine/engine_eva_maintenance) "bQn" = (/turf/simulated/wall/r_wall,/area/turret_protected/ai_upload_foyer) "bQo" = (/obj/machinery/door/airlock/highsecurity{icon_state = "door_closed"; locked = 0; name = "AI Upload Access"; req_access_txt = "16"},/turf/simulated/floor{icon_state = "vault"},/area/turret_protected/ai_upload_foyer) "bQp" = (/obj/machinery/light{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) @@ -4972,6 +4973,7 @@ "bRG" = (/obj/machinery/blackbox_recorder,/turf/simulated/floor/bluegrid,/area/turret_protected/ai_server_room) "bRH" = (/obj/machinery/light_switch{pixel_y = -25},/obj/machinery/camera{c_tag = "Messaging Server"; dir = 1},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_server_room) "bRI" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/medical/genetics) +"bRJ" = (/obj/structure/dispenser{phorontanks = 0},/turf/simulated/floor,/area/engine/engine_eva) "bRK" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/obj/machinery/door/airlock/mining{name = "Mining Dock"; req_access_txt = "48"},/turf/simulated/floor,/area/quartermaster/miningdock) "bRL" = (/obj/structure/filingcabinet,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/quartermaster/qm) "bRM" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics_cloning) @@ -5080,6 +5082,7 @@ "bTL" = (/obj/structure/stool/bed/chair{dir = 4},/obj/effect/landmark/start{name = "Cargo Technician"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/quartermaster/office) "bTM" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/port) "bTN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall,/area/quartermaster/storage) +"bTO" = (/obj/structure/sign/pods,/turf/simulated/wall/r_wall,/area/engine/engine_eva) "bTP" = (/obj/structure/closet/crate/internals,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/storage) "bTQ" = (/obj/structure/closet/crate/medical,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/storage) "bTR" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port) @@ -6239,11 +6242,11 @@ "cqb" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "cqc" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{on = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/engine/engine_eva) "cqd" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/engine/engine_eva) -"cqe" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_Toxins = 0},/turf/simulated/floor,/area/engine/engine_eva) -"cqf" = (/obj/machinery/door/airlock/engineering{name = "Engineering EVA Storage"; req_access_txt = "12"; req_one_access_txt = "11;24"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.4; name = "Engineering Firelock"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor{icon_state = "floorgrime"},/area/engine/engine_eva) -"cqg" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor{icon_state = "floorgrime"},/area/engine/engine_eva_maintenance) +"cqe" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor{icon_state = "floorgrime"},/area/engine/engine_eva_maintenance) +"cqf" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor{icon_state = "floorgrime"},/area/engine/engine_eva_maintenance) +"cqg" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/turf/simulated/floor,/area/engine/engine_eva) "cqh" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/turf/simulated/floor/plating,/area/engine/storage_hard) -"cqi" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "floorgrime"},/area/engine/engine_eva_maintenance) +"cqi" = (/obj/machinery/door/airlock/engineering{name = "Engineering EVA Storage"; req_access_txt = "12"; req_one_access_txt = "11;24"},/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.4; name = "Engineering Firelock"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/engine/engine_eva) "cqj" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/hallway/primary/aft) "cqk" = (/obj/structure/table,/obj/item/device/camera{name = "Autopsy Camera"; pixel_x = -2; pixel_y = -2},/turf/simulated/floor{dir = 9; icon_state = "blue"},/area/medical/morgue) "cql" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/dropper,/obj/machinery/light{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) @@ -6308,8 +6311,6 @@ "crs" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/door/airlock/engineering{name = "Engineering Washroom"; req_one_access_txt = "11;24"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.4; name = "Engineering Firelock"},/turf/simulated/floor,/area/crew_quarters/sleep_male/toilet_male{name = "\improper Engineering Washroom"}) "crt" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "whiteyellow"},/area/crew_quarters/sleep_male/toilet_male{name = "\improper Engineering Washroom"}) "cru" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/engine/engine_eva) -"crv" = (/obj/structure/dispenser{phorontanks = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor,/area/engine/engine_eva) -"crw" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/sign/pods,/turf/simulated/wall/r_wall,/area/engine/engine_eva) "crx" = (/obj/structure/stool/bed/chair/office/dark{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/cyan,/turf/simulated/floor,/area/hallway/primary/aft) "cry" = (/obj/structure/table/reinforced,/obj/item/weapon/clipboard,/turf/simulated/floor,/area/hallway/primary/aft) "crz" = (/obj/machinery/computer/station_alert,/turf/simulated/floor,/area/hallway/primary/aft) @@ -6318,12 +6319,10 @@ "crC" = (/obj/structure/rack{dir = 8; layer = 2.6},/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/rig,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig,/obj/machinery/light{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/southleft{name = "Engineering Hardsuits"; req_access_txt = "11"},/turf/simulated/floor,/area/engine/engine_eva) "crD" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/structure/table/reinforced,/obj/machinery/door_control{id = "chemcounter"; name = "Pharmacy Counter Lockdown Control"; pixel_y = 25},/obj/machinery/reagentgrinder,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "crE" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor,/area/engine/engine_eva) -"crF" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor{icon_state = "floorgrime"},/area/engine/engine_eva_maintenance) "crG" = (/obj/structure/sign/chemistry,/turf/simulated/wall/r_wall,/area/medical/chemistry) "crH" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; external_pressure_bound = 140; icon_state = "out"; on = 1; pressure_checks = 0},/turf/simulated/floor/plating/airless,/area) "crI" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/obj/structure/sign/securearea{desc = "A warning sign which reads 'HOT EXHAUST'."; name = "\improper HOT EXHAUST"; pixel_x = -32},/turf/simulated/floor/plating/airless,/area) "crJ" = (/obj/machinery/door/poddoor{dir = 4; id = "disvent"; name = "Incinerator Vent"},/turf/simulated/floor/engine/vacuum,/area/maintenance/incinerator) -"crK" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor{icon_state = "floorgrime"},/area/engine/engine_eva_maintenance) "crL" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/rnd/test_area) "crM" = (/obj/structure/reagent_dispensers/water_cooler,/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = 32},/turf/simulated/floor{tag = "icon-whiteblue (NORTHWEST)"; icon_state = "whiteblue"; dir = 9},/area/medical/reception) "crN" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "solar_xeno_inner"; locked = 1; name = "Engineering External Access"; req_access = null; req_access_txt = "13"},/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor/plating,/area/maintenance/starboardsolar) @@ -10944,7 +10943,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcaaaaaaaafaaaaeFajjajkajlajmajnagbagcaeFajqageajqagdajqaenahbagfajtafTahfaenaceafYajvajwafXagaaceafZajAajAajBaceajCajhajhaceajDajEajFajFajGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajiajiajiajiajiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcaaaaaaaafaaaaeFajHajIajJajKajLaeVaeXaffaffafhaflafnaffafsaiwafnaftafhafuaiYaflafxafwafBafzafIafHafRafKakeakfakgakhakiakjakkaklakmaknakoahTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajiaaaaaaajiaaaaaaajiajiajiajiajiajiajiaaaaaaajiaaaaaaajiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcaaaaafaafaeFakqakraksafkakuakvaeOaeLaeNaezaeuaeqaeoaeTahzaeoaeSaezaevagTaeuaeqaeoaeoaelaeKaeIaiRaeGaeEaeDakNahaajhakPaceaklakQajFajFakRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajiajiajiajiaaaajiajiajiajiajiajiajiajiajiaaaajiajiajiajiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcaaaaaaaafaeFaeFaeFaeFaeFaeFaeFaeFaebakTakUaeFaeFagXakVaecaeBakYakZaeeaefagXaeFaeFaeFaedaekalealealfalgaegalialjalealkaceaceacfacfacfacfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajiajiajiajiaaaajiajiajiajiajiajiajiajiajiaaaajiajiajiajiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcaaaaaaaafaeFaeFaeFaeFaeFaeFaeFaeFaebakTakUaeFaeFagXakVaecaeBakYakZaeeakZagXaeFaeFaeFaedaekalealealfalgaegalialjalealkaceaceacfacfacfacfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajiajiajiajiaaaajiajiajiajiajiajiajiajiajiaaaajiajiajiajiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcafcafcafcaaaaaaafcafcafcafcafcafcafcaaaaaaafcafcafcafcaaaaaeaaaaafaafaafallaeFalmalnadXadYadTadUadPaltaluadKalwadQalyalzadMadLalCadKalDalEadPadNadFalealHalIalJadHalLagraleakPalNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalOalOalOalOalOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalPalPalPalQalQaaaaaaaaaaaaaaaaaaaaaaaaajiajiajiajiaaaajiajiajiajiajiajiajiajiajiaaaajiajiajiajiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaalQalQalPalQalQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcafcafcafcafcafcafcaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafalRaeFalSalTadpaeFadAadBalXalYalZadoambafvakXameacUamgalCagpamialYamjadGadFaleamlammammacCammagialeakPalNaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaalOalOalOalOalOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalPaaaaafaaaampaaaaaaaaaaaaaaaaaaaaaaaaajiajiajiajiajiajiajiajiajiajiajiajiajiajiajiajiajiajiajiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaafaaaampaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcafcafcafcafcafcafcaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafamqamraeFamsamtadmaeFadgadhacXamyamzamAamBacWacVamEacUamFalCamAamGamHacSacIacFaleamLamMammacCammadnaleakPalNaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaalOalOalOalOalOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalPaafamOaafalPaaaaaaaaaaaaaaaaaaaaaaaaajiajiajiajiajiajiajiajiajiajiajiajiajiajiajiajiajiajiajiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -10958,7 +10957,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalPaafaolaolaolaolaolaafaoWaafaolaolaolaolaolaafalPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapxaqxaqAaqCaqyaqzagNagRaqBaqBaqBaqBaqBaqBaqBagGagzagCagzaraaqLaqKaqLagKaqNaqLaqOaleapiapiapiapiapiapSamfaqQagWaqSaqTaqUaqVajhalNamhagYalNaaaaaaaaaalOalOalOaaaaaaaaaaaaaaaaaaaaaalPaafaoMaoNaoNaoNaoNaoOaoPaoQaoRaoRaoRaoRaoSaafalPaaaaaaaaaaaaaaaaaaaaaaaaajiajiajiajiajiajiajiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqYaqZaqYaaaaaaaaaaaaaaaaaaaaaalPaafaoTaoUaoUaoUaoUaoVaoWaoXaoYaoYaoYaoYaoZaafalPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapxapaagxapxarbarbarcaguarbarbarbareareareakKargarearearhariagharkalNaggalNarmalNalNakJagjagjbbNagjakpalpakOakMakLakLakLamaagjagtamcagqalNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalPaafapvapvapvapvapvaafaoPaafapvapvapvapvapvaafalPaaaaaaaaaaaaaaaaaaaaaaaaajiajiajiajiajiajiajiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafarwarxarwaaaaaaaaaaaaaaaaaaaaaalPaafapwapwapwapwapwaafaoWaafapwapwapwapwapwaafalPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaagapxaryaHDapxarEatVatXaNYaOtatYarbaWvarGarHarIarJarKaNCaMJaFsaNKarOarPaLEaLGaLGaLGaLGaNoaLJaLGaNoaLGaNraNnaLvaKWaNeaMTaNaajhaMNalNasdasealNaaaaafaKEaKzaKzaKDaKzaKzaKjaafaaaaaaaaaalQaaaaaaaaaaafaaaaaaaaaaoPaaaaaaaaaaafaaaaaaaaaalQaaaaaaaaaaaaaaaaaaaaaaaaajiajiajiajiajiajiajiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasjaPXaslaaaasmaPYasoaaaaafaspaqYaspaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaaaaafaaaaaaaaaaoWaaaaaaaaaaafaaaaaaaaaalQaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafapxapxapxapxaHDapxarEarAatXatWaOWasrarbaWwarIarIarIarJasuaOzaswasxaOXalNaMLaIkaMKaMKaMKaMUaOAaOBaGVaOCaGVaGVaGVaGVaGVaOyarTaMzasPasPasPasPasPasPasPasPaLMasRasRasRasRasRaLMasPaaaaaaaaaalPaafaojaojaojaojaojaafaoPaafaojaojaojaojaojaafalPaaaaaaaaaaaaaaaaaaaaaaaaaaaajiajiajiajiajiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasjaPXaslaaaasmaPYasoaaaaafaspaqYaspaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaaaaafaaaaaaaaaaoWaaaaaaaaaaafaaaaaaaaaalQaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafapxapxapxapxaHDapxarEarAatXatWaOWasrarbaWwarIarIarIarJasuaOzaswasxaOXalNaMLaIkaMKaMKaMKaMUaOAaOBaGVaOCaGVaGVaGVaGVaGVaOyarTaefasPasPasPasPasPasPasPasPaLMasRasRasRasRasRaLMasPaaaaaaaaaalPaafaojaojaojaojaojaafaoPaafaojaojaojaojaojaafalPaaaaaaaaaaaaaaaaaaaaaaaaaaaajiajiajiajiajiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasSasTasUasTasSasVasWasVasSaafaspaOuaOkaaaaaaaaaaaaaaaaaaaaaalPaafaolaolaolaolaolaafaoWaafaolaolaolaolaolaafalPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafapxasZataapxaHDapxauParAatXatWasqauNarbatearIatfatfarJatgaOzapAapEaOYalNaNDaNFaNIaSLaHqaHratoatpaGVaNObkqaNUaNpaRiaRQaSfarTaYEatAaJsavYaRgaKkaQBaRxasPaNgasRasRasRasRasRaLMasPaafaaaaaaalQaafaoMaoNaoNaoNaoNaoOaoPaoQaoRaoRaoRaoRaoSaafalPaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatHasTatIasTatHasVatJasVatHatKatLatMaPLatOatOatPatKatKaafaaaalPaafaoTaoUaoUaoUaoUaoVaoWaoXaoYaoYaoYaoYaoZaafalPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafapxatQatRatSaHDapxarEarAatXatWasqarEarbauaaubaucaucaudaueaOzapAapEapFalNaNDaNFaHyaPqaHqaHrauhauiaGVaPHaPCaOEaOEaOFaOGaOParTaSOauqaJsavYavYaKkaSFaMmaTsaODasRasRasRasRasRaOSasPasPasPaaaalQaaaapvapvapvapvapvaafaoPaafapvapvapvapvapvaaaampaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatHauzauAauBatHauCauDauEatHaqYaqYauFauGauHauIauJaKFatKaaaaaaampaaaapwapwapwapwapwaafaoWaafapwapwapwapwapwaaaalPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaagapxauLapaapxaHDapxarBarAaMQarCasqarEarbaHAauSauTauTaLxaHCaKLaHsaHtaJbaHvaHwaHxaHyaHzaHqaHravdauiaGVaGVaGVaGWaGWaGXaGVaGVarTaJvaJqaJsavYavYaKkaKoaJCaKiaGZasRasRasRasRasRaGUaGSavqavraaaalQaaaaafaaaaafaafaaaaaaaoPaaaaaaaafaaaaaaaafaaaalPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -10998,9 +10997,9 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaabmQavtavtaYnaxSaxSaxSbosaxSaxSbePbotboubovbkZbePaaaaaaaaaaafaafbowbowbowbowbowbowbowaaaaaaboxboybozboAboBblpblpblpblpblpblpblpblpbUNbjzbUOdYAboEboFbarbarbVGbVHbaraUnboHboIbVEaUnboLboMboMbNsboMbVFbUGboMabLboQboRbnzboSbnBboSbnzboTboQbPVbVkboVbfuboWbVybVBbVDbUFbnFbpcaIOaIObgUbWmcqndUQdURdUNbixdUOdUPdUJdUKdULbVWdUGdUFdUIdUHcmTckbdUEdUDdUAckbdUCdUBdUydUxdUzdUzdUvdUwbktcggbiSdUubkxbkxboabpybpzbpAbpBbpCbpCbpDbpEbpFbhlbpGbojbpHbNtbUYbUTbUPbUJbNHbUIbNtbkRbkSbpMbhgaaaaaaaaaaaaaafbpNbpObMebpObMebpObpQaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxRaYnaYnbpRaTPbpSazQasSbpTbpSbePbpUbpVbpWbpXbePaaaaaaaaaaaaaaabowbowbowbowbowbowbowaaaaaabpYbpZblpbqabqbbqbbqbbqbbqbbqcbqbbqbbqbbqdbqebqfbUHbqhbqibarbqjbPhbqkbqlbtfbffbqnbqoaUnaUnboMbqpbVdbqrbXdbTuboMbTwbVfbVhbqxbqybqzbqybqAbVibVjbTxbVkbqEbfubqFbaDbqGbnFbTIbnFbpcaIOaIObgUdUjdUkdUhdUidUgbixdUedUfdUcdUddUadUbbZzdUsdUrdUqdUpbPZdUodUnbPZbPZbPZbPZdUmdUlbPZbPZbktdTZbktcggbiSdTXbnYdTYbrabrbbrcbrdbrebrebrebpDbkCbrfbrgbrhbkJbVlbNtbUEbUAbUzbUDbNHbUvbNtbUwbmrbhgbhgaaaaaaaaaaaaaafbrobrpbrqbrrbrrbrsbroaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowbrubrvbrwbrxblpblpblpbrybrybrybryboAblpblpblpbnbbqgbqTbrzboZbrCbrDbrEbPhbcSbrFbRgbffbqnbrHbrIbrJbNNbrLbPPbrNbPObNMboMaafbrQbrRbnzbqybrSbqybnzbrTbrUbPVbPWbrWbrXbrYbaDbrZbnFbOlaUnbpcaIObNybNzbNAbNCbNDbPKbIibixbPMbPQbLDbPRbPubPSbLDbLDbPYbPUbPZbPZbQxbQpbQFbIrbQIbQHbQSbQJbQVbPZbJqbRabQWbQXbRfbRhbRbbRbbPGbsEbkBbsFbrebrebrebsGbkCbsHbhlbsIbsIbPHbNtbNEbNKbNJbNIbNHbNLbNtbmPbsPbhgaaaaaaaaaaaaaaaaafbsQbsRbrqbrrbrqbsSbMeaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowbsTbsUbsTbsVbsWblpblpblpblpblpblpboAblpbsXbalbalbsYbcSbndboCbtabtbbtcbPhbcSbcSbtdaIObqnbtebtfbtgbPrbtibtjbtkbPqbNxboMaafbrUbrUbIgbtobtpbnzbtqbOvbNgbPpbNqbtvbtvbtvbtvbtvbtvbXJawGbLTaHfaHfawGbMcbMmbLUbMbbPfbixbOUbOYbPubPvbPsbPtbOibOhbOgbNUbOybOubOkbOjbOCbOBbOAbOzbOGbOFbOEbODbNubPAbPAboDbPCbPDbPDbPDbtZbHWbkBbubbkCbkCbucbPgbkCbuebkBbufbugbORbMubMtbMCbMvbNdbMNbNtbNtbuobhgbhgbupbuqbuqbuqburbkIbrobrrbrqbrrbrrbrsbroaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowbsTbsUbsTbsVbsWblpblpblpblpblpblpboAblpbsXbalbalbsYbcSbndboCbtabtbbtcbPhbcSbcSbtdaIObqnbtebtfbtgbPrbtibtjbtkbPqbNxboMaafbrUbrUbIgbtobtpbnzbtqbOvbNgbPpbNqbtvbtvbtvbtvbtvbtvbXJawGbLTaHfaHfawGbMcbMmbLUaMzbPfbixbOUbOYbPubPvbPsbPtbOibOhbOgbNUbOybOubOkbOjbOCbOBbOAbOzbOGbOFbOEbODbNubPAbPAboDbPCbPDbPDbPDbtZbHWbkBbubbkCbkCbucbPgbkCbuebkBbufbugbORbMubMtbMCbMvbNdbMNbNtbNtbuobhgbhgbupbuqbuqbuqburbkIbrobrrbrqbrrbrrbrsbroaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaeaaaaaaaaabowbowbowbowbowbowbowbusbutbusbuublpblpblpbrybrybrybryboAblpbuvbuwbalbuxbcSbndboCbuybuzbtcbOxbuBbqfbuCbuDbuEbpcbuFbtgbuGbuHbuIbuJbOmbMfboMbOpbOobNBbOnbuRbrSbuRbOvbOwbuTbuTbNqbuUbuVbuWbuXbuYbuZbMkawGbvcaIOaIOawGbLSbMnbMrbMBbMSbMTbMUbnebMLbMPbMQbMRbNabMZbNcbNbbApbHvbMYbMWbNlbNkbNGbNobNfbNebNibNhbMjbMlbMhbMibiSbvybvzbMgbvBbvBbkBbvCbvDbvEbkBbNVbkCbvGbvHbvIbvJbOebvLbvMbOfbvObvPbvQbsIbkJbvRbvSbvTbvUbvVbvVbvVbvVbvWbvXbpObMebvYbMebpObvZaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowbwabrvbwbbwcblpblpblpblpblpblpblpboAblpbuvbwdbalbwebegbndbncbqfbwgbqfbNFbcSbrFbRdbffaIObpcbuFbtgboMbwibwjbwkbwlbMdboMbwpbwnbHhbzzbNgbNjbNmbNnbwubGIbwwbNqbGCbwybwzbwAbwBbwBbnTbINbambdDaIRbgUbLQbLRbLNbLPbeZbixbLYbLZbLDbLXbLVbLWbFNbLDbLAbLzbDcbDcbDcbDcbDcbHfbIIbHfbAqbLJbLGbAqbAqbAqbAqbLybiSbiSbxbbxbbxbbxbbkBbkBbkBbkBbkBbMMbxebxfbxgbxhbxibMobMpbMpbMqbxmbojbxnbxobxpbvRbojbvTbxqbojbxrbojbxsbkIbupbuqburbxtbkIaaaaaaaafaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowbwabrvbwbbwcblpblpblpblpblpblpblpboAblpbuvbwdbalbwebegbndbncbqfbwgbqfbNFbcSbrFbRdbffaIObpcbuFbtgboMbwibwjbwkbwlbMdboMbwpbwnbHhbzzbNgbNjbNmbNnbwubGIbwwbNqbGCbwybwzbwAbwBbwBbnTbBvbambdDaIRbgUbLQbLRbLNbLPbeZbixbLYbLZbLDbLXbLVbLWbFNbLDbLAbLzbDcbDcbDcbDcbDcbHfbIIbHfbAqbLJbLGbAqbAqbAqbAqbLybiSbiSbxbbxbbxbbxbbkBbkBbkBbkBbkBbMMbxebxfbxgbxhbxibMobMpbMpbMqbxmbojbxnbxobxpbvRbojbvTbxqbojbxrbojbxsbkIbupbuqburbxtbkIaaaaaaaafaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowbusbutbusbxubxvblpblpbxwbSRbSSbSRbSXbSRbSYbTabSTbSUbSVbzmbFnbSWbTcbTdbSVbxFbxGbRgbffaIObxHbxIbxJboMbxKbxLbxMbxNbSdbRzbXwbSfbRUaYRbSubSvbSsbStbSkbSrbSebShbybbycbycbydbyebyfbQEbtvcbPbDNbONbgUbixcbQcciccjcarcawcaWcbabPucbccbecbOcdabPucdkbWubRSceEceJceFbDccckccFccEbAqbSCbTsbRebRvbAybAqbwNbRybRBbRwbRxbRpbRpbRibRmbRpbRtbRrbRsbREbRDbRpbRCbQubSPbyPbyQbSLbySbySbySbySbySbyTbyUbyVbupburbkIbojbvVbyWbyXbyYbyZbzabzbaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowbzcbzdbzcbzebzfbzgbzgbzgbzgbzgbzhbPLblpbuvbzjbalbzkbOXbsZbwfbzoboEbRZbzqbzrbarbarbzsaIObztbzubtgboMbzvbzwbzxbwjbQTboMbRGbRAbRHbOpbQwbzEbQDbuTbQvbzIbzJbNqbzKbzLbzMbzNbyebyfbQEbtvbpcbDNbNwbOHbOLbOMbOJbOKbEpbXtbXrbXsbLDbLDbLDbXubWzbLDbWybWubXqbXpbXobOSbDcbNvbVRbVQbWtbRcbQUbQKbRjbQabYcbrBbYObZMbZNbZObvMbvMbArbvMbAsbvMbOfbQqbQqbQqbQsbQrbQtbAvbAwbAxbRTbAzbAAbABbACbySbADbAEbAFaafaafbkIbAGbvVbyXbyXbvWbAHbAIbAJaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowbAKbALbAMbalbalbANbrvbrvbrvbAObalbalbAPbAQbARbalbASbASbASbRKbASbAUbRLbAWbAXbAYbAUbffaIObAZbBaaUnboMawGawGawGawGbQlboMbOpbQObOpbOpbQnbQobQnbuTbuTbuTbuTbNqawGawGawGawGawGbtvbPobtvbpcbVabuDbVbbUSbQkbUUbUZbUdbUfbUgbrAbTFbTGbUbbUcbVKbVJbVMbVLbVxbVwbVIbVCbQcbVpbVvbVtbVmbPTbQbbQabOQbPEbAqbSKbSJbzCbzCbzCbzCbzCbQjbzCbzCbELbQhbQiblTblTbBUbKjbOqbBWbAwbBXbQZbBZbCabCbbCcbySbADbAEbCdaaaaaabkIbCebCfbkIbvWbkIbkIbvWbkIaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -11008,7 +11007,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabASbDCbDDbDmbDFbDGbDnbDIbDlbDKbAUbffbDLbDiaIOaIOaIObDbaNsbCubCGbDNaIOaIObDdaIOaIObDPbDQbDRaIOaIOaIOaIObDbaIOaNsbCubCGbDSaXNbDYaXNbFrbENbDZbymbEbbBxbBxbBxbEebEdbEgbEfbEibEhbzGbEjbCUbCYbCZbDabDcbDebDfbDgbDcbDhbDkbDwbDEbAgbCQbCRbAgbAgbAqbksbCTbzCbEqbEobEybEtbEsbErbEMbELbEBbEzbEmbEmblTbDqbEnbECbEDbEEbEFbDzbDtbEHbEIbySbADbAEbyVbEJbEKbFsbyVaafaafaafaafaafaafaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbEPbEQbEQbFgbtybtybjBbjBbjBbjBbEOaafaafaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowaaaaaaaaaaaaaaaaaaaaaaaabERbESbBTbESbEUaaaaaaaaabASbASbEVbEWbDmbEWbEXbEYbEZbFdbFbbAUbFcbffbEwbFebuDbFfbFybFAbFhbFibuEaIObFjbEuaZjbEvbFaaIObDSaXNaXNaXNaXNbDWbjvbFobFpbFqbFrbFCbFJbFHbuDbuEaIObymbFmbBxbFlbETbBxbEdbFubFtbFzbFxbFwbFvbFEbFFbFBbFDbFKbFQbFGbDcbDcbHfbHfbHfbAqbEGbExbEAbElbEkbAqbksbCTbzCbFRbFPbFUbFTbFWbFVbFXbELbFYbEzbEmbEmblTbFIbFZbFLbFMbyHbFObGabFSbGebGfbySbGbbxZbxZbxZbxZbVNbAFaaaaaaaaaaaaaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafbGjbmNbGhbmNbtybjBbjBbjSbmLbjSbjBbjBaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabGpbGqbGrbGqbGpbGsbGtbGubASbGvbEWbGwbBbbGybGzbGAbGAbBcbuSbAUbGDbGDbBibGDaUnaUnaUnaUnaUnaUnaUnbGFbGFbGFbGFaUnbBgbBfbBeaUnbGHbGHbGHbBhbAfaUnaUnaUnaUnbAVbAubGKaIUaKtbzYbymbzXbBxbBxbBxbAebAcbApbAobzGbzZbAbbAabvxbzGbzObzPbyzbyAbyCbvwbzTbzUbEcbAgbAgbAgbAtbAybATbAgbAqbksbhQbhQbhQbhQbhQbhQbhQbhQbhQbhQbBRbBQbBqbBqblTbBnbBdbHqbjfbjfbjfbjfbBObBPbBNbjfbjfbjfbjfbjfbAEbADbHxaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagbxXbmNbmNbtnbjBbjBbjSbjSbBSbjSbjSbjBbjBaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBTbHBbHCbHBbBTbHDbHEbHFbASbHGbHHbEWbHIbHJbAUbHKbHLbBrbHNbAUbHObHObBBbGDaaaaaaaaaaaabGFbBvbHRbvAbHTbHUbHVbCtbBVbHXbBYbCtbHZbCjbCpbClbBGbBDbBKbBJbBMbCvbCwbzlbBobGKbGKbymbBmbBlbBlbBkbymbBCbBybBwbBubBtbBsbBpbCsbCybCqbCrbBHbBIbBEbBFbCNbCObFkbCIbBLbCFbBjbAgbAgbCJbAqbksbhQbCxbCxbCxbCPbCMbCxbCxbCxbhQbCLbCKbDpbDpblTbwxbCVbBWbCXbDjbDMbDObDTbDUbDrbDsbDHbDJbDXbjfbyVbDVbyVbngbngbngbngbngaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabxYbjBbxXbjBbjBbjSbjSbjSbjSbjSbjSbjSbjBbjBaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBTbHBbHCbHBbBTbHDbHEbHFbASbHGbHHbEWbHIbHJbAUbHKbHLbBrbHNbAUbHObHObBBbGDaaaaaaaaaaaabGFbINbHRbvAbHTbHUbHVbCtbBVbHXbBYbCtbHZbCjbCpbClbBGbBDbBKbBJbBMbCvbCwbzlbBobGKbGKbymbBmbBlbBlbBkbymbBCbBybBwbBubBtbBsbBpbCsbCybCqbCrbBHbBIbBEbBFbCNbCObFkbCIbBLbCFbBjbAgbAgbCJbAqbksbhQbCxbCxbCxbCPbCMbCxbCxbCxbhQbCLbCKbDpbDpblTbwxbCVbBWbCXbDjbDMbDObDTbDUbDrbDsbDHbDJbDXbjfbyVbDVbyVbngbngbngbngbngaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabxYbjBbxXbjBbjBbjSbjSbjSbjSbjSbjSbjSbjBbjBaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabGpbHBbHBbHBbJdbJebEWbEWbJfbJgbEWbEWbJhbJibAUbAUbAUbJRbAUbAUbJvbJlbJDbJnaaabJCbJpbJBbJrbJsbHVbJtbJubJPbJKbJbbJybJxbJwbJbbCSbJobJEbJFbJGbJHbJIbGHbGHbJJbJcbDobJQbJNbJUbJSbJZbJWbJWbJWbIDbICbJabIFbzGbJjbJMbJLbIxbzGbIybIzbEcbIAbIBbIBbIubIvbEcbAqbIwbAqbAqbAqbAqbAqbAqbksbhQbKFbKvbCxbCxbCxbCxbCxbKubhQbKtbEzbKpbKpblTbKjbKsbKrbKqbKgbKgbKgbKgbKhbIYbIYbKibKobJYbjfbKfbKdbJTbJObJXbJVbJAbJzaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbtybjBbptbpubpubjSbjSbjSbjSbjSbjSbjSbjSbjBbjBaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBTbHCbHCbHCbBTbKKbKLbKMbKNbKObEWbKPbLsbltbLibKVbKVbKZbKWbKVbKDbjwbKQbKYaaabGLbLabLbbLcbLdbHVbLebLfbLgbLhbCtbKHbKGbKRbCtbLlbLmbLnbLobLpbLqbLrbKUboNbKSbKIbGKbPybPybKnbymbFmbBxbFlbETbBxbHcbKcbFtbKmbKlbKkbKebKBbKCbGXbGYbLxbIAbIBbIBbIubKxbEcbKwbKzbKAbmobKybKbbKabkybksbhQbCxbLEbCxbCxbCxbCxbCxbCxbhQbLCbEzbHPbHPblTbLObojbBWbMabIYbIYbLFbLHbLIbLKbIYbLLbLMbLBbLwbLvbLubLtbLjbKXbKTbJAbKJaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabjBbjBbkQbjSbjSbjSbjSbjSbjSbjSbjSbjSbjSbjSbjBbjBaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaabGpbMwbMxbMybGpbMzbGtbGubASbASbMAbMAbMAbASbASbGDbJkbJkbGibJkbJkbJkblPbKYaaabGLbMDbMEbMFbMGbMHbMIbMJbMGbMGbMKbGBbGlbGkbGHbGHbGHbGHbGHbGHbMObGHbGHbyKbGGbGmbGKbPycpqasZbymbEbbBxbBxbBxbHdbHcbApbFtbHabGZbHbbBtbGVbGWbGXbGYbGRbGSbGTbGUbGNbGObEcbGPbGcbGdbmobGgbHgbHebkybksbhQbhQbIpbCxbCxbCxbCxbhQbhQbhQbIobHYbHPbHPblTbHQbojbBWbCXbHAbHybHzbHtbHubHrbHsbHnbHpbGEbGxbGMbGJbGQbngbHlbHkbGobGnaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbjBbjSbjSbjSbjSbjSbjSbjXbjSbHmbjSbjSbjSbjSbjSbjBbjBaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -11021,8 +11020,8 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbAdbzWbsKbzRbzQbthbzBbzFbzHccgbzSbzVccgccgbAlbAmbAnbAhbAibAjbAkbYpbyNbyRbyObyxbyJbyMbyLbzDbyJbyJbyybzpbznbzAcjcbfNbkjbqZbqZbqZbqZbywbqZbqZbqZbysbyrbiDbyvbqJbytbtDbiDbylbynbzybwUbhebhFbhebiKbwWbwXbiGbyibwZbyhbwFbwEbwQbwPbwRbwRbwRbwRbwRbwRbygbwRbwRbygbwRbyBbwRbygbyjbyobypbyqbykbyubxAbxAbxAbxCbxDbxAbxAbxAbxAbxAbxzbyabxZbVNbVObyVbyVbyVbyVaaaaafaaaaaaaaaanmanmanmaafaaaaaaaafaaaaaaaafaaaaaabxYbjBbxXbjBbjBbjSbjSbjSbjSbjSbjSbjSbjBbjBaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafbsBbsBbsKbsMbsLbthbtlbsNbsOccgbqvbqsbqubqCbqDbqwbqBbqObqQbqIbqKbqVbqUbeYbqSbstbrMbrGbribsdbsebsdbsvbsubsjbjpbshbfNbkjbqZbqYbqWbqRbqXbqWbqMbqLbqPbqNbpxbppbqJbqJbsmbiDbsnbsobsibwUbhebqqbqtbiKbsfbsgbiGbrObrVbsbbiGbssbidbvKboNbrkbrkbsaboJboGboibnRbnKbrjbGKbXOcdjbsrbslbsqbrPbskbrKbnibrmbpJbpJbpIbyVbyVbrlbpJbpJbpIbyVbyVbAEbnkbnmbnlbWWbnfbWYbWZbXabXabXabXabXabXabXabXabXabXabXabXabXabXabXabXabpKbpLbpLbpPbjBbjBbjSbjSbqmbjSbjSbjBbjBaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaafaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabSFbSFbSFbSFbSFbSFbSFbuibujccgccgccgccgccgbukbuAbuKbuKbuKbuMbuNbYpbjqbjxbtsbjybttbtxbtubtEbtCbtGbfNbtVbtHbtYbtWbfNbtRbtQbtPbtObtObtNbtMbkObqZbspbscbiDbtIbtFbqJbtDbiDbtAbtBbtzbwUbhebqHbtJbiKbszbsAbiGbiGbiGbiGbiGbssbidbidbidbfMcmHbPybGKbXObXPbXQbGKbGKaaaaaaaaaaaabudbuhbtSbtUbudaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyVbXVbswbXXbyVbyVbyVbyVaaaaafaaaaaaaaaanmanmanmaafaaaaaaaafaaaaaaaafaafaafbtrbtwbtmbtnbtybjBbjBbjSbmLbjSbjBbjBaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaafaafaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbSFbSGcnjcngcnhcnQbSFcrKcrFcrwcrvcrEcrCcrrcrrcrucnEcnEcnDcnFbAkbYpbjqbjxcnCbwMcnzctfcnBcnwcnxcnybfNbtVcnpcnqdTTbfNbkjbqZdZLdZOdZOdZMdZNbqZdYtdZPdZQbiDdZTdZRdZSdZHbiDdZGbtBcrVbwUbxPbtKbxQbiKdZKdZJbiKcrXbPwbiddZUbssdZVdZWbidbfMdWwdXGbGKaaaaafaaaaaaaafaaaaaaaaaaaaccBcrZcslcskccBaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYUbYUcoebYWbYUaaaaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafcrLbEQbEQbFgbtybtybjBbjBbjBbjBbEOaafaafaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaafaafaafbTebTebTebTebTebTebTebTebTebTebTebTebTeaaaaaacmobSGbSGbSGbSGcmAbSFcqicqgcqfcqecqdcpVcqccpVcpUcpTcpScpQcpOcpLcqjcqwcmCcqMbgXbgXbgXbgXbgXbgXbgXbfNbfNcmBbfNbfNbfNbkjbqZbqZdZrdZsdZtdZubqZcqxcqDcqTbiDbkdbiDbiDbiDbiDbwUdZydZzbwUcqXcqWcqXbiKbXLdZBbiKbPybPybiddZDbssbidbidbidbfMcpWcmNbGKaaaaafaaaaaaaafaaaaaeaaaaaacrfcbWcrpcoBcrfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYUcqQcmGbZVbYUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaafaafaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbSFbSGcnjcngcnhcnQbSFbQmbMbbTObRJcrEcrCcrrcrrcrucnEcnEcnDcnFbAkbYpbjqbjxcnCbwMcnzctfcnBcnwcnxcnybfNbtVcnpcnqdTTbfNbkjbqZdZLdZOdZOdZMdZNbqZdYtdZPdZQbiDdZTdZRdZSdZHbiDdZGbtBcrVbwUbxPbtKbxQbiKdZKdZJbiKcrXbPwbiddZUbssdZVdZWbidbfMdWwdXGbGKaaaaafaaaaaaaafaaaaaaaaaaaaccBcrZcslcskccBaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYUbYUcoebYWbYUaaaaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafcrLbEQbEQbFgbtybtybjBbjBbjBbjBbEOaafaafaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaafaafaafbTebTebTebTebTebTebTebTebTebTebTebTebTeaaaaaacmobSGbSGbSGbSGcmAbSFcqfcqecqicqgcqdcpVcqccpVcpUcpTcpScpQcpOcpLcqjcqwcmCcqMbgXbgXbgXbgXbgXbgXbgXbfNbfNcmBbfNbfNbfNbkjbqZbqZdZrdZsdZtdZubqZcqxcqDcqTbiDbkdbiDbiDbiDbiDbwUdZydZzbwUcqXcqWcqXbiKbXLdZBbiKbPybPybiddZDbssbidbidbidbfMcpWcmNbGKaaaaafaaaaaaaafaaaaaeaaaaaacrfcbWcrpcoBcrfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYUcqQcmGbZVbYUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaaaaaabTecnScqacnSbTecnOcpYcnObTecnMcpZcnMbTeaaaaaacphbSGcpXbSGbSGcpRbSFcFVcFUcQKcFXcRqcRpcFMcFKcFRbqVbqVcFTbqVbqKcFIcFJbjxcpCcpDcpucpucpEcpucpucoMcpvcpwcpxcpyeaqcoMbkjbEaeaxbMXbMXeaveaweaDeaEdLbdPueazeaAeayeaeeaeeaudXBbwUbwUbwUdhOcZLdyNbiKbiKbiKbiKbPybPybidbssbsseareasbidbfMbGKbGKbGKaaaaafaaaaaaaafaaaaaaaaaaaacWzcWQcRYcRScWzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYUcaycqbcaAbYUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaaaaaabTecnScnRcnSbTecnOcnPcnObTecnMcnNcnMbTeaaaaaacphbSGbSGbSGcpicoIcoHcsOcsNcvgcuVcsWcsPcsMcsEcsmcoycoEcoDcoCbAkbYpcpdcpbcpccpgcpfcpecpfcoOcoWcoMcoNcoZcpacoXdZZcoMbkjbEaeabbMXbOsbMXeaaeageahcCNeajeaceadeaeeafeaeeandXBciZboNcDacEycExcFHcFGboNboNboNboNcEzbidbidbidbidbidbidbfMbGKaafaafaafcbfaafaafaafaafaafaafaafccQbudcCKcylccQaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYUcbjcpjcblbYUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaaaaaabTecrgcnicrebTecrccnfcrbbTecracnccqZbTeaaaaafcphcrdbSGbSGcqqbWbbSFdPYdPVcvgcvgdPTcvgcvgcvgcvgcrzbYpcrxcrybAkbYpdRPcrlbyOcrhcricrkcricrocrqcrscrtcrmcrncoMcoMcoMbkjbEaeboebrebsebpebqebiebjdQhebhebmebnebkeblebcebbebadQabJNebfdQedQddPZbCTbyDbXPbXQbGKbvKboNboNboNboNboNboNciNbGKaaaaaaaaaaafaaaaaaaafaaaaaaaaaaaabuddQidQSdQRbudaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaacbZccacrNcccccdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From f7e7dd0370cbd1e75f20a5ecfe803709c2069ae0 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Wed, 25 Jun 2014 08:33:21 +0200 Subject: [PATCH 065/304] Adds missing APCs: Engineering Monitoring Mining Station Communications Removes excessive APC: Research Outpost hallway --- maps/tgstation2.dmm | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/maps/tgstation2.dmm b/maps/tgstation2.dmm index fc40a80fa9..2d7b4c10b1 100644 --- a/maps/tgstation2.dmm +++ b/maps/tgstation2.dmm @@ -6099,7 +6099,7 @@ "cno" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{name = "Pre-Op Prep Room Maintenance Access"; req_access_txt = "45"},/turf/simulated/floor/plating,/area/medical/surgeryprep) "cnp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{dir = 4; icon_state = "whiteyellowfull"},/area/crew_quarters/sleep/engi) "cnq" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor{dir = 4; icon_state = "whiteyellowfull"},/area/crew_quarters/sleep/engi) -"cnr" = (/obj/structure/table/reinforced,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/light,/obj/item/device/flashlight,/turf/simulated/floor,/area/engine/engineering_monitoring) +"cnr" = (/obj/structure/table/reinforced,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/light,/obj/item/device/flashlight,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor,/area/engine/engineering_monitoring) "cns" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/light{dir = 1},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/turf/simulated/floor{dir = 4; icon_state = "bluecorner"},/area/medical/virologyaccess) "cnt" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cnu" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/simulated/floor{dir = 9; icon_state = "warnwhite"},/area/medical/virology) @@ -6311,6 +6311,8 @@ "crs" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/door/airlock/engineering{name = "Engineering Washroom"; req_one_access_txt = "11;24"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.4; name = "Engineering Firelock"},/turf/simulated/floor,/area/crew_quarters/sleep_male/toilet_male{name = "\improper Engineering Washroom"}) "crt" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "whiteyellow"},/area/crew_quarters/sleep_male/toilet_male{name = "\improper Engineering Washroom"}) "cru" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/engine/engine_eva) +"crv" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) +"crw" = (/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor{icon_state = "dark"},/area/mine/maintenance) "crx" = (/obj/structure/stool/bed/chair/office/dark{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/cyan,/turf/simulated/floor,/area/hallway/primary/aft) "cry" = (/obj/structure/table/reinforced,/obj/item/weapon/clipboard,/turf/simulated/floor,/area/hallway/primary/aft) "crz" = (/obj/machinery/computer/station_alert,/turf/simulated/floor,/area/hallway/primary/aft) @@ -9640,7 +9642,6 @@ "dDz" = (/obj/machinery/camera{c_tag = "Research Outpost Anomalous Materials Lab"; dir = 8; network = list("Research","SS13")},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/anomaly) "dDA" = (/obj/machinery/door/airlock/research{name = "Anomalous Materials Loading"; req_access_txt = "65"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor,/area/research_outpost/anomaly) "dDB" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 8},/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,/turf/simulated/floor/plating,/area/research_outpost/atmos) -"dDC" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable,/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) "dDD" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 0; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plating,/area/research_outpost/maintstore2) "dDE" = (/obj/machinery/atmospherics/pipe/manifold/visible/supply{tag = "icon-manifold (EAST)"; icon_state = "manifold"; dir = 4},/turf/simulated/floor/plating,/area/research_outpost/atmos) "dDF" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; level = 2; on = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/visible/supply{tag = "icon-intact (SOUTHEAST)"; icon_state = "intact"; dir = 6},/turf/simulated/floor/plating,/area/research_outpost/atmos) @@ -10759,7 +10760,6 @@ "dZs" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "surgeryobs"; name = "Operating Theatre Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/surgeryobs) "dZt" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "surgeryobs"; name = "Operating Theatre Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/surgeryobs) "dZu" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/wall,/area/medical/surgeryobs) -"dZv" = (/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/turf/simulated/floor{icon_state = "dark"},/area/mine/maintenance) "dZy" = (/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -27},/obj/structure/stool/bed/chair/comfy/brown{icon_state = "comfychair_brown"; dir = 4},/turf/simulated/floor{icon_state = "bcarpet08"},/area/medical/psych) "dZz" = (/obj/structure/stool/bed/psych,/obj/item/weapon/bedsheet/brown,/turf/simulated/floor{icon_state = "bcarpet09"},/area/medical/psych) "dZB" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/table,/obj/item/bodybag/cryobag{pixel_x = -3},/obj/item/bodybag/cryobag{pixel_x = -3},/obj/item/weapon/gun/syringe,/turf/simulated/floor{icon_state = "dark"},/area/medical/biostorage) @@ -11950,7 +11950,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafdvGdvHdvIdvcdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaduDaaaaaadrIdvddvddvddvddvddvddvddvJdvKdvLdvMdHidICdIKdILdIQdJFdJEdJbdIVdvWdvXdvYdJGdKcdNidMWdJHdKudKtdvzdwgdwhdKEdKCdvzdwkduYduYduYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqUdqUdqUdqUdqUaaaaaaaaaaaaaaaaaaaaadqUdqUdqUdqUdqUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafdwldwmdwndwodvcdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaadrIdvddvddvddvddvddvddvddwpdwqdwrdwsdymdwudwudwvdwwdwxdrDdyudytdtJdwAdwBdwCdwDdwEdDzdtJdysdyndwIdwJdwJdwKdyvdwMdwNdwOdwPdwPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafdwQdwRdwSdvcdwTdwUdvcdvcdvcdvcdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaaaaaaaadrIdvddvddvddvddvddvddvddwVdwqdwrdwsdymdwWdwXdwvdwYdwZdrDdyldxNdtJdxcdtJdtJdtJdtJdxddtJdxMdxLdvzdDwdxhdxidxjdxkdxldxmdxndxnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafdxodxpdxqdxrdxsdxtdszduBdxudvcdxvdxwdvcdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaaaaaaaadrIdvddvddvddvddvddvddvddrTdwqdwrdwsdymdxxdxydwvdxzdxAdrDdzkdzjdxDdxEdxFdxGdxHdrDdxIdxJdyZdDCdzgdzadxOdxPdxQdxRdxldwPdwPdwPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafdxodxpdxqdxrdxsdxtdszduBdxudvcdxvdxwdvcdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaaaaaaaadrIdvddvddvddvddvddvddvddrTdwqdwrdwsdymdxxdxydwvdxzdxAdrDdzkdzjdxDdxEdxFdxGdxHdrDdxIdxJdyZcrvdzgdzadxOdxPdxQdxRdxldwPdwPdwPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafdxSdxTdxpdxUdxVdxWdxXdxYdxudxZdxwdyadxvdvcdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaaaaaaaadybdycdyddyedyfdycdyddygdyhdyidyjdykdyMdykdrDdrDdrDdrDdrDdySdyRdyodxEdrEdxGdzQdrDdyqdyrdyQdyPdyOdYzdywdyxdyydyzdyAdyBdrDdyCdtYdrsdrsdrsdrsdrsdrsdrtdyDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadyEdxSdyFdxSdxqdxqdwTdyGdxVdvcdwodyHdvcdxwdyIdvcdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaaaaaaaadyJdyKdyLdyLdAUdATdATdARdASdAXdATdAVdAWdyTdyUdyVdyWdyXdAGdAJdAIdzbdzcdzddzedzfdrDdzhdzidAQdAMdvzdvzdzldvzdvzdvzdzmdzndzodzpdzqdzrdzrdzsdzrdzrdzrdztdrZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafdzudzvdxqdzwdzxdxqdvIdzydxWdzzdzAdzBdvcdvcdvcdvcdvcdvcdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTaaaaaaaaaaaaaaadzCdzDdyLdyLdzEdyLdzFdzGdAjdzIdzJdzKdzLdzMdyUdAkdAldAcdAbdAadzZdzYdzXdzWdzPdAidAhdAgdzPdAfdAedzOdAddzRdzSdzOdRKdzOdzPdzHdzNdzUdDHdzTdAmdAndAodApdzrdslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -12058,7 +12058,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHndHndHndHndHndHVdHVdHVdH aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHndHndHndHndHVdHVdHVdHVdHVdHVdHVdHVdHndHndHndHndHndHVdHVdHVdHndHndHndHndHndHndHndHVdHVdHndHndHndHndHndHndHndHndHndHndHndHndHndIqdIrdIsdHndHndHndHndHndqTdqTdqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsadsadsadsadsadsadqTdBvdCidCidCidCidHSdCidBvdBvdqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadqTdsadqTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHndHndHndHndHVdHVdHVdHVdHVdHVdHndHndHndHndHndHndHndHndHVdHVdHndHndHndHndHndHndHndHndHVdHndHndHndHndHndHndHndHndHndHndHndHndHndIqdIrdItdHndHndHndHndHndqTdqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsadsadsadsadsadsadqTdBvdCidCidCidCidHSdCidBvdqTdqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadqTdqTdqTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHndHndHndHndHVdHVdHndHndHndHndHndHndHndHndHndHndHndHVdHVdHVdHndHndHndHndHndHndHndHndHndHndHndCidCidGXdHddIudIvdIvdIvdIvdIvdIvdIwdIrdItdHndHndHndHndHndHndqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadIxdIxdIxdIxdIxdIxdIxdsadsadsadsadsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsadsadsadsadsadsadqTdBvdCidCidCidCidHSdEudDQdqTdqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadqTdqTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHVdHVdHVdHVdHndHndHndHndHndHndHndHndHndHndCidCidCidCidIpdIydIydIydIydIydIydIydIzdIAdItdHndHndHndHndHndHndqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadIxdIBdZvdIDdIEdIBdIxdsadsadsadsadsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsadsadsadsadsadsadsadqTdBvdBvdCidCidCidHSdCidBvdqTdqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadqTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndHVdHVdHVdHVdHndHndHndHndHndHndHndHndHndHndCidCidCidCidIpdIydIydIydIydIydIydIydIzdIAdItdHndHndHndHndHndHndqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadIxdIBcrwdIDdIEdIBdIxdsadsadsadsadsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsadsadsadsadsadsadsadqTdBvdBvdCidCidCidHSdCidBvdqTdqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadqTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHndHndHndHndHndHndHndHndHndHndHndHndHndHndHVdHVdHVdHVdHVdHVdHndHndHndHndHndHndHndHndBvdCidCidCidGXdIFdHDdHDdHDdHDdHDdHDdIGdIrdIHdIIdHndHndHndHndHndBvdqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadIxdIBdIJdRtdRqdIMdIxdsadsadsadsadqTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsadsadsadsadsadsadsadqTdqTdBvdCidCidCidHSdCidBvdqTdqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHndHndHndHndHndHndHndHndHndHndHndHndHndHVdHVdHVdHndHVdHVdHVdHndHndHndHndHndHndBvdBvdBvdCidCidCidCidHndHndHndHndHndHndIqdIrdItdHndHndHndCidCidCidBvdqTdqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadFrdINdIOdsadIPdIxdIxdIxdRvdIxdIxdIxdsadsadsadqTdqTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsadsadsadsadsadsadsadsadqTdqTdBvdCidCidCidHSdCidBvdBvdqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHndHndHndHndHndHndHndHndHndHndHndHndHVdHVdHndHndHndHndHndHndHndHndHndHndqTdqTdBvdBvdCidCidCidHndHndHndHndHndHndHndIqdIrdItdHndCidCidCidCidCidBvdBvdqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadIRdIOdISdsadIPdITdIUdIPdMvdIPdBvdBvdqTdqTdqTdqTdqTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqTdsadsadsadsadsadsadsadsadqTdqTdBvdBvdCidCidHSdCidCidBvdBvdBvdqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From c2a4d86ca1befcfe74591cde0fc478526a0dd8d6 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Wed, 25 Jun 2014 08:41:30 +0200 Subject: [PATCH 066/304] Adds light switches. Adds a wrench to the crowbar in the Warden's office to allow handling of flash barriers. Corrects two fire extinguisher cabinets which had lost their pixel shifts. --- maps/tgstation2.dmm | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/maps/tgstation2.dmm b/maps/tgstation2.dmm index 2d7b4c10b1..be32a4d68e 100644 --- a/maps/tgstation2.dmm +++ b/maps/tgstation2.dmm @@ -706,7 +706,7 @@ "anD" = (/obj/structure/closet/secure_closet/brig{id = "Cell 4"; name = "Cell 4 Locker"},/obj/machinery/camera{c_tag = "Brig Cell 4"; dir = 2},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/brig) "anE" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/main) "anF" = (/obj/machinery/computer/prisoner,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "dark"},/area/security/warden) -"anG" = (/obj/structure/table,/obj/item/weapon/folder/red,/obj/item/weapon/crowbar,/obj/item/device/radio/off,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "dark"},/area/security/warden) +"anG" = (/obj/structure/table,/obj/item/weapon/folder/red,/obj/item/weapon/crowbar,/obj/item/device/radio/off,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/item/weapon/wrench,/turf/simulated/floor{icon_state = "dark"},/area/security/warden) "anH" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/table/woodentable,/obj/item/ashtray/bronze,/obj/item/weapon/storage/fancy/cigarettes/dromedaryco,/turf/simulated/floor/carpet,/area/security/detectives_office) "anI" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/security/detectives_office) "anJ" = (/turf/simulated/floor/plating{dir = 1; icon_state = "warnplate"; nitrogen = 0.01; oxygen = 0.01},/area) @@ -2301,7 +2301,7 @@ "aSm" = (/obj/machinery/door/morgue{dir = 2; name = "Private Study"; req_access_txt = "37"},/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/library) "aSn" = (/obj/item/device/radio/intercom{pixel_x = -25},/turf/simulated/floor{dir = 8; icon_state = "escape"},/area/hallway/secondary/exit) "aSo" = (/turf/simulated/floor/carpet,/area/chapel/main) -"aSp" = (/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_x = -27; pixel_y = 0},/turf/simulated/floor{dir = 1; icon_state = "escape"},/area/hallway/secondary/exit) +"aSp" = (/obj/structure/extinguisher_cabinet{pixel_x = -24},/turf/simulated/floor{dir = 1; icon_state = "escape"},/area/hallway/secondary/exit) "aSq" = (/turf/simulated/floor{dir = 1; icon_state = "escape"},/area/hallway/secondary/exit) "aSr" = (/obj/machinery/alarm{pixel_y = 25},/turf/simulated/floor{dir = 1; icon_state = "escape"},/area/hallway/secondary/exit) "aSs" = (/turf/simulated/floor,/area/hallway/secondary/exit) @@ -2401,7 +2401,7 @@ "aUi" = (/obj/machinery/light/small,/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/storage/emergency2) "aUj" = (/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/storage/emergency2) "aUk" = (/obj/structure/closet/gmcloset{icon_closed = "black"; icon_state = "black"; name = "formal wardrobe"},/obj/item/device/eftpos{eftpos_name = "Bar EFTPOS scanner"},/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor/wood,/area/crew_quarters/bar) -"aUl" = (/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_x = -27; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/storage/tools) +"aUl" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/extinguisher_cabinet{pixel_x = -24},/turf/simulated/floor,/area/storage/tools) "aUm" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/storage/tools) "aUn" = (/turf/simulated/wall,/area/hallway/primary/central) "aUo" = (/turf/simulated/wall,/area/bridge) @@ -4942,7 +4942,7 @@ "bRb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/bluegrid,/area/assembly/chargebay) "bRc" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/medical/genetics) "bRd" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/quartermaster/office) -"bRe" = (/obj/machinery/camera{c_tag = "Genetics Fore"; network = list("SS13")},/turf/simulated/floor/plating,/area/medical/genetics) +"bRe" = (/obj/machinery/camera{c_tag = "Genetics Fore"; network = list("SS13")},/obj/machinery/light_switch{pixel_y = 28},/turf/simulated/floor/plating,/area/medical/genetics) "bRf" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/wall/r_wall,/area/assembly/chargebay) "bRg" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/quartermaster/office) "bRh" = (/obj/structure/extinguisher_cabinet{pixel_x = -27},/obj/machinery/light{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/bluegrid,/area/assembly/chargebay) @@ -6321,6 +6321,7 @@ "crC" = (/obj/structure/rack{dir = 8; layer = 2.6},/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/rig,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig,/obj/machinery/light{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/southleft{name = "Engineering Hardsuits"; req_access_txt = "11"},/turf/simulated/floor,/area/engine/engine_eva) "crD" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/structure/table/reinforced,/obj/machinery/door_control{id = "chemcounter"; name = "Pharmacy Counter Lockdown Control"; pixel_y = 25},/obj/machinery/reagentgrinder,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "crE" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor,/area/engine/engine_eva) +"crF" = (/obj/machinery/light_switch{pixel_x = 7; pixel_y = -23},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) "crG" = (/obj/structure/sign/chemistry,/turf/simulated/wall/r_wall,/area/medical/chemistry) "crH" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; external_pressure_bound = 140; icon_state = "out"; on = 1; pressure_checks = 0},/turf/simulated/floor/plating/airless,/area) "crI" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/obj/structure/sign/securearea{desc = "A warning sign which reads 'HOT EXHAUST'."; name = "\improper HOT EXHAUST"; pixel_x = -32},/turf/simulated/floor/plating/airless,/area) @@ -11014,7 +11015,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNObESbNPbESbNQaaaaafaaaaaabASbNRbNSbNTbASaaabGDccpcbybzibJkbJkbJkblPbKYaaabGLbNWbNXbNYbNZbHVbOabObbOcbOdbGFbIabIqbIcbIbbIdbIdbIdbIdbIdbIdbItbIdbIebIebIEbGKbGKbGKbGKbymbymbHwbHMbHwbymbymbHvbHobHjbHibzGbBubCUbInbIlbImbEcbIkbEcbEcbEcbEcbEcbIjbIfbBAbmobHSbIsbCibkybksbhQbIMbIVbIUbIRbIQbITbISbIMblUbIPbIObIZblTblTbJmbojbOVbngbngbjfbjfbjfbjfbIWbjfbIXbIYbIHbjfbIhbCWbyVbngbIKbIJbIGbngaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabjBbulbulbulbulbulbulbILbjSbuPbulbHmbjSbjSbjSbjSbjBaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafcbxbGDbGDbGDbGDbJkblQblPbPiaaabPjbJpbPkbPlbPmbHVbHVbPnblOblMblNbmwblSblRbgXbgXbgXbgXbgXbgXbgXbgXbgXbPwbPxboobonbmAbmybGKbymblCblBblEblDblGblFblIblHblKblJblYblXbmabmbbmcbmdbmebmfbmgbmibmjbmkbidbmlbmmbmnbmobmpblfblebkybksbhQblyblxblwbicbicbicblzblVblUblTblAblTblTbQebgnbojbojbQgaafbjcblZblWbjabmvbjabmqbmtbnEbjfblLbnHbnhbngbnwbnjbnjbolaagaagaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabombmNbmNbmNbmNbmNbmNbmNbmMbmLbjSbjSbjSbjSbmObmLbjBaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaBcaCcaCcaDcaEbGDccfbJkbmKbGDaaaaaaaaaaaabGFbQybQzbQAbQBbGFbQCbGFbmIbmHbmJbgXbgXbmEbmGbmFbmCbmBbmDbfNbfNbfNbfNbfNbfNbkjbnZbnXbpdboXboUboObpkbpjbpibphbpobpnbnIbpmbnIbnJbnubnvbnNbnObnLbnMbnObnSbnPbnQbnVbnWaWtbnUbmubebbmzbmxbpbbpabpfbpebplbpgbpqbpgbpsbprbRlbmhbojbRnbojbgnbojbojbRoaafbjcbjdbjdbopboqboKboPboYbpwbjfbgqbgpbUKbngbngbngbngbngaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabjBbpubpubpubpubpubpubpvbjSbptbpubkabjSbjSbjSbjSbjBaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkfcbncbocbpbJkbgsbJkbJkbgtbGDbguaaaaaaaaabGFbGFbGFbGFbGFbGFbGFbGFbhybhibhhbgXbgXbhBbgwbgxbgxbgwbgvbfNbgMbgLbgDbgBbfNbhGbymbymbfCbfAbfFbfEbBzbggbgibhHbfJbcPbgfbfLbgTbgVbgWbgYbgjbgkbbVbcZbgkbhfbhjbhEbhIbhabhcbhdbinbilbidbhYbhQbhNbhNbhJbicbiubisbicbicbiabSlbgmbSnbojbSobgnbojbSpbSqaafbjcbjdbjbbjabiAbjabivbiybjmbjfbgqbgpbjubitbyVaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbjBbjSbjSbjSbjSbjSbjSbjXbjSbkabjSbjSbjSbjSbjSbjBbjBaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkfcbncbocbpbJkbgsbJkbJkbgtbGDbguaaaaaaaaabGFbGFbGFbGFbGFbGFbGFbGFbhybhibhhbgXbgXbhBbgwbgxbgxbgwbgvbfNbgMbgLbgDbgBbfNbhGbymbymbfCbfAbfFbfEbBzbggbgibhHbfJbcPbgfbfLbgTbgVbgWbgYbgjbgkbbVbcZbgkbhfbhjbhEbhIbhabhcbhdbinbilbidbhYbhQbhNbhNbhJbicbiubisbiccrFbiabSlbgmbSnbojbSobgnbojbSpbSqaafbjcbjdbjbbjabiAbjabivbiybjmbjfbgqbgpbjubitbyVaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbjBbjSbjSbjSbjSbjSbjSbjXbjSbkabjSbjSbjSbjSbjSbjBbjBaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccecaCcaCcaDcbtbiLbkebGDbkubGDccgbkvbkEccgccgbjFbjLbjMbgZbjTbjUblvbYpbjqbjxbllbjybgwbjEbjDbiNbiMbiObfNbiQbiPbjpbiRbfNbkjbPybjZbjYbjWbjVbiTbiTbkhbkgbkkbiDbkdbkcbkbbiDbiDbiBbiCbizbwUbhebhFbhebiKbiIbiJbiGbiHbiEbiFbiGbklbidbkibhQbknbkrbkobkMbkLbkPbkNbhQbhQbrhbiwbrhbrhbrhbhTbxqbhRbrhbjfbjfbjfbjfbjfbkmbjfbjfbjfbjfbjfbgqbgpblgbkpbyVaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabjBbjBbkQbjSbjSbjSbjSbjSbjSbjSbjSbjSbjSbjSbjBbjBaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQalQchdalQalQalQalQalQaaaaaaaaaaaaaaaaaaaafaafaaabxWbxTbxTbxTbxVbxTbxTbxRbxSccgbwobwhccgbwJbwKbwHbwIbwDbwGbwtbwvbwSbwObfHbxUbwMbgwbjEbwLbxjbiMbxdbfNbiQbiPbxcbxabfNbxObPybymbvnbvlbvpbvobtLbtXbvebvdbiDbvfbvkbvjbuObiDbuQbvFbvNbwUbhebhFaJzbiKbvrbvsbiGbvtbvubuabiGbtTbidbksbhQbhQbhQbhQbhQbhQbvqbhQbhQbwqbwmbvvbxlbxxbrhbiwbxEbvabrhbxybwCbwTbwrbwsbwYbxkbumbwVbumbumbuLbunbAEbyVbyVbyVaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbtybjBbuPbulbulbjSbjSbjSbjSbjSbjSbjSbjSbjBbjBaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbAdbzWbsKbzRbzQbthbzBbzFbzHccgbzSbzVccgccgbAlbAmbAnbAhbAibAjbAkbYpbyNbyRbyObyxbyJbyMbyLbzDbyJbyJbyybzpbznbzAcjcbfNbkjbqZbqZbqZbqZbywbqZbqZbqZbysbyrbiDbyvbqJbytbtDbiDbylbynbzybwUbhebhFbhebiKbwWbwXbiGbyibwZbyhbwFbwEbwQbwPbwRbwRbwRbwRbwRbwRbygbwRbwRbygbwRbyBbwRbygbyjbyobypbyqbykbyubxAbxAbxAbxCbxDbxAbxAbxAbxAbxAbxzbyabxZbVNbVObyVbyVbyVbyVaaaaafaaaaaaaaaanmanmanmaafaaaaaaaafaaaaaaaafaaaaaabxYbjBbxXbjBbjBbjSbjSbjSbjSbjSbjSbjSbjBbjBaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From 89a450c4f433bf05e2ae65d112aecd17059d1db7 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Wed, 25 Jun 2014 16:25:15 +0930 Subject: [PATCH 067/304] Mining tweaks, removal of debug/cruft, balancing of values. --- code/modules/mining/drilling/distribution.dm | 63 +++++++------------- 1 file changed, 20 insertions(+), 43 deletions(-) diff --git a/code/modules/mining/drilling/distribution.dm b/code/modules/mining/drilling/distribution.dm index 1fbedca59a..e0aec22db8 100644 --- a/code/modules/mining/drilling/distribution.dm +++ b/code/modules/mining/drilling/distribution.dm @@ -18,10 +18,10 @@ #define MAX_DEEP_COUNT 300 #define ITERATE_BEFORE_FAIL 200 -#define RESOURCE_HIGH_MAX 8 -#define RESOURCE_HIGH_MIN 5 -#define RESOURCE_MID_MAX 4 -#define RESOURCE_MID_MIN 2 +#define RESOURCE_HIGH_MAX 3 +#define RESOURCE_HIGH_MIN 0 +#define RESOURCE_MID_MAX 2 +#define RESOURCE_MID_MIN 1 #define RESOURCE_LOW_MAX 1 #define RESOURCE_LOW_MIN 0 @@ -52,10 +52,6 @@ Deep minerals: var/random_variance_chance = 25 var/random_element = 0.5 -//Called by the drilling rigs each process(). -/datum/ore_distribution/proc/get_ore(var/x,var/y) - return "Nope." - /datum/ore_distribution/proc/map_is_sane() if(!map) return 0 @@ -79,12 +75,13 @@ Deep minerals: //Halfassed diamond-square algorithm with some fuckery since it's a single dimension array. /datum/ore_distribution/proc/populate_distribution_map() - //Seed beginning values. + //Announce it! + world << "Generating resource distribution map." + //Seed beginning values. var/x = 1 var/y = 1 var/size = real_size-1 - map[MAP_TOP_LEFT] = (range/3)+rand(range/5) map[MAP_TOP_RIGHT] = (range/3)+rand(range/5) map[MAP_BOTTOM_LEFT] = (range/3)+rand(range/5) @@ -131,11 +128,16 @@ Deep minerals: /datum/ore_distribution/proc/apply_to_asteroid() - var/origin_x = 13 - var/origin_y = 32 - var/limit_x = 217 - var/limit_y = 223 - var/asteroid_z = 5 + // THESE VALUES DETERMINE THE AREA THAT THE DISTRIBUTION MAP IS APPLIED TO. + // IF YOU DO NOT RUN OFFICIAL BAYCODE ASTEROID MAP YOU NEED TO CHANGE THEM. + // ORIGIN IS THE BOTTOM LEFT CORNER OF THE SQUARE CONTAINING ALL ASTEROID + // TILES YOU WISH TO APPLY THE DISTRIBUTION MAP TO. + + var/origin_x = 13 //We start here... + var/origin_y = 32 //...and here... + var/limit_x = 217 //...and iterate until here... + var/limit_y = 223 //...and here... + var/asteroid_z = 5 //...on this Z-level. var/tx = origin_x var/ty = origin_y @@ -155,18 +157,9 @@ Deep minerals: target_turf = locate(tx+j, ty+i, asteroid_z) - if(target_turf.has_resources) + if(target_turf && target_turf.has_resources) - var/printcolor - if(map[MAP_CELL] > (range*0.60)) - printcolor = "#FF0000" - else if(map[MAP_CELL] > (range*0.40)) - printcolor = "#00FF00" - else - printcolor = "#0000FF" - target_turf.color = "#[printcolor]" target_turf.resources = list() - target_turf.resources["silicates"] = rand(RESOURCE_HIGH_MIN,RESOURCE_HIGH_MAX) target_turf.resources["carbonaceous rock"] = rand(RESOURCE_HIGH_MIN,RESOURCE_HIGH_MAX) @@ -202,24 +195,8 @@ Deep minerals: tx = origin_x ty += chunk_size -/datum/ore_distribution/proc/print_map() - world << "---" - var/string = "" - for(var/y = 1, y <= real_size, y++) - for(var/x = 1, x <= real_size, x++) - - var/printcolor - if(map[MAP_CELL] > (range*0.60)) - printcolor = "#FF0000" - else if(map[MAP_CELL] > (range*0.40)) - printcolor = "#00FF00" - else - printcolor = "#0000FF" - string += "#" - - world << string - string = "" - world << "---" + world << "" + return #undef MAP_CELL #undef MAP_CENTRE From aa65bb15f36a79a59c5584684186601ddb128c0d Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Wed, 25 Jun 2014 09:12:42 +0200 Subject: [PATCH 068/304] Security specific pipe/air alarm changes. Removes unnecessary air alarm in the evidence storage. Enables two scrubbers, showers and tactical storage. Reorganizes the scrubber pipes in the showers/tac.storage to go through the door instead of reinforced wall. --- maps/tgstation2.dmm | 33 +++++++++++++++------------------ 1 file changed, 15 insertions(+), 18 deletions(-) diff --git a/maps/tgstation2.dmm b/maps/tgstation2.dmm index be32a4d68e..d90424e22a 100644 --- a/maps/tgstation2.dmm +++ b/maps/tgstation2.dmm @@ -122,7 +122,7 @@ "acr" = (/obj/machinery/camera{c_tag = "Firing Range"; dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/range) "acs" = (/obj/machinery/shower{icon_state = "shower"; dir = 4},/turf/simulated/floor{icon_state = "freezerfloor"},/area/security/main) "act" = (/obj/structure/window/basic{dir = 4},/turf/simulated/floor{icon_state = "freezerfloor"},/area/security/main) -"acu" = (/obj/machinery/alarm{pixel_y = 22},/obj/machinery/camera{c_tag = "Security Washroom"; dir = 2},/turf/simulated/floor{icon_state = "bar"},/area/security/main) +"acu" = (/obj/machinery/alarm{pixel_y = 22},/obj/machinery/camera{c_tag = "Security Washroom"; dir = 2},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1},/turf/simulated/floor{icon_state = "bar"},/area/security/main) "acv" = (/obj/structure/mirror{pixel_y = 32},/obj/structure/sink{pixel_y = 22},/turf/simulated/floor{icon_state = "bar"},/area/security/main) "acw" = (/obj/structure/mirror{pixel_y = 32},/obj/structure/sink{pixel_y = 22},/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "bar"},/area/security/main) "acx" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/obj/machinery/atmospherics/valve,/turf/simulated/floor/plating,/area/security/prison) @@ -144,7 +144,7 @@ "acN" = (/obj/structure/table/reinforced,/obj/machinery/recharger{pixel_y = 0},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/security/range) "acO" = (/obj/structure/table/reinforced,/obj/item/weapon/gun/energy/laser/practice,/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/item/weapon/paper{info = "Directions:
First you'll want to make sure there is a target stake in the center of the magnetic platform. Next, take an aluminum target from the crates back there and slip it into the stake. Make sure it clicks! Next, there should be a control console mounted on the wall somewhere in the room.

This control console dictates the behaviors of the magnetic platform, which can move your firing target around to simulate real-world combat situations. From here, you can turn off the magnets or adjust their electromagnetic levels and magnetic fields. The electricity level dictates the strength of the pull - you will usually want this to be the same value as the speed. The magnetic field level dictates how far the magnetic pull reaches.

Speed and path are the next two settings. Speed is associated with how fast the machine loops through the designated path. Paths dictate where the magnetic field will be centered at what times. There should be a pre-fabricated path input already. You can enable moving to observe how the path affects the way the stake moves. To script your own path, look at the following key:


N: North
S: South
E: East
W: West
C: Center
R: Random (results may vary)
; or &: separators. They are not necessary but can make the path string better visible."; name = "Firing Range Instructions"},/turf/simulated/floor,/area/security/range) "acP" = (/obj/machinery/door/window/eastleft,/turf/simulated/floor{icon_state = "freezerfloor"},/area/security/main) -"acQ" = (/obj/machinery/atmospherics/unary/vent_scrubber,/turf/simulated/floor{icon_state = "bar"},/area/security/main) +"acQ" = (/obj/structure/closet/wardrobe/tactical,/obj/item/clothing/glasses/night,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/tactical) "acR" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor{icon_state = "bar"},/area/security/main) "acS" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/security/brig) "acT" = (/turf/simulated/wall/r_wall,/area) @@ -266,7 +266,7 @@ "aff" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/security/brig) "afg" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/prison) "afh" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/security/brig) -"afi" = (/obj/structure/filingcabinet/filingcabinet,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22; pixel_y = 0},/turf/simulated/floor{icon_state = "dark"},/area/security/brig) +"afi" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "bar"},/area/security/main) "afj" = (/obj/structure/closet{name = "Evidence Closet"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/brig) "afk" = (/obj/structure/cable,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/turf/simulated/floor{icon_state = "whitehall"; dir = 8},/area/security/brig) "afl" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/security/brig) @@ -275,7 +275,7 @@ "afo" = (/obj/structure/closet/l3closet/security,/obj/machinery/light{dir = 4},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/security/warden) "afp" = (/obj/structure/sign/securearea{pixel_x = -32; pixel_y = 0},/obj/machinery/light{dir = 8},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/main) "afq" = (/obj/structure/closet/wardrobe/red,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/security/main) -"afr" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/security/main) +"afr" = (/obj/machinery/door/airlock/highsecurity{name = "Tactical Equipment"; req_access_txt = "58"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/security/tactical) "afs" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/security/brig) "aft" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/security/brig) "afu" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/security/brig) @@ -625,7 +625,7 @@ "ama" = (/obj/effect/decal/cleanable/generic,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fsmaint) "amb" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/structure/cable,/turf/simulated/floor,/area/security/lobby) "amc" = (/obj/item/weapon/wrench,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/fsmaint) -"amd" = (/turf/simulated/floor{icon_state = "bar"},/area/security/main) +"amd" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "dark"},/area/security/tactical) "ame" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/structure/cable,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/security/lobby) "amf" = (/turf/simulated/wall/r_wall,/area/maintenance/fsmaint) "amg" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_CO2 = 0; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/security/lobby) @@ -658,13 +658,13 @@ "amH" = (/obj/machinery/flasher{id = "Cell 3"; pixel_x = 0; pixel_y = -28},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/brig) "amI" = (/obj/machinery/light{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/prison) "amJ" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor{icon_state = "bar"},/area/security/main) -"amK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "bar"},/area/security/main) +"amK" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "bar"},/area/security/main) "amL" = (/obj/item/weapon/storage/secure/safe{pixel_x = -23},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) "amM" = (/obj/structure/stool,/turf/simulated/floor/carpet,/area/security/detectives_office) "amN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/computer/med_data,/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/detectives_office) "amO" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/tracker,/turf/simulated/floor/plating/airless,/area/solar/auxstarboard) "amP" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/tracker,/turf/simulated/floor/plating/airless,/area/solar/auxport) -"amQ" = (/obj/machinery/washing_machine,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "bar"},/area/security/main) +"amQ" = (/obj/machinery/washing_machine,/turf/simulated/floor{icon_state = "bar"},/area/security/main) "amR" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/security/lobby) "amS" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plating,/area/security/prison) "amT" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/security/prison) @@ -898,7 +898,7 @@ "arn" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/security/hos) "aro" = (/obj/machinery/deployable/barrier,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/security/warden) "arp" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 1; icon_state = "chapel"},/area/chapel/main) -"arq" = (/obj/machinery/atmospherics/unary/vent_scrubber,/turf/simulated/floor{icon_state = "dark"},/area/security/tactical) +"arq" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/camera{c_tag = "Tactical Equipment"; dir = 4; network = list("SS13")},/turf/simulated/floor{icon_state = "dark"},/area/security/tactical) "arr" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table/reinforced,/obj/item/device/radio/off,/obj/item/weapon/crowbar,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/item/device/flashlight,/turf/simulated/floor{icon_state = "redfull"; dir = 9},/area/security/main) "ars" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/main) "art" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor,/area/security/main) @@ -1016,7 +1016,7 @@ "atB" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; external_pressure_bound = 100; on = 1; pressure_checks = 1},/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/security/tactical) "atC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "green"; dir = 8},/area/hydroponics) "atD" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/wood,/area/crew_quarters/bar) -"atE" = (/obj/machinery/door/airlock/highsecurity{name = "Tactical Equipment"; req_access_txt = "58"},/turf/simulated/floor{icon_state = "dark"},/area/security/tactical) +"atE" = (/obj/structure/filingcabinet/filingcabinet,/turf/simulated/floor{icon_state = "dark"},/area/security/brig) "atF" = (/turf/simulated/floor{icon_state = "dark"},/area/security/tactical) "atG" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/turf/simulated/floor/wood,/area/crew_quarters/bar) "atH" = (/turf/simulated/wall,/area/hallway/secondary/entry) @@ -1088,7 +1088,7 @@ "auV" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/window/reinforced{dir = 8},/obj/machinery/alarm{pixel_y = 22},/obj/machinery/camera{c_tag = "Hydroponics Pasture"},/obj/structure/flora/ausbushes/grassybush,/turf/simulated/floor/grass,/area/hydroponics) "auW" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "auX" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) -"auY" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/camera{c_tag = "Tactical Equipment"; dir = 4; network = list("SS13")},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor{icon_state = "dark"},/area/security/tactical) +"auY" = (/obj/structure/rack,/obj/item/clothing/suit/space/rig/security,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig/security,/obj/item/clothing/shoes/magboots,/obj/item/clothing/glasses/night,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva) "auZ" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor,/area/hallway/primary/central) "ava" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/primary/port) "avb" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/hallway/primary/port) @@ -1099,12 +1099,10 @@ "avg" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "dark"},/area/security/tactical) "avh" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/fitness) "avi" = (/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/fitness) -"avj" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall/r_wall,/area/security/tactical) "avk" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall,/area/maintenance/fpmaint2) "avl" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/wall,/area/chapel/office) "avm" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp{pixel_y = 10},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office) "avn" = (/obj/structure/table/woodentable,/obj/item/weapon/pen,/obj/item/weapon/reagent_containers/food/drinks/bottle/holywater,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office) -"avo" = (/obj/structure/closet/wardrobe/tactical,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/tactical) "avp" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/crema_switch{pixel_x = 25},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) "avq" = (/obj/machinery/camera{c_tag = "Holodeck"},/obj/machinery/alarm{pixel_y = 24},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor,/area/crew_quarters/fitness) "avr" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/crew_quarters/fitness) @@ -1317,7 +1315,6 @@ "azq" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/storage) "azr" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/table/reinforced,/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva) "azs" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/ai_monitored/storage/eva) -"azt" = (/obj/structure/rack,/obj/item/clothing/suit/space/rig/security,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig/security,/obj/item/clothing/shoes/magboots,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva) "azu" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/fore) "azv" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "neutralcorner"; dir = 2},/area/crew_quarters/sleep) "azw" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor,/area/hallway/primary/port) @@ -10926,14 +10923,14 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaafaaiabKaaPabIabJaaPabSabRabMabMabNaaPabOaaiaafaafaagaafaafabPabuabsabuabPaafaagaaaaaaaafaagaagaagaafaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaaaaacaacaacaacaacaaaaacaacaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaadaadaadaadaadaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaiabKaaPabIabQaaPabLabHaaaaaaaaaaaPabTabTabTabTabTaafaafabUabsabuabsabVaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaaaaacaacaacaacaacaaaaacaacaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaadaadaadaadaadaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaiamSaaPabXabYaaiamTamUaaiaaaaaaabTabTacbaccacdabTabTaafaaVabsabsabuaaVaceaceaceaceaceaceapRapRapRapRapRapRaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaagaaiamXachancamZaneandanfaaPaaaabTabTapeacoacoacoapVabTabTaaVacqabsacraaVaceacsactacuacvacwapRavoavoavoavoapRaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaiacxamvalBamuamnamkacDaaPaaaabTacEalbacGacoacHalaacJabTacKacLacMacNacOaceacsacPacQacRamdatEarqarLasvatBapRaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacTaaiaaiaaiaaiakAamIamDamCaaPaaPaaPaaPaaaabTacYalbacZacoacHalaadaabTadbadcaddadeadfaceacsactamJamKamQavjauYavgatFaurapRaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaagaaiamXachancamZaneandanfaaPaaaabTabTapeacoacoacoapVabTabTaaVacqabsacraaVaceacsactacuacvacwapRacQacQacQacQapRaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaiacxamvalBamuamnamkacDaaPaaaabTacEalbacGacoacHalaacJabTacKacLacMacNacOaceacsacPamJafiafiaframdarLasvatBapRaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacTaaiaaiaaiaaiakAamIamDamCaaPaaPaaPaaPaaaabTacYalbacZacoacHalaadaabTadbadcaddadeadfaceacsactamKacRamQapRarqavgatFaurapRaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacTadiadjadkadlaldalcaloalhaavadqadraaPaaaabTadsalbadtacoacHalaaduabTadvadwadxadyalGaceaceaceakSakWaceapRaqnaqPaqWarfapRaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacTadCadDadEadDalxalvalBalAadIadJadJaaPaaaabTabTalralsacoalKalUabTabTadOalVadxalWaaVaceadRadSalFalMadVadWadWalqarnadWadWaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacTadZaeaakdakcakbakaajZajYaaJaehaeiaaPaaaaaaabTaejajXacoajWaemabTaenaaVajVaepajUaaVaeraesaetajSajTaewaexaeyajRaeAaktadWadWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacTaaiaaiaaiaaiakAaeCakzakyaeFaeFaeFaeFaeFaeFabTabTakxaeHakIabTabTaeJakFakGaeMakHakEaePaeQaeRakBakCaeUakDaeWakwaeYaeZafaafbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcaaaaaaaaaafcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiafdafeaquafgaqvalAaeFafiafjafjafjafjaenaroaqwafmaqDafoaenafpakBafqafraqEaqGaqHaqFaqFaqJaqMafyaqIafAaqRafCafDafEafFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcaaaaaaaaaafcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiafdafeaquafgaqvalAaeFatEafjafjafjafjaenaroaqwafmaqDafoaenafpakBafqaiDaqEaqGaqHaqFaqFaqJaqMafyaqIafAaqRafCafDafEafFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcafcafcafcafcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiafGarSarUafJaloarVaeFafLafMafNafOafNafPafQarWafSaqXafUafVafWarjarlarrarsartaruarvarzarNarQaruarRarXarYagkaglagmadWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcaaaaaaafcaaaaaaafcafcafcafcafcafcafcaaaaaaafcaaaaaaafcaaaaaaaaaaaaaaaaaiagnaaxagoaoGaoFaoEaeFagsapkafNaoIagvaenagwaoHagyaplagAaenagBanAagDagEagFapnagHagIagJapmagJagHagLagMapoagOagPagQappaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcafcafcafcaaaafcafcafcafcafcafcafcafcafcaaaafcafcafcafcaaaaaaaaaaaaaaaaaiagSanbagUagVaqpalAaeFagXaqqagZaqragXabTahbagfahdafTahfaenagBanAagDahgapqapZaqoapUapUapTapUapWapXaqsaqtahqahqahrahsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -10966,7 +10963,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaasSatHawfawgasSatHawfawgasSatKawhatKatKatKatKatKawiaspaaaaaaalPalPalPaaaaaaaafaaaawjawkawjaafaafaafaafalPalPalPaafapxapxapxapxawlawmawmawmawmawmawmawmawnapxapxawoawpawqapxawrawsaNJawwawvaLDaLDaLDaLDaLDaJoaLDaJpaLDaJfaJfaJeaJeaJlaIYaJaaJnahmaIxaIAaIDaITaIvaHravdaIwawLawLbcxawMawNaVcawLauiawPawQaLQayMayMayMayMaMdaMmaMqawUasRasRasRasRasRawUawVawdaweaaaaaaaaaaafaafaaaaafaaaaaaawWaaaaaaaafaaaaaaaafaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawXawYawYawYawZaxaawYawYaxbaxcaxdaxbaxbaxbaxeatKaxfaspaaaaafaafaaaaaaaaaaaaaafaaaaxgaKhaKgaafaaaaafaaaaaaaaaaaaaaaapxapaapaaxjapaapaapaapaapaapaapaapaaxkaxlaxmaxnaxnaxnaxnaxnaxnaxoaJBaMMaxraxraxraxraxsaJAaxraMIaxraxsaxraxraxraxraxwaxxaxyaKdaKaaHxaJRaJRaJRaHrauhaJQawLawOawMaxCawMaVeaxEaWraxGaxHaMuaMmaMmaMmaMBaMEaMGaMHaJwasRasRasRasRasRaJxaJyaxNaxOaaaaaaaaaaaaaafaaaaafaaaaxPaxQaxPaaaaafaaaaaaaafaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxRaxSaxTaxUaxVaxTaxTaxWaxUaxTaxXaxYaxZaxZayaatKaxfatLaafaafaaaaaaaaaaaaaaaaafaybaycaydbdBayfaaaaafaaaaaaaaaaaaaaaapxapaapxaygayhayiayiayiayiayiayiayiayjaygaykaylaylaylaylaylaylaylaQnaynaxrayoaypayqayrbdCbbraPaaPdaywayxaypayyaxrayzapEayAalNaQvaNFaNIbdEaHqaHravdbdFayDaxFaxFayEayFayGbeDayIavVbdHbdcbbUbbUbbUbaNbaTaPnbavbdGasRasRasRasRasRbdIasPasPasPaaaaaaaaaaafaafaafaafaaaaySbdJaySaaaaafaaaaaaaafaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafatHayUayVayUayWaxTaxTayXayUayVayUayYaxSaxVayZatKaxfatKatKazaatOatOatOatOatPatKazbazcazdazeazbapxapxawoawpawqapxapxapxapaaryaygaaaaafaaaaafaaaaafaaaaafaaaaygaykaylazfazgazhaziazjaylaQnapaaxrazkazkazlazmaznazoaPpaBdazrazsaztaztaxrayzapEazualNaQvaNFaHybdEaHqaHrauhazvbbOazxazyazzazAazBazBazCazBasPbeXbfGbeFbeGbeHbeObeEasPbdLasRasRasRasRasRbdKasPaafaaaaaaaaaaaaaafaafaaaaafazLazMbdMazOazPaafaaaaaaaafaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafatHayUayVayUayWaxTaxTayXayUayVayUayYaxSaxVayZatKaxfatKatKazaatOatOatOatOatPatKazbazcazdazeazbapxapxawoawpawqapxapxapxapaaryaygaaaaafaaaaafaaaaafaaaaafaaaaygaykaylazfazgazhaziazjaylaQnapaaxrazkazkazlazmaznazoaPpaBdazrazsauYauYaxrayzapEazualNaQvaNFaHybdEaHqaHrauhazvbbOazxazyazzazAazBazBazCazBasPbeXbfGbeFbeGbeHbeObeEasPbdLasRasRasRasRasRbdKasPaafaaaaaaaaaaaaaafaafaaaaafazLazMbdMazOazPaafaaaaaaaafaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafazQasSazRavtazSazTazUazVazWazSavtazXazYasSazZaAaatKaAbaAcaAcaAcaAcaAcaAcavzbezaAeazbaAfaAgaAhazbbghapaapaapaapaapaapaapaapaaAjaygaafaAkaAkaAkaAkaAkaAkaAkaafaygaykaylaAlaAmaAnaAoaAlaylaQnaApaxraxraxraxraAqaAraypaAsaAraAtaxraxraxraxrayzapEaAualNaQvaNFaHybdEaHqaHravdaAvazBazBazBazBazBazBaAwaAxaAyazBasPasPasPasPbgobgrasPasPbdKasRasRasRasRasRbdKasPaaaaaaaaaaaeaaaaaaaaaaaaaafaAAaABbdTaADaAAaafaaaaaaaafaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxRayVaAEaAFaAFaAFaAFaAGayVaxRaAHasSaAIaAJaAKaAKaAKaAKaAKaAKaAKaAKawibfxbfzazbbckaANaAOazbaAPaAQaAPaAPaAPaAPaAPaAPaAPaAPaARaaaaAkaASaATaAUbbTaAWaAkaaaaygaykaylaAlaAXbewaAZaAlaylaQnapxaxraBaaBbazlaBcaBdazoazpaBdaBeazsaBfaBfaxrayzapEayAalNbdZaIkaIhbdEbejbelavdaAvazBaBiaAxaBjaBjazBaAwaBkaAyazBaBlaBmaBnaBobhDaULaBqaafbfBbfdbfdbfdbfdbfdbfgaafaaaaaaaaaaaaaaaaaaaaaaaaaafaAAaBuaBvaBwaAAaafaaaaaaaBqaBqaBqaBqaBqbhqbhCaBqaBqaBqaBqaBqaBqaBqbgHaBFaBFaBFaBGaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaBHaBIaBJaBIaBIaDRaDSaBIaBIaBJaBMaBNasSayWaBOaQlaDmasfaBSaBTaBUaBVaAKawiaPOatKazbazbaBXaBYaARaBZaCaaCbaCcaCdaCeaCfaCgaXEaCiaARaafaAkaQmaCkaClaCmaCnaAkaafaygaykaylaCoaCpaCqaCpaCraylaQnaCsaxrayoaypaCtaCuaAraCvaAsaAraCwaCxaypaCyaxrayzapEayAalNaQvaIAaIDaQxaIvaHraCAaCBazBaCCaAxaAxaAxazCaCDaCEaCFazBaCGaCHaCIaCJaYFaULaBqaaaaafaaaaafaaaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaAAaZbaCMaCNaAAaBqaCOaCPaBqaQSaQDaQDaQDaQDaQDaQDaQFaRdaRdaRdaRdaRfaRdaRdaRdaRhaDaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From 9638349fe2197ba1f377021eb10f577db0ae5e16 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Wed, 25 Jun 2014 16:48:20 +0930 Subject: [PATCH 069/304] Update distribution.dm --- code/modules/mining/drilling/distribution.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mining/drilling/distribution.dm b/code/modules/mining/drilling/distribution.dm index e0aec22db8..2ca9a3f685 100644 --- a/code/modules/mining/drilling/distribution.dm +++ b/code/modules/mining/drilling/distribution.dm @@ -195,7 +195,7 @@ Deep minerals: tx = origin_x ty += chunk_size - world << "" + world << "Resource map generation complete." return #undef MAP_CELL @@ -222,4 +222,4 @@ Deep minerals: #undef RESOURCE_MID_MAX #undef RESOURCE_MID_MIN #undef RESOURCE_LOW_MAX -#undef RESOURCE_LOW_MIN \ No newline at end of file +#undef RESOURCE_LOW_MIN From 30bf9302d686a6a4d8cce44af345af4db77597f4 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Wed, 25 Jun 2014 19:57:15 +0930 Subject: [PATCH 070/304] Update cat.dm --- code/modules/mob/living/simple_animal/friendly/cat.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm index 1fc3b8fe42..225290d91b 100644 --- a/code/modules/mob/living/simple_animal/friendly/cat.dm +++ b/code/modules/mob/living/simple_animal/friendly/cat.dm @@ -67,7 +67,6 @@ var/mob/living/carbon/H = over_object if(!istype(H)) return ..() - //This REALLY needs to be moved to a general mob proc somewhere. if(H.a_intent == "help") get_scooped(H) return From 493ecdeb9e1d5f5be9ecd56deca8848829dd0134 Mon Sep 17 00:00:00 2001 From: Loganbacca Date: Tue, 24 Jun 2014 18:26:37 +1200 Subject: [PATCH 071/304] Pipe fixes - Cleans up silent pipe deleting (now creates a loose pipe item where the pipe section was) - Allows pipe painters to paint disconnected pipes - Removes OOC message from IC feedback --- code/ATMOSPHERICS/pipes.dm | 34 +++++++++++++++--------- code/game/machinery/pipe/construction.dm | 2 +- 2 files changed, 23 insertions(+), 13 deletions(-) diff --git a/code/ATMOSPHERICS/pipes.dm b/code/ATMOSPHERICS/pipes.dm index c1fa2b0e9e..11daee64c3 100644 --- a/code/ATMOSPHERICS/pipes.dm +++ b/code/ATMOSPHERICS/pipes.dm @@ -220,15 +220,16 @@ obj/machinery/atmospherics/pipe/simple/pipeline_expansion() return list(node1, node2) obj/machinery/atmospherics/pipe/simple/update_icon() - if(node1&&node2) - switch(pipe_color) - if ("red") color = COLOR_RED - if ("blue") color = COLOR_BLUE - if ("cyan") color = COLOR_CYAN - if ("green") color = COLOR_GREEN - if ("yellow") color = "#FFCC00" - if ("purple") color = "#5C1EC0" - if ("grey") color = null + switch(pipe_color) + if ("red") color = COLOR_RED + if ("blue") color = COLOR_BLUE + if ("cyan") color = COLOR_CYAN + if ("green") color = COLOR_GREEN + if ("yellow") color = "#FFCC00" + if ("purple") color = "#5C1EC0" + if ("grey") color = null + + if(node1 && node2) icon_state = "intact[invisibility ? "-f" : "" ]" //var/node1_direction = get_dir(src, node1) @@ -237,8 +238,14 @@ obj/machinery/atmospherics/pipe/simple/update_icon() //dir = node1_direction|node2_direction else - if(!node1&&!node2) - del(src) //TODO: silent deleting looks weird + if(!node1 && !node2) + var/turf/T = get_turf(src) + new /obj/item/pipe(loc, make_from=src) + for (var/obj/machinery/meter/meter in T) + if (meter.target == src) + new /obj/item/pipe_meter(T) + del(meter) + del(src) var/have_node1 = node1?1:0 var/have_node2 = node2?1:0 icon_state = "exposed[have_node1][have_node2][invisibility ? "-f" : "" ]" @@ -265,6 +272,9 @@ obj/machinery/atmospherics/pipe/simple/initialize() node2 = target break + if(!node1 && !node2) + del(src) + return var/turf/T = src.loc // hide if turf is not intact hide(T.intact) @@ -1107,4 +1117,4 @@ obj/machinery/atmospherics/pipe/vent/hide(var/i) //to make the little pipe secti icon_state = "[i == 1 && istype(loc, /turf/simulated) ? "h" : "" ]intact" dir = get_dir(src, node1) else - icon_state = "exposed" + icon_state = "exposed" diff --git a/code/game/machinery/pipe/construction.dm b/code/game/machinery/pipe/construction.dm index c7829494aa..6c38715796 100644 --- a/code/game/machinery/pipe/construction.dm +++ b/code/game/machinery/pipe/construction.dm @@ -428,7 +428,7 @@ Buildable meters //P.level = T.intact ? 2 : 1 P.initialize() if (!P) - usr << "There's nothing to connect this junction to! (with how the pipe code works, at least one end needs to be connected to something, otherwise the game deletes the segment)" + usr << "There's nothing to connect this pipe to!" //(with how the pipe code works, at least one end needs to be connected to something, otherwise the game deletes the segment)" return 1 P.build_network() if (P.node1) From 4d4947021e6ab98e09284f991428011e740f45a8 Mon Sep 17 00:00:00 2001 From: Loganbacca Date: Tue, 24 Jun 2014 21:50:06 +1200 Subject: [PATCH 072/304] Atmos Overhaul - Phase 1 - Implements omni device core framework - Adds omni gas mixer --- baystation12.dme | 4 + .../components/omni_devices/_omni_extras.dm | 124 ++++++++ .../components/omni_devices/filter.dm | 16 + .../components/omni_devices/mixer.dm | 270 +++++++++++++++++ .../components/omni_devices/omni_base.dm | 281 ++++++++++++++++++ icons/obj/atmospherics/omni_devices.dmi | Bin 0 -> 11782 bytes nano/templates/omni_mixer.tmpl | 100 +++++++ 7 files changed, 795 insertions(+) create mode 100644 code/ATMOSPHERICS/components/omni_devices/_omni_extras.dm create mode 100644 code/ATMOSPHERICS/components/omni_devices/filter.dm create mode 100644 code/ATMOSPHERICS/components/omni_devices/mixer.dm create mode 100644 code/ATMOSPHERICS/components/omni_devices/omni_base.dm create mode 100644 icons/obj/atmospherics/omni_devices.dmi create mode 100644 nano/templates/omni_mixer.tmpl diff --git a/baystation12.dme b/baystation12.dme index 826854fbdc..3e231be70f 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -64,6 +64,10 @@ #include "code\ATMOSPHERICS\components\binary_devices\pipeturbine.dm" #include "code\ATMOSPHERICS\components\binary_devices\pump.dm" #include "code\ATMOSPHERICS\components\binary_devices\volume_pump.dm" +#include "code\ATMOSPHERICS\components\omni_devices\_omni_extras.dm" +#include "code\ATMOSPHERICS\components\omni_devices\filter.dm" +#include "code\ATMOSPHERICS\components\omni_devices\mixer.dm" +#include "code\ATMOSPHERICS\components\omni_devices\omni_base.dm" #include "code\ATMOSPHERICS\components\trinary_devices\filter.dm" #include "code\ATMOSPHERICS\components\trinary_devices\mixer.dm" #include "code\ATMOSPHERICS\components\trinary_devices\trinary_base.dm" diff --git a/code/ATMOSPHERICS/components/omni_devices/_omni_extras.dm b/code/ATMOSPHERICS/components/omni_devices/_omni_extras.dm new file mode 100644 index 0000000000..9082fc1bd0 --- /dev/null +++ b/code/ATMOSPHERICS/components/omni_devices/_omni_extras.dm @@ -0,0 +1,124 @@ +//-------------------------------------------- +// Omni device port types +//-------------------------------------------- +#define ATM_NONE 0 +#define ATM_INPUT 1 +#define ATM_OUTPUT 2 + +#define ATM_O2 3 +#define ATM_N2 4 +#define ATM_CO2 5 +#define ATM_P 6 //Phoron +#define ATM_N2O 7 + + +//-------------------------------------------- +// Omni device cached icon list +//-------------------------------------------- +var/global/list/omni_icons[] + +/proc/gen_omni_icons() + omni_icons = new() + var/icon/omni = new('icons/obj/atmospherics/omni_devices.dmi') + + for(var/state in omni.IconStates()) + if(!state) + continue + + var/image/I = image('icons/obj/atmospherics/omni_devices.dmi', icon_state = state) + + if(findtext(state, "pipe")) + for(var/pipe_color in pipe_colors) + I = image('icons/obj/atmospherics/omni_devices.dmi', icon_state = state) + I.color = pipe_colors[pipe_color] + var/cache_name = state + if(I.color) + cache_name += "_[pipe_colors[pipe_color]]" + omni_icons[cache_name] = I + else + omni_icons[state] = I + + +//-------------------------------------------- +// Omni port datum +// +// Used by omni devices to manage connections +// to other atmospheric objects. +//-------------------------------------------- +/datum/omni_port + var/obj/machinery/atmospherics/omni/master + var/dir + var/update = 1 + var/mode = 0 + var/concentration = 1 + var/con_lock = 0 + var/target_pressure = 0 + var/transfer_moles = 0 + var/datum/gas_mixture/air + var/obj/machinery/atmospherics/node + var/datum/pipe_network/network + +/datum/omni_port/New(var/obj/machinery/atmospherics/omni/M, var/direction = NORTH) + ..() + dir = direction + if(istype(M)) + master = M + air = new + air.volume = 200 + +/datum/omni_port/proc/connect() + if(node) + return + master.initialize() + master.build_network() + if(node) + node.initialize() + node.build_network() + +/datum/omni_port/proc/disconnect() + if(node) + node.disconnect(master) + master.disconnect(node) + + +//-------------------------------------------- +// Need to find somewhere else for these +//-------------------------------------------- + +#define PIPE_COLOR_RED "#ff0000" +#define PIPE_COLOR_BLUE "#0000ff" +#define PIPE_COLOR_CYAN "#00ffff" +#define PIPE_COLOR_GREEN "#00ff00" +#define PIPE_COLOR_YELLOW "#ffcc00" +#define PIPE_COLOR_PURPLE "#5c1ec0" + +var/global/list/pipe_colors = list("Grey" = null, "Red" = PIPE_COLOR_RED, "Blue" = PIPE_COLOR_BLUE, "Cyan" = PIPE_COLOR_CYAN, "Green" = PIPE_COLOR_GREEN, "Yellow" = PIPE_COLOR_YELLOW, "Purple" = PIPE_COLOR_PURPLE) + +/proc/dout(var/string) + world << "\blue DEBUG: [string]" + +/proc/dir_name(var/dir = 0) + switch(dir) + if(NORTH) + return "North" + if(SOUTH) + return "South" + if(EAST) + return "East" + if(WEST) + return "West" + else + return "None" + +/proc/dir_flag(var/dir = "None") + switch(dir) + if("North") + return NORTH + if("South") + return SOUTH + if("East") + return EAST + if("West") + return WEST + else + return 0 \ No newline at end of file diff --git a/code/ATMOSPHERICS/components/omni_devices/filter.dm b/code/ATMOSPHERICS/components/omni_devices/filter.dm new file mode 100644 index 0000000000..69e3d76bf5 --- /dev/null +++ b/code/ATMOSPHERICS/components/omni_devices/filter.dm @@ -0,0 +1,16 @@ +//-------------------------------------------- +// Gas filter - omni variant +//-------------------------------------------- +obj/machinery/atmospherics/omni/filter + name = "Omni gas filter" + icon = 'icons/obj/atmospherics/omni_devices.dmi' + icon_state = "" + + tag_north = ATM_OUTPUT + tag_south = ATM_INPUT + tag_east = ATM_O2 + tag_west = ATM_N2 + + var/list/filters = new() + var/datum/omni_port/input + var/datum/omni_port/output diff --git a/code/ATMOSPHERICS/components/omni_devices/mixer.dm b/code/ATMOSPHERICS/components/omni_devices/mixer.dm new file mode 100644 index 0000000000..368b8f2167 --- /dev/null +++ b/code/ATMOSPHERICS/components/omni_devices/mixer.dm @@ -0,0 +1,270 @@ +//-------------------------------------------- +// Gas mixer - omni variant +//-------------------------------------------- +/obj/machinery/atmospherics/omni/mixer + name = "Omni gas mixer" + icon = 'icons/obj/atmospherics/omni_devices.dmi' + + tag_north = ATM_OUTPUT + tag_south = ATM_INPUT + tag_east = ATM_INPUT + tag_west = ATM_INPUT + + var/list/inputs = new() + var/datum/omni_port/output + +/obj/machinery/atmospherics/omni/mixer/New() + ..() + icon_state = "base" + +/obj/machinery/atmospherics/omni/mixer/Del() + inputs.Cut() + output = null + ..() + +/obj/machinery/atmospherics/omni/mixer/sort_ports() + for(var/datum/omni_port/P in ports) + if(P.update) + if(output == P) + output = null + if(inputs.Find(P)) + inputs -= P + + P.air.volume = 200 + P.target_pressure = 0 + switch(P.mode) + if(ATM_INPUT) + inputs += P + if(ATM_OUTPUT) + output = P + + for(var/datum/omni_port/P in inputs) + P.concentration = 1 / inputs.len + + if(output) + output.air.volume *= 0.75 * inputs.len + output.target_pressure = target_pressure + output.concentration = 1 + + if(!output || inputs.len > 3 || inputs.len < 2) + config_error = 1 + else + config_error = 0 + +/obj/machinery/atmospherics/omni/mixer/process() + ..() + if(!on) + return 0 + + var/datum/gas_mixture/output_air = output.air + var/output_pressure = output_air.return_pressure() + + + if(output_pressure >= output.target_pressure * 0.999) + //No need to mix if target is already full! - 0.1% margin of error so we minimize processing minor gas volumes + return 1 + + //Calculate necessary moles to transfer using PV=nRT + + var/pressure_delta = output.target_pressure - output_pressure + + for(var/datum/omni_port/P in inputs) + if(P.air.return_temperature() > 0) + P.transfer_moles = (P.concentration * pressure_delta) * output_air.return_volume() / (P.air.return_temperature() * R_IDEAL_GAS_EQUATION) + + var/ratio_check = null + + for(var/datum/omni_port/P in inputs) + if(!P.transfer_moles) + return + if(P.air.total_moles() < P.transfer_moles) + ratio_check = 1 + continue + + if(ratio_check) + var/list/ratio_list = new() + for(var/datum/omni_port/P in inputs) + ratio_list.Add(P.air.total_moles() / P.transfer_moles) + + var/ratio = min(ratio_list) + + for(var/datum/omni_port/P in inputs) + P.transfer_moles *= ratio + + + + for(var/datum/omni_port/P in inputs) + if(P.transfer_moles > 0) + output_air.merge(P.air.remove(P.transfer_moles)) + + for(var/datum/omni_port/P in inputs) + if(P.network && P.transfer_moles) + P.network.update = 1 + + if(output.network) + output.network.update = 1 + + return 1 + + +/obj/machinery/atmospherics/omni/mixer/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null) + usr.set_machine(src) + + var/list/data = new() + + data = build_uidata() + + ui = nanomanager.try_update_ui(user, src, ui_key, ui, data) + + if (!ui) + ui = new(user, src, ui_key, "omni_mixer.tmpl", src.name, 360, 330) + ui.set_initial_data(data) + + ui.open() + +/obj/machinery/atmospherics/omni/mixer/proc/build_uidata() + var/list/data = new() + + data["power"] = on + data["config"] = configuring + + var/portData[0] + for(var/datum/omni_port/P in ports) + if(!configuring && P.mode == 0) + continue + + var/input = 0 + var/output = 0 + if(P.mode == ATM_INPUT) + input = 1 + else if(P.mode == ATM_OUTPUT) + output = 1 + + portData[++portData.len] = list("dir" = dir_name(P.dir), \ + "concentration" = P.concentration, \ + "input" = input, \ + "output" = output, \ + "pressure" = P.target_pressure, \ + "con_lock" = P.con_lock) + + if(portData.len) + data["ports"] = portData + if(output) + data["pressure"] = output.target_pressure + + return data + +/obj/machinery/atmospherics/omni/mixer/Topic(href,href_list) + if(..()) return + + switch(href_list["command"]) + if("power") + if(!configuring) + on = !on + else + on = 0 + if("configure") + configuring = !configuring + if(configuring) + on = 0 + + //only allows config changes when in configuring mode + if(configuring && !on) + switch(href_list["command"]) + if("set_pressure") + var/new_pressure = input(usr,"Enter new output pressure (0-4500kPa)","Pressure control",target_pressure) as num + target_pressure = between(0, new_pressure, 4500) // max(0, min(4500, new_pressure)) + output.target_pressure = target_pressure + if("switch_mode") + switch_mode(dir_flag(href_list["dir"]), href_list["mode"]) + if("switch_con") + change_concentration(dir_flag(href_list["dir"])) + if("switch_conlock") + con_lock(dir_flag(href_list["dir"])) + + update_icon() + nanomanager.update_uis(src) + return + +/obj/machinery/atmospherics/omni/mixer/proc/switch_mode(var/port = NORTH, var/mode = ATM_NONE) + switch(mode) + if("in") + mode = ATM_INPUT + if("out") + mode = ATM_OUTPUT + if("none") + mode = ATM_NONE + + for(var/datum/omni_port/P in ports) + var/old_mode = P.mode + if(P.dir == port) + switch(mode) + if(ATM_INPUT) + if(P.mode == ATM_OUTPUT) + return + P.mode = mode + if(ATM_OUTPUT) + P.mode = mode + if(ATM_NONE) + if(P.mode == ATM_OUTPUT) + return + if(P.mode == ATM_INPUT && inputs.len > 2) + P.mode = mode + else if(P.mode == ATM_OUTPUT && mode == ATM_OUTPUT) + P.mode = ATM_INPUT + if(P.mode != old_mode) + switch(P.mode) + if(ATM_NONE) + initialize_directions &= ~P.dir + P.disconnect() + if(ATM_INPUT) + initialize_directions |= P.dir + P.connect() + if(ATM_OUTPUT) + initialize_directions |= P.dir + P.connect() + + P.update = 1 + + update_ports() + +/obj/machinery/atmospherics/omni/mixer/proc/change_concentration(var/port = NORTH) + var/old_con = 0 + var/non_locked = 0 + var/remain_con = 1 + + for(var/datum/omni_port/P in inputs) + if(P.dir == port) + old_con = P.concentration + else if(!P.con_lock) + non_locked++ + else + remain_con -= P.concentration + + //return if no adjustable ports + if(non_locked < 1) + return + + var/new_con = (input(usr,"Enter a new concentration (0-[round(remain_con * 100, 0.5)])%","Concentration control", min(remain_con, old_con)*100) as num) / 100 + + //cap it between 0 and the max remaining concentration + new_con = between(0, new_con, remain_con) + + //new_con = min(remain_con, new_con) + + //clamp remaining concentration so we don't go into negatives + remain_con = max(0, remain_con - new_con) + + //distribute remaining concentration between unlocked ports evenly + remain_con /= max(1, non_locked) + + for(var/datum/omni_port/P in inputs) + if(P.dir == port) + P.concentration = new_con + else if(!P.con_lock) + P.concentration = remain_con + +/obj/machinery/atmospherics/omni/mixer/proc/con_lock(var/port = NORTH) + for(var/datum/omni_port/P in inputs) + if(P.dir == port) + P.con_lock = !P.con_lock \ No newline at end of file diff --git a/code/ATMOSPHERICS/components/omni_devices/omni_base.dm b/code/ATMOSPHERICS/components/omni_devices/omni_base.dm new file mode 100644 index 0000000000..635686a9a7 --- /dev/null +++ b/code/ATMOSPHERICS/components/omni_devices/omni_base.dm @@ -0,0 +1,281 @@ +//-------------------------------------------- +// Base omni device +//-------------------------------------------- +/obj/machinery/atmospherics/omni + icon_state = "" + dir = SOUTH + use_power = 1 + initialize_directions = 0 + + var/on = 0 + var/configuring = 0 + var/target_pressure = ONE_ATMOSPHERE + + var/icon/icon_on + var/icon/icon_off + var/icon/icon_error + + var/config_error = 0 + + var/tag_north = ATM_NONE + var/tag_south = ATM_NONE + var/tag_east = ATM_NONE + var/tag_west = ATM_NONE + + var/overlays_on[8] + var/overlays_off[8] + var/overlays_error[2] + var/underlays_current[8] + + var/list/ports = new() + +/obj/machinery/atmospherics/omni/New() + ..() + + ports = new() + + for(var/d in cardinal) + var/datum/omni_port/new_port = new(src, d) + switch(d) + if(NORTH) + new_port.mode = tag_north + if(SOUTH) + new_port.mode = tag_south + if(EAST) + new_port.mode = tag_east + if(WEST) + new_port.mode = tag_west + if(new_port.mode > 0) + initialize_directions |= d + ports += new_port + + build_icons() + +/obj/machinery/atmospherics/omni/mixer/update_icon() + if(stat & NOPOWER) + overlays = overlays_off + else if(config_error) + overlays = overlays_error + on = 0 + else if(inputs.len > 0 && output) + overlays = on ? (overlays_on) : (overlays_off) + else + overlays = overlays_off + on = 0 + + underlays = underlays_current + + return + +/obj/machinery/atmospherics/omni/power_change() + var/old_stat = stat + ..() + if(old_stat != stat) + update_icon() + +/obj/machinery/atmospherics/omni/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob) + if(istype(W, /obj/item/device/pipe_painter)) //for updating the color of connected pipe ends + for(var/datum/omni_port/P in ports) + P.update = 1 + update_ports() + return + + if(!istype(W, /obj/item/weapon/wrench)) + return ..() + var/turf/T = src.loc + if(level==1 && isturf(T) && T.intact) + user << "\red You must remove the plating first." + return 1 + var/datum/gas_mixture/int_air = return_air() + var/datum/gas_mixture/env_air = loc.return_air() + if((int_air.return_pressure()-env_air.return_pressure()) > 2*ONE_ATMOSPHERE) + user << "\red You cannot unwrench this [src], it too exerted due to internal pressure." + add_fingerprint(user) + return 1 + playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) + user << "\blue You begin to unfasten \the [src]..." + if(do_after(user, 40)) + user.visible_message( \ + "[user] unfastens \the [src].", \ + "\blue You have unfastened \the [src].", \ + "You hear ratchet.") + new /obj/item/pipe(loc, make_from=src) + del(src) + +/obj/machinery/atmospherics/omni/attack_hand(user as mob) + if(..()) + return + + src.add_fingerprint(usr) + ui_interact(user) + return + +/obj/machinery/atmospherics/omni/proc/build_icons() + if(!omni_icons) + gen_omni_icons() + + var/core_icon = null + if(istype(src, /obj/machinery/atmospherics/omni/mixer)) + core_icon = "mixer" + else if(istype(src, /obj/machinery/atmospherics/omni/filter)) + core_icon = "filter" + else + return + + //directional icons are layers 1,2,4,8, so the core icon is layer 3 + if(core_icon) + overlays_off[3] = omni_icons[core_icon] + overlays_on[3] = omni_icons[core_icon + "_glow"] + + overlays_error[1] = omni_icons[core_icon] + overlays_error[2] = omni_icons["error"] + + update_icon() + +/obj/machinery/atmospherics/omni/proc/update_port_icons() + for(var/datum/omni_port/P in ports) + if(P.update) + var/list/port_icons = select_port_icons(P) + if(port_icons) + if(P.node) + underlays_current[P.dir] = omni_icons[port_icons["pipe_icon"]] + else + underlays_current[P.dir] = null + overlays_off[P.dir] = omni_icons[port_icons["off_icon"]] + overlays_on[P.dir] = omni_icons[port_icons["on_icon"]] + else + underlays_current[P.dir] = null + overlays_off[P.dir] = null + overlays_on[P.dir] = null + + update_icon() + +/obj/machinery/atmospherics/omni/proc/select_port_icons(var/datum/omni_port/P) + if(!istype(P)) + return + + if(P.mode > 0) + var/ic_dir = null + switch(P.dir) + if(NORTH) + ic_dir = "north" + if(SOUTH) + ic_dir = "south" + if(EAST) + ic_dir = "east" + if(WEST) + ic_dir = "west" + + var/ic_on = null + var/ic_off = null + switch(P.mode) + if(ATM_INPUT) + ic_on = "_in_glow" + ic_off = "_in" + if(ATM_OUTPUT) + ic_on = "_out_glow" + ic_off = "_out" + if(ATM_O2 to ATM_N2O) + ic_on = "_filter" + ic_off = "_out" + + var/pipe_state = ic_dir + "_pipe" + if(P.node) + if(P.node.color) + pipe_state += "_[P.node.color]" + + return list("on_icon" = ic_dir + ic_on, "off_icon" = ic_dir + ic_off, "pipe_icon" = pipe_state) + +/obj/machinery/atmospherics/omni/proc/update_ports() + sort_ports() + update_port_icons() + for(var/datum/omni_port/P in ports) + P.update = 0 + +/obj/machinery/atmospherics/omni/proc/sort_ports() + return + + +// Housekeeping and pipe network stuff below + +/obj/machinery/atmospherics/omni/network_expand(datum/pipe_network/new_network, obj/machinery/atmospherics/pipe/reference) + for(var/datum/omni_port/P in ports) + if(reference == P.node) + P.network = new_network + break + + if(new_network.normal_members.Find(src)) + return 0 + + new_network.normal_members += src + + return null + +/obj/machinery/atmospherics/omni/Del() + loc = null + + for(var/datum/omni_port/P in ports) + if(P.node) + P.node.disconnect(src) + del(P.network) + P.node = null + + ..() + +/obj/machinery/atmospherics/omni/initialize() + for(var/datum/omni_port/P in ports) + if(P.node || P.mode == 0) + continue + for(var/obj/machinery/atmospherics/target in get_step(src, P.dir)) + if(target.initialize_directions & get_dir(target,src)) + P.node = target + break + + for(var/datum/omni_port/P in ports) + P.update = 1 + + update_ports() + +/obj/machinery/atmospherics/omni/build_network() + for(var/datum/omni_port/P in ports) + if(!P.network && P.node) + P.network = new /datum/pipe_network() + P.network.normal_members += src + P.network.build_network(P.node, src) + +/obj/machinery/atmospherics/omni/return_network(obj/machinery/atmospherics/reference) + build_network() + + for(var/datum/omni_port/P in ports) + if(reference == P.node) + return P.network + + return null + +/obj/machinery/atmospherics/omni/reassign_network(datum/pipe_network/old_network, datum/pipe_network/new_network) + for(var/datum/omni_port/P in ports) + if(P.network == old_network) + P.network = new_network + + return 1 + +/obj/machinery/atmospherics/omni/return_network_air(datum/pipe_network/reference) + var/list/results = list() + + for(var/datum/omni_port/P in ports) + if(P.network == reference) + results += P.air + + return results + +/obj/machinery/atmospherics/omni/disconnect(obj/machinery/atmospherics/reference) + for(var/datum/omni_port/P in ports) + if(reference == P.node) + del(P.network) + P.node = null + P.update = 1 + break + + update_ports() + + return null \ No newline at end of file diff --git a/icons/obj/atmospherics/omni_devices.dmi b/icons/obj/atmospherics/omni_devices.dmi new file mode 100644 index 0000000000000000000000000000000000000000..666b0279f524d463a8d6f5548eb5d6648cc47607 GIT binary patch literal 11782 zcmbt)cUV(zmu&(FNJj*uh9>xgBz7 zal_{Qw{-76N5Hf`$|WVIT$p|vjeO)_@5*ywDd*|>c36aUDfsJc|I^`+MRJ}*k#OHBh4!}M`%$M_3lUGbGuBsUPfd2>DM#L zM+q94*Y%K3yaINJ_-Bl1s0A!@6Z5jAx zbKc`I?_n5b_i$j#I}?8K=6%n;{P-NVbLQeB5{|_x0_{V^9IdpMK1R+7eX6n&xFM2r z8N0CY=G>3B5njU|B0Z61Wii>=*|VepdQNHO$`l!)F{a7KS{Y}K z)<%mLtq|CBzkF!G7H(2gB>*3Fk+5Fia#XFez*xLA8jOED`EuTjayWe

Gp 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 QzZ+zve?#x1&b`S012)g({r~^~ literal 0 HcmV?d00001 diff --git a/nano/templates/omni_mixer.tmpl b/nano/templates/omni_mixer.tmpl new file mode 100644 index 0000000000..4da662cfd1 --- /dev/null +++ b/nano/templates/omni_mixer.tmpl @@ -0,0 +1,100 @@ +

+
+ {{:~link(power ? 'On' : 'Off', null, {'command' : 'power'}, null, power ? 'selected' : 'redBackground')}} +
+
+ {{:~link('Configure', null, {'command' : 'configure'}, null, config ? 'selected' : null)}} +
+ + {{if config}} + +
+
+
Port
+ {{for ports}} +
{{:dir}} Port
+ {{/for}} +
+
+
Input
+ {{for ports}} +
+ {{:~link(' ', null, input ? {'command' : 'switch_mode', 'mode' : 'none', 'dir' : dir} : {'command' : 'switch_mode', 'mode' : 'in', 'dir' : dir}, output ? 'disabled' : null, input ? 'selected' : null)}} +
+ {{/for}} +
+
+
Output
+ {{for ports}} +
+ {{:~link(' ', null, output ? null : {'command' : 'switch_mode', 'mode' : 'out', 'dir' : dir}, null, output ? 'selected' : null)}} +
+ {{/for}} +
+
+
Concentration
+ {{for ports}} +
+ {{:~link( input ? ~round(concentration*100)+' %' : '-', null, {'command' : 'switch_con', 'dir' : dir}, input ? null : 'disabled')}} +
+ {{/for}} +
+
+
Lock
+ {{for ports}} +
+ {{:~link(' ', con_lock ? 'locked' : 'unlocked', {'command' : 'switch_conlock', 'dir' : dir}, input ? null : 'disabled', con_lock ? 'selected' : null)}} +
+ {{/for}} +
+
+ +
+ Target Output Pressure: {{:~round(pressure)}} kPa +
+
+ {{:~link('Set Target Pressure', null, {'command' : 'set_pressure'})}} +
+ + {{else}} + +
+
+
Port
+ {{for ports}} +
{{:dir}} Port
+ {{/for}} +
+
+
Mode
+ {{for ports}} +
+ {{if input}} + Input + {{else output}} + Output + {{else}} + Disabled + {{/if}} +
+ {{/for}} +
+
+
Concentration
+ {{for ports}} +
+ {{if input}} + {{:~round(concentration*100)}} % + {{else}} + - + {{/if}} +
+ {{/for}} +
+
+ +
+ Target Output Pressure: {{:~round(pressure)}} kPa +
+ {{/if}} +
\ No newline at end of file From 095ab7d97ce1ae55412add1ebe856dd4f9fe3651 Mon Sep 17 00:00:00 2001 From: Loganbacca Date: Wed, 25 Jun 2014 22:08:51 +1200 Subject: [PATCH 073/304] Added omni filters - Added omni gas filter - Cleaned up some code in mixer.dm and omni_base.dm --- .../components/omni_devices/_omni_extras.dm | 7 +- .../components/omni_devices/filter.dm | 274 +++++++++++++++++- .../components/omni_devices/mixer.dm | 71 ++--- .../components/omni_devices/omni_base.dm | 17 +- icons/obj/atmospherics/omni_devices.dmi | Bin 11782 -> 11975 bytes nano/templates/omni_filter.tmpl | 82 ++++++ 6 files changed, 395 insertions(+), 56 deletions(-) create mode 100644 nano/templates/omni_filter.tmpl diff --git a/code/ATMOSPHERICS/components/omni_devices/_omni_extras.dm b/code/ATMOSPHERICS/components/omni_devices/_omni_extras.dm index 9082fc1bd0..ba64adc61e 100644 --- a/code/ATMOSPHERICS/components/omni_devices/_omni_extras.dm +++ b/code/ATMOSPHERICS/components/omni_devices/_omni_extras.dm @@ -11,7 +11,6 @@ #define ATM_P 6 //Phoron #define ATM_N2O 7 - //-------------------------------------------- // Omni device cached icon list //-------------------------------------------- @@ -52,7 +51,6 @@ var/global/list/omni_icons[] var/mode = 0 var/concentration = 1 var/con_lock = 0 - var/target_pressure = 0 var/transfer_moles = 0 var/datum/gas_mixture/air var/obj/machinery/atmospherics/node @@ -92,10 +90,7 @@ var/global/list/omni_icons[] #define PIPE_COLOR_YELLOW "#ffcc00" #define PIPE_COLOR_PURPLE "#5c1ec0" -var/global/list/pipe_colors = list("Grey" = null, "Red" = PIPE_COLOR_RED, "Blue" = PIPE_COLOR_BLUE, "Cyan" = PIPE_COLOR_CYAN, "Green" = PIPE_COLOR_GREEN, "Yellow" = PIPE_COLOR_YELLOW, "Purple" = PIPE_COLOR_PURPLE) - -/proc/dout(var/string) - world << "\blue DEBUG: [string]" +var/global/list/pipe_colors = list("grey" = null, "red" = PIPE_COLOR_RED, "blue" = PIPE_COLOR_BLUE, "cyan" = PIPE_COLOR_CYAN, "green" = PIPE_COLOR_GREEN, "yellow" = PIPE_COLOR_YELLOW, "purple" = PIPE_COLOR_PURPLE) /proc/dir_name(var/dir = 0) switch(dir) diff --git a/code/ATMOSPHERICS/components/omni_devices/filter.dm b/code/ATMOSPHERICS/components/omni_devices/filter.dm index 69e3d76bf5..ff558a13e9 100644 --- a/code/ATMOSPHERICS/components/omni_devices/filter.dm +++ b/code/ATMOSPHERICS/components/omni_devices/filter.dm @@ -1,7 +1,7 @@ //-------------------------------------------- // Gas filter - omni variant //-------------------------------------------- -obj/machinery/atmospherics/omni/filter +/obj/machinery/atmospherics/omni/filter name = "Omni gas filter" icon = 'icons/obj/atmospherics/omni_devices.dmi' icon_state = "" @@ -14,3 +14,275 @@ obj/machinery/atmospherics/omni/filter var/list/filters = new() var/datum/omni_port/input var/datum/omni_port/output + +/obj/machinery/atmospherics/omni/filter/Del() + input = null + output = null + filters.Cut() + ..() + +/obj/machinery/atmospherics/omni/filter/sort_ports() + for(var/datum/omni_port/P in ports) + if(P.update) + if(output == P) + output = null + if(input == P) + input = null + if(filters.Find(P)) + filters -= P + + P.air.volume = 200 + switch(P.mode) + if(ATM_INPUT) + input = P + if(ATM_OUTPUT) + output = P + if(ATM_O2 to ATM_N2O) + filters += P + +/obj/machinery/atmospherics/omni/filter/error_check() + if(!input || !output || !filters) + return 1 + if(filters.len < 1 || filters.len > 2) //requires 1 or 2 filters ~otherwise why are you using a filter? + return 1 + + return 0 + +/obj/machinery/atmospherics/omni/filter/process() + ..() + if(!on) + return 0 + + if(!input || !output) + return + + var/datum/gas_mixture/output_air = output.air //BYOND doesn't like referencing "output.air.return_pressure()" so we need to make a direct reference + var/datum/gas_mixture/input_air = input.air // it's completely happy with them if they're in a loop though i.e. "P.air.return_pressure()"... *shrug* + + var/output_pressure = output_air.return_pressure() + + if(output_pressure >= target_pressure) + return + for(var/datum/omni_port/P in filters) + if(P.air.return_pressure() >= target_pressure) + return + + var/pressure_delta = target_pressure - output_pressure + + if(input_air.return_temperature() > 0) + input.transfer_moles = pressure_delta * output_air.volume / (input_air.return_temperature() * R_IDEAL_GAS_EQUATION) + + if(input.transfer_moles > 0) + var/datum/gas_mixture/removed = input_air.remove(input.transfer_moles) + + if(!removed) + return + + for(var/datum/omni_port/P in filters) + var/datum/gas_mixture/filtered_out = new + filtered_out.temperature = removed.return_temperature() + + switch(P.mode) + if(ATM_O2) + filtered_out.oxygen = removed.oxygen + removed.oxygen = 0 + if(ATM_N2) + filtered_out.nitrogen = removed.nitrogen + removed.nitrogen = 0 + if(ATM_CO2) + filtered_out.carbon_dioxide = removed.carbon_dioxide + removed.carbon_dioxide = 0 + if(ATM_P) + filtered_out.phoron = removed.phoron + removed.phoron = 0 + if(ATM_N2O) + if(removed.trace_gases.len>0) + for(var/datum/gas/sleeping_agent/trace_gas in removed.trace_gases) + if(istype(trace_gas)) + removed.trace_gases -= trace_gas + filtered_out.trace_gases += trace_gas + else + filtered_out = null + + P.air.merge(filtered_out) + if(P.network) + P.network.update = 1 + + output_air.merge(removed) + if(output.network) + output.network.update = 1 + + input.transfer_moles = 0 + if(input.network) + input.network.update = 1 + + return + +/obj/machinery/atmospherics/omni/filter/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null) + usr.set_machine(src) + + var/list/data = new() + + data = build_uidata() + + ui = nanomanager.try_update_ui(user, src, ui_key, ui, data) + + if (!ui) + ui = new(user, src, ui_key, "omni_filter.tmpl", name, 330, 330) + ui.set_initial_data(data) + + ui.open() + +/obj/machinery/atmospherics/omni/filter/proc/build_uidata() + var/list/data = new() + + data["power"] = on + data["config"] = configuring + + var/portData[0] + for(var/datum/omni_port/P in ports) + if(!configuring && P.mode == 0) + continue + + var/input = 0 + var/output = 0 + var/filter = 1 + var/f_type = null + switch(P.mode) + if(ATM_INPUT) + input = 1 + filter = 0 + if(ATM_OUTPUT) + output = 1 + filter = 0 + if(ATM_O2 to ATM_N2O) + f_type = mode_send_switch(P.mode) + + portData[++portData.len] = list("dir" = dir_name(P.dir), \ + "input" = input, \ + "output" = output, \ + "filter" = filter, \ + "f_type" = f_type) + + if(portData.len) + data["ports"] = portData + if(output) + data["pressure"] = target_pressure + + return data + +/obj/machinery/atmospherics/omni/filter/proc/mode_send_switch(var/mode = ATM_NONE) + switch(mode) + if(ATM_O2) + return "Oxygen" + if(ATM_N2) + return "Nitrogen" + if(ATM_CO2) + return "Carbon Dioxide" + if(ATM_P) + return "Phoron" //*cough* Plasma *cough* + if(ATM_N2O) + return "Nitrous Oxide" + else + return null + +/obj/machinery/atmospherics/omni/filter/Topic(href, href_list) + if(..()) return + switch(href_list["command"]) + if("power") + if(!configuring) + on = !on + else + on = 0 + if("configure") + configuring = !configuring + if(configuring) + on = 0 + + //only allows config changes when in configuring mode ~otherwise you'll get weird pressure stuff going on + if(configuring && !on) + switch(href_list["command"]) + if("set_pressure") + var/new_pressure = input(usr,"Enter new output pressure (0-4500kPa)","Pressure control",target_pressure) as num + target_pressure = between(0, new_pressure, 4500) + if("switch_mode") + switch_mode(dir_flag(href_list["dir"]), mode_return_switch(href_list["mode"])) + if("switch_filter") + var/new_filter = input(usr,"Select filter mode:","Change filter",href_list["mode"]) in list("None", "Oxygen", "Nitrogen", "Carbon Dioxide", "Phoron", "Nitrous Oxide") + switch_filter(dir_flag(href_list["dir"]), mode_return_switch(new_filter)) + + update_icon() + nanomanager.update_uis(src) + return + +/obj/machinery/atmospherics/omni/filter/proc/mode_return_switch(var/mode) + switch(mode) + if("Oxygen") + return ATM_O2 + if("Nitrogen") + return ATM_N2 + if("Carbon Dioxide") + return ATM_CO2 + if("Phoron") + return ATM_P + if("Nitrous Oxide") + return ATM_N2O + if("in") + return ATM_INPUT + if("out") + return ATM_OUTPUT + if("None") + return ATM_NONE + else + return null + +/obj/machinery/atmospherics/omni/filter/proc/switch_filter(var/dir, var/mode) + //check they aren't trying to disable the input or output ~this can only happen if they hack the cached tmpl file + for(var/datum/omni_port/P in ports) + if(P.dir == dir) + if(P.mode == ATM_INPUT || P.mode == ATM_OUTPUT) + return + + switch_mode(dir, mode) + +/obj/machinery/atmospherics/omni/filter/proc/switch_mode(var/port, var/mode) + if(mode == null || !port) + return + var/datum/omni_port/target_port = null + var/list/other_ports = new() + + for(var/datum/omni_port/P in ports) + if(P.dir == port) + target_port = P + else + other_ports += P + + var/previous_mode = null + if(target_port) + previous_mode = target_port.mode + target_port.mode = mode + if(target_port.mode != previous_mode) + handle_port_change(target_port) + else + return + else + return + + for(var/datum/omni_port/P in other_ports) + if(P.mode == mode) + var/old_mode = P.mode + P.mode = previous_mode + if(P.mode != old_mode) + handle_port_change(P) + + update_ports() + +/obj/machinery/atmospherics/omni/filter/proc/handle_port_change(var/datum/omni_port/P) + switch(P.mode) + if(ATM_NONE) + initialize_directions &= ~P.dir + P.disconnect() + else + initialize_directions |= P.dir + P.connect() + P.update = 1 \ No newline at end of file diff --git a/code/ATMOSPHERICS/components/omni_devices/mixer.dm b/code/ATMOSPHERICS/components/omni_devices/mixer.dm index 368b8f2167..45d208fbb1 100644 --- a/code/ATMOSPHERICS/components/omni_devices/mixer.dm +++ b/code/ATMOSPHERICS/components/omni_devices/mixer.dm @@ -13,10 +13,6 @@ var/list/inputs = new() var/datum/omni_port/output -/obj/machinery/atmospherics/omni/mixer/New() - ..() - icon_state = "base" - /obj/machinery/atmospherics/omni/mixer/Del() inputs.Cut() output = null @@ -31,7 +27,6 @@ inputs -= P P.air.volume = 200 - P.target_pressure = 0 switch(P.mode) if(ATM_INPUT) inputs += P @@ -43,13 +38,15 @@ if(output) output.air.volume *= 0.75 * inputs.len - output.target_pressure = target_pressure output.concentration = 1 - if(!output || inputs.len > 3 || inputs.len < 2) - config_error = 1 - else - config_error = 0 +/obj/machinery/atmospherics/omni/mixer/error_check() + if(!output || !inputs) + return 1 + if(inputs.len < 2 || inputs.len > 3) //requires 2 or 3 inputs ~otherwise why are you using a mixer? + return 1 + + return 0 /obj/machinery/atmospherics/omni/mixer/process() ..() @@ -60,13 +57,13 @@ var/output_pressure = output_air.return_pressure() - if(output_pressure >= output.target_pressure * 0.999) + if(output_pressure >= target_pressure * 0.999) //No need to mix if target is already full! - 0.1% margin of error so we minimize processing minor gas volumes return 1 //Calculate necessary moles to transfer using PV=nRT - var/pressure_delta = output.target_pressure - output_pressure + var/pressure_delta = target_pressure - output_pressure for(var/datum/omni_port/P in inputs) if(P.air.return_temperature() > 0) @@ -96,17 +93,15 @@ for(var/datum/omni_port/P in inputs) if(P.transfer_moles > 0) output_air.merge(P.air.remove(P.transfer_moles)) - - for(var/datum/omni_port/P in inputs) - if(P.network && P.transfer_moles) - P.network.update = 1 + if(P.network) + P.network.update = 1 + P.transfer_moles = 0 if(output.network) output.network.update = 1 return 1 - /obj/machinery/atmospherics/omni/mixer/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null) usr.set_machine(src) @@ -117,7 +112,7 @@ ui = nanomanager.try_update_ui(user, src, ui_key, ui, data) if (!ui) - ui = new(user, src, ui_key, "omni_mixer.tmpl", src.name, 360, 330) + ui = new(user, src, ui_key, "omni_mixer.tmpl", name, 360, 330) ui.set_initial_data(data) ui.open() @@ -135,26 +130,26 @@ var/input = 0 var/output = 0 - if(P.mode == ATM_INPUT) - input = 1 - else if(P.mode == ATM_OUTPUT) - output = 1 + switch(P.mode) + if(ATM_INPUT) + input = 1 + if(ATM_OUTPUT) + output = 1 portData[++portData.len] = list("dir" = dir_name(P.dir), \ "concentration" = P.concentration, \ "input" = input, \ "output" = output, \ - "pressure" = P.target_pressure, \ "con_lock" = P.con_lock) if(portData.len) data["ports"] = portData if(output) - data["pressure"] = output.target_pressure + data["pressure"] = target_pressure return data -/obj/machinery/atmospherics/omni/mixer/Topic(href,href_list) +/obj/machinery/atmospherics/omni/mixer/Topic(href, href_list) if(..()) return switch(href_list["command"]) @@ -168,13 +163,12 @@ if(configuring) on = 0 - //only allows config changes when in configuring mode + //only allows config changes when in configuring mode ~otherwise you'll get weird pressure stuff going on if(configuring && !on) switch(href_list["command"]) if("set_pressure") var/new_pressure = input(usr,"Enter new output pressure (0-4500kPa)","Pressure control",target_pressure) as num - target_pressure = between(0, new_pressure, 4500) // max(0, min(4500, new_pressure)) - output.target_pressure = target_pressure + target_pressure = between(0, new_pressure, 4500) if("switch_mode") switch_mode(dir_flag(href_list["dir"]), href_list["mode"]) if("switch_con") @@ -187,13 +181,14 @@ return /obj/machinery/atmospherics/omni/mixer/proc/switch_mode(var/port = NORTH, var/mode = ATM_NONE) - switch(mode) - if("in") - mode = ATM_INPUT - if("out") - mode = ATM_OUTPUT - if("none") - mode = ATM_NONE + if(mode != ATM_INPUT && mode != ATM_OUTPUT) + switch(mode) + if("in") + mode = ATM_INPUT + if("out") + mode = ATM_OUTPUT + else + mode = ATM_NONE for(var/datum/omni_port/P in ports) var/old_mode = P.mode @@ -217,13 +212,9 @@ if(ATM_NONE) initialize_directions &= ~P.dir P.disconnect() - if(ATM_INPUT) + else initialize_directions |= P.dir P.connect() - if(ATM_OUTPUT) - initialize_directions |= P.dir - P.connect() - P.update = 1 update_ports() diff --git a/code/ATMOSPHERICS/components/omni_devices/omni_base.dm b/code/ATMOSPHERICS/components/omni_devices/omni_base.dm index 635686a9a7..2fe89e72ad 100644 --- a/code/ATMOSPHERICS/components/omni_devices/omni_base.dm +++ b/code/ATMOSPHERICS/components/omni_devices/omni_base.dm @@ -15,8 +15,6 @@ var/icon/icon_off var/icon/icon_error - var/config_error = 0 - var/tag_north = ATM_NONE var/tag_south = ATM_NONE var/tag_east = ATM_NONE @@ -31,9 +29,9 @@ /obj/machinery/atmospherics/omni/New() ..() + icon_state = "base" ports = new() - for(var/d in cardinal) var/datum/omni_port/new_port = new(src, d) switch(d) @@ -51,22 +49,23 @@ build_icons() -/obj/machinery/atmospherics/omni/mixer/update_icon() +/obj/machinery/atmospherics/omni/update_icon() if(stat & NOPOWER) overlays = overlays_off - else if(config_error) + on = 0 + else if(error_check()) overlays = overlays_error on = 0 - else if(inputs.len > 0 && output) - overlays = on ? (overlays_on) : (overlays_off) else - overlays = overlays_off - on = 0 + overlays = on ? (overlays_on) : (overlays_off) underlays = underlays_current return +/obj/machinery/atmospherics/omni/proc/error_check() + return + /obj/machinery/atmospherics/omni/power_change() var/old_stat = stat ..() diff --git a/icons/obj/atmospherics/omni_devices.dmi b/icons/obj/atmospherics/omni_devices.dmi index 666b0279f524d463a8d6f5548eb5d6648cc47607..8b566f57669ac1b90f9ab51282149adf1d6fa08f 100644 GIT binary patch literal 11975 zcmbt)1yq!6yYA3PBLWgq5=w|7NHYjSScIae#E7DVq;$?8QX*0U0@8vgDcwU#cjwRp z(hM~)4Cg`j-v77GI%l1K@3R)M=AHNHJFe@xpCBDA4O%L8DhLEZdrK2`9|9ptKK-R6 z2TxXS6g~kT7~J(9JHlQ%ym(__=V)PT1A(}H$@$c7Q-75~ZFo=r!?R#v&C1;jsviYN zxN@#USa`(w(F}i-nTfF_$N8R192#=61$#G`Vam8# zM!4#tszb}Wj!y07=u6!eeQy*$*(b#F&B&p@kCeSLjG=0!y(>8yHzsrNQ8DHY%y)aw* z9qVsm5CZp~+qEU#iF85uNAV>>hn3Em@`_ zJXq!;&3!JhIuUp-Q zHVKqphp(?<$SAWW1#oQZbOIR$;k;B9UUz{GBPr{d+*-lo>`*2OP58oCu8`d{O3dkR!Dj-h4bFHcDV5_ z?z&l5KH|h%X*)br)B~UBv0lE`onyw4ja7p^Z7Lwv(W=ZkR8qN|(CB_cE<@XgHJwvHrKWBWN6 zOiszY&M@%xtI`CLr&&baODO>|_Op%FBsaz(Xg5p(2VpA4*xlm6r~xk=#-B4}_%8nu zNfnsft5>fcdFJZUZmN5Cy`pM<)E<-5%(1iRA9;N3q{Jb^qJ!1qUB#n1F>562p68X2 zP=|vSMs*GKvhDRs2Y4F!%|q0V{A6|6*Rj z`tjaldX`j7zzbo>5U$h z&@bFkjpyt9I+kUZ0;Sd>Do|utg#;`U!}b$Yb`)&VJa~t2eD+Tq7*$eqrW=EpoH}<` zCw}@~+@CC6?6Vr>?8YvBl>0d0!mTVLCsDud;{#()9O^(XDEIokVW~$1aZ%$AlggAA z;9Q834*iW>tKga|AvkQ+166F^Nob-!H{(aHGHCfeS`HJeKU*>ZwghfZxxPCLr%07e#3UiS zN8kE_Gwx8lvAxsp;BfPzHdJxnt7gNtOh~WY_R}swVa0Rw>5uk!lCt~$cI0itbzbx; za%Mag++DD4CP{bMBBvTn!$+$`)tmLyp4*X0Un)<4y$lwQtxfJvy_jGACi@2MrEr4B zLRKd$T_&??qZe&|O;vlGdQ6-!%DDIXs#*qwcB3 zO?G6T{Z=LQ1WmRr9pe)|a&hN24j%onI)8D^(zHC=QObWQi1%OBio@xv>u^!Zy)V4)%m+*MRZ#1kbR`5oY8cdNXEI}~ znENPi_oX<1qv0w)jjC|e?H}7OSAMQrKgI-0su+=(Tae)K*zO0H&LNk+rWKP>&{`r@ zpIzygjvxo-#V2NxPF$2rF5^$`e#N8s^_d*UxG&Wn`xydo*jIsUJ>+j2Yw2RY# zx^!)p5zPkhu~jq*F}m#as6x;6Iwm;qYr@SU8uy0=3iI(5 zun8;k@jX`|(}cn9O1>nLbKQJ)&}r*^y~_L8{h&XIAZhrz_g!G1mEyf8$g%Np*2#_E zza_>%52KkGqRLXScVBfbpg})UQcgrv4Pkc$UsSV!k3<|5oDGkFt%x@|r|W|8l9Wz| z6O41G)Plj{VyMCbtpYJ_GwEAf(Z`gqtP?^=G6>-uB_7Xe-I?yX8av+FY0&tn>_{s$ z3IP%RNsONcA?8=JL9WoWn=$Z3;@YJa%0x`>Z4~071>@VmY=ayMi0;KIk7vmXS4!`T zz;X^MrQf?N^A*_CY{>UiG-5I&Tcjx*0!K%(r^KW?l5?lkIx{jTRy z($NG4vZ%F;-Rajhu+hq1uiQ`)j-raX?N?HAW2MuA9SlAQt+&f!O(A2NH*lAq8@RhM z{D^hGZrI;{nng=_NV1=CR^`Ei2fQ${7JE*m{qpYg5{jLU>)krv_3StUZl@C~Yin!& z_8wNZC^_~_U(4wnEPDHA4nfBVRmJ47_&9&wvJLP3O33^h**UQwv`Y;(;bo}TRxn(0 zBw{f?f6LO}q>N01a5{QH-;n@EOe0}nTh&gy=70}!lYzmXH#dID&*#O97s1{rgHoIC zkinE#_T8sxGe_QGbUywZQ;Y6zu^uXMBoP_ut*oXN3v5w8{XALa=Foc#jy6qYC^Hko9Ee5RXQhIz78cPH}bFJ{IF~>d>iR5F_tmFT1q8R1xlCZWHlMjnE5k zWWBF=Mr9_nJ{(W*FX)1YoJ?C_HgUEL8jNEDoMF;3OSNgTu5h7u@;unF?L1*G$i#}> zOLBjakT1bMyWk~?y4^1rPwM(_?N_aCr(NuB!qwz~fz-U6W}zgYYTKJs;L%RX2l z?F-Wn815>k5Jz6C)*QkGHm9SK z)@sG}D#0*Jmi^ zh&9lamylvB7U}Q*^UbaPSOyp@I$w#&$I1IX`y-@fcDIpff;iu@$z+i18t7pY<{WC*N^z+c?%32E_fAvpp8lHqbsf8T?(=hS?itKVkTPg zyd?y_%(%K*Yg>5r39`hdW%uT~bSPeR+&1kf(r*bj^O*|x$(yO~DVu!TY_ zLqi^lt|p2uET2r(Uc58}GdpMYrM(wh`P>qpgT;ugx*4)_YgY+9PedhS>@7SMwi0zN zVvDJ?OoOv>7208ugs3&0ku!DOue%XzRxK|AZgaow;5Ur*nYn#Y|0_8DvU}hB7rhBf zK1ZX9SHqSjBEeKUF`*wMt!qGrG%y_aym2PwG0}U5yCg2eoKV*75njw(?_3krs>Q(@ z^A$XE>2h5^-H0T?fDgT&=IJ}z-{J`(W*qX=|4IvVx_rlp9F@b!N@*tEO$(X^Z~7HL zZwze`KLh8Xr%$h$rT8h&v(gipsf#iUVs~?)$~7XxR4)xByypTBvbIXQVjO=|Qp_i? zQ{_~|Ge{9Xn!L9lf|f(r$dfBl(3SVB)E`}N6?&IN1fr)r(_5pOukF^`l!FMgkT`M9?rwT@Y6e_k+fisz9G`{WK4;kb(Cw(a*^7OePsxM;3fYnU7iawM z+uOgJCjQa$h#nE(HdT^JTsJIVd_o%nP#FJnnX3m73U#Z1?RZHz%rxzW9+HL24GxYP zuW5)Y0q=xNAJm{yYk#6_g3QL6t*7S2;4F(QF7!>#5jo*W!s-(!%|D_nhj zwFVAiundlMCB~F4u+p3QI|sRUcbt~nS;K#UJS>;sWFki$;PCqoPMx#6Cot-s`PuZ>O8TuFN%|H7$S?qLcGnvpTTcaaAG_ zm#1c>{K|`HvX+xNN6e{oLMzHngvI}km7(L71)0NE22Q5=yQtmgEeRV%eG=48iIkH| zh8x&%Omnv>`h6mr`N5oR0<;?>DL}}$k-a4QLdK*WSVeKp3v5B#8tP|lNu!byJ;fTL z<&5Z3t|LF5edm!Rr!4+X+aju8)dca^?&Fg$5{s{f??# z0q+pzc_HYc^T8iz!~T}({{e9RVY&YoG-MQEaKGtLbQC0kPMBFkv|b=P!6ZPf`Vat| zd-HNPPoHa&X~s?A7b+0(exBrl*L#>%eiA3V{4Yc5yzKzM;3-bw)Ei5gATb)Rnb5{q`=mDcW<<428Y%u6o)T zB0DlC`X%X>_Gvig9S3Y1`tk_%hhEtCqlI$udMrHX{R`dLeE0rONq4=AZ@Q#>_RCf1 zaMlP>LhRt=r=}0eHy8O`!iruzf~%s2CseV|MHaX)1~3h`T*ZNz|^h$p+-o zNF!buWKuo8rT*8{U-N~QWQ)auUQlC^5-UUk;YmNZbV4w0CcFC*D<#6vSiJcgR9*!n zIg46YaoP}U6Zaz4rHWurndc)%k z;b-o0>!@$+JFrXXFxe!EIg|i$9Vx+R?nISSR5v--E@(U&migF#N_`lSlNw>`K8|d?L_ty!n)w48We5Rsr=|l-|Z3 zgxDmncirf%-vK<=&*;B;R(5~GGt6E2^(MLEx4k@OtXlM`E_Q*9=$WG_X*X80Kq%QW z7;i*(jpJB`b)?FeyPA#&XF>NwC$Z)s z&YrW_JGAX?Ei61Os?)^jOKMX}Bnbj#uT@v3O5JM$TkiMX+;F&Z7xSzDqQxb_mZ`@h zYExwNBa31{I7=~=)h(1{zIF|n&nj^o=7pWvD33|W5^>)`#2d*-Mn~fxmaYthtpQg; z^BtjDEK^h8=rb_Kc8Hmyh}L(PZaBP7qiA}~l05cqc-@C6{?Gmp=-2t|M0gG`oZU|CvGWGX$-8~+gij=1T!l%XOo1cEwNim&5w zVI45da%DH`)^;fGGJZ)_FLZI*E1@?aTOv>FI8F$~WVed)pIkAr8KJ?omtY2Zwuhm0 z&z~itpC6$#tIx`_e%WPw9D(Z%KI|0jA-ZY1VKl@P@ zKFHM>iTeB>+-RiwWC$l#dJ@d9ku@EiZ|n!~5MRVOFFNy}C9B*Rkub6P9ZBG`mS+ow zr3=T>o@}eZB2u|}gcrME`7Sdfm36TUR^Zue262(Udd{Bt5I`4Ye_3$nAGZAe1=nHD zY3R&C$>6}2SJ_8aBiP~Z%T6=LbX83CgOIM@d=`9s_e-6alX2~8k^gW^(io9mW<@pN zn0f26JhpZ{LGQI?>2I=Ht@zn#IC40ug>JOL;K146c&t2rXE)@xEUGtFH%i{6)l%h* z=R|#6*B?v6bPJZ`*Zn1`(j0r&yZ5W2L0(*Zr2jK;(aYGGCy8hqa5Qlu1^b>E;Fa@( zOIx1g#?CBPbOM8203Vj|Byd1l;lkr`XlyF}qQ+ARI4lk==Ppvoc}XVBo(GR3!Kl{G z0GCWc&Czl}BfUi2z4iH;%z$-4J^ zk@1E9gEw-CHM1~=OAS`j$j1%4b@?rG-esw6RTU(OqI#z`^2aCdoKmqNfRc6e^wz0T z`6B-XF1{ZG2DZ3ozi!>}WQ@C1xA3G)f@xAK^Ym#&_K}`~lpO1qz{fvr5ZT!N=MA7A zehb|O=xV;}jv#X8>M5X1x>3RD8z||A^V9K?9T_A){!>usF1JTOrsSX@APk$f8&px1 z{_pGyUv!@+BIBjk6}bhWSm-GS>(x*mtKc1`C`T)7(_5oL*0ujt3y4h$E+E1I$)+Iv zp$GGobA>&RkawlaydeE#0ZZNnyzYtq`#^Q*zY7paSKq~ruO7s0r7b|kPokc$EkCGr zGbRlf6-7F1ZC&qLSi+TcsaYgIZ7sSlF8>G7io3sNH31p)lIcy;S`dnX8@WXX2_B1# zr{pueO&U%_fD}6eQtTmb%U$)Pdz`tFZ`9(P2=B-B6gi+s;Fg+)$F@3vYxRAy6jIJf zjFR8tr3d|ROD%e+TzZ7$BkiwEfHZgec@jPjL%9@8Sg1Fkff~(8ZgP-g5HUK0?HC~&T`A&e4lK85ulcFsE+)!5Zri^O!F&O=&YR& z&2dq93U!R}?bX`!7#gFU{$FGg3he#gw*V}8o=jYH<`z8YKJEr?YC5@ri}O`$L`s6f z_@#dB+AKJ3a37(TXl-h47A@+*j;02(kW=Nygd#71dJIfYLL;eq$Om&N-GG>aoY(fx z#G7LCX3vJDt0X?DXxV(gd9Z@UU9Wjqvq{CgO=^lWzl#9;<&JB!mU`X^`j|m<3KXFp zji0C9d-ZbikDzHrGdq2h6GHeqG z8>YQ$-#G3>oj7vyLM^Coht2KR90pYiji~zteg3GPgJs=JQh4fBjW~a$CW!`%e>4H+ z#ue7`lyjPj_rj<0E*j?Cxos{wM{>1HyM&dFo|~~E*UmveP2}^EgEF7fCOO3gPl@@~ zUaiDiRP(JmU+bM;m8pgE2`D@-7cB&3AkG1jv)=2Z5?fV9^it5)_9qnZ7)Si1Mx( z{~@CckYU3g4QB4SG^pAYGfhA2Zi{mTq)(i$?+5!J;WtlO1bZ>ifUUA~G<`Qo zLJ}lZ+XhF}Q0YW&R^1FR;Uu@m@vzxMERbKBBz4qTv=;urc=hgijZ*;k)%es{ojbF) z9(sG>;z%r6c&`TDN#uM`bp59E6~((fo#)o(TdxIjj1Q!NLr?g@@cvl9ona&;XuyxJ4 z`})#O;}0P-G|Iz8`oJ_NGF}K_;3q<%Dt)K8kb3PT!kB~WZC1_(7r^4a33&_K9%t+> zN2X|UJkUGPezzF~M8lX4OHb}eL}CRiSB>Xp!A_Ki+#z#3l?mD z`K(S#BdLIb@ajcVQ9q#C$~`3;=KtX!%o}j2Up-u8!ZgAn*DmtLd(KpvclMptr#p9O zPMLeA)2nMy_lsrsJAMxD(_#h1UjPS~$$#FQ_@7$3`O+?Ou`8kq+4>|dWE<2Svd5WL z@cfdiRwMuLe&XJjU*LlC;Rkt4FHS|^X<9lth4&y(=gt<;m)&e(R-t3$?~7(Tt!$9B zV977|+n;Y-@HH*F6>VU8iD~wJMu@~wCPRNy+n?ITk7~LAYSYgGca)<=>DKg?k~_xr z&R=}?xo7`{dG`lwWC>0-nc;k+fcD4BW991f(j!_y)}NMV$=$jl$T+(VrqZnr!6t-i z*vs6B=9s_SuNGuI@l1Yr$>hEB_B?2pn*js_lXziehX&)Ymv4zT`cz|;3aYlmu2eON zR_iU9a>(L;p@0^jWi$LUvUedXPl=*G{}LwnRoapzczt z*&f=5^J-97&zHSzPm?5&6?VaWPUdx+<(kA-7kpJ=_lro+qH*xvZMXxNn#}_c)f8qL>HA zVaU@?LuTmyd10-5PRne4Z*F2%kvIbf{p4vYIow^ z`{S4XZI4T+kJ;v$Pz~sXvYq=GNi@*ozIf=Ytv&=*#iJ} z&OyEa$6F@yu1MD;j!!M)^MdfEHkwL&bC~*7`2|&2`OeZ7^t;2g0zq+hDE65wEH?l9yeJDwf+OB53B+(?PHkN58 zkWtbohd6W6n$|UgIx?}!J6Vh|8FuG&ds7sNAzwS!8ZN-28ctPORxcWGX-?96IT>WP zuK^hPidEh_PykQ9sU%8Val7s45NvSn^8NQ&`zE0J(z%c1eD(p!Cs0w=bR)OFlV3JB z{N;O_QxCr;^|u5Q3Q~c@YGT?K(}f?yG}2X#y7@hrve*UR|g$F^{hd5!A#Pv_86EK-M~bS+NGdy^+y zYpYV9oiG87eNl*UYak6C0co(bmcXq~h$CzH4+OW$b^hw|kO#P3@bN>D72#=iX`a(| z0PBuIE-Me3&U!5jF}G!=N;rZ$uitecw1HbfGoU83c8VaQN5P#P)EXb@#z^bShhnYI z=iR2Z@uYC86@0PeQP;32PIqHYRyxisR#aJ=;?p=UewYctz1?Frt^^sjt>0r?60I}3 zc~L(NlzS?ShC)EP30^(1U(73~(o#&$86_#0%6-(9*Hvwr+DcH7?{HK(P#-ujgOWBG zgjJG#n*LK-mRta(qCagxwgYWtNik5j0a?5Yw9)cIFSz*!ZY_z$qaun{Jv(C&B$Q}Z z{3tR&$$+3daIoK@V~sbFSv&?_KrIPOQ>^+#`UX6SWf|C&P5 z7_&4)0tm_WH%<-T9-O{rLh7J-@Hp;IS_@bIAIsaPCdg>+1<1M?{ zZQv|Wa}BM%nqAvwyXMJg@gZY{=phF;YYPK&56yJ$z@^J@9AANxROiC^AG95PznaO2 zlWFvRoY2q7us`yC4c3@4$jU1@&hUkL9;u+iV;Lx1OQS=2d+?}DA5>%P?_DD;H62NZ zIFfkPj-x#eX4(gjipjsvG+YDY;Rk{IeQKX8)|XMm*#6{LcV)WXUR$CiUQ6UbV^@OS zMoiE?lp2neCqDpN4UM8a3c@4HNY2>3qMnMjO4$Po8-qgO3oB8=E|1nCS(wLbL2aBNI1y zE>kC2$30DwI(5PHDD)Wa^_GI|x*0I|e2-^5y$@a6v^Bi5#8pP#keT}pYL)-aX_%Eo zTGyTs>Uz`g%dL?lwX~_NOH{fI4@|r@Gu8)nPZznnsUTitj{gKIFwDt0Pmq?h+Fa&& z1nyLOLKrS>W=uG9OgFCqU-jrrS<~A=-4%046gm~hcgu2@cpywRSv|z(%6aG30@ngu zh(mKIO1C;mz)~-lh-q;A`R>-(W(SA3*U|Wf-UjQB?woSD+oziqx4VuWoQd^kmR~4! z_KvfzfHd{c=7QbwxsuF!Fz2hSP)Glf>jK4C;M4@$^sC()*-ACEWt(#;yzBUO)CByP zFc$u%di)!Hs0;q-9O#AWuyP&ORPVedn7DpMo#$E? zvh);&h1{X&4c`_K!H>|Ny{FX;Ss15nxCD+j=BZ4tp+n`dS9;#Q7vegWq)pqc#((<8 zrC(=i!_522h*!z>NDwrezG)h`;F%e8j<=C@M8%%G9#Wea?`j_Sdw=ca*85A~Qo!l0 zr(#6@p5-?`cK{JoX?dH-z z2dD(HJJxI$*ixnhDu5G-mb~;(rWX6m`q)*NpfoLna{YaoFh@d<=jshOi_vQCYw_1O zJ#+SMZ2fO^Xse~rf;0liF`XCr*}Ic?*)84Zr=wiZezv=>T3*s^fy|>oM~$;8oPyS1C_ehaa=l` z5revPx-ZU+gRw;5{8w_ONGvmCd7h2_&Xl;8>wLckfMun7!z5=JZ&9B{92m`CspStc c-#Q_3adfnxjtIR3E~rCpscFG-Ri3^5Uv7Csvj6}9 literal 11782 zcmbt)cUV(zmu&(FNJj*uh9>xgBz7 zal_{Qw{-76N5Hf`$|WVIT$p|vjeO)_@5*ywDd*|>c36aUDfsJc|I^`+MRJ}*k#OHBh4!}M`%$M_3lUGbGuBsUPfd2>DM#L zM+q94*Y%K3yaINJ_-Bl1s0A!@6Z5jAx zbKc`I?_n5b_i$j#I}?8K=6%n;{P-NVbLQeB5{|_x0_{V^9IdpMK1R+7eX6n&xFM2r z8N0CY=G>3B5njU|B0Z61Wii>=*|VepdQNHO$`l!)F{a7KS{Y}K z)<%mLtq|CBzkF!G7H(2gB>*3Fk+5Fia#XFez*xLA8jOED`EuTjayWe

Gp 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 QzZ+zve?#x1&b`S012)g({r~^~ diff --git a/nano/templates/omni_filter.tmpl b/nano/templates/omni_filter.tmpl new file mode 100644 index 0000000000..e1e805f1dd --- /dev/null +++ b/nano/templates/omni_filter.tmpl @@ -0,0 +1,82 @@ +

+
+ {{:~link(power ? 'On' : 'Off', null, {'command' : 'power'}, null, power ? 'selected' : 'redBackground')}} +
+
+ {{:~link('Configure', null, {'command' : 'configure'}, null, config ? 'selected' : null)}} +
+ + {{if config}} + +
+
+
Port
+ {{for ports}} +
{{:dir}} Port
+ {{/for}} +
+
+
Input
+ {{for ports}} +
+ {{:~link(' ', null, {'command' : 'switch_mode', 'mode' : 'in', 'dir' : dir}, null, input ? 'selected' : null)}} +
+ {{/for}} +
+
+
Output
+ {{for ports}} +
+ {{:~link(' ', null, {'command' : 'switch_mode', 'mode' : 'out', 'dir' : dir}, null, output ? 'selected' : null)}} +
+ {{/for}} +
+
+
Filter
+ {{for ports}} +
+ {{:~link(f_type ? f_type : 'None', null, {'command' : 'switch_filter', 'mode' : f_type, 'dir' : dir}, filter ? null : 'disabled', f_type ? 'selected' : null)}} +
+ {{/for}} +
+
+ +
+ Target Output Pressure: {{:~round(pressure)}} kPa +
+
+ {{:~link('Set Target Pressure', null, {'command' : 'set_pressure'})}} +
+ + {{else}} + +
+
+
Port
+ {{for ports}} +
{{:dir}} Port
+ {{/for}} +
+
+
Mode
+ {{for ports}} +
+ {{if input}} + Input + {{else output}} + Output + {{else f_type}} + {{:f_type}} + {{else}} + Disabled + {{/if}} +
+ {{/for}} +
+
+ +
+ Target Output Pressure: {{:~round(pressure)}} kPa +
+ {{/if}} +
\ No newline at end of file From 71ff9f76716f35b31da60a8721c7f1d2345fabae Mon Sep 17 00:00:00 2001 From: Loganbacca Date: Wed, 25 Jun 2014 23:13:35 +1200 Subject: [PATCH 074/304] Add omni devices to dispenser - Added omni filters and mixers to pipe dispenser - Added construction code - A couple more cosmetic tweaks --- .../components/omni_devices/filter.dm | 9 ++---- .../components/omni_devices/mixer.dm | 9 ++---- .../components/omni_devices/omni_base.dm | 16 +++-------- code/game/machinery/pipe/construction.dm | 26 ++++++++++++++++-- code/game/machinery/pipe/pipe_dispenser.dm | 2 ++ icons/obj/pipe-item.dmi | Bin 24070 -> 24792 bytes 6 files changed, 34 insertions(+), 28 deletions(-) diff --git a/code/ATMOSPHERICS/components/omni_devices/filter.dm b/code/ATMOSPHERICS/components/omni_devices/filter.dm index ff558a13e9..49d6cd0d53 100644 --- a/code/ATMOSPHERICS/components/omni_devices/filter.dm +++ b/code/ATMOSPHERICS/components/omni_devices/filter.dm @@ -2,15 +2,10 @@ // Gas filter - omni variant //-------------------------------------------- /obj/machinery/atmospherics/omni/filter - name = "Omni gas filter" + name = "omni gas filter" icon = 'icons/obj/atmospherics/omni_devices.dmi' icon_state = "" - tag_north = ATM_OUTPUT - tag_south = ATM_INPUT - tag_east = ATM_O2 - tag_west = ATM_N2 - var/list/filters = new() var/datum/omni_port/input var/datum/omni_port/output @@ -128,7 +123,7 @@ ui = nanomanager.try_update_ui(user, src, ui_key, ui, data) if (!ui) - ui = new(user, src, ui_key, "omni_filter.tmpl", name, 330, 330) + ui = new(user, src, ui_key, "omni_filter.tmpl", "Omni Filter Control", 330, 330) ui.set_initial_data(data) ui.open() diff --git a/code/ATMOSPHERICS/components/omni_devices/mixer.dm b/code/ATMOSPHERICS/components/omni_devices/mixer.dm index 45d208fbb1..4c3fb13561 100644 --- a/code/ATMOSPHERICS/components/omni_devices/mixer.dm +++ b/code/ATMOSPHERICS/components/omni_devices/mixer.dm @@ -2,14 +2,9 @@ // Gas mixer - omni variant //-------------------------------------------- /obj/machinery/atmospherics/omni/mixer - name = "Omni gas mixer" + name = "omni gas mixer" icon = 'icons/obj/atmospherics/omni_devices.dmi' - tag_north = ATM_OUTPUT - tag_south = ATM_INPUT - tag_east = ATM_INPUT - tag_west = ATM_INPUT - var/list/inputs = new() var/datum/omni_port/output @@ -112,7 +107,7 @@ ui = nanomanager.try_update_ui(user, src, ui_key, ui, data) if (!ui) - ui = new(user, src, ui_key, "omni_mixer.tmpl", name, 360, 330) + ui = new(user, src, ui_key, "omni_mixer.tmpl", "Omni Mixer Control", 360, 330) ui.set_initial_data(data) ui.open() diff --git a/code/ATMOSPHERICS/components/omni_devices/omni_base.dm b/code/ATMOSPHERICS/components/omni_devices/omni_base.dm index 2fe89e72ad..79056c1ed5 100644 --- a/code/ATMOSPHERICS/components/omni_devices/omni_base.dm +++ b/code/ATMOSPHERICS/components/omni_devices/omni_base.dm @@ -2,6 +2,7 @@ // Base omni device //-------------------------------------------- /obj/machinery/atmospherics/omni + name = "omni device" icon_state = "" dir = SOUTH use_power = 1 @@ -81,23 +82,14 @@ if(!istype(W, /obj/item/weapon/wrench)) return ..() - var/turf/T = src.loc - if(level==1 && isturf(T) && T.intact) - user << "\red You must remove the plating first." - return 1 - var/datum/gas_mixture/int_air = return_air() - var/datum/gas_mixture/env_air = loc.return_air() - if((int_air.return_pressure()-env_air.return_pressure()) > 2*ONE_ATMOSPHERE) - user << "\red You cannot unwrench this [src], it too exerted due to internal pressure." - add_fingerprint(user) - return 1 - playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) + user << "\blue You begin to unfasten \the [src]..." + playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) if(do_after(user, 40)) user.visible_message( \ "[user] unfastens \the [src].", \ "\blue You have unfastened \the [src].", \ - "You hear ratchet.") + "You hear a ratchet.") new /obj/item/pipe(loc, make_from=src) del(src) diff --git a/code/game/machinery/pipe/construction.dm b/code/game/machinery/pipe/construction.dm index 6c38715796..864e893dc9 100644 --- a/code/game/machinery/pipe/construction.dm +++ b/code/game/machinery/pipe/construction.dm @@ -30,6 +30,8 @@ Buildable meters #define PIPE_GAS_FILTER_M 23 #define PIPE_GAS_MIXER_T 24 #define PIPE_GAS_MIXER_M 25 +#define PIPE_OMNI_MIXER 26 +#define PIPE_OMNI_FILTER 27 /obj/item/pipe name = "pipe" @@ -98,6 +100,10 @@ Buildable meters src.pipe_type = PIPE_MANIFOLD4W else if(istype(make_from, /obj/machinery/atmospherics/pipe/cap)) src.pipe_type = PIPE_CAP + else if(istype(make_from, /obj/machinery/atmospherics/omni/mixer)) + src.pipe_type = PIPE_OMNI_MIXER + else if(istype(make_from, /obj/machinery/atmospherics/omni/filter)) + src.pipe_type = PIPE_OMNI_FILTER ///// Z-Level stuff else if(istype(make_from, /obj/machinery/atmospherics/pipe/zpipe/up)) src.pipe_type = PIPE_UP @@ -144,6 +150,8 @@ Buildable meters "gas filter m", \ "gas mixer t", \ "gas mixer m", \ + "omni mixer", \ + "omni filter" ) name = nlist[pipe_type+1] + " fitting" var/list/islist = list( \ @@ -175,6 +183,8 @@ Buildable meters "m_filter", \ "t_mixer", \ "m_mixer", \ + "omni_mixer", \ + "omni_filter" ) icon_state = islist[pipe_type + 1] @@ -239,7 +249,7 @@ Buildable meters return dir //dir|acw if(PIPE_CONNECTOR,PIPE_UVENT,PIPE_SCRUBBER,PIPE_HEAT_EXCHANGE) return dir - if(PIPE_MANIFOLD4W) + if(PIPE_MANIFOLD4W, PIPE_OMNI_MIXER, PIPE_OMNI_FILTER) return dir|flip|cw|acw if(PIPE_MANIFOLD) return flip|cw|acw @@ -304,7 +314,7 @@ Buildable meters dir = 1 else if(dir==8) dir = 4 - else if (pipe_type == PIPE_MANIFOLD4W) + else if (pipe_type in list(PIPE_MANIFOLD4W, PIPE_OMNI_MIXER, PIPE_OMNI_FILTER)) dir = 2 var/pipe_dir = get_pipe_dir() @@ -732,6 +742,18 @@ Buildable meters P.node2.initialize() P.node2.build_network() ///// Z-Level stuff + if(PIPE_OMNI_MIXER) + var/obj/machinery/atmospherics/omni/mixer/P = new(loc) + var/turf/T = P.loc + P.level = T.intact ? 2 : 1 + P.initialize() + P.build_network() + if(PIPE_OMNI_FILTER) + var/obj/machinery/atmospherics/omni/filter/P = new(loc) + var/turf/T = P.loc + P.level = T.intact ? 2 : 1 + P.initialize() + P.build_network() playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) user.visible_message( \ diff --git a/code/game/machinery/pipe/pipe_dispenser.dm b/code/game/machinery/pipe/pipe_dispenser.dm index 558f54118c..c8b6962458 100644 --- a/code/game/machinery/pipe/pipe_dispenser.dm +++ b/code/game/machinery/pipe/pipe_dispenser.dm @@ -38,6 +38,8 @@
Gas Mixer
Gas Mixer-Mirrored
Gas Mixer-T
+Omni Gas Mixer
+Omni Gas Filter
Heat exchange:
Pipe
Bent Pipe
diff --git a/icons/obj/pipe-item.dmi b/icons/obj/pipe-item.dmi index 65a10a3055feed99f00c46fe07fed7c3a1ed2ee5..b364598bee074eec604971d7af576d4ced990909 100644 GIT binary patch literal 24792 zcmZ7e1yodT)IE;hVQ8dNI;13(6zMJnK^jRxN>W66Xb==pN%Wn=a_ zrr4bbt;yOwO|p%cKxz!1`2%hHcN5L0SnH?F_o+xR2zea#7@oUj#JsXu*mx!+Fl@Uz zpk&d9%~M2D|8r4Qh~+0bk9eW=`$_Xa3Sm9r-cIzrA?I+t`evSQr-B%d-|we1o8y`U z*QdX#cN(fm?~dQ5AZ8^!ItV|kSk|sdav_7i>7Ltq?N}JWZAq)XPa9Oc>?(Myn?do7 zgk0PgMnRDxT<9$F3s3pM>?~d*>jFb+@dxR+00c2YD)KVV-=%Cfd%q*oNkt+{T2?;(N`EXH z`0N25`VhJ^)%5lH9AzLkN5x+|wojj6M@DTib1%o}mR1HtZvE!eG&C8ZJVrHT5fKp(A}`G^>6tq*zW(bplBw8)gi20MPN=96dH?=>eQ14m zSJA-WtGTUn++N7a-FNpjMc_wV29C-jD}r}>a*=RH+WQNbznXlI^~WUb-k z=6=}~bvGzSEy3b&`8NkQx8Th!7dXhSks5_M_$To}XwHwFx0M>=2k6s|B897{lTz!T zsh3Ud?0YqP<*;sUYjcpjrx3*9@2vm_|Gy*8arOrXi4Y6)`Q&Ie)xNl_6caVg?{yBn zt0qLyo=BJ_Kl!_nR6Z#gLZVh=(46w@e_qhR{Z+x8@|1myREVZ<2X$)t{9V~gA4&c@ z@YcD~S6-RFBtv8~Y!tpgMjL2l;N#$zpBbz74i|c@D-DL>)u=;vCG^P!rpL#-^GW72 zGMMhMu?3nJ9e5hOPLs`uBIs_zFLWp*F*6&-*iUG^#^6m*8xU0Z;ENkVaw8}#{P5Wr z+?opWX&xyU_4v*OL-45xg`$rgLOqgSMJ%RH?+ZWYNG870IYR_2IP-H2^|t7^sccVH zM@FDu*$s&yrJp>(&suXYvKY=*DcIChyU|DzRN3H6GN|-=q{K9W#|6IIsWl;6{*1lw;PQ-#8ME2yZc17{qudMm;sBjFwV zbuLSoRG|y>WX!kOl>HUlRG~6XPJE8_D-^q8a&mHJ1{A`{_~6O@)s6A>;a7oI%uF&E~AEjz8SdVwuBOcOWn$cRJEbOEm@rzdE)y zHqv;XZU_9`K!-$W3GNUOVA3ufUDVyQTLxcs@6FDd@P2!m_r;$7{9Uuj`Hi32jy;or z04XJ(N#{aGn9jGknHhX2|NHl6?zbI;Qc-{YsQVoLW-sX1QvB)-u+^K1SI3|@B4lBj!SWo4!A;_^Vv>;1A&^f5meKd@vkudd81C(J4*0_llv z5k#)3{EAo0_VsKC`uMM#8>={Y^9`7_*{PAr+0H8ip-V+9cDIH|!*T=~ur5=&7-2nIz3zE5DT1TU%ED&r5q;IcN^zf&`+nK5ffz zIW4WvNq>d@dr?x79%9bCR-sl-;vi#{&ml|<7Be^@?zg)tC&00d3_fJHCBm!B(rhP= zlQcV=e8kV6ZXcNW)31nBWkq9H`o%M{Y9fX*a+{GU9|nNPYbJmEOX+cz5W%>rU_E2eC9Wgt#y^x_&Zy@Fh-Wiq!ix0+FAl0Vm)MH6hxWrgo!@xN>Sli9`xt(cL zHi0;tS#is!Nb8+Aec#w*ty7xg{YQ?|b)8&#CC8s*5V`|lv|IaQeUZBPkTx?(bXP}w zT-=5$U9UTh#x|w3D8SE;fMXHNw*|n>qxD!MV}{S=RmHLyB}_L1(>3qNfB0la?8x}Av#aM9 zSd>inl0p*ZAv1$Nx%59S4Tqm@7d9(q;|tIGqkkcd@UAqBg+O|HdKjH3saodDpno#(@-ILa&qYHePY4`^+^Ne{M@1|=(vTHM|!DAo0 zLk)*R1;YZRqFP2uO3JK~5`qLiQ{7`t5n7`4;a>zj-$x1R2(J`;&6lMxgnm~bdUoj+}P`Q=c?aO2w@+&ZO@ zu6yk4S$TQvi_|jE`u28bvQx|VEumuOO`o>wS;~6M^#16=Q{$Finaz`Fj&Sb)r^r3m zPfJ&<9DS|&9ZEGy?-`6Wn4kH?Y8e{hGCG$9g7~hWfT5O4{MymcTCdoUyo>>1Yn$*m zLD9=gOziPvmjQ`0Mky(VM~@zfx-6n^Zf!jSd2QBhKmvSw@Yq(IRc&r=C=Aiw-d=Y4 zf|qjm?_ZaN_K;6k5jW@O?;QIbpy|yAAR651XtS=&XlO`^z-1_lty8JL7dxr<8R^W6 zmF4wAOTwgOE+JcGS12x(#o;{I-NMT9DKWc<2qj2rcRHNSjldapc6O#8fdBLx-f%+B zT?bfSsZ_wFKYrDpQr0CTB(yN`D(&ax$yQ8EOh8qYAS7*QNd55PL+6EdjG`Bf6a!L7 z@x!AdtEt`H-FSB&uryFpB{JtjYO%4hm(Y+3!aWI<0_qw%7uc;B9|A7_C zaNE)%xqCK0&uC|7S2x$b^dYybj9>a3WPkm51!H4cs?Z-FXha4_MuJC1p6|XhtMd~O z5O`qTjxGppCEmypXPn_j)?A4SlE^=4#VkWEtg!bOeEpEzReXGeCfJW+q!E`8P)xjb3YuzL%w4S zHKA~?q3P);gGy^o0=Qe_jHv&ucv5n*`;+Le>!as_f`aHxmuT}Q{=dr$b&D*?u@ZxQPean9u*pf2?L!Plf@mF)9WBpBvzSP~Nwy10#MqE_&v{6Ev> z{f)T2^{X@H_1XV{1tE%!YTui1P5Uva`nDO>I0TGsDfs$IfHi;`W#h)T_y9{lZ3>p# z)Aic%H!m9BDufXxM$^t^8Jm`oFxYU+l@1LNw!cyKMSt$aQ@yr%LM%93UV&Ajw^Zpg zCmH%@F?ade_v-Wkh{&Ur#IdSjn%8}y*yYBms;c93kKdv@kSfM?vlf7jDXRUQ{sH3- zo-Pd**YVBaz*1yu44hQ9o;IAwh#cz)zZi9UQ~;(=(Qd$2h}MD7du5d{U9gc3wkrpi zg@nkvq8Zk_X6?e?G4L~(r)<>h=s4_5#mQufS}4_u>MvfcM1GvwvBvW&d-(G5Sg~g% zz2-Ld5^-@Qhadg`O(3*J@u9Vdq!x(zMcI{=q+4SE>DphI-4&8FdvG3@w;J?mdhFGA zWh^dC`tXaU>VB(?Qy+m~N`5~r%6fg)|4kP~zqU@8K^)MKI3YvL@6;NX;>ZO;j%k}X z>hyy-(qzb1}ughsZYWX$J}%7{NL@v*Vl7lts&c^jny zCEAagT?R8t_+j+!lo2Nyl4ub-ZuQ2ntZ&_A2H&@Aor`RPQ4A-G7B1%)X^ye*!Yha?MK8)_laM3F-4j(aj~+B(mk1Az3A$7kYh8^{O)|8+v@^*Rpdv+GtGmH za2eg7s~*ru<_#_zb5te%8K{%;?#OvDT9@DmgH$d5H%cM>Mp;GfUivF6#sYMGQRV-D zi&Xpq)&T%Qjs>kYCZAJCzO7Hd!tcX!HKBA6`8Kw;YU4axlb_qY^LLu2DJU0v&j zc~E%DW^}TFg>6ns8unt*5M93-FSD%d(>HO?hw;2G-aoMX)txl_L<3~239wtq$jHn< z30aXKl%c5zM*%2Q+!td4i0A%&3lO>w0R&l0EG+o!?QvB{YwkaLn^beEc^DtxQ+R@J%yg>EPqFfJ>zNX`0HE#YU zUh<3N)^C|oq`N(x|B8)Vz)D5X4}jdYzgbx7(h72fF)!t<lQ}c8H9uu*XIW*JmrEu zBm2ZnCVUl@mF@-)!x`V~`CK1#ou4m7E1Yq8E@|?#ZES4lH@@XTRjgH2RW^o62E{j^ zShBc0-dNwUUw)ZTWU@md7h7 zG}64~Y}WhWu$Rwh(XC-Wj3DLan%3{ig{5|9sEZzd6V}z$wRG?^dc$$<{sEIyqN$H3 z?B?c1)N9*1It7Wjf9pih=2#o_C)y01@^&!bOWxC^o4M&@-^d&$P(@8lOf3TO7f(lbib$WlQ*#vRu6aUmI$V$cKnR5H<@`~Gz3SQzL1}t6OW3Dx}#oakH+ig zK2&zHR7AqSyiB^+j0MK2&VTY|ePiQi?O2Jc6V%p6zmI|`Z}5fuY|07Wf4LRItDW=n zmS%Z#P#CFicn+VA7pD0AJ3`cVQxIGTe7J<&^vxRx`lqLh28rFpY}6})AoV|gp8H5( z@rzfvI6D&wCx4)sSpZZ9Q7J%a$7g39E3Qlu5_I3beM=OyB>_1y=F69$q$KK*v9YaB z5*MIs7eD$Vkodq76TlhgjbYZ<*w`{~sq5?OpM>NmqHOP+DB6*4DHEGYs(Ke{bsgPI zy_}Dn@VrSoJ+gT;^d8P|O)EqsKS~TL72_8`>Ye{TD43QO4WMAP=U`kIgCEsc$%~GUbdSrN7i60*R+Bk+ zc*rHk%~XJ$FTqSm;IzHE*ln4h;=8 ztDX8$!40U3dc7ooE+J{aD?#a&*=mmDbaZqmJQj>Y3Qb=hCWBed&c4U10q`|g6TNBw z(LIfED$$~yUgg%zT^JdoUBxwLJ}X;Ni$`wApjF}nSg3ECxBcv|uQio0UWmo3O*e8N zr@wc7Z%?T=B6$dZ8Gl}V$^e@8YIDO_TU}iZ^*wcUbp@9MKUV5apu9!IlNQ5bu(H7w zU7Us0iveIe%DEenWn>!Z4cG(c=DSHzMa23W;B;aPO-y`G#>=d%6qs)?)Z7ZxypQnm52!Wt>G$&^ z03l808Dl$rnf^c{U=f!q^>lTAkx^1sg1ifxOAj_~8nN9l!sh30IqgwB*DXOeGOQ`zM-rv&qQFNFsB-1+$Q0Jd;*3R>qa= zheGL1+S|8q=C-c3WG)N@@HL zkT0`!{R2EH$=S|S7q&v(&i0zEjcdYteft$-H^{){w%^V_@d144f(0rR*gmdOA{x zzwl?5#2T{QW0y8;%1NW+XDM%HW8>p)tZNVkB2E!7t0PV|I&bi)_z#Nci1@#G?yb4G z^^B@&YN(* z>zc=||M7>iazh_ff@?AhL|xDx zd+a`!$dx{NDW2W7w6s)ha=&0cT0RRs^Aw*^YmRnAo!hO8&SO0Zlj|oIVqGYLQ2d>D z*zPHx-)MjmB~R=(OqPh~=&*sczd7YY+-)zbQoz%cM4S1Q1XF8er^M^NIY;+Pj!TP? zH=(M4ap86EK^AE6GZRc~3KIE9GNe4sFM0R! zT@WosupAx&G_J0#{bl8^<}c=Kte30rr%}a(U|%9;lzLvARU3nH<|}xS5m~2=hs?fQ z_VV>>%;)cle^^)kSUdW$clP&V7y`xS-M@RnM#)n0okD`f45%!w@Xcyjjt~<3=X!bq zzP`Ts#l;HV-i@53S4!{CyMKgN8GiF`@dfWik(?*L$;rvN`Nh8(10`vr`2k9Ri5<^w zYD!__;~BDzPMI`={-)G z&!2ZT81sr>EPqK9bGIAxdP-)=w1Nca%t-6@f6@Kz?%pkdfq_BQt>ve~L)W*x@jTp~ zcscoUZe+m|g-qIx7StjI@=$(hRVv~M1oYU_j;QE<04;nQ%JOHF!imv@Z^2czG+ch79GGh+JGee0k3 zOoRJ*LnF9#@2V-Etz z`8+EcB(LT(dbTG?opeW&_NC_FD(Z^NJl`($#GKn8_lD<0`)f*ZewJPuhd*yX+!qNcp#MEZI z>i6@h^5Fd+{@?=Zux_GR+@Ib`fj9`jxEvrc)ODqtPk;R! zh?nO3D`H@x@>RV_I&n?Ji_b`){h(q0kx~gWuw|@KF&xR3IaL;AEre4I(L}jl1p~UM zQZ1ev264Y=AOi&7kMG)fntFO+H&AUs^^6_B2&I!fmbJ{9y5?Lw2O| zy}o=_%G;o{@zId4P4uHVv$Ke~^-WnPJ3EA?os7EA#iAVJR7Kv?m5)ZXj&$sjh6`)R z$KSuhuFhLY-TS3v^s!w3@>})9mW}Cd!*2lsg34MdNT9*r{Nv3Q7?7ETb?$I4C)>Xr z(uxE=!gW~k6C)jR6TxyA(U!X!(P-^qnQg4#jDL`S4wm4DNM~zn>05z^0z+?C)irNN&oe@rO@(Y3OTsnX(>GbBFMCv* z8eCbo%1MB3LWCokGol1P3HDp2pk8h6b`cCY?cT5|WbJkkT8~ zK{<4m4A>wS5;Zs8Q?F}XT0^V`TCvWV-WqN(8uRIwLj!cgG_Ta~LLpHj!?b%!q5tOv z*x&4lOEfZwC^hlKXxqmsc>2|p5$HGL!^2v;9jPNq%^-kHoT{m*!KSbEyODMptNU;2 zji=wl>rU!D{-S?+xT0US*DLwFhh^<9SC?1CMG6>Z}a}*qzz!D4TOOT z+eNq%4E#AVAdbtWqT-?1V`zD8&9YDVvgU(>n*K6bD!i-mBFH4Plun0ILa@yUgO!_Zlr0R^C1Hp8pMhWt8ozx zmuaqDband^ubdZFmFOjT^Rz3}r}|T5`h#&$M_~u;s^t~1MDV8bGae&|v90Sq)@Nh~ zgKzLiF#4O5lZBco$ED2Uq)!*D*5RS0eXwU#6I=vW zK)Y5@!rE;w!-lo7CF9c=8U_5*b(DhsL)&Uml801~)yh9KUGn357J z)LhfVgm>x|#Gm@DJNWnkRtDn^!r+OE1S5zO0xT_DV1;B97vS>gkHh`UR#e4LMzlq} zjyd|%q)IQvYG=K;=>4x>+{l zok`Gk)^aA%L}<3DJP>^?W%(=W)5+ZIEUy8tsfUM~xrqF3bsYf zO46|NLgm1{qkLrq--|kgB6J%=KY#mAx9N61Xn$q3-NYb5jYXoI;b}5v_cjbLRF)tx zJAbTNzc#@ISb?*m)qafk_>`dW3gxp%CRsf30%bW*bty$Nx+V`h7nh4`Hq-Dh1PX8; zAl`%QF5_mj@12!h&W!X28aaf>Qi>+XTU-8(Kt|I&4)tVN`)moJAHQifaq7Nu>g#?4 zDp?3IIXQ_y&UvoUL2aoL-Vo${wu^s`>=T(Ad5)BYT|c$68{}#oWF>MgQaxa`v4zgp z3KbHOUzfVvE<7H6>sD63bJ#^sH}nl8kU)noUQC4sM8VXI>K)%WIWs{@Izo1p@V-;p zOi07j!t(g2KFu3yK^g4ddA4CxPh#_WrL(Kmm6e}a+I5By()`~lB|A_0`pxx1$#r0i zWh!;pxbC?QWBnlq+O=2p)Js zyEc%f1opBh$UtXO5TNl%AMZ8bu}I06s$3(qPE7sRzIC*2ZNU$p+%nM8-Z}3>GC-jG z`g2oUb=!D(iAv9l)Aer3G*Tvlm(sX?93xJCM>G>_2Mb*npU0g1;Pb9x3cl^~`Qdo? zV$XvYx6^Ke0UB6nKAR=&Yt_q^VR@1h2O)KwWkY~ zD~G;}In>RFh$Nj8bAW{LhX77$@s=vZ;K8p9i;%vLZhkw}V|9~7Y;J?GLU6jG5)&RYaI|j9k(nhBZ$ookRp=9RY03| zy{!7&;m-bV=O`kWzAVn%*^Bf$%knw%cybc8Anq2&zzjQWNKW;ctvg(rv3Y)W zg6RT>pvB|ow{k*dT35mDj3W51pLp7QYGuvMnUVodlb7m+%l*bw zNtz>XZ|-=KmjE?&+|gRBh#osrB!;c2Z9iK$n-Y88T7xKnWw;$5<6mGLK7#myP-np6 zDyjsoBRLOfE#RxU$IANs(YMSPkdi>$&MGS->iS66@iZb@U6F_rUz*$b;&6o#28Ajx zzG_E@Iv9GxTgee6l>r7bP;f7DY-YxIBm|r`0n_3!c*CfBx}C5f$PIaa@A4Z)SkMCx zgndDQ^VZyLG3(I*8!Ib{rhNx=_j11*uV9)3g=d7Okl#`AoLNsSCm`0e+JG2DpZ9E0 zz^aGL2YEHOCLbCO-qMP^*`v9SxW0yqtSt)NM_L0o z>elM-JoX|t-XHwF^|tYumR2B8K(@!rgZ{O`x(z7(lqp5i$3?jbksM;mv%eA{D91{`4oqBM zufInWfd&!HD>5>xg{sbd{Y-LP{=vT~UT~wi^Vz*znK+1aA*YwvAZT=DfIljS%eC{N zJk^s`NpIR8d$k7%o11pIrKN;U%_kHh2bc-I3h|3) z#eKBR>;|M;$`duUps}s$?CaY9Et%pc@_-^zfblMCs;?R8=-?oD1FM<@mb~)I+sa8v z1%~Gr2$6=FZ8b;|bDspw2~z-A-TvRJQZ}@Af$vQp9r!>(WXrLi$i;Ay;aXMwFuhT{ zlh8|EmTKzi`q0bEOV&i&PR!_j8yRlM!$2Tn_4f4KI|FiP7OB@Qwi>;4qZ zdZ!$e~;gf>f}-cCYN8!Ec=>lwfDz1UBwSJ!SnZYOqwr<(13VZhfS zi=+1R>BmJkAnKV*s}{ZL2*n?-vej-FNftKm=r)Wh94mUp(*n_j%Vewv8gv8{)4#pmeZ7Zyapau{Qael)t3p zg zycNel*yMF<_Ocl~vH$Aoyc_9VP+~rDD7gK-A(TCh$};~Z4SBuBmUH%s@r)CQX%imnEj2oRW zrM_EK`TO@J7#EthveE=;uXe+ql<8=9+8SscX>Aw&lsNRy`n8q+Xzl~*Jn!yyES84( z@{E;b9uS`*kkoC%E71@O(%bukyUeH5-IJ{`xF5}rA3<2Go&pSqr8C6I`MF{`n)(n%rF>_P2*vwql&2G{h?@-!f9gZ3 z;T)ua&0g+NLWy9!b=VKPmW&>J4F`rdy29Q$yDOAm7Ff^R zfzeBtkB=}~{1E#i?V~_K$#d!9-%hdr$zP}26X*LKgusX4P~cmLG6A<<&Fs0Z%nc4A z02iA0TS`GHACDPVMO|GUXt2Q00yNkVUSXgB%n3Lc|xWQY|!>a!Jv7cHZSb-l^xY3X(q_@h~%jq^LyZX$tWp#`lfN@k=9ayT*lgGMz2ZmWif*g zlyNjSIr;wIzklgF*2|`N3q8^wUkgyDYjT@3CBAO)qbubz{n*|vnpOeoSq*>F)?a%4wiM*-XIkvq%yuHG&_u~LYg#b`p4t<0a?pClZ z5qp1fWOz&g!gWj&tQtFk_G*E@!!Msz<+y@jR}3t8px{u>*t4c zt}E|tFy2qBuGQAp8wes5v=TesbLJ{{s6| zZY~?tmh#9=y-K`6lNRfbKNQeLE^CQ#3s(y6RzEh5)8U*mZl=B`T>cM2eI1woA;n9I ztFygV|32Og@&^+jceJ*2m$`-QOtN*;pGHLM@xBgn$~p<(0E1_DFxO}hUin1zx6&RP#>Hi(IF*>JP@7ctrqw~WrjUYy zf~fl@S$v9^RRi99$vMM(p&E^g-k~CNd4>QE=s%KfH)3brTgogfY*mz{rd`1gEE%Ws zJUlswJwNM~i|i|ttWzq~+3i2F9n@sx^`BmZRThUTJHw(5Zm6USc*ho_ zbGN|RaH?4Z^>mn`*ZfxnGD-+6rchUwn~Ry}1VqzJcOpA^Q$4+ee0n477eRRHZ zbGD?Er?J#F;1|ln*MxA&ebNC;Z)p9%eYZlLReCx1>&1Z-3c5lNXbymNg>GUW{AGN3 zwAz;_Y>_ZU@g>Pvh&~8uPC8`+&~1-GW6*1TT+@ zK7aR_WZKcA&B;Q8qg__2XlmzQF%yv_;+jx13?EWx87cE!LERiqd=3Q zEUy~-J3YknXw_v3NG(9r1P+e&70{iK)zm}_to+6)uYG)c2Dc<_9U`7Uu&JNa3&2gk z3uCDPhLE9!TsCH47S6U)VJ;p{Qmzik5~dVoM(>0#!LXyZd0xgqA8f z939Pj?#o;gOFKI9CQyu`asNA7VIfb=jt#;hbT!Qk5fL#>JfBj5rz=qn24djV*&puU z0+!-gsK2qO^+4(eV5k7RV|qPCuvJgAg8GJQhmjK7~>m&ACMMcnZfkR^Uy=6_VH zw$hrOj_^*r0NF+p>f48FPzhiHnpy@(MJ4zMkVGkY41*^p4gX+hYHJ78H)%G`GOy5N2h9T+5{{*zp~but`?I9%m^5W_(pO%i!h31s3S-bXuYm420n!Z|+89|P$2 zG<Jhq0tSbUw4^hh;X7)yL-zCVVVt z->Li>n0gt3^V#NK8Hjh{H^+Y~j#z`S=RdQm@&5>XX6tpChMJ#2t`|-39(c!yGR-Ad?u!1w$d2BACGnGQqVD&9h~Ts*wb|7=$M?ufi4l|Y*)>&87bnQ zHsX@8jh9ey@J_s_4EFi`+we{f?1fWs$Go`Gn_B`h_eo?_eR4MCi-=1~N>+1;@X0Zl zxUV$b`D(t+$+6WWCnwhv`Ze^wU-f~1AMd^q7P#{o=-DWvG~ zk7~9Y)!AgHA}RT-e;bAAH)J2SDUAkix5qeJvsBqCQp@6edmgRKlVLr&SZUr7iXhao zb_J=fqW6WPU%2S+N2$|6u16XroUDip2er}f(>n_eg$sqZwGV`s!g2|N$6NiSw1HIP zqN8JDTn6bO0ne?c_v$;p;m_NftGkC9J3^VR_fqzQG>SfSR!|qxn6>z_GK(kGaou7m zZ}!}|OJIe5ujQoYaOK=IjKKU42*#^hW90Z+>C^J%kW#zm^ILlp?)RnRGzbG`G8}yV zxf5238zMXuvj9YvmBkl*fl_p-InU2403X*g-T zeo_}!JCR!tU@-kbg5n9jIk)aL_*c?^`xw<^Vdr3kkCY>mYHxR-M8y3y|H#&k>zuDY z30B!%u@w{1D{HfAUuk1>0($XqfRoa}#shW?7=y&gJ>%Qr691gj72MJ!`(ymOZ~G`+pUQuNE1`Y2Q6#c)nogQ=Ek!e_)9-=KJ&hQe@cg z-iWVgkv>^0!<=foeA3nRQLaYVBg0Q*X5S-hMoLt2W0k9&*mQ-ZGkQ$>l57BcZMbF0 z*p-tBPACe0%?3Lt1|k-H=aLcUp;;$eak-blseX;qNM;J~f4(0kvTNmUZ9gQE8#vU9 zOf6)lF*o8xslg~O0WgF1V-WNHGSmPn&p7ZZk&%;U7ll;5bkQhvei)5dVO6+zccTy%-!+hhwAN=>6r@Rg1mZW*bm=JbrI0SpH^1 z>+Nilr>OHhlqNi~83v5oS}@&+g(H}DYzJip${xAGm#}p3P9LOn zn;~WZGo2-f7CaSmi&6HKsh#Q0hj%&>*;;(gmrg8k9=Z^HZH`o5vSkY+psN_UwP9Ms z81I>N3LYm6=bQRpL-3_f3qnQq4}~;n;{!iw16?>S+!M8*QIXdDwL(W%TI~wget94rEo~=QoiTB7!a9nr=$a6WYIp0ayGVt*i3z>4(CVyfsd9j`5sOfJFajp`PW*<|t5A zuqR*XiUA;5_a;1NNEv{Ml&7!SJg_Sn4+enEK6mOL&8VbVMK&f*&;!zVt8y^xz1z{c zvJq?G+N>h%>y|QwjBNox-q!FtBz2f=x(m1$*dh{`L|nV5b}$(?AOzq95~iNYpR-F{ zL~w3|qZ8BO5AhYCCl<|Ad!ISVu~`y?%{Yd2EVS*;G`eh$Klr;7t%x$u1EJXRk<;DR zXsuza?orcAsAD!{3&6>S`W~q4JH z2+fmcM7kkJ076i`h&+qRLmyKxpEzda=`C^Ot?`H}I>qb()Vl$Li(q*Cin@y$kM$4K z_~q5$-09|juLY?i;+U1i%(9rSHRGU4ZoIs|wqGHVR#JocPnis_22#mq`YE-)TgK9| zQ!*D>NNj>2YmNd*y9m@XAcQxZRb5D!G1g(--zKKPDgT-F@pEi|frJ^C!lyTF-LlC; zQJeH-18bnQGrk$K=1m%y4u`8a{$>+YeU9aH=L8g5U}4FeEV@#W+~y5zic5t&SKA12rm zA3~$7LF@4U8Utv>-YD-KcejH=daBze8>Cb?cj70nD(2&iTUHpe}bxKI=R(~BHFI&X!b9?QnFo5Oxt82a?7a7o7la?q?Ww`Sro7QKG$mwW*+Ec0=&oQ#lQ{b&x8f(3+ zj#tb7wT&tL8=EDII#5{|p04pGh)Sz@oJHv)x{v-}*Od5f>_sh{lT{sU?GC!EFjLfS z!2wo#`8}8NH;KfQX`llOLe$5_wRIamWGFVqfn+R-*nwyV+yV)_#@OTkfE;6f3edj3 zslo5p-a2x#Szf||5;O?S(lT&&@8$haW`+E*w$#+rbX~D&uBusEO)hyaMUj0R5u%r1 z(L(Kn=r|rJ^b58qFbkxGv*fuYGE#+#Cn|75FfnFw+YLS#2iDY2sJ!84vV zFVNQ#w3h14%h(?1V~p~dJa|1R*mT&#WnNkdR1-+r)|PYi12^3q(9&z?9BY?O#!M5c z29W7Lr2J8p7O*Fq9MTM$LlA=l>hA*ho{W~+z5_0rX8?5Q6zaMNUwD#K@`ZsO>#}D= zhB4Fz20A+Ar(iePhAivo(=Yc0@zrQam@f+O@$lf=Yiu`oX@aQy`AUA%(h&HjhP$HI ze2Rf(@_DIo1h~ugDME2XtKDmbwVpUI!Vw-;;w*+LrA5o~lvK8Nbc^QwxQN?8Yer2~ zRjjw7Y#fZA`x;DB#Bq=6bs84K@}XpH1&Qg0a+ zvK4h#fFJ1d@mBTXDif4TVC%qkF>{^~f$$V}ZN{!(Z*M$s?$+A;5)kNikbGIrxn z@59frm+kSi=l-<&)YMeg6h;O+VEa&Vz*vy0*th))AMgYHS0731Ct!Jkz+qQr{gUPp z$}9E-8%JRfGAjIzW74zm}}*^PvilbGVtBO<-n zq?sDkwjWhW^nK}k3~%i*!P;z@1yMLXw?W0d?r6{}NV_}g0YI@a9lT=~Q$Wgrbc!I1 z#m3d!b?%zqk-8g;ubuE|D!MYEsK{7s6-hW`k*(dX6ak^3bn|)8?GeliZ;1?AzQJPG z$n?6m_fm?p(0L3aa~i9N9R~-;#?f&#R4)=Ek;{_L2lu$sTan*-)W0xya#Aqte7qH{TC-g2wY^Q;vq zA^XDPY4jh@b+%^Q@XC zdOYUa8x3qq1|JOeC#QcRFB|0odUFWCUw=5MuY5J|tIGDT=+M1I)l3@1LbSc=sYbGJ z-~McAZ0p0T3Z$gf@k1AnqKXY8~h~;u|gJ_9Eh5O|0%{~k5 z$o3c-vW1exm{0Hbk&MIljYr7S+E$@$gXJ@BfXKLL2^^01Em;)DfB(#HD%^yzv$8Tt zNu?#<=_+~zA-ZiL3-Su8-0`;(Ope$s_A&!EcJp)I?M!W6bN&k@0IA6`fiv9m2{0~BoU>^R<;V6NtQv%E+I?Gz9(zQQlg@)McGDnL-vN5_ne;h zdEV!b_c$DfV^;Uv*FD#DUg!7o{gMDH&-!fdd+;g5fKZg)Kz*h}S8LBC?RYr98p_!Q z2r2Sn3%5_Fvg&nYqB;`s4t-Zz4sPMcd*hr|aar84EravCC$2GVGl2^|TyP^>+WIIR z!(94pE6oYRClC6&xz(Lx$%|Pj>Z5RHjqj|P7YXJir6|Q);&i7IgHinrj;vxco;}@u z9lwjZ0)JiFG^hij@Ct|sKn4|nZk|Ayomibt<=EE|TpGA>+$b+J$#$V8D_5}iG+Tw2 z)m6>)GGk1sLvoT6?-?5$R<&z+Jr{K#2_HGSNpG*ngTRS;v{ub{}#C{p%BD zx(Qsc4AYHgT%%am&afbPF6sR0KM--9JBE8S@cXbtYo$Gf^%STlWV_S<={+Xn)XsE| z-&b4Y5moIn%WU7mR0o~VJGgj*o477^vWK-OOMB1(2S=LX#0wh$O2Bg?6c|6}1MCcY z0X-d^`}42G?}He06+Cd_;#4pL8Jd{9(lFxU%-Qrl0+A_XWeD0>RaI3=v0>+qv|7_R z|A*jxzl35+xUC_kr~*$G3|x5pON~K}vNCFYv?yLNK6KFWf$Wg(;&|{WA=We9L9VXY zMeJ{B51Y`1oUV8_?58S^kMAfFzwHaM7<_C#&~f|~F;+a|NtJxe|7Hy!US-V!3#Vj- zD{oLd3PUZ~qBr^Y_}U=2;G>FeB}*xKANn0005{`^AlyTDo7Q7-ZVu(^>)RJF>EEem zTZ3FYg#F|=ESn;_n_r$?NneVd7Fm~LOjCAGnZpsF37>FkwwbV!`0Dw$15Pe8@BhTk zZWF+q=iDqBZRNVpACq)5g5$iXWv&U#0@jc8MSB{~9Kj1Qf2c?8T`-r=tu(m^w3)i$yJ=yIoygz3! zQtvAb)VOrTnRmKBO|~ zEh)1=!PqVz#@N5M%`eLU_NzPp=c$+mSD<3|`Hr@%I4nod($6~oxkqa~ z+ZUAG5vCYCv|7(QnpZN4Z4(LYLj6!W7Ik#J_?IhKb$|v0P3&79C-td|z--o=C$p+S z#fuaDJ{{CYTTt*aw{fc5f<)jr;Z3I2g!Tzu}8BGW#-<}pxDROQROraq<>ATQnI zJk{vbPU8V;4dKVoPy{4zK*SR5rwh}YfsqH)#;&U5W$$pcY#uB!&`Tvi1+sndGqpM- zBshbSYox|~IN~H1nKFSqm$kk1UU4`!@S!6Z@Pd)?P1w1RPaHrxf8u-x5{x$q`vnCB zm#=tADW4#lVR;}J0D$AR#Z8)}=~Of{I~y7snFR#`Odh)qip_s+t zs9m19T|1fApr)R#u>%#~3Bj<_! zQOMB1Kv(yjGiMlY?~$3zv3uJ;cG`uB7;~*%YUCy?yh!Uwe3N)!bA`XZ+IfRXi#BpS zbX3ov=yw0`a3ml@Ft-`03>{5ngzwz3V>4Wuyvv&kTu#j+US#oxRfvhfVzlwL0w!IP z(A?bYL?K1lr65A7z7u(?AF+Se@zKO<+_C1h^XCVwQ{{FSzoexzB4b2o^I#92A~k?P z%v^h4Nqm@g?=7ux>*D4V7*MH^zlVuSG_M<%;L8Q?7U)}JD0XBl&JF7Ee?!ftj&97C zp$JPQwMB`9Y&VXFH#wM_vu;utumjQfb8hX9%7Q(KKh~_)vLmp~ z*@7L062X9ybrg?8G;w+U^i}bZ? zQ{YIA^D9{|Ck$QmE(|OPBhI{i`xfKBAOpY<^VQ?eV7Z@$Ik6qup^~)DVbP%?vruje zk)T|N1$SIjfS3SsHHJs~bFJ@;amnmyou+QiD@erFQ8xj=8KMpva)t30Wn_1JT3wMV z9~*o5OZRZjEnt>984P<SrcQH*e=2-%NSJ%8vcXZdgpJ0`h|NJhH;N0xY!KxB3`hMFDzk4Y-HtjwsHA#3SeQVPA0l zc{Wj1f672C`j`wnJ-XmwdsU#tXHcwQ!ZyiJW7o=3ShBJ2o(mm9dx$DmUnnS)nc+yL z6p)Sa`3}NQyjIf4{UOqv!RL%-JFGFq>p%;$mhs-rR@qA0Qql7k`o>#Q(lZW_`72k zW!2RWLF+G}vKiOlJo?-cLvMYg+ifPgk83e!Q@eql`wQ;ByOdyL3TJ#UlcfqP$KQCL zh-&U+)4IVJAN@A+YqB?m8<$3FAB%2!SAVOcvGwG=ah{<99=59&Q|b(K-G8s*v*2ik z=fPT1lob{_L2}5y0t8GQzvb4}@_>hkEM$SScUrn6|Dgl<1%X4_;wrvDYH*IzK`S*7 zx=Ri1B)GVPFE7Zb7calpuudi8gFu;tq*nhMGpY3U-wiq?6abFACz?SjT6?SifW(yU zK!Ppz^b)ya`7)*DSpn3oQc_|Nf&|bBgdpkG)nskFgNUg|gERP>YLrWj_GM41;H~~2 zH09D!8_d3|gDs$g>FQi}04UI@affWDcTo0R6`@2+IM?+FYO)Wtd=qXj5n}MJxrbzU zLf6gclotH~KaEU_nDq^vh9N|)Lr z$%ieGqHsP-$ha4xfqQ2DnO@DI>|T`^hUPL-FBz*U}G zQ={zK_^j8lV7)7#J~5}bo_6r%g~H`Ht;=%4t%k45sl}Ij*quw6qXz5?{>77s&gu&utD;uad7EYZAO3YblIZL3oTX}nPm?ctR)JeO|%_vOB*Uggfb*r7e z!ofFWk+G9n{QddlVy znS}>J(KzLS(02CsQ(ZMjcpkp;i8nWyO@fsP(JGo5ks@jy(M8!Uul8XV{@z$o9P%B++FDiuV z3>$#4Gem#z1lv|zrucl1s9sCPD=FUdzKN!4c`NGd`jRG2`5Sg0EI25bOD<9Dx#SqJ zK0JPdPVT(5HpcqlF%1k3&L50sXL!C`TT=r$X1q{* zK)4yb48n0r=yQk+`UE;_3nH}l8eYt*x_P=*kR zZUqWl;YOBr^cgQAOl4Sb*X-@~q7QzmwY?iRhXpnT2k!wW)j)HG(fPdKpO*e&OWeQv z<1#Wn4pJR5f!_~dlL8)wFG1!-sj@EUn>XVKqXqGSKKv;4?JQ6LAe}PRdU9VnTu4v> z63?Whq?|!2`pb5x6tE3HB6I~0K)Y4@^(j3PQc%21>ThC&?>i!TY#RlL@|ID= z?mRo;Vi!OibuB_cp|%TgvU&dUf$jYw{NR*aBz@YOb9KD09_pknP@hc!9)o>9;&b*ZAJ@-hO|+ zxdHg%0X-&rE;O&>h_^pJ)8vP#8*=IrRAW}9m?Y_pGhK+Q<+rlSP7&4hF|3)-SfgRk^hPU|N`YcNI6LVlMMaO*8>gvFM!T#Jh(_6R&#& z&LkrQ9B+=JWz;=c+Z5¬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 z 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 S$wR(7Vr+QEpj6K(@_zsmfFz>; From 31ff464d1c3aad3b56211e25a7d13dd9c0556e56 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Wed, 25 Jun 2014 21:52:01 +0930 Subject: [PATCH 075/304] Couple of small tweaks. --- code/modules/mob/living/carbon/human/life.dm | 10 ++++++---- code/modules/mob/living/carbon/monkey/life.dm | 10 ++++++---- code/modules/mob/living/silicon/robot/drone/drone.dm | 8 +++++++- 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index cf39160aad..a1f0865dc5 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -245,8 +245,9 @@ if (radiation > 100) radiation = 100 Weaken(10) - src << "\red You feel weak." - emote("collapse") + if(!lying) + src << "\red You feel weak." + emote("collapse") if (radiation < 0) radiation = 0 @@ -279,8 +280,9 @@ if(prob(5)) radiation -= 5 Weaken(3) - src << "\red You feel weak." - emote("collapse") + if(!lying) + src << "\red You feel weak." + emote("collapse") updatehealth() if(75 to 100) diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm index 8adaaa8443..19cfe31686 100644 --- a/code/modules/mob/living/carbon/monkey/life.dm +++ b/code/modules/mob/living/carbon/monkey/life.dm @@ -139,8 +139,9 @@ if (radiation > 100) radiation = 100 Weaken(10) - src << "\red You feel weak." - emote("collapse") + if(!lying) + src << "\red You feel weak." + emote("collapse") switch(radiation) if(1 to 49) @@ -154,8 +155,9 @@ if(prob(5)) radiation -= 5 Weaken(3) - src << "\red You feel weak." - emote("collapse") + if(!lying) + src << "\red You feel weak." + emote("collapse") if(75 to 100) radiation -= 3 diff --git a/code/modules/mob/living/silicon/robot/drone/drone.dm b/code/modules/mob/living/silicon/robot/drone/drone.dm index 55270907ac..358238b1dc 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone.dm @@ -327,7 +327,13 @@ src << "If a crewmember has noticed you, you are probably breaking your third law." /mob/living/silicon/robot/drone/Bump(atom/movable/AM as mob|obj, yes) - if (!yes || ( !istype(AM,/obj/machinery/door) && !istype(AM,/obj/machinery/recharge_station) && !istype(AM,/obj/machinery/disposal/deliveryChute) ) ) return + if (!yes || ( \ + !istype(AM,/obj/machinery/door) && \ + !istype(AM,/obj/machinery/recharge_station) && \ + !istype(AM,/obj/machinery/disposal/deliveryChute && \ + !istype(AM,/obj/machinery/teleport/hub) && \ + !istype(AM,/obj/effect/portal) + ))) return ..() return From 6e0b261653a90faf3ef3b6b691d1b04e15c2ed52 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Wed, 25 Jun 2014 22:52:55 +0930 Subject: [PATCH 076/304] Uncommented gateway spawn point. --- code/modules/spawnpoints.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/spawnpoints.dm b/code/modules/spawnpoints.dm index e2809ec720..504a962049 100644 --- a/code/modules/spawnpoints.dm +++ b/code/modules/spawnpoints.dm @@ -19,13 +19,13 @@ var/list/spawntypes = list() ..() turfs = latejoin -/*/datum/spawnpoint/gateway +/datum/spawnpoint/gateway display_name = "Gateway" msg = "has completed translation from offsite gateway" /datum/spawnpoint/gateway/New() ..() - turfs = latejoin_gateway*/ + turfs = latejoin_gateway /datum/spawnpoint/cryo display_name = "Cryogenic Storage" From 13cec44aab892e69675045205480b2f4f0454bf7 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Wed, 25 Jun 2014 18:03:29 +0200 Subject: [PATCH 077/304] Fixes people shouting at AI to open unseen doors (sometimes). Adapted previous PR for dev where cameras were relocated to allow AI to see important areas. Affects: Virology entrance - Can now see both sides of the entrance from medbay (rather than none of them) Medbay patient corridor - No longer loses coverage in hallway as patient rooms shutters are closed West of AI Upload entrance - Allows sight of the HoP's door and 3 nearby public doors East Central Primary Hallway - No longer lose coverage when the chemists close their shutters Engineering lobby entrance - Can now see all doors in the public hallway + the maintenance entrance Security Permabrig - Can now always see the last set of door before the permabrig. --- maps/tgstation2.dmm | 71 +++++++++++++++++++++++---------------------- 1 file changed, 36 insertions(+), 35 deletions(-) diff --git a/maps/tgstation2.dmm b/maps/tgstation2.dmm index d90424e22a..deed0c8944 100644 --- a/maps/tgstation2.dmm +++ b/maps/tgstation2.dmm @@ -54,7 +54,7 @@ "abb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = "0"},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) "abc" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/unary/outlet_injector{dir = 8; frequency = 1443; icon_state = "on"; id = "air_in"; on = 1},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) "abd" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) -"abe" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen{layer = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/item/weapon/pen{layer = 4},/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/security/prison) +"abe" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen{layer = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/item/weapon/pen{layer = 4},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/security/prison) "abf" = (/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Washroom"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/security/prison) "abg" = (/turf/simulated/floor{icon_state = "freezerfloor"},/area/security/prison) "abh" = (/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/security/range) @@ -74,10 +74,10 @@ "abv" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/wall/r_wall,/area/security/prison) "abw" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{id_tag = "Prison"; name = "Prison Wing"; req_access_txt = "2"},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/prison) "abx" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{id_tag = "Prison"; name = "Prison Wing"; req_access_txt = "2"},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/prison) -"aby" = (/obj/structure/table,/obj/item/weapon/storage/fancy/donut_box,/obj/machinery/camera{c_tag = "Prison Rec Room"; dir = 4; network = list("SS13","Prison"); pixel_x = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/security/prison) +"aby" = (/obj/structure/table,/obj/item/weapon/storage/fancy/donut_box,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/security/prison) "abz" = (/obj/structure/table/woodentable,/obj/item/device/taperecorder{pixel_x = 0; pixel_y = 0},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) "abA" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plating,/area/security/prison) -"abB" = (/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_x = 0; pixel_y = -32},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) +"abB" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_x = 0; pixel_y = -32},/obj/machinery/camera{c_tag = "Prison Rec Room"; dir = 1; network = list("SS13","Prison"); pixel_x = 0},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) "abC" = (/obj/machinery/portable_atmospherics/scrubber/huge/stationary,/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plating,/area/security/prison) "abD" = (/obj/structure/reagent_dispensers/water_cooler,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/security/prison) "abE" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor{icon_state = "freezerfloor"},/area/security/prison) @@ -179,7 +179,7 @@ "adw" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_CO2 = 0; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/security/range) "adx" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/security/range) "ady" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor,/area/security/range) -"adz" = (/obj/item/device/radio/intercom{broadcasting = 0; freerange = 0; frequency = 1475; listening = 1; name = "Station Intercom (Security)"; pixel_x = 30; pixel_y = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/camera{c_tag = "Security Lobby"; dir = 8; pixel_x = 0; pixel_y = -22},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/security/lobby) +"adz" = (/obj/item/device/radio/intercom{broadcasting = 0; freerange = 0; frequency = 1475; listening = 1; name = "Station Intercom (Security)"; pixel_x = 30; pixel_y = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/security/lobby) "adA" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/security/brig) "adB" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor,/area/security/brig) "adC" = (/obj/structure/table,/obj/item/clothing/suit/straight_jacket,/obj/item/clothing/glasses/sunglasses/blindfold,/obj/machinery/camera{c_tag = "Brig Execution Chamber"; dir = 4; network = list("SS13")},/turf/simulated/floor{icon_state = "dark"},/area/security/prison) @@ -499,7 +499,7 @@ "ajE" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst{dir = 4},/turf/simulated/shuttle/wall{icon_state = "swall_f6"; dir = 2},/area/shuttle/escape_pod3/station) "ajF" = (/turf/simulated/shuttle/wall{icon_state = "swall12"; dir = 2},/area/shuttle/escape_pod3/station) "ajG" = (/turf/simulated/shuttle/wall{icon_state = "swall_s10"; dir = 2},/area/shuttle/escape_pod3/station) -"ajH" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/camera{c_tag = "Security Medical Station"; dir = 4; network = list("SS13")},/turf/simulated/floor{icon_state = "white"},/area/security/brig) +"ajH" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/camera{c_tag = "Security Lobby"; dir = 4; pixel_x = 0; pixel_y = -22},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/security/lobby) "ajI" = (/obj/structure/stool,/turf/simulated/floor{icon_state = "white"},/area/security/brig) "ajJ" = (/turf/simulated/floor{icon_state = "white"},/area/security/brig) "ajK" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "whitehall"; dir = 8},/area/security/brig) @@ -538,7 +538,7 @@ "akr" = (/obj/structure/stool/bed,/turf/simulated/floor{icon_state = "white"},/area/security/brig) "aks" = (/obj/machinery/light,/turf/simulated/floor{icon_state = "white"},/area/security/brig) "akt" = (/obj/structure/closet/secure_closet/hos,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/turf/simulated/floor{icon_state = "dark"},/area/security/hos) -"aku" = (/turf/simulated/floor{icon_state = "floorgrime"},/area/security/brig) +"aku" = (/obj/machinery/camera{c_tag = "Security Medical Station"; dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/brig) "akv" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 101; on = 1; pressure_checks = 1},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/brig) "akw" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "dark"},/area/security/hos) "akx" = (/obj/structure/sign/securearea,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall/r_wall,/area/security/warden) @@ -1099,10 +1099,12 @@ "avg" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "dark"},/area/security/tactical) "avh" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/fitness) "avi" = (/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/fitness) +"avj" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/simulated/floor{icon_state = "white"},/area/security/brig) "avk" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall,/area/maintenance/fpmaint2) "avl" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/wall,/area/chapel/office) "avm" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp{pixel_y = 10},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office) "avn" = (/obj/structure/table/woodentable,/obj/item/weapon/pen,/obj/item/weapon/reagent_containers/food/drinks/bottle/holywater,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office) +"avo" = (/obj/machinery/camera{c_tag = "Central Hallway North-West"; dir = 2},/turf/simulated/floor,/area/hallway/primary/central) "avp" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/crema_switch{pixel_x = 25},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) "avq" = (/obj/machinery/camera{c_tag = "Holodeck"},/obj/machinery/alarm{pixel_y = 24},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor,/area/crew_quarters/fitness) "avr" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/crew_quarters/fitness) @@ -1315,6 +1317,7 @@ "azq" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/storage) "azr" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/table/reinforced,/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva) "azs" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/ai_monitored/storage/eva) +"azt" = (/obj/structure/disposalpipe/segment,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = -32; pixel_y = 0},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central) "azu" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/fore) "azv" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "neutralcorner"; dir = 2},/area/crew_quarters/sleep) "azw" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor,/area/hallway/primary/port) @@ -1962,7 +1965,7 @@ "aLO" = (/obj/machinery/door/airlock/glass{name = "Central Access"},/turf/simulated/floor{icon_state = "warningcorner"; dir = 4},/area/hallway/primary/port) "aLP" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/turf/simulated/floor,/area/hallway/primary/central) "aLQ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "escapecorner"},/area/crew_quarters/fitness) -"aLR" = (/obj/machinery/camera{c_tag = "Central Hallway North-West"; dir = 2},/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor,/area/hallway/primary/central) +"aLR" = (/obj/structure/closet/secure_closet/personal/patient,/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/patient_wing) "aLS" = (/obj/machinery/light{dir = 1},/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor,/area/hallway/primary/central) "aLT" = (/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/hallway/primary/central) "aLU" = (/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/turf/simulated/floor{dir = 1; icon_state = "bluecorner"},/area/hallway/primary/central) @@ -2877,7 +2880,7 @@ "bdt" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=Dorm"; location = "HOP2"},/turf/simulated/floor,/area/hallway/primary/central) "bdu" = (/obj/machinery/door/airlock/glass{name = "Central Access"},/turf/simulated/floor,/area/hallway/primary/starboard) "bdv" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/turf/simulated/floor,/area/hallway/primary/starboard) -"bdw" = (/obj/machinery/camera{c_tag = "Starboard Primary Hallway"; dir = 2; network = list("SS13")},/turf/simulated/floor,/area/hallway/primary/starboard) +"bdw" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/camera{c_tag = "Medbay Patient Isolation Access"; network = list("SS13")},/turf/simulated/floor{icon_state = "white"},/area/medical/patient_wing) "bdx" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor,/area/hallway/primary/starboard) "bdy" = (/obj/item/device/radio/intercom{pixel_y = 25},/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/turf/simulated/floor,/area/hallway/primary/starboard) "bdz" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/turf/simulated/floor,/area/hallway/primary/starboard) @@ -2933,7 +2936,7 @@ "bex" = (/obj/machinery/vending/coffee,/turf/simulated/floor/wood,/area/crew_quarters/captain) "bey" = (/obj/structure/table/woodentable,/turf/simulated/floor/carpet,/area/crew_quarters/captain) "bez" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/fpmaint2) -"beA" = (/obj/machinery/camera{c_tag = "Central Hallway East"; dir = 4; network = list("SS13")},/obj/structure/disposalpipe/segment,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = -32; pixel_y = 0},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central) +"beA" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor,/area/hallway/primary/central) "beB" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/hallway/primary/starboard) "beC" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor,/area/hallway/primary/starboard) "beD" = (/turf/simulated/floor{icon_state = "neutral"},/area/crew_quarters/sleep) @@ -3332,7 +3335,7 @@ "bmg" = (/obj/structure/table,/obj/item/weapon/reagent_containers/spray/cleaner,/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/patient_wing) "bmh" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bmi" = (/obj/structure/stool/bed/roller,/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/patient_wing) -"bmj" = (/obj/machinery/camera{c_tag = "Medbay Patient Isolation Access"; network = list("SS13")},/obj/structure/closet/secure_closet/personal/patient,/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/patient_wing) +"bmj" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/machinery/camera{c_tag = "Aft Primary Hallway"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/aft) "bmk" = (/obj/machinery/iv_drip,/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/patient_wing) "bml" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "medpriva"; name = "Patient Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/patient_a) "bmm" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Sub-Acute A"; req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/patient_wing) @@ -3416,7 +3419,7 @@ "bnM" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/patient_wing) "bnN" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/patient_wing) "bnO" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/medical/patient_wing) -"bnP" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/patient_wing) +"bnP" = (/obj/structure/sign/securearea{pixel_y = 32},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/camera{c_tag = "Central Primary Hallway South"; dir = 2},/turf/simulated/floor{icon_state = "warningcorner"; dir = 8},/area/hallway/primary/central) "bnQ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{dir = 4; icon_state = "whiteredcorner"},/area/medical/patient_wing) "bnR" = (/obj/item/device/flashlight,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/asmaint) "bnS" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/patient_wing) @@ -4017,7 +4020,7 @@ "bzp" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whiteyellowfull"},/area/crew_quarters/sleep/engi) "bzq" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/quartermaster/office) "bzr" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/quartermaster/office) -"bzs" = (/obj/machinery/camera{c_tag = "Cargo Bay Entrance"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/hallway/primary/central) +"bzs" = (/obj/machinery/camera{c_tag = "Central Hallway South-East"; dir = 2},/turf/simulated/floor,/area/hallway/primary/central) "bzt" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/hallway/primary/central) "bzu" = (/turf/simulated/floor{dir = 4; icon_state = "loadingarea"},/area/hallway/primary/central) "bzv" = (/obj/structure/filingcabinet/chestdrawer,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/simulated/floor{icon_state = "blue"; dir = 10},/area/crew_quarters/heads) @@ -4102,7 +4105,7 @@ "bAW" = (/obj/machinery/computer/supplycomp,/turf/simulated/floor,/area/quartermaster/qm) "bAX" = (/obj/machinery/computer/security/mining,/turf/simulated/floor,/area/quartermaster/qm) "bAY" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor,/area/quartermaster/qm) -"bAZ" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 4; icon_state = "bluecorner"},/area/hallway/primary/central) +"bAZ" = (/obj/structure/disposalpipe/segment,/obj/machinery/camera{c_tag = "Cargo Bay Entrance"; dir = 8; network = list("SS13")},/turf/simulated/floor{dir = 4; icon_state = "bluecorner"},/area/hallway/primary/central) "bBa" = (/obj/machinery/status_display,/turf/simulated/wall,/area/hallway/primary/central) "bBb" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor,/area/quartermaster/miningdock) "bBc" = (/obj/machinery/hologram/holopad,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/quartermaster/qm) @@ -4181,11 +4184,11 @@ "bCx" = (/turf/simulated/floor/engine,/area/rnd/misc_lab) "bCy" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{name = "CMO's Office"; req_access_txt = "40"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/cmo) "bCz" = (/obj/machinery/ai_status_display{pixel_y = 32},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/hallway/primary/central) -"bCA" = (/obj/structure/sign/securearea{pixel_y = 32},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "warningcorner"; dir = 8},/area/hallway/primary/central) +"bCA" = (/obj/structure/disposalpipe/junction{icon_state = "pipe-j2"; dir = 2},/obj/machinery/camera{c_tag = "Central Hallway East"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central) "bCB" = (/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/primary/central) "bCC" = (/obj/structure/sign/securearea{pixel_y = 32},/turf/simulated/floor{icon_state = "warningcorner"; dir = 4},/area/hallway/primary/central) "bCD" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor,/area/hallway/primary/central) -"bCE" = (/obj/machinery/camera{c_tag = "Central Primary Hallway South"; dir = 2},/turf/simulated/floor,/area/hallway/primary/central) +"bCE" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/camera{c_tag = "Starboard Primary Hallway"; dir = 1; network = list("SS13")},/turf/simulated/floor,/area/hallway/primary/starboard) "bCF" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/medical/genetics) "bCG" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "hazard door west"},/turf/simulated/floor,/area/hallway/primary/central) "bCH" = (/obj/machinery/atm{pixel_y = 32},/turf/simulated/floor,/area/hallway/primary/central) @@ -4258,7 +4261,7 @@ "bDW" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/hallway/primary/central) "bDX" = (/obj/machinery/atmospherics/portables_connector,/turf/simulated/floor{icon_state = "warnwhite"; dir = 5},/area/rnd/mixing) "bDY" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/hallway/primary/central) -"bDZ" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/camera{c_tag = "Central Hallway South-East"; dir = 8},/turf/simulated/floor,/area/hallway/primary/central) +"bDZ" = (/obj/machinery/camera{c_tag = "Central Hallway East South-East"; dir = 8; network = list("SS13")},/turf/simulated/floor,/area/hallway/primary/central) "bEa" = (/turf/simulated/wall,/area/medical/surgery) "bEb" = (/obj/machinery/iv_drip,/turf/simulated/floor{dir = 8; icon_state = "whitered"},/area/medical/sleeper) "bEc" = (/turf/simulated/wall,/area/medical/medbreak) @@ -4373,7 +4376,7 @@ "bGh" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating/airless,/area/rnd/test_area) "bGi" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/aft) "bGj" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/rnd/test_area) -"bGk" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/aft) +"bGk" = (/obj/machinery/camera/xray{c_tag = "Virology Access Aft"; network = list("SS13","Medical")},/obj/structure/closet/wardrobe/virology_white,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/turf/simulated/floor{icon_state = "warnwhite"; dir = 5},/area/medical/virology) "bGl" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/hallway/primary/aft) "bGm" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/asmaint) "bGn" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/rnd/mixing) @@ -6323,12 +6326,12 @@ "crH" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; external_pressure_bound = 140; icon_state = "out"; on = 1; pressure_checks = 0},/turf/simulated/floor/plating/airless,/area) "crI" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/obj/structure/sign/securearea{desc = "A warning sign which reads 'HOT EXHAUST'."; name = "\improper HOT EXHAUST"; pixel_x = -32},/turf/simulated/floor/plating/airless,/area) "crJ" = (/obj/machinery/door/poddoor{dir = 4; id = "disvent"; name = "Incinerator Vent"},/turf/simulated/floor/engine/vacuum,/area/maintenance/incinerator) +"crK" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/camera{c_tag = "Virology Access Fore"; dir = 4; network = list("SS13","Research")},/turf/simulated/floor,/area/medical/virologyaccess) "crL" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/rnd/test_area) "crM" = (/obj/structure/reagent_dispensers/water_cooler,/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = 32},/turf/simulated/floor{tag = "icon-whiteblue (NORTHWEST)"; icon_state = "whiteblue"; dir = 9},/area/medical/reception) "crN" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "solar_xeno_inner"; locked = 1; name = "Engineering External Access"; req_access = null; req_access_txt = "13"},/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "crO" = (/obj/machinery/meter{frequency = 1443; id = "dloop_atm_meter"; name = "Distribution Loop"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/visible/supply{tag = "icon-manifold (WEST)"; icon_state = "manifold"; dir = 8},/turf/simulated/floor,/area/atmos) "crP" = (/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,/obj/machinery/meter{frequency = 1443; id = "wloop_atm_meter"; name = "Waste Loop"},/turf/simulated/floor,/area/atmos) -"crQ" = (/obj/machinery/camera/xray{c_tag = "Virology Access"; network = list("SS13","Medical")},/obj/structure/closet/wardrobe/virology_white,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/turf/simulated/floor{icon_state = "warnwhite"; dir = 5},/area/medical/virology) "crR" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/hallway/primary/central) "crS" = (/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,/obj/machinery/meter,/turf/simulated/floor,/area/atmos) "crT" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/obj/machinery/meter,/obj/machinery/firealarm{pixel_y = 24},/turf/simulated/floor,/area/atmos) @@ -6484,7 +6487,6 @@ "cuO" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/wall{icon_state = "iron3"},/area) "cuP" = (/obj/structure/flora/ausbushes/fullgrass,/turf/simulated/floor/holofloor/grass,/area/holodeck/source_picnicarea) "cuQ" = (/obj/structure/flora/ausbushes/sparsegrass,/turf/simulated/floor/holofloor/grass,/area/holodeck/source_picnicarea) -"cuR" = (/obj/structure/disposalpipe/junction{icon_state = "pipe-j2"; dir = 2},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central) "cuS" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=Stbd"; location = "HOP"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/hallway/primary/central) "cuT" = (/turf/simulated/floor/holofloor{icon_state = "engine"; name = "Holodeck Projector Floor"},/area/holodeck/source_wildlife) "cuU" = (/turf/simulated/floor/holofloor{icon_state = "engine"; name = "Holodeck Projector Floor"},/area/holodeck/source_plating) @@ -8508,7 +8510,6 @@ "dhL" = (/turf/simulated/floor/plating,/area/derelict/bridge) "dhM" = (/obj/structure/table,/obj/item/weapon/paper/crumpled,/turf/simulated/floor,/area/derelict/bridge) "dhN" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor,/area/derelict/bridge) -"dhO" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/medical/virologyaccess) "dhP" = (/obj/structure/window/reinforced,/turf/simulated/floor/airless{icon_state = "damaged5"},/area/derelict/singularity_engine) "dhQ" = (/obj/structure/window/reinforced,/turf/simulated/floor/airless{icon_state = "damaged4"},/area/derelict/singularity_engine) "dhR" = (/obj/structure/window/reinforced,/obj/item/weapon/table_parts/reinforced,/obj/item/weapon/table_parts/reinforced,/turf/simulated/floor/airless{icon_state = "damaged4"},/area/derelict/singularity_engine) @@ -10939,11 +10940,11 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcaaaaaaaaaaaaaaaaaaaaaaaaaaiaiqantansaeFaitanqaivaniahYaixaiyangahDanBaiBahGaiCanAagDaiDanzanvanyanuaiIagHaiJaiKaiLacfaceaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcaaaaaaaaaaaaaeFaeFaeFaeFagXaiManPanOaeFaiPanMaiRaniahYaenaiSanGaiUanFaiWaenaiXanEaeUaiZakBanCaceajbajcajdajeajfajgajhaceaceacfacfacfacfacfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajiaaaaaaaaaajiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcaaaaaaaafaaaaeFajjajkajlajmajnagbagcaeFajqageajqagdajqaenahbagfajtafTahfaenaceafYajvajwafXagaaceafZajAajAajBaceajCajhajhaceajDajEajFajFajGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajiajiajiajiajiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcaaaaaaaafaaaaeFajHajIajJajKajLaeVaeXaffaffafhaflafnaffafsaiwafnaftafhafuaiYaflafxafwafBafzafIafHafRafKakeakfakgakhakiakjakkaklakmaknakoahTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajiaaaaaaajiaaaaaaajiajiajiajiajiajiajiaaaaaaajiaaaaaaajiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcaaaaaaaafaaaaeFavjajIajJajKajLaeVaeXaffaffafhaflafnaffafsaiwafnaftafhafuaiYaflafxafwafBafzafIafHafRafKakeakfakgakhakiakjakkaklakmaknakoahTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajiaaaaaaajiaaaaaaajiajiajiajiajiajiajiaaaaaaajiaaaaaaajiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcaaaaafaafaeFakqakraksafkakuakvaeOaeLaeNaezaeuaeqaeoaeTahzaeoaeSaezaevagTaeuaeqaeoaeoaelaeKaeIaiRaeGaeEaeDakNahaajhakPaceaklakQajFajFakRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajiajiajiajiaaaajiajiajiajiajiajiajiajiajiaaaajiajiajiajiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcafcaaaaaaaafaeFaeFaeFaeFaeFaeFaeFaeFaebakTakUaeFaeFagXakVaecaeBakYakZaeeakZagXaeFaeFaeFaedaekalealealfalgaegalialjalealkaceaceacfacfacfacfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajiajiajiajiaaaajiajiajiajiajiajiajiajiajiaaaajiajiajiajiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcafcafcafcaaaaaaafcafcafcafcafcafcafcaaaaaaafcafcafcafcaaaaaeaaaaafaafaafallaeFalmalnadXadYadTadUadPaltaluadKalwadQalyalzadMadLalCadKalDalEadPadNadFalealHalIalJadHalLagraleakPalNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalOalOalOalOalOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalPalPalPalQalQaaaaaaaaaaaaaaaaaaaaaaaaajiajiajiajiaaaajiajiajiajiajiajiajiajiajiaaaajiajiajiajiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaalQalQalPalQalQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcafcafcafcafcafcafcaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafalRaeFalSalTadpaeFadAadBalXalYalZadoambafvakXameacUamgalCagpamialYamjadGadFaleamlammammacCammagialeakPalNaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaalOalOalOalOalOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalPaaaaafaaaampaaaaaaaaaaaaaaaaaaaaaaaaajiajiajiajiajiajiajiajiajiajiajiajiajiajiajiajiajiajiajiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaalQalQalPalQalQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcafcafcafcafcafcafcaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafalRaeFalSalTadpaeFadAadBalXalYalZadoambafvakXameajHamgalCagpamialYamjadGadFaleamlammammacCammagialeakPalNaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaalOalOalOalOalOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalPaaaaafaaaampaaaaaaaaaaaaaaaaaaaaaaaaajiajiajiajiajiajiajiajiajiajiajiajiajiajiajiajiajiajiajiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaafaaaampaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcafcafcafcafcafcafcaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafamqamraeFamsamtadmaeFadgadhacXamyamzamAamBacWacVamEacUamFalCamAamGamHacSacIacFaleamLamMammacCammadnaleakPalNaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaalOalOalOalOalOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalPaafamOaafalPaaaaaaaaaaaaaaaaaaaaaaaaajiajiajiajiajiajiajiajiajiajiajiajiajiajiajiajiajiajiajiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalPaafamPaafalPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcafcafcafcafcafcafcaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafamqalRaeFacjackabZacaacgaciaeFaeFaeFagXamWamFabWamYacBanaadzagXaeFaeFaeFacAacnacmaczacyanhaclammabzaleakPalNaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaalOalOalOalOalOaaaaaaaaaaaaaaaaaaalPalPalPalPalPaaaaaaaaaankaaaaaaaaaalPalPalQalQalQaaaaaaajiajiajiajiajiajiajiajiajiajiajiajiajiajiajiajiajiajiajiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQalQalQalPalPaaaaaaaaaanlaaaaaaaaaalPalPalQalQalQaaaaaaaaaaaaafcafcafcafcafcafcafcaaaaaaaaaaaaaaaaaaaaaaafaafanmannanoanpaeFaiHanrajsaeFajpajrajuanwanxadKajzajMajxajyajNamFalCadKanDalEadPadNajQaleajPajOanHacCammapcaleakPalNaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaalOalOalOalOalOaaaaaaaaaaaaaaaaaaampaaaaaaaafaafaafaaaaaaankaafaafaaaaafaafaaaaaaalQaaaaaaajiajiajiajiajiajiajiajiajiajiajiajiajiajiajiajiajiajiajiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -10972,7 +10973,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaXoaDcaDcaBJaDcaEEaDcaEEaGxaEEaDcaEEaDcaEFaEGazSayWaGyaAKaAKaSQaYKaYPaYKaQlaQlaYJaYNaYOaYLaYMaYLaYLbakbajaGKaGLaGLaGLaGMaGLaGLaGNaGOaARaaaaZXaAkaGQaZOaGQaAkaAkaaaaygavOaylbaiaZIaZiaZqaZDaZEaZhbglaxraHbaypaCxaCuaAraypaAsaAraCwaZgaypaHdawGaYhaHfaHgaUnaYfalNalNalNalNalNaHjaYbazBaHlaAxazBaHmazBaHnazBaHobcvbcwbcNbczbdNbcXaYUbdlbdmbbvbdAbbwbbvbbvbbxbbzbbybbAbbybbFbbybbybbibcubcbbawbawbbEbaSbawbaxbawbaWaYIaHOaHPaHQaHRaHSaHTaEsaHUbaXaEuaHWaHXaYiaHZaGnaIaaIbasHaIcaEyaEyaEyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDiaIdaECaEDaDcaEEaDcaEEaDcaEEaDcaEEaDcaEFaEGazSaIeawzawyawxawuawuawuawzawCawDawzawAaImaInawBauKauKaAPaGOaIpaCaaIqaGOaGOaIraIsaItaIuaARaaaawaaaaavMavNavMaaaaafaaaaygavOaylaIyaIzavZaIBaICaylavLapaaxraIEaypazlaIFaIGazoaIHaIIaIJaIKaILaIMawGaBsaIOaIPaIQaBKaISaaaaaaaUnaIUaIVaBLazBaIXaAxaAxaAxaCEaAxaAxaAxauOaBoaKyaBoaBoavJaBoaJcaBoaJdavHavGaJgaJhaJiaJjaJkavFaJjavEaJjaJjaJjaJjavDaJjaJjavCaJjaJjaJjaJjasIayRayvaAzaAiaBraBpazHbMsazIavpavlavmavnazFayNayPazDazEasHaIbaJDaJEaJFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJHaJIaBIaDbaDcaDcaDcaJJaDcaDcaJKaDcaDcaDiaJLaJMayWaxTaJNaJOaJOaJOaJOaJOaJOaJOaJPasDatKatKavkatKatKaAPaJSaJTaJUaJVaJVaJVaJVaJWaJXaJYaARaJZavaaKbaKcavbaKeaKbaKbaKfaygavcaylaylaylayKayJayLawGayBavKaxraxraxraxraKlaKmaCxaCxaKnayHawGawGaxraxraIOaIOaIOaIOaKpaKqaKraKsaUnaKtaIVaKuazBazBazBazBazBazBazBazBazBauOaKwaKvaKxaIZauMavIaKBaKCaJdauyauWauXaKGaKHaJjaKIauVaKKawtaKKaKMaKNaKOauQaKQaKRauxaKTauUaKVaJjauwauvaKYaJraKZaJtaJuaysaEsaLbauuaLdavfauoaveaunaEuaEyaLhasHaIbaLiaLjaLkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJHaBIaBJaBIaBIaDRaDSaBIaBIaBJaJIaLmasSaLnaxTawXaLoaLoaLpaLoaLqatHaLraLsasDaLtaLuaACaLwazwaLyaLzaLAaLzaLzaLzaLzaLzaLzaLzaLBaLCazNaAdaLFaLFayTaLHaLFaLFaLFaLIazKaLKaLLaLFazJaLNaLOaLPaDKaIOaLRaLSaIOaIPaLTaLTaLTaLTaLTaLTaLUaLVaLWaLXaLYaLZaMaaMbaMcaIOaIOaIOaDGaMeaMfaMeaMgaMhaMiaMjaIOaMkaIOaBoaMlaxMaOOaMoaMnaMpaxKaMraMsaMtaJdaxLaMvaMwaMwaMxaJjaMyaxJaMAaxBaMAaMAaMCaMDaxDaMDaMFayOayCayQaMDaJjasIarZaHPaHPaCXaDFaHPaHPaEsaMOaMPaEuaytaMRaHZavTaEuaMSaymayeaIbaEyaEyaEyaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJHaBIaBJaBIaBIaDRaDSaBIaBIaBJaJIaLmasSaLnaxTawXaLoaLoaLpaLoaLqatHaLraLsasDaLtaLuaACaLwazwaLyaLzaLAaLzaLzaLzaLzaLzaLzaLzaLBaLCazNaAdaLFaLFayTaLHaLFaLFaLFaLIazKaLKaLLaLFazJaLNaLOaLPaDKaIOaMkaLSavoaIPaLTaLTaLTaLTaLTaLTaLUaLVaLWaLXaLYaLZaMaaMbaMcaIOaIOaIOaDGaMeaMfaMeaMgaMhaMiaMjaIOaMkaIOaBoaMlaxMaOOaMoaMnaMpaxKaMraMsaMtaJdaxLaMvaMwaMwaMxaJjaMyaxJaMAaxBaMAaMAaMCaMDaxDaMDaMFayOayCayQaMDaJjasIarZaHPaHPaCXaDFaHPaHPaEsaMOaMPaEuaytaMRaHZavTaEuaMSaymayeaIbaEyaEyaEyaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawXayVaMVaAFaAFaAFaAFaMWayVawXaAHasSaAIaMXaMYaMZavSaNbaNbaNcatHaNdaLsaxAaNfaLuaxzaNhaNiaNjaNkaNlaLzaLzaLzaLzaLzaLzaLzaxhaxiaxuaLzaLzaLzaxpayuaLzaLzaLzaLzaxvaLzaLzaLzaxtaNmaLuaLPaIOaIOaIOaIOaIOaIOaIOaIOaIOaIOaIOaIOaNsaNtaNuaNvaNwaNxaNyaNzaNAaIOaIOaIOaLPaIOaIOaIOaIOaIOaIOaIOaIOaNBaCzaCjaCWaCQaMpaNEaMpaMpawEaNGaMsaNHaJdawFawJawSaNLaNMaJjaNNawTaNPawHaNRaNSaJjaNTawIaNTaJjaJjaJjavCaJjaJjasIarZaNVaHPaHPaNWaHPaNXaEsaEuaEuaEuaEuaEuaEuavQaEuaIbaIbasHaIbaNZaOaaEyaaaaafaaaaaaaaaaaaaaaaaaaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafazQasSaMYavtazSaObaOcaOdaOeazSavtaOfaOgasSayWaxTaMYaOhaOiaNbaNbaNcatHaOjaLsasDaNfaLuasXaLAaLzaLzaLzaChaEzaBPaLzausardaOmaOraALatmarMaOmaOvaOwaOxathatlatkatjatiatcatbatbasYatdaNmaLuaLPaIOaOHaIOaOIaOIaOIaOIaOIaOIaOIaOIaOJaOKaOIaOIaOIaOIaOLaOIaOIaOIaOIaOIaOMaONaOIaOIaOIaOIaOIaOIaOIaIOaIOaIOaBoaAYasOaOQaOQaOQaORasQaNGaMsaBQaJdaJdaJdaJdaJdaOUaJjaOVasKasLasNaNPaNPaJjaOZasMaPbaPcaPbaPbasJaPeaJjasIarZaPfaPfaPgaPhaPiaPiaPjaEsaPkaPlaPmaEyaskaVbasbaIbaIbasHaIbaEyaPsaEyaPtaPtaPtaPuaPvaPwaaaaaaaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafatHaxRayVaJMayWaxTaxTayXaJMayVaJMaPxawYaPyaxTaxRaPzaPzaLpaPzaLqatHaPAaLsasDaPBaPBasCatzaPBaPEaPEaPEaPEaPEaPFaPGaPEaPEaPEaPEaPEasEaPIaPJaPIaPKasGaPMaLzaLAaPNasFaPPaPQaLAaLzaPRaPRaUnaIOaIOaIPaPTaKraKraPUaPUaPUaPUaPVawGawRaxqaPZaQaaQaaQbaQcaQaaQdaQeaQfawGaQgaPUaPUaPUaPUaKraKraQhaINaIOaIOaBoaQiashaQkaQkaQkaQkasyassasiaQoavXarFdZFaQsaQtaQuaJdaJdaszaQwasBaQyaQzaJjaQAasAaQCaQCaQCaQCascaQEaJjasaarZaQGaHPaPgaPhaHPaHPaQHaEsaQIaQJaQKaEyaQLarpaPraSoaPoasgaIbaQQaQRaEyaVuaQTaPtaQUaQVaQWaafaaaaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -10984,34 +10985,34 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaYnavtaYnaxTaYoaBgaYpaYqaYraYraYraYraYsaYtaTSaYuaYvaOlaCSaYyaYyaYyaYzaYyaOsaRnaTWaUKaWZaWZaPDaSGaFOaFPaFEaFDaFJaFFaFAaIgaFCaFBaFLaFKaFMaYSaYSaYSaYTaUnaHhaIOaYVaYWaYXaYYaYZaZaaPWaHkaHiaZeaZfaPWaPWaPWaPWaPWaPWaPWaPWaPWaHeaXwaZkaZlaPWaZaaYZaZmaGTaYWaZoaIOaIOaThaQoaZpaQoaQoaQoaFHaQoaQoaFUaQoaZraZraZraZraZsaZtaKAaRXaRXaRXaZvaZwaZxaJdaZyaZzaSgaZAaZAaZBaZzaZCaJjaFWaBDaZFaZGaPgaPgaPgaPgaZHaPgaPgaPgaFVawKaIbaPoaPraSoaPoaPraIbasHawKaYjaSsaSsaZJaSsaSsaZKaYmaafaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaZLaZMaWGayWaZNaBWaZPaZQaZRaZSaZTaYraZUaZVaTSaZWbaEaOlaCSaZYaZZbaaaCLaYybacbadbaeaPEbafbagbahaOnaPEaCRaBtbalbalbalbalaHubalbalbanbaobaobaobapbaobaqaUnbasbatbauawGawGawGbaAbaAbaAbayaFQbaybaAbaBbaBbaBbaBbaBbaBbaBbaBbaBaCVbaDbbubaDaPWaPWaPWawGawGawGaZoaIOaIOaUnbaFbaGaBlbaHaQobaIaQobaJbaKbaLaZrbaMaFRbaOaJdaJdaJdbaPbaQbaQbaQaJdaJdaJdbaRaSgaSgaLeaFNbaUbaVaGwaJjaBEaBDbaYaEsbaZbbabbbaWmbbcbbabbdaWmbbeaEybbfaQMaQNbbgaQMaQNaIbbbhaEyaDkbbjbbkaSsaSsbblbbmaYmaafaafaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaafaxRbbnaPybboaBgbbpbbpbbqaAMbbsbbqbbtbbpaTSaQpaOTaGHaByaBzaBzaBAaBBaBzbbBbadbbCaPEbafbagbbDaGPaPEaBxbfabalbbGbbHbbHazqbbIbalbbJbbKbbLbbMbarbarbaraUnaIOaIOaYVawGbbPbbQbbRbbSaBRaFraFlbbWbaAbaBbbXbbYbbZbcaaBhbccbcdbaBaCVbcebcfbcgbchbcibcjaAVbdsawGbcmbcnbcnaUnbcqbcqaBoaBobcoaThbcobcpaBoaBoaRRaBoaBoaBobcqbcrbcrbcrbcrbcrbcrbcsbcrbcqazGbctbctaCKaZFaZFaZFaZFbcqaBEaBDbaYaEsaEsaEsaEsaEsarZaEsaEsaEsaEsaEyaBCbcAawKavUawKbcybcAaEyaEybcBaSsbcCaSsaSsaWAbcDbcEaTMaWDaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazQasSbcFaAFaWGatHatHatHatHatHatHbcGbboaBgaTSaTSaTSaTSaTSaTSaTSaTSaTSbcHaReaOlaCSaZYbcIbcJbcKaYybcLbcMaDEaPEbafbagbcOaOpaPEaBxbfabalbbHbcQbcQbbHbcQbalbbJbcRbcSbcSbcTbcUbcVbarbcWaIOaYVaGpbcYbgCbdabdbbdbbdaaGibddbaAbaBbdebdfbdgbdhbdibdjbdkaGYaHabdnbdobclbdpbdqbdrbclaLgawGaZobdtaIOaNsbdubdvaZFaZFaZFaZFaZFaZFaZFbdwaZFaZFaZFaZFbdxaZFaZFaZFaZFaZFaZFaZFaZFbdyaZFaZFaZFaZFaZFaZFaZFaZFbdzaDPaDTaCYaDUaCYaDVaCYaDXaDWaDYaCYaDZaCYaEaaEbaCYaCYaCYaCYaCYaCYaEcaEdaEebdObcCaSsaSsaSsaVkbdPaVjaVkaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQaaaaafbdRazTaxVbdSaCTbdUbdUbdUbdUbdUbdUbdVbdWaPBaXiaReaOlaCSaYyaYybdXbdYaYyaPEaPEaCUaPEbafbeabcOaOoaPEbfbaFSbalbecbedbbHbcQbeebalbbJbefbcSbcSbcSbegbehbarbeiaIOaYVaGkbekbgCbembenbeobepaGibeqbaAbaBberbesbetbetbetbeubevbaBaCVbexbclbclbdpbeybdrbclaLfawGbeAaIOaIOaNsbdubdvaZFaZFaZFaZFaZFaZFaZFbeBaZFaZFaZFaZFaZFaZFbeCaCYaCYaCYaCYaCYaCYaCZaCYaCYaCYaCYaCYaCYaCYaDlaDDaDCaDtaZFaZFaZFaZFaZFaBDaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFbeIbdzbeJaSsaSsbcCaSsaSsbeKbeLaTMaTMaTNaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbdQaWEaWFbeMayWbeNbUVbePbePbeQbePbePbePbeRaPBaPBaPBaPBaOlaCSaZYbeSbeTbeUaYybeVbeWbUWaPEaPEaPEaPEbUmaPEbUybfabalbUqbbHbcQbUibUkbalbbJbarbfcbcSbcSbPhbfebarbULaIOaYVbTrbfhbgCbembfibfjbepaGibfkbaAbflbfmbfnbetbfobetbdfbfpbfqaCVbfrbfsbftbfubfubfvbclbfwawGcuRcuSaXNcvvcxRdPwdPxdTPdPxdPxdPxdPxdTQbTtdTSctbctbctaaZFaZFaZFaZFbfDaZFbfybfOaZFctcctectdbfIbWUbfIbfIbfKdTUdTVdTWaZFaZFaZFaZFaZFbfObfPbfDaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFbdzbfQbfRbfSbfTbfUbfVbbmbfWaafaaaaafaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazQasSbcFaAFaWGatHatHatHatHatHatHbcGbboaBgaTSaTSaTSaTSaTSaTSaTSaTSaTSbcHaReaOlaCSaZYbcIbcJbcKaYybcLbcMaDEaPEbafbagbcOaOpaPEaBxbfabalbbHbcQbcQbbHbcQbalbbJbcRbcSbcSbcTbcUbcVbarbcWaIOaYVaGpbcYbgCbdabdbbdbbdaaGibddbaAbaBbdebdfbdgbdhbdibdjbdkaGYaHabdnbdobclbdpbdqbdrbclaLgawGaZobdtaIOaNsbdubdvaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFbdxaZFaZFaZFaZFaZFaZFaZFaZFbdyaZFaZFaZFaZFaZFaZFaZFaZFbdzaDPaDTaCYaDUaCYaDVaCYaDXaDWaDYaCYaDZaCYaEaaEbaCYaCYaCYaCYaCYaCYaEcaEdaEebdObcCaSsaSsaSsaVkbdPaVjaVkaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQaaaaafbdRazTaxVbdSaCTbdUbdUbdUbdUbdUbdUbdVbdWaPBaXiaReaOlaCSaYyaYybdXbdYaYyaPEaPEaCUaPEbafbeabcOaOoaPEbfbaFSbalbecbedbbHbcQbeebalbbJbefbcSbcSbcSbegbehbarbeiaIOaYVaGkbekbgCbembenbeobepaGibeqbaAbaBberbesbetbetbetbeubevbaBaCVbexbclbclbdpbeybdrbclaLfawGaztaIOaIOaNsbdubdvaZFaZFaZFaZFaZFaZFaZFbeBaZFaZFaZFaZFaZFaZFbeCaCYaCYaCYaCYaCYaCYaCZaCYaCYaCYaCYaCYaCYaCYaDlaDDaDCaDtaZFaZFaZFaZFaZFaBDaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFbeIbdzbeJaSsaSsbcCaSsaSsbeKbeLaTMaTMaTNaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbdQaWEaWFbeMayWbeNbUVbePbePbeQbePbePbePbeRaPBaPBaPBaPBaOlaCSaZYbeSbeTbeUaYybeVbeWbUWaPEaPEaPEaPEbUmaPEbUybfabalbUqbbHbcQbUibUkbalbbJbarbfcbcSbcSbPhbfebarbULaIOaYVbTrbfhbgCbembfibfjbepaGibfkbaAbflbfmbfnbetbfobetbdfbfpbfqaCVbfrbfsbftbfubfubfvbclbfwawGbCAcuSaXNcvvcxRdPwdPxdTPdPxdPxdPxbCEdTQbTtdTSctbctbctaaZFaZFaZFaZFbfDaZFbfybfOaZFctcctectdbfIbWUbfIbfIbfKdTUdTVdTWaZFaZFaZFaZFaZFbfObfPbfDaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFbdzbfQbfRbfSbfTbfUbfVbbmbfWaafaaaaafaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbdQaYnavtaYnaxTbfXbePbfYbfZbgabgabgbbgcbgdbgebgebgebgebPBbUubUrbUrbUtbUsbUrbUobUobUpbUobUnbUlbUlbSbbRubTJbTRbUCbTQbUBbUBbTPaYQbalbTKbarbgybcSbcSbPhbgzbgAbffaIOaYVbaAbgCbTpbdabdabdabdaaGibgEbaAbaBbgFbgGbWJbgIbgJbgGbgKbaBaCVbURbUQbgNbgObgPbgQbgRbgSawGcsoaHfaHfawGbTqbTqbgUbgUbgUbgUcmTcmTcsUcsVcsrcsscsVcsUcmTcmTcmTckbckbckbckbckbbhbbhbbRqbhbbhbbhbbhbbhbbktcsXbxbcsYcsZaZFbhkbhkbhlbhlbhlbhlbhlbhmbhnbhnbhobhnaZFbhnbhobhnbhnbhpbNtbNtbNtbNtbhrbhgaPtaPtaPtaaaaaaaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbdQaZLaZMbeMayWbhsbePbhtbePbhubhvbePbePbePaRebhwbhxbhxbTHaYyaZYbhzbcJbhAaYybUabTZbTTbTSbTVbTUbTXbTWbTYbTXbTMbTNbLkbTCbLkbLkbKEbTDblqbTbbhSbcSbcSbTLbhUbhVbffaIObhWbaAbhXbaAbhZbVnbibbSOaGibaAbaAbaBbiebifbigbihbiibijbikbaBaCVbTybimckrbiobipbgQbclbiqawGbToaIObirawGcqlcqncqSbTncrDcrGcrMcsncqUcqVcrAcrBcogcofcpscoYcmTcmIbVecmUcpMckbcqkcpNcpzcptbVUcktcktclSbktcggbiSbiScksbiSbiUbiUbhlbiVbiWbiXbhlbiYbiZbiYbhlbhmbhnbhpbNtbSQbTibSQbNtbThbTgbNtbjebTEbjgbhgaaaaaaaaaaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQaaaaaaaMYbbnaPybjhbePbjibePbjjbjkbjlbQYbePbjnaRebjoaRebTjaYyaYyaYyaYyaYyaYybTAbjrbjsaRebjtbalbalbalbTzbalbalbalbrnbalbalbalbMVbalblubRFbjzbcSbcSbPhbjAbgAbSwaIObSybaAbjCbaAbaAbaAbaAbxBbTkbaAbTmbTlbjGbjHbbXbjIbbXbjJbjKbTvbTxbTybjNbclbjObjPbgQbjQbjRbaDbSNaIOaIOcgQcglcgPcgjcgkchOciichMchNchochocgRcgScjtcjpciHciEciDciCciBciAckcckbcjDcgecjwcgecjvcjucgecgfbktcggbiSbkwcfKcgdbkzbkAbkBbkCbkDbkCbSjbkFbkGbkHbhlbkIbkJbkKbNtbSzbSEbSDbSMbNHbSAbNtbkRbkSbkTbhgaaaaaaaaaaaeaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazQasSbcFaAFaZMaTPaTPaTPbkUaTPbkVayWaxTaxTbePbkWbkXbkYbkZblablbblcbldbldbldbldbXnbWDbWDbWDbTXbTXbTXbWCblhblhblhblibalbljblkbWEblmblnbloblpblpblrblschfckRcnZbgAbjzbcSbXvbWwbWxbWxbWRbEvbWMbXmbWXbWLbZTbWIbXmbWTbXkbXjbXibTvbTvbTvbTvbWHbTvbTvbTvbTvbWjbWGbWQbWSbWObWPbWKbWNbWsbWFbWVaIOaIObgUdVHdVIdVJdVKdVEbOIdVFdVGcjtcjtcjtcjtcjtcjpdVzdVydVBdVAdVDdVCdVuckbdVwdVvdVxcgecjvcjucgedVLbktcggdVNbYedVMbYbbXHbXMbXFbXGbXGbXGbXUbXWbXAbXzbXybXxbXEbXDbXhbXgbXebNHbXcbXbbXfbNtbmPbkSbmsbhgaaaaaaaaaaaaaaaaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabmQbmRavtaYnawYawYawYaPyaxTaxTbePbmSbmTbkZbmUbePbePbePaPBbmVbmWbmXbmYbmXbmXbmXbmYbmXaPBaPBbalbalbalbmZbalblpblpbnablpblpblpblpblpbnbbVobndbcSbWebWdbWdbWdbWabWcbVYbVcbVgbWibWncrRbWfbWfbWhbWgbWqbWpbVsbWrbWobnxbnybnzbnAbnBbnCbnzbnDbnxbPVbTybnFbnGbnFbaDbaDbaDbWAbaDdUZaIOaIOcgQcglcgPdVadVbbWBbgUdUSdUTdUXdUYdUVdUWdVndVmdVldVkcmTdVpdUEdVodVfdVedVddVcdVjdVidVhdVgdVidVqbUedVrdVsdTXbnYdTYboabobbocbodboebofbofbogbkCbohbhlbWvbojbokbNtbVZbVAbVzbUJbVVbVXbNtbmPbkSborbhgaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaabmQavtavtaYnaxSaxSaxSbosaxSaxSbePbotboubovbkZbePaaaaaaaaaaafaafbowbowbowbowbowbowbowaaaaaaboxboybozboAboBblpblpblpblpblpblpblpblpbUNbjzbUOdYAboEboFbarbarbVGbVHbaraUnboHboIbVEaUnboLboMboMbNsboMbVFbUGboMabLboQboRbnzboSbnBboSbnzboTboQbPVbVkboVbfuboWbVybVBbVDbUFbnFbpcaIOaIObgUbWmcqndUQdURdUNbixdUOdUPdUJdUKdULbVWdUGdUFdUIdUHcmTckbdUEdUDdUAckbdUCdUBdUydUxdUzdUzdUvdUwbktcggbiSdUubkxbkxboabpybpzbpAbpBbpCbpCbpDbpEbpFbhlbpGbojbpHbNtbUYbUTbUPbUJbNHbUIbNtbkRbkSbpMbhgaaaaaaaaaaaaaafbpNbpObMebpObMebpObpQaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaabmQavtavtaYnaxSaxSaxSbosaxSaxSbePbotboubovbkZbePaaaaaaaaaaafaafbowbowbowbowbowbowbowaaaaaaboxboybozboAboBblpblpblpblpblpblpblpblpbUNbjzbUOdYAboEboFbarbarbVGbVHbaraUnboHboIbVEaUnboLboMboMbNsboMbVFbUGboMabLboQboRbnzboSbnBboSbnzboTboQbPVbVkboVbfuboWbVybVBbVDbUFbnFbpcaIObDZbgUbWmcqndUQdURdUNbixdUOdUPdUJdUKdULbVWdUGdUFdUIdUHcmTckbdUEdUDdUAckbdUCdUBdUydUxdUzdUzdUvdUwbktcggbiSdUubkxbkxboabpybpzbpAbpBbpCbpCbpDbpEbpFbhlbpGbojbpHbNtbUYbUTbUPbUJbNHbUIbNtbkRbkSbpMbhgaaaaaaaaaaaaaafbpNbpObMebpObMebpObpQaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxRaYnaYnbpRaTPbpSazQasSbpTbpSbePbpUbpVbpWbpXbePaaaaaaaaaaaaaaabowbowbowbowbowbowbowaaaaaabpYbpZblpbqabqbbqbbqbbqbbqbbqcbqbbqbbqbbqdbqebqfbUHbqhbqibarbqjbPhbqkbqlbtfbffbqnbqoaUnaUnboMbqpbVdbqrbXdbTuboMbTwbVfbVhbqxbqybqzbqybqAbVibVjbTxbVkbqEbfubqFbaDbqGbnFbTIbnFbpcaIOaIObgUdUjdUkdUhdUidUgbixdUedUfdUcdUddUadUbbZzdUsdUrdUqdUpbPZdUodUnbPZbPZbPZbPZdUmdUlbPZbPZbktdTZbktcggbiSdTXbnYdTYbrabrbbrcbrdbrebrebrebpDbkCbrfbrgbrhbkJbVlbNtbUEbUAbUzbUDbNHbUvbNtbUwbmrbhgbhgaaaaaaaaaaaaaafbrobrpbrqbrrbrrbrsbroaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowbrubrvbrwbrxblpblpblpbrybrybrybryboAblpblpblpbnbbqgbqTbrzboZbrCbrDbrEbPhbcSbrFbRgbffbqnbrHbrIbrJbNNbrLbPPbrNbPObNMboMaafbrQbrRbnzbqybrSbqybnzbrTbrUbPVbPWbrWbrXbrYbaDbrZbnFbOlaUnbpcaIObNybNzbNAbNCbNDbPKbIibixbPMbPQbLDbPRbPubPSbLDbLDbPYbPUbPZbPZbQxbQpbQFbIrbQIbQHbQSbQJbQVbPZbJqbRabQWbQXbRfbRhbRbbRbbPGbsEbkBbsFbrebrebrebsGbkCbsHbhlbsIbsIbPHbNtbNEbNKbNJbNIbNHbNLbNtbmPbsPbhgaaaaaaaaaaaaaaaaafbsQbsRbrqbrrbrqbsSbMeaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowbsTbsUbsTbsVbsWblpblpblpblpblpblpboAblpbsXbalbalbsYbcSbndboCbtabtbbtcbPhbcSbcSbtdaIObqnbtebtfbtgbPrbtibtjbtkbPqbNxboMaafbrUbrUbIgbtobtpbnzbtqbOvbNgbPpbNqbtvbtvbtvbtvbtvbtvbXJawGbLTaHfaHfawGbMcbMmbLUaMzbPfbixbOUbOYbPubPvbPsbPtbOibOhbOgbNUbOybOubOkbOjbOCbOBbOAbOzbOGbOFbOEbODbNubPAbPAboDbPCbPDbPDbPDbtZbHWbkBbubbkCbkCbucbPgbkCbuebkBbufbugbORbMubMtbMCbMvbNdbMNbNtbNtbuobhgbhgbupbuqbuqbuqburbkIbrobrrbrqbrrbrrbrsbroaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaeaaaaaaaaabowbowbowbowbowbowbowbusbutbusbuublpblpblpbrybrybrybryboAblpbuvbuwbalbuxbcSbndboCbuybuzbtcbOxbuBbqfbuCbuDbuEbpcbuFbtgbuGbuHbuIbuJbOmbMfboMbOpbOobNBbOnbuRbrSbuRbOvbOwbuTbuTbNqbuUbuVbuWbuXbuYbuZbMkawGbvcaIOaIOawGbLSbMnbMrbMBbMSbMTbMUbnebMLbMPbMQbMRbNabMZbNcbNbbApbHvbMYbMWbNlbNkbNGbNobNfbNebNibNhbMjbMlbMhbMibiSbvybvzbMgbvBbvBbkBbvCbvDbvEbkBbNVbkCbvGbvHbvIbvJbOebvLbvMbOfbvObvPbvQbsIbkJbvRbvSbvTbvUbvVbvVbvVbvVbvWbvXbpObMebvYbMebpObvZaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowbwabrvbwbbwcblpblpblpblpblpblpblpboAblpbuvbwdbalbwebegbndbncbqfbwgbqfbNFbcSbrFbRdbffaIObpcbuFbtgboMbwibwjbwkbwlbMdboMbwpbwnbHhbzzbNgbNjbNmbNnbwubGIbwwbNqbGCbwybwzbwAbwBbwBbnTbBvbambdDaIRbgUbLQbLRbLNbLPbeZbixbLYbLZbLDbLXbLVbLWbFNbLDbLAbLzbDcbDcbDcbDcbDcbHfbIIbHfbAqbLJbLGbAqbAqbAqbAqbLybiSbiSbxbbxbbxbbxbbkBbkBbkBbkBbkBbMMbxebxfbxgbxhbxibMobMpbMpbMqbxmbojbxnbxobxpbvRbojbvTbxqbojbxrbojbxsbkIbupbuqburbxtbkIaaaaaaaafaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowbusbutbusbxubxvblpblpbxwbSRbSSbSRbSXbSRbSYbTabSTbSUbSVbzmbFnbSWbTcbTdbSVbxFbxGbRgbffaIObxHbxIbxJboMbxKbxLbxMbxNbSdbRzbXwbSfbRUaYRbSubSvbSsbStbSkbSrbSebShbybbycbycbydbyebyfbQEbtvcbPbDNbONbgUbixcbQcciccjcarcawcaWcbabPucbccbecbOcdabPucdkbWubRSceEceJceFbDccckccFccEbAqbSCbTsbRebRvbAybAqbwNbRybRBbRwbRxbRpbRpbRibRmbRpbRtbRrbRsbREbRDbRpbRCbQubSPbyPbyQbSLbySbySbySbySbySbyTbyUbyVbupburbkIbojbvVbyWbyXbyYbyZbzabzbaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowbzcbzdbzcbzebzfbzgbzgbzgbzgbzgbzhbPLblpbuvbzjbalbzkbOXbsZbwfbzoboEbRZbzqbzrbarbarbzsaIObztbzubtgboMbzvbzwbzxbwjbQTboMbRGbRAbRHbOpbQwbzEbQDbuTbQvbzIbzJbNqbzKbzLbzMbzNbyebyfbQEbtvbpcbDNbNwbOHbOLbOMbOJbOKbEpbXtbXrbXsbLDbLDbLDbXubWzbLDbWybWubXqbXpbXobOSbDcbNvbVRbVQbWtbRcbQUbQKbRjbQabYcbrBbYObZMbZNbZObvMbvMbArbvMbAsbvMbOfbQqbQqbQqbQsbQrbQtbAvbAwbAxbRTbAzbAAbABbACbySbADbAEbAFaafaafbkIbAGbvVbyXbyXbvWbAHbAIbAJaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowbzcbzdbzcbzebzfbzgbzgbzgbzgbzgbzhbPLblpbuvbzjbalbzkbOXbsZbwfbzoboEbRZbzqbzrbarbarbffaIObztbzubtgboMbzvbzwbzxbwjbQTboMbRGbRAbRHbOpbQwbzEbQDbuTbQvbzIbzJbNqbzKbzLbzMbzNbyebyfbQEbtvbpcbDNbNwbOHbOLbOMbOJbOKbEpbXtbXrbXsbLDbLDbLDbXubWzbLDbWybWubXqbXpbXobOSbDcbNvbVRbVQbWtbRcbQUbQKbRjbQabYcbrBbYObZMbZNbZObvMbvMbArbvMbAsbvMbOfbQqbQqbQqbQsbQrbQtbAvbAwbAxbRTbAzbAAbABbACbySbADbAEbAFaafaafbkIbAGbvVbyXbyXbvWbAHbAIbAJaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowbAKbALbAMbalbalbANbrvbrvbrvbAObalbalbAPbAQbARbalbASbASbASbRKbASbAUbRLbAWbAXbAYbAUbffaIObAZbBaaUnboMawGawGawGawGbQlboMbOpbQObOpbOpbQnbQobQnbuTbuTbuTbuTbNqawGawGawGawGawGbtvbPobtvbpcbVabuDbVbbUSbQkbUUbUZbUdbUfbUgbrAbTFbTGbUbbUcbVKbVJbVMbVLbVxbVwbVIbVCbQcbVpbVvbVtbVmbPTbQbbQabOQbPEbAqbSKbSJbzCbzCbzCbzCbzCbQjbzCbzCbELbQhbQiblTblTbBUbKjbOqbBWbAwbBXbQZbBZbCabCbbCcbySbADbAEbCdaaaaaabkIbCebCfbkIbvWbkIbkIbvWbkIaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabCgaafaaaaaaaaaaaabASbChbNpbQRbCkbAUbQQbCmbCnbCobAUbffaIObQMbQLbQNbQLbPzbPebPIbPFbPNbPJbQfbQPaXNbCzbCAbCBbCCbCDbCEaIOaMibDbaMjaNsbCubCGbCHaCzbPdaIObpcbDNbSHbymbymbSBbSBbSBbymbymbSmbSxbRXbSibScbSgbRYbRXbRWbRVbRSbRRbRQbRPbDcbRObRNbRMbRIbOtbOrbAybAgbNrbAqbRkbCTbzCbPbbPcbFUbOWbOZbPabOObELbOPbOTbIZblTblTbQdbOqbBWbDubDvbPXbDxbDybDzbDAbySbADbDBbyVbyVbyVbyVbyVbkIbkIaaaaaaaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGvaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabASbDCbDDbDmbDFbDGbDnbDIbDlbDKbAUbffbDLbDiaIOaIOaIObDbaNsbCubCGbDNaIOaIObDdaIOaIObDPbDQbDRaIOaIOaIOaIObDbaIOaNsbCubCGbDSaXNbDYaXNbFrbENbDZbymbEbbBxbBxbBxbEebEdbEgbEfbEibEhbzGbEjbCUbCYbCZbDabDcbDebDfbDgbDcbDhbDkbDwbDEbAgbCQbCRbAgbAgbAqbksbCTbzCbEqbEobEybEtbEsbErbEMbELbEBbEzbEmbEmblTbDqbEnbECbEDbEEbEFbDzbDtbEHbEIbySbADbAEbyVbEJbEKbFsbyVaafaafaafaafaafaafaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbEPbEQbEQbFgbtybtybjBbjBbjBbjBbEOaafaafaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabCgaafaaaaaaaaaaaabASbChbNpbQRbCkbAUbQQbCmbCnbCobAUbffaIObQMbQLbQNbQLbPzbPebPIbPFbPNbPJbQfbQPaXNbCzbnPbCBbCCbCDaIOaIOaMibDbaMjaNsbCubCGbCHaCzbPdbzsbpcbDNbSHbymbymbSBbSBbSBbymbymbSmbSxbRXbSibScbSgbRYbRXbRWbRVbRSbRRbRQbRPbDcbRObRNbRMbRIbOtbOrbAybAgbNrbAqbRkbCTbzCbPbbPcbFUbOWbOZbPabOObELbOPbOTbIZblTblTbQdbOqbBWbDubDvbPXbDxbDybDzbDAbySbADbDBbyVbyVbyVbyVbyVbkIbkIaaaaaaaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGvaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabASbDCbDDbDmbDFbDGbDnbDIbDlbDKbAUbffbDLbDiaIOaIOaIObDbaNsbCubCGbDNaIOaIObDdaIOaIObDPbDQbDRaIOaIOaIOaIObDbaIOaNsbCubCGbDSaXNbDYaXNbFrbENbeAbymbEbbBxbBxbBxbEebEdbEgbEfbEibEhbzGbEjbCUbCYbCZbDabDcbDebDfbDgbDcbDhbDkbDwbDEbAgbCQbCRbAgbAgbAqbksbCTbzCbEqbEobEybEtbEsbErbEMbELbEBbEzbEmbEmblTbDqbEnbECbEDbEEbEFbDzbDtbEHbEIbySbADbAEbyVbEJbEKbFsbyVaafaafaafaafaafaafaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbEPbEQbEQbFgbtybtybjBbjBbjBbjBbEOaafaafaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowaaaaaaaaaaaaaaaaaaaaaaaabERbESbBTbESbEUaaaaaaaaabASbASbEVbEWbDmbEWbEXbEYbEZbFdbFbbAUbFcbffbEwbFebuDbFfbFybFAbFhbFibuEaIObFjbEuaZjbEvbFaaIObDSaXNaXNaXNaXNbDWbjvbFobFpbFqbFrbFCbFJbFHbuDbuEaIObymbFmbBxbFlbETbBxbEdbFubFtbFzbFxbFwbFvbFEbFFbFBbFDbFKbFQbFGbDcbDcbHfbHfbHfbAqbEGbExbEAbElbEkbAqbksbCTbzCbFRbFPbFUbFTbFWbFVbFXbELbFYbEzbEmbEmblTbFIbFZbFLbFMbyHbFObGabFSbGebGfbySbGbbxZbxZbxZbxZbVNbAFaaaaaaaaaaaaaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafbGjbmNbGhbmNbtybjBbjBbjSbmLbjSbjBbjBaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabGpbGqbGrbGqbGpbGsbGtbGubASbGvbEWbGwbBbbGybGzbGAbGAbBcbuSbAUbGDbGDbBibGDaUnaUnaUnaUnaUnaUnaUnbGFbGFbGFbGFaUnbBgbBfbBeaUnbGHbGHbGHbBhbAfaUnaUnaUnaUnbAVbAubGKaIUaKtbzYbymbzXbBxbBxbBxbAebAcbApbAobzGbzZbAbbAabvxbzGbzObzPbyzbyAbyCbvwbzTbzUbEcbAgbAgbAgbAtbAybATbAgbAqbksbhQbhQbhQbhQbhQbhQbhQbhQbhQbhQbBRbBQbBqbBqblTbBnbBdbHqbjfbjfbjfbjfbBObBPbBNbjfbjfbjfbjfbjfbAEbADbHxaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagbxXbmNbmNbtnbjBbjBbjSbjSbBSbjSbjSbjBbjBaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBTbHBbHCbHBbBTbHDbHEbHFbASbHGbHHbEWbHIbHJbAUbHKbHLbBrbHNbAUbHObHObBBbGDaaaaaaaaaaaabGFbINbHRbvAbHTbHUbHVbCtbBVbHXbBYbCtbHZbCjbCpbClbBGbBDbBKbBJbBMbCvbCwbzlbBobGKbGKbymbBmbBlbBlbBkbymbBCbBybBwbBubBtbBsbBpbCsbCybCqbCrbBHbBIbBEbBFbCNbCObFkbCIbBLbCFbBjbAgbAgbCJbAqbksbhQbCxbCxbCxbCPbCMbCxbCxbCxbhQbCLbCKbDpbDpblTbwxbCVbBWbCXbDjbDMbDObDTbDUbDrbDsbDHbDJbDXbjfbyVbDVbyVbngbngbngbngbngaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabxYbjBbxXbjBbjBbjSbjSbjSbjSbjSbjSbjSbjBbjBaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabGpbHBbHBbHBbJdbJebEWbEWbJfbJgbEWbEWbJhbJibAUbAUbAUbJRbAUbAUbJvbJlbJDbJnaaabJCbJpbJBbJrbJsbHVbJtbJubJPbJKbJbbJybJxbJwbJbbCSbJobJEbJFbJGbJHbJIbGHbGHbJJbJcbDobJQbJNbJUbJSbJZbJWbJWbJWbIDbICbJabIFbzGbJjbJMbJLbIxbzGbIybIzbEcbIAbIBbIBbIubIvbEcbAqbIwbAqbAqbAqbAqbAqbAqbksbhQbKFbKvbCxbCxbCxbCxbCxbKubhQbKtbEzbKpbKpblTbKjbKsbKrbKqbKgbKgbKgbKgbKhbIYbIYbKibKobJYbjfbKfbKdbJTbJObJXbJVbJAbJzaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbtybjBbptbpubpubjSbjSbjSbjSbjSbjSbjSbjSbjBbjBaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBTbHCbHCbHCbBTbKKbKLbKMbKNbKObEWbKPbLsbltbLibKVbKVbKZbKWbKVbKDbjwbKQbKYaaabGLbLabLbbLcbLdbHVbLebLfbLgbLhbCtbKHbKGbKRbCtbLlbLmbLnbLobLpbLqbLrbKUboNbKSbKIbGKbPybPybKnbymbFmbBxbFlbETbBxbHcbKcbFtbKmbKlbKkbKebKBbKCbGXbGYbLxbIAbIBbIBbIubKxbEcbKwbKzbKAbmobKybKbbKabkybksbhQbCxbLEbCxbCxbCxbCxbCxbCxbhQbLCbEzbHPbHPblTbLObojbBWbMabIYbIYbLFbLHbLIbLKbIYbLLbLMbLBbLwbLvbLubLtbLjbKXbKTbJAbKJaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabjBbjBbkQbjSbjSbjSbjSbjSbjSbjSbjSbjSbjSbjSbjBbjBaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaabGpbMwbMxbMybGpbMzbGtbGubASbASbMAbMAbMAbASbASbGDbJkbJkbGibJkbJkbJkblPbKYaaabGLbMDbMEbMFbMGbMHbMIbMJbMGbMGbMKbGBbGlbGkbGHbGHbGHbGHbGHbGHbMObGHbGHbyKbGGbGmbGKbPycpqasZbymbEbbBxbBxbBxbHdbHcbApbFtbHabGZbHbbBtbGVbGWbGXbGYbGRbGSbGTbGUbGNbGObEcbGPbGcbGdbmobGgbHgbHebkybksbhQbhQbIpbCxbCxbCxbCxbhQbhQbhQbIobHYbHPbHPblTbHQbojbBWbCXbHAbHybHzbHtbHubHrbHsbHnbHpbGEbGxbGMbGJbGQbngbHlbHkbGobGnaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbjBbjSbjSbjSbjSbjSbjSbjXbjSbHmbjSbjSbjSbjSbjSbjBbjBaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaabGpbMwbMxbMybGpbMzbGtbGubASbASbMAbMAbMAbASbASbGDbJkbJkbGibJkbJkbJkblPbKYaaabGLbMDbMEbMFbMGbMHbMIbMJbMGbMGbMKbGBbGlbmjbGHbGHbGHbGHbGHbGHbMObGHbGHbyKbGGbGmbGKbPycpqasZbymbEbbBxbBxbBxbHdbHcbApbFtbHabGZbHbbBtbGVbGWbGXbGYbGRbGSbGTbGUbGNbGObEcbGPbGcbGdbmobGgbHgbHebkybksbhQbhQbIpbCxbCxbCxbCxbhQbhQbhQbIobHYbHPbHPblTbHQbojbBWbCXbHAbHybHzbHtbHubHrbHsbHnbHpbGEbGxbGMbGJbGQbngbHlbHkbGobGnaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbjBbjSbjSbjSbjSbjSbjSbjXbjSbHmbjSbjSbjSbjSbjSbjBbjBaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNObESbNPbESbNQaaaaafaaaaaabASbNRbNSbNTbASaaabGDccpcbybzibJkbJkbJkblPbKYaaabGLbNWbNXbNYbNZbHVbOabObbOcbOdbGFbIabIqbIcbIbbIdbIdbIdbIdbIdbIdbItbIdbIebIebIEbGKbGKbGKbGKbymbymbHwbHMbHwbymbymbHvbHobHjbHibzGbBubCUbInbIlbImbEcbIkbEcbEcbEcbEcbEcbIjbIfbBAbmobHSbIsbCibkybksbhQbIMbIVbIUbIRbIQbITbISbIMblUbIPbIObIZblTblTbJmbojbOVbngbngbjfbjfbjfbjfbIWbjfbIXbIYbIHbjfbIhbCWbyVbngbIKbIJbIGbngaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabjBbulbulbulbulbulbulbILbjSbuPbulbHmbjSbjSbjSbjSbjBaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafcbxbGDbGDbGDbGDbJkblQblPbPiaaabPjbJpbPkbPlbPmbHVbHVbPnblOblMblNbmwblSblRbgXbgXbgXbgXbgXbgXbgXbgXbgXbPwbPxboobonbmAbmybGKbymblCblBblEblDblGblFblIblHblKblJblYblXbmabmbbmcbmdbmebmfbmgbmibmjbmkbidbmlbmmbmnbmobmpblfblebkybksbhQblyblxblwbicbicbicblzblVblUblTblAblTblTbQebgnbojbojbQgaafbjcblZblWbjabmvbjabmqbmtbnEbjfblLbnHbnhbngbnwbnjbnjbolaagaagaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabombmNbmNbmNbmNbmNbmNbmNbmMbmLbjSbjSbjSbjSbmObmLbjBaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaBcaCcaCcaDcaEbGDccfbJkbmKbGDaaaaaaaaaaaabGFbQybQzbQAbQBbGFbQCbGFbmIbmHbmJbgXbgXbmEbmGbmFbmCbmBbmDbfNbfNbfNbfNbfNbfNbkjbnZbnXbpdboXboUboObpkbpjbpibphbpobpnbnIbpmbnIbnJbnubnvbnNbnObnLbnMbnObnSbnPbnQbnVbnWaWtbnUbmubebbmzbmxbpbbpabpfbpebplbpgbpqbpgbpsbprbRlbmhbojbRnbojbgnbojbojbRoaafbjcbjdbjdbopboqboKboPboYbpwbjfbgqbgpbUKbngbngbngbngbngaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabjBbpubpubpubpubpubpubpvbjSbptbpubkabjSbjSbjSbjSbjBaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafcbxbGDbGDbGDbGDbJkblQblPbPiaaabPjbJpbPkbPlbPmbHVbHVbPnblOblMblNbmwblSblRbgXbgXbgXbgXbgXbgXbgXbgXbgXbPwbPxboobonbmAbmybGKbymblCblBblEblDblGblFblIblHblKblJblYblXbmabmbbmcbmdbmebmfbmgbmiaLRbmkbidbmlbmmbmnbmobmpblfblebkybksbhQblyblxblwbicbicbicblzblVblUblTblAblTblTbQebgnbojbojbQgaafbjcblZblWbjabmvbjabmqbmtbnEbjfblLbnHbnhbngbnwbnjbnjbolaagaagaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabombmNbmNbmNbmNbmNbmNbmNbmMbmLbjSbjSbjSbjSbmObmLbjBaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaBcaCcaCcaDcaEbGDccfbJkbmKbGDaaaaaaaaaaaabGFbQybQzbQAbQBbGFbQCbGFbmIbmHbmJbgXbgXbmEbmGbmFbmCbmBbmDbfNbfNbfNbfNbfNbfNbkjbnZbnXbpdboXboUboObpkbpjbpibphbpobpnbnIbpmbnIbnJbnubnvbnNbnObnLbnMbnObnSbdwbnQbnVbnWaWtbnUbmubebbmzbmxbpbbpabpfbpebplbpgbpqbpgbpsbprbRlbmhbojbRnbojbgnbojbojbRoaafbjcbjdbjdbopboqboKboPboYbpwbjfbgqbgpbUKbngbngbngbngbngaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabjBbpubpubpubpubpubpubpvbjSbptbpubkabjSbjSbjSbjSbjBaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkfcbncbocbpbJkbgsbJkbJkbgtbGDbguaaaaaaaaabGFbGFbGFbGFbGFbGFbGFbGFbhybhibhhbgXbgXbhBbgwbgxbgxbgwbgvbfNbgMbgLbgDbgBbfNbhGbymbymbfCbfAbfFbfEbBzbggbgibhHbfJbcPbgfbfLbgTbgVbgWbgYbgjbgkbbVbcZbgkbhfbhjbhEbhIbhabhcbhdbinbilbidbhYbhQbhNbhNbhJbicbiubisbiccrFbiabSlbgmbSnbojbSobgnbojbSpbSqaafbjcbjdbjbbjabiAbjabivbiybjmbjfbgqbgpbjubitbyVaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbjBbjSbjSbjSbjSbjSbjSbjXbjSbkabjSbjSbjSbjSbjSbjBbjBaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccecaCcaCcaDcbtbiLbkebGDbkubGDccgbkvbkEccgccgbjFbjLbjMbgZbjTbjUblvbYpbjqbjxbllbjybgwbjEbjDbiNbiMbiObfNbiQbiPbjpbiRbfNbkjbPybjZbjYbjWbjVbiTbiTbkhbkgbkkbiDbkdbkcbkbbiDbiDbiBbiCbizbwUbhebhFbhebiKbiIbiJbiGbiHbiEbiFbiGbklbidbkibhQbknbkrbkobkMbkLbkPbkNbhQbhQbrhbiwbrhbrhbrhbhTbxqbhRbrhbjfbjfbjfbjfbjfbkmbjfbjfbjfbjfbjfbgqbgpblgbkpbyVaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabjBbjBbkQbjSbjSbjSbjSbjSbjSbjSbjSbjSbjSbjSbjBbjBaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQalQchdalQalQalQalQalQaaaaaaaaaaaaaaaaaaaafaafaaabxWbxTbxTbxTbxVbxTbxTbxRbxSccgbwobwhccgbwJbwKbwHbwIbwDbwGbwtbwvbwSbwObfHbxUbwMbgwbjEbwLbxjbiMbxdbfNbiQbiPbxcbxabfNbxObPybymbvnbvlbvpbvobtLbtXbvebvdbiDbvfbvkbvjbuObiDbuQbvFbvNbwUbhebhFaJzbiKbvrbvsbiGbvtbvubuabiGbtTbidbksbhQbhQbhQbhQbhQbhQbvqbhQbhQbwqbwmbvvbxlbxxbrhbiwbxEbvabrhbxybwCbwTbwrbwsbwYbxkbumbwVbumbumbuLbunbAEbyVbyVbyVaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbtybjBbuPbulbulbjSbjSbjSbjSbjSbjSbjSbjSbjBbjBaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -11020,7 +11021,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaafaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabSFbSFbSFbSFbSFbSFbSFbuibujccgccgccgccgccgbukbuAbuKbuKbuKbuMbuNbYpbjqbjxbtsbjybttbtxbtubtEbtCbtGbfNbtVbtHbtYbtWbfNbtRbtQbtPbtObtObtNbtMbkObqZbspbscbiDbtIbtFbqJbtDbiDbtAbtBbtzbwUbhebqHbtJbiKbszbsAbiGbiGbiGbiGbiGbssbidbidbidbfMcmHbPybGKbXObXPbXQbGKbGKaaaaaaaaaaaabudbuhbtSbtUbudaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyVbXVbswbXXbyVbyVbyVbyVaaaaafaaaaaaaaaanmanmanmaafaaaaaaaafaaaaaaaafaafaafbtrbtwbtmbtnbtybjBbjBbjSbmLbjSbjBbjBaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaafaafaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbSFbSGcnjcngcnhcnQbSFbQmbMbbTObRJcrEcrCcrrcrrcrucnEcnEcnDcnFbAkbYpbjqbjxcnCbwMcnzctfcnBcnwcnxcnybfNbtVcnpcnqdTTbfNbkjbqZdZLdZOdZOdZMdZNbqZdYtdZPdZQbiDdZTdZRdZSdZHbiDdZGbtBcrVbwUbxPbtKbxQbiKdZKdZJbiKcrXbPwbiddZUbssdZVdZWbidbfMdWwdXGbGKaaaaafaaaaaaaafaaaaaaaaaaaaccBcrZcslcskccBaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYUbYUcoebYWbYUaaaaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafcrLbEQbEQbFgbtybtybjBbjBbjBbjBbEOaafaafaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaafaafaafbTebTebTebTebTebTebTebTebTebTebTebTebTeaaaaaacmobSGbSGbSGbSGcmAbSFcqfcqecqicqgcqdcpVcqccpVcpUcpTcpScpQcpOcpLcqjcqwcmCcqMbgXbgXbgXbgXbgXbgXbgXbfNbfNcmBbfNbfNbfNbkjbqZbqZdZrdZsdZtdZubqZcqxcqDcqTbiDbkdbiDbiDbiDbiDbwUdZydZzbwUcqXcqWcqXbiKbXLdZBbiKbPybPybiddZDbssbidbidbidbfMcpWcmNbGKaaaaafaaaaaaaafaaaaaeaaaaaacrfcbWcrpcoBcrfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYUcqQcmGbZVbYUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaaaaaabTecnScqacnSbTecnOcpYcnObTecnMcpZcnMbTeaaaaaacphbSGcpXbSGbSGcpRbSFcFVcFUcQKcFXcRqcRpcFMcFKcFRbqVbqVcFTbqVbqKcFIcFJbjxcpCcpDcpucpucpEcpucpucoMcpvcpwcpxcpyeaqcoMbkjbEaeaxbMXbMXeaveaweaDeaEdLbdPueazeaAeayeaeeaeeaudXBbwUbwUbwUdhOcZLdyNbiKbiKbiKbiKbPybPybidbssbsseareasbidbfMbGKbGKbGKaaaaafaaaaaaaafaaaaaaaaaaaacWzcWQcRYcRScWzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYUcaycqbcaAbYUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaaaaaabTecnScqacnSbTecnOcpYcnObTecnMcpZcnMbTeaaaaaacphbSGcpXbSGbSGcpRbSFcFVcFUcQKcFXcRqcRpcFMcFKcFRbqVbqVcFTbqVbqKcFIcFJbjxcpCcpDcpucpucpEcpucpucoMcpvcpwcpxcpyeaqcoMbkjbEaeaxbMXbMXeaveaweaDeaEdLbdPueazeaAeayeaeeaeeaudXBbwUbwUbwUcrKcZLdyNbiKbiKbiKbiKbPybPybidbssbsseareasbidbfMbGKbGKbGKaaaaafaaaaaaaafaaaaaaaaaaaacWzcWQcRYcRScWzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYUcaycqbcaAbYUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaaaaaabTecnScnRcnSbTecnOcnPcnObTecnMcnNcnMbTeaaaaaacphbSGbSGbSGcpicoIcoHcsOcsNcvgcuVcsWcsPcsMcsEcsmcoycoEcoDcoCbAkbYpcpdcpbcpccpgcpfcpecpfcoOcoWcoMcoNcoZcpacoXdZZcoMbkjbEaeabbMXbOsbMXeaaeageahcCNeajeaceadeaeeafeaeeandXBciZboNcDacEycExcFHcFGboNboNboNboNcEzbidbidbidbidbidbidbfMbGKaafaafaafcbfaafaafaafaafaafaafaafccQbudcCKcylccQaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYUcbjcpjcblbYUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaaaaaabTecrgcnicrebTecrccnfcrbbTecracnccqZbTeaaaaafcphcrdbSGbSGcqqbWbbSFdPYdPVcvgcvgdPTcvgcvgcvgcvgcrzbYpcrxcrybAkbYpdRPcrlbyOcrhcricrkcricrocrqcrscrtcrmcrncoMcoMcoMbkjbEaeboebrebsebpebqebiebjdQhebhebmebnebkeblebcebbebadQabJNebfdQedQddPZbCTbyDbXPbXQbGKbvKboNboNboNboNboNboNciNbGKaaaaaaaaaaafaaaaaaaafaaaaaaaaaaaabuddQidQSdQRbudaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaacbZccacrNcccccdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaafaafbTecqocdMcqpbTecdWcdMcdXbTecdLcdMcdNbTeaaaaafcqrbSGbSGbSIcqqcqybSFdPAdPvcqvcqucqtcqscqAcqAcqAcqBcqAcmpcqzbAkbAkbjqcqIcqJcpDcqCcqCcqHcqPdaWcoMcqOcYGcqNcqKcqLcoMbkjbEaeaLeaMeaNeaOeaPbEaeaFdPDeaHdXBeaIeaJeaKeaSeaRdXBbfMbPydXFeaUeaTeaQdXFaaaaaaaaabGKbGKbGKbXObXPbXPbXQbGKbGKbGKaaaaaaaaabudbudbudbudbudbudbudbudbuddPHdPSdPPbudaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaafccScqYccSaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -11028,7 +11029,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaafcsgclgcshclgcshclgccWclgccUclgccWclgccUclgccVbQGbQGbQGbQGbQGbQGbQGbQGcrPcrOcrUcrTcrSdQTdQWdQVdQUchBcsadZEcrYchBcaTchwchtcaOcsdcsecsbcscchhcaPcaOdRMdRMcsfclLclLcjXbkjbEabEaebxebybEabEabEaebvckYebwdXBdXBdXBebuebCdXBdXBbfMcpqdXFdYWdYcdYddXFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaafaafbudccCcoLccCdRNcmEcbWdTCcfcdRUdTAdRUbudbudaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaafaaaceWaaaaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcbMbSZcgtcgrcgqcgAcgGchrcgFbSZcgDcgBcgCcgAbSZcgycgzcgwcgxcgucgvceVchachgdYGcgYcgXcgZckyclWclRcmacgUcgIcgHcgKcgJchjchkchlcaOcaPcaPcaPcaPchhchicaOcoVcoVcoVclLclLcjXboockLbEadXWdXKdXLdXVbEadXZckYdXYdXBdYadXRdXSdYbdXBbPybfMcpqdXFcmucmtcmvdXFaaaaaaaaaaaaaaaaaabVuckZbYRceXbVuaafaaaaaaaaaaaabudccCccCccCcllclmcdyclsclNclMclPclOclQbudaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaafaaacfVaaaaafaafaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaaaaafcfqcfpcfmcbDcfmcbDcfmcbDcfocbDcfmcbDcfncbkcbkcbkcflbSZbSZcfkbSZcgccbkcgbcgacfZcfTcfSckyckxckuckqcfJcfGcfFcfAcfzcducfycfxcaOcgocfvcfvcfvcftcfucaOckgcfgcfgcfgcfrcjXbGKbkjbEadXJdXKdXLdXLdXMdXNcjxdXPdXQdXRdXRdXSdXCdXBciZciNbGKeaQdXFcjadXFeaQaaaaaaaafaaaaaaaaabVuceuccOccYbVuaafaafaaaaaaaaabudcfccfccfccfcckfcbWcjFcjEcjyckeckdcjWbudaaaaaaaaaaaaaaachcchcchcchdaafaafaafaafcfVaafaafaafaafaafampchcchcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaafaafaafcbMciccibbSZcibciYchYciXciabSZcibbSZbSZbSZbSZbSZciUcbkciWciVcbkciqcipciscirciucitciwcnLcnHcnvcnIchBcincnrciochBcnKciMciQciRciSciSciTciTchqcixcaOcnAcfgcizcfgcnTcjXbGKbkjbEaciydYpdXLdYnbEadYtcnodYtdXBdYrdXRdYqciLdXBbfMbGKbGKbVucnucntcrQbVubVubVucnJbVubVubVubVucsjbXKcbdbVubVubVubZJaaaaaabudcnbcmXcmYcmZcnacdycnlcnncnmcnecbWcnkbudaaaaaaaaaaaaaaachcaaaaafaaaaafaaaaaaaaachWaaaaafaafaaaaaaaaaaaachcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaafaafaafcbMciccibbSZcibciYchYciXciabSZcibbSZbSZbSZbSZbSZciUcbkciWciVcbkciqcipciscirciucitciwcnLcnHcnvcnIchBcincnrciochBcnKciMciQciRciSciSciTciTchqcixcaOcnAcfgcizcfgcnTcjXbGKbkjbEaciydYpdXLdYnbEadYtcnodYtdXBdYrdXRdYqciLdXBbfMbGKbGKbVucnucntbGkbVubVubVucnJbVubVubVubVucsjbXKcbdbVubVubVubZJaaaaaabudcnbcmXcmYcmZcnacdycnlcnncnmcnecbWcnkbudaaaaaaaaaaaaaaachcaaaaafaaaaafaaaaaaaaachWaaaaafaafaaaaaaaaaaaachcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaafaafaaaaaacbMciccibbSZcidchUchXchHchGchHchYchZciachLchHchHchRchHchSchTchHchIchIchHchGcfTchKbWlcmWcmVcmKcmJchBchFchBchBchBchvchwchtchuchzchAchxchychqdypcaOchpcfgchscfgcfgcjXbGKbkjbEabEadYibEabEabEadYkbPycmFdXBdXBdXBdYjdXBdXBbfMbGKaaabVucnGdYFdYycaZcndcmzcmwcilcmycmxbVudWFbXKdWLbVucfDcfCbVuaafaafbudccCccCccCcmDcmEcbWcmscmrcmqcmicbWcmcbudbudbudbudaaaaaachcaaaciOciOciOciOciOaafciPaafciOciOciOciOciOaaachcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaaaaaacbMciccidchHchHchHchHchHchGchHchHchHchGchYckockmcknckkcklckhckickwckwckickGbSZckpckvclqckMdTzckNckHckIckHckKckJckHckQdYJckSckOckPckPckPckVckPckWckXckTckUclHclHcjXbGKcoacocboncolcodcokboNboNboNboNboNboNboNboNboNcomciNbGKaaacaZdZqbsxdZpcaZdZodZnbXKbXKdZmcbbdZkdWqdZldWsdZjbXKbXKbVuaaaaaabudccCccCccCcmZconcdycorcotcoscovcoucoucowcoqcopbudaafaafchcaafcjGcjHcjHcjHcjHcjIciPcjJcjKcjKcjKcjKcjLaafchcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaaaaaacbMcjlbSZbSZcjjcjbcjbcjbcjdcjbcjbcjbcjdcjbcjbcjhcjicjecjdcjfcjgcjScjRcjbcjQcjPcjOcjCcjBdYIcjZcjYcjqcjVcjUcjTcjqcjqcjrcjncjocjmcjkcjkckacjkcjkcjAcjscjscjzclHclHcjXbGKbfMbTBbTBbTBbTBdYHbTBbTBbTBbTBbPybPybGKbGKbGKbGKbGKbGKaaacaZdXmdZicaZcaZdZhdZgdZddZcdZfdZedZadZbcspcsqdYZbXKdYYbVuaaaaaabudcfccfccfccfccnYcbWcmscnWcnVcmicbWcbWcnXcbWcnUbudaaaaaachcaafckzckzckzckzckzaaaciPaaackzckzckzckzckzaafchcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From bb383791381f9ba58f5d3e39d80d3aff5d368fc9 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Wed, 25 Jun 2014 12:26:07 -0400 Subject: [PATCH 078/304] Improves simple docking controller UI --- .../simple_docking_controller.dm | 3 +- nano/templates/simple_docking_console.tmpl | 50 +++++++++++++++++++ 2 files changed, 52 insertions(+), 1 deletion(-) diff --git a/code/game/machinery/embedded_controller/simple_docking_controller.dm b/code/game/machinery/embedded_controller/simple_docking_controller.dm index bf200b85eb..60c12b24c1 100644 --- a/code/game/machinery/embedded_controller/simple_docking_controller.dm +++ b/code/game/machinery/embedded_controller/simple_docking_controller.dm @@ -15,6 +15,8 @@ data = list( "docking_status" = docking_program.get_docking_status(), "override_enabled" = docking_program.override_enabled, + "door_state" = docking_program.memory["door_status"]["state"], + "door_lock" = docking_program.memory["door_status"]["lock"], ) ui = nanomanager.try_update_ui(user, src, ui_key, ui, data) @@ -52,7 +54,6 @@ /datum/computer/file/embedded_program/docking/simple/New(var/obj/machinery/embedded_controller/M) ..(M) memory["door_status"] = list(state = "closed", lock = "locked") //assume closed and locked in case the doors dont report in - memory["door_status"] = list(state = "closed", lock = "locked") if (istype(M, /obj/machinery/embedded_controller/radio/simple_docking_controller)) var/obj/machinery/embedded_controller/radio/simple_docking_controller/controller = M diff --git a/nano/templates/simple_docking_console.tmpl b/nano/templates/simple_docking_console.tmpl index 7d941bea37..0d5ce1fc69 100644 --- a/nano/templates/simple_docking_console.tmpl +++ b/nano/templates/simple_docking_console.tmpl @@ -34,6 +34,56 @@ +
+
+
+ Docking Hatch: +
+
+ {{if docking_status == "docked"}} + {{if door_state == "open"}} + OPEN + {{else door_state == "closed"}} + CLOSED + {{else}} + ERROR + {{/if}} + {{else docking_status == "docking"}} + {{if door_state == "open"}} + OPEN + {{else door_state == "closed" && door_lock == "locked"}} + SECURED + {{else door_state == "closed" && door_lock == "unlocked"}} + UNSECURED + {{else}} + ERROR + {{/if}} + {{else docking_status == "undocking"}} + {{if door_state == "open"}} + OPEN + {{else door_state == "closed" && door_lock == "locked"}} + SECURED + {{else door_state == "closed" && door_lock == "unlocked"}} + UNSECURED + {{else}} + ERROR + {{/if}} + {{else docking_status == "undocked"}} + {{if door_state == "open"}} + OPEN + {{else door_state == "closed" && door_lock == "locked"}} + SECURED + {{else door_state == "closed" && door_lock == "unlocked"}} + UNSECURED + {{else}} + ERROR + {{/if}} + {{else}} + ERROR + {{/if}} +
+
+
From c44ac554dd167806672557511ee446f007498c9b Mon Sep 17 00:00:00 2001 From: mwerezak Date: Wed, 25 Jun 2014 12:28:58 -0400 Subject: [PATCH 079/304] Improves multi-airlock docking UI --- .../airlock_docking_controller_multi.dm | 46 +++++++++---------- nano/templates/multi_docking_console.tmpl | 37 +++++++++++++++ 2 files changed, 58 insertions(+), 25 deletions(-) create mode 100644 nano/templates/multi_docking_console.tmpl diff --git a/code/game/machinery/embedded_controller/airlock_docking_controller_multi.dm b/code/game/machinery/embedded_controller/airlock_docking_controller_multi.dm index b5aa7f101e..99c7bf5784 100644 --- a/code/game/machinery/embedded_controller/airlock_docking_controller_multi.dm +++ b/code/game/machinery/embedded_controller/airlock_docking_controller_multi.dm @@ -2,52 +2,48 @@ //this is the master controller, that things will try to dock with. /obj/machinery/embedded_controller/radio/docking_port_multi name = "docking port controller" - var/child_tags_txt //for mapping + + var/child_tags_txt + var/child_names_txt + var/list/child_names = list() + var/datum/computer/file/embedded_program/docking/multi/docking_program /obj/machinery/embedded_controller/radio/docking_port_multi/initialize() ..() docking_program = new/datum/computer/file/embedded_program/docking/multi(src) program = docking_program + + var/list/names = text2list(child_names_txt, ";") + var/list/tags = text2list(child_tags_txt, ";") + + if (names.len == tags.len) + for (var/i = 1; i <= tags.len; i++) + child_names[tags[i]] = names[i] /obj/machinery/embedded_controller/radio/docking_port_multi/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null) var/data[0] + var/list/airlocks[child_names.len] + var/i = 1 + for (var/child_tag in child_names) + airlocks[i++] = list("name"=child_names[child_tag], "override_enabled"=(docking_program.children_override[child_tag] == "enabled")) + data = list( "docking_status" = docking_program.get_docking_status(), - //child override status + "airlocks" = airlocks, ) ui = nanomanager.try_update_ui(user, src, ui_key, ui, data) if (!ui) - ui = new(user, src, ui_key, "simple_docking_console.tmpl", name, 470, 290) + ui = new(user, src, ui_key, "multi_docking_console.tmpl", name, 470, 290) ui.set_initial_data(data) ui.open() ui.set_auto_update(1) /obj/machinery/embedded_controller/radio/docking_port_multi/Topic(href, href_list) - if(..()) - return - - /* - usr.set_machine(src) - src.add_fingerprint(usr) - - var/clean = 0 - switch(href_list["command"]) //anti-HTML-hacking checks - if("force_door") - clean = 1 - if("toggle_override") - clean = 1 - - - if(clean) - program.receive_user_command(href_list["command"]) - - return 1 - */ return @@ -114,7 +110,7 @@ -/*** DEBUG VERBS ***/ +/*** DEBUG VERBS *** /datum/computer/file/embedded_program/docking/multi/proc/print_state() world << "id_tag: [id_tag]" @@ -154,4 +150,4 @@ set src in view(1) src.program:initiate_undocking() -/**/ +*/ diff --git a/nano/templates/multi_docking_console.tmpl b/nano/templates/multi_docking_console.tmpl new file mode 100644 index 0000000000..82cca2971b --- /dev/null +++ b/nano/templates/multi_docking_console.tmpl @@ -0,0 +1,37 @@ +
+
+
+ Docking Port Status: +
+
+ {{if docking_status == "docked"}} + DOCKED + {{else docking_status == "docking"}} + DOCKING + {{else docking_status == "undocking"}} + UNDOCKING + {{else docking_status == "undocked"}} + NOT IN USE + {{else}} + ERROR + {{/if}} +
+
+
+ +{{for airlocks}} +
+
+
+ {{:name}} +
+
+ {{if override_enabled}} + OVERRIDE ENABLED + {{else}} + STATUS OK + {{/if}} +
+
+
+{{/for}} \ No newline at end of file From d5c5d4b21f28e0f398ffe83784465d352b0d8f59 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Wed, 25 Jun 2014 12:32:12 -0400 Subject: [PATCH 080/304] Adds escape pod docking controller type Escape pods now no longer launch automatically during regular crew transfers. However they can be set to launch during a regular crew transfer by emagging the escape pod controller. Also fixes emergency shuttle arrival announcement having the wrong ETD. --- baystation12.dme | 1 + .../emergency_shuttle_controller.dm | 70 +++++----------- code/controllers/shuttle_controller.dm | 75 +++++++++++++++-- .../escape_pod_docking_controller.dm | 83 +++++++++++++++++++ code/modules/shuttles/shuttle_emergency.dm | 24 +----- maps/tgstation2.dmm | 16 ++-- nano/templates/escape_pod_console.tmpl | 42 ++++++++++ 7 files changed, 227 insertions(+), 84 deletions(-) create mode 100644 code/game/machinery/embedded_controller/escape_pod_docking_controller.dm create mode 100644 nano/templates/escape_pod_console.tmpl diff --git a/baystation12.dme b/baystation12.dme index 7b6fca07a6..14aeed6e88 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -393,6 +393,7 @@ #include "code\game\machinery\embedded_controller\docking_program_multi.dm" #include "code\game\machinery\embedded_controller\embedded_controller_base.dm" #include "code\game\machinery\embedded_controller\embedded_program_base.dm" +#include "code\game\machinery\embedded_controller\escape_pod_docking_controller.dm" #include "code\game\machinery\embedded_controller\simple_docking_controller.dm" #include "code\game\machinery\kitchen\gibber.dm" #include "code\game\machinery\kitchen\juicer.dm" diff --git a/code/controllers/emergency_shuttle_controller.dm b/code/controllers/emergency_shuttle_controller.dm index 4e3364b8b2..2955efc7b3 100644 --- a/code/controllers/emergency_shuttle_controller.dm +++ b/code/controllers/emergency_shuttle_controller.dm @@ -18,53 +18,6 @@ var/global/datum/emergency_shuttle_controller/emergency_shuttle var/deny_shuttle = 0 //allows admins to prevent the shuttle from being called var/departed = 0 //if the shuttle has left the station at least once -/datum/emergency_shuttle_controller/proc/setup_pods() - escape_pods = list() - - var/datum/shuttle/ferry/escape_pod/pod - - pod = new() - pod.location = 0 - pod.warmup_time = 0 - pod.area_station = locate(/area/shuttle/escape_pod1/station) - pod.area_offsite = locate(/area/shuttle/escape_pod1/centcom) - pod.area_transition = locate(/area/shuttle/escape_pod1/transit) - pod.transit_direction = NORTH - pod.move_time = SHUTTLE_TRANSIT_DURATION_RETURN - escape_pods += pod - - pod = new() - pod.location = 0 - pod.warmup_time = 0 - pod.area_station = locate(/area/shuttle/escape_pod2/station) - pod.area_offsite = locate(/area/shuttle/escape_pod2/centcom) - pod.area_transition = locate(/area/shuttle/escape_pod2/transit) - pod.transit_direction = NORTH - pod.move_time = SHUTTLE_TRANSIT_DURATION_RETURN - escape_pods += pod - - pod = new() - pod.location = 0 - pod.warmup_time = 0 - pod.area_station = locate(/area/shuttle/escape_pod3/station) - pod.area_offsite = locate(/area/shuttle/escape_pod3/centcom) - pod.area_transition = locate(/area/shuttle/escape_pod3/transit) - pod.transit_direction = EAST - pod.move_time = SHUTTLE_TRANSIT_DURATION_RETURN - escape_pods += pod - - //There is no pod 4, apparently. - - pod = new() - pod.location = 0 - pod.warmup_time = 0 - pod.area_station = locate(/area/shuttle/escape_pod5/station) - pod.area_offsite = locate(/area/shuttle/escape_pod5/centcom) - pod.area_transition = locate(/area/shuttle/escape_pod5/transit) - pod.transit_direction = EAST //should this be WEST? I have no idea. - pod.move_time = SHUTTLE_TRANSIT_DURATION_RETURN - escape_pods += pod - /datum/emergency_shuttle_controller/proc/process() if (wait_for_launch) @@ -76,14 +29,29 @@ var/global/datum/emergency_shuttle_controller/emergency_shuttle if (!shuttle.location) //leaving from the station //launch the pods! for (var/datum/shuttle/ferry/escape_pod/pod in escape_pods) - pod.launch(src) - + if (!pod.arming_controller || pod.arming_controller.armed) + pod.launch(src) + + if (autopilot) shuttle.launch(src) //called when the shuttle has arrived. /datum/emergency_shuttle_controller/proc/shuttle_arrived() - if (!shuttle.location && autopilot) //at station - set_launch_countdown(SHUTTLE_LEAVETIME) //get ready to return + if (!shuttle.location) //at station + if (autopilot) + set_launch_countdown(SHUTTLE_LEAVETIME) //get ready to return + + if (evac) + captain_announce("The Emergency Shuttle has docked with the station. You have approximately [round(estimate_launch_time()/60,1)] minutes to board the Emergency Shuttle.") + world << sound('sound/AI/shuttledock.ogg') + else + captain_announce("The scheduled Crew Transfer Shuttle has docked with the station. It will depart in approximately [round(emergency_shuttle.estimate_launch_time()/60,1)] minutes.") + + //arm the escape pods + if (evac) + for (var/datum/shuttle/ferry/escape_pod/pod in escape_pods) + if (pod.arming_controller) + pod.arming_controller.arm() //begins the launch countdown and sets the amount of time left until launch /datum/emergency_shuttle_controller/proc/set_launch_countdown(var/seconds) diff --git a/code/controllers/shuttle_controller.dm b/code/controllers/shuttle_controller.dm index 30abf05521..db33efc15e 100644 --- a/code/controllers/shuttle_controller.dm +++ b/code/controllers/shuttle_controller.dm @@ -30,16 +30,68 @@ var/global/datum/shuttle_controller/shuttle_controller shuttle.dock_target_station = "escape_dock" shuttle.dock_target_offsite = "centcom_dock" shuttle.transit_direction = NORTH - shuttle.move_time = 300 + shuttle.move_time = SHUTTLE_TRANSIT_DURATION_RETURN //shuttle.docking_controller_tag = "supply_shuttle" //shuttle.dock_target_station = "cargo_bay" shuttles["Escape"] = shuttle process_shuttles += shuttle - //give the emergency shuttle controller it's shuttle - emergency_shuttle.shuttle = shuttle - emergency_shuttle.setup_pods() - process_shuttles += emergency_shuttle.escape_pods + shuttle = new/datum/shuttle/ferry/escape_pod() + shuttle.location = 0 + shuttle.warmup_time = 0 + shuttle.area_station = locate(/area/shuttle/escape_pod1/station) + shuttle.area_offsite = locate(/area/shuttle/escape_pod1/centcom) + shuttle.area_transition = locate(/area/shuttle/escape_pod1/transit) + shuttle.docking_controller_tag = "escape_pod_1" + shuttle.dock_target_station = "escape_pod_bay_1" + shuttle.transit_direction = NORTH + shuttle.move_time = SHUTTLE_TRANSIT_DURATION_RETURN + rand(-30, 60) //randomize this so it seems like the pods are being picked up one by one + process_shuttles += shuttle + shuttles["Escape Pod 1"] = shuttle + + shuttle = new/datum/shuttle/ferry/escape_pod() + shuttle.location = 0 + shuttle.warmup_time = 0 + shuttle.area_station = locate(/area/shuttle/escape_pod2/station) + shuttle.area_offsite = locate(/area/shuttle/escape_pod2/centcom) + shuttle.area_transition = locate(/area/shuttle/escape_pod2/transit) + shuttle.transit_direction = NORTH + shuttle.move_time = SHUTTLE_TRANSIT_DURATION_RETURN + rand(-30, 60) //randomize this so it seems like the pods are being picked up one by one + process_shuttles += shuttle + shuttles["Escape Pod 2"] = shuttle + + shuttle = new/datum/shuttle/ferry/escape_pod() + shuttle.location = 0 + shuttle.warmup_time = 0 + shuttle.area_station = locate(/area/shuttle/escape_pod3/station) + shuttle.area_offsite = locate(/area/shuttle/escape_pod3/centcom) + shuttle.area_transition = locate(/area/shuttle/escape_pod3/transit) + shuttle.transit_direction = EAST + shuttle.move_time = SHUTTLE_TRANSIT_DURATION_RETURN + rand(-30, 60) //randomize this so it seems like the pods are being picked up one by one + process_shuttles += shuttle + shuttles["Escape Pod 3"] = shuttle + + //There is no pod 4, apparently. + + shuttle = new/datum/shuttle/ferry/escape_pod() + shuttle.location = 0 + shuttle.warmup_time = 0 + shuttle.area_station = locate(/area/shuttle/escape_pod5/station) + shuttle.area_offsite = locate(/area/shuttle/escape_pod5/centcom) + shuttle.area_transition = locate(/area/shuttle/escape_pod5/transit) + shuttle.transit_direction = EAST //should this be WEST? I have no idea. + shuttle.move_time = SHUTTLE_TRANSIT_DURATION_RETURN + rand(-30, 60) //randomize this so it seems like the pods are being picked up one by one + process_shuttles += shuttle + shuttles["Escape Pod 5"] = shuttle + + //give the emergency shuttle controller it's shuttles + emergency_shuttle.shuttle = shuttles["Escape"] + emergency_shuttle.escape_pods = list( + shuttles["Escape Pod 1"], + shuttles["Escape Pod 2"], + shuttles["Escape Pod 3"], + shuttles["Escape Pod 5"], + ) // Supply shuttle shuttle = new/datum/shuttle/ferry/supply() @@ -191,6 +243,13 @@ var/global/datum/shuttle_controller/shuttle_controller multidock = shuttle dock_controller_map_station[multidock.docking_controller_tag_station] = multidock dock_controller_map_offsite[multidock.docking_controller_tag_offsite] = multidock + + //escape pod arming controllers + var/datum/shuttle/ferry/escape_pod/pod + var/list/pod_controller_map = list() + for (var/datum/shuttle/ferry/escape_pod/P in emergency_shuttle.escape_pods) + if (P.dock_target_station) + pod_controller_map[P.dock_target_station] = P //search for the controllers, if we have one. if (dock_controller_map.len) @@ -210,6 +269,12 @@ var/global/datum/shuttle_controller/shuttle_controller if (istype(multidock)) multidock.docking_controller_offsite = C.program dock_controller_map_offsite -= C.id_tag + + //escape pods + if (C.id_tag in pod_controller_map) + pod = pod_controller_map[C.id_tag] + if (istype(C.program, /datum/computer/file/embedded_program/docking/simple/escape_pod/)) + pod.arming_controller = C.program //sanity check if (dock_controller_map.len || dock_controller_map_station.len || dock_controller_map_offsite.len) diff --git a/code/game/machinery/embedded_controller/escape_pod_docking_controller.dm b/code/game/machinery/embedded_controller/escape_pod_docking_controller.dm new file mode 100644 index 0000000000..44207e7597 --- /dev/null +++ b/code/game/machinery/embedded_controller/escape_pod_docking_controller.dm @@ -0,0 +1,83 @@ +/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod + name = "escape pod berth controller" + +/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod/initialize() + ..() + docking_program = new/datum/computer/file/embedded_program/docking/simple/escape_pod(src) + program = docking_program + +/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null) + var/data[0] + + var/armed = null + if (istype(docking_program, /datum/computer/file/embedded_program/docking/simple/escape_pod)) + var/datum/computer/file/embedded_program/docking/simple/escape_pod/P = docking_program + armed = P.armed + + data = list( + "docking_status" = docking_program.get_docking_status(), + "override_enabled" = docking_program.override_enabled, + "armed" = armed, + ) + + ui = nanomanager.try_update_ui(user, src, ui_key, ui, data) + + if (!ui) + ui = new(user, src, ui_key, "escape_pod_console.tmpl", name, 470, 290) + ui.set_initial_data(data) + ui.open() + ui.set_auto_update(1) + +/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod/attackby(obj/item/weapon/W as obj, mob/user as mob) + if (istype(W, /obj/item/weapon/card/emag) && !emagged) + user << "\blue You emag the [src], arming the escape pod!" + emagged = 1 + + if (istype(docking_program, /datum/computer/file/embedded_program/docking/simple/escape_pod)) + var/datum/computer/file/embedded_program/docking/simple/escape_pod/P = docking_program + P.arm() + return + + + +//A docking controller program for a simple door based docking port +/datum/computer/file/embedded_program/docking/simple/escape_pod + var/armed = 0 + var/eject_delay = 15 //give latecomers some time to get out of the way if they don't make it onto the pod + var/eject_time = null + var/closing = 0 + +/datum/computer/file/embedded_program/docking/simple/escape_pod/proc/arm() + armed = 1 + open_door() + + +/datum/computer/file/embedded_program/docking/simple/escape_pod/receive_user_command(command) + if (!armed) + return + ..(command) + +/datum/computer/file/embedded_program/docking/simple/escape_pod/process() + ..() + if (eject_time && world.time >= eject_time && !closing) + close_door() + closing = 1 + +/datum/computer/file/embedded_program/docking/simple/escape_pod/prepare_for_docking() + return + +/datum/computer/file/embedded_program/docking/simple/escape_pod/ready_for_docking() + return 1 + +/datum/computer/file/embedded_program/docking/simple/escape_pod/finish_docking() + return //don't do anything - the doors only open when the pod is armed. + +/datum/computer/file/embedded_program/docking/simple/escape_pod/prepare_for_undocking() + eject_time = world.time + eject_delay*10 + +/* +/datum/computer/file/embedded_program/docking/simple/escape_pod/ready_for_undocking() + if (world.time < eject_time) + return 0 + return ..() +*/ \ No newline at end of file diff --git a/code/modules/shuttles/shuttle_emergency.dm b/code/modules/shuttles/shuttle_emergency.dm index 928426ef7f..016e43d76b 100644 --- a/code/modules/shuttles/shuttle_emergency.dm +++ b/code/modules/shuttles/shuttle_emergency.dm @@ -31,14 +31,6 @@ else captain_announce("The Crew Transfer Shuttle has left the station. Estimate [round(emergency_shuttle.estimate_arrival_time()/60,1)] minutes until the shuttle docks at Central Command.") - if (destination == area_station) //arrived at the station - if(autopilot) - if (evac) - captain_announce("The Emergency Shuttle has docked with the station. You have approximately [round(estimate_launch_time()/60,1)] minutes to board the Emergency Shuttle.") - world << sound('sound/AI/shuttledock.ogg') - else - captain_announce("The scheduled Crew Transfer Shuttle has docked with the station. It will depart in approximately [round(estimate_launch_time()/60,1)] minutes.") - ..(origin, destination) /datum/shuttle/ferry/emergency/launch(var/user) @@ -233,9 +225,11 @@ /datum/shuttle/ferry/escape_pod - //pass + var/datum/computer/file/embedded_program/docking/simple/escape_pod/arming_controller /datum/shuttle/ferry/escape_pod/can_launch() + if(arming_controller && !arming_controller.armed) + return 0 if(location) return 0 //it's a one-way trip. return ..() @@ -245,15 +239,3 @@ /datum/shuttle/ferry/escape_pod/can_cancel() return 0 - -//TODO replace this with proper door controllers -/datum/shuttle/ferry/escape_pod/move(var/area/origin,var/area/destination) - for(var/obj/machinery/door/D in origin) - spawn(0) - D.close() - - ..(origin, destination) - - for(var/obj/machinery/door/D in destination) - spawn(0) - D.open() diff --git a/maps/tgstation2.dmm b/maps/tgstation2.dmm index ee8c9bcf40..f65310a5b4 100644 --- a/maps/tgstation2.dmm +++ b/maps/tgstation2.dmm @@ -980,7 +980,7 @@ "asR" = (/turf/simulated/floor/engine{name = "Holodeck Projector Floor"},/area/holodeck/alphadeck) "asS" = (/turf/simulated/wall/r_wall,/area/hallway/secondary/entry) "asT" = (/turf/simulated/shuttle/wall{icon_state = "swall3"; dir = 2},/area/shuttle/escape_pod1/station) -"asU" = (/obj/structure/stool/bed/chair{dir = 1},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod1/station) +"asU" = (/obj/structure/stool/bed/chair{dir = 1},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "escape_pod_1"; pixel_x = -25; pixel_y = 0; req_access_txt = "0"; req_one_access_txt = "0"; tag_door = "escape_pod_1_hatch"},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod1/station) "asV" = (/turf/simulated/shuttle/wall{icon_state = "swall3"; dir = 2},/area/shuttle/escape_pod2/station) "asW" = (/obj/structure/stool/bed/chair{dir = 1},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod2/station) "asX" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/turf/simulated/floor,/area/hallway/primary/port) @@ -1064,7 +1064,7 @@ "aux" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/closet/secure_closet/hydroponics,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor{icon_state = "hydrofloor"},/area/hydroponics) "auy" = (/obj/structure/closet/secure_closet/freezer/meat,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "auz" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst,/turf/simulated/shuttle/wall{icon_state = "swall_f5"; dir = 2},/area/shuttle/escape_pod1/station) -"auA" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/shuttle/floor,/area/shuttle/escape_pod1/station) +"auA" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_1_hatch"; locked = 1; name = "Escape Pod Hatch"; req_access_txt = "13"},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod1/station) "auB" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst,/turf/simulated/shuttle/wall{icon_state = "swall_f9"; dir = 2},/area/shuttle/escape_pod1/station) "auC" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst,/turf/simulated/shuttle/wall{icon_state = "swall_f5"; dir = 2},/area/shuttle/escape_pod2/station) "auD" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/shuttle/floor,/area/shuttle/escape_pod2/station) @@ -1194,7 +1194,7 @@ "awX" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry) "awY" = (/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry) "awZ" = (/obj/item/device/radio/intercom{broadcasting = 0; name = "Station Intercom (General)"; pixel_y = 20},/obj/machinery/light{dir = 1},/obj/machinery/camera/xray{c_tag = "Arrivals Escape Pods"},/turf/simulated/floor,/area/hallway/secondary/entry) -"axa" = (/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry) +"axa" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_bay_1_hatch"; locked = 1; name = "Escape Pod"; req_access_txt = "13"},/turf/simulated/floor/plating,/area/hallway/secondary/entry) "axb" = (/turf/simulated/floor{dir = 1; icon_state = "arrival"},/area/hallway/secondary/entry) "axc" = (/obj/machinery/light{dir = 1},/turf/simulated/floor{dir = 1; icon_state = "arrival"},/area/hallway/secondary/entry) "axd" = (/obj/machinery/camera{c_tag = "Central Hallway North-West"; dir = 2},/turf/simulated/floor,/area/hallway/primary/central) @@ -8874,13 +8874,15 @@ "doH" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_south_outer"; locked = 1; name = "Escape Airlock"; req_access_txt = "13"},/turf/simulated/floor/plating,/area/hallway/secondary/exit) "doI" = (/obj/machinery/airlock_sensor{frequency = 1380; id_tag = "escape_dock_south_sensor"; pixel_x = 0; pixel_y = 25},/turf/simulated/floor/plating,/area/hallway/secondary/exit) "doJ" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 32; pixel_y = 0},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/hallway/secondary/exit) -"doK" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/embedded_controller/radio/docking_port_multi{child_tags_txt = "escape_dock_north_airlock;escape_dock_south_airlock"; frequency = 1380; id_tag = "escape_dock"; pixel_x = 0; pixel_y = -25; req_one_access_txt = "13"},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/hallway/secondary/exit) +"doK" = (/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod{frequency = 1380; id_tag = "escape_pod_bay_1"; pixel_y = 25; tag_door = "escape_pod_bay_1_hatch"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry) "doL" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/wall,/area/hallway/secondary/exit) "doM" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating,/area/storage/emergency) "doN" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/extinguisher,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "escape_shuttle"; pixel_x = 8; pixel_y = 25; req_access_txt = "0"; req_one_access_txt = "13"; tag_door = "escape_shuttle_hatch"},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) "doO" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "centcom_dock_airlock"; locked = 1; name = "Arrivals Airlock"; req_access_txt = "13"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/evac) "doP" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access_txt = "13"},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) "doQ" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "centcom_dock"; name = "docking port controller"; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; req_one_access_txt = "13"; tag_door = "centcom_dock_airlock"},/turf/unsimulated/floor{dir = 6; icon_state = "warning"},/area/centcom/evac) +"doR" = (/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/turf/simulated/floor{dir = 1; icon_state = "arrival"},/area/hallway/secondary/entry) +"doS" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/embedded_controller/radio/docking_port_multi{child_names_txt = "Airlock One;Airlock Two"; child_tags_txt = "escape_dock_north_airlock;escape_dock_south_airlock"; frequency = 1380; id_tag = "escape_dock"; pixel_x = 0; pixel_y = -25; req_one_access_txt = "13"},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/hallway/secondary/exit) "dqT" = (/turf/simulated/mineral,/area/mine/unexplored) "dqU" = (/turf/space,/area/syndicate_station/mining) "dqV" = (/obj/structure/transit_tube{icon_state = "D-SE"},/obj/structure/lattice,/turf/space,/area) @@ -10719,8 +10721,8 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatHasTatIasTatHasVatJasVatHatKatLatMaPLatOatOatPatKatKaafaaaalPaafaoTaoUaoUaoUaoUaoVaoWaoXaoYaoYaoYaoYaoZaafalPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafapxbeuatRatSapbapxarEarAatXatWasqarEarbauaaubaucaucaudaueaOzapAapEapFalNaNDaNFaHyaPqaHqaHrauhauiaGVaPHaPCaIzaOEaIyaOGaOParTaSOauqaJsavYavYaKkaSFaMmaTsaODasRasRasRasRasRaOSasPasPasPaaaalQaaaapvapvapvapvapvaafaoPaafapvapvapvapvapvaaaampaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatHauzauAauBatHauCauDauEatHaqYaqYauFauGauHauIauJaKFatKaaaaaaampaaaapwapwapwapwapwaafaoWaafapwapwapwapwapwaaaalPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaagapxauLapaapxaHDapxarEarAaMQarCasqarBarbaHAauSauTauTaLxaHCaKLaHsaHtaJbaHvaHwaHxaHyaHzaHqaHravdauiaGVaGVaGVaGWaGWaGXaGVaGVarTaJvaJqaJsavYavYaKkaKoaJCaKiaGZasRasRasRasRasRaGUaGSavqavraaaalQaaaaafaaaaafaafaaaaaaaoPaaaaaaaafaaaaaaaafaaaalPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatHavsavtavuatHavsavtavuatHaUlaTiaTaaTaaTaaTaaWtaVtarwaaaaaaalPaaaaafaaaaafaafaaaaaaavAaaaaaaaafaaaaaaaafaaaalPaafaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaagapxapxapxapxaHDapxarbarbarbarbarbaYnaHIaHHaHGaHGaHGaHGaHKaHJaNqapEaJmalNaIjaIkaIhaIiaHYaIfaHNaHVaNQaLlavPavRavRaTIavRaKSavVavWavhaKPaviaviaKPaLcaKXaLaawbasRasRasRasRasRawbawcawdaweaaaalQalQalPaaaaaaaafaaaaaaaoPaaaaafaafaafaafalPalPalPaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaasSatHawfawgasSatHawfawgasSatKaZOatKatKatKatKatKaZeaspaaaaaaalPalPalPaaaaaaaafaaaawjawkawjaafaafaafaafalPalPalPaafapxapxapxapxawlawmawmawmawmawmawmawmawnapxapxawoawpawqapxawrawsaNJbTobdwaJfaJfaJfaJfaJfbcGaJfaJpaLDaJfaJfaJeaJeaJlaIYaJaaJnahmaIxaIAaIDaITaIvaHravdaIwawLawLbcxawMawNaVcawLauiawPawQaLQayMayMayMayMaMdaMmaMqawUasRasRasRasRasRawUawVawdaweaaaaaaaaaaafaafaaaaafaaaaaaawWaaaaaaaafaaaaaaaafaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawXawYawYawYawZaxaawYawYaxbaxcbdSaxbaxbaxbbdUatKbdVaspaaaaafaafaaaaaaaaaaaaaafaaaaxgbdWaKgaafaaaaafaaaaaaaaaaaaaaaapxapaapaaxjapaapaapaapaapaapaapaapaaxkaxlaxmaxnaxnaxnaxnaxnaxnaxoaJBaMMaxraxraxraxraxsaJAaxraMIaxraxsaxraxraxraxraxwaxxaxyaKdaKaaHxaJRaJRaJRaHrauhaJQawLawOawMaxCawMaVeaxEaWraxGaxHaMuaMmaMmaMmaMBaMEaMGaMHaJwasRasRasRasRasRaJxaJyaxNaxOaaaaaaaaaaaaaafaaaaafaaaaxPaxQaxPaaaaafaaaaaaaafaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaasSatHaxaawgasSatHawfawgasSatKaZOatKatKatKatKatKaZeaspaaaaaaalPalPalPaaaaaaaafaaaawjawkawjaafaafaafaafalPalPalPaafapxapxapxapxawlawmawmawmawmawmawmawmawnapxapxawoawpawqapxawrawsaNJbTobdwaJfaJfaJfaJfaJfbcGaJfaJpaLDaJfaJfaJeaJeaJlaIYaJaaJnahmaIxaIAaIDaITaIvaHravdaIwawLawLbcxawMawNaVcawLauiawPawQaLQayMayMayMayMaMdaMmaMqawUasRasRasRasRasRawUawVawdaweaaaaaaaaaaafaafaaaaafaaaaaaawWaaaaaaaafaaaaaaaafaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawXdoKawYawYawZawYawYawYdoRaxcbdSaxbaxbaxbbdUatKbdVaspaaaaafaafaaaaaaaaaaaaaafaaaaxgbdWaKgaafaaaaafaaaaaaaaaaaaaaaapxapaapaaxjapaapaapaapaapaapaapaapaaxkaxlaxmaxnaxnaxnaxnaxnaxnaxoaJBaMMaxraxraxraxraxsaJAaxraMIaxraxsaxraxraxraxraxwaxxaxyaKdaKaaHxaJRaJRaJRaHrauhaJQawLawOawMaxCawMaVeaxEaWraxGaxHaMuaMmaMmaMmaMBaMEaMGaMHaJwasRasRasRasRasRaJxaJyaxNaxOaaaaaaaaaaaaaafaaaaafaaaaxPaxQaxPaaaaafaaaaaaaafaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxRaxSaxTaxUaxVaxTaxTaxWaxUaxTaxXaxYaxZaxZbjWatKbdVatLaafaafaaaaaaaaaaaaaaaaafaybaycaydbdBayfaaaaafaaaaaaaaaaaaaaaapxapaapxaygayhayiayiayiayiayiayiayiayjaygaykaylaylaylaylaylaylaylaQnaynaxrayoaypayqayrbdCbbraPaaPdaywayxaypayyaxrayzapEayAalNaQvaNFaNIbdEaHqaHravdbdFayDaxFaxFayEayFayGbeDayIavVbdHbdcbbUbbUbbUbaNbaTaPnbavbdGasRasRasRasRasRbdIasPasPasPaaaaaaaaaaafaafaafaafaaaaySbjYaySaaaaafaaaaaaaafaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafatHayUayVayUayWaxTaxTayXayUayVayUayYaxSaxVbjZatHbdVatKatKazaatOatOatOatOatPatKazbazcazdazeazbapxapxawoawpawqapxapxapxapaaryaygaaaaafaaaaafaaaaafaaaaafaaaaygaykaylazfazgazhaziazjaylaQnapaaxrazkazkazlazmaznazoaPpaBdazrazsaztaztaxrayzapEazualNaQvaNFaHybdEaHqaHrauhazvbbOazxazyazzazAazBazBazCazBasPbeXbfGbeFbeGbeHbeObeEasPbdLasRasRasRasRasRbdKasPaafaaaaaaaaaaaaaafaafaaaaafazLazMbdMazOazPaafaaaaaaaafaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafazQasSazRavtazSazTazUazVazWazSavtazXazYasSazZblwatHblyblAblAblAblAblAblAaVtbezaAeazbaAfaAgaAhazbbghapaapaapaapaapaapaapaapaaAjaygaafaAkaAkaAkaAkaAkaAkaAkaafaygaykaylaAlaAmaAnaAoaAlaylaQnaApaxraxraxraxrbkiaAraypaAsaArblqaxraxraxraxrayzapEaAualNaQvaNFaHybdEaHqaHravdaAvazBazBazBazBazBazBaAwaAxaAyazBasPasPasPasPbgobgrasPasPbdKasRasRasRasRasRbdKasPaaaaaaaaaaaeaaaaaaaaaaaaaafaAAaABbdTaADaAAaafaaaaaaaafaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -10745,7 +10747,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlayBaxRbbnayabboaBgbbpbbpbbqaAMbbsbbqbbtbbpaTSaQpaOTaGHaByaBzaBzaBAaBBaBzbbBbadbbCaPEbafbagbbDaGPaPEaBxbfabalbbGbbHbbHazqbbIbalbbJbbKbbLbbMbarbarbaraUnaIOaIOaYVawGbbPbbQbbRbbSaBRaFraFlbbWbaAbaBbbXbbYbbZbcaaBhbccbcdbaBaCVbcebcfbcgbchbcibcjaAVbdsawGbcmbcnbcnaUnbcqbcqaBoaBobcoaThbcobcpaBoaBoaRRaBoaBoaBobcqbcrbcrbcrbcrbcrbcrbcsaAabcqazGbctbctaCKaZFaZFaZFayZbcqaBEaBDbaYaEsaEsaEsaEsaEsarZaEsaEsaEsaEsaEyaBCbcAawKavUawKbcyayKbcqaPtbcBaSsbcCaSsbfVaWAbcDbcEaTMaWDaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazQasSbcFaAFaWGatHatHatHatHatHatHaIQaJoaBgaTSaTSaTSaTSaTSaTSaTSaTSaTSaHMaHMaOlaCSaZYbcIbcJbcKaYybcLbcMaDEaPEbafbagbcOaOpaPEaBxbfabalbbHbcQbcQbbHbcQbalbbJbcRbcSbcSbcTbcUbcVbarbcWaIOaYVaGpbcYbgCbdabdbbdbbdaaGibddbaAbaBbdebdfbdgbdhbdibdjbdkaGYaHabdnbdobclbdpbdqbdrbclaLgawGaJtbdtaIOaNsbdubdvaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFbdxaZFaZFaZFaZFaZFaZFaZFaZFbdyaZFaZFaZFaZFaZFaZFaZFaBDbdzaDPaDTaCYaDUaCYaDVaCYaDXaDWaDYaCYaDZaCYaEaaEbaCYaCYaCYaCYaCYaCYaEcaEdaEebdObcCaSscUBcQkdoGdaLdoIdoHaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQaaaaafbdRazTaDraDlaCTaAJaAJaAJaAJaAJaAJaAtaAqaBOaBeaBcaOlaCSaYyaYybdXbdYaYyaPEaPEaCUaPEbafbeabcOaOoaPEaDKaFSbalbecbedbbHbcQbeebalbbJbefbcSbcSbcSbegbehbarbeiaIOaYVaGkbekbgCbembenbeobepaGibeqbaAbaBberbesbetbetbetaEObevbaBaCVbexbclbclbdpbeybdrbclaLfawGaGQaIOaIOaNsbdubdvaZFaZFaZFaZFaZFaZFaZFbeBaZFaZFaZFaZFaZFaZFbeCaCYaCYaCYaCYaCYaCYaCZaCYaCYaCYaCYaCYaCYaCYaHLaDDaDCaDtaZFaZFaZFaZFaZFaBDaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFbeIbdzbeJaSsaSsbcCaSsbfVaStbeLaTMaTMaTNaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbdQaWEaWFbeMaAbbeNbUVbePbePbeQbePbePbePbeRaPBaPBaPBaPBaOlaCSaZYbeSbeTbeUaYybeVbeWbUWaPEaPEaPEaPEbUmaPEcuRbfabalctebbHbcQcsXcsZbalbbJbarbfcbcSbcSbPhbfebarbULaIOaYVbTrbfhbgCbembfibfjbepaGibfkbaAbflbfmbfnbetbfobetbdfbfpbfqaCVbfrbfsbftbfubfubfvbclbfwawGcCTcuScFlcvvcxRdPwdPxdTPdPxcFHdPxcGedTQbTtdTSctbctbctaaZFaZFaZFaZFbfDaZFbfybfOaZFctccByctdbfIbWUcGxbfIbfKdTUdTVdTWaZFaZFaZFaZFaZFbfObfPbfDaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFbdzbfQbfRbfSbfTbfUdoKdoJbfWaafaaaaafaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbdQaWEaWFbeMaAbbeNbUVbePbePbeQbePbePbePbeRaPBaPBaPBaPBaOlaCSaZYbeSbeTbeUaYybeVbeWbUWaPEaPEaPEaPEbUmaPEcuRbfabalctebbHbcQcsXcsZbalbbJbarbfcbcSbcSbPhbfebarbULaIOaYVbTrbfhbgCbembfibfjbepaGibfkbaAbflbfmbfnbetbfobetbdfbfpbfqaCVbfrbfsbftbfubfubfvbclbfwawGcCTcuScFlcvvcxRdPwdPxdTPdPxcFHdPxcGedTQbTtdTSctbctbctaaZFaZFaZFaZFbfDaZFbfybfOaZFctccByctdbfIbWUcGxbfIbfKdTUdTVdTWaZFaZFaZFaZFaZFbfObfPbfDaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFbdzbfQbfRbfSbfTbfUdoSdoJbfWaafaaaaafaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbdQcpzcpvcqkcqxbfXbePbfYbfZbgabgabgbbgcbgdbgebgebgebgebPBbUubUrbUrbUtbUsbUrbUobUobUpbUobUnbUlbUlbSbbRucqMcrQbUCcrpbUBbUBcrocqYbalcqPbarbgybcSbcSbPhbgzbgAbffaIOaYVbaAbgCbTpbdabdabdabdaaGibgEbaAbaBbgFbgGbWJbgIbgJbgGbgKbaBaCVbURbUQbgNbgObgPbgQbgRbgSawGcrZaHfcrWawGbTqbTqbgUbgUbgUbgUcmTcmTcsUcsVcsrcsscsVcsUcmTcmTcmTckbckbckbckbckbbcqbcqcskbhbbhbbhbbhbbhbbktcslbcqcsYcsncsobhkbhkbhlbhlbhlbhlbhlbhmbhnbhnbhobhnaZFbhnbhobhnbhnbhpbTqcsJcsJbNtbhrbhgdoLaPtaPtaaaaaaaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbdQaZLaZMbeMaAbbhsbePbhtbePbhubhvbePbePbePaRebhwbhxbhxbTHaYyaZYbhzbcJbhAaYybUabTZbTTbTSbTVbTUbTXbTWbTYbTXbTMbTNbLkbTCbLkbLkcmKcmVclMbTbbhSbcSbcSbTLbhUbhVbffaIObhWbaAbhXbaAbhZbVnbibbSOaGibaAbaAbaBbiebifbigbihbiibijbikbaBaCVbTybimckrbiobipbgQbclbiqawGcnGcoacoNawGcqlcqncqSbTncrDcrGcrMcoOcqUcqVcrAcrBcogcofcpscoYcmTcmIcmWcmUcpMckbcnscpNcndcptbVUcktcktclSbktcggbiSbiScksbiSbiUbiUbhlbiVbiWbiXbhlbiYbiZbiYbhlbhmbhnbhpbNtbSQbTibSQbNtbThbTgbNtbjebTEdoMbhgaaaaaaaaaaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQaaachMaMYbbnayabjhbePbjibePbjjbjkbjlbQYbePbjnaReaXibcHbTjaYyaYyaYyaYyaYyaYybTAbjrbjsaRebjtbalbalbalbTzbalbalbalbrnbalbalbalbMVbalblubRFbjzbcSbcSbPhbjAbgAbSwaIObSybaAbjCbaAbaAbaAbaAdoFbTkbaAbTmbTlbjGbjHbbXbjIbbXbjJbjKbTvbTxbTybjNbclbjObjPbgQbjQbjRbaDbSNaIObDbcgQchOcgPcgjchNcjwckLciicjachochocgRcgScjtcjpciHciEciDciCciBciAckcckbcjDcgeclFcgecjvcjucgecgfbktcggbiSbkwcfKcgdbkzbkAbkBbkCbkDbkCbSjbkFbkGbkHbhlbkIbkJbkKbNtbSzbSEbSDbSMbNHbSAbNtbkRbkSbkTbhgaaaaaaaaaaaeaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/nano/templates/escape_pod_console.tmpl b/nano/templates/escape_pod_console.tmpl new file mode 100644 index 0000000000..d81b20a576 --- /dev/null +++ b/nano/templates/escape_pod_console.tmpl @@ -0,0 +1,42 @@ +
+
+
+ Escape Pod Status: +
+
+ {{if docking_status == "docked"}} + {{if armed}} + ARMED + {{else}} + SYSTEMS OK + {{/if}} + {{else docking_status == "undocking"}} + EJECTING-STAND CLEAR! + {{else docking_status == "undocked"}} + POD EJECTED + {{else docking_status == "docking"}} + INITIALIZING... + {{else}} + ERROR + {{/if}} +
+
+
+
+
+
+ {{if armed}} + {{if docking_status == "docked"}} + {{:~link('Force exterior door', 'alert', {'command' : 'force_door'}, override_enabled ? null : 'disabled', null)}} + {{:~link('Override', 'alert', {'command' : 'toggle_override'}, null, override_enabled ? 'redBackground' : null)}} + {{else}} + {{:~link('Force exterior door', 'alert', {'command' : 'force_door'}, override_enabled ? null : 'disabled', override_enabled? 'redBackground' : null)}} + {{:~link('Override', 'alert', {'command' : 'toggle_override'}, null, override_enabled ? 'redBackground' : 'yellowBackground')}} + {{/if}} + {{else}} + {{:~link('Force exterior door', 'alert', {'command' : 'force_door'}, 'disabled', null)}} + {{:~link('Override', 'alert', {'command' : 'toggle_override'}, 'disabled', null)}} + {{/if}} +
+
+
\ No newline at end of file From 906ef4152275f1a640fc385a9bf56e8b322165fb Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Wed, 25 Jun 2014 18:32:48 +0200 Subject: [PATCH 081/304] The tactical closet now calls ..() in its New() proc, allows for swallowing items placed on-top among other things. --- .../game/objects/structures/crates_lockers/closets/wardrobe.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm index a6f4dd97d0..f4d152ea91 100644 --- a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm +++ b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm @@ -388,6 +388,7 @@ icon_opened = "syndicate1open" /obj/structure/closet/wardrobe/tactical/New() + ..() new /obj/item/clothing/under/tactical(src) new /obj/item/clothing/suit/armor/tactical(src) new /obj/item/clothing/head/helmet/tactical(src) @@ -396,4 +397,4 @@ new /obj/item/weapon/storage/belt/security/tactical(src) new /obj/item/clothing/shoes/jackboots(src) new /obj/item/clothing/gloves/black(src) - return + return From 8eba53fecfc055c24fe9d01532a81f16de861a42 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Wed, 25 Jun 2014 18:39:03 +0200 Subject: [PATCH 082/304] Missed change - Nudges both cameras in EVA north one step. --- maps/tgstation2.dmm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/maps/tgstation2.dmm b/maps/tgstation2.dmm index deed0c8944..498c1c2653 100644 --- a/maps/tgstation2.dmm +++ b/maps/tgstation2.dmm @@ -1366,10 +1366,10 @@ "aAn" = (/obj/machinery/gateway/centerstation,/turf/simulated/floor{icon_state = "dark"},/area/gateway) "aAo" = (/obj/machinery/gateway{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/gateway) "aAp" = (/obj/machinery/camera{c_tag = "EVA Maintenance"; dir = 8; network = list("SS13")},/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint) -"aAq" = (/obj/machinery/requests_console{department = "EVA"; pixel_x = -32; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/table/reinforced,/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/item/device/multitool,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva) +"aAq" = (/obj/machinery/requests_console{department = "EVA"; pixel_x = -32; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/table/reinforced,/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/item/device/multitool,/obj/machinery/camera/motion{c_tag = "EVA Motion Sensor"; dir = 4},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva) "aAr" = (/turf/simulated/floor,/area/ai_monitored/storage/eva) "aAs" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) -"aAt" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/table/reinforced,/obj/item/stack/sheet/rglass{amount = 50},/obj/item/stack/rods{amount = 50},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva) +"aAt" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/table/reinforced,/obj/item/stack/sheet/rglass{amount = 50},/obj/item/stack/rods{amount = 50},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/camera{c_tag = "EVA East"; dir = 8},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva) "aAu" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/fore) "aAv" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/crew_quarters/sleep) "aAw" = (/obj/machinery/shower{icon_state = "shower"; dir = 4},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) @@ -1404,9 +1404,9 @@ "aAZ" = (/obj/machinery/gateway{dir = 6},/turf/simulated/floor{icon_state = "vault"; dir = 1},/area/gateway) "aBa" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/rig,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva) "aBb" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/rig/atmos,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig/atmos,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva) -"aBc" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/camera/motion{c_tag = "EVA Motion Sensor"; dir = 4},/obj/structure/table/reinforced,/obj/item/device/assembly/signaler,/obj/item/device/assembly/signaler,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva) +"aBc" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/table/reinforced,/obj/item/device/assembly/signaler,/obj/item/device/assembly/signaler,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva) "aBd" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/ai_monitored/storage/eva) -"aBe" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/camera{c_tag = "EVA East"; dir = 8},/obj/structure/table/reinforced,/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva) +"aBe" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/table/reinforced,/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva) "aBf" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/tank/jetpack/carbondioxide,/obj/item/clothing/shoes/magboots,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva) "aBg" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall,/area/security/vacantoffice) "aBh" = (/obj/machinery/power/terminal{dir = 8},/obj/machinery/requests_console{department = "AI"; departmentType = 5; pixel_y = 29},/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) From 96e584d517c08b2b9f85047b3a23291ec29388bd Mon Sep 17 00:00:00 2001 From: mwerezak Date: Wed, 25 Jun 2014 13:08:22 -0400 Subject: [PATCH 083/304] Adds escape pod docking controllers --- code/controllers/shuttle_controller.dm | 12 ++++- maps/tgstation2.dmm | 61 +++++++++++++++----------- 2 files changed, 46 insertions(+), 27 deletions(-) diff --git a/code/controllers/shuttle_controller.dm b/code/controllers/shuttle_controller.dm index db33efc15e..98b77823d9 100644 --- a/code/controllers/shuttle_controller.dm +++ b/code/controllers/shuttle_controller.dm @@ -43,7 +43,8 @@ var/global/datum/shuttle_controller/shuttle_controller shuttle.area_offsite = locate(/area/shuttle/escape_pod1/centcom) shuttle.area_transition = locate(/area/shuttle/escape_pod1/transit) shuttle.docking_controller_tag = "escape_pod_1" - shuttle.dock_target_station = "escape_pod_bay_1" + shuttle.dock_target_station = "escape_pod_1_berth" + shuttle.dock_target_offsite = "escape_pod_1_recovery" shuttle.transit_direction = NORTH shuttle.move_time = SHUTTLE_TRANSIT_DURATION_RETURN + rand(-30, 60) //randomize this so it seems like the pods are being picked up one by one process_shuttles += shuttle @@ -55,6 +56,9 @@ var/global/datum/shuttle_controller/shuttle_controller shuttle.area_station = locate(/area/shuttle/escape_pod2/station) shuttle.area_offsite = locate(/area/shuttle/escape_pod2/centcom) shuttle.area_transition = locate(/area/shuttle/escape_pod2/transit) + shuttle.docking_controller_tag = "escape_pod_2" + shuttle.dock_target_station = "escape_pod_2_berth" + shuttle.dock_target_offsite = "escape_pod_2_recovery" shuttle.transit_direction = NORTH shuttle.move_time = SHUTTLE_TRANSIT_DURATION_RETURN + rand(-30, 60) //randomize this so it seems like the pods are being picked up one by one process_shuttles += shuttle @@ -66,6 +70,9 @@ var/global/datum/shuttle_controller/shuttle_controller shuttle.area_station = locate(/area/shuttle/escape_pod3/station) shuttle.area_offsite = locate(/area/shuttle/escape_pod3/centcom) shuttle.area_transition = locate(/area/shuttle/escape_pod3/transit) + shuttle.docking_controller_tag = "escape_pod_3" + shuttle.dock_target_station = "escape_pod_3_berth" + shuttle.dock_target_offsite = "escape_pod_3_recovery" shuttle.transit_direction = EAST shuttle.move_time = SHUTTLE_TRANSIT_DURATION_RETURN + rand(-30, 60) //randomize this so it seems like the pods are being picked up one by one process_shuttles += shuttle @@ -79,6 +86,9 @@ var/global/datum/shuttle_controller/shuttle_controller shuttle.area_station = locate(/area/shuttle/escape_pod5/station) shuttle.area_offsite = locate(/area/shuttle/escape_pod5/centcom) shuttle.area_transition = locate(/area/shuttle/escape_pod5/transit) + shuttle.docking_controller_tag = "escape_pod_5" + shuttle.dock_target_station = "escape_pod_5_berth" + shuttle.dock_target_offsite = "escape_pod_5_recovery" shuttle.transit_direction = EAST //should this be WEST? I have no idea. shuttle.move_time = SHUTTLE_TRANSIT_DURATION_RETURN + rand(-30, 60) //randomize this so it seems like the pods are being picked up one by one process_shuttles += shuttle diff --git a/maps/tgstation2.dmm b/maps/tgstation2.dmm index f65310a5b4..cbc1e42ab1 100644 --- a/maps/tgstation2.dmm +++ b/maps/tgstation2.dmm @@ -527,12 +527,12 @@ "akg" = (/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/security/brig) "akh" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/door/airlock/security{name = "Security Pods"; req_access_txt = "1"},/turf/simulated/floor/plating,/area/security/brig) "aki" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fsmaint) -"akj" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/fsmaint) -"akk" = (/obj/machinery/door/airlock/external{name = "Security Escape Pod"; req_access_txt = "1"},/turf/simulated/floor/plating,/area/security/main) +"akj" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod{frequency = 1380; id_tag = "escape_pod_3_berth"; pixel_x = 25; pixel_y = 25; tag_door = "escape_pod_3_berth_hatch"},/turf/simulated/floor/plating,/area/maintenance/fsmaint) +"akk" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_3_berth_hatch"; locked = 1; name = "Escape Pod"; req_access_txt = "13"},/turf/simulated/floor/plating,/area/security/main) "akl" = (/turf/simulated/floor/plating,/area/security/main) -"akm" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/shuttle/floor,/area/shuttle/escape_pod3/station) +"akm" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_3_hatch"; locked = 1; name = "Escape Pod Hatch"; req_access_txt = "13"},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod3/station) "akn" = (/obj/structure/stool/bed/chair{dir = 4},/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod3/station) -"ako" = (/obj/structure/stool/bed/chair{dir = 4},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod3/station) +"ako" = (/obj/structure/stool/bed/chair{dir = 4},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "escape_pod_3"; pixel_x = 0; pixel_y = -25; req_access_txt = "0"; req_one_access_txt = "0"; tag_door = "escape_pod_3_hatch"},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod3/station) "akp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/fsmaint) "akq" = (/obj/structure/stool/bed/roller,/turf/simulated/floor{icon_state = "white"},/area/security/brig) "akr" = (/obj/structure/stool/bed,/turf/simulated/floor{icon_state = "white"},/area/security/brig) @@ -982,7 +982,7 @@ "asT" = (/turf/simulated/shuttle/wall{icon_state = "swall3"; dir = 2},/area/shuttle/escape_pod1/station) "asU" = (/obj/structure/stool/bed/chair{dir = 1},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "escape_pod_1"; pixel_x = -25; pixel_y = 0; req_access_txt = "0"; req_one_access_txt = "0"; tag_door = "escape_pod_1_hatch"},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod1/station) "asV" = (/turf/simulated/shuttle/wall{icon_state = "swall3"; dir = 2},/area/shuttle/escape_pod2/station) -"asW" = (/obj/structure/stool/bed/chair{dir = 1},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod2/station) +"asW" = (/obj/structure/stool/bed/chair{dir = 1},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "escape_pod_2"; pixel_x = -25; pixel_y = 0; req_access_txt = "0"; req_one_access_txt = "0"; tag_door = "escape_pod_2_hatch"},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod2/station) "asX" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/turf/simulated/floor,/area/hallway/primary/port) "asY" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/hallway/primary/port) "asZ" = (/obj/structure/table,/obj/item/device/t_scanner,/turf/simulated/floor/plating,/area/maintenance/fpmaint) @@ -1067,7 +1067,7 @@ "auA" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_1_hatch"; locked = 1; name = "Escape Pod Hatch"; req_access_txt = "13"},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod1/station) "auB" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst,/turf/simulated/shuttle/wall{icon_state = "swall_f9"; dir = 2},/area/shuttle/escape_pod1/station) "auC" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst,/turf/simulated/shuttle/wall{icon_state = "swall_f5"; dir = 2},/area/shuttle/escape_pod2/station) -"auD" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/shuttle/floor,/area/shuttle/escape_pod2/station) +"auD" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_2_hatch"; locked = 1; name = "Escape Pod Hatch"; req_access_txt = "13"},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod2/station) "auE" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst,/turf/simulated/shuttle/wall{icon_state = "swall_f9"; dir = 2},/area/shuttle/escape_pod2/station) "auF" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "arrivals_airlock"; name = "interior access button"; pixel_x = -25; pixel_y = 25; req_access_txt = "13"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2) "auG" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating,/area/maintenance/fpmaint2) @@ -1147,7 +1147,7 @@ "awc" = (/obj/machinery/computer/HolodeckControl,/turf/simulated/floor,/area/crew_quarters/fitness) "awd" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor,/area/crew_quarters/fitness) "awe" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/crew_quarters/fitness) -"awf" = (/obj/machinery/door/airlock/external{name = "Escape Pod"},/turf/simulated/floor/plating,/area/hallway/secondary/entry) +"awf" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_1_berth_hatch"; locked = 1; name = "Escape Pod"; req_access_txt = "13"},/turf/simulated/floor/plating,/area/hallway/secondary/entry) "awg" = (/obj/structure/sign/pods,/turf/simulated/wall,/area/hallway/secondary/entry) "awh" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/plating,/area/maintenance/fpmaint) "awi" = (/obj/machinery/light/small{dir = 4},/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 32},/obj/structure/table/woodentable,/obj/item/ashtray/bronze{pixel_x = -1; pixel_y = 1},/obj/item/weapon/deck,/turf/simulated/floor/carpet,/area/crew_quarters/bar) @@ -1194,7 +1194,7 @@ "awX" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry) "awY" = (/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry) "awZ" = (/obj/item/device/radio/intercom{broadcasting = 0; name = "Station Intercom (General)"; pixel_y = 20},/obj/machinery/light{dir = 1},/obj/machinery/camera/xray{c_tag = "Arrivals Escape Pods"},/turf/simulated/floor,/area/hallway/secondary/entry) -"axa" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_bay_1_hatch"; locked = 1; name = "Escape Pod"; req_access_txt = "13"},/turf/simulated/floor/plating,/area/hallway/secondary/entry) +"axa" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_2_berth_hatch"; locked = 1; name = "Escape Pod"; req_access_txt = "13"},/turf/simulated/floor/plating,/area/hallway/secondary/entry) "axb" = (/turf/simulated/floor{dir = 1; icon_state = "arrival"},/area/hallway/secondary/entry) "axc" = (/obj/machinery/light{dir = 1},/turf/simulated/floor{dir = 1; icon_state = "arrival"},/area/hallway/secondary/entry) "axd" = (/obj/machinery/camera{c_tag = "Central Hallway North-West"; dir = 2},/turf/simulated/floor,/area/hallway/primary/central) @@ -3032,7 +3032,7 @@ "bgp" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/asmaint2) "bgq" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/asmaint2) "bgr" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall,/area/crew_quarters/fitness) -"bgs" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "robotics_inner"; locked = 0; name = "Engineering External Access"; req_access = null; req_access_txt = "13"},/turf/simulated/floor/plating,/area/maintenance/aft) +"bgs" = (/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod{frequency = 1380; id_tag = "escape_pod_1_berth"; pixel_x = -25; pixel_y = 30; tag_door = "escape_pod_1_berth_hatch"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry) "bgt" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/aft) "bgu" = (/obj/structure/sign/electricshock{pixel_y = -32},/turf/space,/area) "bgv" = (/obj/structure/extinguisher_cabinet{pixel_x = 25},/turf/simulated/floor/carpet,/area/engine/break_room) @@ -5471,9 +5471,9 @@ "cbk" = (/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor,/area/atmos) "cbl" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = -32},/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "cbm" = (/obj/machinery/atmospherics/binary/pump{dir = 2; icon_state = "intact_off"; name = "Gas pump"; on = 0},/turf/simulated/floor,/area/atmos) -"cbn" = (/obj/structure/stool/bed/chair{dir = 8},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod5/station) +"cbn" = (/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod{frequency = 1380; id_tag = "escape_pod_2_berth"; pixel_x = -25; pixel_y = 30; tag_door = "escape_pod_2_berth_hatch"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry) "cbo" = (/obj/structure/stool/bed/chair{dir = 8},/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod5/station) -"cbp" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/shuttle/floor,/area/shuttle/escape_pod5/station) +"cbp" = (/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/turf/simulated/floor{dir = 1; icon_state = "arrival"},/area/hallway/secondary/entry) "cbq" = (/obj/machinery/atmospherics/binary/pump{dir = 1; icon_state = "intact_off"; name = "Gas pump"; on = 0},/turf/simulated/floor,/area/atmos) "cbr" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/turf/simulated/floor,/area/atmos) "cbs" = (/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/simulated/floor,/area/atmos) @@ -6817,7 +6817,7 @@ "cBe" = (/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor2"},/area/centcom/evac) "cBf" = (/obj/structure/stool,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) "cBg" = (/obj/machinery/vending/wallmed1{name = "Emergency NanoMed"; pixel_x = 30; pixel_y = 0; req_access_txt = "0"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) -"cBh" = (/obj/machinery/door/airlock/external{name = "Salvage Shuttle Dock"},/turf/unsimulated/floor,/area/centcom/evac) +"cBh" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/embedded_controller/radio/docking_port_multi{child_names_txt = "Airlock One;Airlock Two"; child_tags_txt = "escape_dock_north_airlock;escape_dock_south_airlock"; frequency = 1380; id_tag = "escape_dock"; pixel_x = 0; pixel_y = -25; req_one_access_txt = "13"},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/hallway/secondary/exit) "cBi" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/fire{pixel_x = -2; pixel_y = 4},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) "cBj" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 0},/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) "cBk" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/toxin{pixel_x = -2; pixel_y = 4},/obj/item/weapon/storage/firstaid/toxin,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) @@ -8874,15 +8874,24 @@ "doH" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_south_outer"; locked = 1; name = "Escape Airlock"; req_access_txt = "13"},/turf/simulated/floor/plating,/area/hallway/secondary/exit) "doI" = (/obj/machinery/airlock_sensor{frequency = 1380; id_tag = "escape_dock_south_sensor"; pixel_x = 0; pixel_y = 25},/turf/simulated/floor/plating,/area/hallway/secondary/exit) "doJ" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 32; pixel_y = 0},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/hallway/secondary/exit) -"doK" = (/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod{frequency = 1380; id_tag = "escape_pod_bay_1"; pixel_y = 25; tag_door = "escape_pod_bay_1_hatch"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry) +"doK" = (/obj/structure/stool/bed/chair{dir = 8},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "escape_pod_5"; pixel_x = 0; pixel_y = -25; req_access_txt = "0"; req_one_access_txt = "0"; tag_door = "escape_pod_5_hatch"},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod5/station) "doL" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/wall,/area/hallway/secondary/exit) "doM" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating,/area/storage/emergency) "doN" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/extinguisher,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "escape_shuttle"; pixel_x = 8; pixel_y = 25; req_access_txt = "0"; req_one_access_txt = "13"; tag_door = "escape_shuttle_hatch"},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) "doO" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "centcom_dock_airlock"; locked = 1; name = "Arrivals Airlock"; req_access_txt = "13"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/evac) "doP" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access_txt = "13"},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) "doQ" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "centcom_dock"; name = "docking port controller"; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; req_one_access_txt = "13"; tag_door = "centcom_dock_airlock"},/turf/unsimulated/floor{dir = 6; icon_state = "warning"},/area/centcom/evac) -"doR" = (/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/turf/simulated/floor{dir = 1; icon_state = "arrival"},/area/hallway/secondary/entry) -"doS" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/embedded_controller/radio/docking_port_multi{child_names_txt = "Airlock One;Airlock Two"; child_tags_txt = "escape_dock_north_airlock;escape_dock_south_airlock"; frequency = 1380; id_tag = "escape_dock"; pixel_x = 0; pixel_y = -25; req_one_access_txt = "13"},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/hallway/secondary/exit) +"doR" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_5_hatch"; locked = 1; name = "Escape Pod Hatch"; req_access_txt = "13"},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod5/station) +"doS" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_5_berth_hatch"; locked = 1; name = "Escape Pod"; req_access_txt = "13"},/turf/simulated/floor/plating,/area/maintenance/aft) +"doT" = (/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod{frequency = 1380; id_tag = "escape_pod_5_berth"; pixel_x = -25; pixel_y = 25; tag_door = "escape_pod_5_berth_hatch"},/turf/simulated/floor/plating,/area/maintenance/aft) +"doU" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_1_recovery_hatch"; locked = 1; name = "Recovery Shuttle Dock"; req_access_txt = "13"},/turf/unsimulated/floor,/area/centcom/evac) +"doV" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_2_recovery_hatch"; locked = 1; name = "Recovery Shuttle Dock"; req_access_txt = "13"},/turf/unsimulated/floor,/area/centcom/evac) +"doW" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "escape_pod_1_recovery"; pixel_x = 25; pixel_y = 30; req_access_txt = "0"; req_one_access_txt = "13"; tag_door = "escape_pod_1_recovery_hatch"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor2"},/area/centcom/evac) +"doX" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "escape_pod_2_recovery"; pixel_x = -25; pixel_y = 30; req_access_txt = "0"; req_one_access_txt = "13"; tag_door = "escape_pod_2_recovery_hatch"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor2"},/area/centcom/evac) +"doY" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "escape_pod_5_recovery"; pixel_x = -25; pixel_y = 25; req_access_txt = "0"; req_one_access_txt = "13"; tag_door = "escape_pod_5_recovery_hatch"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor2"},/area/centcom/evac) +"doZ" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_5_recovery_hatch"; locked = 1; name = "Recovery Shuttle Dock"; req_access_txt = "13"},/turf/unsimulated/floor,/area/centcom/evac) +"dpa" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "escape_pod_3_recovery"; pixel_x = 25; pixel_y = -25; req_access_txt = "0"; req_one_access_txt = "13"; tag_door = "escape_pod_3_recovery_hatch"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor2"},/area/centcom/evac) +"dpb" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_3_recovery_hatch"; locked = 1; name = "Recovery Shuttle Dock"; req_access_txt = "13"},/turf/unsimulated/floor,/area/centcom/evac) "dqT" = (/turf/simulated/mineral,/area/mine/unexplored) "dqU" = (/turf/space,/area/syndicate_station/mining) "dqV" = (/obj/structure/transit_tube{icon_state = "D-SE"},/obj/structure/lattice,/turf/space,/area) @@ -10721,8 +10730,8 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatHasTatIasTatHasVatJasVatHatKatLatMaPLatOatOatPatKatKaafaaaalPaafaoTaoUaoUaoUaoUaoVaoWaoXaoYaoYaoYaoYaoZaafalPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafapxbeuatRatSapbapxarEarAatXatWasqarEarbauaaubaucaucaudaueaOzapAapEapFalNaNDaNFaHyaPqaHqaHrauhauiaGVaPHaPCaIzaOEaIyaOGaOParTaSOauqaJsavYavYaKkaSFaMmaTsaODasRasRasRasRasRaOSasPasPasPaaaalQaaaapvapvapvapvapvaafaoPaafapvapvapvapvapvaaaampaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatHauzauAauBatHauCauDauEatHaqYaqYauFauGauHauIauJaKFatKaaaaaaampaaaapwapwapwapwapwaafaoWaafapwapwapwapwapwaaaalPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaagapxauLapaapxaHDapxarEarAaMQarCasqarBarbaHAauSauTauTaLxaHCaKLaHsaHtaJbaHvaHwaHxaHyaHzaHqaHravdauiaGVaGVaGVaGWaGWaGXaGVaGVarTaJvaJqaJsavYavYaKkaKoaJCaKiaGZasRasRasRasRasRaGUaGSavqavraaaalQaaaaafaaaaafaafaaaaaaaoPaaaaaaaafaaaaaaaafaaaalPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatHavsavtavuatHavsavtavuatHaUlaTiaTaaTaaTaaTaaWtaVtarwaaaaaaalPaaaaafaaaaafaafaaaaaaavAaaaaaaaafaaaaaaaafaaaalPaafaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaagapxapxapxapxaHDapxarbarbarbarbarbaYnaHIaHHaHGaHGaHGaHGaHKaHJaNqapEaJmalNaIjaIkaIhaIiaHYaIfaHNaHVaNQaLlavPavRavRaTIavRaKSavVavWavhaKPaviaviaKPaLcaKXaLaawbasRasRasRasRasRawbawcawdaweaaaalQalQalPaaaaaaaafaaaaaaaoPaaaaafaafaafaafalPalPalPaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaasSatHaxaawgasSatHawfawgasSatKaZOatKatKatKatKatKaZeaspaaaaaaalPalPalPaaaaaaaafaaaawjawkawjaafaafaafaafalPalPalPaafapxapxapxapxawlawmawmawmawmawmawmawmawnapxapxawoawpawqapxawrawsaNJbTobdwaJfaJfaJfaJfaJfbcGaJfaJpaLDaJfaJfaJeaJeaJlaIYaJaaJnahmaIxaIAaIDaITaIvaHravdaIwawLawLbcxawMawNaVcawLauiawPawQaLQayMayMayMayMaMdaMmaMqawUasRasRasRasRasRawUawVawdaweaaaaaaaaaaafaafaaaaafaaaaaaawWaaaaaaaafaaaaaaaafaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawXdoKawYawYawZawYawYawYdoRaxcbdSaxbaxbaxbbdUatKbdVaspaaaaafaafaaaaaaaaaaaaaafaaaaxgbdWaKgaafaaaaafaaaaaaaaaaaaaaaapxapaapaaxjapaapaapaapaapaapaapaapaaxkaxlaxmaxnaxnaxnaxnaxnaxnaxoaJBaMMaxraxraxraxraxsaJAaxraMIaxraxsaxraxraxraxraxwaxxaxyaKdaKaaHxaJRaJRaJRaHrauhaJQawLawOawMaxCawMaVeaxEaWraxGaxHaMuaMmaMmaMmaMBaMEaMGaMHaJwasRasRasRasRasRaJxaJyaxNaxOaaaaaaaaaaaaaafaaaaafaaaaxPaxQaxPaaaaafaaaaaaaafaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaasSatHawfawgasSatHaxaawgasSatKaZOatKatKatKatKatKaZeaspaaaaaaalPalPalPaaaaaaaafaaaawjawkawjaafaafaafaafalPalPalPaafapxapxapxapxawlawmawmawmawmawmawmawmawnapxapxawoawpawqapxawrawsaNJbTobdwaJfaJfaJfaJfaJfbcGaJfaJpaLDaJfaJfaJeaJeaJlaIYaJaaJnahmaIxaIAaIDaITaIvaHravdaIwawLawLbcxawMawNaVcawLauiawPawQaLQayMayMayMayMaMdaMmaMqawUasRasRasRasRasRawUawVawdaweaaaaaaaaaaafaafaaaaafaaaaaaawWaaaaaaaafaaaaaaaafaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawXawYbgsawYawZawYcbnawYcbpaxcbdSaxbaxbaxbbdUatKbdVaspaaaaafaafaaaaaaaaaaaaaafaaaaxgbdWaKgaafaaaaafaaaaaaaaaaaaaaaapxapaapaaxjapaapaapaapaapaapaapaapaaxkaxlaxmaxnaxnaxnaxnaxnaxnaxoaJBaMMaxraxraxraxraxsaJAaxraMIaxraxsaxraxraxraxraxwaxxaxyaKdaKaaHxaJRaJRaJRaHrauhaJQawLawOawMaxCawMaVeaxEaWraxGaxHaMuaMmaMmaMmaMBaMEaMGaMHaJwasRasRasRasRasRaJxaJyaxNaxOaaaaaaaaaaaaaafaaaaafaaaaxPaxQaxPaaaaafaaaaaaaafaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxRaxSaxTaxUaxVaxTaxTaxWaxUaxTaxXaxYaxZaxZbjWatKbdVatLaafaafaaaaaaaaaaaaaaaaafaybaycaydbdBayfaaaaafaaaaaaaaaaaaaaaapxapaapxaygayhayiayiayiayiayiayiayiayjaygaykaylaylaylaylaylaylaylaQnaynaxrayoaypayqayrbdCbbraPaaPdaywayxaypayyaxrayzapEayAalNaQvaNFaNIbdEaHqaHravdbdFayDaxFaxFayEayFayGbeDayIavVbdHbdcbbUbbUbbUbaNbaTaPnbavbdGasRasRasRasRasRbdIasPasPasPaaaaaaaaaaafaafaafaafaaaaySbjYaySaaaaafaaaaaaaafaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafatHayUayVayUayWaxTaxTayXayUayVayUayYaxSaxVbjZatHbdVatKatKazaatOatOatOatOatPatKazbazcazdazeazbapxapxawoawpawqapxapxapxapaaryaygaaaaafaaaaafaaaaafaaaaafaaaaygaykaylazfazgazhaziazjaylaQnapaaxrazkazkazlazmaznazoaPpaBdazrazsaztaztaxrayzapEazualNaQvaNFaHybdEaHqaHrauhazvbbOazxazyazzazAazBazBazCazBasPbeXbfGbeFbeGbeHbeObeEasPbdLasRasRasRasRasRbdKasPaafaaaaaaaaaaaaaafaafaaaaafazLazMbdMazOazPaafaaaaaaaafaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafazQasSazRavtazSazTazUazVazWazSavtazXazYasSazZblwatHblyblAblAblAblAblAblAaVtbezaAeazbaAfaAgaAhazbbghapaapaapaapaapaapaapaapaaAjaygaafaAkaAkaAkaAkaAkaAkaAkaafaygaykaylaAlaAmaAnaAoaAlaylaQnaApaxraxraxraxrbkiaAraypaAsaArblqaxraxraxraxrayzapEaAualNaQvaNFaHybdEaHqaHravdaAvazBazBazBazBazBazBaAwaAxaAyazBasPasPasPasPbgobgrasPasPbdKasRasRasRasRasRbdKasPaaaaaaaaaaaeaaaaaaaaaaaaaafaAAaABbdTaADaAAaafaaaaaaaafaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -10747,7 +10756,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlaVlayBaxRbbnayabboaBgbbpbbpbbqaAMbbsbbqbbtbbpaTSaQpaOTaGHaByaBzaBzaBAaBBaBzbbBbadbbCaPEbafbagbbDaGPaPEaBxbfabalbbGbbHbbHazqbbIbalbbJbbKbbLbbMbarbarbaraUnaIOaIOaYVawGbbPbbQbbRbbSaBRaFraFlbbWbaAbaBbbXbbYbbZbcaaBhbccbcdbaBaCVbcebcfbcgbchbcibcjaAVbdsawGbcmbcnbcnaUnbcqbcqaBoaBobcoaThbcobcpaBoaBoaRRaBoaBoaBobcqbcrbcrbcrbcrbcrbcrbcsaAabcqazGbctbctaCKaZFaZFaZFayZbcqaBEaBDbaYaEsaEsaEsaEsaEsarZaEsaEsaEsaEsaEyaBCbcAawKavUawKbcyayKbcqaPtbcBaSsbcCaSsbfVaWAbcDbcEaTMaWDaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazQasSbcFaAFaWGatHatHatHatHatHatHaIQaJoaBgaTSaTSaTSaTSaTSaTSaTSaTSaTSaHMaHMaOlaCSaZYbcIbcJbcKaYybcLbcMaDEaPEbafbagbcOaOpaPEaBxbfabalbbHbcQbcQbbHbcQbalbbJbcRbcSbcSbcTbcUbcVbarbcWaIOaYVaGpbcYbgCbdabdbbdbbdaaGibddbaAbaBbdebdfbdgbdhbdibdjbdkaGYaHabdnbdobclbdpbdqbdrbclaLgawGaJtbdtaIOaNsbdubdvaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFbdxaZFaZFaZFaZFaZFaZFaZFaZFbdyaZFaZFaZFaZFaZFaZFaZFaBDbdzaDPaDTaCYaDUaCYaDVaCYaDXaDWaDYaCYaDZaCYaEaaEbaCYaCYaCYaCYaCYaCYaEcaEdaEebdObcCaSscUBcQkdoGdaLdoIdoHaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQaaaaafbdRazTaDraDlaCTaAJaAJaAJaAJaAJaAJaAtaAqaBOaBeaBcaOlaCSaYyaYybdXbdYaYyaPEaPEaCUaPEbafbeabcOaOoaPEaDKaFSbalbecbedbbHbcQbeebalbbJbefbcSbcSbcSbegbehbarbeiaIOaYVaGkbekbgCbembenbeobepaGibeqbaAbaBberbesbetbetbetaEObevbaBaCVbexbclbclbdpbeybdrbclaLfawGaGQaIOaIOaNsbdubdvaZFaZFaZFaZFaZFaZFaZFbeBaZFaZFaZFaZFaZFaZFbeCaCYaCYaCYaCYaCYaCYaCZaCYaCYaCYaCYaCYaCYaCYaHLaDDaDCaDtaZFaZFaZFaZFaZFaBDaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFbeIbdzbeJaSsaSsbcCaSsbfVaStbeLaTMaTMaTNaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbdQaWEaWFbeMaAbbeNbUVbePbePbeQbePbePbePbeRaPBaPBaPBaPBaOlaCSaZYbeSbeTbeUaYybeVbeWbUWaPEaPEaPEaPEbUmaPEcuRbfabalctebbHbcQcsXcsZbalbbJbarbfcbcSbcSbPhbfebarbULaIOaYVbTrbfhbgCbembfibfjbepaGibfkbaAbflbfmbfnbetbfobetbdfbfpbfqaCVbfrbfsbftbfubfubfvbclbfwawGcCTcuScFlcvvcxRdPwdPxdTPdPxcFHdPxcGedTQbTtdTSctbctbctaaZFaZFaZFaZFbfDaZFbfybfOaZFctccByctdbfIbWUcGxbfIbfKdTUdTVdTWaZFaZFaZFaZFaZFbfObfPbfDaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFbdzbfQbfRbfSbfTbfUdoSdoJbfWaafaaaaafaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbdQaWEaWFbeMaAbbeNbUVbePbePbeQbePbePbePbeRaPBaPBaPBaPBaOlaCSaZYbeSbeTbeUaYybeVbeWbUWaPEaPEaPEaPEbUmaPEcuRbfabalctebbHbcQcsXcsZbalbbJbarbfcbcSbcSbPhbfebarbULaIOaYVbTrbfhbgCbembfibfjbepaGibfkbaAbflbfmbfnbetbfobetbdfbfpbfqaCVbfrbfsbftbfubfubfvbclbfwawGcCTcuScFlcvvcxRdPwdPxdTPdPxcFHdPxcGedTQbTtdTSctbctbctaaZFaZFaZFaZFbfDaZFbfybfOaZFctccByctdbfIbWUcGxbfIbfKdTUdTVdTWaZFaZFaZFaZFaZFbfObfPbfDaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFaZFbdzbfQbfRbfSbfTbfUcBhdoJbfWaafaaaaafaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbdQcpzcpvcqkcqxbfXbePbfYbfZbgabgabgbbgcbgdbgebgebgebgebPBbUubUrbUrbUtbUsbUrbUobUobUpbUobUnbUlbUlbSbbRucqMcrQbUCcrpbUBbUBcrocqYbalcqPbarbgybcSbcSbPhbgzbgAbffaIOaYVbaAbgCbTpbdabdabdabdaaGibgEbaAbaBbgFbgGbWJbgIbgJbgGbgKbaBaCVbURbUQbgNbgObgPbgQbgRbgSawGcrZaHfcrWawGbTqbTqbgUbgUbgUbgUcmTcmTcsUcsVcsrcsscsVcsUcmTcmTcmTckbckbckbckbckbbcqbcqcskbhbbhbbhbbhbbhbbktcslbcqcsYcsncsobhkbhkbhlbhlbhlbhlbhlbhmbhnbhnbhobhnaZFbhnbhobhnbhnbhpbTqcsJcsJbNtbhrbhgdoLaPtaPtaaaaaaaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQbdQaZLaZMbeMaAbbhsbePbhtbePbhubhvbePbePbePaRebhwbhxbhxbTHaYyaZYbhzbcJbhAaYybUabTZbTTbTSbTVbTUbTXbTWbTYbTXbTMbTNbLkbTCbLkbLkcmKcmVclMbTbbhSbcSbcSbTLbhUbhVbffaIObhWbaAbhXbaAbhZbVnbibbSOaGibaAbaAbaBbiebifbigbihbiibijbikbaBaCVbTybimckrbiobipbgQbclbiqawGcnGcoacoNawGcqlcqncqSbTncrDcrGcrMcoOcqUcqVcrAcrBcogcofcpscoYcmTcmIcmWcmUcpMckbcnscpNcndcptbVUcktcktclSbktcggbiSbiScksbiSbiUbiUbhlbiVbiWbiXbhlbiYbiZbiYbhlbhmbhnbhpbNtbSQbTibSQbNtbThbTgbNtbjebTEdoMbhgaaaaaaaaaaaaaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdQbdQbdQbdQbdQbdQbdQbdQbdQbdQaaachMaMYbbnayabjhbePbjibePbjjbjkbjlbQYbePbjnaReaXibcHbTjaYyaYyaYyaYyaYyaYybTAbjrbjsaRebjtbalbalbalbTzbalbalbalbrnbalbalbalbMVbalblubRFbjzbcSbcSbPhbjAbgAbSwaIObSybaAbjCbaAbaAbaAbaAdoFbTkbaAbTmbTlbjGbjHbbXbjIbbXbjJbjKbTvbTxbTybjNbclbjObjPbgQbjQbjRbaDbSNaIObDbcgQchOcgPcgjchNcjwckLciicjachochocgRcgScjtcjpciHciEciDciCciBciAckcckbcjDcgeclFcgecjvcjucgecgfbktcggbiSbkwcfKcgdbkzbkAbkBbkCbkDbkCbSjbkFbkGbkHbhlbkIbkJbkKbNtbSzbSEbSDbSMbNHbSAbNtbkRbkSbkTbhgaaaaaaaaaaaeaJGaJGaJGaJGaJGaJGaJGaJGaJGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -10773,7 +10782,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNObESbNPbESbNQbEKaafaaaaaabASbNRbNSbNTbASaaabGDccpcbybzibJkbJkbJkblPbKYaaabGLbNWbNXbNYbNZbHVbOabObbOcbOdbGFbIabIqbIcbIbbIdbIdbIdbIdbIdbIdbItbIdbIebIebIEbGKbGKbGKbGKbymbymbHwbHwbHwbymbymbHvbHobHjbHibzGbBubCUbInbIlbImbEcbIkbEcbEcbEcbEcbEcbIjbIfbBAbmobHSbIsbCibkybksbhQbIMbIVbIUbIRbIQbITbISbIMblUbIPbIObIZblTblTbJmbojbOVbngbngbjfbjfbjfbjfbIWbjfbIXbIYbIHbjfbIhbCWbyVbngbIKbIJbIGbngaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabjBbulbulbulbulbulbulbILbjSbuPbulbHmbjSbjSbjSbjSbjBaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafcbxbGDbGDbGDbGDbJkblQblPbPiaaabPjbJpbPkbPlbPmbHVbHVbPnblOblMbscbmwblSblRbCtbgXbgXbgXbgXbgXbgXbgXbgXbPwbPxboobonbmAbmybGKbymblCblBblDblDbqOblFblIblHblKblJblYblXbmabmbbmcbmdbmebmfbmgbmibrKbmkbidbmlbmmbmnbmobmpblfblebkybksbhQboUblxbnPbicbicbicblzbqBblUbkIbpdblTblTbQebgnbojbojbQgaafbjcblZblWbjabmvbjabqMbmtbnEbjfblLbnHbrPbngbnwbnjbnjbolaagaagaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabombmNbmNbmNbmNbmNbmNbmNbmMbmLbjSbjSbjSbjSbmObmLbjBaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaBcaCcaCcaDcaEbGDccfbJkbmKbGDaaaaaaaaaaaabGFbQybQzbQAbQBbGFbQCbCtbmIbmHbmJbCtbgXbmEbmGbmFbmCbmBbmDbfNbfNbfNbfNbfNbfNbkjbnZbnXbsCboXbBzboObpkbpjbpibphbpobpnbnIbpmbnIbnJbnubnvbnNbnObnLbnMbnObnSbspbnQbnVbnWbsqbnUbmubmxbmzbslbpbbpabpfbpebplbpgbpqbpgbpsbprbRlbmhbskbRnbojbgnbojbojbRoaafbjcbjdbjdbopboqboKboPboYbpwbjfbgqbgpbUKbngbngbngbngbngaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabjBbpubpubpubpubpubpubpvbjSbptbpubkabjSbjSbjSbjSbjBaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkfcbncbocbpbJkbgsbJkbJkbgtbGDbguaaaaaaaaabGFbGFbGFbGFbGFbGFbGFbCtbhybhibhhbCtbgXbhBbgwbgxbgxbgwbgvbfNbgMbgLbgDbgBbfNbhGbymbymblVbfAbmjbfEbBzbggbgibhHbfJbcPbgfbfLbgTbgVbgWbgYbgjbgkbbVbcZbgkbhfbhjbhEbhIbhabhcbhdbinbilbGKbhYbCTbhNbhNbhJbicbiubisbicbicbiabSlbgmbSnbojbSobgnbojbSpbSqaafbjcbjdbjbbjabiAbjabivbiybjmbjfbgqbgpbjubitbyVaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbjBbjSbjSbjSbjSbjSbjSbjXbjSbkabjSbjSbjSbjSbjSbjBbjBaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkfdoKcbodoRbJkdoSdoTbJkbgtbGDbguaaaaaaaaabGFbGFbGFbGFbGFbGFbGFbCtbhybhibhhbCtbgXbhBbgwbgxbgxbgwbgvbfNbgMbgLbgDbgBbfNbhGbymbymblVbfAbmjbfEbBzbggbgibhHbfJbcPbgfbfLbgTbgVbgWbgYbgjbgkbbVbcZbgkbhfbhjbhEbhIbhabhcbhdbinbilbGKbhYbCTbhNbhNbhJbicbiubisbicbicbiabSlbgmbSnbojbSobgnbojbSpbSqaafbjcbjdbjbbjabiAbjabivbiybjmbjfbgqbgpbjubitbyVaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbjBbjSbjSbjSbjSbjSbjSbjXbjSbkabjSbjSbjSbjSbjSbjBbjBaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccecaCcaCcaDcbtbiLbkebGDbkubGDccgbkvbkEccgccgbjFbjLbjMbgZbjTbjUblvbYpbjqbjxbllbjybgwbjEbjDbiNbiMbiObfNbiQbiPbjpbiRbfNbnnbsabnhbnfbmRbmqbiTbiTbkhbkgbkkbiDbkdbkcbkbbiDbiDbiBbiCbizbwUbhebhFbhebiKbiIbiJbiGbiHbiEbiFbiGbklbGKbksbCTbknbkrbkobkMbkLbkPbkNbhQbhQbrhbiwbrhbrhbrhbhTbxqbhRbrhbjfbjfbjfbjfbjfbkmbjfbjfbjfbjfbjfbgqbgpblgbkpbyVaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabjBbjBbkQbjSbjSbjSbjSbjSbjSbjSbjSbjSbjSbjSbjBbjBaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQalQchdalQalQalQalQalQaaaaaaaaaaaaaaaaaaaafaafaaabxWbxTbxTbxTbxVbxTbxTbxRbxSccgbwobwhccgbwJbwKbwHbwIbwDbwGbwtbwvbwSbwObfHbxUbwMbgwbjEbwLbxjbiMbxdbfNbiQbiPbxcbxabfNbxObPybymbvnbvlbwcbvobtLbtXbvebvdbiDbvfbvkbvjbuObiDbuQbvFbvNbwUbhebhFaJzbiKbvrbvsbiGbvtbvubuabiGbvYbGKbvUbCTbhQbhQbhQbhQbhQbvqbhQbhQbwqbwmbvvbxlbxxbrhbiwbxEbvabrhbxybwCbwTbwrbwsbwYbxkbumbwVbumbumbuLbunbAEbyVbyVbyVaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbtybjBbuPbulbulbjSbjSbjSbjSbjSbjSbjSbjSbjBbjBaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbAdbzWbsKbzRbxtbthbzBbzFbzHccgbzSbzVccgccgbAlbAmbAnbAhbAibAjbAkbYpbyNbyRbyObyxbyJbyMbyLbzDbyJbyJbyybzpbznbzAcjcbfNbkjbqZbqZbqZbqZbywbqZbqZbqZbysbyrbiDbyvbqJbytbtDbiDbylbynbzybwUbhebhFbhebiKbwWbwXbiGbyibwZbyhbwFbwEbxsbwPbwRbwRbwRbwRbwRbwRbygbwRbwRbygbwRbyBbwRbygbwQbxmbxrbyqbwQbyubxAbxAbxAbxCbxDbxAbxAbxAbxAbxAbxzbyabxZbVNbVObyVbyVbyVbyVaaaaafaaaaaaaaaanmanmanmaafaaaaaaaafaaaaaaaafaaaaaabxYbjBbxXbjBbjBbjSbjSbjSbjSbjSbjSbjSbjBbjBaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -10921,16 +10930,16 @@ ctEcuqcuwcuxcurcuvcupcuzcuvcuqcuwcuxcurcuvcupcuzcuvcupcuzcuqcuwcuxcurcuvcupcuzct ctAcuzcuscuAcuucuxcuwcuCcuxcuzcuscuAcuucuxcuwcuCcuxcuwcuCcuzcuscuAcuucuxcuwcuCctycujctLcuqcurcuvcuzcutcuocuCcAzczXczTczUcAoczRczWcApcAncAmcAEcurcuvcuCcuwcuzcuycuuctBcujaaaaaaczocuocuxczDczZczZczLczDczZczLczDczZczLczDczZczLczDczZczLczDczZczZcuxcupczoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczqczzcAFczNcAGczzcAscAdcAhcAhcAgcAhcAdcAicAjcAkcAkczraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacACcACcACaaacADcADcADaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ctGcuCcuBcuqcutcuAcuscuocuAcuCcuBcuqcutcuAcuscuocuAcuscuocuCcuBcuqcutcuAcuscuoctHcujctIcuzcuucuxcuCcupcurcuocAEcuycuuczScAtcAlcAoczUcutcuqcAHcuucuxcuocuscuCcuvcutctJcujaaaaaaczocurcuAczKcAqcAqcAaczKcAqcAaczKcAqcAaczKcAqcAaczKcAqcAaczKcAqcAqcuAcuwczoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczqcAIczzcAJczzcAKcAccAdcAhcAhcAgcAhcAdcAhcAkcAkcAkczraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacACcACcACaaacADcADcADaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ctDcuocuycuzcupcuqcuBcurcuqcuocuycuzcupcuqcuBcurcuqcuBcurcuocuycuzcupcuqcuBcurctKcujctycuCcutcuAcuocvOcvMcALcAMcANcvPcAmczTczXcAtczScupcuzcAOcutcuAcurcuBcuocuxcupctMcujaaaaaaczocuucuqcAbcAvcAvczxcAbcAvczxcAbcAvczxcAbcAvczxcAbcAvczxcAbcAvcAvcuqcusczoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczqaaacAIcAPcAKaaacAccAdcAhcAhcAgcAhcAdcAicAjcAkcAkczraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAQcARcAScATcAUcACcACcACaaacADcADcADcAQcARcAScATcAUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -ctLcurcuvcuCcuwcuzcuycuucuzcurcuvcuCcuwcuzcuycuucuzcuycuucurcuvcuCcuwcuzcuycuuctBcujctHcuocupcuqcurcAzczPcAnczUczSczVczQcAncApczTcAmcuwcuCcvKcupcuqcuucuycurcuAcuwctzcujaaaaaaczocutczBcArcAAcAAczBcArcAAczBcArcAAczBcArcAAczBcArcAAczBcArcAAcAAczBcuBczoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczrczrczrczrczrczrczrczrczrczrczrczrczrczrczrczrczrczraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAVcAWcAWcAWcAXcAYcBhcAYcAYcAYcBhcAYcBacAWcAWcAWcAVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -ctIcuucuxcuocuscuCcuvcutcuCcuucuxcuocuscuCcuvcutcuCcuvcutcuucuxcuocuscuCcuvcutctJcujctKcurcuwcuzcuucAEczVczPczScAmczRczWczPczUcAnczQcvTcvTcvTcvTcBbcutcuvcuucuqcusctCcujaaaaaaczocupczJczyczDczDczJczyczDczJczyczDczJczyczDczJczyczDczJczyczDczDczJcuyczoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAVdQmcBxcBdcTpcBwcBecBkcBicBjcBecBwcTqcBldQpdQqcAVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ctLcurcuvcuCcuwcuzcuycuucuzcurcuvcuCcuwcuzcuycuucuzcuycuucurcuvcuCcuwcuzcuycuuctBcujctHcuocupcuqcurcAzczPcAnczUczSczVczQcAncApczTcAmcuwcuCcvKcupcuqcuucuycurcuAcuwctzcujaaaaaaczocutczBcArcAAcAAczBcArcAAczBcArcAAczBcArcAAczBcArcAAczBcArcAAcAAczBcuBczoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczrczrczrczrczrczrczrczrczrczrczrczrczrczrczrczrczrczraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAVcAWcAWcAWcAXcAYdoUcAYcAYcAYdoVcAYcBacAWcAWcAWcAVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ctIcuucuxcuocuscuCcuvcutcuCcuucuxcuocuscuCcuvcutcuCcuvcutcuucuxcuocuscuCcuvcutctJcujctKcurcuwcuzcuucAEczVczPczScAmczRczWczPczUcAnczQcvTcvTcvTcvTcBbcutcuvcuucuqcusctCcujaaaaaaczocupczJczyczDczDczJczyczDczJczyczDczJczyczDczJczyczDczJczyczDczDczJcuyczoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAVdQmcBxcBdcTpcBwdoWcBkcBicBjdoXcBwcTqcBldQpdQqcAVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ctycutcuAcurcuycupcuvcuBcuqcurcBmcBncANcwmcBocuxcBpcBqcvMcBrcBscurcuBcuocuxcupctMcujctBcuucuscuCcutcAHczRczVcAmczQcAlcAoczVczSczPczWczXczTczQcAlcwecupcuxcutcuzcuBctFcujaaaaaaczocuwcuoczCczKczKczZcuvcuwczZczCczKczZczCczKczZcuvcuwczZczCczKczKcuocuvczoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacBtcBtcBtcBtcBtcBtcBtcBtcBtcBtcBtcBtcBtcBtcBtcBtcBtcBtcBtcBtcBtcBtcBtcBtcBtcBtcBtcBtcBtcBtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAVcBccBccBuctncAZcBecAZcBfcAZcBecAZcBgcBucBccBccAVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ctHcuxcuqcuucuocuAcurcuCcupcuucBzcBAcBBcBCcBDcuucBEcBFcBGcBHcBIcuucuycurcuAcuwctzcujctJcutcuBcuocupcAOcAlczRczQczWczXcAtczRcAmczVcAocApcAnczWczXcBJcuwcuAcupcuCcuyctEcujaaaaaaczocuscurcuxaaacuscurcuxcuscAqczLcAbcAqczLcAbcAqcuxcuscurcuxaaacuscurcuxczoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacBtcBKcBKcBKcBKcBKcBKcBKcBKcBKcBLcBKcBKcBKcBMcBNcBKcBKcBKcBMcBKcBKcBKcBKcBKcBKcBMcBKcBKcBtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacBOcBlcBccBPcBecBecBecBecBecBecBecBecBecBPcBccBdcBQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -ctKcuAcuzcutcurcuqcuucuocuwcutcBIcBRcBScBTcBUcutcBVcBWcBXcBYcBZcutcuvcuucuqcusctCcujctMcupcuycurcuwcvKczXcAlczWcAocApczTcAlczQczRcAtczUczPcAocApczHcuscuqcuwcuocuvctAcujaaaaaaczocuBcuucuAaaacuBcuucuAcuBcAvcAacArcAvcAacArcAvcuAcuBcuucuAaaacuBcuucuAczoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacBtcBKcBKcBKcBKcBLcBKcBKcBKcBKcBKcBKcBKcBKcBKcBKcBKcBMcBKcBKcBKcBKcBKcBMcBKcBKcBKcBKcBKcBtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacBOcAYcBacCMcAZcBecAZcCLcCLcAZcBecCDcAXcAYcBQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -ctBcuqcuCcupcuucuzcutcurcuscupcBZcCgcChcBBcBpcupcBzcCicCjcCkcClcupcuxcutcuzcuBctFcujctzcuwcuvcuucAzcCmcApczXcAocAtczUcAnczXczWcAlczTczSczVcAtczUcCncwmcBbcuscurcuxctGcujaaaaaaczocuBcuucuAaaacuBcuucuAcuBcAvcAacArcAvcAacArcAvcuAcuBcuucuAaaacuBcuucuAczoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacBtcBKcBKcBKcBKcBKcBKcBKcCocBKcBKcBKcBKcBKcBLcBKcBKcBNcBMcBKcBKcBMcBKcBKcBMcBNcBKcBMcBKcBtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAVcCBcBfcBecCAcCBcCBcCxcBecCDcAVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ctKcuAcuzcutcurcuqcuucuocuwcutcBIcBRcBScBTcBUcutcBVcBWcBXcBYcBZcutcuvcuucuqcusctCcujctMcupcuycurcuwcvKczXcAlczWcAocApczTcAlczQczRcAtczUczPcAocApczHcuscuqcuwcuocuvctAcujaaaaaaczocuBcuucuAaaacuBcuucuAcuBcAvcAacArcAvcAacArcAvcuAcuBcuucuAaaacuBcuucuAczoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacBtcBKcBKcBKcBKcBLcBKcBKcBKcBKcBKcBKcBKcBKcBKcBKcBKcBMcBKcBKcBKcBKcBKcBMcBKcBKcBKcBKcBKcBtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacBOcAYcBacCMcAZcBecAZcCLcCLcAZcBecCpcAXcAYcBQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ctBcuqcuCcupcuucuzcutcurcuscupcBZcCgcChcBBcBpcupcBzcCicCjcCkcClcupcuxcutcuzcuBctFcujctzcuwcuvcuucAzcCmcApczXcAocAtczUcAnczXczWcAlczTczSczVcAtczUcCncwmcBbcuscurcuxctGcujaaaaaaczocuBcuucuAaaacuBcuucuAcuBcAvcAacArcAvcAacArcAvcuAcuBcuucuAaaacuBcuucuAczoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacBtcBKcBKcBKcBKcBKcBKcBKcCocBKcBKcBKcBKcBKcBLcBKcBKcBNcBMcBKcBKcBMcBKcBKcBMcBNcBKcBMcBKcBtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAVcCBcBfcBecCAcCBcCBcCxcBecCrcAVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ctJcuzcuocuwcutcuCcupcuucuBcuwcClcBCcCtcBScCucuwcBIcCvcBHcCwcBDcuwcuAcupcuCcuyctEcujctCcuscuxcutcAEczQczUcApcAtczTczSczPcApcAoczXcAncAmczRczTczSczPcApcwecuBcuucuActDcujaaaaaaczocuBcuucuAaaacuBcuucuAcuBcAvcAacArcAvcAacArcAvcuAcuBcuucuAaaacuBcuucuAczoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacBtcBKcBKcBKcBKcBKcBKcBKcBKcBKcBKcBKcBKcBKcBKcBKcBKcBKcBKcBLcBKcBKcBMcBNcBKcBKcBMcBKcBNcBtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDccDccDccDccAVcCycAZcBecCAcCBcCBcCxcBecBwcAVcCzcCzcCzcCzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -ctMcuCcurcuscupcuocuwcutcuycuscBDcBzcBUcClcBmcuscBZcBscBEcBIcBUcuscuqcuwcuocuvctAcujctFcuBcuAcupcAHczWczSczUczTcAncAmczVczUcAtcApczPczQcAlcAncAmczVczUcBJcuycutcuqctLcujaaaaaaczocuycutcuqaaacuycutcuqcuycAAczxczycAAczxczycAAcuqcuycutcuqaaacuycutcuqczoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacBtcBKcBKcBKcBKcBKcBKcBKcBKcBKcBKcBKcBKcBKcBKcBKcBLcBKcBKcBKcBKcBKcBNcBKcBMcBNcBKcBMcBKcBtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDccDccDccDccBhcBecBecBecAZcCscCscAZcBecBecBhcCzcCzcCzcCzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -ctzcuocuucuBcuzcuscurcuxcuscuocuucuBcuzcuscurcuxcuscurcuxcuocuucuBcuzcuscurcuxctGcujctEcuycuqcuwcAOcAocAmczScAnczPczQczRczSczTczUczVczWczXczPczQczRczSczHcuvcupcuzctIcujaaaaaaczocuvcupcuzaaacuvcupcuzcuvcupczBczCczDczBczCcupcuzcuvcupcuzaaacuvcupcuzczoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacBtcBKcBKcBKcBKcBKcBKcCCcCCcCCcCCcCCcCCcCCcBKcBKcBKcBKcBKcBKcBKcBMcBKcBKcCocBNcBKcBKcBKcBtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDccDccDccDccAVcBwcCqcBecBecBecBecBecBecCrcAVcCzcCzcCzcCzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -ctCcuxcutcuycuCcuBcuucuAcuBcuxcutcuycuCcuBcuucuAcuBcuucuAcuxcutcuycuCcuBcuucuActDcujctAcuvcuzcuscvKcAtczQcAmczPczVczWcAlcAmcAnczSczRcAocApczVczWcAlcAmczIcuxcuwcuCctycujaaaaaaczocuxcuwcuCaaacuxcuwcuCcuxcuwcuCcuxcuwcuCcuxcuwcuCcuxcuwcuCaaacuxcuwcuCczoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacBtcBKcBKcBKcBKcBKcCEcCFcCGcCHcCHcCHcCIcCFcCJcBKcBKcBKcBKcCocBKcBKcBLcBKcBLcBKcBMcBKcBMcBtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAXcAYcAYcAYcDFcBecAZcBecBecCpcAVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ctMcuCcurcuscupcuocuwcutcuycuscBDcBzcBUcClcBmcuscBZcBscBEcBIcBUcuscuqcuwcuocuvctAcujctFcuBcuAcupcAHczWczSczUczTcAncAmczVczUcAtcApczPczQcAlcAncAmczVczUcBJcuycutcuqctLcujaaaaaaczocuycutcuqaaacuycutcuqcuycAAczxczycAAczxczycAAcuqcuycutcuqaaacuycutcuqczoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacBtcBKcBKcBKcBKcBKcBKcBKcBKcBKcBKcBKcBKcBKcBKcBKcBLcBKcBKcBKcBKcBKcBNcBKcBMcBNcBKcBMcBKcBtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDccDccDccDcdoZdoYcBecBecAZcCscCscAZcBedpadpbcCzcCzcCzcCzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ctzcuocuucuBcuzcuscurcuxcuscuocuucuBcuzcuscurcuxcuscurcuxcuocuucuBcuzcuscurcuxctGcujctEcuycuqcuwcAOcAocAmczScAnczPczQczRczSczTczUczVczWczXczPczQczRczSczHcuvcupcuzctIcujaaaaaaczocuvcupcuzaaacuvcupcuzcuvcupczBczCczDczBczCcupcuzcuvcupcuzaaacuvcupcuzczoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacBtcBKcBKcBKcBKcBKcBKcCCcCCcCCcCCcCCcCCcCCcBKcBKcBKcBKcBKcBKcBKcBMcBKcBKcCocBNcBKcBKcBKcBtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDccDccDccDccAVcBwcCqcBecBecBecBecBecBecAZcAVcCzcCzcCzcCzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ctCcuxcutcuycuCcuBcuucuAcuBcuxcutcuycuCcuBcuucuAcuBcuucuAcuxcutcuycuCcuBcuucuActDcujctAcuvcuzcuscvKcAtczQcAmczPczVczWcAlcAmcAnczSczRcAocApczVczWcAlcAmczIcuxcuwcuCctycujaaaaaaczocuxcuwcuCaaacuxcuwcuCcuxcuwcuCcuxcuwcuCcuxcuwcuCcuxcuwcuCaaacuxcuwcuCczoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacBtcBKcBKcBKcBKcBKcCEcCFcCGcCHcCHcCHcCIcCFcCJcBKcBKcBKcBKcCocBKcBKcBLcBKcBLcBKcBMcBKcBMcBtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAXcAYcAYcAYcDFcBecAZcBecBecCDcAVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ctFcupcupcuvcuocuycutcuqcuycupcupcuvcuocuycutcuqcuycutcuqcupcupcuvcuocuycutcuqctLcujctGcuxcuCcuBcCPczTczWczQczVczRcAoczXczQczPcAmcAlcAtczUczRcAoczXczQczYcuAcuscuoctHcujaaaaaaczoczoczoczoczoczoczoczoczoczoczoczoczoczoczoczoczoczoczoczoczoczoczoczoczoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacBtcBKcBKcBKcBKcBKcCFcCQcCRdQjdgrcCUcCVcCVcCFcCWcBKcBKcCCcCCcCCcCCcCCcCCcCCcCCcCXcCYcCCcBtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAVcCecCecCfdUMcBecAZcBecBecAZdVtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ctEcuwcuwcuxcurcuvcupcuzcuvcuwcuwcuxcurcuvcupcuzcuvcupcuzcuwcuwcuxcurcuvcupcuzctIcujctDcuAcuocuycDdcAncAoczWczRcAlcAtcApczWczVczQczXczTczScAlcAtcApczWcvUcuqcuBcurctKcujaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacBtcBKcBKcBKcBKcBKcCFcDecCRcCRcDfcCRcCRcCRcCFcCWcBKcDgcDhcDicDicDjcBtcBtcBtcBtcBtcBtcBtcBtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadTOcCacCacCadTRcBecCbcCccCdcCccAVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ctAcuscuscuAcuucuxcuwcuCcuxcuscuscuAcuucuxcuwcuCcuxcuwcuCcuscuscuAcuucuxcuwcuCctycujctLcuqcurcuvcBbczPcAtcAocAlczXcurczUcAoczRczWcApcuucAmczXczTczUcAocAucuzcuycuuctBcujaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacBtcBKcBKcBKcBKcBKcCFcDncCRcCRcCRcDocCRcDpcCFcCWcCocDgcDqcDrcDrcDrcDscDtcBtcDucDvcBtcBtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAVcEdcEccCacDmcBedQkcEocEncSbcAVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From ea1060ac339c4b4ef1692f446865926cf262dd68 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Wed, 25 Jun 2014 13:20:12 -0400 Subject: [PATCH 084/304] Fixes shuttle consoles not checking access Generalizes machine access. --- code/game/machinery/machinery.dm | 4 ++++ code/modules/shuttles/departmental.dm | 6 +++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index 495bb45246..7e5599bff0 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -235,6 +235,10 @@ Class Procs: src.add_fingerprint(user) + if(!allowed(user)) + user << "\red Access Denied." + return 1 + var/area/A = get_area(src) A.master.powerupdate = 1 diff --git a/code/modules/shuttles/departmental.dm b/code/modules/shuttles/departmental.dm index 05715f8daf..9efd0ed795 100644 --- a/code/modules/shuttles/departmental.dm +++ b/code/modules/shuttles/departmental.dm @@ -1,17 +1,17 @@ /obj/machinery/computer/shuttle_control/mining name = "mining shuttle console" shuttle_tag = "Mining" - req_access = list(access_mining) + //req_access = list(access_mining) circuit = /obj/item/weapon/circuitboard/mining_shuttle /obj/machinery/computer/shuttle_control/engineering name = "engineering shuttle console" shuttle_tag = "Engineering" - req_one_access_txt = "11;24" + //req_one_access_txt = "11;24" circuit = /obj/item/weapon/circuitboard/engineering_shuttle /obj/machinery/computer/shuttle_control/research name = "research shuttle console" shuttle_tag = "Research" - req_access = list(access_research) + //req_access = list(access_research) circuit = /obj/item/weapon/circuitboard/research_shuttle \ No newline at end of file From d3e1b3a97f2cb67298ea5fb9277a66135cdb1adb Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Wed, 25 Jun 2014 20:29:00 +0200 Subject: [PATCH 085/304] Fixes #5261 Replaces the super strength full-tile reinforced windows on the research outpost with standard health variants. Did consider renaming the super-variants to avoid accidental use in the future but I thought not after seeing the massive diff it'd cause. Should be fully compatible with PR #5363 no matter the merge order but should be safest to merge #5363 first, then this. --- maps/tgstation2.dmm | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/maps/tgstation2.dmm b/maps/tgstation2.dmm index 498c1c2653..b9cea059e1 100644 --- a/maps/tgstation2.dmm +++ b/maps/tgstation2.dmm @@ -6332,11 +6332,13 @@ "crN" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "solar_xeno_inner"; locked = 1; name = "Engineering External Access"; req_access = null; req_access_txt = "13"},/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "crO" = (/obj/machinery/meter{frequency = 1443; id = "dloop_atm_meter"; name = "Distribution Loop"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/visible/supply{tag = "icon-manifold (WEST)"; icon_state = "manifold"; dir = 8},/turf/simulated/floor,/area/atmos) "crP" = (/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,/obj/machinery/meter{frequency = 1443; id = "wloop_atm_meter"; name = "Waste Loop"},/turf/simulated/floor,/area/atmos) +"crQ" = (/obj/machinery/door/firedoor/border_only{dir = 8; layer = 2.6; name = "Firelock West"},/obj/structure/window/reinforced{dir = 5},/turf/simulated/floor/wood,/area/research_outpost/hallway) "crR" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/hallway/primary/central) "crS" = (/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,/obj/machinery/meter,/turf/simulated/floor,/area/atmos) "crT" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/obj/machinery/meter,/obj/machinery/firealarm{pixel_y = 24},/turf/simulated/floor,/area/atmos) "crU" = (/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/obj/machinery/atmospherics/pipe/simple/visible/supply{tag = "icon-intact (SOUTHWEST)"; icon_state = "intact"; dir = 10},/turf/simulated/floor,/area/atmos) "crV" = (/obj/structure/stool/bed/chair/comfy/brown,/obj/effect/landmark/start{name = "Psychiatrist"},/turf/simulated/floor{icon_state = "bcarpet06"},/area/medical/psych) +"crW" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only{dir = 8; layer = 2.6; name = "Firelock West"},/obj/structure/window/reinforced{dir = 5},/turf/simulated/floor/wood,/area/research_outpost/hallway) "crX" = (/obj/structure/reagent_dispensers/fueltank,/obj/effect/decal/cleanable/blood/oil{amount = 0},/turf/simulated/floor/plating,/area/maintenance/asmaint) "crY" = (/obj/machinery/computer/atmos_alert,/obj/machinery/alarm{pixel_y = 22},/turf/simulated/floor,/area/engine/engineering_monitoring) "crZ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) @@ -6487,6 +6489,7 @@ "cuO" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/wall{icon_state = "iron3"},/area) "cuP" = (/obj/structure/flora/ausbushes/fullgrass,/turf/simulated/floor/holofloor/grass,/area/holodeck/source_picnicarea) "cuQ" = (/obj/structure/flora/ausbushes/sparsegrass,/turf/simulated/floor/holofloor/grass,/area/holodeck/source_picnicarea) +"cuR" = (/obj/machinery/door/firedoor/border_only{dir = 8; layer = 2.6; name = "Firelock West"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/window/reinforced{dir = 5},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/med) "cuS" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=Stbd"; location = "HOP"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/hallway/primary/central) "cuT" = (/turf/simulated/floor/holofloor{icon_state = "engine"; name = "Holodeck Projector Floor"},/area/holodeck/source_wildlife) "cuU" = (/turf/simulated/floor/holofloor{icon_state = "engine"; name = "Holodeck Projector Floor"},/area/holodeck/source_plating) @@ -8234,6 +8237,7 @@ "dcu" = (/obj/machinery/camera{c_tag = "Central Compartment South"; dir = 1; network = list("Tcomsat")},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light,/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "dcv" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 120; icon_state = "in"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "dcw" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/wall/r_wall,/area/tcommsat/chamber) +"dcx" = (/obj/machinery/door/firedoor/border_only{dir = 8; layer = 2.6; name = "Firelock West"},/obj/structure/window/reinforced{dir = 5},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/med) "dcy" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/space,/area/turret_protected/tcomsat) "dcz" = (/obj/structure/window/reinforced,/obj/structure/lattice,/obj/machinery/light{dir = 1},/turf/space,/area/turret_protected/tcomsat) "dcA" = (/turf/simulated/wall/r_wall,/area/turret_protected/tcomfoyer) @@ -9363,7 +9367,6 @@ "dyh" = (/obj/structure/sign/science,/turf/simulated/wall,/area/research_outpost/entry) "dyi" = (/obj/machinery/door/airlock/glass_research{name = "Outpost Primary Access"; req_access_txt = "65"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor,/area/research_outpost/entry) "dyj" = (/obj/machinery/door/airlock/glass_research{name = "Outpost Primary Access"; req_access_txt = "65"},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor,/area/research_outpost/entry) -"dyk" = (/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/simulated/floor/wood,/area/research_outpost/hallway) "dyl" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) "dym" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/wood,/area/research_outpost/hallway) "dyn" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "whiteyellow"},/area/research_outpost/hallway) @@ -9391,7 +9394,6 @@ "dyJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/transit_tube{icon_state = "N-S"},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry) "dyK" = (/obj/machinery/computer/research_shuttle,/turf/simulated/floor{icon_state = "bot"},/area/research_outpost/entry) "dyL" = (/turf/simulated/floor,/area/research_outpost/entry) -"dyM" = (/obj/structure/window/reinforced{dir = 5; health = 1e+007},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/wood,/area/research_outpost/hallway) "dyN" = (/turf/simulated/floor,/area/medical/virologyaccess) "dyO" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall/r_wall,/area/research_outpost/power) "dyP" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) @@ -9504,7 +9506,6 @@ "dAS" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor,/area/research_outpost/entry) "dAT" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/research_outpost/entry) "dAU" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor,/area/research_outpost/entry) -"dAV" = (/obj/structure/window/reinforced{dir = 5; health = 1e+007},/obj/machinery/door/firedoor/border_only{dir = 8; layer = 2.6; name = "Firelock West"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/med) "dAW" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/regular,/obj/item/weapon/storage/firstaid/toxin,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/med) "dAX" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor,/area/research_outpost/entry) "dAY" = (/obj/structure/closet/emcloset,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/alarm{dir = 1; pixel_y = -25},/turf/simulated/floor{dir = 2; icon_state = "arrival"},/area/research_outpost/entry) @@ -9543,7 +9544,6 @@ "dBF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor,/area/research_outpost/entry) "dBG" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 5; icon_state = "whitehall"},/area/research_outpost/hallway) "dBH" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor{dir = 5; icon_state = "whitehall"},/area/research_outpost/hallway) -"dBI" = (/obj/structure/window/reinforced{dir = 5; health = 1e+007},/obj/machinery/door/firedoor/border_only{dir = 8; layer = 2.6; name = "Firelock West"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/med) "dBJ" = (/obj/machinery/sleeper{dir = 1},/turf/simulated/floor{dir = 9; icon_state = "warnwhite"},/area/research_outpost/med) "dBK" = (/obj/machinery/sleep_console,/obj/machinery/light/small,/turf/simulated/floor{icon_state = "warnwhite"; dir = 5},/area/research_outpost/med) "dBL" = (/obj/machinery/conveyor{dir = 9; id = "anotempload"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/research_outpost/tempstorage) @@ -11950,11 +11950,11 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafdwldwmdwndwodvcdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaadrIdvddvddvddvddvddvddvddwpdwqdwrdwsdymdwudwudwvdwwdwxdrDdyudytdtJdwAdwBdwCdwDdwEdDzdtJdysdyndwIdwJdwJdwKdyvdwMdwNdwOdwPdwPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafdwQdwRdwSdvcdwTdwUdvcdvcdvcdvcdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaaaaaaaadrIdvddvddvddvddvddvddvddwVdwqdwrdwsdymdwWdwXdwvdwYdwZdrDdyldxNdtJdxcdtJdtJdtJdtJdxddtJdxMdxLdvzdDwdxhdxidxjdxkdxldxmdxndxnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafdxodxpdxqdxrdxsdxtdszduBdxudvcdxvdxwdvcdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaaaaaaaadrIdvddvddvddvddvddvddvddrTdwqdwrdwsdymdxxdxydwvdxzdxAdrDdzkdzjdxDdxEdxFdxGdxHdrDdxIdxJdyZcrvdzgdzadxOdxPdxQdxRdxldwPdwPdwPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafdxSdxTdxpdxUdxVdxWdxXdxYdxudxZdxwdyadxvdvcdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaaaaaaaadybdycdyddyedyfdycdyddygdyhdyidyjdykdyMdykdrDdrDdrDdrDdrDdySdyRdyodxEdrEdxGdzQdrDdyqdyrdyQdyPdyOdYzdywdyxdyydyzdyAdyBdrDdyCdtYdrsdrsdrsdrsdrsdrsdrtdyDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadyEdxSdyFdxSdxqdxqdwTdyGdxVdvcdwodyHdvcdxwdyIdvcdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaaaaaaaadyJdyKdyLdyLdAUdATdATdARdASdAXdATdAVdAWdyTdyUdyVdyWdyXdAGdAJdAIdzbdzcdzddzedzfdrDdzhdzidAQdAMdvzdvzdzldvzdvzdvzdzmdzndzodzpdzqdzrdzrdzsdzrdzrdzrdztdrZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafdxSdxTdxpdxUdxVdxWdxXdxYdxudxZdxwdyadxvdvcdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaaaaaaaadybdycdyddyedyfdycdyddygdyhdyidyjcrQcrWcrQdrDdrDdrDdrDdrDdySdyRdyodxEdrEdxGdzQdrDdyqdyrdyQdyPdyOdYzdywdyxdyydyzdyAdyBdrDdyCdtYdrsdrsdrsdrsdrsdrsdrtdyDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadyEdxSdyFdxSdxqdxqdwTdyGdxVdvcdwodyHdvcdxwdyIdvcdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaaaaaaaadyJdyKdyLdyLdAUdATdATdARdASdAXdATcuRdAWdyTdyUdyVdyWdyXdAGdAJdAIdzbdzcdzddzedzfdrDdzhdzidAQdAMdvzdvzdzldvzdvzdvzdzmdzndzodzpdzqdzrdzrdzsdzrdzrdzrdztdrZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafdzudzvdxqdzwdzxdxqdvIdzydxWdzzdzAdzBdvcdvcdvcdvcdvcdvcdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTaaaaaaaaaaaaaaadzCdzDdyLdyLdzEdyLdzFdzGdAjdzIdzJdzKdzLdzMdyUdAkdAldAcdAbdAadzZdzYdzXdzWdzPdAidAhdAgdzPdAfdAedzOdAddzRdzSdzOdRKdzOdzPdzHdzNdzUdDHdzTdAmdAndAodApdzrdslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafdAqdArdAsdxqdzxdAtdxUdAudxVdAvdvcdAwdAxdvcdAydxudAzdAAdvcdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTaaaaaaaaaaaadABdACdyLdyLdADdyLdAEdAFdBDdAHdBFdBEdAKdDXdyUdBfdANdAOdAPdBHdBGdBQdBPdBTdBSdBWdBVdBZdBYdBWdCpdBVdCrdBWdBVdCsdCydCzdCBdCCdCEdCFdCIdDfdBldBmdBmdBndzrdslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafdsadsadvcdxtdBodBpdBqdAsdBrdBsdxWdBtdszduBdBudvcdAydwodxudAAdvcdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadqTdqTdqTdqTdBvdBvdBvdBvdBvdBvdqTdqTdqTdqTdqTdqTdBwdBxaaaaaaaaadBydBzdyLdBAdAYdAZdDTdBbdBcdBddBedBIdBJdBKdyUdBfdyVdBLdBMdBMdBMdBMdBNdBOdBidBkdBOdBRdBjdBCdBRdBUdBBdBgdBUdBUdBXdBhdvZdCadzrdCbdCcdzrdCddBmdBmdCedzrdslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafdsadsadvcdxtdBodBpdBqdAsdBrdBsdxWdBtdszduBdBudvcdAydwodxudAAdvcdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadqTdqTdqTdqTdBvdBvdBvdBvdBvdBvdqTdqTdqTdqTdqTdqTdBwdBxaaaaaaaaadBydBzdyLdBAdAYdAZdDTdBbdBcdBddBedcxdBJdBKdyUdBfdyVdBLdBMdBMdBMdBMdBNdBOdBidBkdBOdBRdBjdBCdBRdBUdBBdBgdBUdBUdBXdBhdvZdCadzrdCbdCcdzrdCddBmdBmdCedzrdslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafdvcdvcdvcdvcdvcdvcdxsdxVdCfdBodxVdzydCgdBtdBtdxYdxudAwdvcdAydvIdChdAAdvcdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadqTdqTdBvdBvdBvdCidCidCidCidBvdBvdBvdqTdqTdCjdCkdCldyDaaaaaaaaadCmdCndyddyedCodCodCodCodvUdCqdvSdrTdrTdrTdyUdvTdBMdCtdBMdCudCvdCwdyYdBOdwfdwcdCAdBRdwbdwedCDdBUdwddvVdCGdBUdCHdwadvZdCJdCKdzrdzrdzrdCLdCMdCNdApdzrdslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafdvcdCOduBdxWdCPdvcdCQdCRdCSdvcdzzdvcdCTdCUdCVdvcduBdCWdtbdCXdvIdwndtbdvcdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadqTdqTdqTdBvdBvdCidCidCidCidCidCidCidCidBvdBvdqTdCYdCZdrYdDadrsdrsdrsdtZduaaafaafdDbdDcdDddDedwHdDgdwtdwjdwidwGdzVdwydDndDodDpdDqdDrdDsdDtdBOdxfdwLdALdBRdxadxbdBadBUdxedxBdCxdBUdDDdxKdxCdDGdDmdDIdDJdzrdzrdzrdzrdzrdDKdtDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsadvcdCOdvIduBdxUdzzdCWdBodDLdBodDMduBduBdDNdxuduBdvIdvIdvcdtbdDOdvIduBdvcdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadqTdqTdBvdBvdCidCidCidCidCidCidCidCidCidCidDPdDQdDRdDQaaaaaaaaaaaaaaaaaaaaaaaaaafdDbdDcdDSdvudvsdDVdvpdxgdDYdDYdDZdyUdBMdCtdBMdEadBMdEbdEcdvodBOdvndBOdBRdBRdvmdBRdBUdBUdvldBUdBUdEhdvkdvjdEkdEldEldEmdCKdEndqWdrsdrsdEodEpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From 4528f109a54af863c7350632880b1ac7f154548b Mon Sep 17 00:00:00 2001 From: volas Date: Wed, 25 Jun 2014 23:09:21 +0400 Subject: [PATCH 086/304] Fix infinite loop in freeform AI module --- code/game/objects/items/weapons/AI_modules.dm | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/code/game/objects/items/weapons/AI_modules.dm b/code/game/objects/items/weapons/AI_modules.dm index fe3e2eb94d..c8fec27bb8 100755 --- a/code/game/objects/items/weapons/AI_modules.dm +++ b/code/game/objects/items/weapons/AI_modules.dm @@ -257,10 +257,9 @@ AI MODULES /obj/item/weapon/aiModule/freeform/attack_self(var/mob/user as mob) ..() - lawpos = 0 - while(lawpos < 15) - lawpos = input("Please enter the priority for your new law. Can only write to law sectors 15 and above.", "Law Priority (15+)", lawpos) as num - lawpos = min(lawpos, 50) + var/new_lawpos = input("Please enter the priority for your new law. Can only write to law sectors 15 and above.", "Law Priority (15+)", lawpos) as num + if(new_lawpos < 15) return + lawpos = min(new_lawpos, 50) var/newlaw = "" var/targName = copytext(sanitize(input(usr, "Please enter a new law for the AI.", "Freeform Law Entry", newlaw)),1,MAX_MESSAGE_LEN) newFreeFormLaw = targName From 8810d3db7138e2c8868ec2a38d490840255df1df Mon Sep 17 00:00:00 2001 From: alex-gh Date: Wed, 25 Jun 2014 21:20:54 +0200 Subject: [PATCH 087/304] Fixes multiple runtimes in mutiny mode. Example runtime: runtime error: Cannot read null.assigned_role proc name: get crew to terminate (/datum/directive/terminations/financial_crisis/get_crew_to_terminate) source file: financial_crisis_directive.dm,11 usr: null src: /datum/directive/terminations/... (/datum/directive/terminations/financial_crisis) call stack: /datum/directive/terminations/... (/datum/directive/terminations/financial_crisis): get crew to terminate() /datum/directive/terminations/... (/datum/directive/terminations/financial_crisis): meets prerequisites() mutiny (/datum/game_mode/mutiny): get directive candidates() mutiny (/datum/game_mode/mutiny): pre setup() /datum/controller/gameticker (/datum/controller/gameticker): setup() /datum/controller/gameticker (/datum/controller/gameticker): pregame() /datum/controller/game_control... (/datum/controller/game_controller): setup() --- .../game/gamemodes/mutiny/directives/alien_fraud_directive.dm | 2 +- .../mutiny/directives/bluespace_contagion_directive.dm | 2 +- .../gamemodes/mutiny/directives/financial_crisis_directive.dm | 2 +- code/game/gamemodes/mutiny/directives/ipc_virus_directive.dm | 4 ++-- .../mutiny/directives/research_to_ripleys_directive.dm | 2 +- .../mutiny/directives/tau_ceti_needs_women_directive.dm | 4 ++-- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/code/game/gamemodes/mutiny/directives/alien_fraud_directive.dm b/code/game/gamemodes/mutiny/directives/alien_fraud_directive.dm index 43b6a65885..55a61a6f59 100644 --- a/code/game/gamemodes/mutiny/directives/alien_fraud_directive.dm +++ b/code/game/gamemodes/mutiny/directives/alien_fraud_directive.dm @@ -11,7 +11,7 @@ datum/directive/terminations/alien_fraud datum/directive/terminations/alien_fraud/get_crew_to_terminate() var/list/aliens[0] for(var/mob/M in player_list) - if (is_alien(M) && M.is_ready()) + if (M.is_ready() && is_alien(M)) aliens.Add(M) return aliens diff --git a/code/game/gamemodes/mutiny/directives/bluespace_contagion_directive.dm b/code/game/gamemodes/mutiny/directives/bluespace_contagion_directive.dm index 0338c8f067..0cc7154767 100644 --- a/code/game/gamemodes/mutiny/directives/bluespace_contagion_directive.dm +++ b/code/game/gamemodes/mutiny/directives/bluespace_contagion_directive.dm @@ -6,7 +6,7 @@ datum/directive/bluespace_contagion proc/get_infection_candidates() var/list/candidates[0] for(var/mob/M in player_list) - if (!M.is_mechanical() && M.is_ready()) + if (M.is_ready() && !M.is_mechanical()) candidates.Add(M) return candidates diff --git a/code/game/gamemodes/mutiny/directives/financial_crisis_directive.dm b/code/game/gamemodes/mutiny/directives/financial_crisis_directive.dm index ef9fcbffe3..81af54de53 100644 --- a/code/game/gamemodes/mutiny/directives/financial_crisis_directive.dm +++ b/code/game/gamemodes/mutiny/directives/financial_crisis_directive.dm @@ -8,7 +8,7 @@ datum/directive/terminations/financial_crisis/get_crew_to_terminate() var/list/civilians[0] var/list/candidates = civilian_positions - "Head of Personnel" for(var/mob/M in player_list) - if (candidates.Find(M.mind.assigned_role) && M.is_ready()) + if (M.is_ready() && candidates.Find(M.mind.assigned_role)) civilians.Add(M) return civilians diff --git a/code/game/gamemodes/mutiny/directives/ipc_virus_directive.dm b/code/game/gamemodes/mutiny/directives/ipc_virus_directive.dm index b9418ed92e..63c3f7d3c8 100644 --- a/code/game/gamemodes/mutiny/directives/ipc_virus_directive.dm +++ b/code/game/gamemodes/mutiny/directives/ipc_virus_directive.dm @@ -16,14 +16,14 @@ datum/directive/ipc_virus proc/get_ipcs() var/list/machines[0] for(var/mob/M in player_list) - if (M.get_species() == "Machine" && M.is_ready()) + if (M.is_ready() && M.get_species() == "Machine") machines.Add(M) return machines proc/get_roboticists() var/list/roboticists[0] for(var/mob/M in player_list) - if (roboticist_roles.Find(M.mind.assigned_role) && M.is_ready()) + if (M.is_ready() && roboticist_roles.Find(M.mind.assigned_role)) roboticists.Add(M) return roboticists diff --git a/code/game/gamemodes/mutiny/directives/research_to_ripleys_directive.dm b/code/game/gamemodes/mutiny/directives/research_to_ripleys_directive.dm index 43c7238cd3..1f252d3df5 100644 --- a/code/game/gamemodes/mutiny/directives/research_to_ripleys_directive.dm +++ b/code/game/gamemodes/mutiny/directives/research_to_ripleys_directive.dm @@ -10,7 +10,7 @@ datum/directive/research_to_ripleys proc/get_researchers() var/list/researchers[0] for(var/mob/M in player_list) - if (is_researcher(M) && M.is_ready()) + if (M.is_ready() && is_researcher(M)) researchers.Add(M) return researchers diff --git a/code/game/gamemodes/mutiny/directives/tau_ceti_needs_women_directive.dm b/code/game/gamemodes/mutiny/directives/tau_ceti_needs_women_directive.dm index a5a66c834e..b70ffd659d 100644 --- a/code/game/gamemodes/mutiny/directives/tau_ceti_needs_women_directive.dm +++ b/code/game/gamemodes/mutiny/directives/tau_ceti_needs_women_directive.dm @@ -13,7 +13,7 @@ datum/directive/tau_ceti_needs_women proc/get_crew_of_target_gender() var/list/targets[0] for(var/mob/M in player_list) - if(is_target_gender(M) && !M.is_mechanical() && M.is_ready()) + if(M.is_ready() && is_target_gender(M) && !M.is_mechanical()) targets.Add(M) return targets @@ -63,7 +63,7 @@ datum/directive/tau_ceti_needs_women/meets_prerequisites() var/females = 0 var/males = 0 for(var/mob/M in player_list) - if(!M.is_mechanical() && M.get_species() != "Diona" && M.is_ready()) + if(M.is_ready() && !M.is_mechanical() && M.get_species() != "Diona") var/gender = M.get_gender() if(gender == MALE) males++ From be7f27a99f7469daad2bedd33026bbb7d24b1ab3 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Thu, 26 Jun 2014 08:27:03 +0930 Subject: [PATCH 088/304] Stole a bunch of Vox clothing icons from /vg/. --- icons/mob/species/vox/eyes.dmi | Bin 0 -> 3328 bytes icons/mob/species/vox/feet.dmi | Bin 362 -> 0 bytes icons/mob/species/vox/gloves.dmi | Bin 358 -> 9262 bytes icons/mob/species/vox/masks.dmi | Bin 0 -> 11864 bytes icons/mob/species/vox/shoes.dmi | Bin 0 -> 1592 bytes icons/mob/species/vox/suit.dmi | Bin 3171 -> 10095 bytes icons/mob/species/vox/uniform.dmi | Bin 0 -> 44340 bytes 7 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 icons/mob/species/vox/eyes.dmi delete mode 100644 icons/mob/species/vox/feet.dmi create mode 100644 icons/mob/species/vox/masks.dmi create mode 100644 icons/mob/species/vox/shoes.dmi create mode 100644 icons/mob/species/vox/uniform.dmi diff --git a/icons/mob/species/vox/eyes.dmi b/icons/mob/species/vox/eyes.dmi new file mode 100644 index 0000000000000000000000000000000000000000..85735391673639665276e150ad1366777934fc1c GIT binary patch literal 3328 zcmcIndpOf=AOG#qkU~XzQg|F9+g|Gd}xU(a9P`}*GB`@Zh`^ZkClpZm`8hPx{( zX(|B#pbQ>$^#K5gYzP4q69DGZ()|n z&P#ucS2`V`jeX)VJhvNP6l=R?=p_!b@UG*FkGhbbE03OOf5Y}1(l${_92S4fIlL2B z>*_0su&D@{u~C2CxFw)-aj(6q2-qG$aRKG4wzx(gu{`T$lu`rorJ)3z#U0~|HYboQ zb0{*CKJz%tdq(~C`h7Q_uI3~WqwU{YmTD|Ri7wQEA!_mq0N5}Ex*qaNEar`#zr15o zi#pG#2=(1$Z(1ZrpZTg3qW)-Gr;;@oY-zg-+8Ew2)!DvI5E6RlnCFXaRw)nSZlrVe zywR`xR=7=nSKoCfBvMYf^WuGL@Rf=gwt%_Ocjrm-c}I>EBWjGoGs za#U{xV?);wE>j0?_^=P#NoW+}f_WC$zS#$G9TtY(g1R^khF~D;0)(H6* zOBl=ojAcd)f`!d-oSF#RZw<_v4PBkf;$bg(;Jf0Y(o)1}1nb+i180X-AupIUSU;0o zjL)+#P=#cZJo=X}m~A4B!GN^drJBVRw_$u<=B9x2E_>8b%6e>99#UZtR_BAL#p9SrtALDj9BKYF3y+RJPJ z7~a3KY17XG;{W1HB(Qh%&Fn4cNw(3RHGO~a5tx6%JYS#owdn01LG^pU$;U8+d4B2L z2DIx7x&#(C{m9MD&Dz#hBUHL95Rea-mra(YojrCz>NGis_NeOTSM-PG!>gY7_A#{_GLM; zW%U~o-fCCIv=RT9vntvj>!zuBJB8HW-;cLY+p_RxN2$)i@1E{=;O=*NN#jk~8mc-6 zi@OinqgU!Z!kC^hfwo<*cq{XtA9NWkE{^r6=1ds2T)OQ5W>9tP{~Ay@zlvsq^r@+8 zT5wNtV|)W zZ1r)TDoGd$Cod%A3v8wAI*enVJh&KP$q3FJ2#Dx#Jm)cGdQD#}o~7yV`lxcveuV`e z^3s|XH_BVBCX>m*x|=+zx~?sJ^v`H3ixVXMnzpe$8(T9ynv15o;wLPnLX zA@LC7o(UV7Gu3rr#l||bcm@~H@u7|_nd#x}Sfgs)pG&3`MKs6|$ zk#F4SCJRUF7JsjI|sd0CHAbN(tO2qK49?EH+o^Q2+c`0rx zvQa3LiI-`<#k=JA`7h0|$eTurrKQ`?!%dQgkd&J^qgsW;swo9qFDomHXjB&35uT6W5oX$D5HAvz? z&mJ7?KIuy8g(n23rgBsD+k^;v##ae`?p{giGgkBn@sxp0SGgQe^Mz456a8L1?l!77 zm;b_PbXkZ)PAhgE=#sUDhUhJWfyKc+ILKx!9xHvmY&dX&wBkLEtB%RGf;iWduuIo` z3>|a!>W=44oepb@KHgF*dw}e?^qVZE6!M$x#JG!j>{L{X)XSR{{JSjSi9ean5#fJD znX4;B5{#?)0<<4hUY<>Uj5=3 z7~{c(CGnlsi40ZPk7yd-Gbt%rAbrXZNHc?jC#~^`uvi|NGYPZb6q?*7YF?;oS!j0v zec;nv9`8=9G*hX4U|>K?;S2A5{+l}3qkF@oa6H|4O=T<$B`qlFS{XbL}XrPk z-sL=L>R55x${&m+oO?BJl>S`~z4|JYIXoPor!a-o-R^NgS=Vz9n|1sESM0`TB*$uY z@ZKS+M1<6{O3!_LH?aVCpKQo|JgjrH7F2_(^H)1+=C!_qY4^p$ZLw zd#TrDI)hvxp#IKTuZfs}jFqh`bng#>0Jjh`6zE_7(U@d>VM$4LN&)S4(GxQ=(e`SU z*S9$lUuUB>UnUomA?MX@p`l~6UX4~J^C{+Of)Eum(w1Ts;g6K*#mvZtsCa*BRh4Qy z3UwKU8W2s>cl954-LHp$G!cm|Y;OM%ewGmmog^IVo7znY$Sw#EcQW7-O|eLkfQ$9W zpC*9A2Ky(+Q;yRn7a|`iS}RL*?<4UF0PO}a+!Y1+d5^rAG&a!P^f`J}Pxhq&z$0+i Jy2IzL{~MSy9+fAB-nnn)&Aj>D-ql}) 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 V)?+XQU;z+FLrq7uMESw<{{e@cglGT& literal 358 zcmV-s0h#`ZP)fFDZ*Bkp zc$`yKaB_9`^iy#0_2eo`Eh^5;&r`5fFwryM;w;ZhDainGjE%TBGg33tGfE(w;*!LY zR3K9+Jtw~`wOF?-ze0(NGbOXA7^IVnGp#5wHxYE64FKJx94OA*yc+-j z0EbCLK~zYI?UYLnfFKM+r-|$On&_a9I)Yy3JVOjD>bTQAwl6#cIc|H@Fx#<1W)K5ja#ll(c@9XlHK$9UA za5@lVz>7J!d=l-8T|iD{xDSwCZBxtf-Y>O`!@!qy0d{>0imw1wFaQ7m07*qoM6N<$ Ef)DGH761SM diff --git a/icons/mob/species/vox/masks.dmi b/icons/mob/species/vox/masks.dmi new file mode 100644 index 0000000000000000000000000000000000000000..8f426fa29926a5aec9c01ebe62ad64cb725ef35f GIT binary patch literal 11864 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 literal 0 HcmV?d00001 diff --git a/icons/mob/species/vox/shoes.dmi b/icons/mob/species/vox/shoes.dmi new file mode 100644 index 0000000000000000000000000000000000000000..822174fbd42a6cc13db50a7e8488042d35ec0c43 GIT binary patch literal 1592 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 JPDHLkV1kS5^CSQO diff --git a/icons/mob/species/vox/uniform.dmi b/icons/mob/species/vox/uniform.dmi new file mode 100644 index 0000000000000000000000000000000000000000..4dc9382a8390af6b8138f660f9cb8363d25d08c7 GIT binary patch literal 44340 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 literal 0 HcmV?d00001 From 2ee8f78f75d7f83f15f91e883bfd6ef7669e7793 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Thu, 26 Jun 2014 08:47:58 +0930 Subject: [PATCH 089/304] More icon changes, updates item paths, moves vox cortical stack spawn to raider proc, makes vox whitelisted and spawnable with internals. --- code/game/jobs/job_controller.dm | 14 +++++++-- code/modules/admin/verbs/one_click_antag.dm | 19 ++++++++++++ code/modules/clothing/clothing.dm | 13 ++++++-- code/modules/clothing/masks/breath.dm | 3 +- code/modules/clothing/spacesuits/alien.dm | 3 +- code/modules/mob/living/carbon/species.dm | 31 +++----------------- icons/mob/species/vox/eyes.dmi | Bin 3328 -> 3407 bytes icons/mob/species/vox/gloves.dmi | Bin 9262 -> 9452 bytes icons/mob/species/vox/mask.dmi | Bin 702 -> 0 bytes 9 files changed, 47 insertions(+), 36 deletions(-) delete mode 100644 icons/mob/species/vox/mask.dmi diff --git a/code/game/jobs/job_controller.dm b/code/game/jobs/job_controller.dm index b2af8cb781..8230d4ae71 100644 --- a/code/game/jobs/job_controller.dm +++ b/code/game/jobs/job_controller.dm @@ -429,8 +429,18 @@ var/global/datum/controller/occupations/job_master H.equip_to_slot_or_del(BPK, slot_back,1) //TODO: Generalize this by-species - if(H.species && (H.species.name == "Tajaran" || H.species.name == "Unathi")) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(H),slot_shoes,1) + if(H.species) + if(H.species.name == "Tajaran" || H.species.name == "Unathi") + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(H),slot_shoes,1) + else if(H.species.name == "Vox") + H.equip_to_slot_or_del(new /obj/item/clothing/mask/breath/vox(src), slot_wear_mask) + if(!H.r_hand) + H.equip_to_slot_or_del(new /obj/item/weapon/tank/nitrogen(src), slot_r_hand) + H.internal = H.r_hand + else if (!H.l_hand) + H.equip_to_slot_or_del(new /obj/item/weapon/tank/nitrogen(src), slot_l_hand) + H.internal = H.l_hand + H.internals.icon_state = "internal1" H << "You are the [alt_title ? alt_title : rank]." H << "As the [alt_title ? alt_title : rank] you answer directly to [job.supervisors]. Special circumstances may change this." diff --git a/code/modules/admin/verbs/one_click_antag.dm b/code/modules/admin/verbs/one_click_antag.dm index f6dff2157f..fc147e04fd 100644 --- a/code/modules/admin/verbs/one_click_antag.dm +++ b/code/modules/admin/verbs/one_click_antag.dm @@ -517,6 +517,25 @@ client/proc/one_click_antag() new_vox.mind.special_role = "Vox Raider" new_vox.mutations |= NOCLONE //Stops the station crew from messing around with their DNA. + //Now apply cortical stack. + var/datum/organ/external/affected = new_vox.get_organ("head") + + //To avoid duplicates. + for(var/obj/item/weapon/implant/cortical/imp in new_vox.contents) + affected.implants -= imp + del(imp) + + var/obj/item/weapon/implant/cortical/I = new(new_vox) + I.imp_in = new_vox + I.implanted = 1 + affected.implants += I + I.part = affected + + if(ticker.mode && ( istype( ticker.mode,/datum/game_mode/heist ) ) ) + var/datum/game_mode/heist/M = ticker.mode + M.cortical_stacks += I + M.raiders[new_vox.mind] = I + ticker.mode.traitors += new_vox.mind new_vox.equip_vox_raider() diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 76e4bb01d2..80ce70964d 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -104,7 +104,7 @@ var/vision_flags = 0 var/darkness_view = 0//Base human is 2 var/invisa_view = 0 - + sprite_sheets = list("Vox" = 'icons/mob/species/vox/eyes.dmi') /* SEE_SELF // can see self, no matter what SEE_MOBS // can see all mobs, no matter what @@ -130,6 +130,7 @@ BLIND // can't see anything slot_flags = SLOT_GLOVES attack_verb = list("challenged") species_restricted = list("exclude","Unathi","Tajaran") + sprite_sheets = list("Vox" = 'icons/mob/species/vox/gloves.dmi') /obj/item/clothing/gloves/examine() set src in usr @@ -157,6 +158,7 @@ BLIND // can't see anything body_parts_covered = HEAD slot_flags = SLOT_HEAD w_class = 2.0 + sprite_sheets = list("Vox" = 'icons/mob/species/vox/head.dmi') //Mask @@ -165,6 +167,7 @@ BLIND // can't see anything icon = 'icons/obj/clothing/masks.dmi' body_parts_covered = HEAD slot_flags = SLOT_MASK + sprite_sheets = list("Vox" = 'icons/mob/species/vox/masks.dmi') //Shoes /obj/item/clothing/shoes @@ -179,6 +182,7 @@ BLIND // can't see anything permeability_coefficient = 0.50 slowdown = SHOES_SLOWDOWN species_restricted = list("exclude","Unathi","Tajaran") + sprite_sheets = list("Vox" = 'icons/mob/species/vox/shoes.dmi') //Suit /obj/item/clothing/suit @@ -192,6 +196,7 @@ BLIND // can't see anything var/blood_overlay_type = "suit" siemens_coefficient = 0.9 w_class = 3 + sprite_sheets = list("Vox" = 'icons/mob/species/vox/suit.dmi') //Spacesuit //Note: Everything in modules/clothing/spacesuits should have the entire suit grouped together. @@ -209,6 +214,7 @@ BLIND // can't see anything min_cold_protection_temperature = SPACE_HELMET_MIN_COLD_PROTECTION_TEMPERATURE siemens_coefficient = 0.9 species_restricted = list("exclude","Diona","Vox") + sprite_sheets = list("Vox" = 'icons/mob/species/vox/head.dmi') /obj/item/clothing/suit/space name = "Space suit" @@ -250,6 +256,7 @@ BLIND // can't see anything var/displays_id = 1 var/rolled_down = 0 var/basecolor + sprite_sheets = list("Vox" = 'icons/mob/species/vox/uniform.dmi') /obj/item/clothing/under/attackby(obj/item/I, mob/user) if(hastie) @@ -274,10 +281,10 @@ BLIND // can't see anything if(hastie && src.loc == user) hastie.attack_hand(user) return - + if ((ishuman(usr) || ismonkey(usr)) && src.loc == user) //make it harder to accidentally undress yourself return - + ..() /obj/item/clothing/under/MouseDrop(obj/over_object as obj) diff --git a/code/modules/clothing/masks/breath.dm b/code/modules/clothing/masks/breath.dm index 72f0ce03e5..db97e10266 100644 --- a/code/modules/clothing/masks/breath.dm +++ b/code/modules/clothing/masks/breath.dm @@ -45,8 +45,7 @@ permeability_coefficient = 0.01 species_restricted = list("Vox","Vox Armalis") sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/mask.dmi', - "Vox Armalis" = 'icons/mob/species/armalis/mask.dmi', + "Vox Armalis" = 'icons/mob/species/armalis/mask.dmi' ) toggle() diff --git a/code/modules/clothing/spacesuits/alien.dm b/code/modules/clothing/spacesuits/alien.dm index 902d947149..3719f0c7db 100644 --- a/code/modules/clothing/spacesuits/alien.dm +++ b/code/modules/clothing/spacesuits/alien.dm @@ -191,8 +191,7 @@ species_restricted = list("Vox","Vox Armalis") sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/feet.dmi', - "Vox Armalis" = 'icons/mob/species/armalis/feet.dmi', + "Vox Armalis" = 'icons/mob/species/armalis/feet.dmi' ) action_button_name = "Toggle the magclaws" diff --git a/code/modules/mob/living/carbon/species.dm b/code/modules/mob/living/carbon/species.dm index b171bfb884..99c165f3d1 100644 --- a/code/modules/mob/living/carbon/species.dm +++ b/code/modules/mob/living/carbon/species.dm @@ -28,7 +28,7 @@ var/heat_level_1 = 360 // Heat damage level 1 above this point. var/heat_level_2 = 400 // Heat damage level 2 above this point. var/heat_level_3 = 1000 // Heat damage level 2 above this point. - + var/body_temperature = 310.15 //non-IS_SYNTHETIC species will try to stabilize at this temperature. (also affects temperature processing) var/synth_temp_gain = 0 //IS_SYNTHETIC species will gain this much temperature every second @@ -192,7 +192,7 @@ breath_type = "nitrogen" poison_type = "oxygen" - flags = NO_SCAN | NO_BLOOD + flags = NO_SCAN | NO_BLOOD | IS_WHITELISTED blood_color = "#2299FC" flesh_color = "#808D11" @@ -240,29 +240,6 @@ tail = "armalis_tail" icon_template = 'icons/mob/human_races/r_armalis.dmi' -/datum/species/vox/create_organs(var/mob/living/carbon/human/H) - - ..() //create organs first. - - //Now apply cortical stack. - var/datum/organ/external/affected = H.get_organ("head") - - //To avoid duplicates. - for(var/obj/item/weapon/implant/cortical/imp in H.contents) - affected.implants -= imp - del(imp) - - var/obj/item/weapon/implant/cortical/I = new(H) - I.imp_in = H - I.implanted = 1 - affected.implants += I - I.part = affected - - if(ticker.mode && ( istype( ticker.mode,/datum/game_mode/heist ) ) ) - var/datum/game_mode/heist/M = ticker.mode - M.cortical_stacks += I - M.raiders[H.mind] = I - /datum/species/diona name = "Diona" icobase = 'icons/mob/human_races/r_diona.dmi' @@ -331,7 +308,7 @@ heat_level_1 = 500 //gives them about 25 seconds in space before taking damage heat_level_2 = 1000 heat_level_3 = 2000 - + synth_temp_gain = 10 //this should cause IPCs to stabilize at ~80 C in a 20 C environment. flags = IS_WHITELISTED | NO_BREATHE | NO_SCAN | NO_BLOOD | NO_PAIN | IS_SYNTHETIC @@ -348,7 +325,7 @@ var/miss_sound = 'sound/weapons/punchmiss.ogg' var/sharp = 0 var/edge = 0 - + /datum/unarmed_attack/punch attack_verb = list("punch") diff --git a/icons/mob/species/vox/eyes.dmi b/icons/mob/species/vox/eyes.dmi index 85735391673639665276e150ad1366777934fc1c..6e15b3e58c4a140c074d08679cd577e8ab50cc37 100644 GIT binary patch delta 2702 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 diff --git a/icons/mob/species/vox/gloves.dmi b/icons/mob/species/vox/gloves.dmi index 4f1162ae60837facd4b58c91f1d7337a104173b5..16b4706c4a7910e44023a458aa92d613d46ee766 100644 GIT binary patch literal 9452 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 EA7EA*zyJUM literal 9262 zcmb_?cR*9yw`K$tFHKPpq=-nnn)&Aj>D-ql}) zOa94EpN=G~nwC|baCmv1`tmhge(U)Y`#J&5(==2AK@s&2Pt(*_2MSK+`FPQZfZY-c zg-mq8OYww7aQI5AvsM4sX+Lp^k6!8*6B{nl=x9DcEa;4xiiT>qrTHoG6ZP)S7Ic%M zjZ7A8SZiJQX6|WQx8F^^uYtT$MZnl2)W26Ap8HO-*!?xy4-4M6?U-1G)3s`yJ$!Nl zp4nqGp6@((6$H8h(onr)7?8R?8TiOzB#m!#`l>+Kc^=I;RV|(Q!L#iNJgwb>&NjN2 z$3G=i-q-c7l56_#)ZX^SR8d;2x5Z-Ab1odM=f?OYQG6n^FD2@vBQ5G9EJ zIp{P<@8ti>kftVJD|4O1*WqV5;NrW@Up{F)?g=h5x^nJq)kx>*Ps@?QLgz%R8`>gw z&*$Il4a8b$Q{qyoi&M?8OWxc3b8y_y$-{XM z3~l#e`}FXZ64B+W&z1QQdl~mNQI~I?RAwCSD%qqj9yG*@N8m-OE|#l)yKAhzupj#N z(!0AXY0mrAR}O@Qi&A}|Z=xed7jdzUL&?O`6Fvw&$Gk;F-6&wc&?fk55T$!E8+%0& z>b`eKNP+?cJkVk8SiNUV5MgcFGbmb)R8W+1SY<4NlDxw4RW1&}O1R*uqJx!K^|h0l zsyR9t1xup2rW=mw3tiz!$Ad11wfkB(=!zxD1}!GZzAQ)=9g}0B72_69JnSLi#w5j{ zAsbW3lpyGOa?Cp(UOv9;E;J!Vt;M_id7I*j=bQ=^2dSkfqwzKBW~V#M2`g%XmhT*; zQF8lOJ?;5NH+-Li8M!$iCCF&*FoLg#WQVrZp@?iTkZ&8o@$X2MVWBoBz|TmXWPYz~>htye%b$`K#a7iQeZ0K-KNGYa9UPW_Hb=l5 z99qJ6tIRretqUb##4ffdxn;i6q2y%L4ThWSjZesZy2#6wv&g*DRi2u5z|e;{YL@Jr zTI|Q5kAAYs?Qws;2KzSqsh??mhS#L)A*L0{GjNfHNf5~_+(n1dU zmTj{~QdZm+y1W#1<%hA~rhm>yD3w$~F9qf6Mdk_80NO7rW0)-plm$OA)n!X&)V;Wm*-4ly%P~Mx+f>fQVPgPEdA; zK0yg8GXD2{<6m|nz>rJ$DdjUzFw!gOhiB<}P0mn9RG?d{WbsLT3Yl|fHcLuGv_zge z>6*Fzagt)fNi>F)8(BQ&dcTIW==ug{tu+F_V5_X4hM~sa9P3n%%m9fH)R>WX~h@!W9Ig~O$dyi$bf$4X!5N4o%9Y5S^b90srKw*rLv?k;i`^#?+ zwHjw5zv4w{N2VM8;9{NNF_x>r7$eu0ynB2V4uo||25F%-@c_qlbr z#85|jihgNmnd7rRC3$a@ zj1yi3TB=RnmH@WVW6E598IPx9ICBypR4&Q8P=8RoUHKon2@ZRFeb}U;&b6)RDQ62yorq>-@-1!-~zysRdBNCCy8E^A_88L3s zT>DwA7oPFG*gXnsx{$NDSc*#8Gq!@4qr0iemt3cWl=qL43E?G5LOv9iCwzrA*SM6c zhp$=4up66mMl`?h_@KwHYJAH6Z+uao4!O=wZvgp~ikqq-y__X#6)mN*1^0^lj8M9` zU)R;@Rc?pIRm<%CjCL)yZkZZI=B5!KzR1avAr~a+m2MNp+$t4iK`bSbLI<42?S)5T zQJtf8#)&vWx=r7k-ogf_w8_N?7S7I+&~#|t6ddrY86u|CHZ{V2xXzf_pC(Jas^*f73#0ZCmA@nV5Dlch)h|%EF2|k{ zV5Y|(XSwukv;0j=5{oI&9g<;FKR#1r%#j>xe?xFTnX}Aj#;lgNkIlkZ9l2Q<_$M}x zUV|@Ny!@0T8BaR{`xL6j^v<~FI$?(aS!RDqxiR{T(N$-FLwAsUXC6-b-Q#9-895Wj(nLy1%ov#1<%ay?Hz?Tx>k9z#q8fx^B z>v!!CICb7v`Mr^l4xj}yv73)vu*)-Aahh-5CnGf9^aA@i!}p7-Cqvg_FNYX73;N6@ zZWlwMKYz)u$gfoj^dJvQyPGrF`U3(f?dHPK3>}YbQ)Cd{xu|;m;syF%0JvqQ+IfDm zzaysbAMzi8ZqU5`Hpr~Vha|-L-Ej^QyLp}c!^aTO7^6G+lfS5v`$bI82i&!)g~frL znbqsJ&h`f$k<2Zf4`&R`Wp2ZFrzFgn;!rDy>}f~@&8hT9(?mS~{$ZueVGi85=)_XP z%MG<^RKM80U(w^fqn5SAXAGPnkv^Jb1Tg|r3S%(0Bq3eYbh)@% zYTbfU=|K;`W-&+Sfvx22e?39{$H@QBDes9^sg0R}k;l?=nMk44)*BQ~d7z@RZX`8`fL*EiPZf8Q{< zrCwgKWFq!d&Et{Tv$q@E%0}wuvgH%#d&f`SQ{*yynH4YIc?kPov(?(QKLW1BpED07 z6G>uyHGko-#5-02*T0W0X(UtvZ?_n0CGoU7RdJ^)RoMv5ydGrtA=+%mxQRX(*kK|z zj0OqH>mJ~e0PZdzb2m5Tz4uJw(Qb+@(X{LWj}N;y46ZupAf7mo6W54c#h^^Yr6h9e z{P7=@rGo|TohJTx+kRm*fB9Tw*7=;p=&bWTg17Acg6axJPW7exfqoP%`$H80@BLsw zX!u=yZnE9oWkX!t-xU5`FI5MzEImlTg#}C9WR#X9bep_(7JDZl2^V{pB@N+_s*JKh z+6!E2TFR9)=Yu61u(d6zt!BR_SV;k1xKqR0L zIMINrj`f%Cf246Hf=u>T$w2_A>hcDMU0bX8pIm>1J>YXJ+d2;r90=TU!{dU0q#J1D zV0!@#A7)y$tw@YvRXJgaH7Ge&h~zAlT0_V&VSg|5_@UGHUKG5oAZI3M;HFHV z6f`#}iavwf$wr>Kc}b(g#h2<&*#*!&5DL^WAC`rAzox7iK>eMXhOHZO`Q z!;$_D2&WQV8!Iks0&t~1RbiH#b3cO(6$fNIUFmJg8Rwjn9b6i7oEfQKY8QVr^{8hU zn&RaY-dH#e1a(yS4@x{^4gllTHU%JIqnihA_ZsT9VjF? zXN+rLdt!J3!2%$7K+z3PPwOU%LK3F-m8a>l@hZ0E0K7Xqlz0oDZ+FRs_+)In;(6vc zNbVO+kn}Qesy`4Ct}R#`-E%F0uGgj~nB}UKC`GEb6&c*enYDzp^v-_-eM_C-U!W&5 z|E#YG;1edUNbH5p2}ASc_@<(*Ezb;-Cw;f-yO|$0w_6O2U%nu1puEpd7HV9)j!WcV z;PB3w%>2Nd9rOJ;fbYL3sr@TOh<}Xn|IG1!C01unZ31|EM5tdQi?9OsCCI4zu^wC9 zN5Fgi$eL{Bq0Cdl`j006D#$s-se`T-u4iM;$H} zs*Tt+cP&6gt9kDq7eB~pyWrcR)Y|iuezGDlnLi$B?%vWaw*d!6;q{x_-70Pz-s~nN z;mPv0KM-AJy&|57aa-8o0Jn6KUpP5C+D$%vR-xBx`w(-VEAy9fLhwP~wE>I3gADw{ zx|d%3z@2GQZp=I1uY5B$@CBs->90jH`PlKYXNVOGqTRNKQd@#jP~*{o{|lWD8%jqU z2Dy4ue2uKv_;SCDQ}F=rUMPn4>Z zdWht;DH!>ENxNHgF|v;VYQYxE8jzX3KV!99C3V;1O_ch2N}FAKtna(lW~Zy2`DOak z2E~tIyGuW#u2%~C>n)^e!2>3lU_7|%_&ns1sO(ZI`;f4*_m1zLqL5qTpCL+As&wwp znu#MJJ^QlKuMppZkfVkW$S+Z=gGi;(p1`UA-|mgkp9}B{Ke~>NOsckN;1k{OO{(mX zZkfcRiww4JynC`6Z<+U%GdhBW(7c&BOJTeB6{g<|JwD{zuHN)-Y1KwwSpNuZyu^X0 zJLu@D7)&z8U0-+*sNj*GpT(LOQZlLC7h&S)gI4@ujdm4EozH*VZ^~u$dH5Yrc6_=p zi{SeI=+ytTs0lRvQxM-gl@@G0=cUIL`|(0zOVU&h)i~yfi7g!+x@RC-DS6O}3X$|4 zz1{N-4pvo7vP;bg#@kNr*N|4`QjO}`&CE2ok1)=&hXex7Yq8{Nx@PY$Ej}N@78Wy` zE<70*PS0j84O@Knh0me{(ZI^X)$v_i0zVf@!oXodj_!Q2LL3s?xYs{NQ2yMGk~%-b zu16wR2H}T+=C!%wTKTgtGJH$b)O4Hfp?beoOAnKKS*ALsH!w!cS8GK-R^J$wJ~q_` zF5MO(cRRlk_!mwxTXWTQ^O*na=y#dq>T>YacCfcHf_1FkXQWvo5~#4Y*O!H?a>CvZ zD+O6PSz$<+`_|>oa$APa7c28J%yV<2OtVvx(|>3+Dg|j0D>s3mWD}tTys23Ej}aK0 z$e5_GLu@bXYiTvlduSpq=_9#PQi#oS^E9b%AHT1QKReP#oU>>yIqDN`aHvlV;L_UZ zi_0)~OpACwt^p2YYbO|{9JuxkbZFu6yA|fgPt~pT>`PLk{ITSBUuDc!4u(J7^<@{T zSp7DeZR^xe=gd|l9T!G$6dpSQCaqGhPOga7`CA!<`i12j1PMP{Z{D z=))nVigru_>p>$QO1o<%t81Qxhe|QC?p|YNAt9kuNu@nQmtR3qb97W-cCX|Xr|gDv z4M!uCvZcQCwc}iQ#SPDpyyvkSTG4-$W|+eL#~lhb_u8iiEFOcq&nk)>d^Knz=0@)< zQgMp@l7#DumI7BNtIS+B_Zuz2UG4nh2|4rk$_)weU#Btt-s{_{v52nwP@nYA2A5{{ zL?Aq}Z2HyTOgx$b0?nWJNvY6C>#NFx8(Sy7y7CWCBS%%3NP^o0_v^4jPKfAnV{;Zy zcIGfN!QIpKF($tX+mNH&j0bAd&(-a{aChY0D>xY#gy&@@)g4x>mafZc5F;4eoC~<4 zJMV01N6}Y}>@b)1Ol*y?`?uT~he`G?y6p_<$yeekR{=MLd&M5@nwLyU`04ZW#A?4C zA5oRSUQM^UVmy*p7*(rSpH;hZvep92l#Ct_2#5b_GwGJ4quqMy)tl@0DB*;eMmj%)Sc?4o6qyr za~HWcm2Moolf9faGM$#O>gLif3;(9qRH#|YJz=<~; zlE##bNK%jenDc6tQ}VK1S99LyaTOyD5pxylV^SKI%=^(aHgl_CJoc>wW%3g z6Wt68)sHz5PFhv7!Ln+qonFQoSl^UJH+*l{ht>=j+$(X3o+WtfELQS&yWZcf@t?pJ z`ZuC-6Jt~EueN~f=WI^sg_q|9w#dx4vu5BCQ_89)n^1Ep|l*0-vLym zHa=NeGWhmKhxUHk3b&U|!~*-ACCTEXaVLr(m!PgiXU;$-Uo9{XLreyO@r36dA$X}W zZ}0=t?BvL|!eooEP};++GofU2POt`G4uIHt2#QhbXwwa!FKz>3p()+w*_)t$^iA%+ z7dfBad3L+W52ZOlE^&;Fjb*J%Qm|;AKd#GNIrnFYV{&N79>`?9z?l!Zg|YyvKdXBC zFhytd*%P#C$92G~f2lZGgs$Ru)vpeoX-OYC2n<)nuSMRtHDI(xGYfyxu#gLvKF7nQ zc}*M#KjQ7cNd;kFvptC)*D#8whc2QZeOCU}QyW!Vt1eVLv9hwDeAuU|DyekM>=&y$zA>Ss{VGF**HC=Df8T{o-6Qua zbxX4j&!0RbU+{==?P@w6T)-QuMm9TRba`JK7i~Kp=fKTIP z@;lbEn$mr7>mF5_a3*=5CbSk_!KcZiy~_r&zbkD~yO#7HDkSu$Lx5EG+3lxPAzyeN z^4cP>RljhquaXQtb?xOOv#h1TXZy!%1i|d1NCPBZE3gtAZiE|f z^{l&@kdu^h35hYy%*c4Yn#Ob-9LOX0-nt$cnH`oJw(BEJ4n;?3x4fL37R}W|_t{9& zw@J(kNC5Q{U?_W>SZk9_SLC$Y95^x_S4%gPa1ws~;zx4L22j4uHa88tRsK(UHP_}M z!aTM;Yu4b=wet_#?LI$HLY6>KI{Ahjg9nC!Y9pl(>09O|9%kXEAB)9jv*t#)xUksw zr?Rr*kXCD6LAy)mldeyC>qho|T{JLT-M2H&lZtJ>?{i({h`2%<>x1PZ8?U&WoE&WwQrYmQ!c1dE z3T`Os)@l*Hw`JdDIUYj0;tqxTbL^!E=H-{Xn?gwlRD5dBr}6*$%j{X{j6op^YI2JSFa`)Nv>~NXe!G?;v7r2$%Grq# z^^x4ALF+_15Qt)(ycWO-dS^;L)8gud2!|iQH-O&!u}4T$v&NSPdS*caWllNsk&bFC z39HV{G+(~Y^YdJgHMW{NH>OmM$GY5&QC9_w+Eq*DgLSo|R z7kO=Euyd|XWII2xbu@!A*c#)h53cOo+^>Fe(=FX*Ox|s}&7CkLha%Lwr3&9*W!3Dn zloygf#f`D@Ne-ImrJ@b&d{)@DJ*?lXSeIU&hArCqEk8vZRc}n}?X@|D|AeKpt_nHv z3P?ZQNuXgH{qwUaiIB>qfHxI+WH&PE));E24__2NE?WuRB_XHZONmN4sgco&NiGaM z<~dN_>*F;AN9QR2FAEO@h~7=0g(j9@FZyAT)PJ}X;lHH4tW%FIEZE53S3eb>J(l#m zp!(SJO>S;(6H7a0=f55+>jxH`KYy2G!Do-cfEsR;D~0JFw5J}|>el`xy)*d%=^gg; z)LX4Fi*xygn#MxFf{JI}B^b{QBw^bIFBG6)J%HQHg}Q%rSm;(IpY#Fg{rv8#Iy(9U$Tg50E_pX^jFrsG+M`aO1H8o*=|Jxt}lOnuz&bk7q# zn&;R>T@v^8hevx$b+AawO*<9GO!;wr)&;qytyEv(iaC>#oSYffe*Y4t_FLf*$#d|* z%>2$cd*8%6eY)6Z}Jq5!qMgopo^OGoykQFQH# V)?+XQU;z+FLrq7uMESw<{{e@cglGT& diff --git a/icons/mob/species/vox/mask.dmi b/icons/mob/species/vox/mask.dmi deleted file mode 100644 index 6071aa5ed7cce5c9dddb030bc684b99ff5a1d106..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 702 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=g;gODB`&GO$wiq3C7Jno3=9=> zRF7M8H5dr69vN=jcmB;YyK z%=J|Xo3v-**6V3HDbsdvSZ$WJKT@r5HO)BP&&Ov=`T9M1o{o})c&q*HU55@tF&sD$ zb!Ywce~Bhd9Y@y5w{|4h&HsHeWzzNjufP9hp86HY*miDa_VayffO@Rb7x4;RlehdH zVPEz(=F%^{?)>51{g*f0d3mhd^V0MOuJdMJ-emIqb?MhYhK9qFC)RV8Kki%#u)u4O8jd=s>jSPlu z4AQ&@#1a-WVklb6wxWNzc;vI$cbq?5{h8bUK$^XxvikEw!DG)4wEsB}b>+R{56y@F znj5!X{rPy&2c=J$XP5o!WtJ(iQnP70Cn>nnY<}r(4fEMguIrggr`*jGRqT1N{d&%; z`6hDz`wZ;Z8&1dZo1aeo!eJZ3XntCi;layyeBzb&etjraXWYg)J>RQg%IBm^6WM>9 sE2V#|ovrsJeF71#26^q-efA1=r&DLj4ouJZ2~3a-p00i_>zopr0Ks@VY5)KL From 18d2c9ba335a244dfd68e21e745ca164224db149 Mon Sep 17 00:00:00 2001 From: Hubblenaut Date: Thu, 26 Jun 2014 03:33:47 +0200 Subject: [PATCH 090/304] Fixes two wires in airlocks not triggering --- code/game/machinery/doors/airlock.dm | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 5a2359ade8..2fb065bf4d 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -366,7 +366,7 @@ About the new airlock wires panel: //Sending a pulse through this flashes the red light on the door (if the door has power). if((src.arePowerSystemsOn()) && (!(stat & NOPOWER))) do_animate("deny") - if(AIRLOCK_WIRE_MAIN_POWER1 || AIRLOCK_WIRE_MAIN_POWER2) + if(AIRLOCK_WIRE_MAIN_POWER1, AIRLOCK_WIRE_MAIN_POWER2) //Sending a pulse through either one causes a breaker to trip, disabling the door for 10 seconds if backup power is connected, or 1 minute if not (or until backup power comes back on, whichever is shorter). src.loseMainPower() if(AIRLOCK_WIRE_DOOR_BOLTS) @@ -385,7 +385,7 @@ About the new airlock wires panel: src.updateUsrDialog() update_icon() - if(AIRLOCK_WIRE_BACKUP_POWER1 || AIRLOCK_WIRE_BACKUP_POWER2) + if(AIRLOCK_WIRE_BACKUP_POWER1, AIRLOCK_WIRE_BACKUP_POWER2) //two wires for backup power. Sending a pulse through either one causes a breaker to trip, but this does not disable it unless main power is down too (in which case it is disabled for 1 minute or however long it takes main power to come back, whichever is shorter). src.loseBackupPower() if(AIRLOCK_WIRE_AI_CONTROL) @@ -440,7 +440,7 @@ About the new airlock wires panel: var/wireIndex = airlockWireColorToIndex[wireColor] wires &= ~wireFlag switch(wireIndex) - if(AIRLOCK_WIRE_MAIN_POWER1 || AIRLOCK_WIRE_MAIN_POWER2) + if(AIRLOCK_WIRE_MAIN_POWER1, AIRLOCK_WIRE_MAIN_POWER2) //Cutting either one disables the main door power, but unless backup power is also cut, the backup power re-powers the door in 10 seconds. While unpowered, the door may be crowbarred open, but bolts-raising will not work. Cutting these wires may electocute the user. src.loseMainPower() src.shock(usr, 50) @@ -451,7 +451,7 @@ About the new airlock wires panel: src.locked = 1 update_icon() src.updateUsrDialog() - if(AIRLOCK_WIRE_BACKUP_POWER1 || AIRLOCK_WIRE_BACKUP_POWER2) + if(AIRLOCK_WIRE_BACKUP_POWER1, AIRLOCK_WIRE_BACKUP_POWER2) //Cutting either one disables the backup door power (allowing it to be crowbarred open, but disabling bolts-raising), but may electocute the user. src.loseBackupPower() src.shock(usr, 50) @@ -487,12 +487,12 @@ About the new airlock wires panel: var/wireIndex = airlockWireColorToIndex[wireColor] //not used in this function wires |= wireFlag switch(wireIndex) - if(AIRLOCK_WIRE_MAIN_POWER1 || AIRLOCK_WIRE_MAIN_POWER2) + if(AIRLOCK_WIRE_MAIN_POWER1, AIRLOCK_WIRE_MAIN_POWER2) if((!src.isWireCut(AIRLOCK_WIRE_MAIN_POWER1)) && (!src.isWireCut(AIRLOCK_WIRE_MAIN_POWER2))) src.regainMainPower() src.shock(usr, 50) src.updateUsrDialog() - if(AIRLOCK_WIRE_BACKUP_POWER1 || AIRLOCK_WIRE_BACKUP_POWER2) + if(AIRLOCK_WIRE_BACKUP_POWER1, AIRLOCK_WIRE_BACKUP_POWER2) if((!src.isWireCut(AIRLOCK_WIRE_BACKUP_POWER1)) && (!src.isWireCut(AIRLOCK_WIRE_BACKUP_POWER2))) src.regainBackupPower() src.shock(usr, 50) From 5af82714b2af5e89d657c963277017077345eba8 Mon Sep 17 00:00:00 2001 From: Loganbacca Date: Thu, 26 Jun 2014 14:55:53 +1200 Subject: [PATCH 091/304] Omni device tweaks - Better mapping support (mapping icons and can now set mixer concentration) - Trimmed overlay lists - Utilized existing procs for icon generation - Changed filter icon color to better contrast the output color --- .../components/omni_devices/_omni_extras.dm | 39 +++++--- .../components/omni_devices/filter.dm | 5 +- .../components/omni_devices/mixer.dm | 41 ++++++++- .../components/omni_devices/omni_base.dm | 86 ++++++++++-------- icons/obj/atmospherics/omni_devices.dmi | Bin 11975 -> 12990 bytes 5 files changed, 111 insertions(+), 60 deletions(-) diff --git a/code/ATMOSPHERICS/components/omni_devices/_omni_extras.dm b/code/ATMOSPHERICS/components/omni_devices/_omni_extras.dm index ba64adc61e..ae827881ad 100644 --- a/code/ATMOSPHERICS/components/omni_devices/_omni_extras.dm +++ b/code/ATMOSPHERICS/components/omni_devices/_omni_extras.dm @@ -21,7 +21,7 @@ var/global/list/omni_icons[] var/icon/omni = new('icons/obj/atmospherics/omni_devices.dmi') for(var/state in omni.IconStates()) - if(!state) + if(!state || findtext(state, "map")) continue var/image/I = image('icons/obj/atmospherics/omni_devices.dmi', icon_state = state) @@ -49,7 +49,7 @@ var/global/list/omni_icons[] var/dir var/update = 1 var/mode = 0 - var/concentration = 1 + var/concentration = 0 var/con_lock = 0 var/transfer_moles = 0 var/datum/gas_mixture/air @@ -92,28 +92,39 @@ var/global/list/omni_icons[] var/global/list/pipe_colors = list("grey" = null, "red" = PIPE_COLOR_RED, "blue" = PIPE_COLOR_BLUE, "cyan" = PIPE_COLOR_CYAN, "green" = PIPE_COLOR_GREEN, "yellow" = PIPE_COLOR_YELLOW, "purple" = PIPE_COLOR_PURPLE) -/proc/dir_name(var/dir = 0) + +//returns a text string based on the direction flag input +// if capitalize is true, it will return the string capitalized +// otherwise it will return the direction string in lower case +/proc/dir_name(var/dir, var/capitalize = 0) + var/string = null switch(dir) if(NORTH) - return "North" + string = "North" if(SOUTH) - return "South" + string = "South" if(EAST) - return "East" + string = "East" if(WEST) - return "West" - else - return "None" + string = "West" + + if(!capitalize && string) + string = lowertext(string) + + return string -/proc/dir_flag(var/dir = "None") +//returns a direction flag based on the string passed to it +// case insensitive +/proc/dir_flag(var/dir) + dir = lowertext(dir) switch(dir) - if("North") + if("north") return NORTH - if("South") + if("south") return SOUTH - if("East") + if("east") return EAST - if("West") + if("west") return WEST else return 0 \ No newline at end of file diff --git a/code/ATMOSPHERICS/components/omni_devices/filter.dm b/code/ATMOSPHERICS/components/omni_devices/filter.dm index 49d6cd0d53..d52090b0c7 100644 --- a/code/ATMOSPHERICS/components/omni_devices/filter.dm +++ b/code/ATMOSPHERICS/components/omni_devices/filter.dm @@ -3,8 +3,7 @@ //-------------------------------------------- /obj/machinery/atmospherics/omni/filter name = "omni gas filter" - icon = 'icons/obj/atmospherics/omni_devices.dmi' - icon_state = "" + icon_state = "map_filter" var/list/filters = new() var/datum/omni_port/input @@ -153,7 +152,7 @@ if(ATM_O2 to ATM_N2O) f_type = mode_send_switch(P.mode) - portData[++portData.len] = list("dir" = dir_name(P.dir), \ + portData[++portData.len] = list("dir" = dir_name(P.dir, capitalize = 1), \ "input" = input, \ "output" = output, \ "filter" = filter, \ diff --git a/code/ATMOSPHERICS/components/omni_devices/mixer.dm b/code/ATMOSPHERICS/components/omni_devices/mixer.dm index 4c3fb13561..4cd1607acf 100644 --- a/code/ATMOSPHERICS/components/omni_devices/mixer.dm +++ b/code/ATMOSPHERICS/components/omni_devices/mixer.dm @@ -3,11 +3,35 @@ //-------------------------------------------- /obj/machinery/atmospherics/omni/mixer name = "omni gas mixer" - icon = 'icons/obj/atmospherics/omni_devices.dmi' + icon_state = "map_mixer" var/list/inputs = new() var/datum/omni_port/output + //setup tags for initial concentration values (must be decimal) + var/tag_north_con + var/tag_south_con + var/tag_east_con + var/tag_west_con + +/obj/machinery/atmospherics/omni/mixer/New() + ..() + if(mapper_set()) + for(var/datum/omni_port/P in ports) + switch(P.dir) + if(NORTH) + if(tag_north_con) + P.concentration = tag_north_con + if(SOUTH) + if(tag_south_con) + P.concentration = tag_south_con + if(EAST) + if(tag_east_con) + P.concentration = tag_east_con + if(WEST) + if(tag_west_con) + P.concentration = tag_west_con + /obj/machinery/atmospherics/omni/mixer/Del() inputs.Cut() output = null @@ -28,13 +52,17 @@ if(ATM_OUTPUT) output = P - for(var/datum/omni_port/P in inputs) - P.concentration = 1 / inputs.len + if(!mapper_set()) + for(var/datum/omni_port/P in inputs) + P.concentration = 1 / max(1, inputs.len) if(output) output.air.volume *= 0.75 * inputs.len output.concentration = 1 +/obj/machinery/atmospherics/omni/mixer/proc/mapper_set() + return (tag_north_con || tag_south_con || tag_east_con || tag_west_con) + /obj/machinery/atmospherics/omni/mixer/error_check() if(!output || !inputs) return 1 @@ -131,7 +159,7 @@ if(ATM_OUTPUT) output = 1 - portData[++portData.len] = list("dir" = dir_name(P.dir), \ + portData[++portData.len] = list("dir" = dir_name(P.dir, capitalize = 1), \ "concentration" = P.concentration, \ "input" = input, \ "output" = output, \ @@ -215,6 +243,11 @@ update_ports() /obj/machinery/atmospherics/omni/mixer/proc/change_concentration(var/port = NORTH) + tag_north_con = null + tag_south_con = null + tag_east_con = null + tag_west_con = null + var/old_con = 0 var/non_locked = 0 var/remain_con = 1 diff --git a/code/ATMOSPHERICS/components/omni_devices/omni_base.dm b/code/ATMOSPHERICS/components/omni_devices/omni_base.dm index 79056c1ed5..0a17de1123 100644 --- a/code/ATMOSPHERICS/components/omni_devices/omni_base.dm +++ b/code/ATMOSPHERICS/components/omni_devices/omni_base.dm @@ -3,8 +3,8 @@ //-------------------------------------------- /obj/machinery/atmospherics/omni name = "omni device" - icon_state = "" - dir = SOUTH + icon = 'icons/obj/atmospherics/omni_devices.dmi' + icon_state = "base" use_power = 1 initialize_directions = 0 @@ -12,19 +12,15 @@ var/configuring = 0 var/target_pressure = ONE_ATMOSPHERE - var/icon/icon_on - var/icon/icon_off - var/icon/icon_error - var/tag_north = ATM_NONE var/tag_south = ATM_NONE var/tag_east = ATM_NONE var/tag_west = ATM_NONE - var/overlays_on[8] - var/overlays_off[8] + var/overlays_on[5] + var/overlays_off[5] var/overlays_error[2] - var/underlays_current[8] + var/underlays_current[4] var/list/ports = new() @@ -83,6 +79,14 @@ if(!istype(W, /obj/item/weapon/wrench)) return ..() + var/int_pressure = 0 + for(var/datum/omni_port/P in ports) + int_pressure += P.air.return_pressure() + var/datum/gas_mixture/env_air = loc.return_air() + if ((int_pressure - env_air.return_pressure()) > 2*ONE_ATMOSPHERE) + user << "You cannot unwrench [src], it is too exerted due to internal pressure." + add_fingerprint(user) + return 1 user << "\blue You begin to unfasten \the [src]..." playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) if(do_after(user, 40)) @@ -113,10 +117,10 @@ else return - //directional icons are layers 1,2,4,8, so the core icon is layer 3 + //directional icons are layers 1-4, with the core icon on layer 5 if(core_icon) - overlays_off[3] = omni_icons[core_icon] - overlays_on[3] = omni_icons[core_icon + "_glow"] + overlays_off[5] = omni_icons[core_icon] + overlays_on[5] = omni_icons[core_icon + "_glow"] overlays_error[1] = omni_icons[core_icon] overlays_error[2] = omni_icons["error"] @@ -126,18 +130,32 @@ /obj/machinery/atmospherics/omni/proc/update_port_icons() for(var/datum/omni_port/P in ports) if(P.update) + var/ref_layer = 0 + switch(P.dir) + if(NORTH) + ref_layer = 1 + if(SOUTH) + ref_layer = 2 + if(EAST) + ref_layer = 3 + if(WEST) + ref_layer = 4 + + if(!ref_layer) + continue + var/list/port_icons = select_port_icons(P) if(port_icons) if(P.node) - underlays_current[P.dir] = omni_icons[port_icons["pipe_icon"]] + underlays_current[ref_layer] = omni_icons[port_icons["pipe_icon"]] else - underlays_current[P.dir] = null - overlays_off[P.dir] = omni_icons[port_icons["off_icon"]] - overlays_on[P.dir] = omni_icons[port_icons["on_icon"]] + underlays_current[ref_layer] = null + overlays_off[ref_layer] = omni_icons[port_icons["off_icon"]] + overlays_on[ref_layer] = omni_icons[port_icons["on_icon"]] else - underlays_current[P.dir] = null - overlays_off[P.dir] = null - overlays_on[P.dir] = null + underlays_current[ref_layer] = null + overlays_off[ref_layer] = null + overlays_on[ref_layer] = null update_icon() @@ -146,36 +164,26 @@ return if(P.mode > 0) - var/ic_dir = null - switch(P.dir) - if(NORTH) - ic_dir = "north" - if(SOUTH) - ic_dir = "south" - if(EAST) - ic_dir = "east" - if(WEST) - ic_dir = "west" - - var/ic_on = null - var/ic_off = null + var/ic_dir = dir_name(P.dir) + var/ic_on = ic_dir + var/ic_off = ic_dir switch(P.mode) if(ATM_INPUT) - ic_on = "_in_glow" - ic_off = "_in" + ic_on += "_in_glow" + ic_off += "_in" if(ATM_OUTPUT) - ic_on = "_out_glow" - ic_off = "_out" + ic_on += "_out_glow" + ic_off += "_out" if(ATM_O2 to ATM_N2O) - ic_on = "_filter" - ic_off = "_out" + ic_on += "_filter" + ic_off += "_out" var/pipe_state = ic_dir + "_pipe" if(P.node) if(P.node.color) pipe_state += "_[P.node.color]" - return list("on_icon" = ic_dir + ic_on, "off_icon" = ic_dir + ic_off, "pipe_icon" = pipe_state) + return list("on_icon" = ic_on, "off_icon" = ic_off, "pipe_icon" = pipe_state) /obj/machinery/atmospherics/omni/proc/update_ports() sort_ports() diff --git a/icons/obj/atmospherics/omni_devices.dmi b/icons/obj/atmospherics/omni_devices.dmi index 8b566f57669ac1b90f9ab51282149adf1d6fa08f..642e90a0f1d5115a3fa463293c25cea2342bc6ca 100644 GIT binary patch literal 12990 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 From 9c805419363d9951f871c4769ddc6533735f427c Mon Sep 17 00:00:00 2001 From: Loganbacca Date: Thu, 26 Jun 2014 15:40:10 +1200 Subject: [PATCH 092/304] Mapper sanity checks - Checks that mapped values add up to 100% so mappers can't set unusual ratios --- .../components/omni_devices/mixer.dm | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/code/ATMOSPHERICS/components/omni_devices/mixer.dm b/code/ATMOSPHERICS/components/omni_devices/mixer.dm index 4cd1607acf..64af4057b0 100644 --- a/code/ATMOSPHERICS/components/omni_devices/mixer.dm +++ b/code/ATMOSPHERICS/components/omni_devices/mixer.dm @@ -17,20 +17,32 @@ /obj/machinery/atmospherics/omni/mixer/New() ..() if(mapper_set()) + var/con = 0 for(var/datum/omni_port/P in ports) switch(P.dir) if(NORTH) - if(tag_north_con) + if(tag_north_con && tag_north == 1) P.concentration = tag_north_con + con += max(0, tag_north_con) if(SOUTH) - if(tag_south_con) + if(tag_south_con && tag_south == 1) P.concentration = tag_south_con + con += max(0, tag_south_con) if(EAST) - if(tag_east_con) + if(tag_east_con && tag_east == 1) P.concentration = tag_east_con + con += max(0, tag_east_con) if(WEST) - if(tag_west_con) + if(tag_west_con && tag_west == 1) P.concentration = tag_west_con + con += max(0, tag_west_con) + + //mappers who are bad at maths will be punished (total concentration must be 100%) + if(con != 1) + tag_north_con = null + tag_south_con = null + tag_east_con = null + tag_west_con = null /obj/machinery/atmospherics/omni/mixer/Del() inputs.Cut() From 2218164df9027d704696e85bc6d2f2bc48d50ba0 Mon Sep 17 00:00:00 2001 From: Loganbacca Date: Thu, 26 Jun 2014 21:10:17 +1200 Subject: [PATCH 093/304] Bug fix and mapping example - Fixed mapped omni devices being set to off at round start - Remapped the research outpost atmos room, taking advantage of omni devices --- .../components/omni_devices/omni_base.dm | 2 - maps/tgstation2.dmm | 172 +++++++++--------- 2 files changed, 85 insertions(+), 89 deletions(-) diff --git a/code/ATMOSPHERICS/components/omni_devices/omni_base.dm b/code/ATMOSPHERICS/components/omni_devices/omni_base.dm index 0a17de1123..0e46546a20 100644 --- a/code/ATMOSPHERICS/components/omni_devices/omni_base.dm +++ b/code/ATMOSPHERICS/components/omni_devices/omni_base.dm @@ -125,8 +125,6 @@ overlays_error[1] = omni_icons[core_icon] overlays_error[2] = omni_icons["error"] - update_icon() - /obj/machinery/atmospherics/omni/proc/update_port_icons() for(var/datum/omni_port/P in ports) if(P.update) diff --git a/maps/tgstation2.dmm b/maps/tgstation2.dmm index 2ff9fb4fb5..697be9e4cb 100644 --- a/maps/tgstation2.dmm +++ b/maps/tgstation2.dmm @@ -8774,8 +8774,8 @@ "dmL" = (/obj/machinery/mass_driver{dir = 4; id = "research"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) "dmM" = (/obj/structure/sign/science{desc = "A warning sign which reads 'ANOMALOUS MATERIALS'"; name = "\improper ANOMALOUS MATERIALS"; pixel_x = 32},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/research_outpost/hallway) "dmN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/research_outpost/hallway) -"dmO" = (/obj/structure/transit_tube{icon_state = "N-S"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) -"dmP" = (/obj/structure/disposaloutlet{dir = 2},/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) +"dmO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 4; icon_state = "whiteyellowcorner"},/area/research_outpost/hallway) +"dmP" = (/obj/machinery/camera{c_tag = "Research Outpost Hallway Engineering"; dir = 4; network = list("Research","SS13")},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) "dmQ" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "research_outpost_hatch"; locked = 1; name = "Research Outpost Docking Hatch"; req_access_txt = "13"},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry) "dmR" = (/obj/structure/sign/deathsposal{pixel_x = 32},/obj/machinery/disposal/deliveryChute{dir = 8; name = "disposal inlet"},/obj/structure/disposalpipe/trunk{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating{dir = 1; icon_state = "warnplate"; nitrogen = 0.01; oxygen = 0.01},/area/research_outpost/power) "dmS" = (/obj/machinery/driver_button{id = "research"; pixel_x = 6; pixel_y = -26},/obj/machinery/conveyor{dir = 4; id = "archgunc"},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/westleft{base_state = "right"; dir = 1; icon_state = "right"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/research_outpost/power) @@ -8801,42 +8801,42 @@ "dnm" = (/obj/structure/window/reinforced{dir = 5; health = 1e+007},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 8; layer = 2.6; name = "Firelock West"},/obj/structure/sign/greencross,/turf/simulated/floor{icon_state = "white"},/area/research_outpost/entry) "dnn" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 8; layer = 2.6; name = "Firelock West"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) "dno" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/machinery/firealarm{pixel_y = -24},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) -"dnp" = (/obj/machinery/atmospherics/trinary/filter{dir = 4; filter_type = 1; icon_state = "intact_on"; name = "Gas filter (O2 tank)"; on = 1; target_pressure = 4500},/turf/simulated/floor/plating,/area/research_outpost/atmos) -"dnq" = (/obj/machinery/atmospherics/tvalve/digital{dir = 4},/turf/simulated/floor/plating,/area/research_outpost/atmos) -"dnr" = (/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{tag = "icon-intact (SOUTHWEST)"; icon_state = "intact"; dir = 10},/obj/machinery/meter,/turf/simulated/floor/plating,/area/research_outpost/atmos) -"dns" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/trinary/filter{dir = 4; filter_type = 2; icon_state = "intact_on"; name = "Gas filter (N2 tank)"; on = 1; target_pressure = 4500},/turf/simulated/floor/plating,/area/research_outpost/atmos) -"dnt" = (/obj/machinery/atmospherics/portables_connector{dir = 2; name = "Connector Port (Air Supply)"},/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/turf/simulated/floor/plating,/area/research_outpost/atmos) +"dnp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 4; icon_state = "whiteyellow"},/area/research_outpost/hallway) +"dnq" = (/obj/structure/sign/science{desc = "A warning sign which reads 'ANOMALOUS MATERIALS'"; name = "\improper ANOMALOUS MATERIALS"; pixel_x = -32},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor{dir = 1; icon_state = "whitepurplecorner"},/area/research_outpost/hallway) +"dnr" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/research_outpost/power) +"dns" = (/obj/machinery/door/airlock/engineering{name = "Outpost Power"; req_access_txt = "0"; req_one_access_txt = "65;10;24"},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/research_outpost/power) +"dnt" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/transit_tube{icon_state = "S-NE"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) "dnu" = (/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/sample) -"dnv" = (/obj/structure/sign/nosmoking_1{pixel_x = -32},/obj/machinery/atmospherics/pipe/simple/visible/supply{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/obj/machinery/meter,/turf/simulated/floor/plating,/area/research_outpost/atmos) -"dnw" = (/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,/obj/machinery/atmospherics/pipe/tank/air{dir = 8; volume = 4000},/turf/simulated/floor/plating,/area/research_outpost/atmos) -"dnx" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister,/turf/simulated/floor/plating,/area/research_outpost/atmos) -"dny" = (/obj/machinery/atmospherics/trinary/mixer{dir = 2; icon_state = "intact_on"; name = "Gas mixer (N2/O2)"; node1_concentration = 0.8; node2_concentration = 0.2; on = 1; pixel_x = 0; pixel_y = 0; req_access = null; target_pressure = 4500},/turf/simulated/floor/plating,/area/research_outpost/atmos) -"dnz" = (/obj/machinery/atmospherics/pipe/manifold/visible/supply{tag = "icon-manifold (WEST)"; icon_state = "manifold"; dir = 8},/turf/simulated/floor/plating,/area/research_outpost/atmos) -"dnA" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/visible/supply,/turf/simulated/floor/plating,/area/research_outpost/atmos) -"dnB" = (/obj/machinery/atmospherics/binary/pump{dir = 2; icon_state = "intact_off"; name = "Port to Air"; on = 0},/turf/simulated/floor/plating,/area/research_outpost/atmos) -"dnC" = (/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,/turf/simulated/floor/plating,/area/research_outpost/atmos) -"dnD" = (/obj/machinery/atmospherics/binary/pump{dir = 2; icon_state = "intact_on"; name = "Filter to Waste"; on = 1; target_pressure = 4500},/turf/simulated/floor/plating,/area/research_outpost/atmos) -"dnE" = (/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/research_outpost/hallway) -"dnF" = (/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/obj/machinery/atmospherics/pipe/simple/visible/supply,/turf/simulated/floor/plating,/area/research_outpost/atmos) +"dnv" = (/obj/structure/disposaloutlet{dir = 2},/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/transit_tube{icon_state = "D-NW"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) +"dnw" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/meter,/turf/simulated/floor/plating,/area/research_outpost/power) +"dnx" = (/obj/machinery/power/terminal{dir = 4},/obj/structure/cable,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plating,/area/research_outpost/power) +"dny" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) +"dnz" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) +"dnA" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable,/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) +"dnB" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) +"dnC" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) +"dnD" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) +"dnE" = (/obj/machinery/door/firedoor/border_only{layer = 2.6; name = "\improper Firelock South"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) +"dnF" = (/obj/machinery/door/firedoor/border_only{layer = 2.6; name = "\improper Firelock South"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) "dnG" = (/obj/machinery/door/airlock/research{name = "Sample Preparation"; req_access_txt = "65"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) -"dnH" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/machinery/atmospherics/binary/pump{dir = 8; icon_state = "intact_on"; name = "Air to Distro"; on = 1; target_pressure = 285},/turf/simulated/floor/plating,/area/research_outpost/atmos) -"dnI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/meter,/obj/machinery/door/airlock/atmos{name = "Outpost Atmospherics"; req_access_txt = "0"; req_one_access_txt = "65;10;24"},/turf/simulated/floor/plating,/area/research_outpost/hallway) -"dnJ" = (/obj/structure/transit_tube{icon_state = "D-SE"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) +"dnH" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/research_outpost/hallway) +"dnI" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/canister,/turf/simulated/floor/plating,/area/research_outpost/atmos) +"dnJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/research_outpost/hallway) "dnK" = (/obj/structure/transit_tube{icon_state = "N-SW"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) -"dnL" = (/obj/structure/sign/fire{pixel_x = 32},/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,/obj/machinery/atmospherics/pipe/tank/air{dir = 8; volume = 4000},/turf/simulated/floor/plating,/area/research_outpost/atmos) -"dnM" = (/obj/machinery/light/small,/obj/machinery/atmospherics/pipe/manifold/visible/supply,/obj/machinery/meter,/turf/simulated/floor/plating,/area/research_outpost/atmos) -"dnN" = (/obj/machinery/atmospherics/pipe/manifold/visible/supply,/turf/simulated/floor/plating,/area/research_outpost/atmos) +"dnL" = (/obj/structure/closet/walllocker/emerglocker/west,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 2; icon_state = "whitecorner"},/area/research_outpost/hallway) +"dnM" = (/obj/machinery/door/window/westleft{req_one_access_txt = "65;10;24"},/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{dir = 9},/turf/simulated/floor,/area/research_outpost/atmos) +"dnN" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/manifold/visible/yellow{tag = "icon-manifold (NORTH)"; icon_state = "manifold"; dir = 1},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/research_outpost/atmos) "dnO" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/atmos) -"dnP" = (/obj/machinery/atmospherics/pipe/manifold/visible/supply{tag = "icon-manifold (WEST)"; icon_state = "manifold"; dir = 8},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; layer = 2.4; level = 2; on = 1},/turf/simulated/floor/plating,/area/research_outpost/atmos) -"dnQ" = (/obj/machinery/atmospherics/unary/cold_sink/freezer{dir = 4; icon_state = "freezer"; on = 1},/turf/simulated/floor/plating,/area/research_outpost/atmos) +"dnP" = (/obj/machinery/atmospherics/valve{dir = 4},/turf/simulated/floor/plating,/area/research_outpost/atmos) +"dnQ" = (/obj/machinery/atmospherics/binary/pump{dir = 8; icon_state = "intact_on"; name = "Filter to Waste"; on = 1; target_pressure = 4500},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/turf/simulated/floor/plating,/area/research_outpost/atmos) "dnR" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_pump{dir = 2; layer = 2.4; on = 1},/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{dir = 6; icon_state = "whitegreen"},/area/research_outpost/spectro) "dnS" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/research_outpost/hallway) "dnT" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/research_outpost/hallway) "dnU" = (/obj/machinery/power/port_gen/pacman{anchored = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/light/small{dir = 1},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22; pixel_y = 0},/turf/simulated/floor/plating,/area/research_outpost/power) -"dnV" = (/obj/structure/transit_tube{icon_state = "N-S"},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) -"dnW" = (/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/structure/transit_tube{icon_state = "S-NE"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) -"dnX" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/transit_tube{icon_state = "D-NW"},/turf/simulated/mineral,/area/mine/explored) -"dnY" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/mineral,/area/mine/explored) +"dnV" = (/obj/machinery/atmospherics/pipe/manifold/visible/yellow{tag = "icon-manifold (NORTH)"; icon_state = "manifold"; dir = 1},/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/turf/simulated/floor/plating,/area/research_outpost/atmos) +"dnW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,/turf/simulated/floor/plating,/area/research_outpost/atmos) +"dnX" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor{dir = 2; icon_state = "whitecorner"},/area/research_outpost/hallway) +"dnY" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/research_outpost/hallway) "dnZ" = (/obj/structure/transit_tube{icon_state = "W-SE"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/unexplored) "doa" = (/obj/machinery/light/small,/obj/structure/transit_tube,/turf/simulated/floor/plating/airless/asteroid,/area/mine/unexplored) "dob" = (/obj/structure/transit_tube{icon_state = "E-SW"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating/airless/asteroid,/area/research_outpost/hallway) @@ -8874,6 +8874,45 @@ "doH" = (/obj/structure/table,/obj/machinery/recharger{pixel_y = 0},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbreak) "doI" = (/obj/structure/table,/obj/item/device/eftpos{eftpos_name = "HoP EFTPOS scanner"},/obj/machinery/recharger{pixel_y = 0},/turf/simulated/floor,/area/crew_quarters/heads) "doJ" = (/obj/structure/table/reinforced,/obj/machinery/recharger{pixel_y = 0},/turf/simulated/floor,/area/hallway/primary/aft) +"doK" = (/obj/machinery/atmospherics/pipe/simple/visible/supply{tag = "icon-intact (SOUTHEAST)"; icon_state = "intact"; dir = 6},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; layer = 2.4; level = 2; on = 1},/obj/structure/sign/nosmoking_1{pixel_x = -32},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/research_outpost/atmos) +"doL" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/research_outpost/hallway) +"doM" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/research_outpost/hallway) +"doN" = (/obj/machinery/atmospherics/pipe/manifold4w/visible/cyan,/obj/machinery/meter,/turf/simulated/floor/plating,/area/research_outpost/atmos) +"doO" = (/obj/machinery/atmospherics/unary/cold_sink/freezer{dir = 8; icon_state = "freezer"; on = 1},/turf/simulated/floor/plating,/area/research_outpost/atmos) +"doP" = (/obj/machinery/atmospherics/omni/mixer{on = 1; tag_east = 2; tag_north = 0; tag_north_con = null; tag_south = 1; tag_south_con = 0.8; tag_west = 1; tag_west_con = 0.2; target_pressure = 4500},/turf/simulated/floor/plating,/area/research_outpost/atmos) +"doQ" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact (EAST)"},/obj/machinery/atmospherics/pipe/simple/visible/yellow,/turf/simulated/floor/plating,/area/research_outpost/atmos) +"doR" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/light/small,/turf/simulated/floor,/area/research_outpost/atmos) +"doS" = (/obj/machinery/atmospherics/binary/pump{dir = 8; icon_state = "intact_on"; name = "Air to Distro"; on = 1; target_pressure = 285},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/research_outpost/atmos) +"doT" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan{tag = "icon-manifold (NORTH)"; icon_state = "manifold"; dir = 1},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; layer = 2.4; level = 2; on = 1; scrub_Toxins = 0},/turf/simulated/floor/plating,/area/research_outpost/atmos) +"doU" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 8},/turf/simulated/floor/plating,/area/research_outpost/atmos) +"doV" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor,/area/research_outpost/atmos) +"doW" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/research_outpost/hallway) +"doX" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/research_outpost/hallway) +"doY" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/research_outpost/atmos) +"doZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/airlock/atmos{name = "Outpost Atmospherics"; req_access_txt = "0"; req_one_access_txt = "65;10;24"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/research_outpost/atmos) +"dpa" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 4; icon_state = "on"; on = 1},/obj/structure/window/reinforced/tinted{dir = 4; health = 1000; icon_state = "twindow"; name = "hardened window"; opacity = 0},/turf/simulated/floor/engine{name = "Outpost O2"; nitrogen = 0; oxygen = 5000},/area/research_outpost/atmos) +"dpb" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH PRESSURE'."; name = "\improper HIGH PRESSURE"},/turf/simulated/wall/r_wall,/area/research_outpost/atmos) +"dpc" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 4; icon_state = "whiteyellow"},/area/research_outpost/hallway) +"dpd" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/research_outpost/hallway) +"dpe" = (/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/meter,/obj/structure/sign/fire{pixel_x = 0; pixel_y = -32},/turf/simulated/floor/plating,/area/research_outpost/atmos) +"dpf" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 8; icon_state = "on"; on = 1},/obj/structure/window/reinforced/tinted{dir = 8; health = 1000; icon_state = "twindow"; name = "hardened window"; opacity = 0},/turf/simulated/floor/engine{name = "Outpost N2"; nitrogen = 20000; oxygen = 0},/area/research_outpost/atmos) +"dpg" = (/obj/machinery/atmospherics/pipe/simple/visible/supply{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/meter,/obj/machinery/light/small,/turf/simulated/floor/plating,/area/research_outpost/atmos) +"dph" = (/obj/machinery/atmospherics/omni/filter{on = 1; tag_east = 4; tag_north = 2; tag_south = 1; tag_west = 3; target_pressure = 4500},/turf/simulated/floor/plating,/area/research_outpost/atmos) +"dpi" = (/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{dir = 5},/turf/simulated/floor/plating,/area/research_outpost/atmos) +"dpj" = (/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/yellow,/turf/simulated/floor/plating,/area/research_outpost/atmos) +"dpk" = (/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/atmospherics/portables_connector{dir = 1},/turf/simulated/floor/plating,/area/research_outpost/atmos) +"dpl" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; external_pressure_bound = 0; frequency = 1441; icon_state = "in"; id_tag = null; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/obj/structure/window/reinforced/tinted{dir = 8; health = 1000; icon_state = "twindow"; name = "hardened window"; opacity = 0},/obj/structure/window/reinforced/tinted{dir = 1; health = 1000; icon_state = "twindow"; name = "hardened window"; opacity = 0},/turf/simulated/floor/engine{name = "Outpost N2"; nitrogen = 20000; oxygen = 0},/area/research_outpost/atmos) +"dpm" = (/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.6; name = "Firelock North"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/research_outpost/hallway) +"dpn" = (/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.6; name = "Firelock North"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/research_outpost/hallway) +"dpo" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 0; frequency = 1441; icon_state = "in"; id_tag = null; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/obj/structure/window/reinforced/tinted{dir = 4; health = 1000; icon_state = "twindow"; name = "hardened window"; opacity = 0},/obj/structure/window/reinforced/tinted{dir = 1; health = 1000; icon_state = "twindow"; name = "hardened window"; opacity = 0},/turf/simulated/floor/engine{name = "Outpost O2"; nitrogen = 0; oxygen = 5000},/area/research_outpost/atmos) +"dpp" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 4; icon_state = "whiteyellow"},/area/research_outpost/hallway) +"dpq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 8; icon_state = "whitepurple"},/area/research_outpost/hallway) +"dpr" = (/obj/machinery/power/terminal{dir = 4},/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/research_outpost/power) +"dps" = (/obj/machinery/light/small{dir = 8},/obj/structure/transit_tube{icon_state = "D-SE"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) +"dpt" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/airlock/glass_atmos{name = "Outpost Atmospherics"; req_access_txt = "0"; req_one_access_txt = "65;10;24"},/turf/simulated/floor/plating,/area/research_outpost/power) +"dpu" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 4; icon_state = "whiteyellow"},/area/research_outpost/hallway) +"dpv" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "whitepurplecorner"},/area/research_outpost/hallway) +"dpw" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; external_pressure_bound = 140; icon_state = "out"; on = 1; pressure_checks = 0},/turf/simulated/floor/plating/airless,/area) "dqT" = (/turf/simulated/mineral,/area/mine/unexplored) "dqU" = (/turf/space,/area/syndicate_station/mining) "dqV" = (/obj/structure/transit_tube{icon_state = "D-SE"},/obj/structure/lattice,/turf/space,/area) @@ -8944,10 +8983,7 @@ "dsq" = (/turf/simulated/floor{icon_state = "warning"},/area/research_outpost/maintstore1) "dsr" = (/obj/machinery/telecomms/relay/preset/station,/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "dss" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/machinery/door/airlock/maintenance_hatch{name = "Telecoms Storage"; req_access_txt = "61"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/turret_protected/tcomsat) -"dst" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor,/area/research_outpost/hallway) -"dsu" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{dir = 2; icon_state = "whitecorner"},/area/research_outpost/hallway) "dsv" = (/turf/simulated/wall/r_wall,/area/research_outpost/atmos) -"dsw" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/atmos) "dsx" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/transit_tube{icon_state = "N-S"},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/atmos) "dsy" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/atmos) "dsz" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/mine/abandoned) @@ -8970,7 +9006,6 @@ "dsQ" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = "0"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/turret_protected/tcomsat) "dsR" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/lattice,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/space,/area/turret_protected/tcomsat) "dsS" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/turret_protected/tcomsat) -"dsX" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/light/small{dir = 1},/turf/simulated/floor,/area/research_outpost/atmos) "dsY" = (/obj/structure/transit_tube{icon_state = "N-S"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/research_outpost/atmos) "dsZ" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/atmos) "dta" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/mine/abandoned) @@ -8996,7 +9031,6 @@ "dtu" = (/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/obj/machinery/power/monitor{name = "telecoms power monitoring"},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor{icon_state = "bot"},/area/tcommsat/entrance) "dtv" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = "0"},/turf/simulated/wall/r_wall,/area/turret_protected/tcomfoyer) "dtw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = "0"},/turf/simulated/floor,/area/turret_protected/tcomfoyer) -"dtx" = (/obj/machinery/door/window/westleft,/turf/simulated/floor,/area/research_outpost/atmos) "dty" = (/obj/structure/transit_tube/station{dir = 8; icon_state = "closed"},/turf/simulated/floor{icon_state = "bot"},/area/research_outpost/atmos) "dtz" = (/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/shard{icon_state = "small"},/turf/simulated/floor/plating,/area/mine/abandoned) "dtA" = (/obj/item/stack/rods,/obj/structure/door_assembly/door_assembly_ext{name = "Broken External Airlock"},/turf/simulated/floor,/area/mine/abandoned) @@ -9014,7 +9048,6 @@ "dtN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/turret_protected/tcomfoyer) "dtP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/turret_protected/tcomfoyer) "dtQ" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor,/area/turret_protected/tcomfoyer) -"dtR" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor,/area/research_outpost/atmos) "dtS" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "pwall"; dir = 9},/area/shuttle/alien/mine) "dtT" = (/turf/simulated/shuttle/wall{icon_state = "pwall"; dir = 1},/area/shuttle/alien/mine) "dtU" = (/turf/simulated/floor/plating,/turf/simulated/shuttle/wall{icon_state = "pwall"; dir = 10},/area/shuttle/alien/mine) @@ -9093,7 +9126,6 @@ "dvx" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{tag = "icon-intact-f (EAST)"; icon_state = "intact-f"; dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/cyan{tag = "icon-intact-f (EAST)"; icon_state = "intact-f"; dir = 4},/turf/simulated/wall/r_wall,/area/research_outpost/iso3) "dvy" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{tag = "icon-intact-f (SOUTHWEST)"; icon_state = "intact-f"; dir = 10},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/research_outpost/iso3) "dvz" = (/turf/simulated/wall/r_wall,/area/research_outpost/power) -"dvA" = (/obj/machinery/door/airlock/glass_atmos{name = "Outpost Atmospherics"; req_access_txt = "0"; req_one_access_txt = "65;10;24"},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor,/area/research_outpost/power) "dvB" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/cyan{tag = "icon-intact-f (EAST)"; icon_state = "intact-f"; dir = 4},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/research_outpost/iso1) "dvC" = (/obj/machinery/camera{c_tag = "Isolation Room One"; dir = 8; network = list("Anomaly Isolation")},/obj/machinery/atmospherics/pipe/simple/hidden/cyan{tag = "icon-intact-f (EAST)"; icon_state = "intact-f"; dir = 4},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/research_outpost/iso1) "dvD" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{tag = "icon-intact-f (EAST)"; icon_state = "intact-f"; dir = 4},/turf/simulated/wall/r_wall,/area/research_outpost/iso2) @@ -9149,9 +9181,6 @@ "dwF" = (/obj/structure/rack,/obj/item/weapon/storage/box/gloves{pixel_x = 4; pixel_y = 5},/obj/item/weapon/storage/box/samplebags{pixel_x = 3; pixel_y = -3},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/item/weapon/storage/toolbox/emergency{pixel_x = 5; pixel_y = 5},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/turf/simulated/floor/plating,/area/research_outpost/maintstore2) "dwG" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor,/area/research_outpost/tempstorage) "dwH" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/gearstore) -"dwI" = (/obj/machinery/door/airlock/engineering{name = "Outpost Power"; req_access_txt = "0"; req_one_access_txt = "65;10;24"},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor/plating,/area/research_outpost/power) -"dwJ" = (/turf/simulated/floor/plating,/area/research_outpost/power) -"dwK" = (/obj/machinery/power/terminal{dir = 4},/obj/structure/cable,/turf/simulated/floor/plating,/area/research_outpost/power) "dwL" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; external_pressure_bound = 100; on = 1; pressure_checks = 1},/turf/simulated/floor,/area/research_outpost/iso1) "dwM" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/wall/r_wall,/area/research_outpost/power) "dwQ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/mine/abandoned) @@ -9197,8 +9226,6 @@ "dxI" = (/mob/living/carbon/monkey,/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) "dxJ" = (/obj/machinery/door/window/westleft{dir = 4; name = "Monkey Pen"; req_access_txt = "47"},/mob/living/carbon/monkey,/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) "dxK" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating,/area/research_outpost/maintstore2) -"dxL" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "whiteyellowcorner"},/area/research_outpost/hallway) -"dxM" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/camera{c_tag = "Research Outpost Hallway Engineering"; dir = 4; network = list("Research","SS13")},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) "dxN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/research_outpost/hallway) "dxO" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; layer = 2.4; level = 2; on = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/research_outpost/power) "dxP" = (/obj/machinery/conveyor_switch{id = "archgunc"},/turf/simulated/floor/plating,/area/research_outpost/power) @@ -9224,11 +9251,9 @@ "dyk" = (/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/simulated/floor/wood,/area/research_outpost/hallway) "dyl" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) "dym" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/wood,/area/research_outpost/hallway) -"dyn" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "whiteyellow"},/area/research_outpost/hallway) "dyp" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/camera{c_tag = "Engineering Workshop"; dir = 8; network = list("SS13"); pixel_y = -23},/turf/simulated/floor,/area/engine/workshop) "dyq" = (/obj/machinery/alarm{dir = 4; pixel_x = -25; pixel_y = 0},/mob/living/carbon/monkey,/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) "dyr" = (/obj/structure/window/reinforced{dir = 4},/mob/living/carbon/monkey,/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) -"dys" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/structure/sign/science{desc = "A warning sign which reads 'ANOMALOUS MATERIALS'"; name = "\improper ANOMALOUS MATERIALS"; pixel_x = -32},/turf/simulated/floor{dir = 1; icon_state = "whitepurplecorner"},/area/research_outpost/hallway) "dyv" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/obj/structure/cable,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable,/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/research_outpost/power) "dyw" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/research_outpost/power) "dyz" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/wall/r_wall,/area/research_outpost/power) @@ -9244,9 +9269,6 @@ "dyJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/transit_tube{icon_state = "N-S"},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry) "dyL" = (/turf/simulated/floor,/area/research_outpost/entry) "dyM" = (/obj/structure/window/reinforced{dir = 5; health = 1e+007},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/wood,/area/research_outpost/hallway) -"dyO" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall/r_wall,/area/research_outpost/power) -"dyP" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) -"dyQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) "dyS" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor{dir = 5; icon_state = "whitehall"},/area/research_outpost/hallway) "dyT" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/o2{pixel_x = 2; pixel_y = 2},/obj/item/weapon/storage/firstaid/fire,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/light/small{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/med) "dyU" = (/turf/simulated/wall/r_wall,/area/research_outpost/tempstorage) @@ -9254,7 +9276,6 @@ "dyW" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor{dir = 1; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/research_outpost/tempstorage) "dyX" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/research_outpost/tempstorage) "dyY" = (/obj/structure/cable,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/turf/simulated/floor/plating,/area/research_outpost/maint) -"dyZ" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) "dzb" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/closet/secure_closet/xenoarchaeologist{req_access_txt = "47"},/obj/structure/window/reinforced,/turf/simulated/floor,/area/research_outpost/hallway) "dzc" = (/obj/structure/closet/secure_closet/xenoarchaeologist{req_access_txt = "47"},/obj/structure/disposalpipe/segment,/obj/structure/window/reinforced,/turf/simulated/floor,/area/research_outpost/hallway) "dzd" = (/obj/structure/closet/secure_closet/scientist,/obj/structure/window/reinforced,/turf/simulated/floor,/area/research_outpost/hallway) @@ -9307,8 +9328,6 @@ "dAb" = (/obj/machinery/door/airlock/research{name = "Temporary Storage"; req_access_txt = "65"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/research_outpost/tempstorage) "dAc" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/research_outpost/tempstorage) "dAd" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "whiteyellowcorner"},/area/research_outpost/hallway) -"dAe" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) -"dAf" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) "dAg" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) "dAh" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) "dAi" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) @@ -9339,11 +9358,9 @@ "dAH" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/research_outpost/entry) "dAK" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/med) "dAL" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/door_control{id = "riso1"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 0; pixel_y = -25; req_access_txt = "0"; specialfunctions = 4},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/turf/simulated/floor,/area/research_outpost/iso1) -"dAM" = (/obj/machinery/door/firedoor/border_only{layer = 2.6; name = "\improper Firelock South"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) "dAN" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/research_outpost/tempstorage) "dAO" = (/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/disposal/deliveryChute{dir = 8; name = "disposal inlet"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/research_outpost/tempstorage) "dAP" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall/r_wall,/area/research_outpost/tempstorage) -"dAQ" = (/obj/machinery/door/firedoor/border_only{layer = 2.6; name = "\improper Firelock South"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) "dAR" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry) "dAS" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor,/area/research_outpost/entry) "dAT" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/research_outpost/entry) @@ -9414,7 +9431,6 @@ "dCm" = (/obj/structure/transit_tube{icon_state = "D-SE"},/turf/simulated/wall,/area/research_outpost/entry) "dCn" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/transit_tube{icon_state = "N-SW"},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry) "dCo" = (/turf/simulated/wall,/area/research_outpost/entry) -"dCp" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/research_outpost/hallway) "dCr" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/sign/examroom{desc = "A guidance sign which reads 'ISOLATION ROOM THREE'"; name = "\improper ISOLATION ROOM THREE"; pixel_y = -32},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/research_outpost/hallway) "dCs" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "whitepurplecorner"},/area/research_outpost/hallway) "dCt" = (/obj/structure/plasticflaps/mining,/obj/machinery/conveyor{dir = 2; id = "anotempload"},/turf/simulated/floor/plating,/area/research_outpost/maint) @@ -9454,9 +9470,6 @@ "dDe" = (/obj/structure/rack,/obj/item/weapon/storage/belt/archaeology,/obj/item/clothing/suit/space/anomaly,/obj/item/clothing/head/helmet/space/anomaly,/obj/item/clothing/mask/breath,/turf/simulated/floor,/area/research_outpost/gearstore) "dDf" = (/obj/machinery/door/airlock/external{name = "Access Airlock"; req_access_txt = "65"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor,/area/research_outpost/harvesting) "dDg" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/research_outpost/gearstore) -"dDh" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall/r_wall,/area/research_outpost/atmos) -"dDi" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/research_outpost/hallway) -"dDj" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/closet/walllocker/emerglocker/west,/turf/simulated/floor{dir = 2; icon_state = "whitecorner"},/area/research_outpost/hallway) "dDk" = (/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/research_outpost/maintstore1) "dDl" = (/obj/machinery/hydroponics/soil,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/grass,/area/research_outpost/maintstore1) "dDm" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/research_outpost/longtermstorage) @@ -9470,11 +9483,8 @@ "dDu" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/sign/botany{pixel_x = 32},/turf/simulated/floor{icon_state = "warningcorner"; dir = 1},/area/research_outpost/maintstore1) "dDv" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "warning"},/area/research_outpost/maintstore1) "dDw" = (/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/turf/simulated/floor/plating,/area/research_outpost/power) -"dDx" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/research_outpost/hallway) -"dDy" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/research_outpost/hallway) "dDz" = (/obj/machinery/camera{c_tag = "Research Outpost Anomalous Materials Lab"; dir = 8; network = list("Research","SS13")},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/anomaly) "dDA" = (/obj/machinery/door/airlock/research{name = "Anomalous Materials Loading"; req_access_txt = "65"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor,/area/research_outpost/anomaly) -"dDC" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable,/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) "dDD" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 0; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plating,/area/research_outpost/maintstore2) "dDG" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/research_outpost/longtermstorage) "dDH" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/turf/simulated/floor,/area/research_outpost/harvesting) @@ -9500,7 +9510,6 @@ "dEf" = (/obj/machinery/door/airlock{id_tag = "rbath"; name = "Bathroom"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/research_outpost/hallway) "dEg" = (/obj/machinery/door_control{id = "rbath"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 0; pixel_y = -25; req_access_txt = "0"; specialfunctions = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "showroomfloor"},/area/research_outpost/hallway) "dEh" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plating,/area/research_outpost/maintstore2) -"dEj" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/research_outpost/hallway) "dEk" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/research_outpost/longtermstorage) "dEl" = (/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/research_outpost/longtermstorage) "dEm" = (/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/research_outpost/longtermstorage) @@ -9525,8 +9534,6 @@ "dEI" = (/obj/machinery/conveyor{dir = 1; id = "anosample"},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/explored) "dEJ" = (/obj/machinery/atmospherics/binary/pump{dir = 4},/turf/simulated/floor/plating,/area/research_outpost/maint) "dEK" = (/obj/machinery/artifact_analyser,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/bluegrid,/area/research_outpost/anomaly) -"dEP" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{dir = 4; icon_state = "whiteyellow"},/area/research_outpost/hallway) -"dEQ" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/research_outpost/hallway) "dEU" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall/r_wall,/area/research_outpost/spectro) "dEV" = (/obj/machinery/camera{c_tag = "Isolation Room Three"; dir = 8; network = list("Anomaly Isolation")},/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/research_outpost/iso3) "dEW" = (/obj/structure/closet/walllocker/emerglocker/west,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plating,/area/research_outpost/maintstore2) @@ -9552,7 +9559,6 @@ "dFr" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) "dFs" = (/obj/machinery/conveyor{dir = 1; id = "anosample"},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) "dFt" = (/obj/machinery/door/airlock/research{name = "Spectrometry Lab"; req_access_txt = "65"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/spectro) -"dFu" = (/obj/machinery/atmospherics/pipe/manifold4w/visible/supply,/turf/simulated/floor/plating,/area/research_outpost/atmos) "dFw" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 0},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/research_outpost/iso1) "dFx" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 0; scrub_CO2 = 0; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/research_outpost/iso1) "dFy" = (/obj/structure/table,/obj/item/device/flashlight/lamp,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/research_outpost/iso1) @@ -9618,7 +9624,6 @@ "dGI" = (/obj/structure/transit_tube,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/mine/explored) "dGJ" = (/obj/structure/transit_tube/station{dir = 2; icon_state = "closed"},/obj/structure/sign/securearea{desc = "A warning sign which reads 'VACUUM'"; icon_state = "space"; layer = 4; name = "VACUUM"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/mine/explored) "dGN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{dir = 2; icon_state = "whiteblue"},/area/research_outpost/sample) -"dGO" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.6; name = "Firelock North"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/research_outpost/hallway) "dGP" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1379; id_tag = "research_pump"},/turf/simulated/floor,/area/research_outpost/gearstore) "dGQ" = (/obj/structure/closet/emcloset,/turf/simulated/floor,/area/research_outpost/gearstore) "dGR" = (/obj/machinery/door/window/westleft,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) @@ -9635,7 +9640,6 @@ "dHc" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/transit_tube{icon_state = "D-NW"},/turf/simulated/floor/plating,/area/mine/explored) "dHd" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/mine/explored) "dHe" = (/obj/machinery/door/window/westleft{dir = 2},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) -"dHh" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.6; name = "Firelock North"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/research_outpost/hallway) "dHi" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) "dHj" = (/obj/structure/ore_box,/turf/simulated/floor{icon_state = "warning"},/area/research_outpost/gearstore) "dHk" = (/obj/structure/transit_tube{icon_state = "N-SE"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/mine/explored) @@ -9801,8 +9805,6 @@ "dKq" = (/obj/machinery/light,/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) "dKr" = (/obj/structure/table,/obj/item/weapon/storage/backpack/satchel,/obj/item/clothing/glasses/meson,/obj/machinery/light/small{dir = 8},/turf/simulated/floor,/area/mine/west_outpost) "dKs" = (/obj/machinery/door/airlock/glass_mining{name = "Break Room"; req_access_txt = "54"},/turf/simulated/floor,/area/mine/west_outpost) -"dKt" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "whiteyellow"},/area/research_outpost/hallway) -"dKu" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "whitepurple"},/area/research_outpost/hallway) "dKv" = (/obj/structure/ore_box,/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "mining_west_outpost_sensor"; pixel_x = 0; pixel_y = -25},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/mine/west_outpost) "dKw" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets,/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters) "dKx" = (/obj/machinery/camera{c_tag = "Crew Area"; dir = 1; network = list("MINE")},/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters) @@ -9812,7 +9814,6 @@ "dKB" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/mine/living_quarters) "dKC" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/obj/structure/sign/electricshock{pixel_x = 32},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating,/area/research_outpost/power) "dKD" = (/obj/machinery/camera{c_tag = "Storage Room"; dir = 1; network = list("MINE")},/turf/simulated/floor,/area/mine/living_quarters) -"dKE" = (/obj/machinery/power/terminal{dir = 4},/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/research_outpost/power) "dKF" = (/turf/simulated/wall,/area/mine/production) "dKG" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/production) "dKH" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/production) @@ -9824,7 +9825,6 @@ "dKN" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/simulated/floor,/area/mine/west_outpost) "dKO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/sign/science{desc = "A warning sign which reads 'MASS SPECTROMETRY'"; name = "\improper MASS SPECTROMETRY"; pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 1; icon_state = "whitegreencorner"},/area/research_outpost/hallway) "dKP" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/research_outpost/hallway) -"dKQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/wall/r_wall,/area/research_outpost/power) "dKR" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor,/area/mine/west_outpost) "dKS" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/living_quarters) "dKU" = (/obj/machinery/door/airlock/glass{name = "Crew Area"; req_access_txt = "48"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/mine/living_quarters) @@ -9878,13 +9878,11 @@ "dLS" = (/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/mine/eva) "dLT" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "mining_east_outer"; locked = 1; name = "Mining External Access"; req_access = null; req_access_txt = "10;13"},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/eva) "dLU" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "mining_east_airlock"; name = "exterior access button"; pixel_x = -25; pixel_y = -25; req_access_txt = null},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 4},/area/mine/explored) -"dLV" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "whiteyellow"},/area/research_outpost/hallway) "dLW" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/simulated/wall,/area/mine/west_outpost) "dLX" = (/obj/machinery/door/airlock/maintenance{name = "Mining Station Maintenance"; req_access_txt = "54"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plating,/area/mine/west_outpost) "dLY" = (/obj/machinery/conveyor{backwards = 2; dir = 2; forwards = 1; id = "mining_west"},/obj/structure/plasticflaps/mining,/turf/simulated/floor,/area/mine/west_outpost) "dLZ" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor,/area/mine/living_quarters) "dMa" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/mine/living_quarters) -"dMb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "whitepurplecorner"},/area/research_outpost/hallway) "dMc" = (/obj/structure/rack,/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/mine/west_outpost) "dMd" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/mine/living_quarters) "dMe" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor,/area/mine/living_quarters) @@ -11690,22 +11688,22 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqVdrgdrhdqTdqTdqTdqTdqTdqTdridridridrjdrkdrcdqTdqTdqTdrldobdocdocdoddrpdrqdrrdrsdrsdqXdrsdrtdruaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadrvdrhdqTdqTdqTdqTdqTdqTdqTdridrwdrxdrydrjdrkdrzdridrAdrBdrCdrDdrDdrDdrEdrFdrDdrDdrDdrDaafdrGdrHdruaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadrIdqTdqTdqTdqTdqTdqTdqTdqTdrJdoedrLdrMdrNdrOdrPdrQdrRdrSdrTdrUdrVdrTdrWdrEdrTdrXdrUdrDaafaafdrYdrZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdsadsadqTdqTdsadsadsadsadqTdsadsadsadsadsadsadsadqTdqTdqTdqTdqTdqTdqTdqTaaaaaaaaaaaaaaaaaaaaaaaaaaadrIdqTdqTdqTdqTdqTdrJdrJdrJdrJdsbdscdofdsddsedsedsedsfdsgdrTdshdsidsjdrEdrEdskdsidshdrDaafaafaafdslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdsadqTdqTdqTdqTdqTdqTdsadsadqTdqTdqTdqTdsadsadsadsadqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadqTaaaaaaaaaaaaaaaaaaaaaaaaaaadrIdqTdqTdqTdqTdrJdrJdsmdsndrJdsodsodsodsodJIdsedsqdDvdDudrTdrTdrTdrTdstdsudsvdsvdsvdsvdsvdsvdswdsxdsyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadszdsAdszaaaaaaaaaaaaaaadqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdsadqTdqTdqTdsadsadqTdsadsadsadqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadqTdsaaaaaaaaaaaaaaaaaaaaaaaaadrIdqTdqTdqTdqTdrJdsBdsCdsDdsEdnudsGdsHdsIdsJdsKdsLdDldDkdrTdsOdsPdrTdDjdDidDhdnpdnsdntdnqdnrdsXdsYdsZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadtadtbdtaaafaaaaaaaaadqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdsadsadsadsadsadsadqTdqTdqTdqTdqTdqTdqTdsadsadsadsadsadqTdqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaaaaaaaaaaaaaadrIdqTdqTdqTdqTdrJdtcdtddKIdrJdtfdsFdtgdthdtidtjdtkdEBdEAdEedEddEgdEfdEjdnEdDhdnFdnAdnBdnCdnDdtxdtydsZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadtzdtAdtBdtCaafaaaaaadqTdqTdqTdqTdqTdqTdqTdsadqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaaaaaaaaaaadqVdtDaaadqTdqTdqTdrJdtcdtddtEdrJdtFdtgdtGdtHdKbdtJdtKdtJdDAdtJdtJdtJdrDdDydDxdrDdnvdnydnzdnwdnxdtRdsYdsZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadtSdtTdtTdtUdtVdtWdtaaafaaaaaadqTdqTdqTdqTdsadsadsadqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaafdtXdtYdrsdrsdrsdtZduaaaadqTdqTdqTdrJdtcdubdnRdrJdudduedGwdGNduhduidMrdukdGudumdunduodrDdHhdGOdrDdnQdFudnPdnwdsvdsvduudnOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaduwduxduyduzduAduBduCaafaafdsadsadqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaduDduDduDaafduEduaaafaafaafaafaafaaadrJdrJdrJdrJdrJdEUdFtdrJdsodrDdnkdnGduJdtJduKduLdEKduNduOduPdrDdEQdEPdnIdnHdnMdnNdnLdsvdnJdnKdBvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqUdqUdqUdqUdqUaaadqUdqUdqUdqUdqUaaadqUdqUdqUdqUdqUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaduZdtTdtTdvadvbdtWdvcdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaduDduDduDaaaaaadrIdvddvddvddvddvddvddvddrTdvedvfdObdvhdKOdKPdKJdKKdLddLcdLgdLfdtJdvqdvrdLhdvtdLndLMdLAdMbdLVdvzdvzdvzdvAdKQdyOdnWdnXdnYcrHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqUdqUdqUdqUdqUaaadqUdqUdqUdqUdqUaaadqUdqUdqUdqUdqUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafdvGdvHdvIdvcdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaduDaaaaaadrIdvddvddvddvddvddvddvddvJdvKdvLdvMdHidICdIKdILdIQdJFdJEdnTdnSdvWdvXdvYdJGdKcdNidMWdJHdKudKtdvzdnUdwhdKEdKCdvzdnVdBvdBvdBvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqUdqUdqUdqUdqUaaaaaaaaaaaaaaaaaaaaadqUdqUdqUdqUdqUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafdwldwmdwndwodvcdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaadrIdvddvddvddvddvddvddvddwpdwqdwrdwsdymdwudwudwvdwwdwxdrDdmNdmMdrDdwAdwBdwCdwDdwEdDzdtJdysdyndwIdwJdwJdwKdyvdwMdmOdmPdBvdBvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafdwQdwRdwSdvcdwTdwUdvcdvcdvcdvcdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaaaaaaaadrIdvddvddvddvddvddvddvddwVdwqdwrdwsdymdwWdwXdwvdwYdwZdrDdyldxNdrDdxcdtJdtJdtJdtJdxddtJdxMdxLdvzdDwdxhdxidxjdxkdmKdmLdCidCiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafdxodxpdxqdxrdxsdxtdszduBdxudvcdxvdxwdvcdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaaaaaaaadrIdvddvddvddvddvddvddvddrTdwqdwrdwsdymdxxdxydwvdxzdxAdrDdzkdmXdmYdxEdxFdxGdxHdrDdxIdxJdyZdDCdzgdmWdxOdxPdxQdxRdmKdBvdBvdBvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafdxSdxTdxpdxUdxVdxWdxXdxYdxudxZdxwdyadxvdvcdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaaaaaaaadybdycdyddyedmQdycdyddygdyhdyidyjdykdyMdykdrDdrDdrDdrDdrDdySdmUdmVdxEdrEdxGdzQdrDdyqdyrdyQdyPdmTdYzdywdmSdmRdyzdyAdyBdrDdyCdtYdrsdrsdrsdrsdrsdrsdrtdyDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadyEdxSdyFdxSdxqdxqdwTdyGdxVdvcdwodyHdvcdxwdyIdvcdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaaaaaaaadyJdnfdyLdnedAUdATdATdARdASdAXdATdngdAWdyTdyUdyVdyWdyXdAGdnddncdzbdzcdzddzedzfdrDdzhdzidAQdAMdrDdvzdzldvzdrDdrDdzmdzndzodzpdzqdzrdzrdzsdzrdzrdzrdztdrZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafdzudzvdxqdzwdzxdxqdvIdzydxWdzzdzAdzBdvcdvcdvcdvcdvcdvcdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTaaaaaaaaaaaaaaadzCdzDdyLdyLdzEdyLdzFdzGdAjdzIdzJdnbdzLdzMdyUdAkdAldAcdAbdAadzZdzYdzXdzWdzPdAidAhdAgdzPdAfdAednadAddzRdzSdzOdmZdzWdzPdzHdzNdzUdDHdzTdAmdAndAodApdzrdslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafdAqdArdAsdxqdzxdAtdxUdAudxVdAvdvcdAwdAxdvcdAydxudAzdAAdvcdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTaaaaaaaaaaaadABdACdyLdyLdADdyLdAEdAFdBDdAHdBFdnmdAKdDXdyUdBfdANdAOdAPdBHdBGdBQdBPdBTdBSdBWdBVdBZdBYdBWdCpdBVdCrdBWdBVdCsdnndnodCBdCCdCEdCFdCIdDfdBldBmdBmdBndzrdslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdsadsadqTdqTdsadsadsadsadqTdsadsadsadsadsadsadsadqTdqTdqTdqTdqTdqTdqTdqTaaaaaaaaaaaaaaaaaaaaaaaaaaadrIdqTdqTdqTdqTdqTdrJdrJdrJdrJdsbdscdofdsddsedsedsedsfdsgdrTdshdsidsjdrEdrEdskdsidshdrDaafaafdpwdslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdsadqTdqTdqTdqTdqTdqTdsadsadqTdqTdqTdqTdsadsadsadsadqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadqTaaaaaaaaaaaaaaaaaaaaaaaaaaadrIdqTdqTdqTdqTdrJdrJdsmdsndrJdsodsodsodsodJIdsedsqdDvdDudrTdrTdrTdrTdnYdnXdsvdsvdsvdsvdsvdsvdnWdsxdsyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadszdsAdszaaaaaaaaaaaaaaadqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdsadqTdqTdqTdsadsadqTdsadsadsadqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadqTdsaaaaaaaaaaaaaaaaaaaaaaaaadrIdqTdqTdqTdqTdrJdsBdsCdsDdsEdnudsGdsHdsIdsJdsKdsLdDldDkdrTdsOdsPdrTdnLdnJdsvdnIdnQdnVdnNdnPdnMdsYdsZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadtadtbdtaaafaaaaaaaaadqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdsadsadsadsadsadsadqTdqTdqTdqTdqTdqTdqTdsadsadsadsadsadqTdqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaaaaaaaaaaaaaadrIdqTdqTdqTdqTdrJdtcdtddKIdrJdtfdsFdtgdthdtidtjdtkdEBdEAdEedEddEgdEfdoXdoWdoZdoYdoSdoQdoTdoUdoVdtydsZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadtzdtAdtBdtCaafaaaaaadqTdqTdqTdqTdqTdqTdqTdsadqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaaaaaaaaaaadqVdtDaaadqTdqTdqTdrJdtcdtddtEdrJdtFdtgdtGdtHdKbdtJdtKdtJdDAdtJdtJdtJdrDdoMdoLdsvdoKdoPdoQdoNdoOdoRdsYdsZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadtSdtTdtTdtUdtVdtWdtaaafaaaaaadqTdqTdqTdqTdsadsadsadqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaafdtXdtYdrsdrsdrsdtZduaaaadqTdqTdqTdrJdtcdubdnRdrJdudduedGwdGNduhduidMrdukdGudumdunduodrDdpndpmdsvdpodpidpjdpkdpldsvduudnOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUdqUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaduwduxduyduzduAduBduCaafaafdsadsadqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaduDduDduDaafduEduaaafaafaafaafaafaaadrJdrJdrJdrJdrJdEUdFtdrJdsodrDdnkdnGduJdtJduKduLdEKduNduOduPdrDdpddpcdpbdpadpgdphdpedpfdpbdmKdBvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqUdqUdqUdqUdqUaaadqUdqUdqUdqUdqUaaadqUdqUdqUdqUdqUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaduZdtTdtTdvadvbdtWdvcdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaduDduDduDaaaaaadrIdvddvddvddvddvddvddvddrTdvedvfdObdvhdKOdKPdKJdKKdLddLcdLgdLfdtJdvqdvrdLhdvtdLndLMdLAdpvdpudvzdvzdvzdptdvzdvzdvzdmKdBvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqUdqUdqUdqUdqUaaadqUdqUdqUdqUdqUaaadqUdqUdqUdqUdqUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafdvGdvHdvIdvcdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaduDaaaaaadrIdvddvddvddvddvddvddvddvJdvKdvLdvMdHidICdIKdILdIQdJFdJEdnTdnSdvWdvXdvYdJGdKcdNidMWdJHdpqdppdvzdnUdwhdprdKCdvzdpsdnKdBvdBvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqUdqUdqUdqUdqUaaaaaaaaaaaaaaaaaaaaadqUdqUdqUdqUdqUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafdwldwmdwndwodvcdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaadrIdvddvddvddvddvddvddvddwpdwqdwrdwsdymdwudwudwvdwwdwxdrDdmNdmMdrDdwAdwBdwCdwDdwEdDzdtJdnqdnpdnsdnrdnwdnxdyvdwMdntdnvdBvdBvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafdwQdwRdwSdvcdwTdwUdvcdvcdvcdvcdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaaaaaaaadrIdvddvddvddvddvddvddvddwVdwqdwrdwsdymdwWdwXdwvdwYdwZdrDdyldxNdrDdxcdtJdtJdtJdtJdxddtJdmPdmOdvzdDwdxhdxidxjdxkdmKdmLdCidCiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafdxodxpdxqdxrdxsdxtdszduBdxudvcdxvdxwdvcdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaaaaaaaadrIdvddvddvddvddvddvddvddrTdwqdwrdwsdymdxxdxydwvdxzdxAdrDdzkdmXdmYdxEdxFdxGdxHdrDdxIdxJdnBdnAdzgdmWdxOdxPdxQdxRdmKdBvdBvdBvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafdxSdxTdxpdxUdxVdxWdxXdxYdxudxZdxwdyadxvdvcdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaaaaaaaadybdycdyddyedmQdycdyddygdyhdyidyjdykdyMdykdrDdrDdrDdrDdrDdySdmUdmVdxEdrEdxGdzQdrDdyqdyrdnzdnydmTdYzdywdmSdmRdyzdyAdyBdrDdyCdtYdrsdrsdrsdrsdrsdrsdrtdyDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadyEdxSdyFdxSdxqdxqdwTdyGdxVdvcdwodyHdvcdxwdyIdvcdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaaaaaaaadyJdnfdyLdnedAUdATdATdARdASdAXdATdngdAWdyTdyUdyVdyWdyXdAGdnddncdzbdzcdzddzedzfdrDdzhdzidnFdnEdrDdvzdzldvzdrDdrDdzmdzndzodzpdzqdzrdzrdzsdzrdzrdzrdztdrZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafdzudzvdxqdzwdzxdxqdvIdzydxWdzzdzAdzBdvcdvcdvcdvcdvcdvcdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTaaaaaaaaaaaaaaadzCdzDdyLdyLdzEdyLdzFdzGdAjdzIdzJdnbdzLdzMdyUdAkdAldAcdAbdAadzZdzYdzXdzWdzPdAidAhdAgdzPdnDdnCdnadAddzRdzSdzOdmZdzWdzPdzHdzNdzUdDHdzTdAmdAndAodApdzrdslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafdAqdArdAsdxqdzxdAtdxUdAudxVdAvdvcdAwdAxdvcdAydxudAzdAAdvcdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTaaaaaaaaaaaadABdACdyLdyLdADdyLdAEdAFdBDdAHdBFdnmdAKdDXdyUdBfdANdAOdAPdBHdBGdBQdBPdBTdBSdBWdBVdBZdBYdnHdBVdBVdCrdBWdBVdCsdnndnodCBdCCdCEdCFdCIdDfdBldBmdBmdBndzrdslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafdsadsadvcdxtdBodBpdBqdAsdBrdBsdxWdBtdszduBdBudvcdAydwodxudAAdvcdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadqTdqTdqTdqTdBvdBvdBvdBvdBvdBvdqTdqTdqTdqTdqTdqTdBwdBxaaaaaaaaadBydBzdyLdBAdAYdAZdDTdBbdBcdBddBednhdBJdBKdyUdnidyVdBLdBMdBMdrDdrDdnldBOdBidBkdBOdBRdBjdBCdBRdBUdBBdBgdBUdrDdnjdnkdvZdCadzrdCbdCcdzrdCddBmdBmdCedzrdslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafdvcdvcdvcdvcdvcdvcdxsdxVdCfdBodxVdzydCgdBtdBtdxYdxudAwdvcdAydvIdChdAAdvcdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadqTdqTdBvdBvdBvdCidCidCidCidBvdBvdBvdqTdqTdCjdCkdCldyDaaaaaaaaadCmdCndyddyedCodCodCodCodvUdmGdvSdrTdrTdrTdyUdvTdBMdCtdBMdCudCvdCwdyYdBOdwfdwcdCAdBRdwbdwedCDdBUdwddvVdCGdBUdCHdwadvZdmHdCKdzrdzrdzrdCLdCMdCNdApdzrdslaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafdvcdCOduBdxWdCPdvcdCQdCRdCSdvcdzzdvcdCTdCUdCVdvcduBdCWdtbdCXdvIdwndtbdvcdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadqTdqTdqTdBvdBvdCidCidCidCidCidCidCidCidBvdBvdqTdCYdCZdrYdDadrsdrsdrsdtZduaaafaafdDbdDcdDddDedwHdDgdwtdwjdwidwGdmJdmIdDndDodDpdDqdDrdDsdDtdBOdxfdwLdALdBRdxadxbdBadBUdxedxBdCxdBUdDDdxKdxCdDGdDmdDIdDJdzrdzrdzrdzrdzrdDKdtDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From 12fad74047b0be7c6ca603931c02bc081a464424 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Thu, 26 Jun 2014 20:59:30 +0930 Subject: [PATCH 094/304] As far as I can tell, viral infections were happening irrespec tive of medical crew being present. Lowered chance for proc as well. --- code/modules/events/event_dynamic.dm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/code/modules/events/event_dynamic.dm b/code/modules/events/event_dynamic.dm index f1ec985b9e..ccdfd06e71 100644 --- a/code/modules/events/event_dynamic.dm +++ b/code/modules/events/event_dynamic.dm @@ -72,11 +72,10 @@ var/list/event_last_fired = list() possibleEvents[/datum/event/meteor_shower] = 20 * active_with_role["Engineer"] possibleEvents[/datum/event/blob] = 10 * active_with_role["Engineer"] - possibleEvents[/datum/event/viral_infection] = 25 + active_with_role["Medical"] * 15 if(active_with_role["Medical"] > 0) possibleEvents[/datum/event/radiation_storm] = active_with_role["Medical"] * 10 possibleEvents[/datum/event/spontaneous_appendicitis] = active_with_role["Medical"] * 10 - possibleEvents[/datum/event/viral_infection] = active_with_role["Medical"] * 20 + possibleEvents[/datum/event/viral_infection] = active_with_role["Medical"] * 10 possibleEvents[/datum/event/organ_failure] = active_with_role["Medical"] * 50 possibleEvents[/datum/event/prison_break] = active_with_role["Security"] * 50 From 0a79a21e2483690f518cf0ee0d66fdc2525c9317 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Thu, 26 Jun 2014 21:07:25 +0930 Subject: [PATCH 095/304] Fixed an oversight with RAD_ABSORB and collapsing. --- code/modules/mob/living/carbon/human/life.dm | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index a1f0865dc5..38679b903c 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -244,10 +244,11 @@ if (radiation) if (radiation > 100) radiation = 100 - Weaken(10) - if(!lying) - src << "\red You feel weak." - emote("collapse") + if(!(species.flags & RAD_ABSORB)) + Weaken(10) + if(!lying) + src << "\red You feel weak." + emote("collapse") if (radiation < 0) radiation = 0 From 9311f492b168a60341525a6fa3c350c8e5a0f0e2 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Thu, 26 Jun 2014 17:41:51 +0200 Subject: [PATCH 096/304] EVA NVGs were not supposed to leave my own environment. --- maps/tgstation2.dmm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maps/tgstation2.dmm b/maps/tgstation2.dmm index b9cea059e1..57c6bcad73 100644 --- a/maps/tgstation2.dmm +++ b/maps/tgstation2.dmm @@ -1088,7 +1088,7 @@ "auV" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/window/reinforced{dir = 8},/obj/machinery/alarm{pixel_y = 22},/obj/machinery/camera{c_tag = "Hydroponics Pasture"},/obj/structure/flora/ausbushes/grassybush,/turf/simulated/floor/grass,/area/hydroponics) "auW" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "auX" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) -"auY" = (/obj/structure/rack,/obj/item/clothing/suit/space/rig/security,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig/security,/obj/item/clothing/shoes/magboots,/obj/item/clothing/glasses/night,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva) +"auY" = (/obj/structure/rack,/obj/item/clothing/suit/space/rig/security,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig/security,/obj/item/clothing/shoes/magboots,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva) "auZ" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor,/area/hallway/primary/central) "ava" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/primary/port) "avb" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/hallway/primary/port) From 0f2ea177c9fd7caa2d42dc83a6394020dfc9e2dd Mon Sep 17 00:00:00 2001 From: mwerezak Date: Thu, 26 Jun 2014 13:30:44 -0400 Subject: [PATCH 097/304] Improves shuttle ETA calculation --- code/controllers/emergency_shuttle_controller.dm | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/code/controllers/emergency_shuttle_controller.dm b/code/controllers/emergency_shuttle_controller.dm index 2955efc7b3..5fc383c18d 100644 --- a/code/controllers/emergency_shuttle_controller.dm +++ b/code/controllers/emergency_shuttle_controller.dm @@ -149,15 +149,17 @@ var/global/datum/emergency_shuttle_controller/emergency_shuttle //returns the time left until the shuttle arrives at it's destination, in seconds /datum/emergency_shuttle_controller/proc/estimate_arrival_time() var/eta - if (isnull(shuttle.last_move_time)) - eta = launch_time + shuttle.move_time*10 - else + if (!isnull(shuttle.last_move_time)) + //if we have a last_move_time than we are in transition and can get an accurate ETA eta = shuttle.last_move_time + shuttle.move_time*10 + else + //otherwise we need to estimate the arrival time using the scheduled launch time + eta = launch_time + shuttle.move_time*10 + shuttle.warmup_time*10 return (eta - world.time)/10 //returns the time left until the shuttle launches, in seconds /datum/emergency_shuttle_controller/proc/estimate_launch_time() - return (launch_time - world.time)/10 + return (launch_time + shuttle.warmup_time*10 - world.time)/10 /datum/emergency_shuttle_controller/proc/has_eta() return (wait_for_launch || shuttle.moving_status != SHUTTLE_IDLE) @@ -189,8 +191,8 @@ var/global/datum/emergency_shuttle_controller/emergency_shuttle return 0 //not at station if (!wait_for_launch) return 0 //not going anywhere - if (shuttle.moving_status != SHUTTLE_IDLE) - return 0 //shuttle is doing stuff + if (shuttle.moving_status == SHUTTLE_INTRANSIT) + return 0 return 1 /* From 363ef7930166acccd74df33207a3e4db8bfa9d92 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Thu, 26 Jun 2014 13:58:56 -0400 Subject: [PATCH 098/304] Fixes shuttles getting stuck if the docking... ...controller they are trying to dock with has been destroyed or is not responding. --- code/modules/shuttles/shuttle.dm | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/code/modules/shuttles/shuttle.dm b/code/modules/shuttles/shuttle.dm index ebc9fe1c9d..c3e27d9b4b 100644 --- a/code/modules/shuttles/shuttle.dm +++ b/code/modules/shuttles/shuttle.dm @@ -2,6 +2,7 @@ //Shuttle controller is instantiated in master_controller.dm. //shuttle moving state defines are in setup.dm +#define DOCK_ATTEMPT_TIMEOUT 450 //how long in ticks we wait before assuming the docking controller is broken or blown up. /datum/shuttle var/warmup_time = 0 @@ -9,6 +10,8 @@ var/docking_controller_tag //tag of the controller used to coordinate docking var/datum/computer/file/embedded_program/docking/docking_controller //the controller itself. (micro-controller, not game controller) + + var/last_dock_attempt_time = 0 /datum/shuttle/proc/short_jump(var/area/origin,var/area/destination) if(moving_status != SHUTTLE_IDLE) return @@ -49,12 +52,14 @@ if (!dock_target) return + last_dock_attempt_time = world.time docking_controller.initiate_docking(dock_target) /datum/shuttle/proc/undock() if (!docking_controller) return + last_dock_attempt_time = world.time docking_controller.initiate_undocking() /datum/shuttle/proc/current_dock_target() @@ -63,6 +68,8 @@ /datum/shuttle/proc/skip_docking_checks() if (!docking_controller || !current_dock_target()) return 1 //shuttles without docking controllers or at locations without docking ports act like old-style shuttles + if (world.time > last_dock_attempt_time + DOCK_ATTEMPT_TIMEOUT) + return 1 return 0 //just moves the shuttle from A to B, if it can be moved From 93c13a06d58c47f551f89f3b3864c8b072de85a7 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Thu, 26 Jun 2014 13:59:21 -0400 Subject: [PATCH 099/304] Fixes base shuttle console requiring engine access --- code/modules/shuttles/shuttle_console.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/code/modules/shuttles/shuttle_console.dm b/code/modules/shuttles/shuttle_console.dm index d45b66fce5..550c667b10 100644 --- a/code/modules/shuttles/shuttle_console.dm +++ b/code/modules/shuttles/shuttle_console.dm @@ -2,7 +2,6 @@ name = "shuttle control console" icon = 'icons/obj/computer.dmi' icon_state = "shuttle" - req_access = list(access_engine) circuit = null var/shuttle_tag // Used to coordinate data in shuttle controller. From 84023ff1a3aa7e5853e86de0f0952250c312d793 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Thu, 26 Jun 2014 14:42:35 -0400 Subject: [PATCH 100/304] Updates secrets panel to use the new shuttle... ...datum correctly. --- code/modules/admin/admin.dm | 3 + code/modules/admin/topic.dm | 108 +++++++++++++++++++++++++++++++++--- 2 files changed, 102 insertions(+), 9 deletions(-) diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 89a4690956..e8cfce100d 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -637,6 +637,9 @@ var/global/floorIsLava = 0 Make all items look like guns
Japanese Animes Mode
Egalitarian Station Mode
+ Launch a shuttle
+ Force launch a shuttle
+ Jump a shuttle
Move a shuttle
Break all lights
Fix all lights
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 653a2a8e7f..df21a2372f 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1922,21 +1922,111 @@ message_admins("\blue [key_name_admin(usr)] used everyone is a traitor secret. Objective is [objective]", 1) log_admin("[key_name(usr)] used everyone is a traitor secret. Objective is [objective]") + if("launchshuttle") + if(!shuttle_controller) return // Something is very wrong, the shuttle controller has not been created. + + feedback_inc("admin_secrets_fun_used",1) + feedback_add_details("admin_secrets_fun_used","ShL") + + var/list/valid_shuttles = list() + for (var/shuttle_tag in shuttle_controller.shuttles) + if (istype(shuttle_controller.shuttles[shuttle_tag], /datum/shuttle/ferry)) + valid_shuttles += shuttle_tag + + var/shuttle_tag = input("Which shuttle do you want to launch?") as null|anything in valid_shuttles + + if (!shuttle_tag) + return + + var/datum/shuttle/ferry/S = shuttle_controller.shuttles[shuttle_tag] + if (S.can_launch()) + S.launch(usr) + message_admins("\blue [key_name_admin(usr)] launched the [shuttle_tag] shuttle", 1) + log_admin("[key_name(usr)] launched the [shuttle_tag] shuttle") + else + alert("The [shuttle_tag] shuttle cannot be launched at this time. It's probably busy.") + + if("forcelaunchshuttle") + if(!shuttle_controller) return // Something is very wrong, the shuttle controller has not been created. + + feedback_inc("admin_secrets_fun_used",1) + feedback_add_details("admin_secrets_fun_used","ShFL") + + var/list/valid_shuttles = list() + for (var/shuttle_tag in shuttle_controller.shuttles) + if (istype(shuttle_controller.shuttles[shuttle_tag], /datum/shuttle/ferry)) + valid_shuttles += shuttle_tag + + var/shuttle_tag = input("Which shuttle's launch do you want to force?") as null|anything in valid_shuttles + + if (!shuttle_tag) + return + + var/datum/shuttle/ferry/S = shuttle_controller.shuttles[shuttle_tag] + if (S.can_force()) + S.force_launch(usr) + message_admins("\blue [key_name_admin(usr)] has forced the [shuttle_tag] shuttle launch", 1) + log_admin("[key_name(usr)] has forced the [shuttle_tag] shuttle launch") + else + alert("The [shuttle_tag] shuttle launch cannot be forced at this time. It's busy, or hasn't been launched yet.") + + if("jumpshuttle") + if(!shuttle_controller) return // Something is very wrong, the shuttle controller has not been created. + + feedback_inc("admin_secrets_fun_used",1) + feedback_add_details("admin_secrets_fun_used","ShJ") + + var/shuttle_tag = input("Which shuttle do you want to jump?") as null|anything in shuttle_controller.shuttles + if (!shuttle_tag) return + + var/datum/shuttle/S = shuttle_controller.shuttles[shuttle_tag] + + var/origin_area = input("Which area is the shuttle at now? (MAKE SURE THIS IS CORRECT OR THINGS WILL BREAK)") as null|area in world + if (!origin_area) return + + var/destination_area = input("Which area is the shuttle at now? (MAKE SURE THIS IS CORRECT OR THINGS WILL BREAK)") as null|area in world + if (!destination_area) return + + var/long_jump = alert("Is there a transition area for this jump?","", "Yes", "No") + if (long_jump == "Yes") + var/transition_area = input("Which area is the transition area? (MAKE SURE THIS IS CORRECT OR THINGS WILL BREAK)") as null|area in world + if (!transition_area) return + + var/move_duration = input("How many seconds will this jump take?") as num + + S.long_jump(origin_area, destination_area, transition_area, move_duration) + message_admins("\blue [key_name_admin(usr)] has initiated a jump from [origin_area] to [destination_area] lasting [move_duration] seconds for the [shuttle_tag] shuttle", 1) + log_admin("[key_name_admin(usr)] has initiated a jump from [origin_area] to [destination_area] lasting [move_duration] seconds for the [shuttle_tag] shuttle") + else + S.short_jump(origin_area, destination_area) + message_admins("\blue [key_name_admin(usr)] has initiated a jump from [origin_area] to [destination_area] for the [shuttle_tag] shuttle", 1) + log_admin("[key_name_admin(usr)] has initiated a jump from [origin_area] to [destination_area] for the [shuttle_tag] shuttle") + if("moveshuttle") if(!shuttle_controller) return // Something is very wrong, the shuttle controller has not been created. feedback_inc("admin_secrets_fun_used",1) - feedback_add_details("admin_secrets_fun_used","ShA") + feedback_add_details("admin_secrets_fun_used","ShM") + + var/confirm = alert("This command directly moves a shuttle from one area to another. DO NOT USE THIS UNLESS YOU ARE DEBUGGING A SHUTTLE AND YOU KNOW WHAT YOU ARE DOING.", "Are you sure?", "Ok", "Cancel") + if (confirm == "Cancel") + return - var/shuttle_tag = input("Which shuttle do you want to call?") as null|anything in shuttle_controller.shuttles - - if(shuttle_tag) - var/datum/shuttle/S = shuttle_controller.shuttles[shuttle_tag] - if(istype(S) && S.moving_status == 0) - S.move() - message_admins("\blue [key_name_admin(usr)] moved the [shuttle_tag] shuttle", 1) - log_admin("[key_name(usr)] moved the [shuttle_tag] shuttle") + var/shuttle_tag = input("Which shuttle do you want to jump?") as null|anything in shuttle_controller.shuttles + if (!shuttle_tag) return + + var/datum/shuttle/S = shuttle_controller.shuttles[shuttle_tag] + + var/origin_area = input("Which area is the shuttle at now? (MAKE SURE THIS IS CORRECT OR THINGS WILL BREAK)") as null|area in world + if (!origin_area) return + + var/destination_area = input("Which area is the shuttle at now? (MAKE SURE THIS IS CORRECT OR THINGS WILL BREAK)") as null|area in world + if (!destination_area) return + + S.move(origin_area, destination_area) + message_admins("\blue [key_name_admin(usr)] moved the [shuttle_tag] shuttle", 1) + log_admin("[key_name(usr)] moved the [shuttle_tag] shuttle") if("togglebombcap") feedback_inc("admin_secrets_fun_used",1) From deb1e1007cdb84f9828959556e55cb51bb89fe6a Mon Sep 17 00:00:00 2001 From: mwerezak Date: Thu, 26 Jun 2014 17:21:45 -0400 Subject: [PATCH 101/304] Fixes ERT shuttle not announcing a cancelled... ...launch if the launch is cancelled after the countdown is completed. --- code/modules/shuttles/shuttle_specops.dm | 37 +++++++++++++++--------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/code/modules/shuttles/shuttle_specops.dm b/code/modules/shuttles/shuttle_specops.dm index 70742a18de..9bad8d0cb4 100644 --- a/code/modules/shuttles/shuttle_specops.dm +++ b/code/modules/shuttles/shuttle_specops.dm @@ -35,19 +35,22 @@ if(announcer) announcer.autosay(message, "A.L.I.C.E.", "Response Team") -/datum/shuttle/ferry/multidock/specops/launch(var/obj/machinery/computer/shuttle_control/user) +/datum/shuttle/ferry/multidock/specops/launch(var/user) if (!can_launch()) return - if(world.time <= reset_time) - user.visible_message("\blue Central Command will not allow the Special Operations shuttle to launch yet.") - if (((world.time - reset_time)/10) > 60) - user.visible_message("\blue [-((world.time - reset_time)/10)/60] minutes remain!") - else - user.visible_message("\blue [-(world.time - reset_time)/10] seconds remain!") - return + if (istype(user, /obj/machinery/computer)) + var/obj/machinery/computer/C = user + + if(world.time <= reset_time) + C.visible_message("\blue Central Command will not allow the Special Operations shuttle to launch yet.") + if (((world.time - reset_time)/10) > 60) + C.visible_message("\blue [-((world.time - reset_time)/10)/60] minutes remain!") + else + C.visible_message("\blue [-(world.time - reset_time)/10] seconds remain!") + return - user.visible_message("\blue The Special Operations shuttle will depart in [(specops_countdown_time/10)] seconds.") + C.visible_message("\blue The Special Operations shuttle will depart in [(specops_countdown_time/10)] seconds.") if (location) //returning radio_announce("THE SPECIAL OPERATIONS SHUTTLE IS PREPARING TO RETURN") @@ -55,10 +58,6 @@ radio_announce("THE SPECIAL OPERATIONS SHUTTLE IS PREPARING FOR LAUNCH") sleep_until_launch() - if (cancel_countdown) - radio_announce("ALERT: LAUNCH SEQUENCE ABORTED") - user.visible_message("\red Launch sequence aborted.") - return //launch radio_announce("ALERT: INITIATING LAUNCH SEQUENCE") @@ -79,8 +78,17 @@ reset_time = world.time + specops_return_delay //set the timeout /datum/shuttle/ferry/multidock/specops/cancel_launch() - ..() + if (!can_cancel()) + return + cancel_countdown = 1 + radio_announce("ALERT: LAUNCH SEQUENCE ABORTED") + if (istype(in_use, /obj/machinery/computer)) + var/obj/machinery/computer/C = in_use + C.visible_message("\red Launch sequence aborted.") + + ..() + /datum/shuttle/ferry/multidock/specops/can_launch() @@ -120,6 +128,7 @@ //Should call all the numbers but lag could mean some issues. Oh well. Not much I can do about that. sleep(5) + launch_prep = 0 From 363df869e26ae0192c776908df486118443a376c Mon Sep 17 00:00:00 2001 From: mwerezak Date: Thu, 26 Jun 2014 19:01:17 -0400 Subject: [PATCH 102/304] Improves the fix for shuttles being stuck if... ... the docking controller is destroyed. --- code/controllers/shuttle_controller.dm | 2 +- code/modules/shuttles/shuttle.dm | 11 +++-------- code/modules/shuttles/shuttle_ferry.dm | 15 +++++++++------ 3 files changed, 13 insertions(+), 15 deletions(-) diff --git a/code/controllers/shuttle_controller.dm b/code/controllers/shuttle_controller.dm index 98b77823d9..4aa3f0e324 100644 --- a/code/controllers/shuttle_controller.dm +++ b/code/controllers/shuttle_controller.dm @@ -9,7 +9,7 @@ var/global/datum/shuttle_controller/shuttle_controller /datum/shuttle_controller/proc/process() //process ferry shuttles for (var/datum/shuttle/ferry/shuttle in process_shuttles) - if (shuttle.in_use) + if (shuttle.process_state) shuttle.process() diff --git a/code/modules/shuttles/shuttle.dm b/code/modules/shuttles/shuttle.dm index c3e27d9b4b..db215c26b5 100644 --- a/code/modules/shuttles/shuttle.dm +++ b/code/modules/shuttles/shuttle.dm @@ -2,7 +2,6 @@ //Shuttle controller is instantiated in master_controller.dm. //shuttle moving state defines are in setup.dm -#define DOCK_ATTEMPT_TIMEOUT 450 //how long in ticks we wait before assuming the docking controller is broken or blown up. /datum/shuttle var/warmup_time = 0 @@ -10,8 +9,6 @@ var/docking_controller_tag //tag of the controller used to coordinate docking var/datum/computer/file/embedded_program/docking/docking_controller //the controller itself. (micro-controller, not game controller) - - var/last_dock_attempt_time = 0 /datum/shuttle/proc/short_jump(var/area/origin,var/area/destination) if(moving_status != SHUTTLE_IDLE) return @@ -52,14 +49,11 @@ if (!dock_target) return - last_dock_attempt_time = world.time docking_controller.initiate_docking(dock_target) /datum/shuttle/proc/undock() if (!docking_controller) return - - last_dock_attempt_time = world.time docking_controller.initiate_undocking() /datum/shuttle/proc/current_dock_target() @@ -68,8 +62,6 @@ /datum/shuttle/proc/skip_docking_checks() if (!docking_controller || !current_dock_target()) return 1 //shuttles without docking controllers or at locations without docking ports act like old-style shuttles - if (world.time > last_dock_attempt_time + DOCK_ATTEMPT_TIMEOUT) - return 1 return 0 //just moves the shuttle from A to B, if it can be moved @@ -83,6 +75,9 @@ if(origin == destination) //world << "cancelling move, shuttle will overlap." return + + if (docking_controller && !docking_controller.undocked()) + docking_controller.force_undock() moving_status = SHUTTLE_INTRANSIT diff --git a/code/modules/shuttles/shuttle_ferry.dm b/code/modules/shuttles/shuttle_ferry.dm index e37ba86e37..e2ea397e01 100644 --- a/code/modules/shuttles/shuttle_ferry.dm +++ b/code/modules/shuttles/shuttle_ferry.dm @@ -3,6 +3,7 @@ #define WAIT_ARRIVE 2 #define WAIT_FINISH 3 +#define DOCK_ATTEMPT_TIMEOUT 450 //how long in ticks we wait before assuming the docking controller is broken or blown up. /datum/shuttle/ferry var/location = 0 //0 = at area_station, 1 = at area_offsite @@ -20,6 +21,8 @@ //TODO: change location to a string and use a mapping for area and dock targets. var/dock_target_station var/dock_target_offsite + + var/last_dock_attempt_time = 0 /datum/shuttle/ferry/short_jump(var/area/origin,var/area/destination) if(isnull(location)) @@ -47,16 +50,16 @@ ..(departing, destination, interim, travel_time, direction) /datum/shuttle/ferry/move(var/area/origin,var/area/destination) - - if (docking_controller && !docking_controller.undocked()) - docking_controller.force_undock() - ..(origin, destination) if (destination == area_station) location = 0 if (destination == area_offsite) location = 1 //if this is a long_jump retain the location we were last at until we get to the new one +/datum/shuttle/ferry/dock() + ..() + last_dock_attempt_time = world.time + /datum/shuttle/ferry/proc/get_location_area(location_id = null) if (isnull(location_id)) location_id = location @@ -80,11 +83,11 @@ if (WAIT_ARRIVE) if (moving_status == SHUTTLE_IDLE) dock() + in_use = null //release lock process_state = WAIT_FINISH if (WAIT_FINISH) - if (skip_docking_checks() || docking_controller.docked()) + if (skip_docking_checks() || docking_controller.docked() || world.time > last_dock_attempt_time + DOCK_ATTEMPT_TIMEOUT) process_state = IDLE_STATE - in_use = null //release lock arrived() /datum/shuttle/ferry/current_dock_target() From 7ae03d127b714b9f248c69c2ad34450ec9b7a553 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Thu, 26 Jun 2014 20:48:07 -0400 Subject: [PATCH 103/304] Fixes macro escape slashes Derp. --- code/controllers/shuttle_controller.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/controllers/shuttle_controller.dm b/code/controllers/shuttle_controller.dm index 4aa3f0e324..d0b3569fc6 100644 --- a/code/controllers/shuttle_controller.dm +++ b/code/controllers/shuttle_controller.dm @@ -291,7 +291,7 @@ var/global/datum/shuttle_controller/shuttle_controller var/dat = "" for (var/dock_tag in dock_controller_map + dock_controller_map_station + dock_controller_map_offsite) dat += "\"[dock_tag]\", " - world << "/red /b warning: shuttles with docking tags [dat] could not find their controllers!" + world << "\red \b warning: shuttles with docking tags [dat] could not find their controllers!" //makes all shuttles docked to something at round start go into the docked state for (var/shuttle_tag in shuttles) From dda6ef82bd8e0033888187aecc6d9ef0806d9158 Mon Sep 17 00:00:00 2001 From: Jarcolr Date: Fri, 27 Jun 2014 10:22:05 +0300 Subject: [PATCH 104/304] Psych bed >> Freudian couch Vetinarix kept the icon_state name when the Medbay Renovation PR thing got in. Malsquando wanted this changed. --- code/game/objects/structures/stool_bed_chair_nest/bed.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/structures/stool_bed_chair_nest/bed.dm b/code/game/objects/structures/stool_bed_chair_nest/bed.dm index 4f3112cb35..851716688d 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/bed.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/bed.dm @@ -14,7 +14,7 @@ var/mob/living/buckled_mob /obj/structure/stool/bed/psych - name = "psych bed" + name = "freudian couch" desc = "For prime comfort during psychiatric evaluations." icon_state = "psychbed" From 1ba345ca8c8f4729cfdd2423af7da8531eddc021 Mon Sep 17 00:00:00 2001 From: Ccomp5950 Date: Fri, 27 Jun 2014 02:29:45 -0500 Subject: [PATCH 105/304] Teacup icon clipping fix. Might need to be done to coffee as well. Thanks Serveris6 for the report: http://prntscr.com/3wyah5 --- code/modules/reagents/reagent_containers/food/drinks.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/reagents/reagent_containers/food/drinks.dm b/code/modules/reagents/reagent_containers/food/drinks.dm index d09acc8e15..4117defbbd 100644 --- a/code/modules/reagents/reagent_containers/food/drinks.dm +++ b/code/modules/reagents/reagent_containers/food/drinks.dm @@ -219,7 +219,7 @@ ..() reagents.add_reagent("tea", 30) src.pixel_x = rand(-10.0, 10) - src.pixel_y = rand(-10.0, 10) + src.pixel_y = rand(0, 20) // the teacup is very low on the 32x32 grid so if it's -y then it clips into the tile below it. /obj/item/weapon/reagent_containers/food/drinks/ice name = "Ice Cup" @@ -310,4 +310,4 @@ name = "cup" desc = "A cup with the British flag emblazoned on it." icon_state = "britcup" - volume = 30 \ No newline at end of file + volume = 30 From 596b71a4ff3b10e56d93718b7ed715c243e31777 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Fri, 27 Jun 2014 11:12:09 +0200 Subject: [PATCH 106/304] Adds support to better handle air alarms in sensitive areas and vents with custom settings. Air alarms now have a new setting, breach_detection, which allows for disabling the automatic mode change when a breach occurs. Vents now have three new settings. These are primarily for when air alarms request a mode change to ensure that custom pressure levels/checks (in terms of mapping, not set later in game) are not lost. external_pressure_bound_default internal_pressure_bound_default checks_default --- .../components/unary/vent_pump.dm | 49 +++++++++++++------ code/game/machinery/alarm.dm | 20 ++++---- 2 files changed, 46 insertions(+), 23 deletions(-) diff --git a/code/ATMOSPHERICS/components/unary/vent_pump.dm b/code/ATMOSPHERICS/components/unary/vent_pump.dm index 1550eb7ae9..b80b317d46 100644 --- a/code/ATMOSPHERICS/components/unary/vent_pump.dm +++ b/code/ATMOSPHERICS/components/unary/vent_pump.dm @@ -1,3 +1,8 @@ +#define EXTERNAL_PRESSURE_BOUND ONE_ATMOSPHERE +#define INTERNAL_PRESSURE_BOUND 0 +#define PRESSURE_CHECKS 1 +#undefine + /obj/machinery/atmospherics/unary/vent_pump icon = 'icons/obj/atmospherics/vent_pump.dmi' icon_state = "off" @@ -14,14 +19,19 @@ var/on = 0 var/pump_direction = 1 //0 = siphoning, 1 = releasing - var/external_pressure_bound = ONE_ATMOSPHERE - var/internal_pressure_bound = 0 + var/external_pressure_bound = EXTERNAL_PRESSURE_BOUND + var/internal_pressure_bound = INTERNAL_PRESSURE_BOUND - var/pressure_checks = 1 + var/pressure_checks = PRESSURE_CHECKS //1: Do not pass external_pressure_bound //2: Do not pass internal_pressure_bound //3: Do not pass either + // Used when handling incoming radio signals requesting default settings + var/external_pressure_bound_default = EXTERNAL_PRESSURE_BOUND + var/internal_pressure_bound_default = INTERNAL_PRESSURE_BOUND + var/pressure_checks_default = PRESSURE_CHECKS + var/welded = 0 // Added for aliens -- TLE var/frequency = 1439 @@ -205,7 +215,10 @@ on = !on if(signal.data["checks"] != null) - pressure_checks = text2num(signal.data["checks"]) + if (signal.data["set_internal_pressure"] == "default") + pressure_checks = pressure_checks_default + else + pressure_checks = text2num(signal.data["checks"]) if(signal.data["checks_toggle"] != null) pressure_checks = (pressure_checks?0:3) @@ -214,18 +227,24 @@ pump_direction = text2num(signal.data["direction"]) if(signal.data["set_internal_pressure"] != null) - internal_pressure_bound = between( - 0, - text2num(signal.data["set_internal_pressure"]), - ONE_ATMOSPHERE*50 - ) + if (signal.data["set_internal_pressure"] == "default") + internal_pressure_bound = internal_pressure_bound_default + else + internal_pressure_bound = between( + 0, + text2num(signal.data["set_internal_pressure"]), + ONE_ATMOSPHERE*50 + ) if(signal.data["set_external_pressure"] != null) - external_pressure_bound = between( - 0, - text2num(signal.data["set_external_pressure"]), - ONE_ATMOSPHERE*50 - ) + if (signal.data["set_external_pressure"] == "default") + external_pressure_bound = external_pressure_bound_default + else + external_pressure_bound = between( + 0, + text2num(signal.data["set_external_pressure"]), + ONE_ATMOSPHERE*50 + ) if(signal.data["adjust_internal_pressure"] != null) internal_pressure_bound = between( @@ -235,6 +254,8 @@ ) if(signal.data["adjust_external_pressure"] != null) + + external_pressure_bound = between( 0, external_pressure_bound + text2num(signal.data["adjust_external_pressure"]), diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm index c788dc6430..522882577d 100644 --- a/code/game/machinery/alarm.dm +++ b/code/game/machinery/alarm.dm @@ -71,6 +71,7 @@ active_power_usage = 8 power_channel = ENVIRON req_one_access = list(access_atmospherics, access_engine_equip) + var/breach_detection = 1 // Whether to use automatic breach detection or not var/frequency = 1439 //var/skipprocess = 0 //Experimenting var/alarm_frequency = 1437 @@ -276,17 +277,20 @@ if(!istype(location)) return 0 - + + if(breach_detection == 0) + return 0 + var/datum/gas_mixture/environment = location.return_air() var/environment_pressure = environment.return_pressure() var/pressure_levels = TLV["pressure"] - + if (environment_pressure <= pressure_levels[1]) //low pressures if (!(mode == AALARM_MODE_PANIC || mode == AALARM_MODE_CYCLE)) return 1 - + return 0 - + /obj/machinery/alarm/proc/master_is_operating() return alarm_area.master_air_alarm && !(alarm_area.master_air_alarm.stat & (NOPOWER|BROKEN)) @@ -397,14 +401,12 @@ return 1 /obj/machinery/alarm/proc/apply_mode() - var/current_pressures = TLV["pressure"] - var/target_pressure = (current_pressures[2] + current_pressures[3])/2 switch(mode) if(AALARM_MODE_SCRUBBING) for(var/device_id in alarm_area.air_scrub_names) send_signal(device_id, list("power"= 1, "co2_scrub"= 1, "scrubbing"= 1, "panic_siphon"= 0) ) for(var/device_id in alarm_area.air_vent_names) - send_signal(device_id, list("power"= 1, "checks"= 1, "set_external_pressure"= target_pressure) ) + send_signal(device_id, list("power"= 1, "checks"= "default", "set_external_pressure"= "default") ) if(AALARM_MODE_PANIC, AALARM_MODE_CYCLE) for(var/device_id in alarm_area.air_scrub_names) @@ -416,13 +418,13 @@ for(var/device_id in alarm_area.air_scrub_names) send_signal(device_id, list("power"= 1, "panic_siphon"= 1) ) for(var/device_id in alarm_area.air_vent_names) - send_signal(device_id, list("power"= 1, "checks"= 1, "set_external_pressure"= target_pressure) ) + send_signal(device_id, list("power"= 1, "checks"= "default", "set_external_pressure"= "default") ) if(AALARM_MODE_FILL) for(var/device_id in alarm_area.air_scrub_names) send_signal(device_id, list("power"= 0) ) for(var/device_id in alarm_area.air_vent_names) - send_signal(device_id, list("power"= 1, "checks"= 1, "set_external_pressure"= target_pressure) ) + send_signal(device_id, list("power"= 1, "checks"= "default", "set_external_pressure"= "default") ) if(AALARM_MODE_OFF) for(var/device_id in alarm_area.air_scrub_names) From 078bff85be214e4ff99114b1c692e15ad261c994 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Fri, 27 Jun 2014 11:17:06 +0200 Subject: [PATCH 107/304] Map changes relevant to the air alarm and vent update. The engine air alarm no longer automatically turns off in the case of a breach. The engine core vents now have defaults set, to ensure their custom pressure levels/checks are not lost in case of air alarm mode changes. --- maps/tgstation2.dmm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/maps/tgstation2.dmm b/maps/tgstation2.dmm index 8e2eedc835..9949b04a68 100644 --- a/maps/tgstation2.dmm +++ b/maps/tgstation2.dmm @@ -5395,7 +5395,7 @@ "bZM" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/research{name = "Genetics Research"; req_access_txt = "9"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bZN" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "bot"},/area/medical/research{name = "Research Division"}) "bZO" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "whiteblue"},/area/medical/research{name = "Research Division"}) -"bZP" = (/obj/machinery/meter,/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/floor/plating,/area/engine/engine_room) +"bZP" = (/obj/machinery/meter,/obj/machinery/alarm{breach_detection = 0; frequency = 1439; pixel_y = 23},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/floor/plating,/area/engine/engine_room) "bZQ" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/floor/plating,/area/engine/engine_room) "bZR" = (/obj/machinery/door_control{desc = "A remote control-switch for opening the engines blast doors."; id = "EngineEmitter"; name = "Engine Charging Port"; pixel_x = -5; pixel_y = 25; req_access_txt = "10"},/obj/machinery/door_control{desc = "A remote control-switch for the engine control room blast doors."; id = "EngineBlast"; name = "Engine Room Blast Doors"; pixel_x = 5; pixel_y = 25; req_access_txt = "10"},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/floor/plating,/area/engine/engine_room) "bZS" = (/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (SOUTHWEST)"; icon_state = "intact"; dir = 10},/turf/simulated/floor/plating,/area/engine/engine_room) @@ -7036,7 +7036,7 @@ "cFp" = (/obj/item/weapon/weldingtool,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) "cFq" = (/obj/machinery/door/window{dir = 1; name = "Secure Storage"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) "cFr" = (/obj/item/weapon/crowbar,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) -"cFs" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 140; icon_state = "out"; on = 1; pressure_checks = 0},/turf/simulated/floor/plating{dir = 1; icon_state = "warnplatecorner"},/area/engine/engine_room) +"cFs" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 4000; external_pressure_bound_default = 4000; icon_state = "in"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplatecorner"},/area/engine/engine_room) "cFt" = (/obj/machinery/door/poddoor{id = "smindicate"; name = "Outer Airlock"},/turf/simulated/shuttle/plating,/area/syndicate_station/start) "cFu" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/obj/structure/flora/bush,/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"; dir = 8},/area/syndicate_mothership) "cFv" = (/obj/machinery/telecomms/allinone{intercept = 1},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) @@ -7207,7 +7207,7 @@ "cIE" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{name = "plating"},/area/centcom/living) "cIF" = (/turf/simulated/shuttle/wall{icon_state = "swall7"; dir = 2},/area/supply/dock) "cIG" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/engine/engine_room) -"cIH" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 4000; icon_state = "in"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplatecorner"},/area/engine/engine_room) +"cIH" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 140; external_pressure_bound_default = 140; icon_state = "out"; on = 1; pressure_checks = 0; pressure_checks_default = 0},/turf/simulated/floor/plating{dir = 1; icon_state = "warnplatecorner"},/area/engine/engine_room) "cII" = (/turf/simulated/shuttle/wall{icon_state = "swall11"; dir = 2},/area/supply/dock) "cIJ" = (/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/centcom/living) "cIK" = (/obj/machinery/door/airlock/centcom{name = "Living Quarters"; opacity = 1; req_access_txt = "105"},/turf/unsimulated/floor{icon_state = "delivery"},/area/centcom/living) @@ -10828,7 +10828,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvctvctvctvctvctvctvctvctvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalPaafcfWchecfYaaacfWchecfYaafcfWchecfYaafaaaaaaaafaafcaqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabGDbGibZjcaHcaIcaLbZBcaJcaKcaucatbZHcascascaFcavcancaGbZjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacmdcmdcmdcmdcmdcmdcmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvaaactvctvctvctvctvaaactvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaacfWchecfYaafcfWchecfYaaacfWchecfYaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabGDbGibZjcRQcaIcTocSfcRfcRfcRicRfcRecRfcRfcROdTMdTNcRdbZjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacmdcmdcmdcmdcmdcmdcmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvaaactvctvctvctvctvaaactvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQalQalPaafaaacfWchecfYaafcfWchecfYaaacfWchecfYaafaaaaaaaaaaaaaafaafcjMcjNcjNcjNcjNbGDcoTctictictjbGDbGibZjcPScPDcPVbZjbZjbZjcQHcQJcQNbZjbZjbZjcRbcRccPWbZjaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacmdcmdcmdcmdcmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaafaaaaafaafckAaafaafaafckAaafaaaaafckAaafaaaaaaaaaaaaaaackBckCckDckEckFcPBcPqcPdcPacOXbJkbJkdgqdgpbZjcOWbZCcvGcttcvEcIGcIHcOLcFscIGctscttcyVbZCcFabZjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaafaaaaafaafckAaafaafaafckAaafaaaaafckAaafaaaaaaaaaaaaaaackBckCckDckEckFcPBcPqcPdcPacOXbJkbJkdgqdgpbZjcOWbZCcvGcttcvEcIGcFscOLcIHcIGctscttcyVbZCcFabZjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalPaafcltclucluclvclwclwclwclwclwclwclwclwclwclwclwclwclwclwcEZclydgocELcBvclCcwKclEcdqcdqcdqcdqcwJcdqdgnbZjbZCbZCcvGcttcvEcwIctpcyWcyXcwIctscttcyVbZCcyhbZjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaafaaaaafaafcmeaafaaaaafcmeaafaaaaafcmeaafaaaaaaaaaaaaaaackBckCcmfcmgcmhdcCcjNccpcbybJkbJkctuctucvubZjbZCbZCcvFcttcvEctoctpctqctmctoctscttctrbZCbZCbZjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQalQalPaafaafcfWcmLcfYaaacfWcmLcfYaaacfWcmLcfYaafaaaaaaaaaaaaaafaafcmMcjNcjNcjNcjNbGDcoTctictictjbGDbGDbZjbZjctkbZjbZjbZjbZjbZjctlbZjbZjbZjbZjbZjctkbZjbZjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From 972bbac0335f6bc4f1b61ccb8967f8a6b7dda70c Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Fri, 27 Jun 2014 21:24:01 +0200 Subject: [PATCH 108/304] AI now handles EMP-stun like other creatures do in their life.dm file Previously AI would be stunned indefinitely after being hit with an EMP-blast. This would prevent emergency shutters from being operated. The stun status is now adjusted down in the Life()-proc like is done in the base living.dm, which the AI living.dm does not ..() call. --- code/modules/mob/living/silicon/ai/life.dm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/code/modules/mob/living/silicon/ai/life.dm b/code/modules/mob/living/silicon/ai/life.dm index c2b6e6e189..17f273e966 100644 --- a/code/modules/mob/living/silicon/ai/life.dm +++ b/code/modules/mob/living/silicon/ai/life.dm @@ -35,6 +35,10 @@ // Gain Power adjustOxyLoss(-1) + // Handle EMP-stun + if(stunned) + AdjustStunned(-1) + //stage = 1 //if (istype(src, /mob/living/silicon/ai)) // Are we not sure what we are? var/blind = 0 From 14818b312a21d766dc91aecf765bbca747521ca5 Mon Sep 17 00:00:00 2001 From: Jarcolr Date: Fri, 27 Jun 2014 22:38:57 +0300 Subject: [PATCH 109/304] Psychiatrists couch --- code/game/objects/structures/stool_bed_chair_nest/bed.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/structures/stool_bed_chair_nest/bed.dm b/code/game/objects/structures/stool_bed_chair_nest/bed.dm index 851716688d..5b9a86c8ed 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/bed.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/bed.dm @@ -14,7 +14,7 @@ var/mob/living/buckled_mob /obj/structure/stool/bed/psych - name = "freudian couch" + name = "psychiatrists couch" desc = "For prime comfort during psychiatric evaluations." icon_state = "psychbed" From 478e2a4eab3ae3fb50c7a51ec4e795f3f2d18d80 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Fri, 27 Jun 2014 22:57:14 +0200 Subject: [PATCH 110/304] Camera relocation - part 2. Based on PR to dev. Adjusts a camera in research to reveal the entire main entrance. Adjusts camera on the main mining station to allow seeing both sides of the bridge. Adjusts camera in virology quarantine. --- maps/tgstation2.dmm | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/maps/tgstation2.dmm b/maps/tgstation2.dmm index 57c6bcad73..d90fa5f598 100644 --- a/maps/tgstation2.dmm +++ b/maps/tgstation2.dmm @@ -144,7 +144,7 @@ "acN" = (/obj/structure/table/reinforced,/obj/machinery/recharger{pixel_y = 0},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/security/range) "acO" = (/obj/structure/table/reinforced,/obj/item/weapon/gun/energy/laser/practice,/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/item/weapon/paper{info = "Directions:
First you'll want to make sure there is a target stake in the center of the magnetic platform. Next, take an aluminum target from the crates back there and slip it into the stake. Make sure it clicks! Next, there should be a control console mounted on the wall somewhere in the room.

This control console dictates the behaviors of the magnetic platform, which can move your firing target around to simulate real-world combat situations. From here, you can turn off the magnets or adjust their electromagnetic levels and magnetic fields. The electricity level dictates the strength of the pull - you will usually want this to be the same value as the speed. The magnetic field level dictates how far the magnetic pull reaches.

Speed and path are the next two settings. Speed is associated with how fast the machine loops through the designated path. Paths dictate where the magnetic field will be centered at what times. There should be a pre-fabricated path input already. You can enable moving to observe how the path affects the way the stake moves. To script your own path, look at the following key:


N: North
S: South
E: East
W: West
C: Center
R: Random (results may vary)
; or &: separators. They are not necessary but can make the path string better visible."; name = "Firing Range Instructions"},/turf/simulated/floor,/area/security/range) "acP" = (/obj/machinery/door/window/eastleft,/turf/simulated/floor{icon_state = "freezerfloor"},/area/security/main) -"acQ" = (/obj/structure/closet/wardrobe/tactical,/obj/item/clothing/glasses/night,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/tactical) +"acQ" = (/obj/structure/closet/wardrobe/tactical,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/tactical) "acR" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor{icon_state = "bar"},/area/security/main) "acS" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/security/brig) "acT" = (/turf/simulated/wall/r_wall,/area) @@ -3910,7 +3910,7 @@ "bxj" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/snacks/chips,/turf/simulated/floor/carpet,/area/engine/break_room) "bxk" = (/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/asmaint2) "bxl" = (/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/asmaint) -"bxm" = (/obj/machinery/camera{c_tag = "Research Division North"; dir = 1; network = list("SS13","Research")},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) +"bxm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/camera{c_tag = "Research Division North"; dir = 1; network = list("SS13","Research")},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bxn" = (/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock East"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bxo" = (/obj/machinery/door/window/eastright{base_state = "left"; dir = 8; icon_state = "left"; name = "Research Division Delivery"; req_access_txt = "47"},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/turf/simulated/floor{icon_state = "delivery"},/area/medical/research{name = "Research Division"}) "bxp" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=8"; freq = 1400; location = "Research Division"},/obj/structure/plasticflaps{opacity = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor{icon_state = "bot"},/area/medical/research{name = "Research Division"}) @@ -6377,7 +6377,7 @@ "csG" = (/obj/machinery/door/airlock/glass_engineering{name = "Engineering Monitoring Room"; req_access_txt = "11"},/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.4; name = "Engineering Firelock"},/turf/simulated/floor,/area/engine/engineering_monitoring) "csH" = (/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area/engine/engineering_monitoring) "csI" = (/obj/machinery/light_construct,/obj/structure/rack,/obj/item/clothing/suit/storage/hazardvest,/obj/item/device/flashlight,/turf/simulated/floor,/area/construction) -"csJ" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/camera{c_tag = "Virology Break/Access"; dir = 8; network = list("SS13")},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) +"csJ" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "csK" = (/obj/structure/table,/obj/item/weapon/storage/box/lights/mixed,/obj/item/weapon/cable_coil,/obj/item/weapon/cable_coil{pixel_x = 3; pixel_y = 3},/turf/simulated/floor/plating,/area/construction) "csL" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/obj/structure/lattice,/turf/space,/area) "csM" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/rig/atmos,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig/atmos,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/northleft{name = "Atmospherics Hardsuits"; req_access_txt = "24"},/turf/simulated/floor,/area/engine/engine_eva) @@ -8514,6 +8514,7 @@ "dhL" = (/turf/simulated/floor/plating,/area/derelict/bridge) "dhM" = (/obj/structure/table,/obj/item/weapon/paper/crumpled,/turf/simulated/floor,/area/derelict/bridge) "dhN" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor,/area/derelict/bridge) +"dhO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/camera{c_tag = "Virology Break/Access"; dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "dhP" = (/obj/structure/window/reinforced,/turf/simulated/floor/airless{icon_state = "damaged5"},/area/derelict/singularity_engine) "dhQ" = (/obj/structure/window/reinforced,/turf/simulated/floor/airless{icon_state = "damaged4"},/area/derelict/singularity_engine) "dhR" = (/obj/structure/window/reinforced,/obj/item/weapon/table_parts/reinforced,/obj/item/weapon/table_parts/reinforced,/turf/simulated/floor/airless{icon_state = "damaged4"},/area/derelict/singularity_engine) @@ -9367,6 +9368,7 @@ "dyh" = (/obj/structure/sign/science,/turf/simulated/wall,/area/research_outpost/entry) "dyi" = (/obj/machinery/door/airlock/glass_research{name = "Outpost Primary Access"; req_access_txt = "65"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor,/area/research_outpost/entry) "dyj" = (/obj/machinery/door/airlock/glass_research{name = "Outpost Primary Access"; req_access_txt = "65"},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor,/area/research_outpost/entry) +"dyk" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/mining{name = "Mining Station Storage"; req_access_txt = "48"},/turf/space,/area/mine/living_quarters) "dyl" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) "dym" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/wood,/area/research_outpost/hallway) "dyn" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "whiteyellow"},/area/research_outpost/hallway) @@ -9394,6 +9396,7 @@ "dyJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/transit_tube{icon_state = "N-S"},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry) "dyK" = (/obj/machinery/computer/research_shuttle,/turf/simulated/floor{icon_state = "bot"},/area/research_outpost/entry) "dyL" = (/turf/simulated/floor,/area/research_outpost/entry) +"dyM" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/obj/machinery/camera{c_tag = "Crew Area Hallway"; network = list("MINE")},/turf/simulated/floor,/area/mine/living_quarters) "dyN" = (/turf/simulated/floor,/area/medical/virologyaccess) "dyO" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall/r_wall,/area/research_outpost/power) "dyP" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) @@ -9506,6 +9509,7 @@ "dAS" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor,/area/research_outpost/entry) "dAT" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/research_outpost/entry) "dAU" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor,/area/research_outpost/entry) +"dAV" = (/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/turf/simulated/floor,/area/mine/living_quarters) "dAW" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/regular,/obj/item/weapon/storage/firstaid/toxin,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/med) "dAX" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor,/area/research_outpost/entry) "dAY" = (/obj/structure/closet/emcloset,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/alarm{dir = 1; pixel_y = -25},/turf/simulated/floor{dir = 2; icon_state = "arrival"},/area/research_outpost/entry) @@ -10055,7 +10059,6 @@ "dLy" = (/obj/machinery/door/airlock{name = "Toilet"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/mine/living_quarters) "dLz" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/mine/living_quarters) "dLA" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall/r_wall,/area/research_outpost/anomaly) -"dLB" = (/obj/machinery/camera{c_tag = "Crew Area Hallway"; network = list("MINE")},/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/turf/simulated/floor,/area/mine/living_quarters) "dLC" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor,/area/mine/living_quarters) "dLD" = (/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/mine/living_quarters) "dLE" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/living_quarters) @@ -10121,7 +10124,6 @@ "dMM" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/mine/west_outpost) "dMN" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor,/area/mine/west_outpost) "dMO" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/mine/living_quarters) -"dMP" = (/obj/machinery/door/airlock/mining{name = "Mining Station Storage"; req_access_txt = "48"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/mine/living_quarters) "dMQ" = (/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor,/area/mine/eva) "dMR" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/mine/eva) "dMS" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor,/area/mine/production) @@ -10667,7 +10669,6 @@ "dXo" = (/turf/unsimulated/wall{icon_state = "phoron10"},/area/alien) "dXq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "dXr" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) -"dXs" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "dXt" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/green,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "dXu" = (/turf/unsimulated/wall{icon_state = "phoron6"},/area/alien) "dXv" = (/turf/unsimulated/wall{icon_state = "phoron2"},/area/alien) @@ -10998,7 +10999,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowbrubrvbrwbrxblpblpblpbrybrybrybryboAblpblpblpbnbbqgbqTbrzboZbrCbrDbrEbPhbcSbrFbRgbffbqnbrHbrIbrJbNNbrLbPPbrNbPObNMboMaafbrQbrRbnzbqybrSbqybnzbrTbrUbPVbPWbrWbrXbrYbaDbrZbnFbOlaUnbpcaIObNybNzbNAbNCbNDbPKbIibixbPMbPQbLDbPRbPubPSbLDbLDbPYbPUbPZbPZbQxbQpbQFbIrbQIbQHbQSbQJbQVbPZbJqbRabQWbQXbRfbRhbRbbRbbPGbsEbkBbsFbrebrebrebsGbkCbsHbhlbsIbsIbPHbNtbNEbNKbNJbNIbNHbNLbNtbmPbsPbhgaaaaaaaaaaaaaaaaafbsQbsRbrqbrrbrqbsSbMeaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowbsTbsUbsTbsVbsWblpblpblpblpblpblpboAblpbsXbalbalbsYbcSbndboCbtabtbbtcbPhbcSbcSbtdaIObqnbtebtfbtgbPrbtibtjbtkbPqbNxboMaafbrUbrUbIgbtobtpbnzbtqbOvbNgbPpbNqbtvbtvbtvbtvbtvbtvbXJawGbLTaHfaHfawGbMcbMmbLUaMzbPfbixbOUbOYbPubPvbPsbPtbOibOhbOgbNUbOybOubOkbOjbOCbOBbOAbOzbOGbOFbOEbODbNubPAbPAboDbPCbPDbPDbPDbtZbHWbkBbubbkCbkCbucbPgbkCbuebkBbufbugbORbMubMtbMCbMvbNdbMNbNtbNtbuobhgbhgbupbuqbuqbuqburbkIbrobrrbrqbrrbrrbrsbroaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaeaaaaaaaaabowbowbowbowbowbowbowbusbutbusbuublpblpblpbrybrybrybryboAblpbuvbuwbalbuxbcSbndboCbuybuzbtcbOxbuBbqfbuCbuDbuEbpcbuFbtgbuGbuHbuIbuJbOmbMfboMbOpbOobNBbOnbuRbrSbuRbOvbOwbuTbuTbNqbuUbuVbuWbuXbuYbuZbMkawGbvcaIOaIOawGbLSbMnbMrbMBbMSbMTbMUbnebMLbMPbMQbMRbNabMZbNcbNbbApbHvbMYbMWbNlbNkbNGbNobNfbNebNibNhbMjbMlbMhbMibiSbvybvzbMgbvBbvBbkBbvCbvDbvEbkBbNVbkCbvGbvHbvIbvJbOebvLbvMbOfbvObvPbvQbsIbkJbvRbvSbvTbvUbvVbvVbvVbvVbvWbvXbpObMebvYbMebpObvZaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowbwabrvbwbbwcblpblpblpblpblpblpblpboAblpbuvbwdbalbwebegbndbncbqfbwgbqfbNFbcSbrFbRdbffaIObpcbuFbtgboMbwibwjbwkbwlbMdboMbwpbwnbHhbzzbNgbNjbNmbNnbwubGIbwwbNqbGCbwybwzbwAbwBbwBbnTbBvbambdDaIRbgUbLQbLRbLNbLPbeZbixbLYbLZbLDbLXbLVbLWbFNbLDbLAbLzbDcbDcbDcbDcbDcbHfbIIbHfbAqbLJbLGbAqbAqbAqbAqbLybiSbiSbxbbxbbxbbxbbkBbkBbkBbkBbkBbMMbxebxfbxgbxhbxibMobMpbMpbMqbxmbojbxnbxobxpbvRbojbvTbxqbojbxrbojbxsbkIbupbuqburbxtbkIaaaaaaaafaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowbwabrvbwbbwcblpblpblpblpblpblpblpboAblpbuvbwdbalbwebegbndbncbqfbwgbqfbNFbcSbrFbRdbffaIObpcbuFbtgboMbwibwjbwkbwlbMdboMbwpbwnbHhbzzbNgbNjbNmbNnbwubGIbwwbNqbGCbwybwzbwAbwBbwBbnTbBvbambdDaIRbgUbLQbLRbLNbLPbeZbixbLYbLZbLDbLXbLVbLWbFNbLDbLAbLzbDcbDcbDcbDcbDcbHfbIIbHfbAqbLJbLGbAqbAqbAqbAqbLybiSbiSbxbbxbbxbbxbbkBbkBbkBbkBbkBbMMbxebxfbxgbxhbxibMobxmbMpbMqbojbojbxnbxobxpbvRbojbvTbxqbojbxrbojbxsbkIbupbuqburbxtbkIaaaaaaaafaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowbusbutbusbxubxvblpblpbxwbSRbSSbSRbSXbSRbSYbTabSTbSUbSVbzmbFnbSWbTcbTdbSVbxFbxGbRgbffaIObxHbxIbxJboMbxKbxLbxMbxNbSdbRzbXwbSfbRUaYRbSubSvbSsbStbSkbSrbSebShbybbycbycbydbyebyfbQEbtvcbPbDNbONbgUbixcbQcciccjcarcawcaWcbabPucbccbecbOcdabPucdkbWubRSceEceJceFbDccckccFccEbAqbSCbTsbRebRvbAybAqbwNbRybRBbRwbRxbRpbRpbRibRmbRpbRtbRrbRsbREbRDbRpbRCbQubSPbyPbyQbSLbySbySbySbySbySbyTbyUbyVbupburbkIbojbvVbyWbyXbyYbyZbzabzbaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowbzcbzdbzcbzebzfbzgbzgbzgbzgbzgbzhbPLblpbuvbzjbalbzkbOXbsZbwfbzoboEbRZbzqbzrbarbarbffaIObztbzubtgboMbzvbzwbzxbwjbQTboMbRGbRAbRHbOpbQwbzEbQDbuTbQvbzIbzJbNqbzKbzLbzMbzNbyebyfbQEbtvbpcbDNbNwbOHbOLbOMbOJbOKbEpbXtbXrbXsbLDbLDbLDbXubWzbLDbWybWubXqbXpbXobOSbDcbNvbVRbVQbWtbRcbQUbQKbRjbQabYcbrBbYObZMbZNbZObvMbvMbArbvMbAsbvMbOfbQqbQqbQqbQsbQrbQtbAvbAwbAxbRTbAzbAAbABbACbySbADbAEbAFaafaafbkIbAGbvVbyXbyXbvWbAHbAIbAJaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowbAKbALbAMbalbalbANbrvbrvbrvbAObalbalbAPbAQbARbalbASbASbASbRKbASbAUbRLbAWbAXbAYbAUbffaIObAZbBaaUnboMawGawGawGawGbQlboMbOpbQObOpbOpbQnbQobQnbuTbuTbuTbuTbNqawGawGawGawGawGbtvbPobtvbpcbVabuDbVbbUSbQkbUUbUZbUdbUfbUgbrAbTFbTGbUbbUcbVKbVJbVMbVLbVxbVwbVIbVCbQcbVpbVvbVtbVmbPTbQbbQabOQbPEbAqbSKbSJbzCbzCbzCbzCbzCbQjbzCbzCbELbQhbQiblTblTbBUbKjbOqbBWbAwbBXbQZbBZbCabCbbCcbySbADbAEbCdaaaaaabkIbCebCfbkIbvWbkIbkIbvWbkIaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -11039,7 +11040,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaafaaaaaaaaacbMbSZcctccuccvckjccJccNccPbSZccDccIccHckjbSZbSZccAccxccwcczccycchcclbSZcbrcbrcbrbSZccbbWlcbYbQGcbhccMchEcbVcaYcaTcaSccscaOccrccqccoccnccmcaPcaObPybPybPybPybPybPybPybfMbTBbVSbnsbnrbVSbntbnpbnobTBbnqbnnbGKaaaaaaaaaaaaaaaaaabVucsjbsxdWOdWPdWQdWRdWNciFcsjbXKdWydWMdWScsRdWybVuaaaaaaaaaaaaccQbudcdcccTccTccRcdncdpcdncdocdtcdwcdrcdscdycdAcdxaaaaaachcaafckzckzckzckzckzaaaciPaafckzckzckzckzckzaaachcaaacmdaaaaaacmdaaaaaacmdcmdcmdcmdcmdcmdcmdaaaaaacmdaaaaaacmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaaaccXclgccUclgccWclgccUclgccWclgccUclgccWclgclgclgccUclgccWclgccVbQGbQGcdecdfcdgcdhcdibQGcdBbQGbQGbQGbQGbQGbQGcddccZbZKcdbcaOcaOcaOcaOcaOcaOcaOcaObPybPybGKbXObXPdWJbGKbfMbTBbsJbsDbsCbVSdWKbYdbsybTBbSabhObGKaaaaaaaaaaaaaaaaaabVucsjbsxbXKcaZccKdWYdXbcaZdWZdXadWUdWTdWWdWVdWXbVuaafaafaaaaaaaaaaaaclkaaabudcdKcdCcdHcdIcdGcdCcdDcdFcdGcdCcdJbudaaaaaachdaaaaafaaaaafaaaaafaaacobaaaaafaaaaafaafaafaafchcaaacmdcmdcmdcmdaaacmdcmdcmdcmdcmdcmdcmdcmdcmdaaacmdcmdcmdcmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGvaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaafaafaafaaaaafcdlaafcdmaafcdlaafcdmaafcdlaafcdmaafaaaaafcdlaafcdmaafaaaaaabQGcdecdfcdvcdhcdibQGcdQcdqcdOcdPcdTcdUcdRcdScdUceHcexcepcePceLceKceoceoceocdVbPybPybGKaafaafaaabGKbfMbTBbTBbVPcoicohcoibVPcojbTBbGKbXIbGKaaaaaaaaaaaaaaaaaabVudXmdXndWPcaZdXidXjcsJcaZceQceRceXceTbYXceSbYTbZJaaaaaaaaaaaaaaaaaacooaafbudcfbcficfjcfccfhcfecffcfccfdcfscfEbudaaaaaachcaaaciOciOciOciOciOaafcfVaafciOciOciOciOciOaafchcaaacmdcmdcmdcmdaaacmdcmdcmdcmdcmdcmdcmdcmdcmdaaacmdcmdcmdcmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvctvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaafaafbTecdXcdMcdWbTecdXcdMcdWbTecdNcdMcdLbTeaaabTecdNcdMcdLbTeaaaaaabQGbQGcfRcfRcfRcfRcfRcgncfRcgpceocfUcdPcgmcdPcdPcfNcfPcfOcfIcfHcfMcfLceoceocfQbYPbPybGKaafaaaaaabGKcmHdXccmNbVPcmObYdcmPbVPcmQaafcmRcmScmRaaaaaaaaaaaaaaaaaabVudXtcghcspdXsdXqdXrdUUcbNcgOaafaaaclZaagcgLcrHaaaaaaaaaaaeaaaaaaaaaaaaaaabudcgsccCccCcfccgsccCccCcfccgsccCccCbudaafaafchcaafcjGcjHcjHcjHcjHcoQcoRcoQcjKcjKcjKcjKcjLaafchcaaacmdcmdcmdcmdaaacmdcmdcmdcmdcmdcmdcmdcmdcmdaaacmdcmdcmdcmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvctvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaafaafbTecdXcdMcdWbTecdXcdMcdWbTecdNcdMcdLbTeaaabTecdNcdMcdLbTeaaaaaabQGbQGcfRcfRcfRcfRcfRcgncfRcgpceocfUcdPcgmcdPcdPcfNcfPcfOcfIcfHcfMcfLceoceocfQbYPbPybGKaafaaaaaabGKcmHdXccmNbVPcmObYdcmPbVPcmQaafcmRcmScmRaaaaaaaaaaaaaaaaaabVudXtcghcspdhOdXqdXrdUUcbNcgOaafaaaclZaagcgLcrHaaaaaaaaaaaeaaaaaaaaaaaaaaabudcgsccCccCcfccgsccCccCcfccgsccCccCbudaafaafchcaafcjGcjHcjHcjHcjHcoQcoRcoQcjKcjKcjKcjKcjLaafchcaaacmdcmdcmdcmdaaacmdcmdcmdcmdcmdcmdcmdcmdcmdaaacmdcmdcmdcmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvctvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaaaaaabTeceicgMcejbTechDchPchJbTecekcemcelbTeaaabTecerbVqceqbTeaaaaaaaaachnbZdcgVbZpchbcgWchCbYKcrjcrjcdZcrjcgEcdYcehcegcdYcefcgEceecedceabYocgpcgpbGKbGKbGKaaaaaaaaabGKbvKdXgdXhbVPcoicqmcoibVPcmQaafaaaaafaaaaaaaaaaaaaaaaaaaaabVudXtbYLdXzdXAdXAdVRdWydXybVuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabudchQccCccCcfcchQccCccCcfcchQccCccCbudaaaaaachcaafckzckzckzckzckzaaacfVaaackzckzckzckzckzaaachcaaacmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvctvctvctvctvctvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaaaaaabTecfBcgNcfBbTechVciechVbTebUhcesbUhbTeaaabTebUhbUhbVrbTeaaaaaaaaabYmcifbXTchmdYKcigchCbYKcrjceAceBceObYrceDcakcetcewcevbYrceCcezceybYoaaaaafaafaaaaaaaaaaaaaaabGKbPybPycpqbVPcpncpocppbVPcmQaafaafaaaaaaaaaaaaaaaaaaaaaaaabVudVPcsSdVRciGciGdVQbXKdVSbVuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabudcihccCccCcfccihccCccCcfccihccCccCbudaaeaaachcaaaaaaaafaafaafaaaaaacfVaafaaaaaaaafaafaaaaaachcaaacmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvctvctvctvctvctvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaampaaaaaaaaaaafbTecfBceGcfBbTechVcijchVbTebUhceIbUhbTeaaabTebUhbUhbUhbTeaaaaaaaaabYmbXZcikbYNbXZcigcimcivcrjbYIceMceNbYrciIciJceUcaxcfwbYrcfaceZceYbYoaaaaaaaaaaaaaaaaaaaaaaaabGKbPybPybGKbVPcrJcrJcrJbVPcrIcrHaaaaaaaaaaaaaaaaaaaaaaaaaaabVudVTbXKbXKbXKbXKbXKbXKdVUbVuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccQbudbudbudbudbudbudbudbudciKciKciKccQaaaaaachcchcchcchcchcaaaaaaaaacfVaaaaaaaaachcchcchcchdchcaaacmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -12068,10 +12069,10 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHndHndH aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHndHVdHVdHVdHVdHVdHVdHVdHVdHndHndHndHndHndHndHndHVdHVdHVdHVdHVdHVdHndHndHndHndHndHndHndHndHndCidCidCidCidCidCidCidCidJjdJkdJldCidCidCidBvdqTdqTdqTdqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadqTdqTdqTdBvdBvdBvdBvdBvdBvdBvdqTdqTdqTdqTdqTdqTdqTdqTdsadsadsadsadsadsadsadsadsadsadIPdJmdIPdIPdIPdIPdIPdIPdMvdJndCidCidCidCidCidCidCidCidCidCidCiaaaaaaaaaaaaaaaaaaaaaaaaaaadqTdqTdqTdqTdqTdBvdBvdCidJfdCidCidCidIedHIdHJdCidCidCidCidCidCidCidGpdGpdBvdqTdqTdqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHndHndHVdHVdHVdHVdHVdHVdHndHndHndHndHndHndHndHVdHVdHVdHVdHVdHVdHndHndHndHndCidCidJodJodJodJodJodJodJpdJqdJrdJodJodJodJodJodCidCidCidBvdqTdqTdqTdqTdqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadqTdqTdqTdqTdBvdBvdCidCidCidCidCidBvdBvdBvdBvdBvdqTdqTdqTdqTdqTdqTdqTdsadsadsadsadIPdIPdIPdIPdJsdJtdJudIPdITdJvdIPdRxdIPdIPdIPdJwdJxdJydIPdCidCidCidCidCidCiaaaaaaaaaaaaaaaaaaaaaaaaaaadqTdqTdqTdBvdBvdCidCidCidCidCidCidHEdHOdHGdCidCidCidCidCidCidCidCidCidBvdBvdqTdqTdqTdsadsadsadsadsadsadsadsadsadsadsadqTdsadsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHndHndHVdHVdHVdHVdHVdHVdHndHndHndHndHndHndHndHVdHVdHVdHVdHVdHndHndBvdCidCidCidJodJzdJAdJBdJCdJDdMfdMcdMtdMpdMudJJdJKdJLdHJdCidCidBvdBvdBvdBvdqTdqTdqTdqTdqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadsadqTdqTdqTdBvdBvdCidCidCidCidCidCidCidCidCidCidBvdBvdBvdBvdBvdqTdqTdqTdqTdsadsadsadIPdJMdJNdJOdJPdJNdJNdIPdIXdIYdJQdMvdIPdJRdJSdJTdJTdJTdJedCidCidCidCidCidCidCiaaaaaaaaaaaaaaaaaaaaaaaaaaadBvdBvdBvdCidCidCidCidCidCidCidCidJUdJVdJWdJXdJVdJVdCidCidCidCidCidCidBvdqTdqTdqTdsadsadsadsadsadsadsadsadsadsadsadqTdsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHndHndHndHVdHVdHVdHndHndHndHndHndHndHndHndHVdHVdHVdHndHndqTdBvdCidCidCidJodJYdJAdJZdKadJAdMydJAdJAdMwdKddKedJKdKfdKgdCidCidCidCidCidBvdBvdBvdqTdqTdqTdqTdqTdqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadqTdqTdBvdBvdDQdCidCidCidCidCidCidCidCidCidCidCidCidCidCidCidBvdBvdqTdqTdqTdqTdqTdqTdIPdTwdJNdKidTxdKkdKldIPdIPdIPdIPdMvdIPdJRdKmdKmdKmdKndJidCidCidCidCidCidCidCiaaaaaaaaaaaaaaaaaaaaaaaaaaadCidCidCidCidCidCidCidCidCidCidCidJUdKodKodKodKpdJVdCidKqdCidCidCidEudDQdBvdqTdqTdsadsadsadsadsadsadsadsadsadsadqTdqTdsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHndHndHVdHVdHVdHndHndHndHndHndHndHndHndHndHndHndHndHndqTdBvdCidCidCidJodKrdJAdJAdKsdJAdMydJAdJAdMEdMFdMGdKvdJLdHGdCidCidCidCidCidCidCidBvdBvdBvdBvdqTdqTdqTdqTdqTdqTdsadsadsadsadsadsadsadsadsadqTdqTdBvdBvdCidJfdCidCidCidCidCidCidCidCidCidCidCidCidCidCidCidCidBvdBvdBvdBvdqTdqTdqTdIPdKwdJNdKxdJNdKydJNdKzdKndKAdKBdMHdIPdJRdKmdKDdKmdMIdJndCidCidCidCidCidCiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadCidCidCidCidCidKFdKFdKGdKHdJUdMJdMLdMKdKLdJVdJVdJVdJVdCidCidCidCidBvdBvdqTdqTdsadsadsadsadsadsadsadsadsadqTdsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndsadsadBvdBvdCidCidJodKMdJAdKNdMMdMpdMNdKRdJAdJodJodJodJodJodJodIedHJdCidCidCidCidCidCidCidCidBvdBvdBvdqTdqTdqTdqTdqTdsadsadsadsadsadsadsadqTdqTdqTdBvdCidCidCidCidCidCidCidCidCidCidCidIedHJdCidCidCidCidCidCidCidCidCidBvdBvdqTdqTdIPdIPdIPdIPdIPdIPdIPdKSdMOdKUdKSdMOdIPdIPdIPdIPdIPdMPdIPdIPdKWdKXdCidCiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadCidCidKYdKHdKZdLadMSdMRdMQdLedMVdMUdMTdLidLjdLkdHJdCidCidCidDPdBvdqTdqTdsadsadsadsadsadsadsadqTdqTdqTdsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHndHndHndHndHndHndHndHndHndHndHndsadsadqTdBvdCidCidJodLldJAdLmdKadOFdLodLpdJAdLqdLrdLsdLtdLudLvdIkdIldIcdIcdIcdIcdIcdIbdCidCidCidCidBvdBvdBvdqTdqTdqTdqTdqTdsadsadsadqTdqTdqTdqTdBvdBvdCidCidIhdIcdIcdIcdIcdIcdIcdIcdIcdIkdIldIcdIcdIcdIcdIbdCidCidCidCidCidBvdqTdqTdqTdqTdqTdIPdLwdLxdLydKmdMIdLzdKndMIdKzdRudLBdLCdKndMIdKmdKmdLDdLEdJxdJydLFdLGdLGdLGdLGdLGdLGdLGdLHdLHdLHdLHdLHdLHdLHdKGdLIdLJdLKdLadLLdMYdLNdLOdLedMXdLPdLQdLRdLSdLTdLUdCidCidCidDPdBvdqTdqTdsadsadsadsadsadsadqTdqTdqTdsadsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHndHndHndHVdHVdHVdHndHndHndHndHndHndHndHndHVdHVdHVdHndHndqTdBvdCidCidCidJodJYdJAdJZdKadJAdMydJAdJAdMwdKddKedJKdKfdKgdCidCidCidCidCidBvdBvdBvdqTdqTdqTdqTdqTdqTdqTdsadsadsadsadsadsadsadsadsadsadsadsadqTdqTdBvdBvdDQdCidCidCidCidCidCidCidCidCidCidCidCidCidCidCidBvdBvdqTdqTdqTdqTdqTdqTdIPdTwdJNdKidTxdKkdKldIPdIPdIPdIPdMvdIPdJRdKmdKmdKndKmdJidCidCidCidCidCidCidCiaaaaaaaaaaaaaaaaaaaaaaaaaaadCidCidCidCidCidCidCidCidCidCidCidJUdKodKodKodKpdJVdCidKqdCidCidCidEudDQdBvdqTdqTdsadsadsadsadsadsadsadsadsadsadqTdqTdsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHndHndHVdHVdHVdHndHndHndHndHndHndHndHndHndHndHndHndHndqTdBvdCidCidCidJodKrdJAdJAdKsdJAdMydJAdJAdMEdMFdMGdKvdJLdHGdCidCidCidCidCidCidCidBvdBvdBvdBvdqTdqTdqTdqTdqTdqTdsadsadsadsadsadsadsadsadsadqTdqTdBvdBvdCidJfdCidCidCidCidCidCidCidCidCidCidCidCidCidCidCidCidBvdBvdBvdBvdqTdqTdqTdIPdKwdJNdKxdJNdKydJNdKzdKndKAdKBdMHdIPdJRdKmdKDdMIdKmdJndCidCidCidCidCidCiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadCidCidCidCidCidKFdKFdKGdKHdJUdMJdMLdMKdKLdJVdJVdJVdJVdCidCidCidCidBvdBvdqTdqTdsadsadsadsadsadsadsadsadsadqTdsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHndHndHndHndHndHndHndHndHndHndHndHndHndHndHndsadsadBvdBvdCidCidJodKMdJAdKNdMMdMpdMNdKRdJAdJodJodJodJodJodJodIedHJdCidCidCidCidCidCidCidCidBvdBvdBvdqTdqTdqTdqTdqTdsadsadsadsadsadsadsadqTdqTdqTdBvdCidCidCidCidCidCidCidCidCidCidCidIedHJdCidCidCidCidCidCidCidCidCidBvdBvdqTdqTdIPdIPdIPdIPdIPdIPdIPdKSdMOdKUdKSdMOdIPdIPdIPdIPdykdIPdIPdIPdKWdKXdCidCiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadCidCidKYdKHdKZdLadMSdMRdMQdLedMVdMUdMTdLidLjdLkdHJdCidCidCidDPdBvdqTdqTdsadsadsadsadsadsadsadqTdqTdqTdsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHndHndHndHndHndHndHndHndHndHndHndsadsadqTdBvdCidCidJodLldJAdLmdKadOFdLodLpdJAdLqdLrdLsdLtdLudLvdIkdIldIcdIcdIcdIcdIcdIbdCidCidCidCidBvdBvdBvdqTdqTdqTdqTdqTdsadsadsadqTdqTdqTdqTdBvdBvdCidCidIhdIcdIcdIcdIcdIcdIcdIcdIcdIkdIldIcdIcdIcdIcdIbdCidCidCidCidCidBvdqTdqTdqTdqTdqTdIPdLwdLxdLydKmdMIdLzdKndMIdKzdRudAVdLCdMIdyMdKmdKmdLDdLEdJxdJydLFdLGdLGdLGdLGdLGdLGdLGdLHdLHdLHdLHdLHdLHdLHdKGdLIdLJdLKdLadLLdMYdLNdLOdLedMXdLPdLQdLRdLSdLTdLUdCidCidCidDPdBvdqTdqTdsadsadsadsadsadsadqTdqTdqTdsadsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHndHndHndHndsadsadqTdBvdCidCidJodJodJodJodJodNldLWdLXdJodJodLYdJodJodJodJodHEdHGdCidCidCidCidCidHSdCidCidCidCidBvdCidBvdBvdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdBvdBvdCidCidCidHSdCidCidCidCidCidCidCidCidHEdHGdCidCidCidCidHSdCidCidCidCidCidBvdBvdDQdBvdBvdqTdIPdIPdIPdIPdLZdMIdMadOkdNWdKBdMddMedMedNKdNKdMgdMedMhdMidMedMidMjdMjdMjdMjdMjdMjdMjdMjdMkdMkdMkdMkdMkdMkdMkdMldMmdMldMndMmdModNGdMqdUtdMsdNCdNrdNndNIdMxdLkdHGdCidCidCidCidBvdBvdqTdqTdsadsadsadsadsadqTdqTdqTdsadsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHndHndsadsadqTdBvdBvdCidCidCidCidCidJodOndMzdMAdMBdJodMCdMDdFrdCidCidCidCidCidHUdCidCidCidIadIcdIcdIbdCidCidCidCidBvdqTdqTdqTdqTdqTdqTdqTdqTdqTdqTdBvdCidCidIhdIcdIidCidCidCidCidBvdCidCidHUdCidCidCidCidCidCidHSdCidCidCidCidCidCidCidJfdCidBvdBvdBvdBvdBvdIPdKmdPLdPEdPJdPJdPEdPCdPzdPydPJdPIdPGdPzdOSdPadOQdORdOodOodOodOodOodOodOodOodOLdOLdOLdOLdOLdOLdPRdPOdPXdPWdQldQbdPNdPMdMZdKFdKFdKFdKFdKFdKFdKFdKFdNadNbdNcdNbdFrdDPdBvdqTdqTdsadsadsadsadqTdqTdqTdqTdsadsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsadsadqTdBvdBvdCidCidCidCidJodNddNedNfdNgdJodCidCidCidCidCidCidBvdBvdDQdBvdCidCidCidCidCidHSdCidCidCidCidCidBvdqTdqTdqTdqTdqTdBvdBvdBvdBvdBvdCidIhdIidCidCidCidBvdBvdBvdBvdBvdBvdDQdCidCidCidCidCidCidHSdCidCidCidCidCidCidCidCidCidCidCidBvdBvdIPdIPdNhdQrdNhdIPdIPdNjdNkdQndIPdIPdQodNmdQodIPdNodCidCidCiaaaaaaaaaaaaaafaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaadNpdKHdLadNqdQsdNsdNtdNudNudNvdKFdNwdNxdNydNzdNzdNzdNzdFrdCidBvdqTdqTdsadsadsadsadqTdqTdqTdsadsadsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From 0874daf4570aa4574b79785bf22675e0f91c2226 Mon Sep 17 00:00:00 2001 From: Jarcolr Date: Sat, 28 Jun 2014 10:08:39 +0300 Subject: [PATCH 111/304] Adds pandarsenic's approved custom cyborg http://baystation12.net/forums/viewtopic.php?f=33&t=10641 --- icons/mob/custom-synthetic.dmi | Bin 180870 -> 185396 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/mob/custom-synthetic.dmi b/icons/mob/custom-synthetic.dmi index ba9d12798e1293ad19ba6e0ffa3b53b80dd4bfc1..3c569942ba0c179aa2fbb23a3288c58e2b4bc2f7 100644 GIT binary patch literal 185396 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
  • yx+ocfUaH6i-2f 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

    UT3_O`5M?1IE?Xg4Ge?|Et=t*(035MHy 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
    B$Pg^hHj-0B~fWJJKSlmkG<{7ET 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 literal 180870 zcmY(q2Rv1O{6BuK8MMO54*)rmCFCj%n6xp&zMr4m`lfB8z-X+(% z+-juyA8D&mUShoj0059MF=dc<%FF8Qv33bPfiI!bBg)62b{b?}+3pJfcm z$ez*XrM)Fq0+MkKxbqn=%D)lRJe9kl}{%4g_$C|_6nL@!zr;hel`lrLJ z1Ad|@ z2a&H2xr*xB1TWN&z6d8plvX!C$vC;Az@E|X^7{?X^(OwX?3w{)-KC$__ug*A4#T=6 zelXLG3aUJK(i@2}GIp4f7UX5`JCCF_acjZJJdv_swXtaX=5-!85dUT{bEhAVR!gtHgOL>g!Yrc~9us`@Y&6HS9{(Bi2_gM?Mo`d?zcy`r!5orCnsbmwTXU zi?HHwbXF}kOse%3xcPf@{qQn<>_uoKQO{D#V0~TBWtJYk;i+92 zkubinyixhw__qal?t$dd`@LQM(KXXL(yOnim&ATQ)|&DAwX|mPN9H$ZRfd`?Uo!d* zAN}MgCSiH8G)zSF2|O6RuwjQ=%Dr8D9hVineQuRtRw7tA;n{FAhJ+erolZZkIl~Lssb1JIQMdTYpNDeGsxgx|hebbQGer9l)>LO;IJG zLwxA|34`w+)0^%sYPY@~H_dtN|8ng(m`RbNid6K#`AfI3Pn=xyeYWxZkqLjSzPm2F zURX)SJS`vWFie_U{kZKkr=a?ER>mA9A8g;2xmay2=LT&+H|y;;)&`4RYxm>YU_WnR zFKm%eT(cA+4zXvsm@Ag^q?0|nPvh;Ch0?z|Ox1)$0!Ncvh zVbUeJ*xgFDLZn}dMBD0P747$dIEf18uT)G0H@i}`3n*iQ#v;@c<*l}~%gngbFHUgX zyZ8)w1-|`OWGVkT--r6N%j!(quV1|!Of%ymSUr}>SAkKwH6>yJ0Js5-dv~7rrtCEO z`_kWU0zuCGVA^}UcfXO)eL4SPY5MZ9k;W$qZYd*Co`_rALO1zPsOtwetS;ZXdci=U zCxcz%B$)f+MP{*$x>-qSi{LkhL>reE^FQDFLUMtAD7#1@I`mo)RYtO{2XC?wTtKC6*oyiwzh!jB%X8EFnsCT zqPD~at!!j)St8Myqmay5{GVnPtgA;y)@*>%W;*vR+cgA}kLkMVFQga-Je{U*kmgIq zaQ&L9WEG*-Np9hH_IKF4+$J3E7UinSSsW$Yx$5B##H2d+zejJK?1UMbn(oG>#l^vu zo7u{Z+`|{c_2C1KI3o_^=r>VzKpt-)b(I=l9pe&)Pj(E9ST|Fo0-m=UJ}hQ+GuR&7 zIw3w9X9s3qGb9Ssi6v)(uOuzRIEjGUR=2JjP)Zja+IgLSJ~%zmk=KtRgZ~`q9|C{Q zp%>Elfq!42hik{d4*pcKnD}82-_2}qD~XK(7mrU=*ITwutW1QMo|>6a0XJ^k5W!uy z_d?{2_I&*KG1G1^?cLeR%1Q`=&Kp{~F<;u{ecwel>06tT#yFr-Ht-hPe{<8$i%S;W z;x1`Evf?_p-xoodtP<8MbbJ5{+!3riKkft??u{NwO~+@JoNFJTlfPljcw zjcx0u@YBZK%ow>I=qhK`W-m=UA2^|(p3rnvXsUyZG`%D#rqRuny7&2=D7Hny zFXmE-d6Id>*6VAcK_j7h=Uo?zW6Q;pPeW%cEf(ML#ZjeiU_O@IK|9`Z>)!RwWMpLd zrQk#N=8%vJ={UHI_tkbLuI47Z*cca9YQ**Yt0QNm^6t4&T4bc~THj}}Kfdy<3%1ra z2-~LoU;Dl>$;srlql3ylJC-nPL$m56DDtp>w;QiY*$d z@bmHUt;jwWTP!Rp`V6ykoP#&4B{>FeM> z-2*LeY>w8a;CrABUSE1CTRX#zq!ht{^Nff&F<@L+S8nfP zGf5&I>0@{1g}lSvGV4;^?^5k4C@83|(`>e%my^>$bI`VRLcxd}Ld(5sQ{kaj&3uVJ ze1m^~2mV`JUeWq+YkW3Q)cQ~NjvC=1V%x`DY}WY9%Q1d_pOlLI;+r`ub$)(@g>X=+l{|0J*Lu=#9*h5^d3_XY-LEEEb&6UApjrcPGy% zYaT6$z_s6h`*vGzJMb`~cJ`#tC$>48>2Ct26*?@(cFZP*3k$8A>n-SxgNKu5k;2Ae z!4qJ@SC$(5&j|fP@Wqz#w^w4UwkV15^NHIyV+Qjg7?TrwIgC&3?;>&;`$CwJqQ+v` zJ_p^DRR3r7O}UaB=~;!R+pk_~@+??iBvQWq0%YkA-$SFEvB?)=Nl`01dUv+dwO%|P z1#y(lo3`7?wD(+ZEkEM(rWD)hXWmS_M8hQ)gPVmqNK)86WfrA2B3w$WpbH=bDa&RC z-$r@T(uDQJ)3(8_ z4|uIHcZJrVx2`BQ#bvs8q{w<*f})3S<_dd{uYZlx!Qz35Bx{h?nPsZm zW`FEw;mys>n*C0;*x1-0E@vgHUC_9fl0){%A$AtpFsWb7*B5p7bjQZWe+^}-1jlAw z=+zudQ}AN(8s@ZuQvtb3A{<3eOV{?A7g93I2=91!dTK=o+o3g@Q)9#yM@C17&E~|a zTo(q$Cnw=3ow?qQ*tPyh*E`y&An&IJvR_y!Q*i#|)AqtZUhgIt{Wc;7+I8q8DkDhz zhnv!Nw_5AHDj1Y1R{H1Hw!jV(m-BAl72!=vAW?M7v^daR%m?hd>4|Z*M99FkH9#ai zi(AX45`5D9jDP-6a?R#29n1KqLxjiGc0)<#j6NzWTMKmKp5Dl~z2AYA;%$n?{{k}3 z&q2gez*KrF-8Xzu4E$j+$wWip$>-(iYq?v^1bd-ufRO@oWhVGQUm`IP!RicjvISH(gW1oDa5mrM{2a;xaEr ziY=Wff}SXzAJ}SBe=aj&YEzJ4C4wxN@bWwRPFtce zZ?jMEBq`tU&XY&<6w=plq)zB?7V$sY)6LdowypmT+tf0;JH$s3v@q|^?mKh# z^tqG1aN($4&Txt&q^fFI@##pToezLs>4_^xoO*O5|2f*7sqKm5%ksa}j3oKV=>43- zo$)nJuwTW?>-(=mWfGGeR<~@V7Y?qxBs|EC)Nsw*XDGxUBs{U~%(nxa;@}?g*^Sgj+$;*b-fnO~d zxc2tn54;}V&yiXvzh)hDfDWr=i}~~^Y)_%ydQC;la!mcg{uuS9R?J*vq+yJK-@(_y z!pkB0PoMI&8;F@RCrk_JvFF%S&(w0&a3MybUPX~{>|?QhJVFtCk^xhazuUTFLTgtz z(GCs{VVzIj33qOscub-&&zuHPa%(bStGx*Vfppj9QTNY!#~U%Q9VizU_zN5&@3hS+ z&P+XFufQl-kKM`sS$(>xw4Y#CwxWeR2&FB?8}*e6`~A=XDfcWDMK!?APW@3Opc#8n zA6(kj5;D8Bg?zllpYB}2wggMe1EEOL=MsKAs^r=f&-{h(^4z_jM+qnVKw*_G4&&-H zdxR1GO09qyERm}9EzbuP)B@Bv$_k`&H<9-wY^nE8wwn(X*%y{vn?&x8fZ>kkqI>#C z-0zLe|9#fIgrG^C&A5Yrtc;y0BCi516;H@fY;b#MP1RSX?07K(OMlr4=hp8vr-jv+|b!5e?4%^m3DrM+ETN}@Rr5b+Sr+dyVuD#2{;t+zIBn` z2ciFlf3Le~rNH&|Sy~S#7dgYWkbz8NGWOR}Fv1dx^1i)KaD&WVG^l3$I7Q7POmp_7 z#30LWB(sr^Nz3nHq$6!{V#}dgN|v`C2$BHt5{U=rNG@T^$6IYD%SlydfpG$yJ=6MO zo6VfpZX`2D7w%N84}KZb^W_rej{@Er;2`9%rU=&8z6-jI#1*l)Wo|TIx@H)E(-jQ? zvaCzae&LR|-;3`PmW>f=3VWO_(P1J*5H{!}x^-6u&-|3ngf2Z@3yLa~W8f!td4Eab z$+th#BfK%~{%qv*YN&ff_#6`UMbW1qZz0THY;gs{6%V7^wvAvfe%N%XivO7D*Humg zfrt+uE=RJ6kpM$eQ{nOP^k}(nb=lb$IyySSI+)lvc1YUoU6aBL5;r_NJZdnQmk<=a z$T1hiA@`-JiPI^S$~~~KurMYuG2eH#v$Hd!3Wly;2;8Pqd)O7l5h@OW0_ZpCo)W#3|SY^NH2xVU=!9T(c z$|9z3HgT<1`Ey;m4+4MQ(4JQd-5QW^U-;EKL6I(Afzcr`abj^Z*lO-!h`wK<7rei8 ze17b$%#_2JMYf;$quCV4XP4f3R+8Y>u=T_^&|}8+O-LcKD=7&0xg^fR=~O;%IHbhl zHbFQCcu>LL+D)Wff*Z^ezAK@qlziEv;Ru6-3XX>Aa-ge`e6{L(FPnZeTOr;~Yl}Ri zG$wj*Fz{lPq3gp9r5_a1_u;m`7S_%Lef>xKr559GZy3Z7&{22bUJu`zy%5EwJG5{v zjtKtKsLv+;`yH=_cykj&k;zvdw2~!ZBDNQ~BM6x8#5a&R*B8$VG#m`b0Vl~ZX;N(7qaX2~IxQl^$`Ri%6n}&^ zLE&gJ;z91yWE2rzCa zH46rcZ>Lj8a~4rRl@Pd;;*>o4d9(>%y|UOLGlq|r#Hkg*^6b&`z|_ zUmD0C-lyh}4Vj%av8)UlD?{Q|A_&tAowqzkFB@Z1exFo8N1(7Q;m{)yi+0l2Aa-Cme-<0aI1Z$uR?r&p$MM z=nX${V*T-kEAU3PKx3hffX4x@{YznKsT$->Fo1!9VRo!Q&!%HQQP14Gw1?i}temY} zS}W?^yGv24Z{ByuC>93|trL&JrK`Bm6eGxFycATWyziNLUhwb8Ye$;-mg|nxW;(|8 zLN+LggNhM>ChXKL!hxp)GIJfeG)$=)LJ*rSvygMLWep`W&!&j&0EtZ{-NVuzlnnMh z-Mh4uyqbWP*4k%OOkVLy;1_<;OPt9LzU-nSr$`8Osy}>q&s!3CFkNN|e`;j(mR~Oy z7(&vD)FyusZyJt>x&7E{XNq=vvXtp>>jD@Pt~OX?zD<@V)}@PEc% zM3h^1QBknmZXbFq`5@f22}&u<;`T$rPBY=Oyn)lTp6mCQlFMlKKXW(ihdT4BMxvp~ zs+f`9(?B@M(S1B&uqWh`G7A`BFZ&pU1 zPjZTsP65>eVWhKd5Gu)!MnQe1F#w2{U2FN~FwIN_Xyaw4)WGxrcbbBNYzPafgSOkC z0AeE#$S|2CoL2o zKp`-hr;F?M^KhEBTPfOshYtJw$FXXhE#$%tZjZgaB>{`|fmEhfqv(+Q^{p8v>Ff2U z5RPP$^Vtizp@==&CC_l?`DU>!Fo$3{Jw27&ucoW5t-W#cW-Ej{17z2%+O8UksUjj{ zdDSj)I75yAp{nIhHdp%jcWr;KCz$VRNgF=rM7K&F0g>NHMQCu)mM<`wkHBGGUZ9uv+I|DqUqm8hTa}FkH;f(Wffd;|?`&8h8-# zIHYPFY?wU3-Mo1h$ryf!q&|^NujdTL>%>QOLb1$Ot(xHJytw39d{?+*`VrK;L3niN z1{{LzdWcjVX6_N>Un2H}5Ad!}RsS=90ka#7MFd*MF35h|=e+oVMQh;d;l{5DVdIyR z;omJl97^>49?lS<|{gqX%TRCbQm!>68v7cakyx% zreo&j&6_oz>jN#n+%k%bA5QT}NQ|o`K67n_oIgcZExDi1$=?2Aw+%zW+lk4_0(n#b zC#oC^L=nTai@|Z>H4nX~=sQMDmtPF7OjXx297k5^;PO*4QrVqaGIYsx9@M(K9m>ucGuj_24M&=Nv*D%S ze9iR|Dj6TMARF0DV)^lv56$9& zpD@Cln^5mg`uRcW!zN1Vto#j1Qw)+QYhTgquE!C-H2arrowlM+ha(UoDYrpue1B>D zm!*$$=}ynQSgYd5|BU_uLtW}$8 zIlJ82*#vL-uPb=Dm_bLL_(@r|!w2>`)!Z-<8^;(EitqB9K_|iW=YM;LE9`Vk0#8>T zX^t+hy|6_naI%g>$pE*^o7m&{bS4nDybqiqv#ZJCP{&uM@v^vWwFeU-ZPFmZ32HIQ zoxXT2gjJe5Nfpw2h9TgorvE-q97JTG@s|@Oh6*F_(Tmqib1OFp)g9t3F_chC71G7l zncNynU54+2q{oaK-*O{4p(Hzy@QAV|V**9X%K<@F=F_k*!CkgVe{-)%e5YRu)6Yr6wG_+fdQG31c@@%<4eJ-NjN< zOo&dZfqI8O7&pzYk+8V!s{HrfeGuCN<-E(UDQb>*aHJ&LiF#*BFRy5W7iUowwR0|~ zuVrjK2#Dpx%X9}`;g*l5VHEP!-nY7j%jlq4L7Q`@bt}Z8V(e;j_u#Vq)5I2Bc^*B}7SsD2v z(ZrZYOV>xUVxg!;qiX%HeM&r{MC)w$RjFwCMG!{k9^1b@^fP;%u0oQB$9w0ku2A%0 zqWA~_qoD%5lm+|(a^WU34DyCM=hGIH%=_RoN@h_%RuSFo>*2ATZ&LVkKJneQxCpiK z|NFZl|0pH+s-)Im4zbz^t|qlvn^XW$DA78aNoRq5RYFj6zZ_LLe^tPeb$H-6oJRJ% za&v!$&eO???s|+o?S(ru|MO?5@Q&A_eMQdJ(Oh3T{IRg3y@X|CBGGg2KJ{+$|MRUo zG`n;$F!+f!683Y#`|*QGxh#XOgx)tFx4(9O)l?ac`hO=zb}FcT;Z8fJcYR~g39@=7 zpf!Wp-KF}B+@Wq}SJAS1ru48AADp9cRL`hf6!c2(-tR=)F5Zh0>R>kViZ_G>@NcI= zF{RO*Jt&^wRtng=rIT&SlGMjsQP!?A8`F! z^T}L1?@h_)&o`feAL{;?zcqPf4g^ic-c2QCAB-gI1D14CX(#{|gI5Vx!AeO-F{*
    6-ue~0MS@A%;(xoEBCidIxgW;@(jzIw=Q=u2fI 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

    >P97;v*`{b<-6*l3kXp~J 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%0DaRd`}C>sq;C82?m0%3Vuvr$v5 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

      rp9CbtfN7Sv0I&Og~ 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 From 5de1f11e8d671f1f9a1c72933fe8d382f467eaed Mon Sep 17 00:00:00 2001 From: Jarcolr Date: Sat, 28 Jun 2014 11:33:49 +0300 Subject: [PATCH 112/304] Updates a item sprite and adds 2 approved items http://baystation12.net/forums/viewtopic.php?f=33&t=10693 http://baystation12.net/forums/viewtopic.php?f=33&t=10678 Paths to new files are: /obj/item/weapon/lighter/zippo/fluff/isaac_jachym /obj/item/clothing/shoes/jackboots/fluff/kecer_eldraran --- code/modules/customitems/item_defines.dm | 19 +++++++++++++++++++ icons/mob/feet.dmi | Bin 3986 -> 4069 bytes icons/obj/custom_items.dmi | Bin 58703 -> 59600 bytes 3 files changed, 19 insertions(+) diff --git a/code/modules/customitems/item_defines.dm b/code/modules/customitems/item_defines.dm index dd642f0b84..4a702a2429 100644 --- a/code/modules/customitems/item_defines.dm +++ b/code/modules/customitems/item_defines.dm @@ -224,6 +224,16 @@ icon_on = "redzippoon" icon_off = "redzippo" +////////////////////////////// Vivallion - Isaac Jachym - Butterfly Lighter //////////// + +/obj/item/weapon/lighter/zippo/fluff/isaac_jachym + name = "Butterfly lighter" + desc = "A custom-made zippo lighter, looks rather expensive. On one of it's sides, a clean inscription has been made, 'Butterfly, what is your wisdom?' And I looked down at it's majestic form, flexing it's wings as if to show it's strength. 'Fuck chechenya.' Had it whispered, before fluttering away, and so we went to war." + icon = 'icons/obj/custom_items.dmi' + icon_state = "che_zippo" + icon_on = "che_zippoon" + icon_off = "che_zippo" + /obj/item/weapon/lighter/zippo/fluff/riley_rohtin_1 //rawrtaicho: Riley Rohtin name = "Riley's black zippo" desc = "A black zippo lighter, which holds some form of sentimental value." @@ -1051,6 +1061,15 @@ name = "duty boots" desc = "Eight-inch black leather boots with side zips and NT-approved safety toes." +////////////////////////////////////////// Vivallion - Kecer Eldraran - Toe-less Jackboots ////////////// + +/obj/item/clothing/shoes/jackboots/fluff/kecer_eldraran + name = "Toe-less Jackboots" + desc = "Modified pair of jackboots, particularly friendly to those species, whose toes hold claws." + icon = 'icons/obj/custom_items.dmi' + item_state = "digiboots" + icon_state = "digiboots" + //////////// Sets //////////// diff --git a/icons/mob/feet.dmi b/icons/mob/feet.dmi index 83f65c2dd0a01eb4d766e73b3fcdee310398e943..78a2bf55bcaee7b0cd25671e907952b803f71d98 100644 GIT binary patch delta 3425 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 diff --git a/icons/obj/custom_items.dmi b/icons/obj/custom_items.dmi index b51a0f203750b326bd77a272fd6f26865fd60584..62bdcca1bd28bf172ddf184e4750541fa4bcd0da 100644 GIT binary patch literal 59600 zcmafaWmMc?*X`hL#oFRhq)?!^52a9~#frNXcXtLT6f01?I4#B9ouRn9ySqCK!`$?J zzi-`jf8DH=l?-7fPm<@Hv-dtb;mV3Kc-SwoK_C#GoUGJm5C|FAMOwo|2R4&a)7u~r znwYnmmaCMRi>b4fqpOvJJqYBPo}sPaKq-JLwg@#DqxN>fDNoC8z5D!!#aWgBj)E$) z@x9@FIEsAr;(7Tgo!dmzVOUxkUW-iB-MOqal*S(hkGX~5pNh9Y#bVWGxJB_D{F|Vy zLN2yeo|OLn4XturF4i=NLOcq*m`)FiB4zcl=lHA3D^hjBqWGbUY5iQ2y-;wV5@qU3 z_MeSYW*%IxUov5`Fmt=ERSq#?TO@^)Sf5kA>v{7wn~$UnAH6mhZDg-eA`B^7*Wj?H z6o-uRtI1bFls)f3HAeLI{U%&qpi-JA% zXT}5W^8I%v+}^N}T{EyevPh)`{g6l87^@kh;8~7JsqVVmn_IC0tdB@l%(hC=ci*eV ziOY*0Vjl)Hp^dHKj12@ao$Du#9t|)8FaD*kCSa7AVU1teUPp(|vA2}Nx}B7A>WVyD z?}(@zuj$1!i!E%a=JmTLkT%q4%UYlOtdyqoTOGNU zC%wzh)%p-R(_-DL6ey#ozE{_nQdSsqG?y`}p1D$_qTY?1Xo{RPn-R&?5Q7Z&fJnMJ z6UM{$i9RFV>24mT??J}rua|hPbQw_lX3Yz^8>#)qyx$C1ieC_k6g4N>7Q3YU90t}ieS8u!c;V|BvvAfcO)LU&V7 zPPbaJ$t{)CXKg>Ee+WOLdz7|>5x5B+n4@*St!dr50w1CEzV&b066BpC{J?wWzNkGI z{~&(_3`YK{gj=D*#Twl90b%G0#Zs0HK`}k=YAz#rj)qKj5R@fLk3M-BHZ!~Ixq%!N zJoCp*;b32`+St__@#6l?NR}%bUSor~gME1YksW{adU(1=gM>(xkG;3_KWum z%6P>OQ%+jk1gBsAM84l{GA>@g&Tg>J7H!xO&QaT6-@|Y;__dy$h?vX7)ly-HNON6n z_qY5yq88>u(nn8hzASyI1d+{2k)XmD$A?RxGu_u#R<)7r9k6ENf5C?=`C2q!4*fEoQ4u%JD*RdHI}7_X51xs zOWahH{mbQSsIS5_1*ZQct&q^uTidLYf%nbj2gyBcXo#+Jvm_?Z3=M0!-EENcTkp(T z@!wHW=cHGi(!B@=G5hJ7o6Yx#sX3b+d!%VmGgy#)E#&Rb2Ik@kDa% z1RMXF5y+^lm9j8>Nvz{as5J#!mJO+RNuFd=(UvUFP?YeNT`jZW^sKvqB1$3Ii_4Pn$TyLkR6t=8R|AanUBYE-JIIqbya*0-}C%l#KN53KRciGH=I!eE^gMr6ZiUrB>l##I6+;@;l#b{&2Uj&-F> z3ZW4u0D)*ha#HWqJkyUdy!1%7pL$nO=o=WY!{R7OXUlMYYil_VeF0liG2UL6cTimO?^WPv5=mU$uC_$~XABKpOu9u3w}8L;ue*OCObx*nPQDtkM~ykfoAygZtkl z!VyF@uAW-o$QnICT!xzdJ_jUF+1%&WCoKH4q(D(JNm8uLBZ;(=Ow z2y!3ImieLVel9}E{?W2yhTf%M>M-UDY#6+TeHUWm zU_|2by>kSqKazeUpi%VnYzT{vE}J;*Xc=M;`nrAH9LF$yMYA}HOv_KkzWE04M!>?r zT!YGSTbL?$UoOXd*lM+}r-oIv!E=LaGVc?T@@!;&_@&$*ziV-!xIyVoe|WuNx&{62 zf;uwzC#i}lqWL4$2!M2nwYfe?b3C=-?(r7{$q--{f}IH*T3~_z0=EkXA+l6IN{g((2e!=cbh#? zR#UP!E|DUriSO8+Dl5mTEtDh-dU^)-|NgxRn)|`U$%7O0?!K$5D-0NWGw&sLb%hrD zg8>wjRvWNuF^s;J6M}PZxh@GZi1clgdRbPsrCo|im-_sMA^JnbrGCq&Q0^x^7wF?nY=t=eH#92pr|%G$aJ6BCmVc5|HLb-DBJAaKt7 z%#Y@In@rae6N5QZm=c4kDCZ2}OGDLjRiEk12!ONI#$Sz@X-1uhSsbj9v z6zM0wU264EvG3h_sL6DZ`oYc5x2BZh#IGe&6hN#5aGLvG|DMuAs+z0|G3F$EM#S8x z^&&Ls4^JVgfnqOkpaJY80s{VtsV$fM>6N@Dp7dFw*}1Ek-}Z%zur_-?vzG(Pm}$Z0 z<5(%8W^u*$a#89yh$Z9b^r5Zbn~Qh&JH#K0YQFx7X71=*lj{8Q}AQ0Y+RQI zTibigzf*;(tSl^RUkSuP%2Y_Xw$kC@;Y1t6Fu%6@9f~^J`HlFl4M#jKH!wRU~h9eEKg@#)j|<;nzvkJGsaKaKz0ud}ls@S?Y-Jr&l|uY10~ zFikd`HxKws70_t6RTsT|WhOa8(*+U5*421Dm@AW#S{cKk-$dxNE(oHFIilUE9O}4q>)OHcE`=biS+;$zwsMa`$r}`}#rqPb4Ho`cRxqZhmHW z?}3Q))h&8-M8w2(1A*vS046o56r%Yd5LGwEc75mM;&dJQ7J;@#V~jAm^2<55*_3(r z4v9Z4YJW1{v{narLdt1K9UUD~=U{g$b{4JnAZZ+0G7=f1qq$08!u6bta*A>Eub&}f zGJL8(oSA7ijQYOSZ#DT-$R#foY%xM9o(j$?kXBK2LKe2$V=V6q+Q0?f-QCS4s+L2! zo*Di9Y_}*mS7Fw#5O&J>&@xoTljVs^ZiBR8Juj(lc%0lj-Liykj7aHglq7O(|Fws> zx^8w}r@OhwWfex>JH(Wdks+q0#_vNQ{`_I=iKZHiHVRKOK^q?*_f9Dy)HyGIjsNet zG!@k1g2CV<_Q3E!IbYJ#(XIaY6d*#^BK1J7+X2<{^{QH|VA=Le+TSB(2!r{L}XQm7Jtzi?N&_I+luO)*+!&Q9H> zE#bFK-hR0^CAZl>$mysx!h~8@Ru&di9JWLWmt1q}^Y`LKg^fy$kRC@&pCGyE6CvC~ z79sZcf#CZH8)CGb_9{Dm<0=W*3B{~pqW*;!b8iVy|6gs9$ z!<+C3pH9{CZbW)ir_VuSf=D5j86dkCb~K>py# zxFX#J20og>juM-Q(3HEt;^LV*GSL#ZC)=lL=)_E)2tgi8P8fl$U-C_QEA41$?XoDn zTP;eC3hc$ILjEq>8xPmp5K5kP5i1oC1!x+?ij=oKUJQOQGb4KTtmEc*vGKGG)>Xgi zuY2NQ@xmdN((UB(`udIb92Nso#B6)yY>S_-FUfemr*3N|F12XG8}3CCsJ&c`anZRP?l5B)BO1zPPOgB%xg;~Akc=dE zwa6al6LXn^0+$oT|5g#QnbR(xrq@5Wet)OTvUNS;s+WiT0UfbTGmC5`?^9x zAKtWu%FE_~S9>pMi?xm&qjwUWGo z$rH?(Swb$ZV%|1jNoMV0d+@+py7GIy?Dq9p#)4&0S!V#{bUW4b<6rJy7xAu={LVWVcn{+|H1{-<0Xxtasz4>3jPCg4}+ zvRKR#6nJBKtm}{v1V_Z@93-8Du)jR9E+H#aXbusjDS_bQg<1w4o@y!7_Tk~Er6s+E z+Tusz*>$dV;P#PJ{|L+@na4B7n_T&gd(oFPyne zB&UxU31J|?*Q(n5tB-XHbx>CACs0Fc0~G`Ud4$8Ae4Kp3;WcL0l0*oG0hyXzRBC}-n7G;a~` z`-Y|_WWpCOVl9zvrw96LPH0y z%pIERuI&cV2otpv%afC?Kdoiovbu2A#?%Y~F)Xl3(i=m=Sv_>V+3R&VEWmc%oh(B1 zBZxcEZXqeW#&YL_xx4riRfJ^hA^7a?T1>>^7?p$d06KKb_9cp;%v9`zPNIMF<iVhbYU zfYkwoj@lnoqEWWBwPEe1r&>OGGsu9jHuzduUUPiQ=87yqc2ONJ(|CU4^lCr^5cDcs z;Lbtcmh_7*l~t@S5r~~M2W$ri2hhaCMBhjql&00^cIRlm+I`#5_q-cB<13IDHaeVk z>MFCE1cZcAf}nXQ1smlV7q?)PxTijWYlU>8n3Utec0{+ro* zetvE{R}pBx+%%u-aX1r&N5M}>LsQ;7yyVNK9rCx+f(Dnf)|@psyRunCGdPM(gMzv{ z^pFn(+a8}N7u(N|;lqT%zb%!z->Fgtx+5*0;p~l!Tn{2m9dG<$q+Yk(PyvaYgVQ|! z==g!6X~5B+aS+?dhL|`wrZXklfAaE@s`LF(QBfVY2S|bEwYS_X0D|3~_AV}_eN5(X zx;~herz-zU6cBVNt@;!#`pD<=)m|+h3%yas)&J?m($dn@4@f+df-4r{D_l09H68=> zJ|Y;LQ}CTS1C&Vp7}4PK%J%ajg0$rs|F0pz3f9Iee#o}g^sk!ALrKhhY0yHQ9a{z% zVj!VXYN(A|bhqkzIqZACojlem5*QemF6NAy%VT7A_i$LAi$U!vf%}3RwM2S$>Iep> z{X1AcQpE;+YbEA6Z&`;@{NLr`nF<$y z1a7*~6@G9N_v)kdmT@-ResgnE<%9lSRNbYi8jJ-Q1?9zC6RB`#rg*IQekmQDmnu?3 zq!hU)hRZH}gY~iMS}DGW!K#dmLW1wzXyNI|fyIi*TFFP6sJbZsq9ew4O=zR;u{}#3 z5ig{m&! zm)QeSUjjOdeu56d?)cc}JWKbGV!Kc;!HhOM4bV*OwlZ7u+d)( zoGr_DhP2Be>rWoEH(0@Hf-eZ4IUU~6b%_`8Y#M5p7_{oNVnj3TIH3b``th^84~$c> zD3FcbzEVp{`hga>{6k@E`dMpf66=0wW@=Ee&AwYwP!KXlrUIjk#3pjae}JC%F6^1v5fch5ZObBxf57>o5rZ zaJ_l8KdI-j>~^#Yr3pAJYmT1GS6WOg->alrQP6}wWqTztGBS>}`T0D1_Kan0=nzOb z^@WC69V$o`Q;#SX!SJ{9s^gch$&Y_Xl-}9cApT~!6ddukXXx~0ZFIs04p5X^fQv-b zS^_DPS%Ggk+z(WvCN)+pa$*>c3}CFEXvUF5l8#KrxXk!jYx!CJ0F8;MnTNGAai?Ui>r5i)eC)`B-s$iol}ZgKKOa`G*cfdA#b(L_~r({ z8|%r;Zj1Xx34r~dz8zo&=p8zc(+ViCzDHg}bDhnF(^&5!%B7u< zBSyuXm)&Ly72oOT=;U_M$UA{bSRsT&=UC;?Ct(2Z0ldhFKdn-W9Y`5f+wp-7BzJQP z_Y}z)?Fj@NMej*~OrYgW|1-2{uoG0u3Q^nd7?e!8sIU0}aa%=Nv-}R7xG8r-kHC4# z+oG3|*63SqUhV~}| z+)G*<z$mIh@KbRyu|SP2GUR;V;gk%tAaoIh75;&A#9#~SC`BVb?E2t4tGqlazn`hmxNak zjTZ;V>A4{NJZJ1KW`PYc(*EC(3=u#vF}^vP|D(s^jdt~KQUFq@KTr~EB=1N8W|O#3 zUv0BqD`#?m#-V5TP0*lnL_IDN=UF4JU{>D8EQU`1<9SW*BQUX$re!{?lqKR0p*7ZerT!oR(~F#9E# zvsmw7vE1Y)8z<%Jdc}7u259$|49E@z<=7l}xeftzPi8s7AV9tkMI-55(^&^{Ucs>{ z7mL&)xzT);Sr5&8d%MIYW{Zuc?sW96Krqx~P8wu;zkl#q=}J7aT2^t!iyrdT+H~p; z4;PoxIL!B&l?bT->%2TtC8VfsnBqUJf+?9lQ|!ecEzwb-^658Gy?KM2XN7DTAmA&& zQuay>BfE}^5`^+^`I?#^OV|ECtqN+6T0i9f?xXX?tb_jBcu@NxeLDOsawY8*2!NZx z{0j4BoX_zCfT|uC_zq3$YK8r+b3;n@A&NGzOGHM-^v2sE3A0I@@W(3pb7JBgVN5rw zPNe^7R-ojXpYE^5XZcqWdeCO}^U&u43hZ024}bnFkH`xD5yq_bTiK@5W=~oW$N296 zg+u8#A{s(NLevW;AAjGPW0k(=^7`;4Rd}b1H@?+~>g8{9&x%kzP9ZLvWFR_vO;?XDchb zL}izCf>u-dH0VOMfz4hQQIIMU$hMB%erz@HZ>_YVL1yO_RqJ~+nA3y9a)n{@O|9s| zUJkO+T6^Gu_xZ6B7+&*N6u~qamQbSrQWuNPhbYy$7)hrQQoi+HfSIhA+ISjIyONDk z=TPrfYHEbn_Y9dnY>cy~A#8J_4UI7*NFVwy>Lys}U7ZWkD`Yu%4o|d!;6%S-J1z06k7C5L0MI{9vlqr6Jn94o#=a%d<=On5BhM5^Dbw8di@-}RD)|@ zBehgm3lFz!IVU)_X)UA4#_|Ea2k22$f|gi&T}A{6+Mu!=y57Zf@=wO=LHH z%{Zo**YzOWeS?7OG!b^3wBTFYG7_9hL;P!}w`&)=oqWgQHBzBVgij^RIAmT8bb%B_ zFr**fOG<+8A-C7!h4O`?79`ipB7ZOCf3SlgYD>N$f=4ACPM{{6_(uyU(!d zOSq2WXdb5ekX`8A;hpq@t5v7PD$Pc0nH^|vvKB83FJpiq$NOUT9OvqORMgW`yxhOh zu;s?c0baKH_%r+dt*7NnqV;#LaQ?&uaPG{?qi&4-dasD+OdBRbUI38?AU$4d0z{{M zs<5p@C$ZfS(oHX?8qi9TL`*iggsw`gvJgDT@pa6d#Dz=-;SDu53UZN_Lfg#>*Dx^dc@`rvKI+ zG=fPvuom23ib3%r09Xc+rm z1KSRjK2A1oIK`Yi@F$N2{v~WgGlQr#BVag7iQ&rlzG(+;Q2ycF90jwt|9U(Xw zmW6n0+6`^V;(kw9wp&Y$E}(-tzs7GeR(2f3L-) zbKVMvwLB^wtkx7Vnkj~gCRE@{@{F8ZMo|$T&{@msO2fw4T#MC)^j#peZOIKN=afP& zDPdul*XcVWrJmazlTc5 zGXIg#51rq7Sscz%60G^jpkgA-k4O+IC}w-n>PE`-9&PQXt^DS-!h()VM@7^Qq6J69 zH#`c^-h6ews;v$?r=0mE#c$aqU6k8O>*@M-zYwd4I}4-A7BvSO8aJxaJJ3#|2zF6AMehfJy*x{ZhL1Cy$#+`TIg0;+)3~EuxT?Eq~^l z{?Xo=VvOmUgr!!g?*?>58>s0DiW_No5D*ujXaVCuZ|{ksP`AkDm65=@wGjbn%=kN1 zO)8C-n8^jk7;x4jn;E*N8kUg(^+U%uzWN_O>{t?K2k@h14gq@tG+-1m-4~9IRV*oKr>Ckr11V%ja z_}reD0T`j>yoZ9_pk>53q}Ybh~Co|#^gs&ulk-%5kwHExFn`(Z)cz623n z2%t%yF6a~lU@;!cvFy*c(~9Kjv94hUH&2HA2yIrFvu((LxnXqalx%=J9?DXkoo-4; z8=xf(P?qV{5QQ=0Fc5x8HV|iI3}(((*kqt$Af$mlDs!}_Bh0HVW;d^}Y!4f<87qO^ znloPYUOlV`8CuHo-f`ZZrPrgz{w&aC&nI0>gU~E7Yniuo0 z%zHn$9i8k37lyHEngk{bU2L4DzA8Z)ADE2i6lW0f8QE7PRn#3 zUq2t&r767fVxjZNtt)p!c0XR|24eV?U9Y&=4!FYMviyVv`A0^;`Q!@c?fpTGaexm0 zPkyc-qFnpK@MjO241^T&oFblQMjM-(a-U?!_^_4JK6$}$2(rWPV`E&b*^qxpTU{D9 zIMOMJo}+@uBBh00_kK8P+!;m^`pmcai2&DSveYnm)ztg~G?)wy<(4$M+!-Db$Mb)> zw;M|(z=i*rJZ|K3XJ~L(<%WT}P8Rcv73@MgLNlF+1@I}2=Ahq>G)d&*6`K+1k-ygZ1A}&lFRiU+6~%#>vm`%lx3;p8l(pL zHEFX+?z3TH(vQCi48!Oj_+C9lE7Si2ha=m7sRngx0J#?c`LjZ&x@ z&m}p(xJA#)(>j+DBw@EYD~tjd72Y?u`QAH&qSNo+zk%A!a_D!!qh-Y_z5%S@(f8&0 z;bCM<3|_SmE)5M%VW9>PR5B5KQOAq*D5Dy84Q9e1z-f}oS6mRqz{T~0h~Yy!Xls2Y zSIw)w+FZt2Rdkz^7WqzmI@QHF!jkO%A5?C%_*(M9%KT?dn_H!@EMK zMn5@u+qu6x4h^k8uzhqAjCvA#4MvhO8;bxNF+cGsC@a6r5b51KJRD45<@}Lp|95b3 zsFy}55rN98UF)QSj*b@%Kufg=#e-^>-I33O)|VvA?b?^1rK=nB{l4H2zv%}Pa|&Id zjIXB3*{R;zFEu>tr1CgkP}f#Xq!$-oDT{;O?`FlPrRkQMCQ%?MODzFaC*nJDSWJvZ z>RE4ZZ}oZ}-dgtW*1t7@cT^)$5=V$L-3Jmy5Ndlhm>ymuxBPfGho)80X>|iUz7G=3 zWcZgil(KH}sJ}gX+ZF)M)gVZ|vB4df#IALQ?TG40buY7yFKExe$Hi438WE;x?hbAZ zhVmNEZq98x0aD*Ht8TPal@}J9>+4AE09u`@iKg1Vw=CMgRr4kR1z-uG;#SeJEPB`f z1)7=rwHriX$scHMI&7-V3%7ehLmBV_YAiA+0{7rkem5syj8P?qIX}6OEno)oPjDSV zIgv-gCDP@G@=PUouKj28?nKNW2daqFyc8?skr&A#RrsIO|L@A9PUey z?NS2~i*^oT7W#yi{S84n@bXy!IS}}-#jkYaCWTSRBD=kEKvRTW%K;^oRdd#L*LhN? z8}NxiVG-nYSv?#2t?~*)r^7z+-YbV8t>V0ohyG}5<#(>j41_MbZ8B0_xWeeX#l#z& z1ZciFXE7BYdEO~2@j=OyM%&j?jZRlux5bt*MxiknMtBhG9@kgQ=S3CX+cl;J*R zXiz~?chErx#Z!U`C_JQA<#-~vzc2@6{*)tKY6#Uw{oRYJeTL+;t1JZN(pTbttSXr) zZx-yfxNjyihr>3$`tJX-xJkUvcG`LF*!fgzM{^`{_r^f)sx9^(;@_LTFRv>cB7siN z=a(s$e?#i&?fu6*ZpJZqRl-s!f|c1wV)$Fsv=+5dC^j+ES zzN($m@LDQI)xtz5{x7LKP6v6noHUdf{bPirTYxv^zrVvLd%ggbd>@WHl_m}xsT~G% zmp5;;DkLZc9Rs$uzWmF(>z$$Dk&*vI^ba(6C|}XTa$Y>8iyay&{J$*pBM>}O7PuJg z|5?^vcI}}U{bzB+Gx-k>1%^FK`|bbp$06YO+L!;e-4&z1b?sYQ__Jzt?{`&-zL0-< zm*3LzV0&$#V55Bbyc2|1Gz>e18k&44vB>hP>!C)kwS)4KtkVF_HxLECZ9yIJSh*n> z$*5B6?Dm$Km9=olOhZGX6heT0oi%1={;p2~Q^{42Rycra^%x0PCR^NC3WV#reto`L ze5msFR?p?8_Wye6oKVP#F;I`aaOsM~T`Zyg@ZfF}I-uDNw7B{wC*y(50HA=s!U8&w zu?Y#m`S})KJy~wGHd(9QSh-sb53NvAXN=R9m2>=#086+Aw6LFG1~WUW>NtShTR3H~ zfzzL;meT`SvT=#Ipxfke@9N9=Z)wucrQ|Z4nzO5VJc{~RqF&CmCo*=6<+uR-dIstY zCBUGyUo&Zb%od9|2Ob^~6_x(F%RpZrp?p+Z5&a6l=g>D%^=@t3EX{B7`lAd$TSuRm z7vp;NZuxaWIq5hJ(o8_+o(_I`C3hf&hD7tui@Jzw}ir&JasmVZ; z-YA`Ix6gOrFf1h?Da@@Al}i#|f4}j_7$8@vGO;fQDQ$!BYmbYyiVU zqAo?6xL?x=fv)u9^73;3;Na#&?ngj6Ex0c%EF>8fNDnyp73RQpddSv#x;NWA28BQj zysU&%pf$$US9kKWT{esU(qnb!y^V9TH(2N~<@O&i->v+yvvwZK?ETkJ8%*Zpy!1`@ z0i~|J`34A`2?p^*0j#Qdf}){-Nn~z+S9yhE?633~iuK>Zotf?38X#VNNZj1qQog<|8AfdM1}V}0-n=wZd<#*>$zyjj zc~}cI#ZdjX89NfJK6{}TYcwM6?3tOFy!J~!nS%`1z#;|=3=HpwJ(38eq@=>u`m-t? z+cohod-cJwVPU-?)QS>&+|}7O4%&|~#~8f75F0FjX`p840N@H58cBj{Z+|9hk~I5| z@*CB1pFD(LAxh8S~@#B%PK0mAHX$(X=ug7mN`bP zYd4OMOOpye@n%cnOL%P%jMZ4F0-{BJ((ELbva%1B;`IF`2v4NvIkGXY*| zo%O2hECyxD{ckA$jBIwLm=23|Q64K^GAoWjpxGq&zrGyk3R;|{-vm8m;W&a~N+_1E z_U~VdB+TG)nZ5Nme{O7S4A?63y5QsA;J^Nai5%=B?kx(?FXatP7y! zUhey!2b!KJR#w|(`_=cTuzqrzMf?=^6BbxB;M3`{U-L5wN~1R z#2i2CRnaEuqY(I=zNX}P#NEyQBt`&W^+^M4o(th;=j9xrRdTRiYjru7aR(}$+-IzH z3_(QlWA9MwN?YA&+ZQg4;>4g(4~>B&{-f0vFPGTZSe3jmA8&8@fiZ~?0Gw1+RWVxB z+^>3^K6mn)<&$>URr)Nsc7ueO>7$EOFpd{1#9=Cbph{pRpd>uL{sqW7-C zGO>lqYu88gyxY@_rd8_S&38S!+_dx+JyrUtY~A=KWDwuqf7%_{J^gDMi*2W77qo#m zdwJ#qk}vWv8)FiQP=62+5z)r7kPGOwE4;dzlej2{_|Fmo=`V_-iwj_ai4O>f2AWJx zs{;-{ehhCl3w%3mQ@+eE${+bGB*@wWqutmUHuq08-7J#cejl z!2Bt|DYFqD^g@EYOR{GV1%Gi9aX$)4l2sk(?(tG<*fg-Z@uD;dgw6KMG{CWlnJ@$X zc{Bu*yBW2&7sMqN+HgRgw|1&p-XwA}r{{voRm)(ZA~Dc$P8^*^H1c=kljc+L^W*x} zg^>F+0f%V%B~q;A+rwF<@0q+LoU0nX=OfmspmIabC}Iq;@Oj6*2lBnBYWQ0;IwHu{u{02k^#=cW^jk3(R>_2 z@W#}2f-t(LH`!-sz>yD}rN~5lXrL62ApA@6hE)f8NJ>+-vwLXKU~@`;9{QUJ$&9!C zM$C~xqH_1-t(Ox$@#~f2TGy(o>K6j`>B9NnCiY=X(phWcJ(28smeF_~#iZoL3K)?$ zKsPiso>^(*s2N`m5Zsf` zp=(Xiimas!n>zt*O7(`8Y3u3kvbtq35It;bI*ezx0vQ@6S-4J_ku#Umbz%WpKiSKD z#PK)A2aahd69#h+T*v(N{M*n_BA=*-ww4>WkAFqNH#%tY``K6@ol_a*99w}=;q1=n zhY}+HvxM;y8hv>|)gL|> zv#l<7*dgv2uWtf6bIJXA?N;D(L!2nl4^2)^eu)RrT?2y)#HappT%e}*DYkQ~f0um!et)_7 z45LFD$i>26y(J^bF3RVD+Hr88W3F91T{IXYv3LT79h6fJulAl4r+Ma1Gk*!YY?``Y z`?T)DWctSQN$f8N8({wXUdv~)Qh0M53|TYTzz%tElsEm6Ez?}Q1-H{}R0){M5?*k- zx{MSxwP3a!HT6aK^)p3m1R3rTCU}iR03Gz^FUgtyC(q7>XC=$k@oB_A0rz9=+eb%~ zPeRW>eENiIY<%&oLf2wR5I9zn<`>`JH3JwUA9V$uE8pe#w#+?Sb28$#U2JO|+UbvQ zjORR>YsyOV<@-%=Gz=Z=HvhVlc$5l1Md>a4-AzZ#-QulHu^(IqIO$N;-u4pL9{S5>ft|TnhAXUt(8#Th zB4~`s-q^1iFMo8OeDUu21d(BAiK$N+MQ6GDI+!yOqH8V_P1|Lg(ROkZ$S605oXl9M= zeB8UQ=>PgiAU+5UwQo+&G1T4~7sg}db*N&gqEY+6!X7%9lH#ap%C9+YFkxd(gcpoK z77k@tzqP~1AQ&(qxZ(4ceuNuN=Su=@$i6)U3=CTFyVVDgL2gnys{s9U^FZAXLJa>3 zyX?z}0bRg%aV+PnUOn!DTljtWLE332Xj`mMZ5_B_0RIuxq#JvG#pje1DDTz^hT$NV zMJp?-61~RHO^7F0NR^?N+Q7eBFYpgG0I8jcmsd>zD7e+Br=JF_S3S&u_ZA+V7iNLr z1N_WQyhulFI*e-os2VsahH~%J!L)1T+*=H+uCb~)#qj%p<`isVQ*{1ub!qIb&Uz8z z;NsCUNyXneW#YBT=f5(wR~0?cs&n%q=8-nC4jj#MWb^(abe2CU#1QkI0qNzudO9e8 zXL4ho3;e^F%H9Gn2LiZ^MsDW!%QlU>j}*m+vPU>R7dXdUKpZ`Uhh`?{3qNgSOj|cY z4qn`2m4+dfG{s|SQu)T1vwuzI$Pl!gke|I+x*vc{8+%$rBvN?5rDleoFbrZEI!fYt z??s(|dwOb2ucD0u5^yk~wM$&&$NuC-`8d>+>0)mWdlkV;Ls`sqTV~-l*)50Wziqbm zzxJ~FYRbSP`9yA6YTfDkNWQa;@5x*yjB&D`C@Y_40D1Z?R5z?!ZD?xVrpNGSTQVvB?2(SPo61 z_FO|+=OL_+*CH|^ru5qnUP2vP5wEH_AM*a@){udJi2_IlKSXf6cVSh4@cfyva7j*> zG6aSLLn(klO7Ffdjbs7&$|mV?K%p~e>Z-BaSF-D<_x!>x_hVLo9C1fTab$~bWS&A8 z{17D8?7A_P@}=3i5<*pBbL%kK#FsKJl*p&aF;a340bHpY1HarXX{MY7HQgBpDZbS! zR+sv%X?}dfS%fB-zoJ9c0O~L~Iis9p+@Cm?j|tqkwe)&^GxW!vtL*j*9FfpxSPh4C zFlVs8N=;e)n#gbNS;J`-N2^;zM*X&NH)$i{a0ZU5hInGD^(_6FpPw&sgaTwF37u3* zdOU1wXHQWXHSgDJ8^22w%8x2vTNAv#p$1uGM4E^IPG!kU+`U&%15FdS*?)#9#Xqtr zw(pl(u|L49MRV(d;ex@^5X0gApo4mF2t?UA%-HRxXyely!NTS9?*p4>;BE6P_xCF1pfyWnc~G)|1=dT3izQ`*!HC^@g57mHVbV-lGCHbzM9 zN?uhX&SO5`s&^wsNPeO%z>8HcPcO&SUt(Z%hT!}&9GX$@0*+9U+1mr@ze}IU-V~*_ zj=7uvm8WrEN|X0o9~BlQTmBTe0EY^mK0RVcSv}7#>~VtI=R&3Sr||Fm zYRt12o-q7-nw16h6WoTq)8a0rpSN#uf=Qj#PE3w=~~+Pbkl@SDvo^ zBE8-462QaRIE;aoUKIz{Zj@t!6F8o*mxa>~YKgP6!`d~?t1*3U-7|gc9Ybz#d^{*< zV=&62&)EKv*z|PDZ>S027CYI1s8*{nfSNfECiN<`Rd}^XV=H(T9+X#31uiuCAHz?{ zr(#CMVc((fV+R28#igY511?xh*u9J%BY6pb@yo=q8*sr09I_rlKCq+-nhtiZe z&i`Zm28;Fcwty1#=@{43y>uyFnaJO6S3H+fVo9g5e*=i`vIz&E=Vt-bCmB@`+b~K5 zakd?{vi1GHc-@neu9o(`ucL=Ay>hqxJ_+0kvQpFRTwM!djA*KS?RcgUu0z)daD%Cd z$#VgF%2w}dX6gEbGkcG-0z{n=hhy0CxTFt@cDDu0qE*KgS72@m9#tlvu9Ya`(A+X_YEYn z<@%hqYT`cU3h3&RYQ}6|Y4y==bT-Q^Z#EDD>5R`tlmgtQn+jP>$n%UA7*R)OCkpUd z8#iBuZ9;!c`m3kh>8(T-34!`Hqc;)Adnzytp{X0-y|$uEh?`VxONG9EH4PQjnIM>!knhV%kO1f1YICwc_$3!%0>1M>g?O=nUOhG<^2k?JWEKv@tQLk0^kO zV)OO#6XcZu`QS(^{w45YsG>VxN2ME<+t1Y#jSG_Y!$-jkb_8{TMf-0VO|Fx*j9RbM zhcoIk4O-VkL+)y?HBnaA(JP%OK1um}^BcDQ)%=;tO! z;!I>xE!h$`sGYU)sT*$(B*t-r+i^HsXvF~03m}D+@*4!#eMl@HjWS+1*K4s)EPJfJ z!KW70GJjz)&xvEl{1>1FMa0?U>O?2sObm6u+T2>lE#QKx&dLp;nTC3Lu0&7&hq?C* zYO3qsMiW9&IwGK;fS`a>=|~p^r6awAB3-%^X+f$KMU>txG?CtG=)Fnrq4!<`0diLE z`+5H7ymRKvoH_G;I3F^}PWJ4qz4oft@4Bwv0^4UlJ|x^JnjVv5IXF^|!FC;M_Ae{- z2ceLU@t2kQ%ZGD)n{9CL` z`qiOF_{~Hc>VcY3n@g=H1)J{A!dH4Hs$5u&s&SpKylLyVC;wKv+Sb>gF^&$?@jX3C z2M76sc?QB?zp6BM?It_X`d#M2bI)l_gB0pW$J2MdKZ8bR`pxL%j-iq1AOFKW)A)?j z($$0k7$<-MGNw?+&u&i@_*kp$$6fm{?VbKdr~DGxkP7y!ABS?eze%V?<1*+-wd^aWGh40#&As`^Yins zmpY;#e+()}<-cN8%r3}0=6&G-1~38wLCWLH7yPd0CU^zU4Xbwe&qhX$m*-6=HooqS z33Xj!w#Ss;mg}N6;TSW(dpg>hfZ2YC;XUo7gpOpP0ga0U*Ajt)(tjW>ZU}KzM>UdT zCeusrb-KQK7yaST`o$^I5kgBo;&WN>8f7xYLd;jI7 zH41+GFMZ80;Q##c#pke^od0qG>JqLGG^BGs+EWW8V!S8TFC@LS{t>4Q&dnpm0lpOsVw!6+`f0Xgh2&L z=)RjxGV?q`_561~OxF8?FzJgrSIA1gk7@+H7msbdUQVWRc>Jq~5TSvT4VSxo4tmziYpl?}X;FDN3aH z$?WGw`$)(Zs$FoHo2as;mlq%#((h?Fh(YtgC6a{f-^>ymZnt3OuTvJRk7?7csVvqz zBzF-fBt?6+KkvNmCp;JD_F&aP+N*(P4@aLd{M++aE+6bqYI?akwlFWB*sQ(IwZRzL zKgl^EYF@6M*u5&!vB2~jWF`JI$T`s{Q2%||w1P9UHFj`JcS}Hb!<@B2n3)-`;d5_N z6?*5@)>KKFhGl=wIzGN9_L0~YfXGt3C~9EvX_L{CAEyXcU6PO!0>rn5x@InkopouK z9N$Sg_X<>0pFCaMaTl!9aLmvkaL}(JnwAy%vP)EYbZoVh>NK*kI59qAjeU-8+ocVg z3Rx$1)+6I#HC&X01;{Mko!fXI3jL$e7+bel#_zivHDFg z6rK+=u71_kL#rZ=C!|BauRN<^4tXoDO7snRRHMG3yi>)ycTH zUtgNc6mAaYv|8Soy=6sIil4|lCOre8k@x{&9hChk$9=6r2F*47uvlti1uylJkz!fF zb1u}gVB4Q^H=257O=}XB!`o!acxJ?`K3Fm;lUYRqI z?zWHbJFDs?CDo1lsHP1cOw-9jly3_yaY2Gf&V-Bi1fEheWCSD*D%R;w7k4CXZf-I! zFTYt_VRv+wEtlG`n7GPLO0j`=3~E=^*UuLF(0r)Lg;=rAh^=u!)@PrPoP$nwGd3ae zW2f|^Z`bhw;S|f)yT+}QWT@Nrx=3XE{TpLycA2Nkk&l@)X~aMP5wbSD?RjPl@i;!IIdE7L zB3Z8MG2hLTVx7wOY<9GzM5?PjLB)^h9B}2?7%atb7$b!#^@->zIuzxdWv>{lrMg61 zeYR~W>yi4oC#_vZWj2V+0){18Q)|Jx;)A1dlW7&}b^LSkSCUNr(0Idmz63yA`@Px4 zcMEl|i_G#dG?e(tO9l=+3m~2m#{*LA;lYs4UhEOD{~O`fgJYbS6%Ja zBCvH}0S}O}8EC`upb}@3_x`q&AS}>i`+svK9@u%Rv@t+}R2mp?=6>pUZMe~g?ZJQ; zHD_I663F*kero|nyCvnddtd$tbyN@@{J~)qTUo@+Z;xE3a7pz3YkpE8^>%59K)E?; zD&4L_Uu&CpT?U|2ISu${+M(iS6)ATmc8O>6&`hxw&RR!lm)ns^DE8VI$}PoWALyA- zXf4ilMz8f+4pb@W6V8}Qg|#h*F@0UWV0`yW{hJimxF5jz$PIMu^D}C8{t}3x(>esz zMow6L=ABk2d3@;!7m4g1{1b%4(1uo9*;zO57x~SO0clE0*SBx~L!TscSz2C_*>s+L zBX|Ekr0`AW4Pb|`>3#FJu`J}m`vL;uDVgTov8XfD{NLKLa|%5F=|AD9vg3u}2^STq zv=K2F%8SyO(Q9EGMbqg8vk0zv4xKE>LQCvi+tS~ zl)(U_z0c|%k2Jk(%D``*-cBANXT`@!?9<|jQ5ukh_mE!>lSPr7Ndy=pjM#(_S^h3V zlQP4vO?ynw5t04F)xp4|=Pu5K_qkVVAipr>E>e0w9%5z+KfV1MXnaXPS^N>yDj_c~ zuT0KrD-IM2b!#UD{uf0-o8O9PEG@?wc(>eA;aBgE`CkLp&``a<&n?3%K*qWb0YP4Q zJ$DvB-c(SyG3oNMY0q;?^BKG^`SJamgyMdYk&#AKz%>C-4+T_YX0pI4_F>LL$dZN8 zGkx-)qm6HX0B=7kdkp*HELr!bd9BGeSH7hjC9Eo$mKO#eFme!SUG$n*rD{u4V2hGG zYmv8%hiwH(WjAv{radp!Za#-dZ{8FD6&z{NJN|x!N!ZP*cYf=w{nmiKD`94xTj6XF z>*-OlEmz@nrxC)h1{&Pmqzw~E!Jiho9mbpj&baxAXiGpH`+C(s=UFORJM&YH)Po8W ziO1y6WJkmIQ^$$XWI@DRGxVE(PBOJKk?MFY>awE565d(s;f$O1vGeUzd2fDC zx!n}%*CTlGm*!^A&_ZT(W*-z6_ok0h=4X|Xf(N7awiM{hE`J@$CX-~aM+WscF6>HM z_(D07%O_633^ZrprvlNN2E1hjDt91Z161W9LgrEs7I)Uy@Jk&|V(|kZ+Z;jf$d$Y^ zK}SYh8T78?J+}r&aS4f$;@h_qR3zdqwZB2u2A4%Y^GE9jJKuYlLh_fUMXGsfZ3mY) zJT&UsA=kc{{%{o~Lz+UVqF8*=Q`csUYQ5VF>?6?XDeI>1O>~OC`n?vgb{1^0}aD}<|r#E)0qvW{rP@cU7 zH^=Y)`6RJ^nDg#Yh4jK&^bx-6C8N}I3<0_)f&V%g8LOzMK3mx=klz5&*gr(!)qYFR zoIMkHULoJ`IRV*ZqLAHhZc0i@tr`ZOBMO-SDZRVdAj#aQBVQ3T8rVcQ5<* zQ6${{{&&1-*zAtq#FjNb509^0{O%Qv!|$Z1l*lwVbFro}-=Xc-3>)X5#HI7$ANB##KO@h> z62@@HJ*OsXDTi!O^r`wk?c1pKa>wG8@`U2F?D(|oic2TK*_rmzl*P`_%GWE2sHvUe zmAh#kv!`lDXVteK)7BsRcMNVg--h$;uZC&IC2wBjP?En1cUTdGil3c-8m+ijf5O%9 zsyX;onZBLO(ln01PpWzV@g4W@_m6)D*rU6E@*;2uAVuGv0w6NXbnutF`02EZ{U+g~ zzV_6enVO;DUJy_h5E#xN2SNWHd(+g%BB%3l_c!_yzHdmE@k7#+Ab$89tIa_I_PPf; z>KYn$$A}%Vx!B6PldHL7Op+^a)$?c1rB1|rKV4MvGJcf%e*QMFDz~pnV*9XJ`ITQP zv=Euk*0->$(6eoDE{ES>yp+NZ?PHP74K67mj6Lb?>FHZl2LMLc;x>5W*NKYBb!;z# z5XP4G)+WQ^oCO98tPFcb9oBUO_?!i}S8d)bkDmy}_-FX=^Q>AK_8s4on96$OTTTW} z<#Q1%b{3p=;)1Bw`~K82nxszu%kx%_8oS;DQM_(ygh7S!kOriaH}UrL6O-Lg+e-smg*(1>>xfY(t(n<9CvBhO4?x}{kxd?%tvjP=LQt} z1#83*%YAoh7xcM5af53@j?_}?P|l0G+|_Mmu65$yEMAj68dYa-CNVNTmoQIpq<5CJ zKTFARc^SJfM%A!$s4`ijbXFMI^3s8O+$~OPnVaonTJF4f@2rls{iof~F^7*_4RehF zg3^ya@#`jJ9{blYvV|YjTB_^g7tn&tL zwzO@_9=^091mncpww&?!lO`hW?rnnhs&7EVDi+Zu<-GKW zWeC7{=gNs2T6eY8d42?OU(xX0-66ReFLV8H-Q%w&WuesW4VuYmId8|p-u3?Y{o5s$ zQZ1m2B0lE=ot>Qm7v?;tnv9=0_T3+>fJ#(*M54x@Y8kz&JkpLgE=6{v^g(RAwUa-s-9yqOq3KCyLk}z+1Ng&)^Y0h8&mT)(EwFd1oQLHA_&Q(hrc6kqKeGg-(DWf zp^OnHleX-fJ;`sg8zXM>3pBivHtCM#N|1s}o=kxt^3vMhpO9KmZOM{8iP_oN>}flH zVvQi50vrN~ti925W{~sCAb}}eKLgQne!I^Qs}I9Ib5B4@i?>HDj>RmW(DD&~2}hGFZoQF3dqeS&eX1H_xm zD^m{lWAU1U&4_*I$#SrD_P}+~BFjVZe22-f%Nj}E!@?UT3pFj0W%frDI@;%6V}08K zwxbb1X0;FM1FOZxI!=Y1&MpE}o715D&r*OUxz36O5ImFmuh|n*&PC|8b<^jL*ci<8 zlONNVc>jHscDy-8Nk`WW$l(yHk>4@BBATvYy^t2JB+Z8!x0u?wIFISfe_`lqf04=X z%3aY(HPEdnG21^YT`z$!4Vf%_A0AD%J7H41k=DpF6uIRxff8h|B@l7ja_@VPN z#NfZXCqUfT@Bs!e&h)9*0jbcc!#=UQU7%KQ8bG@ouXg3o$W(ILd<-VZ!v+}Hm(n%Y|RRy8e;FrXMWfyArs9(CS38m?lncJobIeWNlIQ7E;ehARs zkuuK%zPkm7!)$Gpfp$w0uUT-|$B%`fwI$;Y0IvlCAd8;(?-u>3+vUg!Fb-=rdR$vr z06`}Ij1I6sIXfORnV}kOgOQ0h0L`^LfbpQ&FMkGi^^U}4{{bJ+qw^KI0$wG+KaAK8 zNN~G6-kPk~YrJMDCzftsTZMGg9hKx2%MONIln$k}41McR{v8Pq5PmVf>QJL9E)m+2 zwuzIJgB*DIPBp9gRt^jo59PcsBbuOpH||)6ng6)f4&Sd16<|i&_lLNlcU4k-)4jE1 zwPVKc1v)6$@&w26d#4>lfUqvrqSyZ2BV4(&s+PkZ!N)|Vv6Uty%tWRLBSWJn2|wbA z3OJMhvQ$)x@>hX2g+ili#3EWw4^Wh>D#OIgru~3pPoj~o4D24c3@ZnY#^vSZ?>|_7 zj9BiDvjzRCETtWw?Pa(5E!g~kmsk@0)ZCZ}T=1Fk?F0g^d6UY*qlxJQAoyM1yA2pF zw9+JZMTcj;LnSCpOZSX2&T}GG1?81k6>3Jo`i#h* z@tRhcjX4nXGS7vOUePs4;S4NfAjCFg};kLQ9uLb1oVJkN;zz%ir8z1I-zaU&7MzgIE-cnboKpX|x} zKVD*Z@927bsJV@5#_QvD{hPWW_JYd_-mxPRG5Y$B(|x8XmVHjSo9{KX^3VD)YN{D+ z@2|vvvy-M__zKJU)(;Dqc57M@S?W=#Qjx#InpYVJMv1>kV%QJr4LnaY+mw{3;Xz2 zE6pXzFsTZ%p8r-a{EjZa()mSh2ipGeuttv4f2tQj{3q`}U+c|i{@MT5_F&_2j*IOBPuLQ;0#?~qiy5}*RrQ3GIlA}n|66{o2XB>Y`9LEW(l{lA?@hH8ajGt)X>334+GBY)?U zjP-viL@OEoCn=L^Y*5O&LRIhc!;*hG;dk0XL|)J(h3Xoe<>~rqr_-`z>c71)8~+_@ zqU&m|qiGw{nq;>T-$K)E(NBfL+&uK-^+GZgc__??FM{7fd%N)%e~d7XJfD^?19ccsp#IF0q+0rB_aWnSoihrX!)RF(2LpND;v zx$(}!MRPxr{~7;`{`U=?V1$|O>xg0=0k3dQlZT+Z9;D#kryd2u!7}-e34)#%>aXVM zdAgIw)Fz(cTYYM5UZi`+S8SWsmwaI!b@zeqah9C5dnxAdYVBvFp|MB00Q%aPBydzy zS9myDU_vGh{OX*XoY=ISE_otDA05`P?Mu)h4S-)(#kNoC%L4lF!J)ewWQHE%IY!N7 zGNj-`=hOYuGF#M>b{Gvkl660qCxZ_HHZPj2D#?X*2AtI9W%_r0hxvF+*HD=R`7Z~JF-MXclxeENcqgkU{3jFuS z@<6am&^8!>kOBs>#Xcc`Gye-{6u@%*7Vvzkx43dq36UN6sZIK%%-^H*2^+!ohCO25 z#HPQqedb*MLA~Xo4n8OwDA!zOl08m3(9?pYbj@^u>*lCoz4ye)okp=jnyWZt&+EXb z6sTQr=S*?fo9>0n*5Psz5w{ozs;jHBsYLhOWC-1zK!G7uy0pmbd^mavw zWj{Sw8OQ*Y4B$n=uxE^Yy*?hhte7=Tr1tZB-qs1-RYn9_f|bE-(>4Z``f1l*VFu6C z^jfV;II_NP26(B~C_UxYD{k3lXan}V1&KH*z>Hz4Z+=rb>83Q&_wsj3T;B@!=ARcoc2-Fn7PLXs#lrrb_8PMIe0%zZBpxn~f7<24+{c+;wA_WUd$7OkLzJVh~hZSexjX^->uNeHLz7kOYkoi}SFXSy+* z!|pt-K6-H!)qQ@i;`5u0VYX#bO4E;+Ly47xbCzgUWxsnDQDn3Dv`2_6#M8^4k&&jE ziT8yzEVhhY27wv~NvcDoi8$e`^5RfE0KlsRFjT>sssO9@Z@^9~tjNslwwO>X_M={j z#p_|3xO>^xfZ9bXj@yWdPo2h7r=sIU<-2wDP(A;H1MkQxVvl1|HwSc|#WnVCfTop= zeW_fE4X!tSX1l5I@b%TDq(j{?bwTX`Ap|gX<^V^Z+xy38)m~B9GVs_j1;}fLBqr?x ziSSIz2~L#LO@_*wCXsKu{>ue`-vwg=>BH6N=$oJmpcYD8seET{AWQa1wDa`wq{C(Fm z;vlyqJOv;eu{;(RfmuozsV~?L5oT}Xz$d6O!4GkgezTl`{$9A8mYm%4RRSK8@kq!m zIq#~dJ$O&PK(Hq)QU2YL$COJ?7p_u@s8%b5qV42f#e8%4jDta=kD(!_MwXk9Amu=X ziPZM7G8>B2Z)U0<#?DHKby~`>rcF8D&=?w~Ja8#ge(^)nvuiAkgwC`XKWbW;;FzapokYz80=;7~#5I*TZ$2XU~Y z09p0i?zF26{|;-=369#`O~G{K?Q^Se;}J-olDGWKUy+Z2ajbFc;$8Km(r*&dUJ>r^ zBfbE;#c`EIM#5N3VUPA{XOv(eF>qggZezm^evOCYI61m_i0r$t30<9a8SJvGow_zEp@3J{ zEg(e=U9~@wLTEp_He%&t9ESK@ou^2hdPPQ(4~c7e4(2`B*xbw|-Y;_aP)&rr zl9+qSKmlZ;r7etqn zdZg0HY~xp;6VslEa7Lh!D+W-UYLeM?UrIhM4lYV*<8|8-iM8!+@W_dJr2VO6+e|2g zj3GFq@SzRm<@t%(P^I#pNHi;)7)=S;9K%rhNd-wYN%ec~Vmn>gwL=C=j^Cp%dH`LA$)8zrQpdJ8qAHA#7wV)eCh!-W|O?Tz_he_vqR+%w}5p z18+SK6~ehuhkD-SV@2=&HsQ)ew~Tt^Piv{jggk<>~r?M=S>Jwe(DtY@Fclw8c*#jswMzXSS5NfowTv-uE9==jHK!g@+0mjs@Uh; z0p_0C(#Wx6&DH~QdU};6{$qI)PYR)i09N!jA#h^%r4i^SLmkzBOz#YPWl92a zRc5PurUSxvlBj=^C0(atlWmPUyYM=gtn-a(oLP>EAqC#TcLn1AZfeofA3YKy#n3dw zUXg7LT=Tmda-|p|bl2mcll3n3W`2XGC07ff=}?X1nBmo7rVZ?%C|(m zw9*L`zEOcsQVnw@P`0^;e})zc{hjVv1WLACJG^?-0@3lsLZtQm{W^BZhEp$r?cpUv z_WtvYFA0JKy;(%{f_#-b)t7H9SxW@o-+S4J7%DP``RW$7Ec0rU(Pjkuo_|-gV;kdy zsD6oydv3M%34(G!(?QxJ#|YAoGlU9B_+Z9FePG6$EVg!8u*9JxBGk%->> z!r7B^tlZ$O@Gsaluae({8P561wqhi`1jJ)R6eeKBpM?i0F-h)=FfJIVTQ=GfubpAJ zAPfp_i~W`~QEbIOMj4oC4IFlx+zic({D1}$;s++%m<{ppO*p;}B=Me%9K3V_%&l$0 zSi^bGweKNsr+~E`7zm<4761bLW5K`0ovA~$r*xD!&WaQ*MA;)8Zh)9%v8AufT2yUqQc@}Kfrr4cI^go zYJqNntdK{7#8C;ex^(_6OS!4v{hpulg%sxa8f5jrS;T)rrhq z1_sp{H_t&?jKl5qgQ}>gy_lKux;dR^7bFp-!nG$25tJQViF1rA81VS(&| zeJqe8L0Fd=j^q`}%&z4l#c!bE`jQnD;_ux$PXoszxf>= z{T5&Op2>2_LasUPs_-(1T09#n<-3lM0KEn%FRcIKlCUV};yA-~#TJt4) z?*5MT4MORjs5I*-wf-(zA&>5aXJLw%r&I!vNQskp{KyGh^ku^N5B@Y2gXe30bnnfj z_qn{EUPz^slS+;h!hL01k&G-XE5F-sOL&%c_4EiZYvzCspw|xOK{_G^y{=!@FCn#7 z3D*3N6&_Oa=>D-J5{0b#tWi$Vl<9sKz#|k8IPooG$T-o6rNSgT?Z8Pn$-jSf)WKA= z6ilP?AK^-|vW9GJy#DfDvakIK!)b$2}RlcQ&x++Y!a}rbTMYaC; z7+{(DzU})}Gno{w>2UT-(q+{tLG>PTU$8*|O>3P(`yebyqUj)1xzP!)Rv{gXk%_l8 za6WMY|NR*~aSw27Dw)a8zUy98w3bH@H1yP%n2$x>J--FX_<%3vT||~~lS3!}&mP(y ziFwN-qto1Tyo#MzrVbCfd2B%n2hx>l5S;{0_g|BeHVe}XRMP!as%TIda$F(BUP2=3j<+0&a_hv_Hj~Ei7Vh4W%UbPukMR@f>q#6pu=2M)`%Q zZxH*HTxTQYZ$VN8a1*Z#nT+u=+l#g|ravJ-U7jNCjsde|h~{Bf0MKw9=1j28$^OwV zQ=k)lmyL4=-|!RMrdAmhqkc!yBOX{<;XC#VBDc|LGb6>(C@o=Mt%WqqMb=4{)TKPM zTndxamlB{~Hg{wV0WRAhmXX`OkmSS56l&tSKo|e;O0A6>(u^Bjs@kg3DVQc?*lxxZ ztX5zw5nB?WDrM9@UUa@7)eRqLg}=>m`c?5__1pR8KuDerw*|4lANKM7YaYunIxj@C zOfKXfwnn9WE(A#oKzp5Lx=25j;$gG;pf0!1n~O16@Z$E>TEZ3#zp#DW?YDazDo&`r zCJGh9fb_`Fr(L}+ z-d=kVb<)Y2#^zJ_gV}X5+TJN?!_S909fZ*#7jA39LUxm2LdiVZk9(%8d&|VT{PQNA z;KO5=zBDm2{d2tqFQIxy53!w_@NEAQNSGNIt`b{+Y3YFFV)>i^3ZRq;nIWW2(eV;J5Z$;r%CAp0?f7M)Q#VG%=0a_a69C zg#k-WO6|Gj-81K#}CF!5V~pTp;ZYhaw?^}+X!YF z@RNcP_RNvz#0`R78Bcaadyx6)^|bB>UBF03(0VZN<29qXB!Ry=LE#afnDbrkM-_b@ z3vn3y6}tTxfDe?+pvY>n6fjdhu`FcP4Q>-BHagJ)XM>hF{JLCyx6LIrH;;ju-?c0a z#@U z>eVZbBoWuJTlU|TJX&u-%mn$}3)IS8&V4pEDRnwJ4qe%H??h`@gX?3ao8^;h;t8dH zoydXKq93T{A>kf$0?9fn9JTYyISp;TVY;ZaMIhGr$scP;> z7c$I5aS+_+fNbGp2R3&ZQ%v|%%`@K`W_k@%cREXiO~16LO@wmd zbxhQ%!9$h?y^En@eyG))PE8X_!<0yDs_~oa(-y}Y6SEa=BvRKNJI?Rl4~5&c6>QwP z?dMLz$@D-TPB&|E79|A2TCREVe&)HOBHjdTBy>z^h)%ztRl~#D@)J8X2hbBxlLLV1$?jM`~W~>@Ic=@yDFjU-=W* z?`{<5^ZCMO8w87P%mJtm%vwJ+v1s4ML>AU|A84O40cwCcJEH)?)y2rjq6ELLH*IWV zI@|)`o!?kRWYw5!h-Z5Mpr|8RiU zPnYDrsLF!FQ?Uf~+rlNE_3}s>{)4M(fuhD=^t_pTXBD6xreUcHEwuW}1gy(@Ksvv( zxqwq3_$Xiiwx>DKJfCaO7?OQNa)NwrEZ5oAsn2w|Rq@m0>a;68v6v`N<&T)6qj#=l zNe2EF=2hItViG^l+#GiuvMW((cBfX}$B~%#0=^k_zO1Pp3)dq*_LW+?mY84jRexQ) zy`S(a`t_;sH_-I5b7y)!TfTu9Cip3!FR7mPzvh6J$4CXwZG)GBvMwU~@$8c^yN)9X%crsp{ot1k1PN7GJ8)JP#zGKaCvF|`pT&I9hZrzc1u{y;R7ENaa zIYHls!Fpd${1*IuwjCw@w?b;y=Q5}pO=J9CZ-Q(%m#wXcgwoNyJJ#Z%^Kt$-Hy)aSIZ6oaQ|~lvH>ENCDCPGG zXZm(Ol`tLwMa?Or92lBW7a_#AaT);Rc3W!x z;gA&Bs`k~eWma}hzsk!Lhus$JXRuv*JPj$=&r3|0_~5kImIH9KBorN1k_fgOfAfvR zz;oBxvH!ql3DG7SB$#ylGv+5$w)vCGQwt`-zyHAX`6A;DzFzS6KX~ z5=Jqil8KvfP~8#>60AQkfCnMskKOzYK!82|v{)BXnfH_xB;mMoat1b8#~Y(rK*V{A z1ri>l$C46|X^l+@aqHHaT4uD&&{5o5&cF0jR2i|{M*5kj-<59rVG$ll*iNfuL*2zV zTE(}swj-w#{t^pQc=C9B8kp$6A$fRrXu2PyTO0u|Eo8k<0t!yKKKY}@_&cLHQcwLP z<);&R(|UT|vz%cvSUv31rcm*#ZTz-K2Gw`(1QZ@(p>H7h)UEZPNVkO2d#>HXC!u}w z+xF(ZJI}<##5+V)g0HPht}n-UUtgb)gz*r|r`v90Mgn$&@eRQw(7oehtzgu6h4jpa zmeaT1mY^R<&`c)3dfm)W6%upp`l9-7x;=DpCEye zp3$3^HV0`4u6G{xQ>Wc5>cCV?2Le2SGW3!x#u3o8%SC<&j+lVV_kn>I6L3=HArFs% zWZT8P)ue@&4{WOd`WX*mwR)nV*Q!gA^ExM=Ibu61@Y{?y$@+$u#0jkIS>#LgBo61$p1K2tC?De_$&^MjIp>X|hsKE_y~A2iq<*Oqw6z`s$zz^; zy>bh(`XPu$V~9iWpFU>Ll(Y}(?zPL&oA(8Nq5=-H$)%+NNl=LHH}(GS)26dYhaBFL zz*wrBsEDe4qQq0!3e54S^{g~DJC<}!Bgj7}B4}>(v?5>JC@7M}UBj@J_($b-XViuE z7r~#8Y4@7_A8@B3JO|hWkA}z;#qW8|?@pF+SgIc%FPWU#i&{PUIhHFfzV^!P&J~Xz z*CoUFcM6CY>1CWf7p9@)aUK@5dv#Q zK2d3x@^7XGqxwmA583yHQI4HV>fDBodNkvO_Z&ElZ1g!-8v{e0$OHD-F5%OQZDqeG zinWQMALaIW$;Ks{y{t5O@d*wzN3WJlQVdgCC&5GmMRa6vm%;9 z?6f0$IQx4Tm0odxN!^2a`As=g1_=8WAKV!L&CdS1LtC*wH-z~q_9$c(ZdsIV%tA~k z4)|wLP7o}M%PP@=(wD6VH`>C{G^ZM(&d+`02CV{^tscKuz!V$7FOMOCfx$Rm{)Kgp z5E)ug26}5#6+9B2N7&RtI(hsauA9V@J=RZ>5ap&P?nBVE*#mBA8ee8gNa6C5#gt@X zCdKh8TbnX%NMt0Lq@?85R7E79p?(4?>12RXSzDA|k?fNl_B(+gv>WZ~Y=raa24AiE z1<9;oaki#8mXHYZ!UmWA{%jv8?Mh%m4RRC=2xRAMyMcB!wU}yjq{p|Z^T$bXD>t+t z>W4dPY8Ybdhsn8jf9G!a@XU?bh$BTBJ0qyqDW<{huIS4Gd!LoM$0nQRWj07HN3}WN zLRYr5)O1WAF)Ar-YRU+RrO9IMp8({R$?mKt#t4R!Bvcmx6llNkRMENd(kzfu( z!`)8-sEaXX@2gFU*PkzX44#wjjYh#TL@C&|#s&mF?PEM-Xs*T*1JwO+YATAna%-ev z0wRL@w+#4%8;{SW5uZ;hEH5+`j~A^y-CF@s6m@afuUF%iR}Pro8bepFt{#h*wRoTI za$Z5Z3OdB$4y~x6f*vV&D9=9Bpc=cN9wOck>AFjqUU5!FabTq}_l1kdl>F9>*Pco` zOtukt9=n@7N|8EL3!8b~t;UM?y||*p-E)J$+)(0mioDREcg9<)mVl zF>b8=uL`$!npfhQo?kq(6s0CY^2zb$Q28rnPl2~GZYn|<@)(%+#eVxF`19ibKxYfvgnr=X4caWd%iS158E$1jDev z&$~3|L%OIi4mdnvsHs<&EX>=ZXP`nP+D7w66&P+=m7c4n$t-}) z5u%|VVxpkgTc{#0-?_0sGa*XTqr=@94D4_=xd2Rjii+~`MI$_lYQwn(3YD(o%#N^ElD$ zDmd{i-zRKcK&&@8yrb%=MQgd;o%r65ujW~e3E?^U9{n2N0QP5$(+{r7g6p#S%uVnc z?rpLm9pM&K*b=!Zk3dKhSWOzS=XU3swWpqfB~!)_;vU;-&0{#SJAP~abQ2@nMcl!w+v z56A#Qo>Iwkf>Zs$aqN9n$ugW9%?EZTdk%1-+fr9uZPi&-i|=}EU*9%)vWHJhX)5lf za|f-7h$0a=n2KU@-D!wHX=pH7@Lqs z^Xu2kDJ~(;eMOtV-WJyIoFPGYb%bh11s#xjUV)_EcYia~H>0yX?Yw%&5!+5XOD(f< zlKca}0z;F!UMR9c=cY=PPz%F5SmE3V9;C--Xu4Z4?p-4T|LUAhD{72MYZL-9hA9CK zb-&wnk)wt+~=fIzRE&qd!y6p_Cgm7_Thabv~v785out#juFxikzQ zte%0mAQ-{`%|mOF#-PQ7Jn(nZwD778c8ZU9==@WL*g%s&kEY||Sb{Gx6X}*WeUH_cY^J;JA zYTC^w0$X~2M`b4b2E4OvZR_U>v&vZZ*l(_kYU+PDjMv7f|I6h0zmXWhZa1kmG*84*;MMoK4Pf_PoM4a}!V=2ia;!AiJs_-V9&&?-(Hi@P~7G|FQuU zWI-k!E$j;r91c!TdG=?ARyhpsuH$4|V1p_rKM6@mSsp*0&^}%Irm8S$K#n`KK3?>* zSU>NMglBX_1ThyQqaS$7cT0udbS9?Ov9trk%>}YEE z`_7Jz0c^44T<|9IzDP_Yy@1E+^|GHRu*xC`yBhT3&P#5J%qO*z*vow zS}`N+lX)3}>BdJ+wvQZ@6LAx9u+i_gGgE%DE`|gL4<6l#s6wjuA-vi;zGTbmTrq{DdO0(oSyxX>Rq=T$O4&5`^XeRCv5*m zlk&?@Mak9NvnNj&QF3ixDaR+~TbJqY`R#PF!q}N5%hj@A1`y{Y0KyFv+>F{@)fqKO71(1AIy<5LQS)jD= z7QaUs9t;G5Zo9K~zpoX5rgeLUgaKLpmBK4TBUhWtzy~gQ?4eEA|RBZC9tf9zwnv8Wr!Z~NOts_3VkOsR>9zadxWV~EKv0IV4P zc%01^ytYbzC&T8M_nHtT_u_+vi9lB*9QeK(@?UxW2gyi&%1C@vhjLBiP*h( zpB(5iEo`qP&@#p+9NF*)n%|{3^+0U}K=&w^rZ$V|Ws}%Ax_!55dq)hl_-i-E=^J-3 zWHYrUpbqnQ6Cbf(XRv@KjVR4Py9l*BZW&`D+SD{mHdtU~Wqn%Lv<=L5{{n?h$T_%w z4YPc3@0WS43M-jXW*jBL&|uWmVFfkE8G@?PoKwch2)ay#0ePCtYb~{N%UUQ9ApFVQ z-Q3)42X6zrH16Z~FT6u{J5hb(S(ikaheoc%fWicPM+I@%O5BL~X`S2pD;U zL;n2fhFlan0}Fh}b_&8t=R$~&zgwv9htejb@&-Hr3d4`yATp%55?S|JVY_u<_wob7 zh24{s5)=GuWIj*UOq2X`56-h5_Zk=fk)y2z@}JRua^E&!4sTjTY>t@>`H>UOq_4xCP9Sm4~Omv-WnH_x5^whk2bj z-#l#(t7+?pe`^u=*{hOfwFiEfrb2wuU{#%4H7HSP=W@lLvsrLZyPe=SP2$-#^P*-- zf1Y(qegEd@^3iq=>7NnFdKW45$Vskaq55ki$y`K<(<3^B*QM1EOH!(Y7zEwzlMIw< zG@Xfn*`)D@pb7XK73@FQg3vlt4EMUC4gZ%fV zBq%Y|m&d0QJKx6;g^XAC`&;03bBFNRr)lu_2>6Kzk?#{iA4p-CSb!LmBDIYP^gn7D$#%St|4~A~6X;FPw0Ms^11NI1LRAJLbp2_S06^B!hWh zC@Z_>Uf;XaXV8oTBVfSzx$oWFtmX9xABIZ@MIw4bxLpekVP{|8N}S1s-{r+YIKxbJ z%&y3TOL@_X%m}GhmOJY%Wa$`d_6(4Am188WP;VbSJv30V4?o`9Ok0{j^?RWXd3I0x z=`9<1?3e0GP)Lw4L-s_k)}ttgC0%6So&MTd*B#Bk&uCFT)zzNjVtq`itIgIzy6iNUbVIT4 z|Df!x!ZXm6@nl#rFbI`$66L{6e-?sp3OwayOp>%R}zqkeGZ zy^?b2cudS7*7*%jD8B`GXgC^{DsQi%Kg@k+0-bjwes}*u5p72g{Dpv-0R(6U@yF<&xi49O;?4^=Qft; zrX?xCuww1AJp?3v)dNV7m7|l%&g<1=8JyMY;0H%neLoI164BSY!+#7VMcv-ta19HR zXqN^%Z~)_Z?63-#Th^k+l|#<#fEv9weCD|8o}m56ki7gK1R!kjlQAzhgDcw7`0EfpO{cG}Rl)poU^KUt`Le#loy%izV>o0X*{PtJpf1-0k z2n@XNiHQ0f>&AdJR8&7$fB-Vq-9$4-d={2;@A@J#0_#&^qK3(fpFg2r3%2zj8H?Jf zZ$TbM zQ8^1}XiXz^pq{M!1ft>A7_Cn0P>*A5!gbCEhmtSro-I5;5mDSP8^Pa;>xKm9-zaTa zWnUxHoLJf!HFkF!K==T-TED*Jv+xHPsvk_%=pm3XFdTD^)3SMz6;7HzdX zJrBvq6B~oY6Tj@4dw%x?-H4{PI79OdNc^z$S|#QoH-yTBV(xlFk{l@QJ6%%|k!zHf<~&gG$N9sxbf1C2y-9t#);ROor~k8?`RT%tP!N+xDh z>Y7W#ly0B_hhhk}9=#Q@8)onsaD`MoCPsrMEXmFuNp0c(<7}j}-M~`!20-Fz^`X87 zz4jl#IpWCNGC(5B%N~LitU@^aE!DIQXs4yV!A9Gmqcso|3RUlOv*f=1T&vE$8D*dQX;GLK1BQA zz8u&rdfGt2X4FiG;M#xxdbC_oXgd9M!SetWoLYqrO6@<}e&8$LJKfQ|6cpZazk?Fs-cUA>y)xmNs)Oul$l35?^63)-+&K27Q;zU1g+G0J=+olx ztanfI1&sl5#jjV?@W#vHaw*_33)?-&bufB$663k5>f^d|OIq*Roe%9Nd^7Y+Ob6~) z%gcZv4}}5%fJ<=rFUCukl=IY$cAEcQLzQl@F|Dgv*PcBBcW~pQK=h6h7(&1oz0kr` z2dkk9#5+5B?j4%gmZ1>V5{?CmY9^cfREt6xB_%2z8YghW59IE{wH=kFvE>^lALC%s z>5r4>+x#CxK(}xZ<4%G1*4>5W|F@9td1Nw_3T#v(2KqubMZ&Ri>Btxv zLneIs2fdyO$rlrW1s>*O3>!rt$kP`B3AzRzP*`2_j!OLLrTEPs;7L-m@54yoP-@D4 z8?4c)nfnHZD7f}_3f)rG>vHa;cxBjaLlML+)<{mQ*E)kN1uH?|f}hOlT> z7xy;nAw(+6;M)m0i#yU)iyier+#^tdY*->~Av@y^?h_$`mYVsRnK)l$VV}O~F)dFL z`59#p_cGbN=I5oPw9@Lov<2rs0p!#gl8eB?qVxlP6)pU?KO}hUvgYX=4=qFx*y}x; zNPpV>K4w<`YXy)BBCaMLN+Jo2D$E6RJG>oa-`zLa01%#*4G11LFW4C$tzE4jRH%Cl z0c$=Z2&a~Lp&>skI3%R9xuepJQNU7@jh8onmJaeVxPO~ILC!qjWad zSod>%YVucZcL#tueZMpJzj~gXmTnSX-pN^H>5UWVK-8a;%ky%R|2dRk@$w_$?Xac< z0S!6LVaf(uXwFGbhw|>oI4YbNy6g;ryj4v1e9Zps#g;a|EyfFw0Kf<~5Ok)mnzHU9 zoL!%;Ncp~qYq)*jXE{Dw&Rnk%+&@F9l6=ra%sx^G)B|_Hsy_OqbP;mqy4CXluZ2?G7I#B~<4%)7@CxWzly`u;1z{%$ zm6<;Y4Zi6Sqcm5iUXzJktm{Qw_Q>+W*UNb0{N2*NReuncrHDacda+%3nli|LxOZ72 z*dU5|*dYslplF!pDZt#?_7X$5rKw!w>;v-ax{{2)q>eOdoO%9aajLC7+L3PjQ{Z{S zr_f_oB(aP=lE2KwUT|us7D8n61ma}Llm~!xwRu4RB|o#Pczph$ z*sMXoJ&iYISG!0P)6+AiS=#RV_b1bcO642t1zgIH9oAN@jz*GWu9BKfb662kvd|?8 zSI&84eAfq?%zMo7vHU0Vz?mVc&S?sITj~<*X7}q8yD30Qc4*wQj>CRIUZ`)cR*iuD zk#l^5j4{Gz-h21ddwVQ$p~Wx!={q33)&tvg){v76im%&23{6@F@9-NBTUbus)#5Jx z;0%!!9J$mvMl<<7QMlA2|JHE*7I9hnH@M1a^#xHB>+P-ZYSVz}~bn9?z#xG{3$#Zp@`?NHI z_2=sko}Fu45{9v)^{;x~?-2~l9VWtMr~Dn++wxn!F4M?UpOV@%xGqre+=%w2v>rk} z86!_fYye#rB+>vBB<~&7^Kw%ZdrU_HN)$7HVyVLS;gIQ^k7Um?!x((`U*Cr#qN3(R z$di41NmhVw$Pvh&`$wN}JDAp7*>!wREJI8U!yfnE;Be8FJXh_%=CS>3b(C$4zO#P3{W)pu+EUqV%gg)aW65Hvg&D{S{_+GwPJ{AycG6@I&`+ z=3Dx7WOOrijUUz(!w~guOH6R!I6MZTu5d|ZsN2&cTU zOtx#W6XE*k-0XBzk@?JVKA0=y`8qw6MN4^EphY2qQcF?5 zFThT)sAK( zN?N0@!_Iex3`yL2U{}cw()~c%UXqF0WA(qO1r)#vhm&8!?d(O`lSm-q&q&7>3lWF} zgNF#)(OTS0$?YEPY`l=|TqrS8i^J*-{_j^{rVv1)cb{SkKnU+0?&dBPF?)qD2qB!8 zcvQ}5`l9Bn{IA3Qw4&k*lrCxe-U?dNOjrv$`DOf_SdMv1)mE~NB-Egj>0@M^)A>6R z&pQ*Z2OgG2zHCXH({YkB@%**3*eQSmGclSa-Uy6xd6&}4r6&>;iv$BWweODG6hM9~ z_i3zmk-r8Ed?%8N|! zZE$2-%BqRZAO9eF{dyj;SaCvho1BnT1SaW{dC&Z6)mgv9^}I%R7YW|@EZ_}sdFrDHZvK;SkN|92sI zcUm2V>5XiV9TSuC=kt|@?}ztPS@6x|3{8~ed!ClReUjJ6!u3Ap{;N@W68An@S;|Zg zdTbq~85|uF6$&MWd64kY$nusIPgRbEZ|3rA%^%f+%Vz}=3#xXNYMky%TiZp+L8Y4P zFJE?efuz=Cq%?HgW@X@9N+LL|{6#DdjVd4mK+Ni$S3m;H=J}}hK|9hF_?E0{SBP%g zY`}N$?5ATp>Mcu)aGj<~UTSV^u*U^Ch|!u#RwN@N`NHCych)g#lgW!TwS6ZCkS$AV zKmPnRu0EAUc^rn9O@DLk=s-#j44aC3>?oDGOhgr(NcAc&c}TH`zg;c=x<#3g=CQh~-Z=z_R8&f zm`mQ*3Qe2E)?=@y52s=dHJkp3l8Lx_H}GS;qq5+IhO-28PBqsCVv3~qTzuC1w(N4P zAN0MAX6S9H?(|ujs?=>%vki0k?@ixuHVi<(^#L$m%-?~nk!-i50NhXw@xS&{a!$p9 z(4!Fz0$3Iw3kB+`aIGV-K2ge`jTItek(HEL_uX?!VnB`mX6gDfJo0nPB!;1xA6#es zjZBX5jY!NQb*ozF3WJoC8n7FJuw3Om=g`5~(yQ7&>j(mn=`t=<65)8(1ZvW-$#BZ0dg{+oOdR*J=B~#rFlO$ zQ(uo3qW{-x|7pKjNU)RsqaxFG1lhj!1uwFR@j1GM4qwdSlBRj@^Q1H}5P?eg2M$uVEOUNJH$36Lf}R!KtuE-=Su{ zK$b@mvC;EiA0btAiq0!Di|WK7#J}6rOj?93&JJdxZlL!_Un=|>_{o;1&NcbOK=5Ps zP3HEg6`>dEEo)vx)M|WD6z*-HZ$WD?{o-PShlEfH*y)3p(!bmk{n>jBPycy1UER%b za%!0R8O*ZNUofQ|N>Q+&V_D{Zja2TweDac3K7Qvs{ZX(BX$6&~ z-Ro<^hs*qQ?J0UlbGr_afFfQ-vV)#wy6QSk$DaguH1)d@9uNfQ;o;%gpA*-V@87AB z&y&kRN|F)o{i=yMT(R-cRs6Y~2z)=0Dev%cs@W_@2|VS<=5&v5A%he(-ybnqL_fu+ zA?(EWt$wsv)VI@%pD4rLo5(bW(rHk z1IaO502()}eCnGXQ_2d_X1j*dq1@J`0s;7tvwM}U7HGH($F{b;eld1eez*D~AAn0-T{&~xY*e6^U% zJxVCHZ`^O;kI{a;!z4b(eNetCE~5MbkMV$I!!qj5Hw@N zFSyS@2w6MDOy)CT?K6VK&*^22 zZF~_&vhcmopa84Y*e4*0O(z=z8UX#~SZ7-e=DSkr@_?pkU>3xaqG+bAvOG*P^gBoC%DgL6{X# z>3|X`#L-8wjtq$hmsaloLX7Rrfdcm`4q_jHsJ(5Q65qot;Tc)ohhe*uFIv1BY9Lt% zAnZViV0YN^1h)7>W&>|Jz|c{@-@DYFl}!KYAysT7*ffxk|4r{H%mt}%z<%$2w2t1- z*qC&xP`|p64}KPHFC%=uHEHy}Ow`g;QO*o>%+&hzt9TjpOm@uRX0EH9;|9=%+={4( zUjcgL*6-d+ zo(Nw&@(N5!*wB*?D-LqoiL9)gov|?XPwwgxx-2!jil@VTlfSwxd z37zY1iM*|^uh@5U0wlx5^=7B33YS_p<}hqw>u^qR2h`3t37}aHb1~SWpY!>x%ubQ!7PK(oEz>Q-@SgLwNF48Bq{l`XJXieq)$w3`POFP)XZc?U_PWtu7VD~xN@VCvGUojB|S#YIa<&^ z;K>6Sf_oNOzgPQ3NLR?!4zogx!4OU(PPS~HC-FyXKRGmTK$>5|vc(5DQK6Z~Nnnc8 zQD`$HH0PS^#{9{-pa%Iw-{|%GbY4_NeaBk3f&hJ9=w*mR&~ebFNt7pBZ%6sQ8CB_R z&;I_0kYAV}+~~j*Lrr?-0{18Fw-K6~3;T|?BQP5C#LHY4E3$p9tsT#u|L4TTGf-N? zL{sdB1)=*0g{L1CMR$m({-;xp29wC=I`uWDyzZ#b`b;5F*_Z2^MRPlKlZIwvu9moW z?7iG`v}lS8v!LC~u3!TfbXg6I1gl5gS+cOu(uyTi@bomt@&9oFG{jR%_ow<{BAOJ# zT?g>ouBGIQIsr(Hc)Q|4&8O2S5Re+HnaRq{GtlkGZ@1Q02e!F?Ba4be!@_dcHw$Y# z)=U=;m*(6$)SYL&0?&fXGCc&pkw0-*1=>O8`}c0M)oYz_m$f{|ngoP%FM5D2L{!Fq)I0#B}Hs6Wp&AW)&)y$t<5h5A71?PsILTC zg7B*y?NG9cPrhHAyMg`u;g%#&0UPD3PJ^%4Z1ICUB#TyJt=<}ep}ZKME#E1wC{VUz zt}Xxjf`^JrHTc*kUolw{o%-5BlG8@Q>?KN-F>RK5^m%BDfMOc+b{@ zF^vCvQ37)J;R#=&p5w~hz4qz!Ki^vsIq;mr``<4fNcg#;f=1ateH;Kr<~uLm)`Cha z)h*6&23}{IU^-o0 zQh8uYE^+{;#Um!B2J7_t_|nSlU^#L$kO&hH5IAQ?L_|*mv^_Sq)81DmIn4 zSICQfKvE@!i+gQy0q0Jk9(;f6Ui#G^{Z!=ZTN7WeM{XQ&V4)|~UYl8eO;I4pa6Tz( zIK6}iV%yjxUIwG1RR!c4z%S4k#<%z8S^jw=sg%OR_N|toht2-s_OIiwQO*WQ3zyLs zt60H7wzUw%Q40Zt?@Buh_jTK=?U%M2i_{ucw`=9pXkfP(U1^lsBr@ESryQHqccK0; zu-egku({H9|4HBW&~GIOkbN$1Z*S}0JkVv3LI_Fvp)$aJeQ-%xXxm4AWLJwp^2#8@ zCS6h6lCjOW-9Ng!?egs22qp;?mF?W+&oW%bj{*K+p-Y#8v6f_~ROLCa%l|kgvM)P@ znF5?E4ld{3U5XIE^Gl69_#fS$CJrV%%M`x{|91J}&qPJYw5)^#9lUgG3?af(GEBzu z^yvf@seKIjs6Dk@;7`LyJ-_!yn(g`&2M?ZbP<=Wi+0LJhB0t(s`?J~?<|hPhT*gsQ zREbS;@YAc2PqTrNEg&%aF|aqO^WXrJ!`Hdb<&R2NnSmQeg=%8YKM*+3t(kW({Ydt( z+!g&kDE8yj9BGwt4CLrU*UTm?Ox|aQg4&ErP*Ad{r=$OOn#g0Ry1+WC4z0P#gqQHY zUWT#lW4mv&@}{t*3B91nf)=cO8jYCRis%c#GMxSbpE4@<<_dZ<8LlA6**Vm zGjh8kXnC#{*jAU`2mCVU!?f;1X9A|R#Xpj>XPgZ|@euHH3#*&QLi?*Ks~u}q=Xdsp z`!}8v*S4dP_;4^Tzm@PQxtt#NJ{M>`-%)qj8XLra|Nb9uNy*r+VZ%&_Y=_(vA-!s2 zsIr_~!jOt`uLux|E=Cae-S2P_CliuSQYUfi z*1XADbS`tdX#^?x!j5123Dmj7oQuAGB?B>S?p66~W7ppU zx{R}FF#(#8*qO!oKU2Xnqg|KV`Fzf(K{bPCIZPtn2frg_+H3okjDb_osHp+5^qKbO z%1S{TL1O3OOS@FEiA0h5NnZQ-niKaZ%ls>AhouoAAUG#`&rlsw7p+)3uVt5}g zXsD`^va`P*&NO%oD1gT0c4i@j`w4Bmy^y%0%LbSDqsyrYd@+x`b)z)T02vn#v#R9YI; z-s{C7a+z3i$lHtabhR1|=-3yyfV7IP=SlW{7d|BQvR$<-ONZ@7x>COdV?JcuMzdQd zpTncEj6$0+OkFdxOb_K1pQUX$u=0J(P#lD-TGY2^0qMw{8x1jm#zYlGJHy#q8Z`!3nh8k9RaQhLI0YP(F~#jK)e-e#CL;ti2}ri2IW=b;0U z(Yw~Q=)dLz@(!tA3cua0Kw_Gh&>EKmJo_&F7@zpC>v&D|jcv*ByI$Rh-nai2B(=Yl zkZtK>$&m+WN5b6752xGBpQV#wBOF1a>j|?YraNP3F9{Tf{L^U*C1_-Lj?pY3Zu{+l zk>^$92icb&QmJ_OHEutcm2{)dqdN?>1m8X6Ap6Qy=AlcK%k@=k2BsG%5$WJC?nAya zwigWt(-aSF(Z%v6ql*{R{HYckwoLb05cRq(XY2EHGbYcVK4&K$tA-=5hS|;!K$lbk zBX@6aua68UM1xTD=?E@f-a%h;AUFyO3j>;`xeGwYD4&tVylX}KCcA5W)(69G<#MuG zkl!&1m&4MI1W6=j!g5|DrfNz`mep3hW`KiKsL5Cf7<)s}2ZOQoEKy>i+iTnRWRAvU0&DhuXoxaS%PD8oR?kl`*6+{p2=d0L)1uqQ|h&yl?Qj z9yucw=w8%~!>ZdaBkT?-Eg#5yh(715T`xUu0mqv!gpUJHZEdE$suH0m?xr0|&7Hb& z6~zZ%-oAyJ4GM$!zUo~u3hf#;4U*-^EJrpSxdmfMbjkhRL11vlB% zVVi&1^ZLxd`VAYDrH%>YwuTel*cOtLEOVh;T`d5~$(bD8+R6YK7#!ph5LjLRW!-7x z;=7v;06uHMp~5p0AE zQ#Aac)bKWP?d0|_2uzgqbgmD7w1>Hv4aM%TQwDp?IIo-23(sk`YCCXy>QJHm_CnNS!XTWIzb88_P1Dv^Vq?PwqS-4eDoS7c@WBcs zUg}9r_eV%^=K2)4H7moJRbFuO_C$lXKk``ZIo&zL zt#Z3{x_K`d+0+E*Ia(-1-V9N^Dun+viS&-gTRr;qWik~f$IC7Wl&0{B4tjose*>MN zt{G-|`|u$HxGXGG>ZAby;=u1q+uU5q)m0=i@`};o=0}se;CxffA1&)Gdv4rN>EbV9 zz9*%u>MQ?psR>EJ*c;IH@>rm4Z(Pf&eB+zxU~XOV_2{B2t5Ix6R_(P5eEWeJB|k2U zgh-U2pNOy0ZllNYLNHe$3lplb322kv)fhQjkAgL`~Gp%m6|3~Hh*zd!;OTXK$i;mPDL`pjP za&FHk!f!XCaKN3%#`f#EdiOn=;t%L@E)KTx)JK9o zG_QEvYa{XDIT9EhH=d?oFadKm&>_4Pvio#=NnEC9L>>xHN+Ji>j*7 zv=^jSo~RRUs!qsHtQ?EQ&{_Pj^8(Jx21&rjuU~KHYY9dD1grYIjO@_Ge=p$s(QYGg zRLr49^25>T$*_=BH!ON5_L~qAx`CcnsVE7(-+dN?U{L~stX=?=#`BKNVFyC3o+9VK zFydh#+Z<66{d^^~1P`NDKjLf1)N}(gj@YPPChoGK+p`A^Be?cz$>{!#&&@Azz?R0M zh}B;p2BtW^b)Sa)`dlZIMNHxmi@lMGtwf*}sq+(Qj&U7`=`>o$(GyCxKUpUbMu*$! z+^&`46tFRo(mP+Y_!V|ZGUlmNTTd(N*vfDjxG?Qz~zKF+GkE%U6 zbS5!5c_50}*%lbeybDH;#M82U%FA!!;r}qCFbc5XW+rh3wT@5*anA_Vn63sLoiiq-UFl68c3{u0+ zkmdb&j3YA+3jO&0A%UdBC@Ts*(y!5mbSUHnKEGQaR4u}-i90mPHz64~IF`9~Q! znxer5rgZY>55;h}35*H~j(vni=5_?&^*O$SOFu_Lt*5vAiZFD1=lHdH?InN!P!E`v zaRN{L2POTPMjz=#HEBW6XytEhvyW`o&&Xbo&agl7dE_jb5&7%Q*an(?zajG$oM_B# zE9Az7v_mV~l#^~bE}}nc{c>Axdkg1T$yo-0|5QaAtC$!T49ybbL|9&JOfXZw@8mJ( zGL=QGDHkM9j{fwCOifMger=MmQ;1yo2H`v7^D?S4gk^?EPt~Zd>rWs1;LCmVeQ8)o zFg>L*n5^}+u#!Mkb?E8&VdY0F$4&1}#x9Jzo?JGsow$FXGEuJHXh`7&~#@57wShiYy;m2vT{ z5`&#b-waAcfX`!G8u3fr6oE{(Uq791%i_;ZU8Ir3GyIrgPse{_6*C6}P>p%T(oz`S z<-zCX=AMra=2unyCtoS8^*Xm*=)?io!_RSC@$m71D2bo-OI#T$V+V{7bm!C6kDMaQ zj3qD;m=hP2Nf^Mi9ErslWE-X*8N|EXE7|-p=c4#OT}U>D`1IT^SXxguzi`c}X`Bf*UTOQK=k;w+O)b6wM zG|D#<%U%%W#N^CO{Nv)|jB~|b++rhy*{mD-f}Kn{P3BzY&wrSZ;Y>KMU|U=r{cQj4 z>InAT-kyUyMuOknfN}~--Pq(&RuWSgM(gTILGZ)&!K^JSOa9$NRPCu4NrARqc05kF zC_tzWyZAcK417DgA1eE`{u%QA&PYVY_^$-lbbryD_6OQ|f|7m*`gfmQ%yfPE^r&uu z;>WD_k0DZ+eGw@{{nVg0TMX||_XI8>JFN`*9Z!6MWaOeFG8v+hnPqS@_Jd z(V5!AK(bvCiyk8vw-f17Wr80>9Am&Ogp zdA>$raYO(>y8ic{IAqG)T;FamV1IuPT6(hZ6-OC5q=LjB_g652z z2GOBtt~<;r+*T4|-4{nXyh&f-*0E^ro^k2->ZX$s z=_EeKQ09iV%t5-r-C_F^fe)%J>IZt2p|0auOJyyb`uA1?_!Z=V$$>rjTa# zCsO}&SW{4dp4eMe?lS{43;b$s*0wNzuPok4K)@4W|2wo$1tHo|PXKSovY1$Y{K+fo z6Tt(zSsBjfW^<2+XNacT-OHx^b?5*!6D(D~A2tiu3o?`=uf@zUkzFfb(3}nW5z}o43@2Uv1y>i!BhGUpQbAc-`xf_pGQv z$=Jg@!`y5MV@^55%2M}%lD3k53zE4mX>VMDk~i zlBI8YMrvvVbmdd_)bNmd0H;aUVq;57O78nD*r6{Mfv;dU)bEpLZ4zxfy>qFa9qB>=bC~=w1trzVu3N)2Q*8*6ft}@_E2|>r zOi-0B#g;AI$z}g$@2qoQR3Gn$eK$hTbF|YX8LA$41qGG<3M+qg@>TK+f%(?KpVoQ= zVM@e86hd)bK^8~pGvt*8$!3&IBcRk->2*})ZxvK_%$7OQfZ6RF)=1BOv| zgzq~uNg8p_b@4fDQtGYwmAfsOI8qc-DJl~G?*i{5wB*O}FAN3Mw}Hn%78ZkUyLOC? zANl$7mA16a&;Z8&3+p`k>x#C0@V-Jo6sqyN?!QpYiu`G()|!oZhjS+>G2Un9M#=Kp za86Mi@2D85Rwb4gF3v7CyxzYAh8VdlQ0X7fUi;Cl+>)=- zPq0oRW#M8~GY@_(t7+$(>va@_z>OfGrPKf=QcwrP60KB@xDM&v{_RBb_zg=3gD-WY zi9<7Lp*o=YtvcL_WkTodk84vq3DT=<6yQCTvlV6?ZA`;G>#Bb5hZpiQlWF-;gms%s zoryuAm8>g%%s3Yw-L;Kar_kvnGBs~+@6t>-pa@@I9*zKKpMcxCDJ~wKRbahxX5O*L zfdXkH(vVx^B_}takQUB9O+V5Clpx@E67{{SOTp}_=>RVd#+R`#7s-O(9rAPy#2oT4?|zKBGbMym~`8r4b9$# zv|NwcjjOx_38E$r1AQxf(Edg&Ay+jiJA~3rP;i+pRJJL-t1Prn z3Lb+2W1(}uh!dP#dgJsC+ws0yyG~DoCl;Iol|D*L%fRx9EK$tt&%|idEf^?!*DC^g z5Xl&hPOyH5e>w}0f4=d=oDDyet%;6z5^LaxG$h!#ga`rQW6Qe0ry!?QN;pX5lqn<$ zB*SN^FSfsfSvIM_^7kVe8^!)qYB5*POQ$PF0Rz4$^ueq$;3SUD;Ww@n_^b|gyzmk$ za`>V0+Coa%p)70BKd@2qeS1+a zJE#Jlr#tG3DpEkhjsmATF9YVh_+hkH)wz>>e7EfmQFLwSGRs2Z%~rA*Jruv`bmnJakavz%MP?SLw*#wd$;;7 zR_DwM!58;LN?<{=GVke#dP^Vi%T3o~9DQfZZ(!2~bnTeDn9y(R*h}yVt{BCp13<$h z2d=i0f=g+w4d?5b|cnSA6v~f#kcGU{+G~-_{mn5TVr*pTtJ(bx5D{`4Z->P8Y@qR8%(nFN&do0jHSQj05vQHHDa zAvrB%ePiJ{pnJ5UW#)aT0|Ej-Q6F$^s*J6khn}lcABTkWX9n?%=$TXeJpSZ_e}qgg zS@i(hSO6IU!NeO|b1i@EwJnFos&X(#1=MZnrSjZodO5wQBSO%@AU&s%&<6SY_u;?#tsrZ*kea_C!kJ@NFWEmKCAZmDG_scshASiC6-IH- zhxax|{N7`=$|9G(G>b%SMMVA5y@CB>_0FKdgb21o>>NkYwq7R86p@sQ zsYjk~cPA{trrKOX=8wiCJVgH9JL+mf*tG@{7M}FD>3^rDsgS^sFII=I8Z-(){mQe@ z?5R}F6c(8yI|q0a8#lIQ4eOf;A#cPdYYIA*q=z8StAK zOdcQ1aMJd`j))t>=1||0<1JdlN5e9&DE))}R{G3lY;0`AG&D4b1tY4azW(aq2)bX< znIFVO$x2i4)8+i>1c$J260n<92m@?+auO14eiW6Oy1GvT?th6_aI51vu0YEpo~uZ& zqa&`|ygVp;oxFdWl=crtNPMXPGmhN&xTWfxJ1L|lblR=#Pi>vt?Msa6mksy^i1W29 zBnLkHa&cjPGo%^Vl2TAn>6)AWjtjNJAhrq~q|seC5tKIl=w|5#86e{kKUHV1?);|9 z+m;_pgC5vwwy0?%uR6%|L+sUzFtB38`vgoIYH799iHBU*HtXs>-#PvJ9yKRXKR=cY z4t;HR*D3X7d9P*52J!O2fo4iE7bxi^BqXb(6c-yxLLlH?cwS6}>*MT)lWYI7n5UJu z(LN`0C)RbmsF^a17Y>_JRx}MEtm7Vdr1$zNlE4YvE1QX~$|t@z-p5xL0DeMW+@fvj zy3o`wXns`l2Z`6)RQ~0XQ^bdlzQ@!K`kq~A;qHXI9kQ*-n?ge3{E6ifqKIEF1d{v_ ze=CqF`M2CmG&s2R8^z18Nl6I0`I2V?i}^*Qn=J2tAQ znVQJ9LTf1AS?9P-Uq`tkzH-&_kjTo`oX8+7)E|+xu}1`JESg9uAONh8+}w!JD|VDz z=jD=h(<(tNRfZ0hvJyUVFS8ag@%8zhTELY^Yn$7ex2?d+$|j|F?f-EBR>0e~vu^B0 zN*uar4rmpUGKl}wz#g8L57MBjn&0H%?D>Q37BB+W38uY9LK2k> zOd?&koCIR21r33YkS}Qmu>%&U!TxIdbId{(F1Jpaa#y5{HMo2;l^Zz4ijZ?(s4yr9 zzmJKr+Agh>P=c!$jRvQ&W$&@-4GvM{)FvR^HOK0WVu~pWHQS_y53%cXCYUXU$;TpMizfN(y@09=q z7%v4XW4z!<9Q}*$?&Zf>qK=gngL{ihSTL>|(UHx(!Mxtp? z?v0n@7@dOQ(2pkv>`9)H-&>vEwo)us6Uoc3$c$impC80rBBk--V^*C5#0M>92eWPQ z=PT-$UwYusOz-Rx+@7dMxxiTR0&jm`E+t|k3}OFP7aW7?RJGLEpYRZgUXF0dBKZ~< zwRA!+__DIH>UA(enfm_0d~7=q9xtR)_TwTAs^bt&Qs2;V?6Zua4CL|sMbz6O_eW{d zkEVwIiRPVGu57OT_^K)zGnA1j#%PkJl3H609D9`Mw>sX)#_d+rqn?5ec;%Zfadw#K z%gwuu zDonugN~logoC1>j`gQAV4|#n8Br-Bm3Mir1H;S#pM5K^>Dfj6ot<36rXInk0^TaX! zlCOB?JQ9m?GaBA-Ho=h&+m5dCm3w*Y=i5G+!^OnqYEkb3%O;B%ywO%-QmIAJ@1WfX z2+z@ql0Fc~Stxx@)*YKOV7tk#*XVfZWXWGBtX(E4lYeVHO@A@8<=py+H-`7P*xOE} zLGC2h6Cb2=iiy3|^SI}ZDR8{|wqPuLOMnlXLJUf&#=gMHcD0t4&voF+M?|#td1@@+ zS`feWXqEkXKGkml`>u71D6{)m%7 zgTd|n%MXLTeVN@}j;` zePgFnN&f0#Is)@IGY;$;nq~Iy+2RG+1uE|&9_Tz$4fMJL0|+c;SA3%u{Nw^ZyF__C zD6=?NXny&^pz@L7SC(|pnaCfO3oB+&!f$N*FAozkZ}r6EXx!mbJhSy8{h-M;XWiW0 zFRC)3ajA>ckG?+h1NWnBpC)KhCL}u*^}B`tT1HrBjAF=EaUbRb#v99~+2Niu`8NSM<@hP-hHe!npzv|m9dK8Mw^5nq} z2T#j43Q+7n*M$nQ=fo3hH-}s3ay{RL>0JoI(rTeNdRcy=Wh;LsnZFE03 z3nir#y?s7=5(|IgdgUtGoyfvu-Q7udA$W!He&0)bKaW=$CuhzH4)~<+R@FEm`nl+3 zqv8@G9+%sa!o5z~=iH^Lh&g~KAim~E!Uen_!q`EaEWozqx!$|eLm1jD>0xk;P_B&s zj<8~2F?w!&tsgi7*ZXMP5NGLnQ54FaR#*ul%1L2C&ECiG8?x2Y+>uK0o+xY#!)9;% zqCCRQS7-P;s-J^|ZP*=a74fwrr@A@kNrHy2(fhsaxqIloYjiFxQDM&`{sxbE> z1)b+56-AuGfCO48j1_AwR1h zFM6=wWx_`4gWzHt&VOm?YB?!I2UC=C8vm9E)-iwRN1;MO2-Trj{}?VX3_b%oZU?jx z-%YS;)9n30>pM$W##>AJo?2&o7^?GOl?KT=^bXDGxe({Vi)Kf5tGghrE0r3k(T!dB z+Rre&qoAqe0ZEmo`U#e8?q$Ye_hqE8e-+3ujPQE>yjV&ii%E{rH8!>nlK<~d9D_Jn zPPZ1+8yM;Fx;JQ4)os9vG%0`e$3OKiqhcH#{Wvvw-q=py(ei!ZB&-=K`POo(DP;W7ad`y>t zgM%{;YVyq~p|v2&%kAH=lVw&tf1T$@YIEYF*10YI%!O$5FB z?ROi3PDjr3Sg-HDxOvEAWZJO;19s-FM+PxFp>GUep%?-c0)p6F{7?Cy%UiizOb6I` zwG_VSb=*`Jo3Y4R-T6e0R5QS$`BU z)81^|;Dz7A8EKdk@%db>L*n;WKcG6s#?L`6bqDIYRAB0rEJ3F)qh`kSt;c0{9l zkG(Kvzn&8xt<1&q_{khOGCDE0-xfc(MH|UpbMa^5G*+Wv_O{fWpc>-%e(;x)+!Dan zHL<>)dUtxcX)9`4Gr#QJsvQ2#kCDNq&5S$3!1FS^6m%ql%QI-`b6$U27}L`F^Ey@0i>tz}jquM2giBfl@y`gc zAC3)CdRJlzyEyi=3fjGt!3g5)G&Srj^!pHxHJ;^3MW=Q0SA~Rvnp#qfsC>hm?6S|D zV?Lc++iYFbc{*p_XTe9oO!RuT9(F=+-LFJ45hCSK)Npz=%;(w+=DVTUM+$pRr*}XP zaDec1+?@mk-Y?*6`&Ho(A?wim)*fcJ4$a`3`AkT?O@OKZc+R@nNMymS7{B8S>dA+k z8Ao_CuJli~%6-8b1`bHw#9>e`Wm0nTYHa%17Fd#cVVQr%9OYzebAbQk!`=_ZHhJxEl;JZzhqB+O}BY>)xip7RR2@C>bZ&l8fat0nl6&_CiH znPpMyoXz}oPgMOav#cNIXS>k#Y522cgr0vab2)=~wE8?eyiWI%D`XDIIFa&s z_alqVPS;%fQ~&}mLVYp5e8|Ya){hXyMdF9yFjgMmKr+Z7M{}^nG7lmNu3^*Tbn8*W zUm>3^e#J#4*T*j9CGeqLC5`$Qm5Qo{kM?mjBsfGl6NyDT7QP?~jS(%yPvcr>>Q0 zgI9-#p>AfdlXhO`-HvO&60cTo$iuCBnH?DqpH$A5iFrYX4USWu4^uA&`K3YL$2iYQ zVLEKjXi$NcN(A{QM4uxf9(VUI64kD2E(v1XC{S^DJX?SXd8!F#dVZYpWp`SOaBs&6 zR2mrnpT@pC9I7_%|BNLhS)(k8Fi9ba(1eF%$(nr|gzTe8S!YVtk~Z684WY7T%Px{+ z&7O&2?8_L!493j-ZqNJs>;3DU>s;5I^T*llb8p}K`&lA`K(->jMtksD{;q+<>xJos z6?T9|E$RF%^F$JyC-y%;R-UflSa8Whbn5>dxvIvA(f<5-)YXJ@qL<^6#5SQQGMF=8 zkFr=A9;fYcfe<96(Y4pB|3>fI$OPQW@VHw(s~)AaTJD3vfWV96HZuuVa5uHwUMKSk z2oz$USIJlwdypQwRE3{{y{z(%sI(Jxt&Q*;OYAU~<~&Jz`G(}+jm+iQj?z1pUcvlY z{c)<@nFu8cK^tw2>*Jy%mxR#;-@G)^SdD%5j2D=l)Mu5c7-`szrySQ{-<{P;j6*l= zeKy0@e6yA%>{kpVtH1votMrE)Q~-*NRS7gE+zKr!=%UXTj)Owv)w{xqltrY!f4MIjtY|s+ z(@0!kANN8@aZ25uDxu{tnvYGr1$O2VQ~Hn+GBswF1}GRXw# zI70XHa$>RZ7bTg2ezt)%m8UtM`U%U+()B?EFDyMK-EY1`89B6rN(LXe1;Ha!uAwNk z0jrR5jvE`}cKq9eWN!UTp#o*uru6e9K?KSy1+G312485Q*$UQLhlhqEXyGBda4F>V ze+|{w@CEF0SJw6f1O(vGQFE7l-=1%K7L<7Z91h`B>q`w#%e+Fl)&~^t$D2ZH4WFJp zdsffb7-cDo`9(@sJm&u$Ir?nOeIMq(Hh%BuMK?a%pBq2_h*j+Xvu?(XiCgM+`5LIk zrlxxjA9hYoPDx>WVjXqyJd&Su5q1di-K-tT|0%j@(Jfk(hA_9q`#+<+;AtDm{J8#pdo`s8@AXH zqQ!zHGWA=osd~A`FlSG2VX6v|FJOQBl*KmTDKdZ+l)=|OGtn4aPH^&xn@h4>7Quo9zOd#TKG~DDCAb)AUYmPss zBl!Zq>3io?I_I4&i%sV7Cc6`hrk9qFv3H?rc59=kIsikIOvkC4b*SeWC_>(+N#bSY z&#!P&EBhJykK~C2SX3kle%Y;UZe3od~5>c z&A@Q0&BZh1lVbqGc03d41EQ$jQu6d=fwzubbS}&a6ZD0ndSolH@ueGCbV0j^E^Q9y zSVvygOf>Ls4a~7!qcEnx)EV|xBDMy6wALd**5iQD{9RdbxtXP!w6Y9I*;E+mG?3V6hM-t*-)je9!6PI+XhJq1{82#4S%zU1ZolbHv4Cp{=jp=Iq zh1ZOzIjZ!DlnF0>t*u-Q^RwR-U4JzHWoS0A5WVxabH%N@p)MVWBR(!^7@BP76&1ZA z?kh(l)tQ8Ffkwe|Q*xpvGp?+L*g>Ua#uFPor1{3?Y zF=(eEU$&P?uU1|P7r}u_pc&@8vhv8?&CSh|~f&<$78%mW)(eF89FmdD5?edg1Yb5!#<)^bk9^(ICe%oz_jB z7U7FS&uJW-mCL`KZC(7nj_#Y(NG! zwY1d17lArO5|foG=yHI3-CAt&pzGF~<%b>o#@5z@rARs1pLzND!}6Of*417~&|8pp zU#3;I@cZ`E3Iro2w%n)jPXxp8L3X9Z zd)IkBhRjs|A^9MB6)tG)Kxn5fS+f7Y!iT=k@->HgZ3-|UajT~uEX#+Gm%gvq zy}0bNt$1bG7(|&^63t=t>R`1H)PSBq{ir_3P)aq(T`8c^z|IZ(^*L6m$I{*>WihcG zvUh%AA@-XxP!73~r!#_OSMZuVxACEHpo5f-;C?A}U_?G~Qhn!X)2??n$d3cPBx&hi zYRpWsxX=&2)TKyVg`_Qk;aA&VIoW@W19zJ9K723{Nh?=3LQ(QM4L{ySb$=g;9#7Go z;7wB=)BdVTznNgtlc93^OI=;X{dxUKAyNKkHlBLQ7)L$KR(6Eu9&LzxgLrx}Rygea z-&(+kZN~L)S-C1aH};*SlSO;yP{cKs=*`{BR_8Y|p)dG?hCoVo(K~9((Ou25+e&E# zIm=tR-iwk5XmenzgQx6avv?@n-L&Z;MtR zlXd7?I6)WVINY4}PqJgz)601x*9JNTF2c+?1H)?_ToFE_1gYZwW}PI5zq3!JFF&Y7 zC0aMVo*R)_75S@tk_#f=8pT#s$q^XK$?k8gC#%&hEG)n~Zj#dt@o`1XySuw4Ha1;7 zX_q@zMm{;LGc6$iL^k%5b42Q%9!k9J35KenXrlsiQYItkre%_Td|m1TQwo#hrmYvd zX6-6sZnRzl;owVxaeKo2$pDw5T^xR#U@ zft(ji``#(+8(W)VmoM{zeiis&1AKpu`~{u?CTC?A@iU>8xLo%=I)UP>bQd}!ej#?T z%tVW()9FlXp+`i?OQ$43ZfR;#`;iFwlG|r*F`DqM08zVy#Kc73w2X|k@{)w= zv1Cj;4ftJDds9UEU`3Na${D3CfI*a=wkrFbLKJ_QVeC5P!y}WokDr~t0Y+DlbO~H9 z?u#trVCw^hB?<~=LTs+A$&V@r2YfI(&sx5hpR#+D#dcvLT;;GD*&OyqU_f^o{(`>C zH|1d&L31fD$N8~0khWmsw|%5NEcmQ>r{1p)6M&;Tpec1M4h`56Y|llkjaLwUM#Ka_ z5)VYUrD*^_(-$T6%A0(wxVSjKvGI@ddLmHL0h10k4vvn=$)>)gGfi=|7lHsLIBD1W z*eW({Om<^hVq*evdOL9S&(fuk*^jjxUTo;T0v8lp!2>DhEO$$i6=$f3yOPYe4mO0; zTME#4Jf#+N0WiXLj@HW%YJb4WMJYrdyZh^#IlqgGJ*M3>a4u`zn0)G1e}vz4VFWV` zqePDxok)z0ZSC#t9ir5pw&U~91pSwg90~1zs~zMg*YjGG`^Abc=59L zP)!0KI<)E?2G9flX!FwSb8fRf58-{ZbWYjV{466n%qTPJI~FShR2{ov1LDj&ybVr| zANgn3H}_X*T=3I^J1xMQ(yNRI1FN_i*%nPp3s?gH5ciFg%*Ttg(kk4V?BOl>=o6HG zLtpbN1TLBM1LpBCwo5s1X`p6r$3TKd>sK4SsZ>FxuJ9IqN!kaG-sTJ2zRy#)Cr_Cd z1LS0`Q>Vam#kX=)og&Qd+XgHVI!2>D4lGI#Tvj>-7))&E+oSC`c}I~V;@2K7n_WUp zT|33>A=TdF?)CvdsH)3lx{a)vTY)`K1!otdq9W742~zq9^C3gBv@LIf`$w>80xPH) z{VhWRCIL+D1wb$3m;l|2Kb4;qQ{zFEbEr3O3`&p6$am=3ThNDS6qEo=JX8AcO69nr)rz#S?QcoRI%9DhK<5@o{jUTwq)PYkhV0=A*4% z<)oO?A-dbEW1JWuy@*q!*+ml z?{lS)aaa;uSoK@0W~BDcU=8}Fc=cAEgcs;c@?!K~<<~24l{>$uIXZz@^89P~Xg~ ze6|ucx=McmJmObtaxv)3^LBU)= zR0?r4sQjUC%#w3kn<=^NpT@?f$AWjK?eji#IXkdyd-B4kW0uqd+FuGmtilR0zY8wm zLA>f+X}QGt3%w96e^;J9S<$Y$_1Y^dls1omDhe)zLik>_H0r<~ zB?JBcmOTLNH_Vm~mU{W_iz2yURG|48gk+Rhdkh#Q*qb9F?5~6?Uyt|aev`ZlximFfXgzON!S1Gk~i?cHe z(UR)fn3r6B*{UbRnBsGZ0ULd4#K4Kq`y1_?Nzp$8n_`vlMB^UQtT4Z{CDojWo9kf4 z-~s|y^7u28#$Y&5TuDBJD935vr{$#fF1U*hn=nmRk2&%J7W0VV!Ad&Y!0T*OI-%^{ zVGXa|@6Z4S&n-)%B|>#00h}JLZf-L~qH(xeh$;*nRup`vnZDz``nfGLK}pw8MUs$x zhcw@f0q|9U$+J*Mym}F8N9d}@%SWC&Uf+@Tq6omb439*noyM1O^YiPNnehM|2#Y`0 zLG;gU@p^C0#t@Q=MT;ElWNni&g!Bn}BUE_J)h*iT} z+!}h1Ui*+m&R6T6aBIu21iuIT6K95IeRQM|K0h?B?JQ~duSqp*OFS}Rl8gL$Qf+NQ zi~*%Wi33MwP$(R=L)usun=xo}@@aN&L7s*Oj-6|mtHQv1WikH)ZbKnn{Cg3q2k<7lNkJn-w2Wq2;h6D!GM zZR=2tqbqxFg>Vh9NhL>Ls!;TK$l$VKW$%r&Iy_h0s+1Ah94`C#kr;Yl$NlNxV)qj_ z8`7(maGrXY2*7GV{LhgdYm0zs<&GX0ZEP^z|W& z##YZI=|dPx--w}jZ<3|Fvy12ML;)sEbRCpMGkXb)>j910d`g*|Yr0L^&Kby`aMHB+ zg&m3vy)MdXUN)BQNA?~Gvgo_vgm0&>sZE38M1D>Kg|Q+_w_w{)jk|#<6X2H@?=DoO z5BA-a7|J7A{5XG9>G<)D^VuzC2#me#7}Te}jC?ybk3lvEkL^+yi{^>P{;VUcw4?WW zP|-7!uBqvOUm zlcS1rTZbQLQz*_p5eyK;Yen^Q{FAfYUW>l_KZ(b|b>X@GtlH8}g=f3l)+$e>*1yoo zi$_u#t}1?%e;`uX?_OWO1s50pt3Q1NYU?L9d>MJjLjB9-w=?+_91)r&#l>@5S$iOG zld#K%KEqz;^m*>fP2mTM@UtXNVL^*I$Hp6`uggt8&7^y_4etcu6u7xfJ6CpLm@Ns7 z68rDTAH@aZa`HXTtyzIeYBF91_G5L#$IUD}=0D2;$!Biv2hU#Mn9sycLPoifsF9#d zvM!(EA7%|c$H%{!{S|lzu2L@7Dv67Ws}kkVEL%+1kn3L{@YB0tq+R-t)06)PO%U6Y literal 58703 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 From 4cca641cd8421e22713dbc1c8d0f7c7cc7698ce4 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Sat, 28 Jun 2014 19:52:55 +0930 Subject: [PATCH 113/304] Added skeleton airlock and pod garage to the listening post, tweaked the toilet area a bit. --- maps/tgstation2.dmm | 59 ++++++++++++++++++++++++++------------------- 1 file changed, 34 insertions(+), 25 deletions(-) diff --git a/maps/tgstation2.dmm b/maps/tgstation2.dmm index 855f16ddc9..2825b2bbea 100644 --- a/maps/tgstation2.dmm +++ b/maps/tgstation2.dmm @@ -8406,8 +8406,8 @@ "dfH" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) "dfI" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) "dfJ" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/light/small,/turf/simulated/floor{icon_state = "freezerfloor"},/area/djstation) -"dfK" = (/obj/structure/toilet{pixel_y = 8},/turf/simulated/floor{icon_state = "freezerfloor"},/area/djstation) -"dfL" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation) +"dfK" = (/obj/machinery/power/solar/fake,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor{icon_state = "solarpanel"},/area/djstation) +"dfL" = (/obj/machinery/autolathe,/turf/simulated/floor/plating,/area/djstation) "dfM" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door_control{desc = "A remote control-switch for Surgery."; id = "Surgery"; name = "Surgery"; normaldoorcontrol = 1; pixel_x = -24; pixel_y = 8; range = 3; step_x = 0; step_y = 0},/turf/simulated/floor{dir = 9; icon_state = "blue"},/area/medical/surgeryprep) "dfN" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) "dfO" = (/turf/simulated/floor/airless,/area) @@ -8566,8 +8566,8 @@ "diL" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/turf/simulated/floor,/area/tcommsat/entrance) "diM" = (/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/djstation) "diN" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating/airless,/area/djstation) -"diO" = (/obj/machinery/power/solar/fake,/turf/simulated/floor{icon_state = "solarpanel"},/area/djstation) -"diP" = (/obj/machinery/computer/drone_control,/turf/simulated/floor/plating,/area/djstation) +"diO" = (/obj/machinery/power/solar/fake,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{icon_state = "solarpanel"},/area/djstation) +"diP" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/djstation) "diQ" = (/obj/machinery/light{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/obj/machinery/drone_fabricator,/turf/simulated/floor/plating,/area/djstation) "diR" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating/airless,/area/djstation) "diS" = (/turf/simulated/wall,/area/constructionsite/ai) @@ -8602,7 +8602,7 @@ "djv" = (/obj/machinery/computer/shuttle_control/engineering,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation) "djw" = (/obj/structure/stool/bed/chair/comfy/black{dir = 8},/turf/simulated/floor{icon_state = "grimy"},/area/djstation) "djx" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation) -"djy" = (/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact-f (EAST)"; icon_state = "intact-f"; dir = 4},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation) +"djy" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/djstation) "djz" = (/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact-f (SOUTHWEST)"; icon_state = "intact-f"; dir = 10},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation) "djA" = (/obj/structure/table,/turf/simulated/floor{icon_state = "bar"},/area/djstation) "djB" = (/obj/machinery/door/airlock/highsecurity{icon_state = "door_closed"; locked = 0; name = "AI Upload"; req_access_txt = "16"},/turf/simulated/floor/plating/airless,/area/constructionsite/ai) @@ -8618,10 +8618,10 @@ "djL" = (/obj/machinery/door/airlock/highsecurity{name = "Cyborg Station"; req_access_txt = "16"},/turf/simulated/floor/plating/airless,/area/constructionsite/ai) "djM" = (/obj/machinery/door/airlock/highsecurity{name = "Cyborg Station"; req_access_txt = "16"},/turf/simulated/floor/plating/airless,/area/constructionsite/hallway/fore) "djN" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/turf/simulated/floor/plating,/area/djstation) -"djO" = (/obj/structure/rack,/obj/item/weapon/module/power_control,/obj/item/weapon/module/power_control,/obj/item/weapon/module/power_control,/obj/item/weapon/module/power_control,/turf/simulated/floor/plating,/area/djstation) +"djO" = (/obj/structure/toilet{pixel_y = 8},/obj/machinery/light/small{dir = 1},/turf/simulated/floor{icon_state = "freezerfloor"},/area/djstation) "djP" = (/obj/machinery/driver_button{id = "constructiondriver2"; name = "Construction Driver #2"; pixel_x = 25},/turf/simulated/floor/plating,/area/djstation) "djQ" = (/obj/machinery/recharge_station,/turf/simulated/floor/plating/airless,/area/constructionsite/ai) -"djR" = (/obj/structure/rack,/obj/item/weapon/airlock_electronics,/obj/item/weapon/airlock_electronics,/obj/item/weapon/airlock_electronics,/turf/simulated/floor/plating,/area/djstation) +"djR" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/simulated/floor{icon_state = "freezerfloor"},/area/djstation) "djS" = (/obj/machinery/door/poddoor{id = "constructiondriver2"; name = "Construction Driver Door"},/turf/simulated/floor/plating,/area/djstation) "djT" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/djstation) "djU" = (/obj/machinery/mass_driver{dir = 4; id = "constructiondriver2"; name = "construction driver #2"},/obj/machinery/door/window{dir = 8; name = "Construction Driver"; req_access_txt = "10"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/djstation) @@ -8937,6 +8937,15 @@ "dpS" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 4; icon_state = "whiteyellow"},/area/research_outpost/hallway) "dpT" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "whitepurplecorner"},/area/research_outpost/hallway) "dpU" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; external_pressure_bound = 140; icon_state = "out"; on = 1; pressure_checks = 0},/turf/simulated/floor/plating/airless,/area) +"dpV" = (/obj/machinery/mech_bay_recharge_port,/turf/simulated/floor/plating,/area/djstation) +"dpW" = (/obj/machinery/computer/mech_bay_power_console,/turf/simulated/floor/plating,/area/djstation) +"dpX" = (/turf/simulated/floor/mech_bay_recharge_floor,/area/djstation) +"dpY" = (/obj/mecha/working/hoverpod,/turf/simulated/floor/mech_bay_recharge_floor,/area/djstation) +"dpZ" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/plating,/area/djstation) +"dqa" = (/obj/machinery/power/solar/fake,/obj/structure/cable,/turf/simulated/floor{icon_state = "solarpanel"},/area/djstation) +"dqb" = (/obj/structure/rack,/obj/item/weapon/module/power_control,/obj/item/weapon/module/power_control,/obj/item/weapon/module/power_control,/obj/item/weapon/module/power_control,/obj/item/weapon/module/power_control,/obj/item/weapon/module/power_control,/turf/simulated/floor/plating,/area/djstation) +"dqc" = (/obj/structure/rack,/obj/item/weapon/airlock_electronics,/obj/item/weapon/airlock_electronics,/obj/item/weapon/airlock_electronics,/obj/item/weapon/airlock_electronics,/obj/item/weapon/airlock_electronics,/obj/item/weapon/airlock_electronics,/turf/simulated/floor/plating,/area/djstation) +"dqd" = (/obj/machinery/power/solar/fake,/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/turf/simulated/floor{icon_state = "solarpanel"},/area/djstation) "dqT" = (/turf/simulated/mineral,/area/mine/unexplored) "dqU" = (/turf/space,/area/syndicate_station/mining) "dqV" = (/obj/structure/transit_tube{icon_state = "D-SE"},/obj/structure/lattice,/turf/space,/area) @@ -11497,27 +11506,27 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaafaaaaafdiEdizdixdiwdiwdiCaafaaaaafaaaaafaaaaafdiEdizdixdixdixdixdiKdiKdiwdiwdiwdiKdiKdixdixdixdixdizdiEaafaaaaafaaaaafaaaaafdiCdiKdiKdixdizdiEdjbdjbdjbdjbdjbdjbdjbdjbdjbdjbdjbdjbdjbdjbdjbdjbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafdiEdizdixdiwdiwdiCaafaaaaafaaaaafaafaafdixdiDdixdiKdiKdiKdiKdiKdiwdiwdiwdiKdiKdiKdiKdiKdixdiDdixaafaafaafaaaaafaaaaafdiCdiwdiKdixdizdiEdjadjbdjadjbdjadjbdjadjbdjadjadjbdjbdjbdjadjadjaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadiMdiMdiMdiMdiMdiMdiMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaafaaaaafdiEdizdixdiwdiwdiCaafaafaafaafaafaafdixdixdiKdiKdiKdiwdiwdiwdiwdiwdiwdiwdiwdiwdiwdiKdiKdiKdiKdixdixaafaafaafaafaafaafdiCdiwdiKdixdizdiEaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafdiMdiOdjcdiOdjddiOdiMaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafdiEdizdixdiwdiwdiCaafdiEdiEdiEdiEdixdixdiKdiKdiKdiwdiwdiwdiwdiwdiwdiwdiwdiwdiwdiwdiwdiwdiwdiKdiKdixdixdiEdiEdiEdiEaafdiCdiwdiKdixdizdiEaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafdiMdiOdiNdiOdiRdiOdiMaafaafaaaaaadeDdeDdeDdeDdeDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaafaaaaafdiEdizdixdiwdiwdiCaafdiEdizdizdizdiDdiKdiKdiwdiwdiwdiwdiwdixdixdixdiVdixdixdixdiwdiwdiwdiwdiKdiKdiKdiDdizdizdizdiEaafdiCdiwdiKdixdizdiEaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafdiMdiOdiNdiOdiRdiOdiMaafaafaafaaadeGdiPdiQdeHdeGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafdiEdizdixdiwdiwdiCaafdiEdizdizdixdixdiKdiKdiwdiwdiwdixdixdixdiSdiTdiUdiTdiSdixdixdixdiwdiwdiwdiKdiKdixdixdizdizdiEaafdiCdiwdiKdixdizdiEaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafdiMdiOdiNdiOdiRdiOdiMaafaafaafaafdiZdeHdeHdeHdiZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaafaaaaafdiEdizdixdiwdiwdiCaafdiEdizdizdixdiKdiKdiKdiwdiwdixdixaafaafdiSdiTdiUdiTdiSaafaafdixdixdiwdiwdiwdiKdiKdixdizdizdiEaafdiCdiKdiKdixdizdiEaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafdiMdfKdjcdfKdjddiOdiMaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafdiEdizdixdiwdiwdiCaafdiEdiEdiEdiEdixdixdiKdiKdiKdiwdiwdiwdiwdiwdiwdiwdiwdiwdiwdiwdiwdiwdiwdiKdiKdixdixdiEdiEdiEdiEaafdiCdiwdiKdixdizdiEaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafdiMdfKdiNdfKdiRdiOdiMaafaafaaaaaadeDdeDdeDdeDdeDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaafaaaaafdiEdizdixdiwdiwdiCaafdiEdizdizdizdiDdiKdiKdiwdiwdiwdiwdiwdixdixdixdiVdixdixdixdiwdiwdiwdiwdiKdiKdiKdiDdizdizdizdiEaafdiCdiwdiKdixdizdiEaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafdiMdfKdiNdfKdiRdiOdiMaafaafaafaaadeGdfLdiQdeHdeGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafdiEdizdixdiwdiwdiCaafdiEdizdizdixdixdiKdiKdiwdiwdiwdixdixdixdiSdiTdiUdiTdiSdixdixdixdiwdiwdiwdiKdiKdixdixdizdizdiEaafdiCdiwdiKdixdizdiEaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafdiMdfKdiNdfKdiRdiOdiMaafaafaafaafdiZdeHdeHdeHdiZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaafaaaaafdiEdizdixdiwdiwdiCaafdiEdizdizdixdiKdiKdiKdiwdiwdixdixaafaafdiSdiTdiUdiTdiSaafaafdixdixdiwdiwdiwdiKdiKdixdizdizdiEaafdiCdiKdiKdixdizdiEaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadiMdiMdiMdiMdiMdeDdeEdiWdeDdiYdeFdeDdiMdiMdiMdiMdeDdeDdiXdeDdeDanmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaafaafaagaafaagaagaafaafaagaafaafaagdiEdizdixdiwdiwdiCaafdiEdizdizdixdiKdiwdiwdiwdixdixaafaafaafdiSdiTdiUdiTdiSaafaafaafdixdixdiKdiwdiKdiKdixdizdizdiEaafdiCdiwdiKdixdizdiEaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafdiMdiOdiOdiOdiOdeGdeHdkhdkideSdkjdeGdiOdiOdiOdiOdeDdkkdeHdkldkmdeDdeDdeDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaagaafaafaagaagaagaagaagaagaagaagaagaagaagdiEdizdixdiwdiwdixdiEdiEdizdixdixdiKdiwdiwdiwdixaafaafaafdiSdiSdiSdjBdiSdiSdiSaafaafaafdixdiKdiKdiwdiKdixdixdizdiEdiEdixdiKdiwdixdizdiEaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafdiMdqddqddqddqddeGdeHdkhdkideSdkjdeGdqddqddqddqddeDdkkdeHdkldkmdeDdeDdeDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaagaafaafaagaagaagaagaagaagaagaagaagaagaagdiEdizdixdiwdiwdixdiEdiEdizdixdixdiKdiwdiwdiwdixaafaafaafdiSdiSdiSdjBdiSdiSdiSaafaafaafdixdiKdiKdiwdiKdixdixdizdiEdiEdixdiKdiwdixdizdiEaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafdiMdkvdkudkudkudiZdkwdkxdkpdkodkndiZdkrdkrdkrdkqdeDdkkdeHdeHdeHdktdjTdksaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagdiEdizdixdiwdiwdixdizdizdizdixdiKdiKdiwdiwdixdixaafaafdiSdiSdjDdjDdiTdjDdjDdiSdiSaafaafdixdixdiKdiwdiKdiKdixdizdizdizdixdiKdiKdixdizdiEaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafdiMdiOdiOdiOdiOdeDdjVdeHdjWdeHdePdeDdiOdiOdiOdiOdeDdjYdeHdeHdjXdeDdeDdeDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafanmaafaafaafaafaafanmanmanmanmanmaafaagaafaagaafaagaafaagaafaagdiEdiEdiEdiEdiEdiEdiEdiEdiEdiEdiEdizdixdiwdiwdixdiDdixdixdixdiKdiKdiKdiKdixdiSdiSdiSdiSdiTdjDdiTdiTdiTdjDdiTdiSdiSdiSdiSdixdiKdiKdiwdiKdixdixdixdiDdixdiKdiKdixdiEdiEanmanmanmaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafdiMdqadqadqadqadeDdjVdeHdjWdeHdePdeDdqadqadqadqadeDdjYdeHdeHdjXdeDdeDdeDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafanmaafaafaafaafaafanmanmanmanmanmaafaagaafaagaafaagaafaagaafaagdiEdiEdiEdiEdiEdiEdiEdiEdiEdiEdiEdizdixdiwdiwdixdiDdixdixdixdiKdiKdiKdiKdixdiSdiSdiSdiSdiTdjDdiTdiTdiTdjDdiTdiSdiSdiSdiSdixdiKdiKdiwdiKdixdixdixdiDdixdiKdiKdixdiEdiEanmanmanmaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafdiMdkgdkfdkfdkfdkadeSdeHdePdeHdkbdkadjZdjZdjZdjcdeDdkedeHdeHdeHdkddjTdkcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaafaagaagaagaagaagaagaagaagaagaagaagaagaagdizdizdizdizdizdizdizdizdizdizdizdizdixdiwdiwdiKdiKdiKdiKdiKdiKdiwdiKdiKdixdiTdiTdiTdiSdjDdjDdiTdiUdiTdjDdjDdiSdiTdiTdiTdixdiKdiKdiwdiKdiKdiKdiKdiwdiKdiKdiwdixdizdizaagaagaagaagaagaagaagaagaagaagaagaagaaaaaaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafdiMdiOdiOdiOdiOdeJdjNdeRdeSdeHdeTdeJdiOdiOdiOdiOdeDdjOdeHdeHdjPdeDdeDdeDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaagaagaagaagaagaafaafaagaagaafaagaafaagaafaagaafaagaafaagdjndizdjndizdizdizdizdizdizdizdizdizdixdiKdiKdiKdiKdiKdiKdiKdiwdiKdiKdiKdjJdiUdiUdiUdjKdiTdiTdiTdiUdiTdiTdiTdjLdiUdiUdiUdjMdiwdiKdiwdiwdiwdiwdiwdiwdiKdiKdiKdixdizdizaagaagaagaagaagaagaagaagaagaafaagaafaagaafaagaagaagaafaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadeDdeDdeDdeDdeDdeDdeDdeDdeDdeUdeDdeDdeDdeDdeDdeDdeDdeDdjRdeHdeHdeHdjUdjTdjSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaagaagaagaagaagaagaagaafaagaafaagaagaagaagaagdizdizdizdjndizdizdizdizdizdizdizdizdixdiwdiwdiKdiwdiwdiwdiwdiwdiwdiwdiwdixdiTdiTdiTdiSdjDdjDdiTdiUdiTdjDdjDdiSdjQdjQdjQdixdiKdiKdiwdiKdiKdiKdiKdiKdiKdiwdiwdixdizdizaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafdfadjAdfcdjGdjGdfcdfadeVdeWdeXdeYdeZdiXdjIdeHdeHdjIdiXdeHdeHdjHdeHdeDdeDdeDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanmanmanmaafaafaafaafaafanmanmanmanmanmanmanmanmanmanmanmdiEdiEdiEdiEdiEdiEdiEdiEdiEdiEdiEdiEdixdiwdiwdixdjFdixdixdixdjEdiKdjEdiKdixdiSdiSdiSdiSdiTdjDdiTdiTdiTdjDdiTdiSdiSdiSdiSdixdiKdiKdiwdiKdixdixdixdiDdixdiKdiwdixdiEdiEanmanmanmanmanmaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafdfjdjAdfcdjAdjAdfcdfjdeXdeXdeXdeXdeXdeDdeDdeDdeDdeDdeDdeDdeDdeDdeDanmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafdiEdjndjkdjidjidjkdizdizdizdjkdjjdjjdjjdjjdjkdjkaafaafdiSdiSdjDdjDdiTdjDdjDdiSdiSaafaafdjkdjkdjjdjjdjjdjjdjkdizdizdizdjkdjidjidjjdizdiEaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafdfjdfbdfcdjAdjAdfcdfjdfvdfndfvdeXdeXdfddfedffdfgdfhdfiaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaafaafdiEdjndjkdjidjidjkdiEdiEdizdjkdjkdjjdjmdjjdjmdjkaafaafaafdiSdiSdiSdjBdiSdiSdiSaafaafaafdjkdjjdjjdjidjjdjkdjkdizdiEdiEdjkdjidjidjkdizdiEaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafdfjdfkdfcdfudfudfcdfrdfvdfvdfxdeXdeXdfodfedfedfedfpdfqaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaafaafdiEdjndjkdjidjidjlaafdiEdizdizdjkdjjdjjdjjdjjdjkdjkaafaafaafdiSdiTdiUdiTdiSaafaafaafdjkdjkdjjdjjdjidjjdjkdizdizdiEaafdjldjidjidjkdizdiEaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafdfrdfsdftdfcdfcdfcdfldeXdeXdeXdeXdeXdfidfedfedfedfBdfqaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafdiEdjndjkdjidjidjlaafdiEdizdizdjkdjjdjmdjjdjmdjjdjkdjkaafaafdiSdiTdiUdiTdiSaafaafdjkdjkdjjdjjdjjdjjdjjdjkdizdizdiEaafdjldjjdjidjkdizdiEaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafdeDdfCdeDdeDdeDdfDdeDdjxdjydjydjzdfEdfqdfedfedfgdfhdfqaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaafaafdiEdjndjkdjidjjdjlaafdiEdizdizdjkdjkdjjdjjdjjdjjdjjdjkdjkdjkdiSdiTdiUdiTdiSdjkdjkdjkdjjdjidjidjidjjdjkdjkdizdizdiEaafdjldjjdjjdjkdizdiEaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafclkaafaafdeDdfFdeDdeDdfGdeXdjrdeXdfqdfedfedfedfpdfqaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaafaafdiEdjndjkdjidjjdjlaafdiEdizdizdizdjsdjmdjjdjmdjjdjmdjjdjidjkdjkdjkdjtdjkdjkdjkdjjdjjdjidjidjidjjdjjdjqdizdizdizdiEaafdjldjidjjdjkdizdiEaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaclkaafaafdeDdfJdfKdeDdfLdjvdjudeXdeJdfydjwdfAdfBdeJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafdiEdjndjkdjidjjdjlaafdiEdiEdiEdiEdjkdjkdjjdjjdjjdjjdjidjidjidjidjidjidjidjidjidjidjidjidjidjjdjjdjkdjkdiEdiEdiEdiEaafdjldjidjjdjkdizdiEaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaclkaaaaafdeDdeDdeDdeDdeDdeDdjhdfddeDdeDdeDdeDdeDdeDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaafaafdiEdjndjkdjidjjdjlaafaafaafaafaafaafdjkdjkdjmdjjdjmdjjdjidjidjidjidjidjidjidjidjidjidjidjjdjjdjkdjkaafaafaafaafaafaafdjldjidjjdjkdizdiEaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacooaaaaaaaafaafaafaafaafdeDdjpdjodeDaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaafaafdiEdjndjkdjidjjdjlaafaaaaafaaaaafaafaafdjkdjqdjkdjjdjidjidjidjidjidjidjidjidjidjidjidjidjkdjqdjkaafaafaafaaaaafaaaaafdjldjidjjdjkdizdiEaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafdiMdqadqadqadqadeJdjNdeRdeSdeHdeTdeJdqadqadqadqadeDdqbdeHdeHdjPdeDdeDdeDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaagaagaagaagaagaafaafaagaagaafaagaafaagaafaagaafaagaafaagdjndizdjndizdizdizdizdizdizdizdizdizdixdiKdiKdiKdiKdiKdiKdiKdiwdiKdiKdiKdjJdiUdiUdiUdjKdiTdiTdiTdiUdiTdiTdiTdjLdiUdiUdiUdjMdiwdiKdiwdiwdiwdiwdiwdiwdiKdiKdiKdixdizdizaagaagaagaagaagaagaagaagaagaafaagaafaagaafaagaagaagaafaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadeDdeDdeDdeDdeDdeDdeDdeDdeDdeUdeDdeDdeDdeDdeDdeDdeDdeDdqcdeHdeHdeHdjUdjTdjSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaagaagaagaagaagaagaagaafaagaafaagaagaagaagaagdizdizdizdjndizdizdizdizdizdizdizdizdixdiwdiwdiKdiwdiwdiwdiwdiwdiwdiwdiwdixdiTdiTdiTdiSdjDdjDdiTdiUdiTdjDdjDdiSdjQdjQdjQdixdiKdiKdiwdiKdiKdiKdiKdiKdiKdiwdiwdixdizdizaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafdfadjAdfcdjGdjGdfcdfadeVdeWdeXdeYdeZdiXdjIdeHdeHdjIdiXdeHdeHdeHdpZdeDdeDdeDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanmanmanmaafaafaafaafaafanmanmanmanmanmanmanmanmanmanmanmdiEdiEdiEdiEdiEdiEdiEdiEdiEdiEdiEdiEdixdiwdiwdixdjFdixdixdixdjEdiKdjEdiKdixdiSdiSdiSdiSdiTdjDdiTdiTdiTdjDdiTdiSdiSdiSdiSdixdiKdiKdiwdiKdixdixdixdiDdixdiKdiwdixdiEdiEanmanmanmanmanmaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafdfjdjAdfcdjAdjAdfcdfjdeXdeXdeXdeXdeXdeDdeDdeDdeDdeDdeDdeHdeHdeHdeHdfiaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafdiEdjndjkdjidjidjkdizdizdizdjkdjjdjjdjjdjjdjkdjkaafaafdiSdiSdjDdjDdiTdjDdjDdiSdiSaafaafdjkdjkdjjdjjdjjdjjdjkdizdizdizdjkdjidjidjjdizdiEaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafdfjdfbdfcdjAdjAdfcdfjdfvdfndfvdeXdeXdfddfedffdfgdfhdeDdpVdpYdpWdeHdfqaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaafaafdiEdjndjkdjidjidjkdiEdiEdizdjkdjkdjjdjmdjjdjmdjkaafaafaafdiSdiSdiSdjBdiSdiSdiSaafaafaafdjkdjjdjjdjidjjdjkdjkdizdiEdiEdjkdjidjidjkdizdiEaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafdfjdfkdfcdfudfudfcdfrdfvdfvdfxdeXdeXdfodfedfedfedfpdeDdeHdeHdeHdeHdfqaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaafaafdiEdjndjkdjidjidjlaafdiEdizdizdjkdjjdjjdjjdjjdjkdjkaafaafaafdiSdiTdiUdiTdiSaafaafaafdjkdjkdjjdjjdjidjjdjkdizdizdiEaafdjldjidjidjkdizdiEaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafdfrdfsdftdfcdfcdfcdfldeXdeXdeXdeXdeXdfidfedfedfedfBdeDdpVdpXdpWdeHdfqaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafdiEdjndjkdjidjidjlaafdiEdizdizdjkdjjdjmdjjdjmdjjdjkdjkaafaafdiSdiTdiUdiTdiSaafaafdjkdjkdjjdjjdjjdjjdjjdjkdizdizdiEaafdjldjjdjidjkdizdiEaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafdeDdfCdeDdfDdeDdeDdeDdeDdeDdjxdjzdfEdfqdfedfedfgdfhdeDdeHdeHdjHdeHdeJaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaafaafdiEdjndjkdjidjjdjlaafdiEdizdizdjkdjkdjjdjjdjjdjjdjjdjkdjkdjkdiSdiTdiUdiTdiSdjkdjkdjkdjjdjidjidjidjjdjkdjkdizdizdiEaafdjldjjdjjdjkdizdiEaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafclkdeDdfFdeDdjOdeDdjOdeDdfGdjrdeXdfqdfedfedfedfpdeDdjhdfddeDdeDdeDaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaafaafdiEdjndjkdjidjjdjlaafdiEdizdizdizdjsdjmdjjdjmdjjdjmdjjdjidjkdjkdjkdjtdjkdjkdjkdjjdjjdjidjidjidjjdjjdjqdizdizdizdiEaafdjldjidjjdjkdizdiEaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaclkdeDdjRdeDdfDdeDdfDdeDdjvdjudeXdeJdfydjwdfAdfBdeDdeHdeHdeDaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafdiEdjndjkdjidjjdjlaafdiEdiEdiEdiEdjkdjkdjjdjjdjjdjjdjidjidjidjidjidjidjidjidjidjidjidjidjidjjdjjdjkdjkdiEdiEdiEdiEaafdjldjidjjdjkdizdiEaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaclkdeDdfJdfFdfFdfFdfFdeDdeDdjhdfddeDdiYdiPdjydeFdeDdeHdeHdeDaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaafaafdiEdjndjkdjidjjdjlaafaafaafaafaafaafdjkdjkdjmdjjdjmdjjdjidjidjidjidjidjidjidjidjidjidjidjjdjjdjkdjkaafaafaafaafaafaafdjldjidjjdjkdizdiEaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoodeDdeDdeDdeDdeDdeDdeDdeDdjpdjodeDaafaafaafaafdeDdjhdfddeDaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaafaafdiEdjndjkdjidjjdjlaafaaaaafaaaaafaafaafdjkdjqdjkdjjdjidjidjidjidjidjidjidjidjidjidjidjidjkdjqdjkaafaafaafaaaaafaaaaafdjldjidjjdjkdizdiEaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafdeDdkZdladeDaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafdiEdjndjkdjidjidjlaafaaaaafaaaaafaaaaafdiEdizdjkdjkdjkdjkdjidjidjidjidjidjidjidjkdjkdjkdjkdizdiEaafaaaaafaaaaafaaaaafdjldjidjidjkdizdiEaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafdeDdkXdfddeDdkYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaafaafdiEdjndjkdjidjjdjlaafaafaafaafaafaafaafdiEdizdizdizdizdjkdjkdjkdjidjidjidjkdjkdjkdizdizdizdizdiEaafaafaafaafaafaafaafdjldjidjjdjkdizdiEaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadkUdkGdkGdkWdkGdkGdkVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaafaafdiEdjndjkdjjdjjdjlaafaaaaafaaaaafaaaaafdiEdizdizdizdizdizdizdjkdjidjidjidjkdizdizdizdizdizdizdiEaafaaaaafaaaaafaaaaafdjldjidjjdjkdizdiEaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From be74be4c95880ec45f3a73621e501248314df546 Mon Sep 17 00:00:00 2001 From: Jarcolr Date: Sat, 28 Jun 2014 14:11:58 +0300 Subject: [PATCH 114/304] Fixes the jackboots --- code/modules/customitems/item_defines.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/modules/customitems/item_defines.dm b/code/modules/customitems/item_defines.dm index 4a702a2429..c3199e5821 100644 --- a/code/modules/customitems/item_defines.dm +++ b/code/modules/customitems/item_defines.dm @@ -1065,10 +1065,11 @@ /obj/item/clothing/shoes/jackboots/fluff/kecer_eldraran name = "Toe-less Jackboots" - desc = "Modified pair of jackboots, particularly friendly to those species, whose toes hold claws." + desc = "Modified pair of jackboots, particularly friendly to those species whose toes hold claws." icon = 'icons/obj/custom_items.dmi' item_state = "digiboots" icon_state = "digiboots" + species_restricted = null //////////// Sets //////////// From 20c7a7397bc6f345c86f95a74d4ef6344f639a31 Mon Sep 17 00:00:00 2001 From: Loganbacca Date: Sat, 28 Jun 2014 23:30:30 +1200 Subject: [PATCH 115/304] Engineering outpost airlock - Added airlock - Removed DJ station note - Changed pipes in derelict atmos to hidden so they run under the wall --- maps/tgstation2.dmm | 38 ++++++++++++++++++++++++-------------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/maps/tgstation2.dmm b/maps/tgstation2.dmm index 2825b2bbea..a04414ac9b 100644 --- a/maps/tgstation2.dmm +++ b/maps/tgstation2.dmm @@ -8393,7 +8393,7 @@ "dfu" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor{icon_state = "bar"},/area/djstation) "dfv" = (/obj/structure/table,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation) "dfw" = (/obj/structure/table,/obj/item/weapon/storage/box/gloves{pixel_x = 4; pixel_y = 4},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/item/weapon/storage/box/masks,/turf/simulated/floor{dir = 9; icon_state = "blue"},/area/medical/surgeryprep) -"dfx" = (/obj/structure/table,/obj/item/weapon/paper/djstation{info = "Welcome new owner!

      You have purchased the latest in listening equipment. The telecommunication setup we created is the best in listening to common and private radio fequencies. Here is a step by step guide to start listening in on those saucy radio channels:

      1. Equip yourself with a multi-tool
      2. Use the multitool on each machine, that is the broadcaster, receiver and the relay.
      3. Turn all the machines on, it has already been configured for you to listen on.
      Simple as that. Now to listen to the private channels, you'll have to configure the intercoms, located on the front desk. Here is a list of frequencies for you to listen on.