diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 16a2426569e..def6c6e4c11 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -92,7 +92,8 @@ /atom/proc/emp_act(var/severity) return -/atom/proc/bullet_act(var/obj/item/projectile/Proj) +/atom/proc/bullet_act(var/obj/item/projectile/Proj, def_zone) + Proj.on_hit(src, 0, def_zone) return 0 /atom/proc/in_contents_of(container)//can take class or object instance as argument diff --git a/code/game/machinery/bots/medbot.dm b/code/game/machinery/bots/medbot.dm index b0e04695ef0..624453380d3 100644 --- a/code/game/machinery/bots/medbot.dm +++ b/code/game/machinery/bots/medbot.dm @@ -423,20 +423,20 @@ var/reagent_id = null if(emagged == 2) //Emagged! Time to poison everybody. - reagent_id = "toxin" - - if(treat_virus) - var/virus = 0 - if(C:virus2.len) - for (var/ID in C.virus2) - if (ID in virusDB) // If the virus is known, the medbot is aware of it and will try to cure it - virus = 1 - - if (!reagent_id && (virus)) - if(!C.reagents.has_reagent(treatment_virus)) - reagent_id = treatment_virus + reagent_id = "toxin" else + if(treat_virus) + var/virus = 0 + if(C:virus2.len) + for (var/ID in C.virus2) + if (ID in virusDB) // If the virus is known, the medbot is aware of it and will try to cure it + virus = 1 + + if (!reagent_id && (virus)) + if(!C.reagents.has_reagent(treatment_virus)) + reagent_id = treatment_virus + if (!reagent_id && (C.getBruteLoss() >= heal_threshold)) if(!C.reagents.has_reagent(treatment_brute)) reagent_id = treatment_brute diff --git a/code/game/machinery/computer/telescience.dm b/code/game/machinery/computer/telescience.dm deleted file mode 100644 index 6df9127872f..00000000000 --- a/code/game/machinery/computer/telescience.dm +++ /dev/null @@ -1,315 +0,0 @@ -/obj/machinery/computer/telescience - name = "Telepad Control Console" - desc = "Used to teleport objects to and from the telescience telepad." - icon_state = "teleport-sci" - circuit = "/obj/item/weapon/circuitboard/telesci_console" - var/teles_left // How many teleports left until it becomes uncalibrated - var/x_off // X offset - var/y_off // Y offset - var/x_co // X coordinate - var/y_co // Y coordinate - var/z_co // Z coordinate - var/trueX // X + offset - var/trueY // Y + offset - var/obj/machinery/telepad/telepad - var/tele_id = "Telesci" - var/obj/item/device/sps/inserted_sps - var/last_target - -/obj/machinery/computer/telescience/update_icon() - if(stat & BROKEN) - icon_state = "telescib" - else - if(stat & NOPOWER) - src.icon_state = "teleport0" - stat |= NOPOWER - else - icon_state = initial(icon_state) - stat &= ~NOPOWER - -/obj/machinery/computer/telescience/Destroy() - if(inserted_sps) - inserted_sps.loc = loc - inserted_sps = null - ..() - -/obj/machinery/computer/telescience/attack_paw(mob/user) - usr << "You are too primitive to use this computer." - return - -/obj/machinery/telescience/station/attack_ai(mob/user) - src.attack_hand() - -/obj/machinery/computer/telescience/attack_hand(mob/user) - ui_interact(user) - -/obj/machinery/computer/telescience/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) - if(..()) - return - if(stat & (NOPOWER|BROKEN)) - return - - // On first use, the coordinates are null. Rather than displaying null, we'll set them to unset. - if(!x_co) - x_co = "Unset" - if(!y_co) - y_co = "Unset" - if(!z_co) - z_co = "Unset" - - var/data[0] - data["coordx"] = x_co - data["coordy"] = y_co - data["coordz"] = z_co - data["sps"] = inserted_sps - - // Set up the Nano UI - ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) - if (!ui) - ui = new(user, src, ui_key, "telescience_console.tmpl", "Telescience Console UI", 640, 300) - ui.set_initial_data(data) - ui.open() - -/obj/machinery/computer/telescience/proc/telefail(var/level) - var/teleturf = get_turf(telepad) - switch(level) - if(1) - for(var/mob/O in hearers(telepad, null)) - O.show_message("\red The telepad weakly fizzles.", 2) - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread - s.set_up(5, 1, teleturf) - s.start() - if(2) - for(var/mob/living/carbon/human/M in viewers(telepad, null)) - if(M.loc.loc == telepad.loc.loc) // Stops the geneticists with X-Ray vision getting irradiated - M.apply_effect((rand(50, 100)), IRRADIATE, 0) - M << "\red You feel irradiated." - if(3) - for(var/turf/simulated/floor/target_tile in range(0,telepad)) - var/datum/gas_mixture/napalm = new - napalm.toxins = 25 - napalm.temperature = 2000 - target_tile.assume_air(napalm) - spawn (0) target_tile.hotspot_expose(700, 400) - for(var/mob/O in hearers(telepad, null)) - O.show_message("\red The telepad sets on fire!", 2) - if(4) - var/blocked = list(/mob/living/simple_animal/hostile, - /mob/living/simple_animal/hostile/alien/queen/large, - /mob/living/simple_animal/hostile/pirate, - /mob/living/simple_animal/hostile/pirate/ranged, - /mob/living/simple_animal/hostile/russian, - /mob/living/simple_animal/hostile/russian/ranged, - /mob/living/simple_animal/hostile/syndicate, - /mob/living/simple_animal/hostile/syndicate/melee, - /mob/living/simple_animal/hostile/syndicate/melee/space, - /mob/living/simple_animal/hostile/syndicate/ranged, - /mob/living/simple_animal/hostile/syndicate/ranged/space, - /mob/living/simple_animal/hostile/retaliate, - /mob/living/simple_animal/hostile/giant_spider/nurse) - var/list/hostiles = typesof(/mob/living/simple_animal/hostile) - blocked - playsound(teleturf, 'sound/effects/phasein.ogg', 100, 1) - for(var/mob/living/carbon/human/M in viewers(telepad, null)) - flick("e_flash", M.flash) - var/chosen = pick(hostiles) - var/mob/living/simple_animal/hostile/H = new chosen - H.loc = teleturf - return - -/obj/machinery/computer/telescience/proc/teleprep(var/type) - if(!telepad) - usr << "\red Error: No associated telepad. Please recalibrate and try again." - return - if(telepad.panel_open) - usr << "\red Error: The telepad can not be used while in maintenance mode." - return - var/numpick - var/failure = checkFail() - if(failure > 0) - numpick = pick(1,1,1,1,1,2,2,2,2,3) - telefail(numpick) - return - if(teles_left > 0) - if(prob(70 + (5 * telepad.efficiency))) - teles_left -= 1 - tele(type) - if(teles_left == 0) - for(var/mob/O in hearers(src, null)) - O.show_message("\red The telepad has become uncalibrated.", 2) - return - else - if(prob(25 + (10 * telepad.efficiency))) - tele(type) - else - numpick = pick(1,1,1,2,2,3,4) - telefail(numpick) - return - numpick = pick(1,1,1,1,1,2,2,2,2,3) - telefail(numpick) - return - -/obj/machinery/computer/telescience/proc/tele(var/type) - var/tele = get_turf(telepad) - trueX = (x_co + x_off) - trueY = (y_co + y_off) - var/target = locate(trueX, trueY, z_co) - last_target = target - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread - s.set_up(5, 1, tele) - s.start() - flick("pad-beam", telepad) - var/list/teleportables = list() - switch(type) - if(0) - for(var/atom/A in tele) - if(!istype(A, /obj/effect) && !istype(A, /mob/living/silicon/ai) && !istype(A, /obj/item/device/radio/intercom) && !istype(A, /obj/structure/closet/secure_closet/brig)) - if(istype(A, /obj/structure)) - var/obj/structure/S = A - if(!S.anchored) - teleportables += S - else if(istype(A, /obj/machinery)) - var/obj/machinery/M = A - if(!M.anchored) - teleportables += M - else - teleportables += A - for(var/atom/T in teleportables) - do_teleport(T, target, 0) - usr << "\blue Teleport successful." - if(1) - for(var/atom/A in target) - if(!istype(A, /obj/effect) && !istype(A, /mob/living/silicon/ai) && !istype(A, /obj/item/device/radio/intercom)) - if(istype(A, /obj/structure)) - var/obj/structure/S = A - if(!S.anchored) - teleportables += S - else if(istype(A, /obj/machinery)) - var/obj/machinery/M = A - if(!M.anchored) - teleportables += M - else - teleportables += A - for(var/atom/T in teleportables) - do_teleport(T, tele, 0) - usr << "\blue Teleport successful." - return - -/obj/machinery/computer/telescience/proc/checkFail() - var/fail = 0 - if(x_co == "" || x_co == "Unset") - usr << "\red Error: set X coordinate." - fail = 1 - return fail - if(y_co == "" || y_co == "Unset") - usr << "\red Error: set Y coordinate." - fail = 1 - return fail - if(z_co == "" || z_co == "Unset") - usr << "\red Error: set Z coordinate." - fail = 1 - return fail - if(x_co < 11 || x_co > 245) - usr << "\red Error: X is less than 11 or greater than 245." - fail = 1 - return fail - if(y_co < 11 || y_co > 245) - usr << "\red Error: Y is less than 11 or greater than 245." - fail = 1 - return fail - if(z_co == 2 || z_co < 1 || z_co > 6) - if (z_co == 7 & src.emagged == 1) - // This should be empty, allows for it to continue if the z-level is 7 and the machine is emagged. - else - usr << "\red Error: Z is less than 1, greater than [src.emagged ? "7" : "6"], or equal to 2." - fail = 1 - return fail - if(istype(get_area(locate(x_co,y_co,z_co)), /area/security/armoury/gamma)) - usr << "\red Error: Attempting to access telescience-protected area." - fail = 1 - return fail - return fail - -/obj/machinery/computer/telescience/Topic(href, href_list) - if(..()) - return - if(href_list["ejectSPS"]) - inserted_sps.loc = loc - inserted_sps = null - nanomanager.update_uis(src) - if(href_list["setMemory"]) - if(last_target) - inserted_sps.locked_location = last_target - usr << "\blue Location saved." - else - usr << "\red Error: No data stored." - nanomanager.update_uis(src) - if(href_list["setx"]) - var/a = input("Please input desired X coordinate.", name, x_co) as num - a = copytext(sanitize(a), 1, 20) - x_co = a - x_co = text2num(x_co) - nanomanager.update_uis(src) - return - if(href_list["sety"]) - var/b = input("Please input desired Y coordinate.", name, y_co) as num - b = copytext(sanitize(b), 1, 20) - y_co = b - y_co = text2num(y_co) - nanomanager.update_uis(src) - return - if(href_list["setz"]) - var/c = input("Please input desired Z coordinate.", name, z_co) as num - c = copytext(sanitize(c), 1, 20) - z_co = c - z_co = text2num(z_co) - nanomanager.update_uis(src) - return - if(href_list["send"]) - teleprep(0) - nanomanager.update_uis(src) - return - if(href_list["receive"]) - teleprep(1) - nanomanager.update_uis(src) - return - if(href_list["recal"]) - if(telepad == null) - for(var/obj/machinery/telepad/T in range(src,10)) - telepad = T - if(!telepad) - usr << "\red Error: No telepads in range were found." - nanomanager.update_uis(src) - return - var/teleturf = get_turf(telepad) - teles_left = rand(8,12) - x_off = rand(-10,10) - y_off = rand(-10,10) - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread - s.set_up(5, 1, teleturf) - s.start() - usr << "\blue Calibration successful." - nanomanager.update_uis(src) - return - -/obj/machinery/computer/telescience/attackby(I as obj, var/mob/user as mob) // Emagging - if(istype(I,/obj/item/weapon/card/emag)) - if (src.emagged == 0) - user << "\blue You scramble the Telescience authentication key to an unknown signal. You should be able to teleport to more places now!" - src.emagged = 1 - else - user << "\red The machine seems unaffected by the card swipe..." - else if(istype(I, /obj/item/device/sps)) - if(!inserted_sps) - inserted_sps = I - user.before_take_item(I) - inserted_sps.loc = src - user.visible_message("You insert [I] into the SPS device slot.") - attack_hand(user) - else if(istype(I, /obj/item/device/multitool)) - var/obj/item/device/multitool/M = I - if(M.buffer && istype(M.buffer, /obj/machinery/telepad)) - telepad = M.buffer - M.buffer = null - user << "You upload the data from [I]'s buffer." - else - ..() \ No newline at end of file diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm index 16ce04eb3c5..530dca2617d 100644 --- a/code/game/machinery/doors/firedoor.dm +++ b/code/game/machinery/doors/firedoor.dm @@ -132,9 +132,9 @@ o += "" else o += "" - o += "[celsius]Celsius " + o += "[celsius] Celsius " o += "" - o += "[pressure]kPa" + o += "[pressure] kPa" usr << o if( islist(users_to_open) && users_to_open.len) diff --git a/code/game/machinery/telepad.dm b/code/game/machinery/telepad.dm deleted file mode 100644 index e1a1a2afd9e..00000000000 --- a/code/game/machinery/telepad.dm +++ /dev/null @@ -1,78 +0,0 @@ -/obj/machinery/telepad - name = "telepad" - desc = "A bluespace telepad used for teleporting objects to and from a location." - icon = 'icons/obj/telescience.dmi' - icon_state = "pad-idle" - anchored = 1 - use_power = 1 - idle_power_usage = 2 - active_power_usage = 50 - var/efficiency - -/obj/machinery/telepad/New() - ..() - component_parts = list() - component_parts += new /obj/item/weapon/circuitboard/telesci_pad(src) - component_parts += new /obj/item/bluespace_crystal/artificial(src) - component_parts += new /obj/item/bluespace_crystal/artificial(src) - component_parts += new /obj/item/weapon/stock_parts/capacitor(src) - component_parts += new /obj/item/weapon/stock_parts/console_screen(src) - component_parts += new /obj/item/stack/cable_coil(src, 1) - RefreshParts() - -/obj/machinery/telepad/RefreshParts() - var/E - for(var/obj/item/weapon/stock_parts/capacitor/C in component_parts) - E += C.rating - efficiency = E - -/obj/machinery/telepad/attackby(obj/item/I, mob/user) - if(default_deconstruction_screwdriver(user, "pad-idle-o", "pad-idle", I)) - return - - if(panel_open) - if(istype(I, /obj/item/device/multitool)) - var/obj/item/device/multitool/M = I - M.buffer = src - user << "You save the data in the [I.name]'s buffer." - - if(exchange_parts(user, I)) - return - - default_deconstruction_crowbar(I) - -/obj/machinery/telepad_cargo - name = "cargo telepad" - desc = "A telepad used by the Rapid Crate Sender." - icon = 'icons/obj/telescience.dmi' - icon_state = "pad-idle" - anchored = 1 - use_power = 1 - idle_power_usage = 2 - active_power_usage = 50 - var/stage = 0 - -/obj/machinery/telepad_cargo/attackby(obj/item/weapon/W as obj, mob/user as mob) - if(istype(W, /obj/item/weapon/wrench)) - playsound(src, 'sound/items/Ratchet.ogg', 50, 1) - if(anchored) - anchored = 0 - user << "The [src] can now be moved." - else if(!anchored) - anchored = 1 - user << "The [src] is now secured." - if(istype(W, /obj/item/weapon/screwdriver)) - if(stage == 0) - playsound(src, 'sound/items/Screwdriver.ogg', 50, 1) - user << "You unscrew the telepad's tracking beacon." - stage = 1 - else if(stage == 1) - playsound(src, 'sound/items/Screwdriver.ogg', 50, 1) - user << "You screw in the telepad's tracking beacon." - stage = 0 - if(istype(W, /obj/item/weapon/weldingtool) && stage == 1) - playsound(src, 'sound/items/Welder.ogg', 50, 1) - user << "You disassemble the telepad." - new /obj/item/stack/sheet/metal(get_turf(src)) - new /obj/item/stack/sheet/glass(get_turf(src)) - qdel(src) \ No newline at end of file diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm index b64d0c27983..6e6c79f5772 100644 --- a/code/game/machinery/teleporter.dm +++ b/code/game/machinery/teleporter.dm @@ -3,7 +3,7 @@ desc = "Used to control a linked teleportation Hub and Station." icon_state = "teleport" circuit = "/obj/item/weapon/circuitboard/teleporter" - var/obj/item/device/sps/locked = null + var/obj/item/device/gps/locked = null var/regime_set = "Teleporter" var/id = null var/obj/machinery/teleport/station/power_station @@ -40,16 +40,16 @@ user << "\blue The teleporter can now lock on to Syndicate beacons!" else ui_interact(user) - else if(istype(I, /obj/item/device/sps)) - var/obj/item/device/sps/L = I + else if(istype(I, /obj/item/device/gps)) + var/obj/item/device/gps/L = I if(L.locked_location && !(stat & (NOPOWER|BROKEN))) user.before_take_item(L) L.loc = src locked = L - user << "You insert the SPS device into the [name]'s slot." + user << "You insert the GPS device into the [name]'s slot." src.attack_hand(user) else - user << "No useable data was found on te SPS device." + user << "No useable data was found on te GPS device." else ..() return diff --git a/code/game/machinery/turrets.dm b/code/game/machinery/turrets.dm index 7bfab1eddec..dbaa9686fb1 100644 --- a/code/game/machinery/turrets.dm +++ b/code/game/machinery/turrets.dm @@ -190,6 +190,13 @@ targeting_active = 1 target() targeting_active = 0 + + if(prob(15)) + if(prob(50)) + playsound(get_turf(src), 'sound/effects/turret/move1.wav', 60, 1) + else + playsound(get_turf(src), 'sound/effects/turret/move2.wav', 60, 1) + else if(!isPopping())//else, pop down if(!isDown()) popDown() @@ -229,6 +236,10 @@ else A = new /obj/item/projectile/energy/electrode( loc ) use_power(200) + if(src.lasers) + playsound(get_turf(src), 'sound/weapons/Laser.ogg', 60, 1) + else + playsound(get_turf(src), 'sound/weapons/Taser.ogg', 60, 1) A.current = T A.yo = U.y - T.y A.xo = U.x - T.x @@ -244,6 +255,7 @@ if ((!isPopping()) || src.popping==-1) invisibility = 0 popping = 1 + playsound(get_turf(src), 'sound/effects/turret/open.wav', 60, 1) if (src.cover!=null) flick("popup", src.cover) src.cover.icon_state = "openTurretCover" @@ -253,6 +265,7 @@ /obj/machinery/turret/proc/popDown() if ((!isPopping()) || src.popping==1) popping = -1 + playsound(get_turf(src), 'sound/effects/turret/open.wav', 60, 1) if (src.cover!=null) flick("popdown", src.cover) src.cover.icon_state = "turretCover" @@ -272,7 +285,7 @@ /obj/machinery/turret/attackby(obj/item/weapon/W, mob/user)//I can't believe no one added this before/N ..() - playsound(src.loc, 'sound/weapons/smash.ogg', 60, 1) + playsound(get_turf(src), 'sound/weapons/smash.ogg', 60, 1) src.spark_system.start() src.health -= W.force * 0.5 if (src.health <= 0) @@ -422,7 +435,7 @@ /obj/machinery/turret/attack_alien(mob/living/carbon/alien/humanoid/M as mob) if(!(stat & BROKEN)) - playsound(src.loc, 'sound/weapons/slash.ogg', 25, 1, -1) + playsound(get_turf(src), 'sound/weapons/slash.ogg', 25, 1, -1) visible_message("\red [] has slashed at []!", M, src) src.health -= 15 if (src.health <= 0) @@ -609,7 +622,7 @@ return if (targloc == curloc) return - playsound(src, 'sound/weapons/Gunshot.ogg', 50, 1) + playsound(get_turf(src), 'sound/weapons/Gunshot.ogg', 60, 1) var/obj/item/projectile/A = new /obj/item/projectile/bullet(curloc) A.current = curloc A.yo = targloc.y - curloc.y diff --git a/code/game/objects/items/devices/gps.dm b/code/game/objects/items/devices/gps.dm deleted file mode 100644 index 16105f1fb61..00000000000 --- a/code/game/objects/items/devices/gps.dm +++ /dev/null @@ -1,84 +0,0 @@ -var/list/sps_list = list() -/obj/item/device/sps - name = "space positioning system" - desc = "Helping lost spacemen find their way through the planets since 2016." - icon = 'icons/obj/telescience.dmi' - icon_state = "gps-c" - w_class = 2.0 - slot_flags = SLOT_BELT - origin_tech = "materials=2;magnets=3;bluespace=2" - var/spstag = "COM0" - var/emped = 0 - var/turf/locked_location - -/obj/item/device/sps/New() - ..() - sps_list.Add(src) - name = "space positioning system ([spstag])" - overlays += "working" - -/obj/item/device/sps/Destroy() - sps_list.Remove(src) - ..() - -/obj/item/device/sps/emp_act(severity) - emped = 1 - overlays -= "working" - overlays += "emp" - spawn(300) - emped = 0 - overlays -= "emp" - overlays += "working" - -/obj/item/device/sps/attack_self(mob/user as mob) - - var/obj/item/device/sps/t = "" - var/sps_window_height = 110 + sps_list.len * 20 // Variable window height, depending on how many sps units there are to show - if(emped) - t += "ERROR" - else - t += "Set TagRefresh" - t += "
Tag: [spstag]" - if(locked_location && locked_location.loc) - t += "
Bluespace coordinates saved: [locked_location.loc]" - sps_window_height += 20 - - for(var/obj/item/device/sps/G in sps_list) - var/turf/pos = get_turf(G) - var/area/sps_area = get_area(G) - var/tracked_spstag = G.spstag - if(G.emped == 1) - t += "
[tracked_spstag]: ERROR" - else - t += "
[tracked_spstag]: [format_text(sps_area.name)] ([pos.x], [pos.y], [pos.z])" - - var/datum/browser/popup = new(user, "sps", name, 360, min(sps_window_height, 800)) - popup.set_content(t) - popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) - popup.open() - -/obj/item/device/sps/Topic(href, href_list) - ..() - if(href_list["tag"] ) - var/a = input("Please enter desired tag.", name, spstag) as text - a = uppertext(copytext(sanitize(a), 1, 5)) - if(src.loc == usr) - spstag = a - name = "space positioning system ([spstag])" - attack_self(usr) - if(href_list["refresh"] ) - if(src.loc == usr) - attack_self(usr) - -/obj/item/device/sps/science - icon_state = "gps-s" - spstag = "SCI0" - -/obj/item/device/sps/engineering - icon_state = "gps-e" - spstag = "ENG0" - -/obj/item/device/sps/mining - icon_state = "gps-m" - spstag = "MINE0" - desc = "A positioning system helpful for rescuing trapped or injured miners, keeping one on you at all times while mining might just save your life." diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm index e92a2f2cb3b..3f30f0c03e7 100644 --- a/code/game/objects/items/devices/radio/intercom.dm +++ b/code/game/objects/items/devices/radio/intercom.dm @@ -4,7 +4,7 @@ icon_state = "intercom" anchored = 1 w_class = 4.0 - canhear_range = 2 + canhear_range = 5 flags = FPRINT | CONDUCT | TABLEPASS | NOBLOODY var/number = 0 var/anyai = 1 diff --git a/code/game/objects/items/weapons/RCS.dm b/code/game/objects/items/weapons/RCS.dm deleted file mode 100644 index 8c90ffa9d58..00000000000 --- a/code/game/objects/items/weapons/RCS.dm +++ /dev/null @@ -1,59 +0,0 @@ -/obj/item/weapon/rcs - name = "rapid-crate-sender (RCS)" - desc = "Use this to send crates and closets to cargo telepads." - icon = 'icons/obj/items.dmi' - icon_state = "rcs" - opacity = 0 - density = 0 - anchored = 0.0 - flags = FPRINT | CONDUCT - force = 10.0 - throwforce = 10.0 - throw_speed = 1 - throw_range = 5 - var/rcharges = 10 - var/obj/machinery/pad = null - var/last_charge = 30 - var/mode = 0 - var/rand_x = 0 - var/rand_y = 0 - var/emagged = 0 - var/teleporting = 0 - -/obj/item/weapon/rcs/New() - processing_objects.Add(src) - desc = "Use this to send crates and closets to cargo telepads. There are [rcharges] charges left." - -/obj/item/weapon/rcs/Destroy() - processing_objects.Remove(src) - ..() - -/obj/item/weapon/rcs/process() - if(rcharges > 10) - rcharges = 10 - if(last_charge == 0) - rcharges++ - desc = "Use this to send crates and closets to cargo telepads. There are [rcharges] charges left." - last_charge = 30 - else - last_charge-- - -/obj/item/weapon/rcs/attack_self(mob/user) - if(emagged) - if(mode == 0) - mode = 1 - playsound(src.loc, 'sound/effects/pop.ogg', 50, 0) - user << "\red The telepad locator has become uncalibrated." - else - mode = 0 - playsound(src.loc, 'sound/effects/pop.ogg', 50, 0) - user << "\blue You calibrate the telepad locator." - -/obj/item/weapon/rcs/attackby(obj/item/W, mob/user) - if(istype(W, /obj/item/weapon/card/emag) && emagged == 0) - emagged = 1 - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread - s.set_up(5, 1, src) - s.start() - user << "\red You emag the RCS. Click on it to toggle between modes." - return \ No newline at end of file diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm index 4838c848339..a72e1a7239e 100644 --- a/code/game/objects/items/weapons/tools.dm +++ b/code/game/objects/items/weapons/tools.dm @@ -487,12 +487,6 @@ if(istype(M,/mob/living/carbon/human)) var/mob/living/carbon/human/H = M H.updatehealth() - if(istype(M,/mob/living/carbon/human/machine) && M.stat == 0) // If an IPC is brought back to life by welding it, which is possible, update the mob list - if(M in dead_mob_list) - dead_mob_list -= M - respawnable_list -= M - living_mob_list += M - mob_list += M return else user << "\red You need more welding fuel to complete this task." diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm index 2de850b7412..5308a6f449c 100644 --- a/code/modules/mob/living/carbon/human/human_damage.dm +++ b/code/modules/mob/living/carbon/human/human_damage.dm @@ -18,8 +18,11 @@ if (!H.amputated) if ((health >= (config.health_threshold_dead/100*75)) && stat == DEAD) //need to get them 25% away from death point before reviving them dead_mob_list -= src + respawnable_list -= src living_mob_list += src + mob_list += src stat = CONSCIOUS + ear_deaf = 0 return /mob/living/carbon/human/getBrainLoss() diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 3353b07b6dd..50282c53026 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -1292,7 +1292,9 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc see_invisible = SEE_INVISIBLE_LIVING seer = 0 + var/tmp/has_ninja_mask = 0 if(istype(wear_mask, /obj/item/clothing/mask/gas/voice/space_ninja)) + has_ninja_mask = 1 var/obj/item/clothing/mask/gas/voice/space_ninja/O = wear_mask switch(O.mode) if(0) @@ -1305,7 +1307,7 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc if(!druggy) see_invisible = SEE_INVISIBLE_LIVING if(1) see_in_dark = 5 - if(!druggy) see_invisible = SEE_INVISIBLE_LIVING + if(!druggy) see_invisible = SEE_INVISIBLE_MINIMUM if(2) sight |= SEE_MOBS if(!druggy) see_invisible = SEE_INVISIBLE_LEVEL_TWO @@ -1340,7 +1342,7 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc see_invisible = SEE_INVISIBLE_LIVING if(istype(O,/obj/item/clothing/glasses/hud/security/night) || istype(O,/obj/item/clothing/glasses/hud/health/night)) see_invisible = SEE_INVISIBLE_MINIMUM - else if(!seer) + else if(!seer && !has_ninja_mask) see_in_dark = species.darksight see_invisible = SEE_INVISIBLE_LIVING diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index 1223913f0ce..c688127ad2b 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -633,12 +633,6 @@ obj/structure/cable/proc/cableColor(var/colorC) if(istype(M,/mob/living/carbon/human)) var/mob/living/carbon/human/H = M H.updatehealth() - if(istype(M,/mob/living/carbon/human/machine) && M.stat == 0) // If an IPC is brought back to life by welding it, which is possible, update the mob list - if(M in dead_mob_list) - dead_mob_list -= M - respawnable_list -= M - living_mob_list += M - mob_list += M return else user << "Nothing to fix!" diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 9602f89303b..e30df0e0215 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -51,6 +51,7 @@ var/drowsy = 0 var/agony = 0 var/embed = 0 // whether or not the projectile can embed itself in the mob + var/forcedodge = 0 proc/delete() @@ -82,9 +83,8 @@ loc = A.loc return 0 //cannot shoot yourself - if(bumped) return 0 - var/forcedodge = 0 // force the projectile to pass - + if(bumped) + return 1 bumped = 1 if(firer && istype(A, /mob)) var/mob/M = A @@ -137,14 +137,11 @@ spawn(0) if(A) - if(!forcedodge) - forcedodge = A.bullet_act(src, def_zone) // searches for return value - if(forcedodge == -1) // the bullet passes through a dense object! + var/turf/new_loc = get_turf(A) + var/permutation = A.bullet_act(src, def_zone) // searches for return value, could be deleted after run so check A isn't null + if(permutation == -1 || forcedodge)// the bullet passes through a dense object! bumped = 0 // reset bumped variable! - if(istype(A, /turf)) - loc = A - else - loc = A.loc + loc = new_loc permutated.Add(A) return 0 if(istype(A,/turf)) diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm index b83ab6ee73f..639358f0246 100644 --- a/code/modules/projectiles/projectile/beams.dm +++ b/code/modules/projectiles/projectile/beams.dm @@ -42,6 +42,7 @@ icon_state = "xray" damage = 15 irradiate = 30 + forcedodge = 1 /obj/item/projectile/beam/pulse name = "pulse" diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index eea7cdb687f..1cc959346f8 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -2123,14 +2123,14 @@ datum/design/bluespace_crystal reliability_base = 100 build_path = "/obj/item/bluespace_crystal/artificial" -datum/design/telesci_sps - name = "SPS Device" +datum/design/telesci_gps + name = "GPS Device" desc = "A device that can track its position at all times." - id = "telesci_sps" + id = "telesci_Gps" req_tech = list("materials" = 2, "magnets" = 3, "bluespace" = 3) build_type = PROTOLATHE materials = list("$metal" = 500, "$glass" = 1000) - build_path = /obj/item/device/sps + build_path = /obj/item/device/gps ///////////////////////////////////////// /////////////////HUDs//////////////////// diff --git a/code/modules/research/xenoarchaeology/tools/tools.dm b/code/modules/research/xenoarchaeology/tools/tools.dm index 479d0240fac..39dc6738f4f 100644 --- a/code/modules/research/xenoarchaeology/tools/tools.dm +++ b/code/modules/research/xenoarchaeology/tools/tools.dm @@ -2,18 +2,6 @@ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Miscellaneous xenoarchaeology tools -/obj/item/device/gps - name = "relay positioning device" - desc = "Triangulates the approximate co-ordinates using a nearby satellite network." - icon = 'icons/obj/device.dmi' - icon_state = "locator" - item_state = "locator" - w_class = 2 - -/obj/item/device/gps/attack_self(var/mob/user as mob) - var/turf/T = get_turf(src) - user << "\blue \icon[src] [src] flashes [T.x].[rand(0,9)]:[T.y].[rand(0,9)]:[T.z].[rand(0,9)]." - /obj/item/device/measuring_tape name = "measuring tape" desc = "A coiled metallic tape used to check dimensions and lengths." diff --git a/code/game/objects/items/bluespace_crystal.dm b/code/modules/telesci/bscrystal.dm similarity index 100% rename from code/game/objects/items/bluespace_crystal.dm rename to code/modules/telesci/bscrystal.dm diff --git a/code/modules/telesci/gps.dm b/code/modules/telesci/gps.dm new file mode 100644 index 00000000000..25c5bb154e6 --- /dev/null +++ b/code/modules/telesci/gps.dm @@ -0,0 +1,81 @@ +var/list/GPS_list = list() +/obj/item/device/gps + name = "global positioning system" + desc = "Helping lost spacemen find their way through the planets since 2016." + icon = 'icons/obj/telescience.dmi' + icon_state = "gps-c" + w_class = 2.0 + slot_flags = SLOT_BELT + origin_tech = "programming=2;engineering=2" + var/gpstag = "COM0" + var/emped = 0 + var/turf/locked_location + +/obj/item/device/gps/New() + ..() + GPS_list.Add(src) + name = "global positioning system ([gpstag])" + overlays += "working" + +/obj/item/device/gps/Destroy() + GPS_list.Remove(src) + ..() + +/obj/item/device/gps/emp_act(severity) + emped = 1 + overlays -= "working" + overlays += "emp" + spawn(300) + emped = 0 + overlays -= "emp" + overlays += "working" + +/obj/item/device/gps/attack_self(mob/user as mob) + + var/obj/item/device/gps/t = "" + var/gps_window_height = 110 + GPS_list.len * 20 // Variable window height, depending on how many GPS units there are to show + if(emped) + t += "ERROR" + else + t += "
Set Tag " + t += "
Tag: [gpstag]" + if(locked_location && locked_location.loc) + t += "
Bluespace coordinates saved: [locked_location.loc]" + gps_window_height += 20 + + for(var/obj/item/device/gps/G in GPS_list) + var/turf/pos = get_turf(G) + var/area/gps_area = get_area(G) + var/tracked_gpstag = G.gpstag + if(G.emped == 1) + t += "
[tracked_gpstag]: ERROR" + else + t += "
[tracked_gpstag]: [format_text(gps_area.name)] ([pos.x], [pos.y], [pos.z])" + + var/datum/browser/popup = new(user, "GPS", name, 360, min(gps_window_height, 800)) + popup.set_content(t) + popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) + popup.open() + +/obj/item/device/gps/Topic(href, href_list) + ..() + if(href_list["tag"] ) + var/a = input("Please enter desired tag.", name, gpstag) as text + a = uppertext(copytext(sanitize(a), 1, 5)) + if(src.loc == usr) + gpstag = a + name = "global positioning system ([gpstag])" + attack_self(usr) + +/obj/item/device/gps/science + icon_state = "gps-s" + gpstag = "SCI0" + +/obj/item/device/gps/engineering + icon_state = "gps-e" + gpstag = "ENG0" + +/obj/item/device/gps/mining + icon_state = "gps-m" + gpstag = "MINE0" + desc = "A positioning system helpful for rescuing trapped or injured miners, keeping one on you at all times while mining might just save your life." diff --git a/code/modules/telesci/telepad.dm b/code/modules/telesci/telepad.dm new file mode 100644 index 00000000000..dcdaffb4727 --- /dev/null +++ b/code/modules/telesci/telepad.dm @@ -0,0 +1,158 @@ +///SCI TELEPAD/// +/obj/machinery/telepad + name = "telepad" + desc = "A bluespace telepad used for teleporting objects to and from a location." + icon = 'icons/obj/telescience.dmi' + icon_state = "pad-idle" + anchored = 1 + use_power = 1 + idle_power_usage = 200 + active_power_usage = 5000 + var/efficiency + +/obj/machinery/telepad/New() + ..() + component_parts = list() + component_parts += new /obj/item/weapon/circuitboard/telesci_pad(null) + component_parts += new /obj/item/bluespace_crystal/artificial(null) + component_parts += new /obj/item/bluespace_crystal/artificial(null) + component_parts += new /obj/item/weapon/stock_parts/capacitor(null) + component_parts += new /obj/item/weapon/stock_parts/console_screen(null) + component_parts += new /obj/item/stack/cable_coil(null, 1) + RefreshParts() + +/obj/machinery/telepad/RefreshParts() + var/E + for(var/obj/item/weapon/stock_parts/capacitor/C in component_parts) + E += C.rating + efficiency = E + +/obj/machinery/telepad/attackby(obj/item/I, mob/user) + if(default_deconstruction_screwdriver(user, "pad-idle-o", "pad-idle", I)) + return + + if(panel_open) + if(istype(I, /obj/item/device/multitool)) + var/obj/item/device/multitool/M = I + M.buffer = src + user << "You save the data in the [I.name]'s buffer." + + if(exchange_parts(user, I)) + return + + default_deconstruction_crowbar(I) + + +//CARGO TELEPAD// +/obj/machinery/telepad_cargo + name = "cargo telepad" + desc = "A telepad used by the Rapid Crate Sender." + icon = 'icons/obj/telescience.dmi' + icon_state = "pad-idle" + anchored = 1 + use_power = 1 + idle_power_usage = 20 + active_power_usage = 500 + var/stage = 0 +/obj/machinery/telepad_cargo/attackby(obj/item/weapon/W as obj, mob/user as mob) + if(istype(W, /obj/item/weapon/wrench)) + anchored = 0 + playsound(src, 'sound/items/Ratchet.ogg', 50, 1) + if(anchored) + anchored = 0 + user << " The [src] can now be moved." + else if(!anchored) + anchored = 1 + user << " The [src] is now secured." + if(istype(W, /obj/item/weapon/screwdriver)) + if(stage == 0) + playsound(src, 'sound/items/Screwdriver.ogg', 50, 1) + user << " You unscrew the telepad's tracking beacon." + stage = 1 + else if(stage == 1) + playsound(src, 'sound/items/Screwdriver.ogg', 50, 1) + user << " You screw in the telepad's tracking beacon." + stage = 0 + if(istype(W, /obj/item/weapon/weldingtool) && stage == 1) + playsound(src, 'sound/items/Welder.ogg', 50, 1) + user << " You disassemble the telepad." + new /obj/item/stack/sheet/metal(get_turf(src)) + new /obj/item/stack/sheet/glass(get_turf(src)) + qdel(src) + +///TELEPAD CALLER/// +/obj/item/device/telepad_beacon + name = "telepad beacon" + desc = "Use to warp in a cargo telepad." + icon = 'icons/obj/radio.dmi' + icon_state = "beacon" + item_state = "signaler" + origin_tech = "bluespace=3" + +/obj/item/device/telepad_beacon/attack_self(mob/user as mob) + if(user) + user << " Locked In" + new /obj/machinery/telepad_cargo(user.loc) + playsound(src, 'sound/effects/pop.ogg', 100, 1, 1) + qdel(src) + return + +///HANDHELD TELEPAD USER/// +/obj/item/weapon/rcs + name = "rapid-crate-sender (RCS)" + desc = "Use this to send crates and closets to cargo telepads." + icon = 'icons/obj/telescience.dmi' + icon_state = "rcs" + flags = CONDUCT + force = 10.0 + throwforce = 10.0 + throw_speed = 2 + throw_range = 5 + var/rcharges = 10 + var/obj/machinery/pad = null + var/last_charge = 30 + var/mode = 0 + var/rand_x = 0 + var/rand_y = 0 + var/emagged = 0 + var/teleporting = 0 + +/obj/item/weapon/rcs/New() + ..() + processing_objects.Add(src) + +/obj/item/weapon/rcs/examine(mob/user) + ..() + user << "There are [rcharges] charge\s left." + +/obj/item/weapon/rcs/Destroy() + processing_objects.Remove(src) + ..() +/obj/item/weapon/rcs/process() + if(rcharges > 10) + rcharges = 10 + if(last_charge == 0) + rcharges++ + last_charge = 30 + else + last_charge-- + +/obj/item/weapon/rcs/attack_self(mob/user) + if(emagged) + if(mode == 0) + mode = 1 + playsound(src.loc, 'sound/effects/pop.ogg', 50, 0) + user << " The telepad locator has become uncalibrated." + else + mode = 0 + playsound(src.loc, 'sound/effects/pop.ogg', 50, 0) + user << " You calibrate the telepad locator." + +/obj/item/weapon/rcs/attackby(obj/item/W, mob/user) + if(istype(W, /obj/item/weapon/card/emag) && emagged == 0) + emagged = 1 + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + s.set_up(5, 1, src) + s.start() + user << " You emag the RCS. Click on it to toggle between modes." + return \ No newline at end of file diff --git a/code/modules/telesci/telesci_computer.dm b/code/modules/telesci/telesci_computer.dm new file mode 100644 index 00000000000..f95abbd96c1 --- /dev/null +++ b/code/modules/telesci/telesci_computer.dm @@ -0,0 +1,383 @@ +/obj/machinery/computer/telescience + name = "\improper Telepad Control Console" + desc = "Used to teleport objects to and from the telescience telepad." + icon_state = "teleport" + circuit = /obj/item/weapon/circuitboard/telesci_console + var/sending = 1 + var/obj/machinery/telepad/telepad = null + var/temp_msg = "Telescience control console initialized.
Welcome." + + // VARIABLES // + var/teles_left // How many teleports left until it becomes uncalibrated + var/datum/projectile_data/last_tele_data = null + var/z_co = 1 + var/power_off + var/rotation_off + //var/angle_off + var/last_target + + var/rotation = 0 + var/angle = 45 + var/power = 5 + + // Based on the power used + var/teleport_cooldown = 0 // every index requires a bluespace crystal + var/list/power_options = list(5, 10, 20, 25, 30, 40, 50, 80, 100) + var/teleporting = 0 + var/starting_crystals = 3 + var/max_crystals = 4 + var/list/crystals = list() + var/obj/item/device/gps/inserted_gps + +/obj/machinery/computer/telescience/New() + ..() + recalibrate() + +/obj/machinery/computer/telescience/Destroy() + eject() + if(inserted_gps) + inserted_gps.loc = loc + inserted_gps = null + ..() + +/obj/machinery/computer/telescience/examine(mob/user) + ..() + user << "There are [crystals.len ? crystals.len : "no"] bluespace crystal\s in the crystal slots." + +/obj/machinery/computer/telescience/initialize() + ..() + for(var/i = 1; i <= starting_crystals; i++) + crystals += new /obj/item/bluespace_crystal/artificial(null) // starting crystals + +/obj/machinery/computer/telescience/attack_paw(mob/user) + user << "You are too primitive to use this computer." + return + +/obj/machinery/computer/telescience/attackby(obj/item/W, mob/user) + if(istype(W,/obj/item/weapon/card/emag)) + if (emagged == 0) + user << "\blue You scramble the Telescience authentication key to an unknown signal. You should be able to teleport to more places now!" + emagged = 1 + else + user << "\red The machine seems unaffected by the card swipe..." + if(istype(W, /obj/item/bluespace_crystal)) + if(crystals.len >= max_crystals) + user << "There are not enough crystal slots." + return + user.drop_item() + crystals += W + W.loc = null + user.visible_message("[user] inserts [W] into \the [src]'s crystal slot.") + updateUsrDialog() + else if(istype(W, /obj/item/device/gps)) + if(!inserted_gps) + inserted_gps = W + user.before_take_item(W) + W.loc = src + user.visible_message("[user] inserts [W] into \the [src]'s GPS device slot.") + updateUsrDialog() + else if(istype(W, /obj/item/device/multitool)) + var/obj/item/device/multitool/M = W + if(M.buffer && istype(M.buffer, /obj/machinery/telepad)) + telepad = M.buffer + M.buffer = null + user << "You upload the data from the [W.name]'s buffer." + updateUsrDialog() + else + ..() + +/obj/machinery/computer/telescience/attack_ai(mob/user) + src.attack_hand(user) + +/obj/machinery/computer/telescience/attack_hand(mob/user) + if(..()) + return + interact(user) + +/obj/machinery/computer/telescience/interact(mob/user) + user.set_machine(src) + var/t + if(!telepad) + in_use = 0 //Yeah so if you deconstruct teleporter while its in the process of shooting it wont disable the console + t += "
No telepad located.
Please add telepad data.

" + else + if(inserted_gps) + t += "Eject GPS" + t += "Set GPS memory" + else + t += "Eject GPS" + t += "Set GPS memory" + t += "
[temp_msg]

" + t += "Set Bearing" + t += "
[rotation] degrees
" + t += "Set Elevation" + t += "
[angle] degrees
" + t += "Set Power" + t += "
" + + for(var/i = 1; i <= power_options.len; i++) + if(crystals.len + telepad.efficiency < i) + t += "[power_options[i]]" + continue + if(power == power_options[i]) + t += "[power_options[i]]" + continue + t += "[power_options[i]]" + t += "
" + + t += "Set Sector" + t += "
[z_co ? z_co : "NULL"]
" + + t += "
Send" + t += " Receive" + t += "
Recalibrate Crystals Eject Crystals" + + // Information about the last teleport + t += "
" + if(!last_tele_data) + t += "No teleport data found." + else + t += "Source Location: ([last_tele_data.src_x], [last_tele_data.src_y])
" + //t += "Distance: [round(last_tele_data.distance, 0.1)]m
" + t += "Time: [round(last_tele_data.time, 0.1)] secs
" + t += "
" + + var/datum/browser/popup = new(user, "telesci", name, 300, 500) + popup.set_content(t) + popup.open() + return + +/obj/machinery/computer/telescience/proc/sparks() + if(telepad) + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + s.set_up(5, 1, get_turf(telepad)) + s.start() + else + return + +/obj/machinery/computer/telescience/proc/telefail() + sparks() + visible_message("The telepad weakly fizzles.") + return + +/obj/machinery/computer/telescience/proc/doteleport(mob/user) + + if(teleport_cooldown > world.time) + temp_msg = "Telepad is recharging power.
Please wait [round((teleport_cooldown - world.time) / 10)] seconds." + return + + if(teleporting) + temp_msg = "Telepad is in use.
Please wait." + return + + if(telepad) + + var/truePower = Clamp(power + power_off, 1, 1000) + var/trueRotation = rotation + rotation_off + var/trueAngle = Clamp(angle, 1, 90) + + var/datum/projectile_data/proj_data = projectile_trajectory(telepad.x, telepad.y, trueRotation, trueAngle, truePower) + last_tele_data = proj_data + + var/trueX = Clamp(round(proj_data.dest_x, 1), 1, world.maxx) + var/trueY = Clamp(round(proj_data.dest_y, 1), 1, world.maxy) + var/spawn_time = round(proj_data.time) * 10 + + var/turf/target = locate(trueX, trueY, z_co) + last_target = target + var/area/A = get_area(target) + flick("pad-beam", telepad) + + if(spawn_time > 15) // 1.5 seconds + playsound(telepad.loc, 'sound/weapons/flash.ogg', 25, 1) + // Wait depending on the time the projectile took to get there + teleporting = 1 + temp_msg = "Powering up bluespace crystals.
Please wait." + + + spawn(round(proj_data.time) * 10) // in seconds + if(!telepad) + return + if(telepad.stat & NOPOWER) + return + teleporting = 0 + teleport_cooldown = world.time + (power * 2) + teles_left -= 1 + + // use a lot of power + use_power(power * 10) + + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + s.set_up(5, 1, get_turf(telepad)) + s.start() + + temp_msg = "Teleport successful.
" + if(teles_left < 10) + temp_msg += "
Calibration required soon." + else + temp_msg += "Data printed below." + + var/sparks = get_turf(target) + var/datum/effect/effect/system/spark_spread/y = new /datum/effect/effect/system/spark_spread + y.set_up(5, 1, sparks) + y.start() + + var/turf/source = target + var/turf/dest = get_turf(telepad) + var/log_msg = "" + log_msg += ": [key_name(user)] has teleported " + + if(sending) + source = dest + dest = target + + flick("pad-beam", telepad) + playsound(telepad.loc, 'sound/weapons/emitter2.ogg', 25, 1, extrarange = 3, falloff = 5) + for(var/atom/movable/ROI in source) + // if is anchored, don't let through + if(ROI.anchored) + if(isliving(ROI)) + var/mob/living/L = ROI + if(L.buckled) + // TP people on office chairs + if(L.buckled.anchored) + continue + + log_msg += "[key_name(L)] (on a chair), " + else + continue + else if(!isobserver(ROI)) + continue + if(ismob(ROI)) + var/mob/T = ROI + log_msg += "[key_name(T)], " + else + log_msg += "[ROI.name]" + if (istype(ROI, /obj/structure/closet)) + var/obj/structure/closet/C = ROI + log_msg += " (" + for(var/atom/movable/Q as mob|obj in C) + if(ismob(Q)) + log_msg += "[key_name(Q)], " + else + log_msg += "[Q.name], " + if (dd_hassuffix(log_msg, "(")) + log_msg += "empty)" + else + log_msg = dd_limittext(log_msg, length(log_msg) - 2) + log_msg += ")" + log_msg += ", " + do_teleport(ROI, dest) + + if (dd_hassuffix(log_msg, ", ")) + log_msg = dd_limittext(log_msg, length(log_msg) - 2) + else + log_msg += "nothing" + log_msg += " [sending ? "to" : "from"] [trueX], [trueY], [z_co] ([A ? A.name : "null area"])" + investigate_log(log_msg, "telesci") + updateUsrDialog() + +/obj/machinery/computer/telescience/proc/teleport(mob/user) + if(rotation == null || angle == null || z_co == null) + temp_msg = "ERROR!
Set a angle, rotation and sector." + return + if(power <= 0) + telefail() + temp_msg = "ERROR!
No power selected!" + return + if(angle < 1 || angle > 90) + telefail() + temp_msg = "ERROR!
Elevation is less than 1 or greater than 90." + return + if(z_co == 2 || z_co < 1 || z_co > 6) + if (z_co == 7 & emagged == 1) + // This should be empty, allows for it to continue if the z-level is 7 and the machine is emagged. + else + telefail() + temp_msg = "ERROR! Sector is less than 1,
greater than [src.emagged ? "7" : "6"], or equal to 2." + return + if(teles_left > 0) + doteleport(user) + else + telefail() + temp_msg = "ERROR!
Calibration required." + return + return + +/obj/machinery/computer/telescience/proc/eject() + for(var/obj/item/I in crystals) + I.loc = src.loc + crystals -= I + power = 0 + +/obj/machinery/computer/telescience/Topic(href, href_list) + if(..()) + return + if(!telepad) + updateUsrDialog() + return + if(telepad.panel_open) + temp_msg = "Telepad undergoing physical maintenance operations." + + if(href_list["setrotation"]) + var/new_rot = input("Please input desired bearing in degrees.", name, rotation) as num + if(..()) // Check after we input a value, as they could've moved after they entered something + return + rotation = Clamp(new_rot, -900, 900) + rotation = round(rotation, 0.01) + + if(href_list["setangle"]) + var/new_angle = input("Please input desired elevation in degrees.", name, angle) as num + if(..()) + return + angle = Clamp(round(new_angle, 0.1), 1, 9999) + + if(href_list["setpower"]) + var/index = href_list["setpower"] + index = text2num(index) + if(index != null && power_options[index]) + if(crystals.len + telepad.efficiency >= index) + power = power_options[index] + + if(href_list["setz"]) + var/new_z = input("Please input desired sector.", name, z_co) as num + if(..()) + return + z_co = Clamp(round(new_z), 1, 10) + + if(href_list["ejectGPS"]) + if(inserted_gps) + inserted_gps.loc = loc + inserted_gps = null + + if(href_list["setMemory"]) + if(last_target && inserted_gps) + inserted_gps.locked_location = last_target + temp_msg = "Location saved." + else + temp_msg = "ERROR!
No data was stored." + + if(href_list["send"]) + sending = 1 + teleport(usr) + + if(href_list["receive"]) + sending = 0 + teleport(usr) + + if(href_list["recal"]) + recalibrate() + sparks() + temp_msg = "NOTICE:
Calibration successful." + + if(href_list["eject"]) + eject() + temp_msg = "NOTICE:
Bluespace crystals ejected." + + updateUsrDialog() + +/obj/machinery/computer/telescience/proc/recalibrate() + teles_left = rand(30, 40) + //angle_off = rand(-25, 25) + power_off = rand(-4, 0) + rotation_off = rand(-10, 10) \ No newline at end of file diff --git a/maps/cyberiad.dmm b/maps/cyberiad.dmm index 423bdb829ac..fda70eeecbd 100644 --- a/maps/cyberiad.dmm +++ b/maps/cyberiad.dmm @@ -678,7 +678,7 @@ "anb" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor,/area/security/brig) "anc" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/brig) "and" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/security/brig) -"ane" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/camera{c_tag = "Brig Main Hall"; dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/brig) +"ane" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/camera{c_tag = "Brig Main Hall"; dir = 2; network = list("SS13")},/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/brig) "anf" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 101; on = 1; pressure_checks = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/brig) "ang" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/brig) "anh" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor,/area/security/brig) @@ -2245,7 +2245,7 @@ "aRi" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) "aRj" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/camera{c_tag = "EVA South"; dir = 1; network = list("SS13")},/turf/simulated/floor,/area/ai_monitored/storage/eva) "aRk" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva) -"aRl" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) +"aRl" = (/obj/machinery/portable_atmospherics/canister/oxygen,/obj/machinery/light_switch{pixel_y = -25},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) "aRm" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/structure/flora/kirbyplants,/turf/simulated/floor{dir = 9; icon_state = "blue"},/area/hallway/primary/central/north) "aRn" = (/obj/machinery/light{dir = 1},/obj/machinery/camera{c_tag = "Central Hallway North"; dir = 2; network = list("SS13")},/obj/machinery/alarm{pixel_y = 23},/obj/item/flag/nt,/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/hallway/primary/central/north) "aRo" = (/turf/simulated/floor{dir = 1; icon_state = "bluecorner"},/area/hallway/primary/central/north) @@ -2587,7 +2587,7 @@ "aXM" = (/obj/machinery/vending/hydroseeds,/obj/machinery/camera{c_tag = "Hydroponics North"; network = list("SS13")},/turf/simulated/floor{icon_state = "dark"},/area/hydroponics) "aXN" = (/obj/machinery/biogenerator,/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "dark"},/area/hydroponics) "aXO" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/requests_console{department = "Hydroponics"; departmentType = 2; pixel_x = 0; pixel_y = 30},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "dark"},/area/hydroponics) -"aXP" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/wood,/area/crew_quarters/captain) +"aXP" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/light_switch{pixel_y = 24},/turf/simulated/floor/wood,/area/crew_quarters/captain) "aXQ" = (/obj/structure/table/woodentable,/turf/simulated/floor/wood{broken = 1; icon_state = "wood-broken"},/area/maintenance/abandonedbar) "aXR" = (/obj/structure/bookcase{name = "bookcase (Religious)"},/turf/simulated/floor/wood,/area/library) "aXS" = (/turf/simulated/floor/carpet,/area/library) @@ -2597,7 +2597,7 @@ "aXW" = (/obj/structure/bookcase{name = "Forbidden Knowledge"},/turf/simulated/floor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/library) "aXX" = (/obj/structure/table/woodentable,/obj/item/device/taperecorder{pixel_y = 0},/obj/item/device/eftpos{eftpos_name = "Library EFTPOS scanner"},/obj/item/device/camera{desc = "A one use - polaroid camera. 30 photos left."; name = "Camera"; pictures_left = 30; pixel_x = 0; pixel_y = 0},/turf/simulated/floor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/library) "aXY" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/wood,/area/bridge/meeting_room) -"aXZ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/wood,/area/bridge/meeting_room) +"aXZ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/light_switch{pixel_y = 24},/turf/simulated/floor/wood,/area/bridge/meeting_room) "aYa" = (/turf/simulated/floor{dir = 1; icon_state = "chapel"},/area/chapel/main) "aYb" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{dir = 4; icon_state = "chapel"},/area/chapel/main) "aYc" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 1; icon_state = "chapel"},/area/chapel/main) @@ -3179,7 +3179,7 @@ "bjg" = (/obj/machinery/turret,/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "bjh" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/captain) "bji" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/wood,/area/crew_quarters/captain) -"bjj" = (/obj/machinery/disposal,/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/telesci) +"bjj" = (/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) "bjk" = (/obj/machinery/ai_status_display{pixel_y = 32},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/carpet,/area/crew_quarters/captain) "bjl" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/carpet,/area/crew_quarters/captain) "bjm" = (/obj/machinery/status_display{pixel_x = 0; pixel_y = 32},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/carpet,/area/crew_quarters/captain) @@ -3504,7 +3504,7 @@ "bpt" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/airlock/research{name = "Mech Bay"; req_access_txt = "29"; req_one_access_txt = "0"},/turf/simulated/floor,/area/assembly/chargebay) "bpu" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/poddoor/shutters{dir = 2; id = "mechbay"; name = "Mech Bay"},/turf/simulated/floor{icon_state = "delivery"},/area/assembly/chargebay) "bpv" = (/obj/machinery/computer/rdconsole/robotics,/obj/machinery/alarm{pixel_y = 25},/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics) -"bpw" = (/obj/structure/table,/obj/item/weapon/book/manual/robotics_cyborgs{pixel_x = 2; pixel_y = 5},/obj/item/weapon/storage/belt/utility,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/machinery/requests_console{department = "Robotics"; departmentType = 2; name = "Robotics RC"; pixel_y = 30},/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics) +"bpw" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) "bpx" = (/obj/machinery/r_n_d/circuit_imprinter,/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics) "bpy" = (/obj/structure/table,/obj/item/weapon/storage/belt/utility,/obj/item/weapon/storage/toolbox/mechanical{pixel_x = 0; pixel_y = 0},/obj/item/weapon/storage/toolbox/mechanical{pixel_x = 0; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) "bpz" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor/border_only{dir = 1; name = "hazard door north"},/obj/machinery/door/window/eastright{base_state = "left"; dir = 2; icon_state = "left"; name = "Robotics Desk"; req_access_txt = "29"},/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/item/weapon/folder/white,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/turf/simulated/floor/plating,/area/assembly/robotics) @@ -3798,7 +3798,7 @@ "bvb" = (/obj/structure/table,/obj/item/weapon/folder/white{pixel_y = 10},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/medical/reception) "bvc" = (/turf/simulated/floor{tag = "icon-whiteblue"; icon_state = "whiteblue"},/area/medical/reception) "bvd" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{tag = "icon-whiteblue (SOUTHEAST)"; icon_state = "whiteblue"; dir = 6},/area/medical/reception) -"bve" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/closet/secure_closet/security,/turf/simulated/floor{icon_state = "red"; dir = 10},/area/security/checkpoint/medical) +"bve" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) "bvf" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{icon_state = "red"},/area/security/checkpoint/medical) "bvg" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "red"},/area/security/checkpoint/medical) "bvh" = (/obj/structure/table,/obj/item/weapon/storage/box/masks{pixel_x = 6; pixel_y = 2},/obj/item/weapon/storage/box/gloves,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{icon_state = "red"; dir = 6},/area/security/checkpoint/medical) @@ -3807,7 +3807,7 @@ "bvk" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/medical/morgue) "bvl" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = -28},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/medical/morgue) "bvm" = (/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/medical/morgue) -"bvn" = (/obj/machinery/firealarm{pixel_y = -30},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/medical/morgue) +"bvn" = (/obj/machinery/atmospherics/pipe/manifold{_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bvo" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/sortjunction{dir = 2; icon_state = "pipe-j2s"; sortType = 13},/turf/simulated/floor/plating,/area/maintenance/asmaint) "bvp" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall/r_wall,/area) "bvq" = (/obj/machinery/camera{c_tag = "Research Mech Bay"; dir = 4; network = list("Research","SS13")},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/assembly/chargebay) @@ -3885,7 +3885,7 @@ "bwK" = (/obj/machinery/door/window/eastright{name = "Medical Reception"; req_access_txt = "5"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/medical/reception) "bwL" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{icon_state = "loadingarea"; tag = "loading"},/area/medical/reception) "bwM" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "loadingarea"; tag = "loading"},/area/medical/reception) -"bwN" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/firealarm,/turf/simulated/wall,/area) +"bwN" = (/obj/machinery/light,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bwO" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard_medi"; name = "Quarantine Lockdown"; opacity = 0},/obj/machinery/door/airlock/glass_security{name = "Medbay Sec Lobby"; req_access_txt = "63"},/turf/simulated/floor{dir = 2; icon_state = "redfull"; tag = "icon-redfull (NORTHWEST)"},/area/security/checkpoint/medical) "bwP" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/medical{name = "Morgue"; req_access_txt = "0"; req_one_access_txt = "6,9"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) "bwQ" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/wall,/area) @@ -4321,7 +4321,7 @@ "bFe" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{tag = "icon-whitepurple (NORTH)"; icon_state = "whitepurple"; dir = 1},/area/medical/genetics_cloning) "bFf" = (/obj/machinery/disposal,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor{tag = "icon-whitepurple (NORTHEAST)"; icon_state = "whitepurple"; dir = 5},/area/medical/genetics_cloning) "bFg" = (/obj/machinery/light{dir = 8},/obj/structure/closet/secure_closet/medical1,/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/turf/simulated/floor{tag = "icon-whitepurple (NORTHWEST)"; icon_state = "whitepurple"; dir = 9},/area/medical/genetics) -"bFh" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/machinery/camera{c_tag = "Research Genetics North"; network = list("SS13")},/obj/machinery/power/apc{dir = 1; name = "Genetics APC"; pixel_y = 24},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor{tag = "icon-whitepurple (NORTH)"; icon_state = "whitepurple"; dir = 1},/area/medical/genetics) +"bFh" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) "bFi" = (/turf/simulated/floor{icon_state = "white"},/area/medical/genetics) "bFj" = (/obj/structure/table,/obj/item/device/flashlight/pen,/obj/item/device/flashlight/pen,/obj/item/weapon/hand_labeler,/obj/structure/closet/walllocker/emerglocker/north,/turf/simulated/floor{tag = "icon-whitepurple (NORTH)"; icon_state = "whitepurple"; dir = 1},/area/medical/genetics) "bFk" = (/obj/structure/closet/wardrobe/genetics_white,/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{tag = "icon-whitepurple (NORTH)"; icon_state = "whitepurple"; dir = 1},/area/medical/genetics) @@ -4426,7 +4426,7 @@ "bHf" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/plating,/area) "bHg" = (/obj/structure/table,/obj/machinery/door_control{id = "Biohazard"; name = "Biohazard Shutter Control"; pixel_x = -4; pixel_y = 6; req_access_txt = "47"},/obj/item/weapon/folder/white{pixel_x = 4},/obj/item/weapon/stamp/rd{pixel_x = 5; pixel_y = -2},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/hor) "bHh" = (/obj/machinery/computer/security/telescreen{desc = "Used for watching the RD's goons from the safety of his office."; name = "Research Monitor"; network = list("Research","Research Outpost"); pixel_x = 0; pixel_y = 2},/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/hor) -"bHi" = (/obj/machinery/computer/aifixer,/obj/machinery/requests_console{announcementConsole = 1; department = "Research Director's Desk"; departmentType = 5; name = "Research Director RC"; pixel_x = -2; pixel_y = 30},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/hor) +"bHi" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) "bHj" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/rack,/obj/item/weapon/circuitboard/aicore{pixel_x = -2; pixel_y = 4},/turf/simulated/floor{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/crew_quarters/hor) "bHk" = (/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/hor) "bHl" = (/obj/machinery/ai_status_display{pixel_y = 32},/turf/simulated/floor{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/crew_quarters/hor) @@ -4890,16 +4890,16 @@ "bQb" = (/obj/machinery/light,/turf/simulated/floor{tag = "icon-whitepurple (SOUTHWEST)"; icon_state = "whitepurple"; dir = 10},/area/medical/genetics) "bQc" = (/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/medical/genetics) "bQd" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/medical/genetics) -"bQe" = (/obj/machinery/light,/obj/machinery/camera{c_tag = "Research Genetics South"; dir = 1; network = list("SS13")},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/medical/genetics) +"bQe" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) "bQf" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/medical/genetics) "bQg" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/medical/genetics) "bQh" = (/obj/machinery/light,/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor{tag = "icon-whitepurple (SOUTHEAST)"; icon_state = "whitepurple"; dir = 6},/area/medical/genetics) -"bQi" = (/obj/structure/table/reinforced,/obj/item/device/sps/science,/obj/item/device/sps/science,/obj/item/device/sps/science,/turf/simulated/floor,/area/toxins/telesci) -"bQj" = (/obj/machinery/light{dir = 1},/obj/structure/table/reinforced,/obj/item/device/radio/beacon,/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor,/area/toxins/telesci) -"bQk" = (/obj/machinery/computer/telescience,/obj/machinery/computer/security/telescreen{desc = "Used for watching the telepad chamber."; layer = 4; name = "Telepad Camera Screen"; network = list("Telepad"); pixel_x = 32; pixel_y = 0},/turf/simulated/floor,/area/toxins/telesci) +"bQi" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) +"bQj" = (/obj/machinery/light,/obj/structure/table,/obj/item/weapon/packageWrap,/obj/item/weapon/hand_labeler,/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) +"bQk" = (/obj/machinery/camera{c_tag = "Research Telescience"; dir = 1; network = list("Research","SS13")},/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/disposal,/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) "bQl" = (/obj/item/device/radio/intercom{pixel_y = 25},/turf/simulated/floor/engine,/area/toxins/telescipad) -"bQm" = (/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/power/apc{dir = 1; name = "Telescience Pad APC"; pixel_y = 24},/turf/simulated/floor/engine,/area/toxins/telescipad) -"bQn" = (/obj/machinery/camera{c_tag = "Research Telescience Telepad"; dir = 2; network = list("Telepad","Research","SS13"); pixel_x = 0},/turf/simulated/floor/engine,/area/toxins/telescipad) +"bQm" = (/obj/machinery/power/apc{cell_type = 5000; dir = 2; name = "Bridge APC"; pixel_y = -24},/obj/structure/cable,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/table,/obj/item/device/radio,/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) +"bQn" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) "bQo" = (/turf/simulated/floor/engine,/area/toxins/telescipad) "bQp" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/quartermaster/miningdock) "bQq" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/toxins/storage) @@ -4972,12 +4972,12 @@ "bRF" = (/obj/machinery/atmospherics/pipe/manifold{dir = 8; icon_state = "manifold"; level = 2},/turf/simulated/floor,/area/medical/cryo) "bRG" = (/obj/machinery/atmospherics/pipe/manifold{dir = 1; icon_state = "manifold"; level = 2},/turf/simulated/floor,/area/medical/cryo) "bRH" = (/obj/machinery/atmospherics/pipe/simple{icon_state = "intact"; dir = 10; pixel_x = 0; level = 2; initialize_directions = 10},/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/medical/cryo) -"bRI" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/firstaid/regular{pixel_x = 0; pixel_y = 0},/turf/simulated/floor,/area/toxins/telesci) -"bRJ" = (/turf/simulated/floor,/area/toxins/telesci) -"bRK" = (/obj/structure/grille,/obj/structure/window/plasmareinforced{dir = 4},/obj/structure/window/plasmareinforced{dir = 1},/obj/structure/window/plasmareinforced{dir = 8},/turf/simulated/floor{tag = "icon-vault-border (EAST)"; icon_state = "vault-border"; dir = 4},/area) +"bRI" = (/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical{pixel_x = 0; pixel_y = 0},/obj/item/device/multitool{pixel_x = 3},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) +"bRJ" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) +"bRK" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) "bRL" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/engine,/area/toxins/telescipad) "bRM" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/engine,/area/toxins/telescipad) -"bRN" = (/obj/item/weapon/cigbutt,/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/storage) +"bRN" = (/obj/machinery/computer/security/telescreen{desc = "Used for watching the telepad chamber."; layer = 4; name = "Telepad Camera Screen"; network = list("Telepad"); pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) "bRO" = (/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/toxins/storage) "bRP" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bRQ" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating,/area/toxins/mixing) @@ -5050,10 +5050,10 @@ "bTf" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/carpet,/area/medical/psych) "bTg" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/stool/bed/chair/comfy/black{dir = 4},/turf/simulated/floor/carpet,/area/medical/psych) "bTh" = (/obj/structure/table/woodentable,/obj/machinery/light/small/lamp/green,/turf/simulated/floor/carpet,/area/medical/psych) -"bTi" = (/obj/structure/grille,/obj/structure/window/plasmareinforced{dir = 4},/obj/structure/window/plasmareinforced{dir = 8},/turf/simulated/floor{tag = "icon-vault-border (EAST)"; icon_state = "vault-border"; dir = 4},/area) -"bTj" = (/obj/machinery/telepad,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/engine,/area/toxins/telescipad) -"bTk" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/engine,/area/toxins/telescipad) -"bTl" = (/obj/effect/decal/cleanable/oil,/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/storage) +"bTi" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) +"bTj" = (/obj/machinery/requests_console{department = "Science"; departmentType = 2; name = "Science Requests Console"; pixel_y = 30},/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) +"bTk" = (/obj/structure/stool/bed/chair/office/light{dir = 1},/obj/effect/landmark/start{name = "Scientist"},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) +"bTl" = (/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) "bTm" = (/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/toxins/storage) "bTn" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/extinguisher_cabinet{pixel_x = -24},/turf/simulated/floor{dir = 5; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) "bTo" = (/obj/effect/landmark/start{name = "Scientist"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) @@ -5108,7 +5108,7 @@ "bUl" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/cable,/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "cmooffice"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area) "bUm" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/medical/medbay2) "bUn" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 4; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2) -"bUo" = (/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/medical/cryo) +"bUo" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/machinery/light{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) "bUp" = (/obj/structure/table/woodentable,/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/turf/simulated/floor/wood,/area/medical/psych) "bUq" = (/obj/structure/stool/bed/chair/office/dark{dir = 1},/obj/effect/landmark/start{name = "Psychiatrist"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/wood,/area/medical/psych) "bUr" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/quartermaster/storage) @@ -5116,11 +5116,11 @@ "bUt" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/manifold{_color = "blue"; dir = 4; icon_state = "manifold-b-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor/carpet,/area/medical/psych) "bUu" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/manifold{_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor/carpet,/area/medical/psych) "bUv" = (/obj/machinery/camera{c_tag = "Medbay Psych Office East"; dir = 8; network = list("SS13")},/obj/machinery/power/apc{dir = 4; name = "Psychiatrist APC"; pixel_x = 25},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/carpet,/area/medical/psych) -"bUw" = (/obj/effect/landmark/start{name = "Scientist"},/turf/simulated/floor,/area/toxins/telesci) -"bUx" = (/obj/structure/grille,/obj/structure/window/plasmareinforced{dir = 4},/obj/structure/window/plasmareinforced,/obj/structure/window/plasmareinforced{dir = 8},/turf/simulated/floor{tag = "icon-vault-border (EAST)"; icon_state = "vault-border"; dir = 4},/area) +"bUw" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) +"bUx" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) "bUy" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/engine,/area/toxins/telescipad) -"bUz" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor/engine,/area/toxins/telescipad) -"bUA" = (/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/storage) +"bUz" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) +"bUA" = (/obj/machinery/atmospherics/pipe/manifold{_color = "blue"; dir = 4; icon_state = "manifold-b-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) "bUB" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/toxins/storage) "bUC" = (/obj/machinery/portable_atmospherics/canister/air,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/toxins/storage) "bUD" = (/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 5; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) @@ -5143,7 +5143,7 @@ "bUU" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor{tag = "icon-whiteblue (SOUTHWEST)"; icon_state = "whiteblue"; dir = 10},/area/toxins/mixing) "bUV" = (/obj/machinery/portable_atmospherics/canister/oxygen,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor{tag = "icon-whiteblue (SOUTHEAST)"; icon_state = "whiteblue"; dir = 6},/area/toxins/mixing) "bUW" = (/obj/item/device/radio/intercom{pixel_y = 25},/obj/machinery/camera{c_tag = "Research Toxins Launch Room"; dir = 4; network = list("Research","SS13"); pixel_y = -22},/obj/machinery/atmospherics/pipe/vent{dir = 8},/obj/machinery/light{dir = 8},/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/turf/simulated/floor,/area/toxins/mixing) -"bUX" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/light/small{dir = 8},/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/toxins/storage) +"bUX" = (/obj/structure/closet/emcloset,/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{tag = "icon-whitepurple (NORTHEAST)"; icon_state = "whitepurple"; dir = 5},/area/toxins/telesci) "bUY" = (/obj/structure/stool/bed/chair{dir = 4},/obj/machinery/computer/security/telescreen{desc = "Used for watching the test chamber."; layer = 4; name = "Test Chamber Telescreen"; network = list("Toxins"); pixel_x = 32; pixel_y = 0},/obj/machinery/alarm{pixel_y = 25},/turf/simulated/floor,/area/toxins/mixing) "bUZ" = (/obj/structure/grille,/obj/structure/window/plasmareinforced{dir = 4},/obj/structure/window/plasmareinforced{dir = 8},/obj/structure/window/plasmareinforced{dir = 1},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/turf/simulated/floor/plating,/area) "bVa" = (/turf/simulated/floor/airless{dir = 9; icon_state = "warning"},/area/toxins/test_area) @@ -5205,8 +5205,8 @@ "bWe" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/cable,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "cmooffice"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area) "bWf" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/medical/medbay2) "bWg" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"; tag = "icon-whitebluecorner"},/area/medical/medbay2) -"bWh" = (/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/obj/structure/closet/secure_closet/medical1,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "blue"; dir = 10},/area/medical/cryo) -"bWi" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/atmospherics/pipe/manifold{_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/medical/cryo) +"bWh" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/toxins/telesci) +"bWi" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bWj" = (/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/medical/cryo) "bWk" = (/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = -28},/obj/machinery/atmospherics/portables_connector{dir = 1; name = "Connector Port (Air Supply)"},/obj/machinery/portable_atmospherics/canister/oxygen{name = "Canister: \[O2] (CRYO)"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/medical/cryo) "bWl" = (/obj/item/device/radio/intercom{broadcasting = 0; canhear_range = 5; freerange = 0; frequency = 1485; listening = 1; name = "Station Intercom (Medbay Lobby)"; pixel_x = 0; pixel_y = -30},/obj/machinery/atmospherics/portables_connector{dir = 1; name = "Connector Port (Air Supply)"},/obj/machinery/portable_atmospherics/canister/oxygen{name = "Canister: \[O2] (CRYO)"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/medical/cryo) @@ -5218,10 +5218,10 @@ "bWr" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/light,/turf/simulated/floor/carpet,/area/medical/psych) "bWs" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/stool/bed/chair/comfy/lime{tag = "icon-comfychair_lime (NORTH)"; icon_state = "comfychair_lime"; dir = 1},/turf/simulated/floor/carpet,/area/medical/psych) "bWt" = (/obj/structure/stool/psychbed,/turf/simulated/floor/carpet,/area/medical/psych) -"bWu" = (/obj/structure/extinguisher_cabinet{pixel_x = -24},/turf/simulated/floor,/area/toxins/telesci) -"bWv" = (/obj/structure/grille,/obj/structure/window/plasmareinforced,/obj/structure/window/plasmareinforced{dir = 4},/obj/structure/window/plasmareinforced{dir = 1},/obj/structure/window/plasmareinforced{dir = 8},/turf/simulated/floor{tag = "icon-vault-border (EAST)"; icon_state = "vault-border"; dir = 4},/area) +"bWu" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) +"bWv" = (/obj/machinery/power/apc{dir = 1; name = "Telescience Pad APC"; pixel_y = 24},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/engine,/area/toxins/telescipad) "bWw" = (/obj/structure/mineral_door/wood{name = "Abandoned Bar"},/turf/simulated/floor/wood{broken = 1; icon_state = "wood-broken"},/area/maintenance/abandonedbar) -"bWx" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/window/plasmareinforced,/obj/structure/window/plasmareinforced{dir = 4},/obj/structure/window/plasmareinforced{dir = 1},/obj/structure/window/plasmareinforced{dir = 8},/turf/simulated/floor{tag = "icon-vault-border (EAST)"; icon_state = "vault-border"; dir = 4},/area) +"bWx" = (/obj/machinery/light,/obj/machinery/camera{c_tag = "Research Genetics South"; dir = 1; network = list("Research","SS13")},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/medical/genetics) "bWy" = (/obj/machinery/light_switch{pixel_y = -23},/obj/machinery/power/apc{dir = 8; name = "Toxins Storage APC"; pixel_x = -25},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/storage) "bWz" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/toxins/storage) "bWA" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 5; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) @@ -5299,12 +5299,11 @@ "bXU" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "psychoffice"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area) "bXV" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "psychoffice"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area) "bXW" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "psychoffice"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area) -"bXX" = (/obj/machinery/power/apc{dir = 8; name = "Telescience APC"; pixel_x = -25},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor,/area/toxins/telesci) -"bXY" = (/obj/machinery/telepad_cargo,/turf/simulated/floor,/area/toxins/telesci) -"bXZ" = (/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/telesci) -"bYa" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/telesci) -"bYb" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/telesci) -"bYc" = (/obj/machinery/light_switch{pixel_x = 27},/obj/machinery/camera{c_tag = "Research Telescience"; dir = 8; network = list("Research","SS13"); pixel_y = -22},/turf/simulated/floor,/area/toxins/telesci) +"bXX" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/light/small{dir = 8},/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor,/area/toxins/storage) +"bXY" = (/obj/machinery/camera{c_tag = "Research Telescience Telepad"; dir = 2; network = list("Telepad","Research","SS13"); pixel_x = 0},/obj/machinery/light{dir = 1; on = 1},/turf/simulated/floor/engine,/area/toxins/telescipad) +"bXZ" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/engine,/area/toxins/telescipad) +"bYa" = (/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/storage) +"bYc" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "telescienceblast"; name = "test chamber blast doors"; opacity = 0},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/engine,/area/toxins/telesci) "bYd" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/research{name = "Toxins Storage"; req_access_txt = "8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/toxins/storage) "bYe" = (/obj/structure/toilet{dir = 4},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/captain/bedroom) "bYf" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) @@ -5381,17 +5380,17 @@ "bZy" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2) "bZz" = (/obj/machinery/atmospherics/pipe/manifold{_color = "red"; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2) "bZA" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor{tag = "icon-whiteblue (NORTHEAST)"; icon_state = "whiteblue"; dir = 5},/area/medical/medbay2) -"bZB" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/machinery/light{dir = 8},/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/telesci) -"bZC" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/telesci) -"bZD" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/telesci) -"bZE" = (/obj/machinery/hologram/holopad,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor,/area/toxins/telesci) -"bZF" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/toxins/telesci) -"bZG" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/telesci) -"bZH" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/telesci) -"bZI" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/toxins/telesci) +"bZB" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "telescienceblast"; name = "test chamber blast doors"; opacity = 0},/turf/simulated/floor/engine,/area/toxins/telesci) +"bZC" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "telescienceblast"; name = "test chamber blast doors"; opacity = 0},/turf/simulated/floor/engine,/area/toxins/telesci) +"bZD" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "telescienceblast"; name = "test chamber blast doors"; opacity = 0},/turf/simulated/floor/engine,/area/toxins/telesci) +"bZE" = (/obj/structure/closet/secure_closet/medical1,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "blue"; dir = 10},/area/medical/cryo) +"bZF" = (/obj/machinery/atmospherics/pipe/manifold{_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/medical/cryo) +"bZG" = (/obj/structure/table,/obj/item/weapon/clipboard,/turf/simulated/floor{tag = "icon-whitepurple (NORTHEAST)"; icon_state = "whitepurple"; dir = 5},/area/toxins/telesci) +"bZH" = (/obj/machinery/computer/telescience,/turf/simulated/floor{tag = "icon-whitepurple (NORTH)"; icon_state = "whitepurple"; dir = 1},/area/toxins/telesci) +"bZI" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/closet/l3closet/scientist,/turf/simulated/floor{tag = "icon-whitepurple (NORTHWEST)"; icon_state = "whitepurple"; dir = 9},/area/toxins/telesci) "bZJ" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "hazard door east"},/obj/machinery/door/airlock/research{name = "Telescience"; req_access_txt = "7"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) -"bZK" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) -"bZL" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) +"bZK" = (/obj/structure/table,/obj/item/device/gps/science{gpstag = "SCI4"},/obj/item/device/gps/science{gpstag = "SCI3"},/obj/item/device/gps/science{gpstag = "SCI2"},/obj/item/device/gps/science{gpstag = "SCI1"},/obj/item/device/gps/science,/turf/simulated/floor{tag = "icon-whitepurple (NORTHWEST)"; icon_state = "whitepurple"; dir = 9},/area/toxins/telesci) +"bZL" = (/turf/simulated/wall,/area/toxins/telesci) "bZM" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bZN" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plating,/area/maintenance/asmaint2) "bZO" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating,/area/maintenance/asmaint2) @@ -5450,15 +5449,15 @@ "caP" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/obj/machinery/power/apc{dir = 2; name = "Medbay APC"; pixel_y = -24},/obj/structure/cable,/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2) "caQ" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2) "caR" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/light/small{dir = 4},/obj/machinery/vending/medical,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) -"caS" = (/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/telesci) -"caT" = (/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/telesci) -"caU" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/telesci) -"caV" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor,/area/toxins/telesci) -"caW" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/telesci) -"caX" = (/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/toxins/telesci) -"caY" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "hazard door east"},/obj/machinery/door/airlock/research{name = "Telescience"; req_access_txt = "7"},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) -"caZ" = (/obj/machinery/light,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) -"cba" = (/obj/machinery/atmospherics/pipe/manifold{_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) +"caS" = (/obj/machinery/door_control{id = "telescienceblast"; name = "Test Chamber Blast Doors"; pixel_x = -25; pixel_y = 0},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/toxins/telesci) +"caT" = (/obj/machinery/telepad_cargo,/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) +"caU" = (/obj/item/device/radio/beacon,/turf/simulated/floor/engine,/area/toxins/telescipad) +"caV" = (/obj/machinery/telepad,/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/engine,/area/toxins/telescipad) +"caW" = (/obj/item/weapon/cigbutt,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/storage) +"caX" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/engine,/area/toxins/telescipad) +"caY" = (/obj/effect/decal/cleanable/oil,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/storage) +"caZ" = (/obj/machinery/light_switch{pixel_y = -23},/turf/simulated/floor/engine,/area/toxins/telescipad) +"cba" = (/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/medical/cryo) "cbb" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "cbc" = (/obj/machinery/camera{c_tag = "Research Hallway South"; dir = 1; network = list("Research","SS13"); pixel_x = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "cbd" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) @@ -5531,13 +5530,13 @@ "ccs" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Secondary Storage"; req_access_txt = "39"},/turf/simulated/floor,/area/medical/biostorage) "cct" = (/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard_medi"; name = "Quarantine Lockdown"; opacity = 0},/obj/machinery/door/airlock/maintenance{name = "Medbay Maintenance Access"; req_access_txt = "5"},/turf/simulated/floor/plating,/area/medical/iso_access{name = "\improper Patient Rooms"}) "ccu" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/sign/redcross{desc = "The Star of Life, a symbol of Medical Aid."; icon_state = "lifestar"; name = "Medbay"},/turf/simulated/wall,/area) -"ccv" = (/obj/machinery/light,/obj/machinery/portable_atmospherics/scrubber,/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/telesci) -"ccw" = (/obj/machinery/portable_atmospherics/scrubber,/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/telesci) -"ccx" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/telesci) -"ccy" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/telesci) +"ccv" = (/obj/machinery/computer/aifixer,/obj/machinery/requests_console{announcementConsole = 1; department = "Research Director's Desk"; departmentType = 5; name = "Research Director Requests Console"; pixel_x = -2; pixel_y = 30},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/hor) +"ccw" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/machinery/camera{c_tag = "Research Genetics North"; network = list("Research","SS13")},/obj/machinery/power/apc{dir = 1; name = "Genetics APC"; pixel_y = 24},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor{tag = "icon-whitepurple (NORTH)"; icon_state = "whitepurple"; dir = 1},/area/medical/genetics) +"ccx" = (/obj/structure/table,/obj/item/weapon/book/manual/robotics_cyborgs{pixel_x = 2; pixel_y = 5},/obj/item/weapon/storage/belt/utility,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/machinery/requests_console{department = "Robotics"; departmentType = 2; name = "Robotics Requests Console"; pixel_y = 30},/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics) +"ccy" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/medical/morgue) "ccz" = (/obj/structure/filingcabinet/filingcabinet,/obj/item/device/radio/intercom{broadcasting = 0; name = "Station Intercom (General)"; pixel_y = 20},/turf/simulated/floor{tag = "icon-brown (NORTH)"; icon_state = "brown"; dir = 1},/area/quartermaster/qm) -"ccA" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/closet/radiation,/turf/simulated/floor,/area/toxins/telesci) -"ccB" = (/obj/machinery/light,/obj/structure/closet/radiation,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/telesci) +"ccA" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/closet/secure_closet/security,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{icon_state = "red"; dir = 10},/area/security/checkpoint/medical) +"ccB" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple{dir = 9; icon_state = "intact-f"},/obj/item/device/gps/mining{gpstag = "MINE2"},/obj/item/device/gps/mining{gpstag = "MINE1"},/obj/item/device/gps/mining,/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -3},/turf/simulated/floor,/area/mine/eva) "ccC" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/turf/simulated/floor{dir = 8; icon_state = "whitegreencorner"},/area/medical/research{name = "Research Division"}) "ccD" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "ccE" = (/obj/machinery/light,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/atmospherics/pipe/manifold{_color = "blue"; dir = 4; icon_state = "manifold-b-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "whitegreencorner"},/area/medical/research{name = "Research Division"}) @@ -6063,6 +6062,7 @@ "cmE" = (/obj/machinery/computer/operating,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "cmF" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor,/area/engine/engineering) "cmG" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plating,/area/maintenance/asmaint) +"cmH" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/machinery/power/apc{cell_type = 5000; dir = 8; name = "Captain's Quarters APC"; pixel_x = -24; pixel_y = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/light_switch{pixel_y = 24},/turf/simulated/floor/carpet,/area/crew_quarters/captain/bedroom) "cmI" = (/obj/machinery/light_switch{pixel_x = -25},/obj/machinery/photocopier,/turf/simulated/floor/wood,/area/ntrep) "cmJ" = (/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/medical/cryo) "cmK" = (/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},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor{dir = 9; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/toxins/xenobiology) @@ -7877,6 +7877,7 @@ "cVz" = (/turf/space,/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/shuttle/syndicate_elite/mothership) "cVA" = (/obj/structure/bookcase{name = "bookcase (Tactics)"},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) "cVB" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; freerange = 1; frequency = 1213; name = "Syndicate Intercom"; pixel_x = 32; subspace_transmission = 1; syndie = 1},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) +"cVC" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/extinguisher_cabinet{pixel_x = -24},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) "cVD" = (/turf/unsimulated/floor{dir = 2; icon_state = "carpetside"},/area/wizard_station) "cVE" = (/obj/structure/table/woodentable,/obj/effect/landmark{name = "Teleport-Scroll"},/turf/unsimulated/floor{dir = 6; icon_state = "carpetside"},/area/wizard_station) "cVF" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/shuttle/syndicate_elite/mothership) @@ -11145,7 +11146,6 @@ "egt" = (/turf/simulated/floor,/area/mine/production) "egu" = (/obj/machinery/atmospherics/pipe/simple{dir = 6},/turf/simulated/floor,/area/mine/production) "egv" = (/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/atmospherics/pipe/simple{dir = 4; level = 1},/turf/simulated/floor/plating,/area/mine/eva) -"egw" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple{dir = 9; icon_state = "intact-f"},/obj/item/device/sps/mining,/obj/item/device/sps/mining,/obj/item/device/sps/mining,/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -3},/turf/simulated/floor,/area/mine/eva) "egx" = (/turf/simulated/floor,/area/mine/eva) "egy" = (/obj/structure/dispenser/oxygen,/obj/machinery/atmospherics/pipe/simple{dir = 5; icon_state = "intact-f"},/turf/simulated/floor,/area/mine/eva) "egz" = (/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{dir = 4; level = 1},/turf/simulated/floor/plating,/area/mine/eva) @@ -12371,7 +12371,6 @@ "eEa" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/grille,/turf/simulated/floor/plating,/area) "eEb" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor{icon_state = "dark"},/area/storage/secure) "eEc" = (/obj/machinery/door/airlock{name = "Private Restroom"; req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/captain/bedroom) -"eEd" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/machinery/power/apc{cell_type = 5000; dir = 8; name = "Captain's Quarters APC"; pixel_x = -24; pixel_y = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/carpet,/area/crew_quarters/captain/bedroom) "eEe" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/carpet,/area/crew_quarters/captain/bedroom) "eEf" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/structure/mirror{pixel_x = 28},/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/captain/bedroom) "eEg" = (/obj/machinery/door/airlock/command{name = "Captain's Quarters"; req_access = null; req_access_txt = "20"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/carpet,/area/crew_quarters/captain/bedroom) @@ -12520,7 +12519,6 @@ "eGT" = (/turf/simulated/floor/plating/airless,/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/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk8"; icon_state = "catwalk8"},/area/engiestation/solars) "eGU" = (/obj/structure/table/woodentable,/obj/structure/mirror{pixel_x = -28},/obj/item/weapon/storage/pill_bottle/random_drug_bottle,/turf/simulated/floor{dir = 10; icon_state = "purple"},/area/maintenance/abandonedbar) "eGV" = (/obj/item/weapon/stool,/turf/simulated/floor/plating{dir = 10; icon_regular_floor = "purplecorner"},/area/maintenance/abandonedbar) -"eGW" = (/obj/machinery/door/airlock/glass_research{name = "Telescience Pad"; req_access_txt = "7"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/engine,/area/toxins/telesci) "eGX" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "hazard door north"},/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/airlock/glass_research{name = "Research and Development"; req_access_txt = "7"},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) "eGY" = (/obj/structure/cable,/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/smes{charge = 1e+006},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/engine/engineering) "eGZ" = (/obj/structure/cable,/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/smes{charge = 1e+006},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/engine/engineering) @@ -12674,34 +12672,34 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablmblmblmblmblmblmblmblmblmblmaaaaaaaCZblnaEjbloblpaDfblqblraaiblsbltbltbltbluaaqblvbdWaSqaaiblwbiIbiHbiIbiIaaibiKblxblyaaibiLaaibhKblzblAbhKblBaaiblCbkcbiSblDblEblFblGblHblIblJbkiblKaaiaaiblLblMaaqaaqaaqblNblOaaiafjblPbkubkubkvblQbkxbkublRaaiblSbkBbkBbkCbkDbkEbkGbkGbkGbkGbkGbkGbkGblTbkGbkGbkGbkGbkGbkGblUblVblVblVblVblVblVblVblVblVblVblVblVblVblVblWblXblYblbblbblZaRLaRLaRLaRLaRLbhkaRLaRLaRLaRLaRLaRLaRLaRLaRLaRLaRLaRLbmaaRLbmbbmcaWDaWDaWDaWDaWDaWDaWDbmdbfcbcjaoKaoKbckaMPaMPaMPaMPaMPaMPaMPaMPaMPaMPaMPaMPaMPaaaaaaaaaaaaaaaaaaaaabjHbjHbjHbjHbjHbjHbjHbjHbjHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablmblmblmblmblmblmblmblmblmblmblmaEUaEVaEWaaiaaiaaibmeaaiaaiaaibiBbltbltbltbmfaaqaTQbdWaSqaaibmgbmhcDDbiIbiIaaibmjblxbmkaaibmjaaibmlblzcDzbmnbhKaaibmobkcbiSbmpbmqblFblGbmrbmsblJbkibmtaaibmubmvbmwaaqbmxaaqbmybmzbmAafjbmBbmCbmDbmEbmEbmFbkubmGaaibmHbmIbkBbkCbkDbkEbkGbmJbkGbkGbkGbkGbmKbmLbmLbmLbmLbmMbkGbkGbkGbkGbmNbkGbmJbmObkGbmPbmQbmRbkGbmSbmTbmTbmUbmVbmWbmXaRLaRLaRLaRLaRLaRLaRLbmYcDHbnaaRLaRLaRLaRLaRLaRLaRLaRLaRLaRLbnbbncbncbndbnebnfbngbnhbnhbnhbnhbnibnjaERaabaaaaaaaabaMPaMPaMPaMPaMPaMPaaaaMPaMPaMPaMPaMPaMPaaaaaaaaaaaaaaaaaaaaabjHbjHbjHbjHbjHbjHbjHbjHbjHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablmblmblmblmblmblmblmblmblmblmblmbnkbnlbnmbnnbnobnpbnqbnrbnsaaibhtbntbntbnubnvaaqaTQbdWaSqaaiaaiaaiaaiaaiaaiaaiaaiblxbnwaaiaaiaaiaaiafjaaiaaiaaiaaibnxbkcbnyaaibnzbnAbkgbkgbkgbkgbkibnBaaiaaibnCbnDbnGbEvbGnbnDbnHaaiafjaaibnIbnJbnKbnLbnMbnNbnOaaibnPbnQbnQaaiaaiaaiaaiaaiaaiaaiaaqaaqbnRbnSbnTbnTbnSbnRaaqaaqaaqaaqaaqaaqaaqaaqaaqaaqbnUaaqaaqaaqaaqaaqaaibnVaoubnWaRLaRLbnXbnXaaiaaiaaiaaiaaibnYbncbncbnbbncaRLbncbncbncbncbnZaaiaaiaaiaaiboaaaiaaiaaiaaiaaiaaiaaiaaiaaiaaaaaaaaaaaaaMPaMPaMPaMPaMPaMPaaaaMPaMPaMPaMPaMPaMPaaaaaaaaaaaaaaaaaaaaabjHbjHbjHbjHbjHbjHbjHbjHbjHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablmblmblmblmblmblmblmblmblmblmblmaGGaGHaEWbobbocbocbodboebocaaibofbofbofbogbohaaqaTQbdWaSqaaqboicczbokbolbomaaibonblxbooaaibopaaiboqborbosbotbouaaqbovbkcbowaaiboxboybozboAboBboCboDaaiaaiaaiboEboFboGboHboIboJboKaaiafjaaiboLboMboNboObnMbkuboPaaiboQboRboSaaiboTboUboVboWboXboYboZbpabpbbpcbpdbpdbpcbpebpfbpgaaqbphbpibpjbpkaaqbplbyrbpnbpobppbpqbpqbpraaibpsabnaaibptaaibpubpuaaibpvbpwbpxaaibDTbpzbDTaaicBVbncbnZaaibpAbpBbpAaaibpCbpDaaibpEbpFbpGaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMPaMPaMPaMPaMPaMPaaaaMPaMPaMPaMPaMPaMPaaaaaaaaaaaaaaaaaaaaabjHbjHbjHbjHbjHbjHbjHbjHbjHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablmblmblmblmblmblmblmblmblmblmblmaGGaGHaEWbobbocbocbodboebocaaibofbofbofbogbohaaqaTQbdWaSqaaqboicczbokbolbomaaibonblxbooaaibopaaiboqborbosbotbouaaqbovbkcbowaaiboxboybozboAboBboCboDaaiaaiaaiboEboFboGboHboIboJboKaaiafjaaiboLboMboNboObnMbkuboPaaiboQboRboSaaiboTboUboVboWboXboYboZbpabpbbpcbpdbpdbpcbpebpfbpgaaqbphbpibpjbpkaaqbplbyrbpnbpobppbpqbpqbpraaibpsabnaaibptaaibpubpuaaibpvccxbpxaaibDTbpzbDTaaicBVbncbnZaaibpAbpBbpAaaibpCbpDaaibpEbpFbpGaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMPaMPaMPaMPaMPaMPaaaaMPaMPaMPaMPaMPaMPaaaaaaaaaaaaaaaaaaaaabjHbjHbjHbjHbjHbjHbjHbjHbjHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablmblmblmblmblmblmblmblmblmblmaaabpHaHNbpIbpJbnobnobpKbpLbpMaaibpNbpNbpNbpNbpOaaqaTQbdWaSqaaqbpQbpRbpSbpRbpTaaibpUbpVbpWbpYbpYaaibpZbqabqbbqbbqcbqdbqebkcbqfaaibqgaaJaaqaaqaaqaaibqhaaibqiacCbqjbqkbjbbqlbjbbqmbqnacfbqoaaibqpbkubqqbqrbnMbqsbkuaaibqtbqubqvaaibqwbqxbqybqzbqAbqBbqCbpdbpdbpdbpdbpdbpdbpdbqDbqEbqFbqGbqHbqIbqJaaqbqKbqLbqMbqNbqObqPbqLbpraaibpsabnbNtbqRbqSbqTbqUaaqbqVbqWbqVbqXbqYbqZbraaaiaaqbrbampaaibrcbrdbrebrfbrfbrfaaibrgbrhbriaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMPaMPaMPaMPaMPaMPaaaaMPaMPaMPaMPaMPaMPaaaaaaaaaaaaaaaaaaaaabjHbjHbjHbjHbjHbjHbjHbjHbjHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrjazMaaiaaiaaiaoJaoLazMaoJaoLaaiaoJaoLaaiaaiaaiaaibrkbnobocbocbodboebocaaibrlbrmbofbofbogaaqblvbdWbrnaaqbrobrpbrqbrrcHNaaibrtbrubrvbpYbpYaaibrwbrxcHPbrzbrAbrBbrCbrDbrEacfbrFbrGbrHbrIabIbrJbrKacfbrLacfacfacfacfbrMacfacfacfacfbrNacfbrOeEkeEieEjeEhbrTbrUacfbrVboRboRaaibrWbrXdFdbrZbsaaaibqCbpdbpdbpdbpdbpdbpdbpdbsbbscbsdbsebsfdBObshaaqbsibsjbskbqNbprbqPdFhdyNaaibslbsmbsnbsobsobspbsqbsrbssbssbssbstbsubsvbswbsxbsybszbsAbsxbsBbsCbsDbsDbsDcrZaaibsFbrhbsGaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMPaMPaMPaMPaMPaaaaMPaMPaMPaMPaMPaaaaaaaaaaaaaaaaaaaaaaaabjHbjHbjHbjHbjHbjHbjHbjHbjHaaaaaaaaaaaaaaaaaaaaaaaaaOTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabsHbsHbsHbsHbsHbsHbsHbsHbsHbsHbsHbsHbsHaaaaCZbobbnobnobnobpKbpLbnoaaibpNbpNbsIbltbltbsJaTQbdWaSqaaqbsKbsLbsMbsNbsOaaibsPbsQbsRbsScFjaaibsUbsVbsWbsXbsYbsZbtabtbbtcbtdbtebtebtfbtgabXbthbtiacCbtjaGCbtkbtlbtmbtnbtobtlbtpaGCbtqaaiabneEgaaiaaiaaiaaibtsaaibttboRbtuacCbtvbtwbtxbtybtzaaibtAbtBbtCbtDbtEbtFbtGbtHbqDbtIaaqbtJbsfbtKbtLaaqbtMbtNbqMbqNbprbqPbqLbpraaibpsabnbtObtPbtQbtRbtSaGCbtTbtUbtVbtVbtWbqVbtXaaibtYbtZbuaaaibubbucbudbrfbuebufaaibsFbrhbugaaiaaaaaaaaaaaaaabaabaabaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjHbjHbjHbjHbjHbjHbjHbjHbjHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabsHbsHbsHbsHbsHbsHbsHbsHbsHbsHbsHbsHbsHaaaaATbuhbuibocboccEJboebujaaiaaqbukbYMbumaaqaaqblvbdWbhzaaqbunbuobupbuqburaaibpYbrubusbpYbpYaaibutbuubuvbuwbuxaaqbuybuzbuAaaibuBaaqaaqaouaaqaaJbuCaaibuDbuEbuFbtlbuGbtnbuGbtlbuHbuEbtqaaieEdeEecbZeEceEfabIbuMabIbuNboRbuOaaiboTbuPbuQbuRbuSbuTbuUbuVbuWbuXbuYbuZbvabvbbvcbvdbnSbvebvfbvgbvhaaqbvibvjbvkbvlbvmbvnbvmbpraaibvobvpbvqbvrbvrbvsbvtbvubvvbvwbvxbvxbvybvzbvAaaibvBbtZbvCaaibvDbvEbvFbrfbrfbvGaaibrgbrhbvHaaiaaaaaaaaaaaaaabbvIbvJbvKbvJbvKbvJbvLaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjHbjHbjHbjHbjHbjHbjHbjHbjHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabsHbsHbsHbsHbsHbsHbsHbsHbsHbsHbsHbsHbsHaEUaEVbvMbvNbnobnobpKbpLbpMaaibYRbltbXpbltbYLaaqaTQbdWaSqaaqaGGbvRbvSbvTaSGaaibvUbvVbvWbvXbvYaaibvZbwabwbbwcbvZaaqbwdbwebwfaaiaaiaaibFCbwhbwibwjbwkaaibwlbwmbwnbwobwpbwqbwpbwrbwsbwtbwuaaibGdbHubLvaaqbYeaaqbwyaaqbwzboRbwAaaiaGGbwBbvRbwCbwDaaqbwEbwFbwGbwHbwIbwIbwJbwKbwLbwMaaqbwNbwOaouaaqaaqaaqaaJbwPaouaaqaaiaaiaaibwQbwRabnbwSbtPbtQbwTbvrbwUcoAbwWbwWbwWbwXbwYbwZbxaaaibrbbxbaaibxcbxdbrfbxebxfbxgaaibsFbxhaaiaaiaaaaaaaaaaaaaabbxibxjbxkbxlbxlbxmbxiaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjHbjHbjHbjHbjHbjHbjHbjHbjHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabsHbsHbsHbsHbsHbsHbsHbsHbsHbsHbsHbsHbsHaaaaATbuhbuibocboccEJboebujaaiaaqbukbYMbumaaqaaqblvbdWbhzaaqbunbuobupbuqburaaibpYbrubusbpYbpYaaibutbuubuvbuwbuxaaqbuybuzbuAaaibuBaaqaaqaouaaqaaJbuCaaibuDbuEbuFbtlbuGbtnbuGbtlbuHbuEbtqaaicmHeEecbZeEceEfabIbuMabIbuNboRbuOaaiboTbuPbuQbuRbuSbuTbuUbuVbuWbuXbuYbuZbvabvbbvcbvdbnSccAbvfbvgbvhaaqbvibvjbvkbvlbvmccybvmbpraaibvobvpbvqbvrbvrbvsbvtbvubvvbvwbvxbvxbvybvzbvAaaibvBbtZbvCaaibvDbvEbvFbrfbrfbvGaaibrgbrhbvHaaiaaaaaaaaaaaaaabbvIbvJbvKbvJbvKbvJbvLaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjHbjHbjHbjHbjHbjHbjHbjHbjHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabsHbsHbsHbsHbsHbsHbsHbsHbsHbsHbsHbsHbsHaEUaEVbvMbvNbnobnobpKbpLbpMaaibYRbltbXpbltbYLaaqaTQbdWaSqaaqaGGbvRbvSbvTaSGaaibvUbvVbvWbvXbvYaaibvZbwabwbbwcbvZaaqbwdbwebwfaaiaaiaaibFCbwhbwibwjbwkaaibwlbwmbwnbwobwpbwqbwpbwrbwsbwtbwuaaibGdbHubLvaaqbYeaaqbwyaaqbwzboRbwAaaiaGGbwBbvRbwCbwDaaqbwEbwFbwGbwHbwIbwIbwJbwKbwLbwMaaqaaJbwOaouaaqaaqaaqaaJbwPaouaaqaaiaaiaaibwQbwRabnbwSbtPbtQbwTbvrbwUcoAbwWbwWbwWbwXbwYbwZbxaaaibrbbxbaaibxcbxdbrfbxebxfbxgaaibsFbxhaaiaaiaaaaaaaaaaaaaabbxibxjbxkbxlbxlbxmbxiaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjHbjHbjHbjHbjHbjHbjHbjHbjHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabsHbsHbsHbsHbsHbsHbsHbsHbsHbsHbsHbsHbsHbxnbxobxpbxqbocbocbodboebocaaibxrbltbltbltbXlaaqaTQbdWaSqbxubxvbxwbxxbxybxzaaiaaiaaiaaibxAaaiaaibxBbxCbxDbxEbKvaaqbxGbxHbxIbxXbxKbxWbxMbxNbxObxPbxQaaibuDbxRbxSbtlbwpbxTbwpbtlbxUaaibtqaaibrPbARbznaaqbxYaaqbxZaaqbyaboRbybaaibycbydbyebyfbygabIbyhbyiabIabIbyjbykabIabIbylbymaAnaAqbynbyobypbyqbpmbysbytbyubyvaaibywbyxbyybyzabnbyAbyBbyCbyDbyEaaqbyFbwWbwWbyGbyHbwYbyIaaibyJbyJbyKaaibyLbyMbpybyObrfbyPaaibsFbyQaaiaaaaaaaaaaaaaaaaabbyRbySbxkbxlbxkbyTbvKaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjHbjHbjHbjHbjHbjHbjHbjHbjHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabsHbsHbsHbsHbsHbsHbsHbsHbsHbsHbsHbsHbsHaGGaGHbvMbobbnobnobpKbpLbnoaaibyUbjJbmmbjKbyVabIaSobjMbdXaaqbzebqabyXbyYcwRbzabzbbzcbzdbzdbyWbzfcuTbzhbyYbzibzjaaqbwdboRbzkbzlbzmbxVbzobzpbzqbzrbzsaaibuDaaiaaibztbzubzvbtlbzwbzxacfbzyaaiabnaaiaaiaaiaaiaaibzzaaibzAboRbybaaibzBbzCbzCbzDbzEaaqbzFbzGbzHbzIbzJbzKbzLbzHbzMbzNbzObzPbzQbzRbzSbzTbzUbzVbzWbzXbzYbzZbAabAbbAcbAdbAebAfbAfbAgbAhbAiaaqbAjbqVbqVbAkbAlbwYbAmaaqbAnbAobApaaqbxJbxLaSGeGXbjxaaiaaibAsaaiaaibAtbAubAubAubAvaaibxibxlbxkbxlbxlbAwbxiaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjHbjHbjHbjHbjHbjHbjHbjHbjHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAxbAxbAxbAxbAxbAxbAxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabsHbsHbsHbsHbsHbsHbsHbsHbsHbsHbsHbsHbsHbAybAzbpIbpJbocbocbodboebocaaibAAbiCbiDbABbACbYObAEbAFaSqaaqbAGbqabyXbyYbAHaaqbAIbAJbqbbqbbAKbALbAMbzhbyYbANbAObAPbwdboRbAQbadbzmbwxbASbATbAUbAVbAWbAXabubzxacfarzbAYbxTbAYbzxbAZaaiaaiaaibBabBbbBcbBdbBebBfbBgacfbBhboRbybbuTbBibBjbBkbBlbBmaaqbBnbBobBpbBqbBrbBsbBtbBubBvbBwbBxbBybBzbBAbBBbarbBDbBEbBFbBGbBHaaibBIbBJbBKbBLaaibBMbBNbBObBPbBPaaqbBQbBRbBSaaqbBTbwYbBUaCZbBVbBWbBXbBYbBZbCabCbbCcbCdbCebwvbCgbChbwwbCjbCjbCkbClbCmbCnbCobvJbvKbCpbvKbvJbCqaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjHbjHbjHbjHbjHbjHbjHbjHbjHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAxbAxbAxbAxbAxbAxbAxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabsHbsHbsHbsHbsHbsHbsHbsHbsHbsHbsHbsHbsHaaabCrbobbnobnobnobCsbCtbCuaaibXibCwbCxbYKbCzaoibCAbCBaSqaaqbCCbCDbCEbCFbCGbCHbCIbCJcuRbCKbCLbCHbCMbCNcsZbCObCPaaqbCQboRbAQbadbzmaaibCRbCSbCTbCUbCVabnbCWbCXbCYbgPacfbCZbDabgPbDbbDcbDdaaibDebDfbDgbDhbDibDibDjbDkbDlboRbDmaaiaaqbDnbjxbDobDpaaqbBnbDqaaqbDrbDsbBsbDtaaqbBnbDubDvaaqaaqaaqaouaaqaaqaaqbDwamwaaqaaiaaibDxaaqaaqaaiaaiaaqaaJaaqaaqaaqaaqaaqaaqaaqbDybDzaCnaCobDAbDBbDCbDDbDDbDEbDFbDGbDHbDIbDJbDKbDLbuLbDNbDNbDObBZbDPaaibDQbDRbDSbwgaaibDUaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjHbjHbjHbjHbjHbjHbjHbjHbjHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAxbAxbAxbAxbAxbAxbAxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazMaaiaaiaaiaoJaoLazMaoJaoLaaiaoJaoLaaiaaibDVafjaaibxAaaqaaqaaqaaqazlbDWaoiaoibDXaoibDYbDZbEabEbbEcbEdbEebqbbEfbqbbEgbzfbEhbqbbyYbqbbEibjxbwdboRbEjbEkbElaaibEmbEnbEobEpbEqabnbErcACbEtbEubnFbEwbExbEybEzcBgbEBaaibECbEDbEEbEFbEGbEHbEIaaibEJbEKbybbELbEMbENbEObEPbEQbERbESbBobjxbETbEUbEVbEWbjxbBnbDubDvbEXbEYczMbFabFbbFcbFdbFebFfaaqbFgbFhbFibFjbFkbFlbFmbCebFobDDbDDbFnbFpbDDbFqbFrbFsbFtbFubDDbFvbFwbFxbFybFzbFAaaiabnaaiaaiaaibFBaaiaaibAtbAvaaibDMbFDbFEbFFbFGbFHbFIbFJaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjHbjHbjHbjHbjHbjHbjHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAxbAxbAxbAxbAxbAxbAxbAxbAxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabFKbFKbFKbFKbFKbFKbFKaaaaaabzlbFLbFMbFMbFMbFNbFObFPbFPbFPbPubFQbFPbFPbFRbFPbFPbFPbFPbFPbFSbFTbFUbFPamwbFVbqbbqbbqbbEgbFWbFXbFYbyYbFZbGabGbbwdboRbGcbCibzmaaibGebGfbGgbCSbGhabnbGibGjbGkaaibrRbGmczAacCbGobGpbGqaaibGrbGsbGtbGubEGbEHbEIaaibGvbGwbGxbGybGzbGAbGBbGCbGDbGEbGFbGGaaqaaqbGHbGIaaqaaqbBnbDubDvbjxbGJbGKbGKbGKbGLbGKbGMbGNbGObGPbGQbGRbGRbGSbGTbGUbGVbGWbBZbBZbGXbBZbGYbBZbGZbBZbHabHbbHbbHcbHdbHebHfbHgbHhbHibHjbHkbHlaaibHmbHnaaaaaaaaaaaibHobHpbHqbHrbHsbHtbCfaaiaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjHbjHbjHbjHbjHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAxbAxbAxbAxbAxbAxbAxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazMaaiaaiaaiaoJaoLazMaoJaoLaaiaoJaoLaaiaaibDVafjaaibxAaaqaaqaaqaaqazlbDWaoiaoibDXaoibDYbDZbEabEbbEcbEdbEebqbbEfbqbbEgbzfbEhbqbbyYbqbbEibjxbwdboRbEjbEkbElaaibEmbEnbEobEpbEqabnbErcACbEtbEubnFbEwbExbEybEzcBgbEBaaibECbEDbEEbEFbEGbEHbEIaaibEJbEKbybbELbEMbENbEObEPbEQbERbESbBobjxbETbEUbEVbEWbjxbBnbDubDvbEXbEYczMbFabFbbFcbFdbFebFfaaqbFgccwbFibFjbFkbFlbFmbCebFobDDbDDbFnbFpbDDbFqbFrbFsbFtbFubDDbFvbFwbFxbFybFzbFAaaiabnaaiaaiaaibFBaaiaaibAtbAvaaibDMbFDbFEbFFbFGbFHbFIbFJaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjHbjHbjHbjHbjHbjHbjHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAxbAxbAxbAxbAxbAxbAxbAxbAxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabFKbFKbFKbFKbFKbFKbFKaaaaaabzlbFLbFMbFMbFMbFNbFObFPbFPbFPbPubFQbFPbFPbFRbFPbFPbFPbFPbFPbFSbFTbFUbFPamwbFVbqbbqbbqbbEgbFWbFXbFYbyYbFZbGabGbbwdboRbGcbCibzmaaibGebGfbGgbCSbGhabnbGibGjbGkaaibrRbGmczAacCbGobGpbGqaaibGrbGsbGtbGubEGbEHbEIaaibGvbGwbGxbGybGzbGAbGBbGCbGDbGEbGFbGGaaqaaqbGHbGIaaqaaqbBnbDubDvbjxbGJbGKbGKbGKbGLbGKbGMbGNbGObGPbGQbGRbGRbGSbGTbGUbGVbGWbBZbBZbGXbBZbGYbBZbGZbBZbHabHbbHbbHcbHdbHebHfbHgbHhccvbHjbHkbHlaaibHmbHnaaaaaaaaaaaibHobHpbHqbHrbHsbHtbCfaaiaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjHbjHbjHbjHbjHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAxbAxbAxbAxbAxbAxbAxbAxbAxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabFKbFKbFKbFKbFKbFKbFKaaaaaabadbHvbHwbHwbHwbHxbHybFPbFPbFPbFPbFPbFPbFPbFRbFPbFPbFPbFPbFPbFSbFTbFUbFPamwbHzbHAbHBbHCbHDbHEbHFbHGbHHbHIbHJbjxbwdboRbHKaaqaaqaaiaaiaaiaaiaaibHLabnaaibHMabnacCabnbHNaaiaaiaaiaaiaaiaaiabnaaiaaiaaiaaiaaiaaiaaibHOboRbHPbnSaaqbHQbHRaaqaaqbBnbHSbHTbEQbHUbHVbHWbHXbHYbESbHZbIabIbbIcbIdbIdbIdbIebIdbIfbIgbIhbIibIjbIkbFibIlaaiaaiaaiaaiaaiaaibImaaiaaiaaiaaJbInaaqaaqbIobIpbIqbIrbHfbIsbItbIubIvbIwbIxaaibHmbIyaaaaaaaaaaaibIzbIAaaibCnaaiaaibCnaaiaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAxbAxbAxbAxbAxbAxbAxbAxbAxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabFKbFKbFKbFKbFKbFKbFKbIBaoKaCobICbIDbIDbIDbIEbIFbIDbHwbHwbHwbHwbHwbIGbIHbHwbHwbIGbHwbHwbHybIIbIJbFPazlaoiaoiaoiaoiaoiaoibIKbEdaaqaaqaaqaaqbwdboRbILbIMbINbIObIPbIQbIRbISbITbIUbIVbIWbIXbIYbIZbJabJbbJcbJdbJebJfbJebJgbJhbJibnQbJjboRbJkbJlbJmboRbJnaaqbJobJpbJqbJrbJsbBnbJtbJubJvbJwbJxbJybJzbJAbJBbJCbJDaaqbJEbJFbJGbJHbJIbGKbJJbJKaaqbJLbFibFibFibJMaaibJNbJObJPbJQbJRbJSczzbJUaaicbObJWbJXaaqaaqbJYbIqbJZbKabKbbKcbKdbKebKfbKgaaibKhaaiaaaaaaaaaaaiaaiaaiaaiaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOTaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAxbAxbAxbAxbAxbAxbAxbAxbAxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabFKbFKbFKbFKbFKbFKbFKbKibKjbKibKkbKkbKkbKkbKlbKmbKkbKkbKkbKkbKkbKkbKkbKnbKkbKkbKkbKkbKkbKmbKobKpbKkbKqbKrbKsbKtbKubwVbKwbKxbKybKzbKAbKAaaqbwdbKBbKCboRboRbybbKDbnQbJibJhbKEbKFbKEbKGbKHbKHbKIbKJbKKbKHbKHbKLbKHbKMbKHbJhbJibnQbKNbKObKPbKQbKRbKSboRaaqbKTbJpbKUbKVbKWbBnbKXbKYbKZbLabLbbLcbLdbLebBnbLfbLgaaqaaqbLhbLibLjbLkbLlbLmbLnaaqbLobLpbFibLqbLraaibJNbLsbLtbLubuKbLwbLxbLyaaibLzbLAbLBbLBaaqbLCbLDbLEbLFbLGbLHbVAbLJbLKbVHaaibHmaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAxbAxbAxbAxbAxbAxbAxbAxbAxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabFKbFKbFKbFKbFKbFKbFKbLMbLNbLMbFLbFMbLObLPbLQbLRbLPbLSbLSbLTbLSbLSbLPbLUbLSbLSbLPbLSbLSbLVbLWbLXbLYabIbLZbMabMbbMcbMbbMdbMebMfbMgbMhbMiaaqbwdbTQbMkbMlbMFbPfbPgbSsbMqbMrbMsbMtbMubMvbMwbMwbMxbMybMybMybMybMybMybMzbMAbMBbMCbMDbMEbMFbMGbMHbMIbMJbMKaaqbMLbJpbJqbMMbKWbBnbKXbKYbMNbMObMPbMQbMRbMSbBvbMTbMUaaqbMVbMWbMXaaqbMYaaqbMZaxeaaqbNabNbbNcbNdbNeaaibJNbNfbNgbJQbNhbNibNjbNkaaibNlbLAbLBbLBaaqbNmbNnbNoacCbNpbNqbNrbNsbxFbNuaaibHmaaiaabaabaabaabaabaabaabaabaabaabaabaabaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaaaaaaaaaaaaaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAxbAxbAxbAxbAxbAxbAxbAxbAxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabFKbFKbFKbFKbFKbFKbFKbIBaoKbckbNvbHwbHybHwbNwbNxbNybNybNybNzbNybNybUrbNAbNybNybNBbNybNybNCbNDbNEbNybNFbNGbNHbNIbNJbNIbNKbNLbNMbNNbNObNPaaqbNQaaqbNRaaqaaqbMnbNTbNSaaqaaqaaqbNUbXmbNWaaqaaqbNXbJhbJhbNYaaqaaqaaqaoubNZaaqaaqaaqbOaaaqaaqbObaaqbOcaouaaqbOdbOebOfaaqbOgbBnbKXbOhaaibOibOjbOkbOlaaibOmbLfbOnaaqbOobOpbOqbOrbOsbOtabIbOubOvbOwbOxbOybOzbOAaaiaaiaaiaaiaaiaaiaaiaaiaaiaaibOBbOCbODbODaaqbOEbOFbOGaaiaaiaaiaaiaaiaaiaaiaaibHmaaiaaabOHbOHbOHaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbOIbAubAubAvaaqaaqaaiaaiaaiaaibOJaabaabaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAxbAxbAxbAxbAxbAxbAxbAxbAxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabFKbFKbFKbFKbFKbFKbFKbLMbLNbLMbOKbIDbIFbIDbOLbOMbONbOObOObOPbOObOObOQbORbOObOObOSbOObOObOObOObOTbOUabXbOVbOWbOXbOYbOXbOZbPabPbbPcbPdbMiaaqaaqaaqbQUaaqbMobMpbPhbPibPjaaqbPkbPlbPmbPnbPoaaqbPpbPqbPraaqbPsbPtbsEbPvbPwbPxbPybPzbPAabXbPBbPCbPDbPEbPFabXbPGbPHbPIbPJbPKbPLbPMbKYbPNbPObPPbPQbPRbPSbBvbPTbPUbPVbPWbPXbPXbPYbPZbQaaaqbQbbQcbQdbQebQfbQgbQhaaibQibQjbQkaaibQlbQmbQnbQoaaibUXbQqbQrbQraaqbQsbQtbIraaibrhbQubQvbQwbQwbQvbQwbQxaaiaaabOHbQybOHaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabbQzbQAbQBbQAaaqaaiaaibQCbQDbQCbQEaaiaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAxbAxbAxbAxbAxbAxbAxbAxbAxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabFKbFKbFKbFKbFKbFKbFKbQFbQGbQFbQHbQHbQIbQHbQHbQJbQHbQHbQHbQKbQHbQHbQHbQLbQHbQHbQMbQHbQHbQHbQHbQHbQHbQNbQObQPbNNbNNbNNbNNbNNbQQbQRbQSbQTbEdacEaaqbPeabXbVDbQWbQWbQWbQXaaqcmIbQZbQZbQZbRabRbbRcbRdbReabXbRfbRgbRhcjQbRibRjaaqaaqbRkaaqbRlbRmcqgbRobRpaaqbKTbJqbKUbKVbRqbRrbRsbRtacCcpBbRvbRwbRxaaibRybRzbRAbRBbRCbRDcmJbRFbRGbRHaaqaaqaaqaaqaaqaaJaCGaoraaibRIbRJbRJbRKbQobRLbQobRMaaibRNbLAbRObROaaqbIpbRPbIraaiaaibRQaaiaaiaaiaaiaaiaaiaaiaaiaaibRRaaiaaiaaiaaiaaiaaiaaiaaiaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacbRSbQAbQAbRTaaiaaibQCbQCbRUbQCbQCaaiaaiaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAxbAxbAxbAxbAxbAxbAxbAxbAxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabFKbFKbFKbFKbFKbFKbFKbIBaoKaEWbRVbFMbRWbFMbRXbRYbRZbHwbHwbSabHwbHwbFMbSbbHwbHwbScbHwbSdbHwbHwbSebFPaaqbSfbSgbShbSibSjbSkcrRbSmbSnbSobSpbSqbEdaaqbQUaaqbQXbQWbSrbQWbXhaaqbStbQZbSubQZbXqaaqbSvbSwbSxaaqbSybSzbSAbSBbSCbSDabIbSEbSFabIbSGbSHbSIbSJbSKaaqbSLbJqbJqbSMbRqbRrbSNbSObSPbPObSQbSRbSSbSTbSUbSVbSWaaqbSXbSYbREbSZbSZbTaaaqbTbbTcbTdbTebTfbTgbThaaibRJbRJbRJbTibQobTjbQobTkaaibTlbLAbTmbTmaaqbTnbTobIraaibTpbTqbTracCbTsbTtbTubTvbTwbTxbTybTzbTAbTBbTCbTDbTEbTFbTGaaiaaiaaiaaiaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaabTHaaibRSaaiaaibQCbQCbQCbQCbQCbQCbQCaaiaaiaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAxbAxbAxbAxbAxbAxbAxbAxbAxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabFKbFKbFKbFKbFKbFKbFKaaaaaiaaiaaqazSbTIazTaaqbTJaaqaaqazSaoKazTaaqaaqbTKaaqaaqaaqaaqaaqaaqaaqaaqaaqaaqaaqaaqaaqaaqaaqaaqaaqbTLaaqaaqaaqbTMbTNbTObTPaaqbQXbQWbQWbQWbTRaaqbStbQZbQZbTTbTUabIbTVbTWbTXaaqaaqaaqaaqaaqbTYaaqaaqbTZbUaaaqaaqaaJaaqaouaaqaaqbUbbUcbUcaaqaaqbUdbUebUfbUgbUhbUibUjbUkbUlaaqbUmbUnaaqbUobSYbREbSZbSZbSZaaqbUpbUqcfTbUsbUtbUubUvaaibRJbUwbRJbUxbQobRLbUybUzacCbUAbUBbUCbUCabXbUDbUEbNobUFbUGbUHbUIbUJbUKbULbULbUMbUNbULbUObULbUPbUQbURbUSbUTbUUbUVacfbUWbXIbUYbUZaabaabaabaabaabaabaabaabaabaabaabaabaabaaqaaibVabVbbVbbQCbQCbQCbQCbQCbQCbQCbQCaaiaaiaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAxbAxbAxbAxbAxbAxbAxbAxbAxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabFKbFKbFKbFKbFKbFKbFKaaaaaibVcbVdbVebVfbVgbVhbVibVjaaibVkbVlbVmbVnbVobVpbVqbVrbVsbVrbVrbVrbVrbVrbVrbVrbVrbVrbVrbVrbVrbVrbVrbVtbVrbVrbVrbVubVvbVwbVxaaqbVybVzbXobQWbQXaOqbVBbVEbVFbVGbVCaaqbVIbVJbVKbVLbVMbVMbVMbVMbVNbVObVPbVQbVQbVRbVRbVSbVTbVUaaqaaqbVVbVWbVXbVYbVZbRrbWabUfbWbbWcaHobWdbLdbWeaHobWfbWgaoibWhbWibWjbWkbWlbWmaaqbWnbWobWpbWqbWrbWsbWtaaibWubRJbRJaaibWveGWbWxaaiaaqbWybWzbJXaaqaaqbWAbRPbWBaaibWCbWDbWEaaibWFbWGbWGbWHbWIbWJbWKbWGbWLbWMbWGbWGbWNbWObWPbWQbWRbWSbWTbWUaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaiaaibWVbQCbQCbQCbQCbQCbQCbQCbQCbQCbQCbQCaaiaaiaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAxbAxbAxbAxbAxbAxbAxbAxbAxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabFKbFKbFKbFKbFKaaaaaaaaibWWbWXbWXbWYbWXbWXbWZbXaaaibXbbXcbXdbXcbXcbXeaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaqbXfaaqaaqbXgaaqbxtbADbXjbXkbxsaaJbvPbXnbTSbulbpPaOqbXrbXsbXtabIacfacfacfacfbXuauWbAXabXbXvabXabXbXwbXxbXybXzbXAbXBbXCbXDbXEbXFbXGbXHbQVbXJbXKbXLbXMbXNbXObXPbXQbXRaaqaaqaEqabXabXabXbXSaaqaaqbXTaaqamwbXUbXVbXWaaibXXbRJbRJbXYbXZbYabYbbYcaaqaaqbYdaaqaaqbuJbYfbRPbtZaaiaaibYgaaiaaibYhbYibYjbYkbYlbWGbYmbWPbYnbWPbWPbWPbYobTzbYpaaibYqbYrbYsbYtaabaabaabaabaabaabaabaabaabaabaabaabaabaaibQCbQCbQCbQCbQCbQCbYubQCbYvbQCbQCbQCbQCbQCaaiaaiaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAxbAxbAxbAxbAxbAxbAxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYwbYxbYybYxbYzaaaaaaaaaaaibYAbWXbWXbWYbWXbWXbWZbYBaaibXbbYCbYDbYEbojbXeaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaibYFbYGbYHaaqbYIaaqbYJbMjbMmbQXbCyaOrbvObStbYPbvQbCvaOrbYSbYTbYUaaiaaibYVbYWbYXbYYbYZabnbZabBJbZbaaqbZcbBJbBJbZdabXbZebZfbQYbXEbZgbZhbZibZjbZkbZlbZmbZnbZobZlbZlbZpbZqbZqbZqbZrbZqbZqbZqbZsbaqbZubZvbZwbZxbZybZzbZAaaibZBbZCbZDbZEbZFbZGbZHbZIbZJbZKbZLbtZbZMbtZbYfbRPbtZaaibrhbZNbZOaaiaaiaaqaaqaaqbZPbWGbZQbRnbWGbZRbZSbZTbZUbZVbZWaaibZXbZYbZZaaiaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaicaacaacaacaacaacaacabbQCcaccaabYvbQCbQCbQCbQCaaiaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAxbAxbAxbAxbAxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacadcaecafcagcadbfcaoKbckaaicahcaibWXbQpbWXbWXbWZcajaaibXbcakbYDbYDbYDbXeaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaicalcamcanaaqbYIaaiaaiaaiaaiaaiaaiaaqaaqaaqaaqaaqaaqaaqcaocapcaqcarcascatcaucaucavcawabnbBJbBJcaxaaqcaybBJbBJbBJcazcaAcaBbXCcaCaHocaDbZqcaEcaFcaGbKXcaFcaHcaIcaIcaIcaIcaIcaIcaFcaIcaIcaIbKXcaKcaLcaMcaNcaOcaPcaQcaRaaicaScaTcaTcaUbRJcaVcaWcaXcaYcaZcbacbbbtZcbcbYfbRPcbdaaibrhcbecbfcbgaaicbhcbicbjbWGbWGcbkbWGbWGcblcbmcbncbocbpcbqaaicbrcbscbtcbuaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbvbQAbQAbQAbQAbQAbQAbQAcbwbQDbQCbQCbQCbQCcbxbQDaaiaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYycbycbzcbybYycbAcbBcbCaaicbDbWXbWXcbEbWXcbFcbGcbHaaicbIbXccbJbYDbYDcbKaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaiaaiaaiaaibYIaaiaaaaaaaaaaaaaaicbLcbMcbNbJVcbPcbQaaqcbRcbScbTcbUcbVcbWcbXcbXcbYbpXabnaaiaaiaaiafbccaaaibBJbBJaaqccbcccccdcceccfccgcaOcchcciccjcckcclccmccncaIcaIcaIccoccpccqccpccoaaiauYacCacCccrccsccoaaqcctccuaaiccvccwccxccybjjccAccBaaiaaiaaiabnaaiaaiaaiccCccDccEaaibrhcbeccFcbgaaiccGbWGbWGbWGbZRccHccIccJaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaibVbbVbbVbbVbbVbbVbccKbQCbVabVbccLbQCbQCbQCbQCaaiaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacadcbycbycbyccMccNccOccPccQccRbWXbWXbWXbWXbWXbWXccSaaiccTbXcccUbYDbYDccVaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccWaaaaabaabaaiaaiaaiaaiaaiaaiaaiaaiaaqbXgaCZaaaccXccYccZcdacdbcdccddcdecdfcdgabXcdhcdicdjcdkcdlcdmcdncdocdpcdqabncdrcdscdtcducdvaaibBJbBJaaqaaqaaqaaqaaJaaqcdwcdwcdxaaqaaqaouaaqaPPcdycdBcdAcdBacfcdCcdDcdEacfcdFcdFacfcdGcdHcdIaaicdJcdKbVUaaiaaiaaiabnbNVaaicdMbAZaaicdNcdOcdPbBJcdQaaiabncdRafjaaibrhcbecdScdTaaicdUcdVcdWbZRcdXcdYccIcdZaaiaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaaibQCbQCbQCbQCbQCbQCbYubQCccLbQCbQCbQCbQCbQCaaiaaiaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYycbzcbzcbzbYyceacebcecacfcedceecefcefcefcefcegcehaaibXbceicejbYDbYDccVaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacekcelcelcelcemcenceobqQceqcercesaaqcetbXgaATaaaceucevcewcexceycdccezceAceBceCaaqceDbYTbTWcbUceEcauceFcauceGceHceIceJceKceLceKceMaaibBJbBJaaqceNceOcePceQceRceSceSceTceUceVceWceXceYabXceZcfacfaacCcfbcfccfdaaiaaaaaaaaicfecffcfgacfcfhcficfjcfkcfkcfkcflcfmcfncfocfpcfncfncfncfqcfncfncfrcfscftcfucfvbQwcfwcfxbrhaaicfycfzcfAcfBcfycfCcfDcfEaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaiaaibWVbQCbQCbQCbQCbQCbQCbQCbQCbQCbQCbQCaaiaaiaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAxbAxbAxbAxbAxbAxbAxbAxbAxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabFKbFKbFKbFKbFKbFKbFKbLMbLNbLMbOKbIDbIFbIDbOLbOMbONbOObOObOPbOObOObOQbORbOObOObOSbOObOObOObOObOTbOUabXbOVbOWbOXbOYbOXbOZbPabPbbPcbPdbMiaaqaaqaaqbQUaaqbMobMpbPhbPibPjaaqbPkbPlbPmbPnbPoaaqbPpbPqbPraaqbPsbPtbsEbPvbPwbPxbPybPzbPAabXbPBbPCbPDbPEbPFabXbPGbPHbPIbPJbPKbPLbPMbKYbPNbPObPPbPQbPRbPSbBvbPTbPUbPVbPWbPXbPXbPYbPZbQaaaqbQbbQcbQdbWxbQfbQgbQhaaibWvbQlbQobXYbQobQobXZacCacCbXXbQqbQrbQraaqbQsbQtbIraaibrhbQubQvbQwbQwbQvbQwbQxaaiaaabOHbQybOHaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabbQzbQAbQBbQAaaqaaiaaibQCbQDbQCbQEaaiaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAxbAxbAxbAxbAxbAxbAxbAxbAxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabFKbFKbFKbFKbFKbFKbFKbQFbQGbQFbQHbQHbQIbQHbQHbQJbQHbQHbQHbQKbQHbQHbQHbQLbQHbQHbQMbQHbQHbQHbQHbQHbQHbQNbQObQPbNNbNNbNNbNNbNNbQQbQRbQSbQTbEdacEaaqbPeabXbVDbQWbQWbQWbQXaaqcmIbQZbQZbQZbRabRbbRcbRdbReabXbRfbRgbRhcjQbRibRjaaqaaqbRkaaqbRlbRmcqgbRobRpaaqbKTbJqbKUbKVbRqbRrbRsbRtacCcpBbRvbRwbRxaaibRybRzbRAbRBbRCbRDcmJbRFbRGbRHaaqaaqaaqaaqaaqaaJaCGaoraaibRLbQobQocaVbQocaUbRMaaiaaicaWbLAbRObROaaqbIpbRPbIraaiaaibRQaaiaaiaaiaaiaaiaaiaaiaaiaaibRRaaiaaiaaiaaiaaiaaiaaiaaiaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacbRSbQAbQAbRTaaiaaibQCbQCbRUbQCbQCaaiaaiaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAxbAxbAxbAxbAxbAxbAxbAxbAxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabFKbFKbFKbFKbFKbFKbFKbIBaoKaEWbRVbFMbRWbFMbRXbRYbRZbHwbHwbSabHwbHwbFMbSbbHwbHwbScbHwbSdbHwbHwbSebFPaaqbSfbSgbShbSibSjbSkcrRbSmbSnbSobSpbSqbEdaaqbQUaaqbQXbQWbSrbQWbXhaaqbStbQZbSubQZbXqaaqbSvbSwbSxaaqbSybSzbSAbSBbSCbSDabIbSEbSFabIbSGbSHbSIbSJbSKaaqbSLbJqbJqbSMbRqbRrbSNbSObSPbPObSQbSRbSSbSTbSUbSVbSWaaqcbabSYbREbSZbSZbTaaaqbTbbTcbTdbTebTfbTgbThaaibRLcaZbQobQobQocaXbUyaaiaaicaYbLAbTmbTmaaqbTnbTobIraaibTpbTqbTracCbTsbTtbTubTvbTwbTxbTybTzbTAbTBbTCbTDbTEbTFbTGaaiaaiaaiaaiaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaabTHaaibRSaaiaaibQCbQCbQCbQCbQCbQCbQCaaiaaiaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAxbAxbAxbAxbAxbAxbAxbAxbAxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabFKbFKbFKbFKbFKbFKbFKaaaaaiaaiaaqazSbTIazTaaqbTJaaqaaqazSaoKazTaaqaaqbTKaaqaaqaaqaaqaaqaaqaaqaaqaaqaaqaaqaaqaaqaaqaaqaaqaaqbTLaaqaaqaaqbTMbTNbTObTPaaqbQXbQWbQWbQWbTRaaqbStbQZbQZbTTbTUabIbTVbTWbTXaaqaaqaaqaaqaaqbTYaaqaaqbTZbUaaaqaaqaaJaaqaouaaqaaqbUbbUcbUcaaqaaqbUdbUebUfbUgbUhbUibUjbUkbUlaaqbUmbUnaaqbSXbSYbREbSZbSZbSZaaqbUpbUqcfTbUsbUtbUubUvaaibZDaaibZCbZBbYcaaiafjaaiaaibYabUBbUCbUCabXbUDbUEbNobUFbUGbUHbUIbUJbUKbULbULbUMbUNbULbUObULbUPbUQbURbUSbUTbUUbUVacfbUWbXIbUYbUZaabaabaabaabaabaabaabaabaabaabaabaabaabaaqaaibVabVbbVbbQCbQCbQCbQCbQCbQCbQCbQCaaiaaiaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAxbAxbAxbAxbAxbAxbAxbAxbAxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabFKbFKbFKbFKbFKbFKbFKaaaaaibVcbVdbVebVfbVgbVhbVibVjaaibVkbVlbVmbVnbVobVpbVqbVrbVsbVrbVrbVrbVrbVrbVrbVrbVrbVrbVrbVrbVrbVrbVrbVtbVrbVrbVrbVubVvbVwbVxaaqbVybVzbXobQWbQXaOqbVBbVEbVFbVGbVCaaqbVIbVJbVKbVLbVMbVMbVMbVMbVNbVObVPbVQbVQbVRbVRbVSbVTbVUaaqaaqbVVbVWbVXbVYbVZbRrbWabUfbWbbWcaHobWdbLdbWeaHobWfbWgaoibZEbZFbWjbWkbWlbWmaaqbWnbWobWpbWqbWrbWsbWtaaicaSbZLbZKbZHbZGbZLbZIbUXaaqbWybWzbJXaaqaaqbWAbRPbWBaaibWCbWDbWEaaibWFbWGbWGbWHbWIbWJbWKbWGbWLbWMbWGbWGbWNbWObWPbWQbWRbWSbWTbWUaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaiaaibWVbQCbQCbQCbQCbQCbQCbQCbQCbQCbQCbQCaaiaaiaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAxbAxbAxbAxbAxbAxbAxbAxbAxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabFKbFKbFKbFKbFKaaaaaaaaibWWbWXbWXbWYbWXbWXbWZbXaaaibXbbXcbXdbXcbXcbXeaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaqbXfaaqaaqbXgaaqbxtbADbXjbXkbxsaaJbvPbXnbTSbulbpPaOqbXrbXsbXtabIacfacfacfacfbXuauWbAXabXbXvabXabXbXwbXxbXybXzbXAbXBbXCbXDbXEbXFbXGbXHbQVbXJbXKbXLbXMbXNbXObXPbXQbXRaaqaaqaEqabXabXabXbXSaaqaaqbXTaaqamwbXUbXVbXWaaicVCbRNbjjbTkbjjbTjbTibTlaaqaaqbYdaaqaaqbuJbYfbRPbtZaaiaaibYgaaiaaibYhbYibYjbYkbYlbWGbYmbWPbYnbWPbWPbWPbYobTzbYpaaibYqbYrbYsbYtaabaabaabaabaabaabaabaabaabaabaabaabaabaaibQCbQCbQCbQCbQCbQCbYubQCbYvbQCbQCbQCbQCbQCaaiaaiaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAxbAxbAxbAxbAxbAxbAxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYwbYxbYybYxbYzaaaaaaaaaaaibYAbWXbWXbWYbWXbWXbWZbYBaaibXbbYCbYDbYEbojbXeaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaibYFbYGbYHaaqbYIaaqbYJbMjbMmbQXbCyaOrbvObStbYPbvQbCvaOrbYSbYTbYUaaiaaibYVbYWbYXbYYbYZabnbZabBJbZbaaqbZcbBJbBJbZdabXbZebZfbQYbXEbZgbZhbZibZjbZkbZlbZmbZnbZobZlbZlbZpbZqbZqbZqbZrbZqbZqbZqbZsbaqbZubZvbZwbZxbZybZzbZAaaibUobUxbUwbRKbUwbUzbUAbjjbWhbWubWibtZbZMbtZbYfbRPbtZaaibrhbZNbZOaaiaaiaaqaaqaaqbZPbWGbZQbRnbWGbZRbZSbZTbZUbZVbZWaaibZXbZYbZZaaiaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaicaacaacaacaacaacaacabbQCcaccaabYvbQCbQCbQCbQCaaiaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAxbAxbAxbAxbAxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacadcaecafcagcadbfcaoKbckaaicahcaibWXbQpbWXbWXbWZcajaaibXbcakbYDbYDbYDbXeaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaicalcamcanaaqbYIaaiaaiaaiaaiaaiaaiaaqaaqaaqaaqaaqaaqaaqcaocapcaqcarcascatcaucaucavcawabnbBJbBJcaxaaqcaybBJbBJbBJcazcaAcaBbXCcaCaHocaDbZqcaEcaFcaGbKXcaFcaHcaIcaIcaIcaIcaIcaIcaFcaIcaIcaIbKXcaKcaLcaMcaNcaOcaPcaQcaRaaibvebpwbjjbQibjjbQebHibFhbZJbwNbvncbbbtZcbcbYfbRPcbdaaibrhcbecbfcbgaaicbhcbicbjbWGbWGcbkbWGbWGcblcbmcbncbocbpcbqaaicbrcbscbtcbuaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbvbQAbQAbQAbQAbQAbQAbQAcbwbQDbQCbQCbQCbQCcbxbQDaaiaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYycbycbzcbybYycbAcbBcbCaaicbDbWXbWXcbEbWXcbFcbGcbHaaicbIbXccbJbYDbYDcbKaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaiaaiaaiaaibYIaaiaaaaaaaaaaaaaaicbLcbMcbNbJVcbPcbQaaqcbRcbScbTcbUcbVcbWcbXcbXcbYbpXabnaaiaaiaaiafbccaaaibBJbBJaaqccbcccccdcceccfccgcaOcchcciccjcckcclccmccncaIcaIcaIccoccpccqccpccoaaiauYacCacCccrccsccoaaqcctccuaaibQjbQmbQkbQnbRJcaTbRIaaiaaiaaiabnaaiaaiaaiccCccDccEaaibrhcbeccFcbgaaiccGbWGbWGbWGbZRccHccIccJaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaibVbbVbbVbbVbbVbbVbccKbQCbVabVbccLbQCbQCbQCbQCaaiaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacadcbycbycbyccMccNccOccPccQccRbWXbWXbWXbWXbWXbWXccSaaiccTbXcccUbYDbYDccVaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccWaaaaabaabaaiaaiaaiaaiaaiaaiaaiaaiaaqbXgaCZaaaccXccYccZcdacdbcdccddcdecdfcdgabXcdhcdicdjcdkcdlcdmcdncdocdpcdqabncdrcdscdtcducdvaaibBJbBJaaqaaqaaqaaqaaJaaqcdwcdwcdxaaqaaqaouaaqaPPcdycdBcdAcdBacfcdCcdDcdEacfcdFcdFacfcdGcdHcdIaaicdJcdKbVUaaiaaiabnaaibNVaaibzxbAZaaicdNcdOcdPbBJcdQaaiabncdRafjaaibrhcbecdScdTaaicdUcdVcdWbZRcdXcdYccIcdZaaiaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaaibQCbQCbQCbQCbQCbQCbYubQCccLbQCbQCbQCbQCbQCaaiaaiaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYycbzcbzcbzbYyceacebcecacfcedceecefcefcefcefcegcehaaibXbceicejbYDbYDccVaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacekcelcelcelcemcenceobqQceqcercesaaqcetbXgaATaaaceucevcewcexceycdccezceAceBceCaaqceDbYTbTWcbUceEcauceFcauceGceHceIceJceKceLceKceMaaibBJbBJaaqceNceOcePceQceRceSceSceTceUceVceWceXceYabXceZcfacfaacCcfbcfccfdaaiaaaaaaaaicfecffcfgacfcfhcficfjcfkcfkcflbAacfmcfncfocfpcfncfncfncfqcfncfncfrcfscftcfucfvbQwcfwcfxbrhaaicfycfzcfAcfBcfycfCcfDcfEaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaiaaibWVbQCbQCbQCbQCbQCbQCbQCbQCbQCbQCbQCaaiaaiaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacadcfFcfGcfHcadaINaoKbckaaiaaiaaiaoJaoKaoKaoLaaiaaiaaicfIcfJbYDbYDcfKcfLaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaiaaiaaiawjcfMcfNcfOcfPcfPcfQaaqcfRbYIaATaaaceucfSbRubrScfVcfWcfXcfYcfVcfVbtrcgacgbcgcacCacCcgdcgecaucgfcggcghceLcgicgjcgkcglaaibBJbBJaaqcgmcgncgocgpcgqcgrcgrcgscgtcgucgvcgwcgxaaqcgycaIcgzaaicgAcfccgBaaiaaaaaaaaicgCcgDcgEaaibBKcgFcgGcgGcgGcgGcgGcgGcgHcgIcgJcgKacfacfcgLcgMacfacfcgNcgOcgPabIcgQcgRcgSbrhaaicgTbWGbZRcgUcgVcgUcgWcgXaaibOHbOHaaaaaaaaaaaaaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaaqaaicaccaacaabQCbQCbQCbQCbQCbQCbQCbQCaaiaaiaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacgYbYxcgZbYxchachbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaichcaYEaSFazTaaiaaiaaiaaaaaaaaaaaaaaaaaaaagaaaaaaaaachdchechfchgchhchichjchkchlchlchmaaqbYHbXgaATaaaceuchnchoafbchpcdcchqchrchschtaaqceDbYTbYUchuaaichvaaqchwchxchychzchAceLceLchBchCaaibBJchDaaqchEchFchGchHchHchHchIchJchHchHchKchGchLaaichMcaIchNaaibSlcfccgBaaiaaaaaaaaichQchRchSaaichTbBJchDaaiaaiaaiaaiaaiaoJaoKaoLaaiaaiaabaaaaaaaaaaaichUchVamuaaiaaiaaichWaamaaibWJccIchXchYchZciacibcgVciccidbOHaaaaaaaaaaaaaaaaabaaaaaaaaaaaqaaqaaqaabaaaaaaaabaaaaaaaabaaaaaabTHaaibRSaaiaaibQCbQCbQCbQCbQCbQCbQCaaiaaiaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacieaERaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaachdcifcigcihciicfOcijcfOcikcfOcilcimcincioaERaaacipccYciqcdacircdccdcciscitciuabIcivciwcixciyaaicizeFlciBciCciDabnciEciFciGciHciIaaibBJbBJaaqaaqaaJciJciKciLciMaaqciNciOciPciQbUfaaJaaicgycaIcgzaaiciRcfccgBaaiaaaaaaaaiciSciTciUaaibBJbBJbBJaaiaabaaaaaaaabaaaaabaaaaaaaaaaabaaaaaaaaaciVciWciXciYaaiaaiciZcjacjbaaibWJcjccjdcjecjfcjgcjhbWGaaibOHbOHaaacjicjjcjjcjjcjjcjjcjjcjjcjjcjjcjjcjjcjjcjjcjjcjjcjjcjjcjjcjkcjlcjmcjmcjnaaiaaibQCbQCcjobQCbQCaaiaaiaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -13755,7 +13753,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadM aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadMndMneaueaueaueaueaueaudMndMndMndMndMndMndMneaueaueaueaueaudMndMndTOdUBdUBdUBeexeeNeeOebneeQeeReeSeeTeeUeeVeeWeboeeYeeZeaidUBdUBdTOdTOdTOdTOdJadJadJadJadJadJadKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdJadJadJadTOdTOdUBdUBdUBdUBdUBdUBdUBdUBdUBdUBdTOdTOdTOdTOdTOdJadJadJadJadKkdKkdKkedOefaefeefcefdefeefeedOedWedXeffedUedOefgebxefiefiefieefdUBdUBdUBdUBdUBdUBdUBaaaaaaaaaaaaaaaaaaaaaaaaaaadTOdTOdTOdUBdUBdUBdUBdUBdUBdUBdUBefjefkeflefmefkefkdUBdUBdUBdUBdUBdUBdTOdJadJadJadKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdJadKkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadMndMndMneaueaueaudMndMndMndMndMndMndMndMneaueaueaudMndMndJadTOdUBdUBdUBeexefnefoefpefqefoefrefoefoefseftefueeYefvefwdUBdUBdUBdUBdUBdTOdTOdTOdJadJadJadJadJadJadJadKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdJadJadTOdTOdWTdUBdUBdUBdUBdUBdUBdUBdUBdUBdUBdUBdUBdUBdUBdUBdTOdTOdJadJadJadJadJadJaedOefxefeefyefzefAefBedOedOedOedOedUedOefgefCefCefCefDeejdUBdUBdUBdUBdUBdUBdUBaaaaaaaaaaaaaaaaaaaaaaaaaaadUBdUBdUBdUBdUBdUBdUBdUBdUBdUBdUBefjebyefFefFefGefkdUBefHdUBdUBdUBdXGdWTdTOdJadJadKkdKkdKkdKkdKkdKkdKkdKkdKkdKkdJadJadKkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadMndMneaueaueaudMndMndMndMndMndMndMndMndMndMndMndMndMndJadTOdUBdUBdUBeexefIefoefoefJefoefreGKefoefoefKefLefMeeZeafdUBdUBdUBdUBdUBdUBdUBdTOdTOdTOdTOdJadJadJadJadJadJadKkdKkdKkdKkdKkdKkdKkdKkdKkdJadJadTOdTOdUBeegdUBdUBdUBdUBdUBdUBdUBdUBdUBdUBdUBdUBdUBdUBdUBdUBdTOdTOdTOdTOdJadJadJaedOefNeGLefOefeefPebSefQefDefRefSefTedOecdefCefVecqefXeesdUBdUBdUBdUBdUBdUBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadUBdUBdUBdUBdUBefYefYefZegaefjeGMegcegdedyefkefkefkefkdUBdUBdUBdUBdTOdTOdJadJadKkdKkdKkdKkdKkdKkdKkdKkdKkdJadKkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadMndMndMndMndMndMndMndMndMndMndMndMndMndMndMndKkdKkdTOdTOdUBdUBeexegfefoeggeghegiegjegkefoeexeexeexeexeexeexebbeaidUBdUBdUBdUBdUBdUBdUBdUBdTOdTOdTOdJadJadJadJadJadKkdKkdKkdKkdKkdKkdKkdJadJadJadTOdUBdUBdUBdUBdUBdUBdUBdUBdUBdUBdUBebbeaidUBdUBdUBdUBdUBdUBdUBdUBdUBdTOdTOdJadJaedOedOedOedOedOedOedOeglegmegneglegmedOedOedOedOedOegoedOedOegpegqdUBdUBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadUBdUBegregaegsegteguegvegwegxegxegyegzedSegBegCeaidUBdUBdUBdWUdTOdJadJadKkdKkdKkdKkdKkdKkdKkdJadJadJadKkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadMndMndMndMndMndMndMndMndMndMndMndMndMndMndMndKkdKkdTOdTOdUBdUBeexegfefoeggeghegiegjegkefoeexeexeexeexeexeexebbeaidUBdUBdUBdUBdUBdUBdUBdUBdTOdTOdTOdJadJadJadJadJadKkdKkdKkdKkdKkdKkdKkdJadJadJadTOdUBdUBdUBdUBdUBdUBdUBdUBdUBdUBdUBebbeaidUBdUBdUBdUBdUBdUBdUBdUBdUBdTOdTOdJadJaedOedOedOedOedOedOedOeglegmegneglegmedOedOedOedOedOegoedOedOegpegqdUBdUBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadUBdUBegregaegsegteguegvccBegxegxegyegzedSegBegCeaidUBdUBdUBdWUdTOdJadJadKkdKkdKkdKkdKkdKkdKkdJadJadJadKkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadMndMndMndMndMndMndMndMndMndMndMndKkdKkdJadTOdUBdUBeexegDeePegFefqegGegHegIegJegKegLegMegNegOegPecgecheaGeaGeaGeaGeaGeaBdUBdUBdUBdUBdTOdTOdTOdJadJadJadJadJadKkdKkdKkdJadJadJadJadTOdTOdUBdUBeceeaGeaGeaGeaGeaGeaGeaGeaGecgecheaGeaGeaGeaGeaBdUBdUBdUBdUBdUBdTOdJadJadJadJadJaedOeeXegRegSefCefXegTefDefXefQegUegVegWefDefXefCegYegZehaeeHeeIehbehbehbehbehbehbehbehbehcehcehcehcehcehcehcefZehdeheehfegtehgehhehiehjegxegxehkehlehmehnehoehpdUBdUBdUBdWUdTOdJadJadKkdKkdKkdKkdKkdKkdJadJadJadKkdKkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadMndMndMndMndKkdKkdJadTOdUBdUBeexeexeexeexeexehqehrehseexeexehteexeexeexeexeadeafdUBdUBdUBdUBdUBeardUBdUBdUBdUBdTOdUBdTOdTOdJadJadJadJadJadJadJadJadJadJadTOdTOdUBdUBdUBeardUBdUBdUBdUBdUBdUBdUBdUBeadeafdUBdUBdUBdUBeardUBdUBdUBdUBdUBdTOdTOdWTdTOdTOdJaedOedOedOedOefCefXehuehvehwefSeGNehyehyehzehzehAehyehBehCehyehCehDehDehDehDehDehDehDehDehEehEehEehEehEehEehEehFehGehFehHehGehIehJehKehLehMefbehOefkefkefkegCeafdUBdUBdUBdUBdTOdTOdJadJadKkdKkdKkdKkdKkdJadJadJadKkdKkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadMndMndKkdKkdJadTOdTOdUBdUBdUBdUBdUBeexehPehQehRefheexehTehUdXPdUBdUBdUBdUBdUBeatdUBdUBdUBeaAeaGeaGeaBdUBdUBdUBdUBdTOdJadJadJadJadJadJadJadJadJadJadTOdUBdUBeceeaGecfdUBdUBdUBdUBdTOdUBdUBeatdUBdUBdUBdUBdUBdUBeardUBdUBdUBdUBdUBdUBdUBeegdUBdTOdTOdTOdTOdTOedOefCehVehWehXehXehWehYehZeiaehXehXeibehWefEeideieeifeigeigeigeigeigeigeigeigeiheiheiheiheiheiheiieijeikeileimeineioeipeiqefYefYefYefYefYefYefYefYeireiseiteisdXPdWUdTOdJadJadKkdKkdKkdKkdJadJadJadJadKkdKkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/nano/templates/teleporter_console.tmpl b/nano/templates/teleporter_console.tmpl index 4b803dd79d1..c101b1b833c 100644 --- a/nano/templates/teleporter_console.tmpl +++ b/nano/templates/teleporter_console.tmpl @@ -28,7 +28,7 @@ Used In File(s): \code\game\machinery\teleporter.dm
{{:helper.link('Get target from memory', 'arrowthickstop-1-s', {'locked': 1}, data.locked ? '' : 'disabled')}}
-
{{:helper.link('Eject SPS device', 'eject', {'eject': 1}, data.locked ? '' : 'disabled')}}
+
{{:helper.link('Eject GPS device', 'eject', {'eject': 1}, data.locked ? '' : 'disabled')}}
{{:helper.link('Calibrate hub', 'arrow-4-diag', {'calibrate': 1}, data.target == 'None' ? 'disabled' : '')}}
diff --git a/nano/templates/telescience_console.tmpl b/nano/templates/telescience_console.tmpl deleted file mode 100644 index 48f26e74728..00000000000 --- a/nano/templates/telescience_console.tmpl +++ /dev/null @@ -1,31 +0,0 @@ - -

Telescience Console

-
-
Coordinates:
-
- {{:helper.link('X: ' + data.coordx, 'gear', {'setx': 1})}} - {{:helper.link('Y: ' + data.coordy, 'gear', {'sety': 1})}} - {{:helper.link('Z: ' + data.coordz, 'gear', {'setz': 1})}} -
-
-
-
Controls:
-
- {{:helper.link('Send', 'gear', {'send': 1}, null, (data.coordx != 'Unset' && data.coordy != 'Unset' && data.coordz != 'Unset') ? '' : 'disabled')}} - {{:helper.link('Receive', 'gear', {'receive': 1}, null, (data.coordx != 'Unset' && data.coordy != 'Unset' && data.coordz != 'Unset') ? '' : 'disabled')}} - {{:helper.link('Recalibrate', 'gear', {'recal': 1})}} -
-
-{{if data.sps}} -

Space Positioning System

-
-
Options:
-
- {{:helper.link('Eject SPS', 'eject', {'ejectSPS': 1})}} - {{:helper.link('Set SPS Memory', 'arrowstop-1-n', {'setMemory': 1})}} -
-
-{{/if}} diff --git a/paradise.dme b/paradise.dme index 2689cc3ae6a..b99b8aeeceb 100644 --- a/paradise.dme +++ b/paradise.dme @@ -427,7 +427,6 @@ #include "code\game\machinery\supply_display.dm" #include "code\game\machinery\syndicatebeacon.dm" #include "code\game\machinery\syndicatebomb.dm" -#include "code\game\machinery\telepad.dm" #include "code\game\machinery\teleporter.dm" #include "code\game\machinery\transformer.dm" #include "code\game\machinery\turrets.dm" @@ -485,7 +484,6 @@ #include "code\game\machinery\computer\store.dm" #include "code\game\machinery\computer\syndicate_specops_shuttle.dm" #include "code\game\machinery\computer\telecrystalconsoles.dm" -#include "code\game\machinery\computer\telescience.dm" #include "code\game\machinery\computer\xenos_shuttle.dm" #include "code\game\machinery\doors\airlock.dm" #include "code\game\machinery\doors\airlock_control.dm" @@ -589,7 +587,6 @@ #include "code\game\objects\effects\spawners\vaultspawner.dm" #include "code\game\objects\items\apc_frame.dm" #include "code\game\objects\items\blueprints.dm" -#include "code\game\objects\items\bluespace_crystal.dm" #include "code\game\objects\items\bodybag.dm" #include "code\game\objects\items\candle.dm" #include "code\game\objects\items\contraband.dm" @@ -604,7 +601,6 @@ #include "code\game\objects\items\devices\debugger.dm" #include "code\game\objects\items\devices\flash.dm" #include "code\game\objects\items\devices\flashlight.dm" -#include "code\game\objects\items\devices\gps.dm" #include "code\game\objects\items\devices\handtv.dm" #include "code\game\objects\items\devices\laserpointer.dm" #include "code\game\objects\items\devices\lightreplacer.dm" @@ -673,7 +669,6 @@ #include "code\game\objects\items\weapons\paiwire.dm" #include "code\game\objects\items\weapons\power_cells.dm" #include "code\game\objects\items\weapons\RCD.dm" -#include "code\game\objects\items\weapons\RCS.dm" #include "code\game\objects\items\weapons\RSF.dm" #include "code\game\objects\items\weapons\scrolls.dm" #include "code\game\objects\items\weapons\shards.dm" @@ -1534,6 +1529,10 @@ #include "code\modules\surgery\ribcage.dm" #include "code\modules\surgery\robolimbs.dm" #include "code\modules\surgery\surgery.dm" +#include "code\modules\telesci\bscrystal.dm" +#include "code\modules\telesci\gps.dm" +#include "code\modules\telesci\telepad.dm" +#include "code\modules\telesci\telesci_computer.dm" #include "code\modules\vehicles\ambulance.dm" #include "code\modules\vehicles\cargo_train.dm" #include "code\modules\vehicles\janicart.dm"