diff --git a/baystation12.dme b/baystation12.dme index f0a68647ed..669fe0408a 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -463,7 +463,6 @@ #include "code\game\objects\objs.dm" #include "code\game\objects\structures.dm" #include "code\game\objects\weapons.dm" -#include "code\game\objects\closets\walllocker.dm" #include "code\game\objects\effects\aliens.dm" #include "code\game\objects\effects\bump_teleporter.dm" #include "code\game\objects\effects\chemsmoke.dm" @@ -683,6 +682,7 @@ #include "code\game\objects\structures\crates_lockers\closets\malfunction.dm" #include "code\game\objects\structures\crates_lockers\closets\syndicate.dm" #include "code\game\objects\structures\crates_lockers\closets\utility_closets.dm" +#include "code\game\objects\structures\crates_lockers\closets\walllocker.dm" #include "code\game\objects\structures\crates_lockers\closets\wardrobe.dm" #include "code\game\objects\structures\crates_lockers\closets\secure\bar.dm" #include "code\game\objects\structures\crates_lockers\closets\secure\cargo.dm" diff --git a/code/ATMOSPHERICS/datum_pipeline.dm b/code/ATMOSPHERICS/datum_pipeline.dm index aa4473babd..fd933bf94d 100644 --- a/code/ATMOSPHERICS/datum_pipeline.dm +++ b/code/ATMOSPHERICS/datum_pipeline.dm @@ -205,9 +205,15 @@ datum/pipeline var/gas_density = air.total_moles/air.volume thermal_conductivity *= min(gas_density / ( RADIATOR_OPTIMUM_PRESSURE/(R_IDEAL_GAS_EQUATION*T20C) ), 1) - //if the h/e pipes radiate less than the AVERAGE_SOLAR_RADIATION, then they will heat up, otherwise they will cool down. It turns out the critical temperature is -26 C - var/heat_gain = surface*(AVERAGE_SOLAR_RADIATION - STEFAN_BOLTZMANN_CONSTANT*thermal_conductivity*(air.temperature - COSMIC_RADIATION_TEMPERATURE) ** 4) + // We only get heat from the star on the exposed surface area. + // If the HE pipes gain more energy from AVERAGE_SOLAR_RADIATION than they can radiate, then they have a net heat increase. + var/heat_gain = AVERAGE_SOLAR_RADIATION * RADIATOR_EXPOSED_SURFACE_AREA * thermal_conductivity + + // Previously, the temperature would enter equilibrium at 26C or 294K. + // Only would happen if both sides (all 2 square meters of surface area) were exposed to sunlight. We now assume it aligned edge on. + // It currently should stabilise at 85K or -183C. + heat_gain -= surface * STEFAN_BOLTZMANN_CONSTANT * thermal_conductivity * (air.temperature - COSMIC_RADIATION_TEMPERATURE) ** 4 air.add_thermal_energy(heat_gain) if(network) - network.update = 1 \ No newline at end of file + network.update = 1 diff --git a/code/WorkInProgress/Ported/policetape.dm b/code/WorkInProgress/Ported/policetape.dm index a4d2c31bdc..4425a9713b 100644 --- a/code/WorkInProgress/Ported/policetape.dm +++ b/code/WorkInProgress/Ported/policetape.dm @@ -98,8 +98,8 @@ //is_blocked_turf(var/turf/T) usr << "\blue You finish placing the [src]." //Git Test -/obj/item/taperoll/afterattack(var/atom/A, mob/user as mob) - if (istype(A, /obj/machinery/door/airlock)) +/obj/item/taperoll/afterattack(var/atom/A, mob/user as mob, proximity) + if (proximity && istype(A, /obj/machinery/door/airlock)) var/turf/T = get_turf(A) var/obj/item/tape/P = new tape_type(T.x,T.y,T.z) P.loc = locate(T.x,T.y,T.z) diff --git a/code/WorkInProgress/computer3/computers/crew.dm b/code/WorkInProgress/computer3/computers/crew.dm index 170bd92607..836500a344 100644 --- a/code/WorkInProgress/computer3/computers/crew.dm +++ b/code/WorkInProgress/computer3/computers/crew.dm @@ -35,7 +35,7 @@ var/life_status = "[H.stat > 1 ? "Deceased" : "Living"]" var/damage_report = "([dam1]/[dam2]/[dam3]/[dam4])" - log += "[H.get_id_name()]" + log += "[H.get_authentification_name()] ([H.get_assignment()])" switch(C.sensor_mode) if(1) diff --git a/code/WorkInProgress/computer3/lapvend.dm b/code/WorkInProgress/computer3/lapvend.dm index 36de9e4cfc..72531b5d8e 100644 --- a/code/WorkInProgress/computer3/lapvend.dm +++ b/code/WorkInProgress/computer3/lapvend.dm @@ -174,8 +174,9 @@ vendmode = 1 if("cancel") - relap.loc = src.loc - relap = null + if(relap) + relap.loc = src.loc + relap = null vendmode = 0 src.updateUsrDialog() diff --git a/code/__HELPERS/maths.dm b/code/__HELPERS/maths.dm index a0f4f9cb32..d9bbc18ece 100644 --- a/code/__HELPERS/maths.dm +++ b/code/__HELPERS/maths.dm @@ -1,3 +1,5 @@ +#define RAND_F(L, H) (rand()*(H-L) + L) + // Credits to Nickr5 for the useful procs I've taken from his library resource. var/const/E = 2.71828183 diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index 365865543f..a81c6f30fa 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -46,7 +46,11 @@ playsound(loc, hitsound, 50, 1, -1) return hit else - user.visible_message("[M] has been [pick(attack_verb)] with [src] by [user]!") + if(attack_verb.len) + user.visible_message("[M] has been [pick(attack_verb)] with [src] by [user]!") + else + user.visible_message("[M] has been attacked with [src] by [user]!") + if (hitsound) playsound(loc, hitsound, 50, 1, -1) switch(damtype) diff --git a/code/controllers/communications.dm b/code/controllers/communications.dm index a0d9067038..b4b0eb4393 100644 --- a/code/controllers/communications.dm +++ b/code/controllers/communications.dm @@ -307,7 +307,7 @@ var/global/datum/controller/radio/radio_controller //1 = radio transmission //2 = subspace transmission - var/data = list() + var/list/data = list() var/encryption var/frequency = 0 diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm index e666a03653..e3c9ff8c86 100644 --- a/code/datums/datumvars.dm +++ b/code/datums/datumvars.dm @@ -866,6 +866,7 @@ client return var/new_organ = input("Please choose an organ to add.","Organ",null) as null|anything in typesof(/datum/organ/internal)-/datum/organ/internal + if(!new_organ) return if(!M) usr << "Mob doesn't exist anymore" diff --git a/code/defines/obj.dm b/code/defines/obj.dm index 0c971df260..390add6394 100644 --- a/code/defines/obj.dm +++ b/code/defines/obj.dm @@ -173,10 +173,11 @@ using /obj/effect/datacore/proc/manifest_inject( ), or manifest_insert( ) */ var/global/list/PDA_Manifest = list() +var/global/ManifestJSON /obj/effect/datacore/proc/get_manifest_json() if(PDA_Manifest.len) - return PDA_Manifest + return var/heads[0] var/sec[0] var/eng[0] @@ -247,7 +248,8 @@ var/global/list/PDA_Manifest = list() "bot" = bot,\ "misc" = misc\ ) - return PDA_Manifest + ManifestJSON = list2json(PDA_Manifest) + return diff --git a/code/defines/procs/admin.dm b/code/defines/procs/admin.dm index 44d79a3893..abf4c97dd3 100644 --- a/code/defines/procs/admin.dm +++ b/code/defines/procs/admin.dm @@ -1,7 +1,7 @@ proc/log_and_message_admins(var/message as text) - log_admin("[usr]([usr.ckey]) " + message) - message_admins("[usr]([usr.ckey]) " + message) + log_admin(usr ? "[usr]([usr.ckey]) [message]" : "EVENT [message]") + message_admins(usr ? "[usr]([usr.ckey]) [message]" : "EVENT [message]") proc/admin_log_and_message_admins(var/message as text) - log_admin("[key_name(usr)] " + message) - message_admins("[key_name_admin(usr)] " + message, 1) \ No newline at end of file + log_admin(usr ? "[key_name(usr)] [message]" : "EVENT [message]") + message_admins(usr ? "[key_name(usr)] [message]" : "EVENT [message]", 1) diff --git a/code/defines/procs/hud.dm b/code/defines/procs/hud.dm index 04afb6c63e..be678b8397 100644 --- a/code/defines/procs/hud.dm +++ b/code/defines/procs/hud.dm @@ -12,7 +12,7 @@ proc/process_med_hud(var/mob/M, var/local_scanner, var/mob/Alt) if(P.Mob.see_invisible < patient.invisibility) continue - if(!(local_scanner || hassensorlevel(P, SUIT_SENSOR_VITAL))) + if(!(local_scanner || hassensorlevel(patient, SUIT_SENSOR_VITAL))) continue P.Client.images += patient.hud_list[HEALTH_HUD] diff --git a/code/defines/procs/radio.dm b/code/defines/procs/radio.dm index 0cbd009076..1e0e045928 100644 --- a/code/defines/procs/radio.dm +++ b/code/defines/procs/radio.dm @@ -47,7 +47,7 @@ /proc/get_receiver_reception(var/receiver, var/datum/signal/signal) if(receiver && check_signal(signal)) var/turf/pos = get_turf(receiver) - if(pos.z in signal.data["level"]) + if(pos && (pos.z in signal.data["level"])) return TELECOMMS_RECEPTION_RECEIVER return TELECOMMS_RECEPTION_NONE diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 30f04da4b1..be45d49d97 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -195,7 +195,10 @@ its easier to just keep the beam vertical. f_name = "some " else f_name = "a " - f_name += "blood-stained [name][infix]!" + if(blood_color != "#030303") + f_name += "blood-stained [name][infix]!" + else + f_name += "oil-stained [name][infix]." user << "\icon[src] That's [f_name] [suffix]" diff --git a/code/game/gamemodes/changeling/changeling_powers.dm b/code/game/gamemodes/changeling/changeling_powers.dm index d8568c8f60..5dcc891fa9 100644 --- a/code/game/gamemodes/changeling/changeling_powers.dm +++ b/code/game/gamemodes/changeling/changeling_powers.dm @@ -657,7 +657,7 @@ var/list/datum/dna/hivemind_bank = list() src << "We return our vocal glands to their original location." return - var/mimic_voice = input("Enter a name to mimic.", "Mimic Voice", null) as text + var/mimic_voice = stripped_input(usr, "Enter a name to mimic.", "Mimic Voice", null, MAX_NAME_LEN) if(!mimic_voice) return @@ -856,4 +856,4 @@ var/list/datum/dna/hivemind_bank = list() changeling.absorbed_species += T.species.name feedback_add_details("changeling_powers","ED") - return 1 \ No newline at end of file + return 1 diff --git a/code/game/gamemodes/epidemic/epidemic.dm b/code/game/gamemodes/epidemic/epidemic.dm index 4a0712c712..9964a37813 100644 --- a/code/game/gamemodes/epidemic/epidemic.dm +++ b/code/game/gamemodes/epidemic/epidemic.dm @@ -113,7 +113,7 @@ world.Reboot() var/datum/disease2/disease/lethal = new - lethal.makerandom(1) + lethal.makerandom(3) lethal.infectionchance = 5 // the more doctors, the more will be infected diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index e90b65a333..fca51edf83 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -151,8 +151,6 @@ var/list/area/escape_locations = list(/area/shuttle/escape/centcom, /area/shuttle/escape_pod1/centcom, /area/shuttle/escape_pod2/centcom, /area/shuttle/escape_pod3/centcom, /area/shuttle/escape_pod5/centcom) - var/pltext = "Player list:" - for(var/mob/M in player_list) if(M.client) clients++ @@ -187,7 +185,6 @@ text += " ([escaped_total>0 ? escaped_total : "none"] [emergency_shuttle.evac ? "escaped" : "transferred"]) and [ghosts] ghosts.
" else text += "There were no survivors ([ghosts] ghosts)." - text += "
" + pltext //print player list after the general info world << text if(clients > 0) @@ -553,7 +550,7 @@ proc/get_nt_opposed() var/list/refined_log = new() for(var/datum/uplink_item/UI in H.purchase_log) var/obj/I = new UI.path - refined_log.Add("[H.purchase_log[UI]]x\icon[I][I.name]") + refined_log.Add("[H.purchase_log[UI]]x\icon[I][UI.name]") del(I) purchases = english_list(refined_log, nothing_text = "") if(uplink_true) diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm index 8fd46fc897..c2c6bb9475 100644 --- a/code/game/gamemodes/nuclear/nuclear.dm +++ b/code/game/gamemodes/nuclear/nuclear.dm @@ -11,7 +11,7 @@ var/global/list/turf/synd_spawn = list() /datum/game_mode/nuclear name = "mercenary" - config_tag = "nuclear" + config_tag = "mercenary" required_players = 15 required_players_secret = 25 // 25 players - 5 players to be the nuke ops = 20 players remaining required_enemies = 1 diff --git a/code/game/gamemodes/setupgame.dm b/code/game/gamemodes/setupgame.dm index 9c1b30bc89..bea6029b46 100644 --- a/code/game/gamemodes/setupgame.dm +++ b/code/game/gamemodes/setupgame.dm @@ -91,7 +91,7 @@ //REMOTEVIEWBLOCK = getAssignedBlock("REMOTEVIEW", numsToAssign, DNA_HARDER_BOUNDS) //REGENERATEBLOCK = getAssignedBlock("REGENERATE", numsToAssign, DNA_HARDER_BOUNDS) //INCREASERUNBLOCK = getAssignedBlock("INCREASERUN", numsToAssign, DNA_HARDER_BOUNDS) - //REMOTETALKBLOCK = getAssignedBlock("REMOTETALK", numsToAssign, DNA_HARDER_BOUNDS) + REMOTETALKBLOCK = getAssignedBlock("REMOTETALK", numsToAssign, DNA_HARDER_BOUNDS) //MORPHBLOCK = getAssignedBlock("MORPH", numsToAssign, DNA_HARDER_BOUNDS) //COLDBLOCK = getAssignedBlock("COLD", numsToAssign) //HALLUCINATIONBLOCK = getAssignedBlock("HALLUCINATION", numsToAssign) diff --git a/code/game/machinery/bots/medbot.dm b/code/game/machinery/bots/medbot.dm index 6d3842f879..65a40289d0 100644 --- a/code/game/machinery/bots/medbot.dm +++ b/code/game/machinery/bots/medbot.dm @@ -281,9 +281,6 @@ src.speak(message) src.visible_message("[src] points at [C.name]!") src.last_newpatient_speak = world.time - if(declare_treatment) - var/area/location = get_area(src) - broadcast_medical_hud_message("[src.name] is treating [C] in [location]", src) break else continue @@ -438,6 +435,10 @@ src.patient.reagents.add_reagent(reagent_id,src.injection_amount) visible_message("\red [src] injects [src.patient] with the syringe!") + if(declare_treatment) + var/area/location = get_area(src) + broadcast_medical_hud_message("[src.name] is treating [C] in [location]", src) + src.icon_state = "medibot[src.on]" src.currently_healing = 0 return diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index 8fe3387467..d631ca46df 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -36,6 +36,9 @@ wires = new(src) assembly = new(src) assembly.state = 4 + + invalidateCameraCache() + /* // Use this to look for cameras that have the same c_tag. for(var/obj/machinery/camera/C in cameranet.cameras) var/list/tempnetwork = C.network&src.network @@ -61,6 +64,7 @@ /obj/machinery/camera/emp_act(severity) if(!isEmpProof()) if(prob(100/severity)) + invalidateCameraCache() stat |= EMPED SetLuminosity(0) kick_viewers() @@ -71,7 +75,7 @@ stat &= ~EMPED cancelCameraAlarm() update_icon() - + invalidateCameraCache() ..() /obj/machinery/camera/bullet_act(var/obj/item/projectile/P) @@ -118,7 +122,7 @@ destroy() /obj/machinery/camera/attackby(obj/W as obj, mob/living/user as mob) - + invalidateCameraCache() // DECONSTRUCTION if(isscrewdriver(W)) //user << "You start to [panel_open ? "close" : "open"] the camera's panel." @@ -199,6 +203,7 @@ //legacy support, if choice is != 1 then just kick viewers without changing status kick_viewers() else + invalidateCameraCache() set_status( !src.status ) if (!(src.status)) visible_message("\red [user] has deactivated [src]!") @@ -218,6 +223,7 @@ //Used when someone breaks a camera /obj/machinery/camera/proc/destroy() + invalidateCameraCache() stat |= BROKEN kick_viewers() triggerCameraAlarm() @@ -232,6 +238,7 @@ /obj/machinery/camera/proc/set_status(var/newstatus) if (status != newstatus) status = newstatus + invalidateCameraCache() // now disconnect anyone using the camera //Apparently, this will disconnect anyone even if the camera was re-activated. //I guess that doesn't matter since they couldn't use it anyway? diff --git a/code/game/machinery/camera/tracking.dm b/code/game/machinery/camera/tracking.dm index f274a1d07e..4e64b9a660 100644 --- a/code/game/machinery/camera/tracking.dm +++ b/code/game/machinery/camera/tracking.dm @@ -236,7 +236,11 @@ return 1 /proc/trackable(var/mob/living/M) - return near_camera(M) || (M.loc.z in config.station_levels && hassensorlevel(M, SUIT_SENSOR_TRACKING)) + var/turf/T = get_turf(M) + if(T && (T.z in config.station_levels) && hassensorlevel(M, SUIT_SENSOR_TRACKING)) + return 1 + + return near_camera(M) /obj/machinery/camera/attack_ai(var/mob/living/silicon/ai/user as mob) if (!istype(user)) diff --git a/code/game/machinery/computer/camera.dm b/code/game/machinery/computer/camera.dm index 0a7f27d701..bf1b1afab9 100644 --- a/code/game/machinery/computer/camera.dm +++ b/code/game/machinery/computer/camera.dm @@ -1,5 +1,8 @@ //This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 +/proc/invalidateCameraCache() + for(var/obj/machinery/computer/security/s in world) + s.camera_cache = null /obj/machinery/computer/security name = "security camera monitor" @@ -10,6 +13,7 @@ var/list/network = list("SS13") var/mapping = 0//For the overview file, interesting bit of code. circuit = /obj/item/weapon/circuitboard/security + var/camera_cache = null attack_ai(var/mob/user as mob) @@ -32,29 +36,46 @@ data["current"] = null - var/list/L = list() - for (var/obj/machinery/camera/C in cameranet.cameras) - if(can_access_camera(C)) - L.Add(C) + if(isnull(camera_cache)) + var/list/L = list() + for (var/obj/machinery/camera/C in cameranet.cameras) + if(can_access_camera(C)) + L.Add(C) + camera_sort(L) - camera_sort(L) + var/cameras[0] + for(var/obj/machinery/camera/C in L) + var/cam[0] + cam["name"] = sanitize(C.c_tag) + cam["deact"] = !C.can_use() + cam["camera"] = "\ref[C]" + cam["x"] = C.x + cam["y"] = C.y + cam["z"] = C.z - var/cameras[0] - for(var/obj/machinery/camera/C in L) - var/cam[0] - cam["name"] = C.c_tag - cam["deact"] = !C.can_use() - cam["camera"] = "\ref[C]" - cam["x"] = C.x - cam["y"] = C.y - cam["z"] = C.z + cameras[++cameras.len] = cam - cameras[++cameras.len] = cam + if(C == current) + data["current"] = cam + + var/list/camera_list = list("cameras" = cameras) + camera_cache=list2json(camera_list) + + else + if(current) + var/cam[0] + cam["name"] = current.c_tag + cam["deact"] = !current.can_use() + cam["camera"] = "\ref[current]" + cam["x"] = current.x + cam["y"] = current.y + cam["z"] = current.z - if(C == current) data["current"] = cam + - data["cameras"] = cameras + if(ui) + ui.load_cached_data(camera_cache) ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) if (!ui) @@ -65,6 +86,7 @@ // adding a template with the key "mapHeader" replaces the map header content ui.add_template("mapHeader", "sec_camera_map_header.tmpl") + ui.load_cached_data(camera_cache) ui.set_initial_data(data) ui.open() ui.set_auto_update(1) diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index f187957f5b..5285235fbf 100644 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -496,8 +496,14 @@ return emergency_shuttle.call_transfer() - log_game("[key_name(user)] has called the shuttle.") - message_admins("[key_name_admin(user)] has called the shuttle.", 1) + + //delay events in case of an autotransfer + if (isnull(user)) + event_manager.delay_events(EVENT_LEVEL_MODERATE, 9000) //15 minutes + event_manager.delay_events(EVENT_LEVEL_MAJOR, 9000) + + log_game("[user? key_name(user) : "Autotransfer"] has called the shuttle.") + message_admins("[user? key_name_admin(user) : "Autotransfer"] has called the shuttle.", 1) return diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 8d166b4dae..62e89cf03d 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -876,6 +876,7 @@ About the new airlock wires panel: src.welded = 1 else src.welded = null + playsound(src, 'sound/items/Welder.ogg', 100, 1) src.update_icon() return else @@ -904,7 +905,7 @@ About the new airlock wires panel: beingcrowbarred = 1 //derp, Agouri else beingcrowbarred = 0 - if( beingcrowbarred && src.p_open && (operating == -1 || (src.locked && welded && !src.arePowerSystemsOn() && BROKEN) || (density && welded && operating != 1 && !src.arePowerSystemsOn() && !src.locked)) ) + if( beingcrowbarred && src.p_open && (operating < 0 || (!operating && welded && !src.arePowerSystemsOn() && density && (!src.locked || (stat & BROKEN)))) ) playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1) user.visible_message("[user] removes the electronics from the airlock assembly.", "You start to remove electronics from the airlock assembly.") if(do_after(user,40)) @@ -924,7 +925,7 @@ About the new airlock wires panel: da.created_name = src.name da.update_state() - if(operating == -1) + if(operating == -1 || (stat & BROKEN)) new /obj/item/weapon/circuitboard/broken(src.loc) operating = 0 else diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 482be83b3d..1749fc1b4a 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -190,7 +190,7 @@ /obj/machinery/door/attackby(obj/item/I as obj, mob/user as mob) if(istype(I, /obj/item/device/detective_scanner)) return - if(src.operating || isrobot(user)) return //borgs can't attack doors open because it conflicts with their AI-like interaction with them. + if(src.operating > 0 || isrobot(user)) return //borgs can't attack doors open because it conflicts with their AI-like interaction with them. src.add_fingerprint(user) if(!Adjacent(user)) user = null @@ -252,13 +252,6 @@ repairing = null return - if(src.density && (operable() && istype(I, /obj/item/weapon/card/emag))) - flick("door_spark", src) - sleep(6) - open() - operating = -1 - return 1 - //psa to whoever coded this, there are plenty of objects that need to call attack() on doors without bludgeoning them. if(src.density && istype(I, /obj/item/weapon) && user.a_intent == "hurt" && !istype(I, /obj/item/weapon/card)) var/obj/item/weapon/W = I @@ -271,6 +264,15 @@ take_damage(W.force) return + if(src.operating) return + + if(src.density && (operable() && istype(I, /obj/item/weapon/card/emag))) + flick("door_spark", src) + sleep(6) + open() + operating = -1 + return 1 + if(src.allowed(user) && operable()) if(src.density) open() diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm index 264fecbc2b..55b392feff 100644 --- a/code/game/machinery/doors/firedoor.dm +++ b/code/game/machinery/doors/firedoor.dm @@ -186,13 +186,14 @@ add_fingerprint(user) if(operating) return//Already doing something. - if(istype(C, /obj/item/weapon/weldingtool)) + if(istype(C, /obj/item/weapon/weldingtool) && !repairing) var/obj/item/weapon/weldingtool/W = C if(W.remove_fuel(0, user)) blocked = !blocked user.visible_message("\The [user] [blocked ? "welds" : "unwelds"] \the [src] with \a [W].",\ "You [blocked ? "weld" : "unweld"] \the [src] with \the [W].",\ "You hear something being welded.") + playsound(src, 'sound/items/Welder.ogg', 100, 1) update_icon() return @@ -203,7 +204,7 @@ update_icon() return - if(blocked && istype(C, /obj/item/weapon/crowbar)) + if(blocked && istype(C, /obj/item/weapon/crowbar) && !repairing) if(!hatch_open) user << "You must open the maintenance hatch first!" else @@ -215,19 +216,24 @@ user.visible_message("[user] has removed the electronics from \the [src].", "You have removed the electronics from [src].") - new/obj/item/weapon/airalarm_electronics(src.loc) + if (stat & BROKEN) + new /obj/item/weapon/circuitboard/broken(src.loc) + else + new/obj/item/weapon/airalarm_electronics(src.loc) + var/obj/structure/firedoor_assembly/FA = new/obj/structure/firedoor_assembly(src.loc) FA.anchored = 1 FA.density = 1 + FA.wired = 1 FA.update_icon() del(src) return if(blocked) - user << "\The [src] is welded solid!" + user << "\The [src] is welded shut!" return - if(istype(C, /obj/item/weapon/crowbar) || istype(C,/obj/item/weapon/melee/energy/blade) || istype(C,/obj/item/weapon/twohanded/fireaxe)) + if(istype(C, /obj/item/weapon/crowbar) || istype(C,/obj/item/weapon/twohanded/fireaxe)) if(operating) return @@ -262,6 +268,8 @@ spawn(0) close() return + + return ..() // CHECK PRESSURE /obj/machinery/door/firedoor/process() diff --git a/code/game/machinery/doors/firedoor_assembly.dm b/code/game/machinery/doors/firedoor_assembly.dm index 017e758ef3..435a927857 100644 --- a/code/game/machinery/doors/firedoor_assembly.dm +++ b/code/game/machinery/doors/firedoor_assembly.dm @@ -5,7 +5,8 @@ obj/structure/firedoor_assembly icon_state = "door_construction" anchored = 0 opacity = 0 - density = 0 + density = 1 + var/wired = 0 obj/structure/firedoor_assembly/update_icon() if(anchored) @@ -14,7 +15,28 @@ obj/structure/firedoor_assembly/update_icon() icon_state = "door_construction" obj/structure/firedoor_assembly/attackby(C as obj, mob/user as mob) - if(istype(C, /obj/item/weapon/airalarm_electronics)) + if(istype(C, /obj/item/stack/cable_coil) && !wired && anchored) + var/obj/item/stack/cable_coil/cable = C + if (cable.get_amount() < 1) + user << "You need one length of coil to wire \the [src]." + return + user.visible_message("[user] wires \the [src].", "You start to wire \the [src].") + if(do_after(user, 40) && !wired && anchored) + if (cable.use(1)) + wired = 1 + user << "You wire \the [src]." + + else if(istype(C, /obj/item/weapon/wirecutters) && wired ) + playsound(src.loc, 'sound/items/Wirecutter.ogg', 100, 1) + user.visible_message("[user] cuts the wires from \the [src].", "You start to cut the wires from \the [src].") + + if(do_after(user, 40)) + if(!src) return + user << "You cut the wires!" + new/obj/item/stack/cable_coil(src.loc, 1) + wired = 0 + + else if(istype(C, /obj/item/weapon/airalarm_electronics) && wired) if(anchored) playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) user.visible_message("[user] has inserted a circuit into \the [src]!", @@ -26,7 +48,6 @@ obj/structure/firedoor_assembly/attackby(C as obj, mob/user as mob) user << "You must secure \the [src] first!" else if(istype(C, /obj/item/weapon/wrench)) anchored = !anchored - density = !density playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) user.visible_message("[user] has [anchored ? "" : "un" ]secured \the [src]!", "You have [anchored ? "" : "un" ]secured \the [src]!") diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index 1a3cce2cf9..4d192c5dd9 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -230,6 +230,10 @@ Class Procs: /mob/living/silicon/ai/canUseTopic(atom/movable/M) if(stat) return + // Prevents the AI from using Topic on admin levels (by for example viewing through the court/thunderdome cameras) + // unless it's on the same level as the object it's interacting with. + if(!(z == M.z || M.z in config.player_levels)) + return //stop AIs from leaving windows open and using then after they lose vision //apc_override is needed here because AIs use their own APC when powerless if(cameranet && !cameranet.checkTurfVis(get_turf(M)) && !apc_override) diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm index 603fc9fe98..7497edd695 100644 --- a/code/game/machinery/portable_turret.dm +++ b/code/game/machinery/portable_turret.dm @@ -154,6 +154,12 @@ user << "There seems to be a firewall preventing you from accessing this device." return 0 + if (get_dist(src, user) > 0 && !issilicon(user)) + user << "You are too far away." + user.unset_machine() + user << browse(null, "window=turretid") + return 0 + if(locked && !issilicon(user)) user << "Access denied." return 0 @@ -175,7 +181,6 @@ Automatic Portable Turret Installation

Status: []
Behaviour controls are [locked ? "locked" : "unlocked"]"}, - "[on ? "On" : "Off"]" ) if(!locked || issilicon(user)) diff --git a/code/game/machinery/status_display_ai.dm b/code/game/machinery/status_display_ai.dm index 4077c6d56d..0b7371c1b0 100644 --- a/code/game/machinery/status_display_ai.dm +++ b/code/game/machinery/status_display_ai.dm @@ -43,6 +43,7 @@ var/list/ai_status_emotions = list( if(istype(M, /obj/machinery/ai_status_display)) var/obj/machinery/ai_status_display/AISD = M AISD.emotion = emote + AISD.update() //if Friend Computer, change ALL displays else if(istype(M, /obj/machinery/status_display)) @@ -72,6 +73,9 @@ var/list/ai_status_emotions = list( var/emote = input("Please, select a status!", "AI Status", null, null) in ai_emotions src.emotion = emote +/obj/machinery/ai_status_display/process() + return + /obj/machinery/ai_status_display/proc/update() if(mode==0) //Blank overlays.Cut() @@ -91,3 +95,11 @@ var/list/ai_status_emotions = list( if(overlays.len) overlays.Cut() overlays += image('icons/obj/status_display.dmi', icon_state=picture_state) + +/obj/machinery/ai_status_display/power_change() + ..() + if(stat & NOPOWER) + if(overlays.len) + overlays.Cut() + else + update() diff --git a/code/game/machinery/supply_display.dm b/code/game/machinery/supply_display.dm index aacd770d79..97e747c0db 100644 --- a/code/game/machinery/supply_display.dm +++ b/code/game/machinery/supply_display.dm @@ -3,7 +3,7 @@ /obj/machinery/status_display/supply_display/update() if(!..() && mode == STATUS_DISPLAY_CUSTOM) - message1 = "SUPPLY" + message1 = "CARGO" message2 = "" var/datum/shuttle/ferry/supply/shuttle = supply_controller.shuttle diff --git a/code/game/machinery/telecomms/telecomunications.dm b/code/game/machinery/telecomms/telecomunications.dm index 4d01598311..fe638408fc 100644 --- a/code/game/machinery/telecomms/telecomunications.dm +++ b/code/game/machinery/telecomms/telecomunications.dm @@ -64,36 +64,12 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() if(long_range_link == 0 && machine.long_range_link == 0) continue // If we're sending a copy, be sure to create the copy for EACH machine and paste the data - var/datum/signal/copy = new + var/datum/signal/copy if(copysig) - + copy = new copy.transmission_method = 2 copy.frequency = signal.frequency - // Copy the main data contents! Workaround for some nasty bug where the actual array memory is copied and not its contents. - copy.data = list( - - "mob" = signal.data["mob"], - "mobtype" = signal.data["mobtype"], - "realname" = signal.data["realname"], - "name" = signal.data["name"], - "job" = signal.data["job"], - "key" = signal.data["key"], - "vmessage" = signal.data["vmessage"], - "vname" = signal.data["vname"], - "vmask" = signal.data["vmask"], - "compression" = signal.data["compression"], - "message" = signal.data["message"], - "connection" = signal.data["connection"], - "radio" = signal.data["radio"], - "slow" = signal.data["slow"], - "traffic" = signal.data["traffic"], - "type" = signal.data["type"], - "server" = signal.data["server"], - "reject" = signal.data["reject"], - "level" = signal.data["level"], - "verb" = signal.data["verb"], - "language" = signal.data["language"] - ) + copy.data = signal.data.Copy() // Keep the "original" signal constant if(!signal.data["original"]) @@ -101,10 +77,6 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() else copy.data["original"] = signal.data["original"] - else - del(copy) - - send_count++ if(machine.is_freq_listening(signal)) machine.traffic++ @@ -232,13 +204,13 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() else if(on) produce_heat() delay = initial(delay) - - + + /obj/machinery/telecomms/proc/produce_heat() if (!produces_heat) return - + if (!use_power) return @@ -252,11 +224,11 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() var/datum/gas_mixture/removed = env.remove(transfer_moles) if(removed) - + var/heat_produced = idle_power_usage //obviously can't produce more heat than the machine draws from it's power source if (traffic <= 0) heat_produced *= 0.30 //if idle, produce less heat. - + removed.add_thermal_energy(heat_produced) env.merge(removed) diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm index 04b8c5644a..259638458c 100644 --- a/code/game/machinery/teleporter.dm +++ b/code/game/machinery/teleporter.dm @@ -91,7 +91,7 @@ var/turf/T = get_turf(R) if (!T) continue - if(T.z == 2 || T.z > 7) + if(!(T.z in config.player_levels)) continue var/tmpname = T.loc.name if(areaindex[tmpname]) @@ -118,7 +118,12 @@ areaindex[tmpname] = 1 L[tmpname] = I - var/desc = input("Please select a location to lock in.", "Locking Computer") in L + var/desc = input("Please select a location to lock in.", "Locking Computer") in L|null + if(!desc) + return + if(get_dist(src, usr) > 1 && !issilicon(usr)) + return + src.locked = L[desc] for(var/mob/O in hearers(src, null)) O.show_message("\blue Locked In", 2) diff --git a/code/game/machinery/turret_control.dm b/code/game/machinery/turret_control.dm index ce2a3b73ad..41a98103be 100644 --- a/code/game/machinery/turret_control.dm +++ b/code/game/machinery/turret_control.dm @@ -66,15 +66,20 @@ return /obj/machinery/turretid/proc/can_use(mob/user) + if(ailock && issilicon(user)) + user << "There seems to be a firewall preventing you from accessing this device." + return 0 + if (get_dist(src, user) > 0 && !issilicon(user)) user << "You are too far away." user.unset_machine() user << browse(null, "window=turretid") return 0 - if(ailock && issilicon(user)) - user << "There seems to be a firewall preventing you from accessing this device." + if(locked && !issilicon(user)) + user << "Access denied." return 0 + return 1 /obj/machinery/turretid/attackby(obj/item/weapon/W, mob/user) @@ -124,7 +129,9 @@ if (!istype(loc, /area)) return var/area/area = loc - var/dat = "" + var/dat = text({"Status: []
+ Behaviour controls are [locked ? "locked" : "unlocked"]"}, + "[enabled ? "On" : "Off"]" ) if(!locked || issilicon(user)) dat += text({"

diff --git a/code/game/mecha/working/hoverpod.dm b/code/game/mecha/working/hoverpod.dm index 5736e00b4f..1c15bb232d 100644 --- a/code/game/mecha/working/hoverpod.dm +++ b/code/game/mecha/working/hoverpod.dm @@ -5,7 +5,7 @@ initial_icon = "engineering_pod" internal_damage_threshold = 80 step_in = 4 - step_energy_drain = 15 + step_energy_drain = 10 max_temperature = 20000 health = 150 infra_luminosity = 6 diff --git a/code/game/objects/effects/decals/Cleanable/humans.dm b/code/game/objects/effects/decals/Cleanable/humans.dm index 20dc45099c..ed996e3f1e 100644 --- a/code/game/objects/effects/decals/Cleanable/humans.dm +++ b/code/game/objects/effects/decals/Cleanable/humans.dm @@ -114,13 +114,19 @@ var/global/list/image/splatter_cache=list() amount = 2 /obj/effect/decal/cleanable/blood/drip - name = "drips of blood" - desc = "It's red." - gender = PLURAL - icon = 'icons/effects/drip.dmi' - icon_state = "1" - random_icon_states = list("1","2","3","4","5") - amount = 0 + name = "drips of blood" + desc = "It's red." + gender = PLURAL + icon = 'icons/effects/drip.dmi' + icon_state = "1" + random_icon_states = list("1","2","3","4","5") + amount = 0 + var/list/drips = list() + +/obj/effect/decal/cleanable/blood/drip/New() + ..() + spawn(1) + drips |= icon_state /obj/effect/decal/cleanable/blood/writing icon_state = "tracks" diff --git a/code/game/objects/explosion.dm b/code/game/objects/explosion.dm index c48d062e9e..32f05901b4 100644 --- a/code/game/objects/explosion.dm +++ b/code/game/objects/explosion.dm @@ -70,8 +70,12 @@ proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impa var/lighting_controller_was_processing = lighting_controller.processing //Pause the lighting updates for a bit lighting_controller.processing = 0 + + + var/approximate_intensity = (devastation_range * 3) + (heavy_impact_range * 2) + light_impact_range var/powernet_rebuild_was_deferred_already = defer_powernet_rebuild - if(defer_powernet_rebuild != 2) + // Large enough explosion. For performance reasons, powernets will be rebuilt manually + if(!defer_powernet_rebuild && (approximate_intensity > 25)) defer_powernet_rebuild = 1 if(heavy_impact_range > 1) @@ -110,9 +114,9 @@ proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impa sleep(8) if(!lighting_controller.processing) lighting_controller.processing = lighting_controller_was_processing - if(!powernet_rebuild_was_deferred_already) - if(defer_powernet_rebuild != 2) - defer_powernet_rebuild = 0 + if(!powernet_rebuild_was_deferred_already && defer_powernet_rebuild) + makepowernets() + defer_powernet_rebuild = 0 return 1 diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index ddc983a7ba..d0c52d7f59 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -35,7 +35,7 @@ var/siemens_coefficient = 1 // for electrical admittance/conductance (electrocution checks and shit) var/slowdown = 0 // How much clothing is slowing you down. Negative values speeds you up var/canremove = 1 //Mostly for Ninja code at this point but basically will not allow the item to be removed if set to 0. /N - var/armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) + var/list/armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) var/list/allowed = null //suit storage stuff. var/obj/item/device/uplink/hidden/hidden_uplink = null // All items can have an uplink hidden inside, just remember to add the triggers. var/zoomdevicename = null //name used for message when binoculars/scope is used @@ -115,12 +115,7 @@ size = "bulky" if(5.0) size = "huge" - else - //if ((CLUMSY in usr.mutations) && prob(50)) t = "funny-looking" - usr << "This is a [blood_DNA ? blood_color != "#030303" ? "bloody " : "oil-stained " : ""]\icon[src][src.name]. It is a [size] item." - if(src.desc) - usr << src.desc - return + return ..(user, distance, "", "It is a [size] item.") /obj/item/attack_hand(mob/user as mob) if (!user) return diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index b24bf75ec1..be428f4fd0 100755 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -464,7 +464,7 @@ var/global/list/obj/item/device/pda/PDAs = list() data["convo_job"] = sanitize(c["job"]) break if(mode==41) - data["manifest"] = data_core.get_manifest_json() + data_core.get_manifest_json() if(mode==3) @@ -535,12 +535,19 @@ var/global/list/obj/item/device/pda/PDAs = list() nanoUI = data // update the ui if it exists, returns null if no ui is passed/found + if(ui) + ui.load_cached_data(ManifestJSON) + ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) + if (!ui) // the ui does not exist, so we'll create a new() one - // for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm + // for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm ui = new(user, src, ui_key, "pda.tmpl", title, 520, 400) // when the ui is first opened this is the data it will use + + ui.load_cached_data(ManifestJSON) + ui.set_initial_data(data) // open the new ui window ui.open() diff --git a/code/game/objects/items/weapons/kitchen.dm b/code/game/objects/items/weapons/kitchen.dm index e0bca0c65a..21833cc212 100644 --- a/code/game/objects/items/weapons/kitchen.dm +++ b/code/game/objects/items/weapons/kitchen.dm @@ -61,6 +61,8 @@ playsound(M.loc,'sound/items/eatfood.ogg', rand(10,40), 1) overlays.Cut() return + else + ..() /obj/item/weapon/kitchen/utensil/fork name = "fork" diff --git a/code/game/objects/items/weapons/tanks/tanks.dm b/code/game/objects/items/weapons/tanks/tanks.dm index f6485f0a16..d7a05a7173 100644 --- a/code/game/objects/items/weapons/tanks/tanks.dm +++ b/code/game/objects/items/weapons/tanks/tanks.dm @@ -117,10 +117,16 @@ ui_interact(user) /obj/item/weapon/tank/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) + var/mob/living/carbon/location = null + if(istype(loc, /obj/item/weapon/rig)) // check for tanks in rigs + if(istype(loc.loc, /mob/living/carbon)) + location = loc.loc + else if(istype(loc, /mob/living/carbon)) + location = loc + var/using_internal - if(istype(loc,/mob/living/carbon)) - var/mob/living/carbon/location = loc + if(istype(location)) if(location.internal==src) using_internal = 1 @@ -133,9 +139,20 @@ data["valveOpen"] = using_internal ? 1 : 0 data["maskConnected"] = 0 - if(istype(loc,/mob/living/carbon)) - var/mob/living/carbon/location = loc - if(location.internal == src) + + if(istype(location)) + var/mask_check = 0 + + if(location.internal == src) // if tank is current internal + mask_check = 1 + else if(src in location) // or if tank is in the mobs possession + if(!location.internal) // and they do not have any active internals + mask_check = 1 + else if(istype(src.loc, /obj/item/weapon/rig) && src.loc in location) // or the rig is in the mobs possession + if(!location.internal) // and they do not have any active internals + mask_check = 1 + + if(mask_check) if(location.wear_mask && (location.wear_mask.flags & AIRTIGHT)) data["maskConnected"] = 1 else if(istype(location, /mob/living/carbon/human)) diff --git a/code/game/objects/items/weapons/tape.dm b/code/game/objects/items/weapons/tape.dm index 2d82cacaad..477bce6b32 100644 --- a/code/game/objects/items/weapons/tape.dm +++ b/code/game/objects/items/weapons/tape.dm @@ -13,7 +13,7 @@ user.put_in_hands(tape) */ -/obj/item/weapon/tape_roll/proc/stick(var/obj/item/weapon/W, mob/user as mob) +/obj/item/weapon/tape_roll/proc/stick(var/obj/item/weapon/W, mob/user) if(!istype(W, /obj/item/weapon/paper)) return @@ -30,14 +30,14 @@ w_class = 1 layer = 4 anchored = 1 //it's sticky, no you cant move it - + var/obj/item/weapon/stuck = null /obj/item/weapon/ducttape/New() ..() flags |= NOBLUDGEON -/obj/item/weapon/ducttape/examine(mob/user as mob) +/obj/item/weapon/ducttape/examine(mob/user) return stuck.examine(user) /obj/item/weapon/ducttape/proc/attach(var/obj/item/weapon/W) @@ -47,7 +47,7 @@ name = W.name + " (taped)" overlays = W.overlays -/obj/item/weapon/ducttape/attack_self(mob/user as mob) +/obj/item/weapon/ducttape/attack_self(mob/user) if(!stuck) return @@ -60,7 +60,7 @@ overlays = null del(src) -/obj/item/weapon/ducttape/afterattack(var/A, mob/user as mob, flag, params) +/obj/item/weapon/ducttape/afterattack(var/A, mob/user, flag, params) if(!in_range(user, A) || istype(A, /obj/machinery/door) || !stuck) return @@ -70,6 +70,9 @@ var/dir_offset = 0 if(target_turf != source_turf) dir_offset = get_dir(source_turf, target_turf) + if(!(dir_offset in cardinal)) + user << "You cannot reach that from here." // can only place stuck papers in cardinal directions, to + return // reduce papers around corners issue. user.drop_from_inventory(src) forceMove(source_turf) diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index a929ff7201..4aaae90a9a 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -191,7 +191,8 @@ /obj/structure/closet/attackby(obj/item/weapon/W as obj, mob/user as mob) if(src.opened) if(istype(W, /obj/item/weapon/grab)) - src.MouseDrop_T(W:affecting, user) //act like they were dragged onto the closet + var/obj/item/weapon/grab/G = W + src.MouseDrop_T(G.affecting, user) //act like they were dragged onto the closet if(istype(W,/obj/item/tk_grab)) return 0 if(istype(W, /obj/item/weapon/weldingtool)) @@ -206,6 +207,8 @@ return if(isrobot(user)) return + if(W.loc != user) // This should stop mounted modules ending up outside the module. + return usr.drop_item() if(W) W.loc = src.loc diff --git a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm index 09810842d4..a3b9f39928 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm @@ -66,12 +66,15 @@ /obj/structure/closet/secure_closet/attackby(obj/item/weapon/W as obj, mob/user as mob) if(src.opened) if(istype(W, /obj/item/weapon/grab)) + var/obj/item/weapon/grab/G = W if(src.large) - src.MouseDrop_T(W:affecting, user) //act like they were dragged onto the closet + src.MouseDrop_T(G.affecting, user) //act like they were dragged onto the closet else - user << "The locker is too small to stuff [W:affecting] into!" + user << "The locker is too small to stuff [G.affecting] into!" if(isrobot(user)) return + if(W.loc != user) // This should stop mounted modules ending up outside the module. + return user.drop_item() if(W) W.loc = src.loc diff --git a/code/game/objects/closets/walllocker.dm b/code/game/objects/structures/crates_lockers/closets/walllocker.dm similarity index 100% rename from code/game/objects/closets/walllocker.dm rename to code/game/objects/structures/crates_lockers/closets/walllocker.dm diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index 3f6f321129..4c233f24ef 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -70,6 +70,8 @@ if(opened) if(isrobot(user)) return + if(W.loc != user) // This should stop mounted modules ending up outside the module. + return user.drop_item() if(W) W.loc = src.loc diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index cd55637b35..458c5626bc 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -15,25 +15,70 @@ var/basestate var/shardtype = /obj/item/weapon/shard var/glasstype = null // Set this in subtypes. Null is assumed strange or otherwise impossible to dismantle, such as for shuttle glass. -// var/silicate = 0 // number of units of silicate -// var/icon/silicateIcon = null // the silicated icon + var/silicate = 0 // number of units of silicate + +/obj/structure/window/examine(mob/user) + . = ..(user) + + if(health == maxhealth) + user << "It looks fully intact." + else + var/perc = health / maxhealth + if(perc > 0.75) + user << "It has a few cracks." + else if(perc > 0.5) + user << "It looks slightly damaged." + else if(perc > 0.25) + user << "It looks moderately damaged." + else + user << "It looks heavily damaged." + if(silicate) + if (silicate < 30) + user << "It has a thin layer of silicate." + else if (silicate < 70) + user << "It is covered in silicate." + else + user << "There is a thick layer of silicate covering it." /obj/structure/window/proc/take_damage(var/damage = 0, var/sound_effect = 1) - var/initialhealth = src.health - src.health = max(0, src.health - damage) - if(src.health <= 0) - src.shatter() + var/initialhealth = health + + if(silicate) + damage = damage * (1 - silicate / 200) + + health = max(0, health - damage) + + if(health <= 0) + shatter() else if(sound_effect) playsound(loc, 'sound/effects/Glasshit.ogg', 100, 1) - if(src.health < src.maxhealth / 4 && initialhealth >= src.maxhealth / 4) + if(health < maxhealth / 4 && initialhealth >= maxhealth / 4) visible_message("[src] looks like it's about to shatter!" ) - else if(src.health < src.maxhealth / 2 && initialhealth >= src.maxhealth / 2) + else if(health < maxhealth / 2 && initialhealth >= maxhealth / 2) visible_message("[src] looks seriously damaged!" ) - else if(src.health < src.maxhealth * 3/4 && initialhealth >= src.maxhealth * 3/4) + else if(health < maxhealth * 3/4 && initialhealth >= maxhealth * 3/4) visible_message("Cracks begin to appear in [src]!" ) return +/obj/structure/window/proc/apply_silicate(var/amount) + if(health < maxhealth) // Mend the damage + health = min(health + amount * 3, maxhealth) + if(health == maxhealth) + visible_message("[src] looks fully repaired." ) + else // Reinforce + silicate = min(silicate + amount, 100) + updateSilicate() + +/obj/structure/window/proc/updateSilicate() + if (overlays) + overlays.Cut() + + var/image/img = image(src.icon, src.icon_state) + img.color = "#ffffff" + img.alpha = silicate * 255 / 100 + overlays += img + /obj/structure/window/proc/shatter(var/display_message = 1) playsound(src, "shatter", 70, 1) if(display_message) @@ -251,7 +296,7 @@ update_nearby_tiles(need_rebuild=1) //Compel updates before set_dir(turn(dir, 90)) -// updateSilicate() + updateSilicate() update_nearby_tiles(need_rebuild=1) return @@ -267,27 +312,10 @@ update_nearby_tiles(need_rebuild=1) //Compel updates before set_dir(turn(dir, 270)) -// updateSilicate() + updateSilicate() update_nearby_tiles(need_rebuild=1) return - -/* -/obj/structure/window/proc/updateSilicate() - if(silicateIcon && silicate) - icon = initial(icon) - - var/icon/I = icon(icon,icon_state,dir) - - var/r = (silicate / 100) + 1 - var/g = (silicate / 70) + 1 - var/b = (silicate / 50) + 1 - I.SetIntensity(r,g,b) - icon = I - silicateIcon = I -*/ - - /obj/structure/window/New(Loc, start_dir=null, constructed=0) ..() diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm index 7158a866cf..572ed0ff8d 100644 --- a/code/game/turfs/simulated/walls.dm +++ b/code/game/turfs/simulated/walls.dm @@ -125,7 +125,7 @@ /turf/simulated/wall/adjacent_fire_act(turf/simulated/floor/adj_turf, datum/gas_mixture/adj_air, adj_temp, adj_volume) if(adj_temp > max_temperature) - take_damage(log(rand(0.9, 1.1) * (adj_temp - max_temperature))) + take_damage(log(RAND_F(0.9, 1.1) * (adj_temp - max_temperature))) return ..() @@ -273,7 +273,7 @@ user << rotting_touch_message if(rotting_destroy_touch) dismantle_wall() - return 1 + return 1 if(..()) return 1 @@ -475,6 +475,9 @@ else if(istype(W,/obj/item/weapon/rcd)) //I bitterly resent having to write this. ~Z return + + else if(istype(W, /obj/item/weapon/reagent_containers)) + return // They tend to have meaningful afterattack - let them apply it without destroying a rotting wall else return attack_hand(user) diff --git a/code/game/turfs/simulated/walls_reinforced.dm b/code/game/turfs/simulated/walls_reinforced.dm index e06f9ba980..b08363a715 100644 --- a/code/game/turfs/simulated/walls_reinforced.dm +++ b/code/game/turfs/simulated/walls_reinforced.dm @@ -5,7 +5,7 @@ opacity = 1 density = 1 - damage_cap = 1000 + damage_cap = 500 max_temperature = 6000 armor = 0.1 // Only 10% damage from gunfire, it's made from strong alloys and stuff. @@ -291,7 +291,10 @@ var/obj/item/light_fixture_frame/small/AH = W AH.try_build(src) return - + + else if(istype(W, /obj/item/weapon/reagent_containers)) + return // They tend to have meaningful afterattack - let them apply it without destroying a rotting wall + //Finally, CHECKING FOR FALSE WALLS if it isn't damaged else if(!d_state) return attack_hand(user) diff --git a/code/game/verbs/suicide.dm b/code/game/verbs/suicide.dm index 82a81e5af7..ab3c8dcc80 100644 --- a/code/game/verbs/suicide.dm +++ b/code/game/verbs/suicide.dm @@ -59,7 +59,8 @@ //Do 175 damage divided by the number of damage types applied. if(damagetype & BRUTELOSS) - adjustBruteLoss(175/damage_mod) + adjustBruteLoss(30/damage_mod) //hack to prevent gibbing + adjustOxyLoss(145/damage_mod) if(damagetype & FIRELOSS) adjustFireLoss(175/damage_mod) diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 9c3acb9c78..f090d8665d 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -653,6 +653,7 @@ var/global/floorIsLava = 0 Ghost Mode
Make all players retarded
Make all items look like guns
+ Paintball Mode
Japanese Animes Mode
Egalitarian Station Mode
Launch a shuttle
diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 8d9e62cdcf..d20105a67e 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -46,6 +46,7 @@ var/list/admin_verbs_admin = list( /client/proc/cmd_admin_create_centcom_report, /client/proc/check_words, /*displays cult-words*/ /client/proc/check_ai_laws, /*shows AI and borg laws*/ + /client/proc/rename_ai, /*properly renames the AI*/ /client/proc/check_antagonists, /client/proc/admin_memo, /*admin memo system. show/delete/write. +SERVER needed to delete admin memos of others*/ /client/proc/dsay, /*talk in deadchat using our ckey/fakekey*/ @@ -282,7 +283,7 @@ var/list/admin_verbs_mentor = list( if(holder.rights & R_SERVER) verbs += admin_verbs_server if(holder.rights & R_DEBUG) verbs += admin_verbs_debug - if(config.debugparanoid && !check_rights(R_ADMIN)) + if(config.debugparanoid && !check_rights(R_ADMIN)) verbs.Remove(admin_verbs_paranoid_debug) //Right now it's just callproc but we can easily add others later on. if(holder.rights & R_POSSESS) verbs += admin_verbs_possess if(holder.rights & R_PERMISSIONS) verbs += admin_verbs_permissions @@ -308,24 +309,7 @@ var/list/admin_verbs_mentor = list( admin_verbs_rejuv, admin_verbs_sounds, admin_verbs_spawn, - /*Debug verbs added by "show debug verbs"*/ - /client/proc/Cell, - /client/proc/do_not_use_these, - /client/proc/camera_view, - /client/proc/sec_camera_report, - /client/proc/intercom_view, - /client/proc/atmosscan, - /client/proc/powerdebug, - /client/proc/count_objects_on_z_level, - /client/proc/count_objects_all, - /client/proc/cmd_assume_direct_control, - /client/proc/jump_to_dead_group, - /client/proc/startSinglo, - /client/proc/ticklag, - /client/proc/cmd_admin_grantfullaccess, - /client/proc/kaboom, - /client/proc/splash, - /client/proc/cmd_admin_areatest + debug_verbs ) /client/proc/hide_most_verbs()//Allows you to keep some functionality while hiding some verbs @@ -608,12 +592,14 @@ var/list/admin_verbs_mentor = list( var/datum/disease2/disease/D = new /datum/disease2/disease() - var/greater = ((input("Is this a lesser or greater disease?", "Give Disease") in list("Lesser", "Greater")) == "Greater") - - D.makerandom(greater) - if (!greater) - D.infectionchance = 1 + var/severity = 1 + var/greater = input("Is this a lesser, greater, or badmin disease?", "Give Disease") in list("Lesser", "Greater", "Badmin") + switch(greater) + if ("Lesser") severity = 1 + if ("Greater") severity = 2 + if ("Badmin") severity = 99 + D.makerandom(severity) D.infectionchance = input("How virulent is this disease? (1-100)", "Give Disease", D.infectionchance) as num if(istype(T,/mob/living/carbon/human)) @@ -626,8 +612,8 @@ var/list/admin_verbs_mentor = list( infect_virus2(T,D,1) feedback_add_details("admin_verb","GD2") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - log_admin("[key_name(usr)] gave [key_name(T)] a [(greater)? "greater":"lesser"] disease2 with infection chance [D.infectionchance].") - message_admins("\blue [key_name_admin(usr)] gave [key_name(T)] a [(greater)? "greater":"lesser"] disease2 with infection chance [D.infectionchance].", 1) + log_admin("[key_name(usr)] gave [key_name(T)] a [greater] disease2 with infection chance [D.infectionchance].") + message_admins("\blue [key_name_admin(usr)] gave [key_name(T)] a [greater] disease2 with infection chance [D.infectionchance].", 1) /client/proc/make_sound(var/obj/O in world) // -- TLE set category = "Special Verbs" @@ -706,6 +692,17 @@ var/list/admin_verbs_mentor = list( if(holder) src.holder.output_ai_laws() +/client/proc/rename_ai(mob/living/silicon/ai/AI in world) + set name = "Rename AI" + set category = "Admin" + + if(holder) + var/new_name = trim_strip_input(src, "Enter new AI name. Leave blank or as is to cancel.", "Enter new AI Name", AI.name) + if(new_name && new_name != AI.name) + admin_log_and_message_admins("has renamed the AI '[AI.name]' to '[new_name]'") + AI.SetName(new_name) + feedback_add_details("admin_verb","RAI") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + //---- bs12 verbs ---- diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index bb1416dac0..7c2a12e1d5 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -2399,6 +2399,16 @@ W.item_color = "schoolgirl" message_admins("[key_name_admin(usr)] activated Japanese Animes mode") world << sound('sound/AI/animes.ogg') + if("paintball") + feedback_inc("admin_secrets_fun_used",1) + feedback_add_details("admin_secrets_fun_used","PB") + for(var/species in all_species) + var/datum/species/S = all_species[species] + S.blood_color = "rainbow" + for(var/obj/effect/decal/cleanable/blood/B in world) + B.basecolor = "rainbow" + B.update_icon() + message_admins("[key_name_admin(usr)] activated Paintball mode") if("eagles")//SCRAW feedback_inc("admin_secrets_fun_used",1) feedback_add_details("admin_secrets_fun_used","EgL") diff --git a/code/modules/client/preferences_gear.dm b/code/modules/client/preferences_gear.dm index 3e8c8e3a3c..c83571650f 100644 --- a/code/modules/client/preferences_gear.dm +++ b/code/modules/client/preferences_gear.dm @@ -517,7 +517,7 @@ var/global/list/gear_datums = list() cost = 2 slot = slot_wear_suit -/datum/gear/gponcho +/datum/gear/bponcho display_name = "poncho, blue" path = /obj/item/clothing/suit/poncho/blue cost = 3 @@ -529,7 +529,7 @@ var/global/list/gear_datums = list() cost = 3 slot = slot_wear_suit -/datum/gear/rponcho +/datum/gear/pponcho display_name = "poncho, purple" path = /obj/item/clothing/suit/poncho/purple cost = 3 diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 38b60890c0..83a0e1864d 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -399,8 +399,6 @@ BLIND // can't see anything */ var/obj/item/clothing/tie/hastie = null var/displays_id = 1 - var/rolled_down = 0 - var/basecolor sprite_sheets = list("Vox" = 'icons/mob/species/vox/uniform.dmi') /obj/item/clothing/under/update_clothing_icon() @@ -526,11 +524,14 @@ BLIND // can't see anything if(!istype(usr, /mob/living)) return if(usr.stat) return - if(copytext(item_color,-2) != "_d") - basecolor = item_color - if(basecolor + "_d_s" in icon_states('icons/mob/uniform.dmi')) - body_parts_covered = "[basecolor]" ? LEGS|LOWER_TORSO : UPPER_TORSO|LOWER_TORSO|LEGS|ARMS - item_color = item_color == "[basecolor]" ? "[basecolor]_d" : "[basecolor]" + if(initial(item_color) + "_d_s" in icon_states('icons/mob/uniform.dmi')) + if (item_color == initial(item_color)) + body_parts_covered &= LOWER_TORSO|LEGS|FEET + item_color = "[initial(item_color)]_d" + else + body_parts_covered = initial(body_parts_covered) + item_color = initial(item_color) + update_clothing_icon() else usr << "You cannot roll down the uniform!" diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm index d7a20b73d0..c006cd892d 100644 --- a/code/modules/clothing/masks/gasmask.dm +++ b/code/modules/clothing/masks/gasmask.dm @@ -12,6 +12,7 @@ siemens_coefficient = 0.9 var/gas_filter_strength = 1 //For gas mask filters var/list/filtered_gases = list("phoron", "sleeping_agent") + armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 75, rad = 0) /obj/item/clothing/mask/gas/filter_air(datum/gas_mixture/air) var/datum/gas_mixture/filtered = new @@ -32,7 +33,7 @@ desc = "A modernised version of the classic design, this mask will not only filter out phoron but it can also be connected to an air supply." icon_state = "plaguedoctor" item_state = "gas_mask" - armor = list(melee = 0, bullet = 0, laser = 2,energy = 2, bomb = 0, bio = 75, rad = 0) + armor = list(melee = 0, bullet = 0, laser = 2,energy = 2, bomb = 0, bio = 90, rad = 0) body_parts_covered = HEAD|FACE /obj/item/clothing/mask/gas/swat diff --git a/code/modules/clothing/masks/miscellaneous.dm b/code/modules/clothing/masks/miscellaneous.dm index 3f3094c794..758baae8b9 100644 --- a/code/modules/clothing/masks/miscellaneous.dm +++ b/code/modules/clothing/masks/miscellaneous.dm @@ -24,7 +24,7 @@ body_parts_covered = 0 gas_transfer_coefficient = 0.90 permeability_coefficient = 0.01 - armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 25, rad = 0) + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 60, rad = 0) /obj/item/clothing/mask/fakemoustache name = "fake moustache" diff --git a/code/modules/clothing/spacesuits/rig/rig.dm b/code/modules/clothing/spacesuits/rig/rig.dm index dd0d073cd2..b308fda2b4 100644 --- a/code/modules/clothing/spacesuits/rig/rig.dm +++ b/code/modules/clothing/spacesuits/rig/rig.dm @@ -138,7 +138,7 @@ piece.name = "[suit_type] [initial(piece.name)]" piece.desc = "It seems to be part of a [src.name]." piece.icon_state = "[initial(icon_state)]" - piece.armor = armor + piece.armor = armor.Copy() piece.min_cold_protection_temperature = min_cold_protection_temperature piece.max_heat_protection_temperature = max_heat_protection_temperature piece.siemens_coefficient = siemens_coefficient @@ -227,7 +227,7 @@ if(!failed_to_seal && M.back == src && piece == compare_piece) if(!instant) - if(!do_after(M,SEAL_DELAY)) + if(!do_after(M,SEAL_DELAY,needhand=0)) failed_to_seal = 1 piece.icon_state = "[initial(icon_state)][!seal_target ? "_sealed" : ""]" @@ -251,6 +251,13 @@ else helmet.flags &= ~AIRTIGHT helmet.update_light(wearer) + + //sealed pieces become airtight, protecting against diseases + if (!seal_target) + piece.armor["bio"] = 100 + else + piece.armor["bio"] = src.armor["bio"] + else failed_to_seal = 1 diff --git a/code/modules/events/carp_migration.dm b/code/modules/events/carp_migration.dm index e7c9f5a402..16d623d3da 100644 --- a/code/modules/events/carp_migration.dm +++ b/code/modules/events/carp_migration.dm @@ -18,19 +18,27 @@ /datum/event/carp_migration/start() if(severity == EVENT_LEVEL_MAJOR) - for(var/i = 1 to rand(3,5)) - spawn_fish(landmarks_list.len) - else if(severity == EVENT_LEVEL_MODERATE) spawn_fish(landmarks_list.len) + else if(severity == EVENT_LEVEL_MODERATE) + spawn_fish(rand(4, 6)) //12 to 30 carp, in small groups else - spawn_fish(rand(1, 5)) + spawn_fish(rand(1, 3), 1, 2) //1 to 6 carp, alone or in pairs + +/datum/event/carp_migration/proc/spawn_fish(var/num_groups, var/group_size_min=3, var/group_size_max=5) + var/list/spawn_locations = list() -/datum/event/carp_migration/proc/spawn_fish(var/limit) for(var/obj/effect/landmark/C in landmarks_list) if(C.name == "carpspawn") - spawned_carp.Add(new /mob/living/simple_animal/hostile/carp(C.loc)) - if(spawned_carp.len >= limit) - return + spawn_locations.Add(C.loc) + spawn_locations = shuffle(spawn_locations) + num_groups = min(num_groups, spawn_locations.len) + + var/i = 1 + while (i <= num_groups) + var/group_size = rand(group_size_min, group_size_max) + for (var/j = 1, j <= group_size, j++) + spawned_carp.Add(new /mob/living/simple_animal/hostile/carp(spawn_locations[i])) + i++ /datum/event/carp_migration/end() for(var/mob/living/simple_animal/hostile/carp/C in spawned_carp) diff --git a/code/modules/events/event_container.dm b/code/modules/events/event_container.dm index 4f2675a512..758d50ebdd 100644 --- a/code/modules/events/event_container.dm +++ b/code/modules/events/event_container.dm @@ -25,7 +25,7 @@ var/global/list/severity_to_string = list(EVENT_LEVEL_MUNDANE = "Mundane", EVENT if(!next_event_time) set_event_delay() - if(delayed) + if(delayed || !config.allow_random_events) next_event_time += (world.time - last_world_time) else if(world.time > next_event_time) start_event() @@ -139,22 +139,22 @@ var/global/list/severity_to_string = list(EVENT_LEVEL_MUNDANE = "Mundane", EVENT /datum/event_container/moderate severity = EVENT_LEVEL_MODERATE available_events = list( - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Nothing", /datum/event/nothing, 10), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Carp School", /datum/event/carp_migration, 20, list(ASSIGNMENT_SECURITY = 10), 1), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Rogue Drones", /datum/event/rogue_drone, 5, list(ASSIGNMENT_ENGINEER = 25, ASSIGNMENT_SECURITY = 25)), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Space vines", /datum/event/spacevine, 10, list(ASSIGNMENT_ENGINEER = 5)), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Meteor Shower", /datum/event/meteor_shower, 0, list(ASSIGNMENT_ENGINEER = 10)), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Communication Blackout", /datum/event/communications_blackout, 50, list(ASSIGNMENT_AI = 25, ASSIGNMENT_SECURITY = 25)), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Prison Break", /datum/event/prison_break, 0, list(ASSIGNMENT_SECURITY = 50)), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Grid Check", /datum/event/grid_check, 25, list(ASSIGNMENT_ENGINEER = 10)), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Electrical Storm", /datum/event/electrical_storm, 15, list(ASSIGNMENT_ENGINEER = 5, ASSIGNMENT_JANITOR = 15)), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Radiation Storm", /datum/event/radiation_storm, 0, list(ASSIGNMENT_MEDICAL = 10), 1), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Appendicitis", /datum/event/spontaneous_appendicitis, 0, list(ASSIGNMENT_MEDICAL = 10), 1), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Viral Infection", /datum/event/viral_infection, 0, list(ASSIGNMENT_MEDICAL = 10)), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Spider Infestation", /datum/event/spider_infestation, 5, list(ASSIGNMENT_SECURITY = 5), 1), - new /datum/event_meta/alien(EVENT_LEVEL_MODERATE, "Alien Infestation", /datum/event/alien_infestation, 2.5,list(ASSIGNMENT_SECURITY = 1), 1, 0, 5), - new /datum/event_meta/ninja(EVENT_LEVEL_MODERATE, "Space Ninja", /datum/event/space_ninja, 0, list(ASSIGNMENT_SECURITY = 1), 1, 0, 5), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Ion Storm", /datum/event/ionstorm, 0, list(ASSIGNMENT_AI = 25, ASSIGNMENT_CYBORG = 25, ASSIGNMENT_ENGINEER = 10, ASSIGNMENT_SCIENTIST = 5)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Nothing", /datum/event/nothing, 1230), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Carp School", /datum/event/carp_migration, 100, list(ASSIGNMENT_ENGINEER = 10, ASSIGNMENT_SECURITY = 20), 1), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Rogue Drones", /datum/event/rogue_drone, 20, list(ASSIGNMENT_SECURITY = 20)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Space vines", /datum/event/spacevine, 200, list(ASSIGNMENT_ENGINEER = 10)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Meteor Shower", /datum/event/meteor_shower, 0, list(ASSIGNMENT_ENGINEER = 20)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Communication Blackout", /datum/event/communications_blackout, 500, list(ASSIGNMENT_AI = 150, ASSIGNMENT_SECURITY = 120)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Prison Break", /datum/event/prison_break, 0, list(ASSIGNMENT_SECURITY = 100)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Grid Check", /datum/event/grid_check, 200, list(ASSIGNMENT_ENGINEER = 60)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Electrical Storm", /datum/event/electrical_storm, 250, list(ASSIGNMENT_ENGINEER = 20, ASSIGNMENT_JANITOR = 150)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Radiation Storm", /datum/event/radiation_storm, 0, list(ASSIGNMENT_MEDICAL = 50), 1), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Appendicitis", /datum/event/spontaneous_appendicitis, 0, list(ASSIGNMENT_MEDICAL = 10), 1), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Viral Infection", /datum/event/viral_infection, 0, list(ASSIGNMENT_MEDICAL = 150)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Spider Infestation", /datum/event/spider_infestation, 100, list(ASSIGNMENT_SECURITY = 30), 1), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Ion Storm", /datum/event/ionstorm, 0, list(ASSIGNMENT_AI = 50, ASSIGNMENT_CYBORG = 50, ASSIGNMENT_ENGINEER = 15, ASSIGNMENT_SCIENTIST = 5)), + new /datum/event_meta/alien(EVENT_LEVEL_MODERATE, "Alien Infestation", /datum/event/alien_infestation, 2.5, list(ASSIGNMENT_SECURITY = 1), 1, 0, 5), + new /datum/event_meta/ninja(EVENT_LEVEL_MODERATE, "Space Ninja", /datum/event/space_ninja, 0, list(ASSIGNMENT_SECURITY = 1), 1, 0, 5), ) /datum/event_container/major diff --git a/code/modules/events/event_manager.dm b/code/modules/events/event_manager.dm index 1ef4d22e91..c531b139cc 100644 --- a/code/modules/events/event_manager.dm +++ b/code/modules/events/event_manager.dm @@ -45,6 +45,10 @@ log_debug("Event '[EM.name]' has completed at [worldtime2text()].") +/datum/event_manager/proc/delay_events(var/severity, var/delay) + var/list/datum/event_container/EC = event_containers[severity] + EC.next_event_time += delay + /datum/event_manager/proc/Interact(var/mob/living/user) var/html = GetInteractWindow() @@ -75,6 +79,7 @@ /datum/event_manager/proc/GetInteractWindow() var/html = "Refresh" + html += "Pause All - [config.allow_random_events ? "Pause" : "Resume"]" if(selected_event_container) var/event_time = max(0, selected_event_container.next_event_time - world.time) @@ -92,7 +97,7 @@ html += "[EM.max_weight]" html += "[EM.one_shot]" html += "[EM.enabled]" - html += "[EM.get_weight()]" + html += "[EM.get_weight(number_active_with_role())]" html += "Remove" html += "" html += "" @@ -207,6 +212,9 @@ var/datum/event_container/EC = locate(href_list["pause"]) EC.delayed = !EC.delayed admin_log_and_message_admins("has [EC.delayed ? "paused" : "resumed"] countdown for [severity_to_string[EC.severity]] events.") + else if(href_list["pause_all"]) + config.allow_random_events = text2num(href_list["pause_all"]) + admin_log_and_message_admins("has [config.allow_random_events ? "resumed" : "paused"] countdown for all events.") else if(href_list["interval"]) var/delay = input("Enter delay modifier. A value less than one means events fire more often, higher than one less often.", "Set Interval Modifier") as num|null if(delay && delay > 0) diff --git a/code/modules/events/grid_check.dm b/code/modules/events/grid_check.dm index c485827efb..40a38e2383 100644 --- a/code/modules/events/grid_check.dm +++ b/code/modules/events/grid_check.dm @@ -8,7 +8,8 @@ power_failure(0) /datum/event/grid_check/announce() - command_announcement.Announce("Abnormal activity detected in [station_name()]'s powernet. As a precautionary measure, the station's power will be shut off for an indeterminate duration.", "Automated Grid Check", new_sound = 'sound/AI/poweroff.ogg') + if (prob(30)) + command_announcement.Announce("Abnormal activity detected in [station_name()]'s powernet. As a precautionary measure, the station's power will be shut off for an indeterminate duration.", "Automated Grid Check", new_sound = 'sound/AI/poweroff.ogg') /datum/event/grid_check/end() power_restore() diff --git a/code/modules/events/viral_infection.dm b/code/modules/events/viral_infection.dm index 6e40d38d33..55dbe2b823 100644 --- a/code/modules/events/viral_infection.dm +++ b/code/modules/events/viral_infection.dm @@ -1,11 +1,36 @@ +datum/event/viral_infection + var/list/viruses = list() + datum/event/viral_infection/setup() announceWhen = rand(0, 3000) endWhen = announceWhen + 1 + + //generate 1-3 viruses. This way there's an upper limit on how many individual diseases need to be cured if many people are initially infected + var/num_diseases = rand(1,3) + for (var/i=0, i < num_diseases, i++) + var/datum/disease2/disease/D = new /datum/disease2/disease + + var/strength = 1 //whether the disease is of the greater or lesser variety + if (severity >= EVENT_LEVEL_MAJOR && prob(75)) + strength = 2 + D.makerandom(strength) + viruses += D datum/event/viral_infection/announce() - command_announcement.Announce("Confirmed outbreak of level five biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert", new_sound = 'sound/AI/outbreak5.ogg') + var/level + if (severity == EVENT_LEVEL_MUNDANE) + return + else if (severity == EVENT_LEVEL_MODERATE) + level = pick("one", "two", "three", "four") + else + level = "five" + + if (severity == EVENT_LEVEL_MAJOR || prob(60)) + command_announcement.Announce("Confirmed outbreak of level [level] biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert", new_sound = 'sound/AI/outbreak5.ogg') datum/event/viral_infection/start() + if(!viruses.len) return + var/list/candidates = list() //list of candidate keys for(var/mob/living/carbon/human/G in player_list) if(G.client && G.stat != DEAD) @@ -13,9 +38,10 @@ datum/event/viral_infection/start() if(!candidates.len) return candidates = shuffle(candidates)//Incorporating Donkie's list shuffle - severity = severity == 1 ? 1 : severity - 1 + severity = max(EVENT_LEVEL_MUNDANE, severity - 1) var/actual_severity = severity * rand(1, 3) while(actual_severity > 0 && candidates.len) - infect_mob_random_lesser(candidates[1]) + var/datum/disease2/disease/D = pick(viruses) + infect_mob(candidates[1], D.getcopy()) candidates.Remove(candidates[1]) actual_severity-- diff --git a/code/modules/hydroponics/seed_datums.dm b/code/modules/hydroponics/seed_datums.dm index 509d069754..33e6f47c57 100644 --- a/code/modules/hydroponics/seed_datums.dm +++ b/code/modules/hydroponics/seed_datums.dm @@ -217,8 +217,8 @@ proc/populate_seed_list() "water", "potassium", "plasticide", - "slimetoxin", - "aslimetoxin", + "mutationtoxin", + "amutationtoxin", "inaprovaline", "space_drugs", "paroxetine", diff --git a/code/modules/hydroponics/vines.dm b/code/modules/hydroponics/vines.dm index b25c03080e..699063fec4 100644 --- a/code/modules/hydroponics/vines.dm +++ b/code/modules/hydroponics/vines.dm @@ -362,6 +362,8 @@ SV.life() + if(!SV) continue + if(SV.energy < 2) //If tile isn't fully grown var/chance if(seed) diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index c2f7adc171..c1d577834d 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -143,7 +143,7 @@ Works together with spawning an observer, noted above. ghost.can_reenter_corpse = can_reenter_corpse ghost.timeofdeath = src.timeofdeath //BS12 EDIT ghost.key = key - if(!ghost.client.holder && !config.antag_hud_allowed) // For new ghosts we remove the verb from even showing up if it's not allowed. + if(ghost.client && !ghost.client.holder && !config.antag_hud_allowed) // For new ghosts we remove the verb from even showing up if it's not allowed. ghost.verbs -= /mob/dead/observer/verb/toggle_antagHUD // Poor guys, don't know what they are missing! return ghost diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 4916d801c3..792fd48e2e 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -871,6 +871,7 @@ else target.show_message("\blue You hear a voice that seems to echo around the room: [say]") usr.show_message("\blue You project your mind into [target.real_name]: [say]") + log_say("[key_name(usr)] sent a telepathic message to [key_name(target)]: [say]") for(var/mob/dead/observer/G in world) G.show_message("Telepathic message from [src] to [target]: [say]") diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index de50d9aa44..414f7e2bfb 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -120,7 +120,7 @@ emp_act /mob/living/carbon/human/proc/getarmor_organ(var/datum/organ/external/def_zone, var/type) if(!type) return 0 var/protection = 0 - var/list/protective_gear = list(head, wear_mask, wear_suit, w_uniform) + var/list/protective_gear = list(head, wear_mask, wear_suit, w_uniform, gloves, shoes) for(var/gear in protective_gear) if(gear && istype(gear ,/obj/item/clothing)) var/obj/item/clothing/C = gear diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index 545fa41c03..0a504ca148 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -640,9 +640,10 @@ It can still be worn/put on as normal. W.hold.close(usr) usr.put_in_hands(tie) suit.hastie = null*/ - suit.hastie.on_removed(usr) - suit.hastie = null - target.update_inv_w_uniform() + if(suit && suit.hastie) + suit.hastie.on_removed(usr) + suit.hastie = null + target.update_inv_w_uniform() if("id") slot_to_process = slot_wear_id if (target.wear_id) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 0f13a6dbfd..72c281a1f2 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -407,11 +407,10 @@ loc.assume_air(breath) //spread some viruses while we are at it - if (virus2.len > 0) - if (prob(10) && get_infection_chance(src)) -// log_debug("[src] : Exhaling some viruses") - for(var/mob/living/carbon/M in view(1,src)) - src.spread_disease_to(M) + if (virus2.len > 0 && prob(10)) +// log_debug("[src] : Exhaling some viruses") + for(var/mob/living/carbon/M in view(1,src)) + src.spread_disease_to(M) proc/get_breath_from_internal(volume_needed) @@ -1426,21 +1425,19 @@ client.screen |= G.overlay if(G.vision_flags) sight |= G.vision_flags - if(!druggy) + if(!druggy && !seer) see_invisible = SEE_INVISIBLE_MINIMUM - if(istype(G,/obj/item/clothing/glasses/night)) + if(istype(G,/obj/item/clothing/glasses/night) && !seer) see_invisible = SEE_INVISIBLE_MINIMUM /* HUD shit goes here, as long as it doesn't modify sight flags */ // The purpose of this is to stop xray and w/e from preventing you from using huds -- Love, Doohl + var/obj/item/clothing/glasses/hud/O = G if(istype(G, /obj/item/clothing/glasses/sunglasses/sechud)) - var/obj/item/clothing/glasses/sunglasses/sechud/O = G - if(O.hud) O.hud.process_hud(src) - if(!druggy) see_invisible = SEE_INVISIBLE_LIVING - else if(istype(G, /obj/item/clothing/glasses/hud)) - var/obj/item/clothing/glasses/hud/O = G + var/obj/item/clothing/glasses/sunglasses/sechud/S = G + O = S.hud + if(istype(O)) O.process_hud(src) - if(!druggy) - see_invisible = SEE_INVISIBLE_LIVING + if(!druggy && !seer) see_invisible = SEE_INVISIBLE_LIVING proc/handle_random_events() // Puke if toxloss is too high diff --git a/code/modules/mob/living/carbon/human/species/species_attack.dm b/code/modules/mob/living/carbon/human/species/species_attack.dm index fe5eac0f07..bb922b905b 100644 --- a/code/modules/mob/living/carbon/human/species/species_attack.dm +++ b/code/modules/mob/living/carbon/human/species/species_attack.dm @@ -35,23 +35,29 @@ if("head", "mouth", "eyes") // ----- HEAD ----- // switch(attack_damage) - if(1 to 2) user.visible_message("[user] scratched [target] across \his cheek!") - if(3 to 4) user.visible_message("[user] [pick(attack_verb)] [target]'s [pick("head", "neck")] [pick("", "", "", "with spread [pick(attack_noun)]")]!") - if(5) user.visible_message("[pick("[user] [pick(attack_verb)] [target] across \his face!", "[user] rakes \his [pick(attack_noun)] across [target]'s face!")]") - if("chest", "l_arm", "r_arm", "l_hand", "r_hand", "groin", "l_leg", "r_leg", "l_foot", "r_foot") + if(1 to 2) + user.visible_message("[user] scratched [target] across \his cheek!") + if(3 to 4) + user.visible_message("[user] [pick(attack_verb)] [target]'s [pick("head", "neck")]!") //'with spread claws' sounds a little bit odd, just enough that conciseness is better here I think + if(5) + user.visible_message(pick( + "[user] rakes \his [pick(attack_noun)] across [target]'s face!", + "[user] tears \his [pick(attack_noun)] into [target]'s face!", + )) + else // ----- BODY ----- // switch(attack_damage) if(1 to 2) user.visible_message("[user] scratched [target]'s [affecting.display_name]!") if(3 to 4) user.visible_message("[user] [pick(attack_verb)] [pick("", "", "the side of")] [target]'s [affecting.display_name]!") - if(5) user.visible_message("[user] tears \his [pick(attack_noun)] deep into [target]'s [affecting.display_name]!") + if(5) user.visible_message("[user] tears \his [pick(attack_noun)] [pick("deep into", "into", "across")] [target]'s [affecting.display_name]!") /datum/unarmed_attack/claws/strong - attack_verb = list("slash") + attack_verb = list("slashed") damage = 10 shredding = 1 /datum/unarmed_attack/bite/strong - attack_verb = list("maul") + attack_verb = list("mauled") damage = 15 shredding = 1 diff --git a/code/modules/mob/living/carbon/human/unarmed_attack.dm b/code/modules/mob/living/carbon/human/unarmed_attack.dm index ba738e81ef..c98e3788c0 100644 --- a/code/modules/mob/living/carbon/human/unarmed_attack.dm +++ b/code/modules/mob/living/carbon/human/unarmed_attack.dm @@ -35,17 +35,18 @@ switch(zone) // strong punches can have effects depending on where they hit if("head", "mouth", "eyes") // Induce blurriness - target.visible_message("[target] looks dazed.", "You see stars.") + target.visible_message("[target] looks momentarily disoriented.", "You see stars.") target.apply_effect(attack_damage*2, EYE_BLUR, armour) if("l_arm", "l_hand") if (target.l_hand) // Disarm left hand - target.visible_message("[src] [pick("dropped", "let go off")] \the [target.l_hand][pick("", " with a scream")]!") + //Urist McAssistant dropped the macguffin with a scream just sounds odd. Plus it doesn't work with NO_PAIN + target.visible_message("\The [target.l_hand] was knocked right out of [src]'s grasp!") target.drop_l_hand() if("r_arm", "r_hand") if (target.r_hand) // Disarm right hand - target.visible_message("[src] [pick("dropped", "let go off")] \the [target.r_hand][pick("", " with a scream")]!") + target.visible_message("\The [target.r_hand] was knocked right out of [src]'s grasp!") target.drop_r_hand() if("chest") if(!target.lying) @@ -113,21 +114,30 @@ if("head", "mouth", "eyes") // ----- HEAD ----- // switch(attack_damage) - if(1 to 2) user.visible_message("[user] slapped [target] across \his cheek!") - if(3 to 4) user.visible_message("[user] struck [target] in the head[pick("", " with a closed fist")]!") - if(5) user.visible_message("[user] gave [target] a resounding slap to the face!") - if("chest", "l_arm", "r_arm", "l_hand", "r_hand", "groin", "l_leg", "r_let", "l_foot", "r_foot") + if(1 to 2) + user.visible_message("[user] slapped [target] across \his cheek!") + if(3 to 4) + user.visible_message(pick( + 80; "[user] [pick(attack_verb)] [target] in the head!", //striking someone with a 'closed fist' is called punching them. + 20; "[user] struck [target] in the head[pick("", " with a closed fist")]!" + )) + if(5) + user.visible_message(pick( + 10; "[user] gave [target] a resounding slap to the face!", + 90; "[user] smashed \his [pick(attack_noun)] into [target]'s [organ]!" + )) + else // ----- BODY ----- // switch(attack_damage) if(1 to 2) user.visible_message("[user] slapped [target]'s [organ]!") if(3 to 4) user.visible_message("[user] [pick(attack_verb)] [target] in \his [organ]!") - if(5) user.visible_message("[user] slammed \his [pick(attack_noun)] into [target]'s [organ]!") + if(5) user.visible_message("[user] smashed \his [pick(attack_noun)] into [target]'s [organ]!") else - user.visible_message("[user] [pick("punched", "threw a punch", "struck", "slapped", "rammed their [pick(attack_noun)] into")] [target]'s [organ]!") + user.visible_message("[user] [pick("punched", "threw a punch", "struck", "slapped", "slammed their [pick(attack_noun)] into")] [target]'s [organ]!") //why do we have a separate set of verbs for lying targets? /datum/unarmed_attack/kick - attack_verb = list("kicked", "kneed") - attack_noun = list("kick", "knee strike") + attack_verb = list("kicked", "kicked", "kicked", "kneed") + attack_noun = list("kick", "kick", "kick", "knee strike") attack_sound = "swing_hit" damage = 0 @@ -161,7 +171,7 @@ attack_damage = Clamp(attack_damage, 1, 5) switch(attack_damage) - if(1 to 2) user.visible_message("[user] gave [target] a light [pick(attack_noun)] to the [organ]!") + if(1 to 2) user.visible_message("[user] threw [target] a glancing [pick(attack_noun)] to the [organ]!") //it's not that they're kicking lightly, it's that the kick didn't quite connect if(3 to 4) user.visible_message("[user] [pick(attack_verb)] [target] in \his [organ]!") if(5) user.visible_message("[user] landed a strong [pick(attack_noun)] against [target]'s [organ]!") @@ -204,6 +214,6 @@ attack_damage = Clamp(attack_damage, 1, 5) switch(attack_damage) - if(1 to 2) user.visible_message("[user] [pick("clomped on", "treaded on")] [target]'s [organ]!") - if(3 to 4) user.visible_message("[pick("[user] stomped down on", "[user] slammed \his [shoes ? copytext(shoes.name, 1, -1) : "foot"] down onto")] [target]'s [organ]!") - if(5) user.visible_message("[pick("[user] landed a devastating stomp on", "[user] stomped down hard on", "[user] slammed \his [shoes ? copytext(shoes.name, 1, -1) : "foot"] down hard onto")] [target]'s [organ]!") \ No newline at end of file + if(1 to 2) user.visible_message("[user] [pick("stepped on", "treaded on")] [target]'s [organ]!") //stepped on conveys the same meaning and is more recognizable as an actual word than "clomped" + if(3 to 4) user.visible_message("[pick("[user] stomped on", "[user] slammed \his [shoes ? copytext(shoes.name, 1, -1) : "foot"] down onto")] [target]'s [organ]!") + if(5) user.visible_message("[pick("[user] landed a powerful stomp on", "[user] stomped down hard on", "[user] slammed \his [shoes ? copytext(shoes.name, 1, -1) : "foot"] down hard onto")] [target]'s [organ]!") //Devastated lol. No. We want to say that the stomp was powerful or forceful, not that it /wrought devastation/ \ No newline at end of file diff --git a/code/modules/mob/living/silicon/ai/death.dm b/code/modules/mob/living/silicon/ai/death.dm index 34281e8c0c..4b408193b7 100644 --- a/code/modules/mob/living/silicon/ai/death.dm +++ b/code/modules/mob/living/silicon/ai/death.dm @@ -54,4 +54,4 @@ var/obj/item/device/aicard/card = loc card.update_icon() - return ..(gibbed) + return ..(gibbed,"gives one shrill beep before falling lifeless.") diff --git a/code/modules/mob/living/silicon/ai/freelook/eye.dm b/code/modules/mob/living/silicon/ai/freelook/eye.dm index 17293f2b67..590ff71ea5 100644 --- a/code/modules/mob/living/silicon/ai/freelook/eye.dm +++ b/code/modules/mob/living/silicon/ai/freelook/eye.dm @@ -12,6 +12,7 @@ status_flags = GODMODE // You can't damage it. mouse_opacity = 0 see_in_dark = 7 + invisibility = INVISIBILITY_MAXIMUM // Movement code. Returns 0 to stop air movement from moving it. /mob/aiEye/Move() diff --git a/code/modules/mob/living/silicon/ai/life.dm b/code/modules/mob/living/silicon/ai/life.dm index cf11f2d211..7686cd4344 100644 --- a/code/modules/mob/living/silicon/ai/life.dm +++ b/code/modules/mob/living/silicon/ai/life.dm @@ -59,7 +59,7 @@ src.sight |= SEE_MOBS src.sight |= SEE_OBJS src.see_in_dark = 8 - src.see_invisible = SEE_INVISIBLE_LEVEL_TWO + src.see_invisible = SEE_INVISIBLE_LIVING //Congratulations! You've found a way for AI's to run without using power! diff --git a/code/modules/mob/living/silicon/robot/inventory.dm b/code/modules/mob/living/silicon/robot/inventory.dm index 1b132cf27d..794b983f66 100644 --- a/code/modules/mob/living/silicon/robot/inventory.dm +++ b/code/modules/mob/living/silicon/robot/inventory.dm @@ -234,3 +234,7 @@ sight_mode |= module_state_3:sight_mode else src << "You need to disable a module first!" + +/mob/living/silicon/robot/put_in_hands(var/obj/item/W) // No hands. + W.loc = get_turf(src) + return 1 diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index aeebc30bb3..b72e822e57 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -23,6 +23,11 @@ var/list/robot_verbs_default = list( var/integrated_light_power = 6 var/datum/wires/robot/wires +//Icon stuff + + var/icontype //Persistent icontype tracking allows for cleaner icon updates + var/module_sprites[0] //Used to store the associations between sprite names and sprite index. + //Hud stuff var/obj/screen/cells = null @@ -106,6 +111,8 @@ var/list/robot_verbs_default = list( robot_modules_background.icon_state = "block" robot_modules_background.layer = 19 //Objects that appear on screen are on layer 20, UI should be just below it. ident = rand(1, 999) + module_sprites["Basic"] = "robot" + icontype = "Default" updatename("Default") updateicon() @@ -227,11 +234,10 @@ var/list/robot_verbs_default = list( modules+="Combat" modtype = input("Please, select a module!", "Robot", null, null) in modules - var/module_sprites[0] //Used to store the associations between sprite names and sprite index. - if(module) return + module_sprites = list() switch(modtype) if("Standard") module = new /obj/item/weapon/robot_module/standard(src) @@ -958,38 +964,25 @@ var/list/robot_verbs_default = list( overlays.Cut() if(stat == 0) - overlays += "eyes" - overlays.Cut() - overlays += "eyes-[icon_state]" - else - overlays -= "eyes" - - if(opened && custom_sprite == 1) //Custom borgs also have custom panels, heh - if(wiresexposed) - overlays += "[src.ckey]-openpanel +w" - else if(cell) - overlays += "[src.ckey]-openpanel +c" - else - overlays += "[src.ckey]-openpanel -c" + overlays += "eyes-[module_sprites[icontype]]" if(opened) + var/panelprefix = custom_sprite ? src.ckey : "ov" if(wiresexposed) - overlays += "ov-openpanel +w" + overlays += "[panelprefix]-openpanel +w" else if(cell) - overlays += "ov-openpanel +c" + overlays += "[panelprefix]-openpanel +c" else - overlays += "ov-openpanel -c" + overlays += "[panelprefix]-openpanel -c" if(module_active && istype(module_active,/obj/item/borg/combat/shield)) - overlays += "[icon_state]-shield" + overlays += "[module_sprites[icontype]]-shield" if(modtype == "Combat") - var/base_icon = "" - base_icon = icon_state if(module_active && istype(module_active,/obj/item/borg/combat/mobility)) - icon_state = "[icon_state]-roll" + icon_state = "[module_sprites[icontype]]-roll" else - icon_state = base_icon + icon_state = module_sprites[icontype] return //Call when target overlay should be added/removed @@ -1222,8 +1215,6 @@ var/list/robot_verbs_default = list( else triesleft-- - var/icontype - if (custom_sprite == 1) icontype = "Custom" triesleft = 0 @@ -1304,4 +1295,5 @@ var/list/robot_verbs_default = list( if(2) //New Module connected_ai << "

NOTICE - [braintype] module change detected: [name] has loaded the [module.name].
" if(3) //New Name - connected_ai << "

NOTICE - [braintype] reclassification detected: [oldname] is now designated as [newname].
" \ No newline at end of file + if(oldname != newname) + connected_ai << "

NOTICE - [braintype] reclassification detected: [oldname] is now designated as [newname].
" diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index e8fa3727ce..7cbc5bef5e 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -34,8 +34,11 @@ if(!stacktypes || !stacktypes.len) return for(var/T in stacktypes) - var/O = locate(T) in src.modules - var/obj/item/stack/S = O + var/obj/item/stack/S + for(var/obj/O in src.modules) + if(O.type == T) + S = O + break if(!S) src.modules -= null @@ -43,6 +46,9 @@ src.modules |= S S.amount = 1 + if(!istype(S)) + continue + if(S && S.amount < stacktypes[T]) S.amount++ diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm index 642a7df8e4..c3d88300ca 100644 --- a/code/modules/mob/living/simple_animal/friendly/cat.dm +++ b/code/modules/mob/living/simple_animal/friendly/cat.dm @@ -68,7 +68,7 @@ /mob/living/simple_animal/cat/MouseDrop(atom/over_object) var/mob/living/carbon/H = over_object - if(!istype(H)) return ..() + if(!istype(H) || !Adjacent(H)) return ..() if(H.a_intent == "help") get_scooped(H) diff --git a/code/modules/nano/JSON Writer.dm b/code/modules/nano/JSON Writer.dm index 3cd3520f17..65b9d99eb0 100644 --- a/code/modules/nano/JSON Writer.dm +++ b/code/modules/nano/JSON Writer.dm @@ -1,7 +1,7 @@ json_writer proc - WriteObject(list/L) + WriteObject(list/L, cached_data = null) . = "{" var/i = 1 for(var/k in L) @@ -9,7 +9,9 @@ json_writer . += {"\"[k]\":[write(val)]"} if(i++ < L.len) . += "," - .+= "}" + if(cached_data) + . = copytext(., 1, lentext(.)) + ",\"cached\":[cached_data]}" + . += "}" write(val) if(isnum(val)) diff --git a/code/modules/nano/_JSON.dm b/code/modules/nano/_JSON.dm index 5692e643ba..4f70e6e664 100644 --- a/code/modules/nano/_JSON.dm +++ b/code/modules/nano/_JSON.dm @@ -7,6 +7,6 @@ proc var/static/json_reader/_jsonr = new() return _jsonr.ReadObject(_jsonr.ScanJson(json)) - list2json(list/L) + list2json(list/L, var/cached_data = null) var/static/json_writer/_jsonw = new() - return _jsonw.WriteObject(L) + return _jsonw.WriteObject(L, cached_data) diff --git a/code/modules/nano/nanoui.dm b/code/modules/nano/nanoui.dm index 91e97c0cb5..bdfeffe58e 100644 --- a/code/modules/nano/nanoui.dm +++ b/code/modules/nano/nanoui.dm @@ -57,6 +57,8 @@ nanoui is used to open and update nano browser uis // the current status/visibility of the ui var/status = STATUS_INTERACTIVE + var/cached_data = null + // Only allow users with a certain user.stat to get updates. Defaults to 0 (concious) var/allowed_user_stat = 0 // -1 = ignore, 0 = alive, 1 = unconcious or alive, 2 = dead concious or alive @@ -366,7 +368,7 @@ nanoui is used to open and update nano browser uis template_data_json = list2json(templates) var/list/send_data = get_send_data(initial_data) - var/initial_data_json = list2json(send_data) + var/initial_data_json = list2json(send_data, cached_data) var/url_parameters_json = list2json(list("src" = "\ref[src]")) @@ -442,6 +444,19 @@ nanoui is used to open and update nano browser uis winset(user, window_id, "on-close=\"nanoclose [params]\"") +/** + * Appends already processed json txt to the list2json proc when setting initial-data and data pushes + * Used for data that is fucking huge like manifests and camera lists that doesn't change often. + * And we only want to process them when they change. + * Fuck javascript + * + * @return nothing + */ +/datum/nanoui/proc/load_cached_data(var/data) + cached_data = data + return + + /** * Push data to an already open UI window * @@ -455,7 +470,7 @@ nanoui is used to open and update nano browser uis var/list/send_data = get_send_data(data) //user << list2json(data) // used for debugging - user << output(list2params(list(list2json(send_data))),"[window_id].browser:receiveUpdateData") + user << output(list2params(list(list2json(send_data,cached_data))),"[window_id].browser:receiveUpdateData") /** * This Topic() proc is called whenever a user clicks on a link within a Nano UI diff --git a/code/modules/organs/blood.dm b/code/modules/organs/blood.dm index 8d4144a550..067ef6a42e 100644 --- a/code/modules/organs/blood.dm +++ b/code/modules/organs/blood.dm @@ -290,29 +290,24 @@ proc/blood_splatter(var/target,var/datum/reagent/blood/source,var/large) source.data["blood_type"] = donor.dna.b_type // Are we dripping or splattering? - if(!large) - - // Only a certain number of drips can be on a given turf. - var/list/drips = list() - var/list/drip_icons = list("1","2","3","4","5") - - for(var/obj/effect/decal/cleanable/blood/drip/drop in T) - drips += drop - drip_icons.Remove(drop.icon_state) - - // If we have too many drips, remove them and spawn a proper blood splatter. - if(drips.len >= 5) - //TODO: copy all virus data from drips to new splatter? - for(var/obj/effect/decal/cleanable/blood/drip/drop in drips) - del drop - else - decal_type = /obj/effect/decal/cleanable/blood/drip + var/list/drips = list() + // Only a certain number of drips (or one large splatter) can be on a given turf. + for(var/obj/effect/decal/cleanable/blood/drip/drop in T) + drips |= drop.drips + del(drop) + if(!large && drips.len < 3) + decal_type = /obj/effect/decal/cleanable/blood/drip // Find a blood decal or create a new one. B = locate(decal_type) in T if(!B) B = new decal_type(T) + var/obj/effect/decal/cleanable/blood/drip/drop = B + if(istype(drop) && drips && drips.len && !large) + drop.overlays |= drips + drop.drips |= drips + // If there's no data to copy, call it quits here. if(!source) return B @@ -330,11 +325,7 @@ proc/blood_splatter(var/target,var/datum/reagent/blood/source,var/large) else B.blood_DNA[source.data["blood_DNA"]] = "O+" - // Update virus information. //Looks like this is out of date. - //for(var/datum/disease/D in source.data["viruses"]) - // var/datum/disease/new_virus = D.Copy(1) - // source.viruses += new_virus - // new_virus.holder = B + // Update virus information. if(source.data["virus2"]) B.virus2 = virus_copylist(source.data["virus2"]) diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index 0882531ab6..b45d0aafa7 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -562,7 +562,7 @@ Note that amputating the affected organ does in fact remove the infection from t O.setAmputatedTree() //Handles dismemberment -/datum/organ/external/proc/droplimb(var/override = 0,var/no_explode = 0) +/datum/organ/external/proc/droplimb(var/override = 0,var/no_explode = 0,var/amputation=0) if(destspawn) return if(override) status |= ORGAN_DESTROYED @@ -579,9 +579,13 @@ Note that amputating the affected organ does in fact remove the infection from t germ_level = 0 + // If any organs are attached to this, destroy them + for(var/datum/organ/external/O in children) + O.droplimb(1, no_explode, amputation) + //Replace all wounds on that arm with one wound on parent organ. wounds.Cut() - if (parent) + if (parent && !amputation) var/datum/wound/W if(max_damage < 50) W = new/datum/wound/lost_limb/small(max_damage) @@ -591,10 +595,6 @@ Note that amputating the affected organ does in fact remove the infection from t parent.update_damages() update_damages() - // If any organs are attached to this, destroy them - for(var/datum/organ/external/O in children) - O.droplimb(1) - var/obj/organ //Dropped limb object switch(body_part) if(HEAD) diff --git a/code/modules/paperwork/handlabeler.dm b/code/modules/paperwork/handlabeler.dm index 940a797add..fe519e01d4 100644 --- a/code/modules/paperwork/handlabeler.dm +++ b/code/modules/paperwork/handlabeler.dm @@ -6,9 +6,13 @@ var/label = null var/labels_left = 30 var/mode = 0 //off or on. + +/obj/item/weapon/hand_labeler/attack() + return /obj/item/weapon/hand_labeler/afterattack(atom/A, mob/user as mob, proximity) - if(!proximity) return + if(!proximity) + return if(!mode) //if it's off, give up. return if(A == loc) // if placing the labeller into something (e.g. backpack) @@ -24,10 +28,13 @@ user << "Label too big." return if(ishuman(A)) - user << "You can't label humans." + user << "The label refuses to stick to [A.name]." return if(issilicon(A)) - user << "You can't label cyborgs." + user << "The label refuses to stick to [A.name]." + return + if(isobserver(A)) + user << "[src] passes through [A.name]." return if(istype(A, /obj/item/weapon/reagent_containers/glass)) user << "The label can't stick to the [A.name]. (Try using a pen)" diff --git a/code/modules/paperwork/paper_bundle.dm b/code/modules/paperwork/paper_bundle.dm index 7516d1b622..6cf8e9ba08 100644 --- a/code/modules/paperwork/paper_bundle.dm +++ b/code/modules/paperwork/paper_bundle.dm @@ -35,8 +35,9 @@ user.drop_from_inventory(P) P.loc = src if(istype(user,/mob/living/carbon/human)) - user:update_inv_l_hand() - user:update_inv_r_hand() + var/mob/living/carbon/human/H = user + H.update_inv_l_hand() + H.update_inv_r_hand() else if(istype(W, /obj/item/weapon/photo)) amount++ if(screen == 2) @@ -57,6 +58,8 @@ user << "You add \the [W.name] to [(src.name == "paper bundle") ? "the paper bundle" : src.name]." del(W) else + if(istype(W, /obj/item/weapon/tape_roll)) + return 0 if(istype(W, /obj/item/weapon/pen) || istype(W, /obj/item/toy/crayon)) usr << browse("", "window=[name]") //Closes the dialog P = src[page] diff --git a/code/modules/power/port_gen.dm b/code/modules/power/port_gen.dm index 5b188f0bca..2223f2f9f9 100644 --- a/code/modules/power/port_gen.dm +++ b/code/modules/power/port_gen.dm @@ -105,8 +105,11 @@ display round(lastgen) and phorontank amount var/sheet_path = /obj/item/stack/sheet/mineral/phoron var/board_path = "/obj/item/weapon/circuitboard/pacman" var/sheet_left = 0 // How much is left of the sheet - var/time_per_sheet = 40 var/heat = 0 + + //produces up to 80 kW and lasts for 20 minutes with 50 sheets + var/time_per_sheet = 96 + power_gen = 20000 /obj/machinery/power/port_gen/pacman/initialize() ..() @@ -329,9 +332,12 @@ display round(lastgen) and phorontank amount name = "S.U.P.E.R.P.A.C.M.A.N.-type Portable Generator" icon_state = "portgen1" sheet_path = /obj/item/stack/sheet/mineral/uranium - power_gen = 15000 - time_per_sheet = 65 board_path = "/obj/item/weapon/circuitboard/pacman/super" + + //produces 80 kW like the PACMAN but 50 sheets will last for 2 hours + power_gen = 20000 + time_per_sheet = 576 + overheat() explosion(src.loc, 3, 3, 3, -1) @@ -339,8 +345,11 @@ display round(lastgen) and phorontank amount name = "M.R.S.P.A.C.M.A.N.-type Portable Generator" icon_state = "portgen2" sheet_path = /obj/item/stack/sheet/mineral/tritium - power_gen = 40000 - time_per_sheet = 80 board_path = "/obj/item/weapon/circuitboard/pacman/mrs" + + //produces 200 kW and lasts for 1 hour with 50 sheets + power_gen = 50000 + time_per_sheet = 288 + overheat() explosion(src.loc, 4, 4, 4, -1) diff --git a/code/modules/power/power.dm b/code/modules/power/power.dm index d1f0c82454..366cd9351d 100644 --- a/code/modules/power/power.dm +++ b/code/modules/power/power.dm @@ -294,6 +294,8 @@ for(var/obj/structure/cable/Cable in net2.cables) //merge cables net1.add_cable(Cable) + if(!net2) return net1 + for(var/obj/machinery/power/Node in net2.nodes) //merge power machines if(!Node.connect_to_network()) Node.disconnect_from_network() //if somehow we can't connect the machine to the new powernet, disconnect it from the old nonetheless diff --git a/code/modules/power/powernet.dm b/code/modules/power/powernet.dm index 401cb41af7..791b69e949 100644 --- a/code/modules/power/powernet.dm +++ b/code/modules/power/powernet.dm @@ -16,9 +16,11 @@ /datum/powernet/New() powernets += src + ..() /datum/powernet/Del() powernets -= src + ..() //Returns the amount of excess power (before refunding to SMESs) from last tick. //This is for machines that might adjust their power consumption using this data. @@ -110,8 +112,7 @@ S.restore() // and restore some of the power that was used //updates the viewed load (as seen on power computers) - viewload = 0.8*viewload + 0.2*load - viewload = round(viewload) + viewload = round(load) //reset the powernet load = 0 diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm index 8f90743e46..0825d9a194 100644 --- a/code/modules/power/singularity/singularity.dm +++ b/code/modules/power/singularity/singularity.dm @@ -206,8 +206,6 @@ var/global/list/uneatable = list( /obj/machinery/singularity/proc/eat() set background = 1 - if(defer_powernet_rebuild != 2) - defer_powernet_rebuild = 1 // Let's just make this one loop. for(var/atom/X in orange(grav_pull,src)) var/dist = get_dist(X, src) @@ -226,9 +224,6 @@ var/global/list/uneatable = list( // Turf and movable atoms else if(dist <= consume_range && (isturf(X) || istype(X, /atom/movable))) consume(X) - - if(defer_powernet_rebuild != 2) - defer_powernet_rebuild = 0 return @@ -567,11 +562,7 @@ var/global/list/uneatable = list( /obj/machinery/singularity/narsie/wizard/eat() set background = 1 - if(defer_powernet_rebuild != 2) - defer_powernet_rebuild = 1 for(var/atom/X in orange(consume_range,src)) if(isturf(X) || istype(X, /atom/movable)) consume(X) - if(defer_powernet_rebuild != 2) - defer_powernet_rebuild = 0 return diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm index 11bcef5881..18aa6b4885 100644 --- a/code/modules/power/smes.dm +++ b/code/modules/power/smes.dm @@ -301,6 +301,13 @@ data["outputMax"] = output_level_max data["outputLoad"] = round(output_used) + if(outputting) + data["outputting"] = 2 // smes is outputting + else if(!outputting && output_attempt) + data["outputting"] = 1 // smes is online but not outputting because it's charge level is too low + else + data["outputting"] = 0 // smes is not outputting + // update the ui if it exists, returns null if no ui is passed/found ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) if (!ui) @@ -322,11 +329,11 @@ return 1 if( href_list["cmode"] ) - inputting(!inputting) + inputting(!input_attempt) update_icon() else if( href_list["online"] ) - outputting(!outputting) + outputting(!output_attempt) update_icon() else if( href_list["input"] ) switch( href_list["input"] ) diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index 6fd9de29f7..1e7d7bdd56 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -427,7 +427,7 @@ datum holder.remove_reagent(src.id, 0.25 * REAGENTS_METABOLISM) return -/* silicate + silicate name = "Silicate" id = "silicate" description = "A compound that can be used to reinforce glass." @@ -437,31 +437,9 @@ datum reaction_obj(var/obj/O, var/volume) src = null if(istype(O,/obj/structure/window)) - if(O:silicate <= 200) - - O:silicate += volume - O:health += volume * 3 - - if(!O:silicateIcon) - var/icon/I = icon(O.icon,O.icon_state,O.dir) - - var/r = (volume / 100) + 1 - var/g = (volume / 70) + 1 - var/b = (volume / 50) + 1 - I.SetIntensity(r,g,b) - O.icon = I - O:silicateIcon = I - else - var/icon/I = O:silicateIcon - - var/r = (volume / 100) + 1 - var/g = (volume / 70) + 1 - var/b = (volume / 50) + 1 - I.SetIntensity(r,g,b) - O.icon = I - O:silicateIcon = I - - return*/ + var/obj/structure/window/W = O + W.apply_silicate(volume) + return oxygen name = "Oxygen" diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm index df9c8a219a..b9c657f97e 100644 --- a/code/modules/reagents/Chemistry-Recipes.dm +++ b/code/modules/reagents/Chemistry-Recipes.dm @@ -55,14 +55,14 @@ datum empulse(location, round(created_volume / 24), round(created_volume / 14), 1) holder.clear_reagents() return -/* + silicate name = "Silicate" id = "silicate" result = "silicate" required_reagents = list("aluminum" = 1, "silicon" = 1, "oxygen" = 1) result_amount = 3 -*/ + stoxin name = "Soporific" id = "stoxin" diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm index 1db8fa1aa4..d3a118207e 100644 --- a/code/modules/reagents/reagent_containers/spray.dm +++ b/code/modules/reagents/reagent_containers/spray.dm @@ -21,7 +21,7 @@ ..() src.verbs -= /obj/item/weapon/reagent_containers/verb/set_APTFT -/obj/item/weapon/reagent_containers/spray/afterattack(atom/A as mob|obj, mob/user as mob) +/obj/item/weapon/reagent_containers/spray/afterattack(atom/A as mob|obj, mob/user as mob, proximity) if(istype(A, /obj/item/weapon/storage) || istype(A, /obj/structure/table) || istype(A, /obj/structure/closet) \ || istype(A, /obj/item/weapon/reagent_containers) || istype(A, /obj/structure/sink) || istype(A, /obj/structure/janitorialcart)) return @@ -46,7 +46,7 @@ user << "\The [src] is empty!" return - Spray_at(A) + Spray_at(A, user, proximity) playsound(src.loc, 'sound/effects/spray2.ogg', 50, 1, -6) @@ -61,28 +61,39 @@ log_game("[key_name(user)] fired Space lube from \a [src].") return -/obj/item/weapon/reagent_containers/spray/proc/Spray_at(atom/A as mob|obj) - var/obj/effect/decal/chempuff/D = new/obj/effect/decal/chempuff(get_turf(src)) - D.create_reagents(amount_per_transfer_from_this) - reagents.trans_to(D, amount_per_transfer_from_this, 1/spray_size) - D.icon += mix_color_from_reagents(D.reagents.reagent_list) +/obj/item/weapon/reagent_containers/spray/proc/Spray_at(atom/A as mob|obj, mob/user as mob, proximity) + if (A.density && proximity) + A.visible_message("[usr] sprays [A] with [src].") + var/obj/D = new/obj() + D.create_reagents(amount_per_transfer_from_this) + reagents.trans_to(D, amount_per_transfer_from_this) + D.icon += mix_color_from_reagents(D.reagents.reagent_list) + spawn(0) + D.reagents.reaction(A) + sleep(5) + del(D) + else + var/obj/effect/decal/chempuff/D = new/obj/effect/decal/chempuff(get_turf(src)) + D.create_reagents(amount_per_transfer_from_this) + reagents.trans_to(D, amount_per_transfer_from_this, 1/spray_size) + D.icon += mix_color_from_reagents(D.reagents.reagent_list) - var/turf/A_turf = get_turf(A)//BS12 + var/turf/A_turf = get_turf(A)//BS12 - spawn(0) - for(var/i=0, i stage*100 && prob(10)) + if(clicks > max(stage*100, 200) && prob(10)) if(stage == max_stage) src.cure(mob) mob.antibodies |= src.antigen @@ -84,7 +88,8 @@ clicks = 0 //Do nasty effects for(var/datum/disease2/effectholder/e in effects) - e.runeffect(mob,stage) + if(prob(33)) + e.runeffect(mob,stage) //Short airborne spread if(src.spreadtype == "Airborne") diff --git a/code/modules/virus2/effect.dm b/code/modules/virus2/effect.dm index 3ebeefeba8..50d7bcb569 100644 --- a/code/modules/virus2/effect.dm +++ b/code/modules/virus2/effect.dm @@ -9,7 +9,7 @@ /datum/disease2/effectholder/proc/runeffect(var/mob/living/carbon/human/mob,var/stage) if(happensonce > -1 && effect.stage <= stage && prob(chance)) - effect.activate(mob) + effect.activate(mob, multiplier) if(happensonce == 1) happensonce = -1 @@ -33,14 +33,14 @@ multiplier = rand(1,effect.maxm) /datum/disease2/effectholder/proc/majormutate() - getrandomeffect(2) + getrandomeffect(3) //////////////////////////////////////////////////////////////// ////////////////////////EFFECTS///////////////////////////////// //////////////////////////////////////////////////////////////// /datum/disease2/effect - var/chance_maxm = 50 + var/chance_maxm = 50 //note that disease effects only proc once every 3 ticks for humans var/name = "Blanking effect" var/stage = 4 var/maxm = 1 @@ -56,10 +56,16 @@ ////////////////////////STAGE 4///////////////////////////////// +/datum/disease2/effect/nothing + name = "Nil Syndrome" + stage = 4 + badness = 1 + chance_maxm = 0 + /datum/disease2/effect/gibbingtons name = "Gibbingtons Syndrome" stage = 4 - badness = 2 + badness = 3 activate(var/mob/living/carbon/mob,var/multiplier) mob.gib() @@ -67,19 +73,21 @@ name = "Radian's Syndrome" stage = 4 maxm = 3 + badness = 2 activate(var/mob/living/carbon/mob,var/multiplier) mob.radiation += (2*multiplier) /datum/disease2/effect/deaf name = "Dead Ear Syndrome" stage = 4 + badness = 2 activate(var/mob/living/carbon/mob,var/multiplier) mob.ear_deaf += 20 /datum/disease2/effect/monkey name = "Monkism Syndrome" stage = 4 - badness = 2 + badness = 3 activate(var/mob/living/carbon/mob,var/multiplier) if(istype(mob,/mob/living/carbon/human)) var/mob/living/carbon/human/h = mob @@ -88,7 +96,7 @@ /datum/disease2/effect/suicide name = "Suicidal Syndrome" stage = 4 - badness = 2 + badness = 3 activate(var/mob/living/carbon/mob,var/multiplier) mob.suiciding = 1 //instead of killing them instantly, just put them at -175 health and let 'em gasp for a while @@ -101,12 +109,14 @@ /datum/disease2/effect/killertoxins name = "Toxification Syndrome" stage = 4 + badness = 2 activate(var/mob/living/carbon/mob,var/multiplier) mob.adjustToxLoss(15*multiplier) /datum/disease2/effect/dna name = "Reverse Pattern Syndrome" stage = 4 + badness = 2 activate(var/mob/living/carbon/mob,var/multiplier) mob.bodytemperature = max(mob.bodytemperature, 350) scramble(0,mob,10) @@ -115,6 +125,7 @@ /datum/disease2/effect/organs name = "Shutdown Syndrome" stage = 4 + badness = 2 activate(var/mob/living/carbon/mob,var/multiplier) if(istype(mob, /mob/living/carbon/human)) var/mob/living/carbon/human/H = mob @@ -140,6 +151,7 @@ /datum/disease2/effect/immortal name = "Longevity Syndrome" stage = 4 + badness = 2 activate(var/mob/living/carbon/mob,var/multiplier) if(istype(mob, /mob/living/carbon/human)) var/mob/living/carbon/human/H = mob @@ -157,11 +169,10 @@ var/backlash_amt = 5*multiplier mob.apply_damages(backlash_amt,backlash_amt,backlash_amt,backlash_amt) -////////////////////////STAGE 3///////////////////////////////// - /datum/disease2/effect/bones name = "Fragile Bones Syndrome" stage = 4 + badness = 2 activate(var/mob/living/carbon/mob,var/multiplier) if(istype(mob, /mob/living/carbon/human)) var/mob/living/carbon/human/H = mob @@ -174,6 +185,8 @@ for (var/datum/organ/external/E in H.organs) E.min_broken_damage = initial(E.min_broken_damage) +////////////////////////STAGE 3///////////////////////////////// + /datum/disease2/effect/toxins name = "Hyperacidity" stage = 3 @@ -192,9 +205,8 @@ name = "Telepathy Syndrome" stage = 3 activate(var/mob/living/carbon/mob,var/multiplier) - mob.dna.check_integrity() mob.dna.SetSEState(REMOTETALKBLOCK,1) - domutcheck(mob, null) + domutcheck(mob, null, MUTCHK_FORCED) /datum/disease2/effect/mind name = "Lazy Mind Syndrome" @@ -239,10 +251,10 @@ activate(var/mob/living/carbon/mob,var/multiplier) mob.apply_damage(2, CLONE) - /datum/disease2/effect/groan name = "Groaning Syndrome" stage = 3 + chance_maxm = 25 activate(var/mob/living/carbon/mob,var/multiplier) mob.say("*groan") ////////////////////////STAGE 2///////////////////////////////// @@ -250,6 +262,7 @@ /datum/disease2/effect/scream name = "Loudness Syndrome" stage = 2 + chance_maxm = 25 activate(var/mob/living/carbon/mob,var/multiplier) mob.say("*scream") @@ -262,6 +275,7 @@ /datum/disease2/effect/sleepy name = "Resting Syndrome" stage = 2 + chance_maxm = 15 activate(var/mob/living/carbon/mob,var/multiplier) mob.say("*collapse") @@ -288,6 +302,7 @@ /datum/disease2/effect/fridge name = "Refridgerator Syndrome" stage = 2 + chance_maxm = 25 activate(var/mob/living/carbon/mob,var/multiplier) mob.say("*shiver") @@ -333,17 +348,19 @@ name = "Flemmingtons" stage = 1 activate(var/mob/living/carbon/mob,var/multiplier) - mob << "\red Mucous runs down the back of your throat." + mob << "Mucous runs down the back of your throat." /datum/disease2/effect/drool name = "Saliva Effect" stage = 1 + chance_maxm = 25 activate(var/mob/living/carbon/mob,var/multiplier) mob.say("*drool") /datum/disease2/effect/twitch name = "Twitcher" stage = 1 + chance_maxm = 25 activate(var/mob/living/carbon/mob,var/multiplier) mob.say("*twitch") @@ -351,4 +368,4 @@ name = "Headache" stage = 1 activate(var/mob/living/carbon/mob,var/multiplier) - mob << " Your head hurts a bit" + mob << "Your head hurts a bit." diff --git a/code/modules/virus2/helpers.dm b/code/modules/virus2/helpers.dm index 6118dade42..18c2db0f14 100644 --- a/code/modules/virus2/helpers.dm +++ b/code/modules/virus2/helpers.dm @@ -1,49 +1,58 @@ -//Returns 1 if mob can be infected, 0 otherwise. Checks his clothing. -proc/get_infection_chance(var/mob/living/carbon/M, var/vector = "Airborne") - var/score = 0 +//Returns 1 if mob can be infected, 0 otherwise. +proc/infection_check(var/mob/living/carbon/M, var/vector = "Airborne") if (!istype(M)) return 0 - if(istype(M, /mob/living/carbon/human)) + var/protection = M.getarmor(null, "bio") //gets the full body bio armour value, weighted by body part coverage. + var/score = round(0.06*protection) //scales 100% protection to 6. - if (vector == "Airborne") - if(M.internal) //not breathing infected air helps greatly - score = 30 - if(M.wear_mask) - score += 5 - if(istype(M:wear_mask, /obj/item/clothing/mask/surgical) && !M.internal) - score += 10 - if(istype(M:wear_suit, /obj/item/clothing/suit/space) && istype(M:head, /obj/item/clothing/head/helmet/space)) - score += 20 - if(istype(M:wear_suit, /obj/item/clothing/suit/bio_suit) && istype(M:head, /obj/item/clothing/head/bio_hood)) - score += 30 + switch(vector) + if("Airborne") + if(M.internal) + score = 6 //not breathing infected air helps greatly + var/obj/item/I = M.wear_mask + + //masks provide a small bonus and can replace overall bio protection + score = max(score, round(0.06*I.armor["bio"])) + if (istype(I, /obj/item/clothing/mask)) + score += 1 //this should be added after + + if("Contact") + if(istype(M, /mob/living/carbon/human)) + var/mob/living/carbon/human/H = M + + //gloves provide a larger bonus + if (istype(H.gloves, /obj/item/clothing/gloves)) + score += 2 - - if (vector == "Contact") - if(M:gloves) score += 15 - if(istype(M:wear_suit, /obj/item/clothing/suit/space) && istype(M:head, /obj/item/clothing/head/helmet/space)) - score += 15 - if(istype(M:wear_suit, /obj/item/clothing/suit/bio_suit) && istype(M:head, /obj/item/clothing/head/bio_hood)) - score += 15 - - -// log_debug("[M]'s resistance to [vector] viruses: [score]") - - if(score >= 30) + if(score >= 6) return 0 - else if(score == 25 && prob(99)) + else if(score >= 5 && prob(99)) return 0 - else if(score == 20 && prob(95)) + else if(score >= 4 && prob(95)) return 0 - else if(score == 15 && prob(75)) + else if(score >= 3 && prob(75)) return 0 - else if(score == 10 && prob(55)) + else if(score >= 2 && prob(55)) return 0 - else if(score == 5 && prob(35)) + else if(score >= 1 && prob(35)) return 0 -// log_debug("Infection got through") return 1 +//Similar to infection check, but used for when M is spreading the virus. +/proc/infection_spreading_check(var/mob/living/carbon/M, var/vector = "Airborne") + if (!istype(M)) + return 0 + + var/protection = M.getarmor(null, "bio") //gets the full body bio armour value, weighted by body part coverage. + + if (vector == "Airborne") + var/obj/item/I = M.wear_mask + if (istype(I)) + protection = max(protection, round(0.06*I.armor["bio"])) + + return prob(protection) + //Checks if table-passing table can reach target (5 tile radius) proc/airborne_can_reach(turf/source, turf/target) var/obj/dummy = new(source) @@ -72,44 +81,42 @@ proc/airborne_can_reach(turf/source, turf/target) return if(M.reagents.has_reagent("spaceacillin")) return - - if(istype(M,/mob/living/carbon/monkey)) - var/mob/living/carbon/monkey/chimp = M - if (!(chimp.greaterform in disease.affected_species)) - return - - if(istype(M,/mob/living/carbon/human)) - var/mob/living/carbon/human/chump = M - if (!(chump.species.name in disease.affected_species)) - return + + if(!disease.affected_species.len) + return + + if (!(M.species.name in disease.affected_species)) + if (forced) + disease.affected_species[1] = M.species.name + else + return //not compatible with this species // log_debug("Infecting [M]") - if(prob(disease.infectionchance) || forced) - // certain clothes can prevent an infection - if(!forced && !get_infection_chance(M, disease.spreadtype)) - return - + if(forced || (infection_check(M, disease.spreadtype) && prob(disease.infectionchance))) var/datum/disease2/disease/D = disease.getcopy() D.minormutate() // log_debug("Adding virus") M.virus2["[D.uniqueID]"] = D M.hud_updateflag |= 1 << STATUS_HUD + +//Infects mob M with disease D +/proc/infect_mob(var/mob/living/carbon/M, var/datum/disease2/disease/D) + infect_virus2(M,D,1) + M.hud_updateflag |= 1 << STATUS_HUD + //Infects mob M with random lesser disease, if he doesn't have one /proc/infect_mob_random_lesser(var/mob/living/carbon/M) var/datum/disease2/disease/D = new /datum/disease2/disease - D.makerandom() - D.infectionchance = 1 - infect_virus2(M,D,1) - M.hud_updateflag |= 1 << STATUS_HUD + D.makerandom(1) + infect_mob(M, D) //Infects mob M with random greated disease, if he doesn't have one /proc/infect_mob_random_greater(var/mob/living/carbon/M) var/datum/disease2/disease/D = new /datum/disease2/disease - D.makerandom(1) - infect_virus2(M,D,1) - M.hud_updateflag |= 1 << STATUS_HUD + D.makerandom(2) + infect_mob(M, D) //Fancy prob() function. /proc/dprob(var/p) @@ -125,12 +132,15 @@ proc/airborne_can_reach(turf/source, turf/target) // log_debug("Attempting virus [ID]") var/datum/disease2/disease/V = virus2[ID] if(V.spreadtype != vector) continue + + //It's hard to get other people sick if you're in an airtight suit. + if(!infection_spreading_check(src, V.spreadtype)) continue if (vector == "Airborne") if(airborne_can_reach(get_turf(src), get_turf(victim))) // log_debug("In range, infecting") infect_virus2(victim,V) - else +// else // log_debug("Could not reach target") if (vector == "Contact") @@ -147,7 +157,7 @@ proc/airborne_can_reach(turf/source, turf/target) var/mob/living/carbon/human/H = victim var/datum/organ/external/select_area = H.get_organ(src.zone_sel.selecting) var/list/clothes = list(H.head, H.wear_mask, H.wear_suit, H.w_uniform, H.gloves, H.shoes) - for(var/obj/item/clothing/C in clothes ) + for(var/obj/item/clothing/C in clothes) if(C && istype(C)) if(C.body_parts_covered & select_area.body_part) nudity = 0 @@ -155,4 +165,5 @@ proc/airborne_can_reach(turf/source, turf/target) for (var/ID in victim.virus2) var/datum/disease2/disease/V = victim.virus2[ID] if(V && V.spreadtype != vector) continue + if(!infection_spreading_check(victim, V.spreadtype)) continue infect_virus2(src,V) diff --git a/code/setup.dm b/code/setup.dm index 4332480676..338181e50e 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -11,8 +11,9 @@ //radiation constants #define STEFAN_BOLTZMANN_CONSTANT 5.6704e-8 //W/(m^2*K^4) #define COSMIC_RADIATION_TEMPERATURE 3.15 //K -#define AVERAGE_SOLAR_RADIATION 200 //W/m^2. Kind of arbitrary. Really this should depend on the sun position much like solars. +#define AVERAGE_SOLAR_RADIATION 200 //W/m^2. Kind of arbitrary. Really this should depend on the sun position much like solars. From the numbers on Erebus, this'd be an orbit of 23.3 lightseconds. #define RADIATOR_OPTIMUM_PRESSURE 110 //kPa at 20 C +#define RADIATOR_EXPOSED_SURFACE_AREA 0.03 //The pipe looks to be thin vertically and wide horizontally, so we'll assume that it's three centimeters thick and only explosed to the sun edge-on. #define CELL_VOLUME 2500 //liters in a cell #define MOLES_CELLSTANDARD (ONE_ATMOSPHERE*CELL_VOLUME/(T20C*R_IDEAL_GAS_EQUATION)) //moles in a 2.5 m^3 cell at 101.325 Pa and 20 degC diff --git a/code/stylesheet.dm b/code/stylesheet.dm index 937b5a71c3..5bb538a3dc 100644 --- a/code/stylesheet.dm +++ b/code/stylesheet.dm @@ -28,8 +28,8 @@ em {font-style: normal;font-weight: bold;} /* Admin: Private Messages */ .pm .howto {color: #ff0000; font-weight: bold; font-size: 200%;} .pm .in {color: #ff0000;} -.pm .out {color: #B54A4A;} -.pm .other {color: #164664;} +.pm .out {color: #ff0000;} +.pm .other {color: #0000ff;} /* Admin: Channels */ .mod_channel {color: #735638; font-weight: bold;} diff --git a/code/game/objects/closets/ert.dm b/code/unused/closets/ert.dm similarity index 100% rename from code/game/objects/closets/ert.dm rename to code/unused/closets/ert.dm diff --git a/code/game/objects/closets/secure/civilian.dm b/code/unused/closets/secure/civilian.dm similarity index 100% rename from code/game/objects/closets/secure/civilian.dm rename to code/unused/closets/secure/civilian.dm diff --git a/code/game/objects/closets/secure/research.dm b/code/unused/closets/secure/research.dm old mode 100755 new mode 100644 similarity index 100% rename from code/game/objects/closets/secure/research.dm rename to code/unused/closets/secure/research.dm diff --git a/icons/mob/items_lefthand.dmi b/icons/mob/items_lefthand.dmi index 53cf56309f..9d7c3845d9 100644 Binary files a/icons/mob/items_lefthand.dmi and b/icons/mob/items_lefthand.dmi differ diff --git a/icons/mob/items_righthand.dmi b/icons/mob/items_righthand.dmi index cae6ddf042..6155e0994c 100644 Binary files a/icons/mob/items_righthand.dmi and b/icons/mob/items_righthand.dmi differ diff --git a/icons/obj/doors/DoorHazard.dmi b/icons/obj/doors/DoorHazard.dmi index 037c1475f2..35f4c474bf 100644 Binary files a/icons/obj/doors/DoorHazard.dmi and b/icons/obj/doors/DoorHazard.dmi differ diff --git a/maps/exodus-1.dmm b/maps/exodus-1.dmm index 1eac9b7512..6c0d0758c5 100644 --- a/maps/exodus-1.dmm +++ b/maps/exodus-1.dmm @@ -466,8 +466,8 @@ "aiX" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/security/main) "aiY" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/security/main) "aiZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/main) -"aja" = (/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = -32},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/main) -"ajb" = (/obj/structure/table,/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = -32},/obj/item/clothing/tie/holobadge,/obj/item/clothing/tie/holobadge,/obj/item/clothing/tie/holobadge/cord,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/main) +"aja" = (/obj/machinery/camera{c_tag = "Brig East"; dir = 1},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/computer/guestpass{pixel_y = -29},/turf/simulated/floor,/area/security/brig) +"ajb" = (/obj/machinery/light{dir = 1},/obj/machinery/firealarm{pixel_y = 24},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/brig) "ajc" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/wall,/area/crew_quarters/heads/hos) "ajd" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/camera{c_tag = "HoS Office South"; dir = 1},/obj/structure/flora/pottedplant,/obj/machinery/newscaster/security_unit{pixel_x = -30},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/heads/hos) "aje" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/heads/hos) @@ -523,7 +523,7 @@ "akc" = (/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/brig) "akd" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/brig) "ake" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/security/brig) -"akf" = (/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/brig) +"akf" = (/obj/structure/table,/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = -28},/obj/item/clothing/tie/holobadge,/obj/item/clothing/tie/holobadge,/obj/item/clothing/tie/holobadge/cord,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/main) "akg" = (/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor{icon_state = "red"; dir = 5},/area/security/brig) "akh" = (/obj/structure/table/rack,/obj/item/weapon/storage/briefcase{pixel_x = -2; pixel_y = -5},/obj/item/weapon/storage/briefcase{pixel_x = 3; pixel_y = 0},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) "aki" = (/obj/structure/disposalpipe/segment,/obj/structure/closet{name = "Evidence Closet"},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) @@ -557,7 +557,7 @@ "akK" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/security/brig) "akL" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/security/brig) "akM" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/turf/simulated/floor,/area/security/brig) -"akN" = (/obj/machinery/camera{c_tag = "Brig East"; dir = 1},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/security/brig) +"akN" = (/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = -28},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/main) "akO" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor,/area/security/brig) "akP" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/security/brig) "akQ" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor,/area/security/brig) @@ -645,7 +645,7 @@ "amu" = (/obj/machinery/door/airlock/engineering{name = "Security Substation"; req_access_txt = "0"; req_one_access_txt = "11;24"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/substation/security) "amv" = (/obj/machinery/light/small{dir = 1},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/power/sensor{name = "Powernet Sensor - Security Subgrid"; name_tag = "Security Subgrid"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green,/turf/simulated/floor/plating,/area/maintenance/substation/security) "amw" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/substation/security) -"amx" = (/turf/simulated/floor/plating,/area/space) +"amx" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "arrivals_airlock"; name = "exterior access button"; pixel_x = -25; pixel_y = -25; req_access_txt = "13"},/turf/simulated/floor/plating/airless,/area/space) "amy" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Prison Gate"; name = "Security Blast Door"; opacity = 0},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/glass_security{name = "Security Lobby"; req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/hallway/primary/fore) "amz" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Prison Gate"; name = "Security Blast Door"; opacity = 0},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/hallway/primary/fore) "amA" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/machinery/camera{c_tag = "Brig Toxin Control"; dir = 4; network = list("SS13")},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 10},/area/security/brig) @@ -763,7 +763,7 @@ "aoI" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/dormitory) "aoJ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/maintenance/dormitory) "aoK" = (/turf/simulated/floor/plating,/area/maintenance/dormitory) -"aoL" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "dorm_airlock"; name = "exterior access button"; pixel_x = -25; pixel_y = -25; req_access_txt = "13"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/dormitory) +"aoL" = (/turf/simulated/floor/plating/airless,/area/maintenance/dormitory) "aoM" = (/obj/machinery/door/blast/regular{id = "Cell 2"; name = "Cell Door"},/turf/simulated/floor,/area/security/prison) "aoN" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/structure/cable/green,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/security/prison) "aoO" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/security/prison) @@ -878,7 +878,7 @@ "aqT" = (/turf/simulated/floor/plating/airless,/area/solar/fore) "aqU" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice) "aqV" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice) -"aqW" = (/obj/structure/stool/bed/chair/office/dark,/obj/effect/landmark/start{name = "Internal Affairs Agent"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/junction,/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice) +"aqW" = (/obj/structure/stool/bed/chair/office/dark,/obj/effect/landmark/start{name = "Internal Affairs Agent"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice) "aqX" = (/obj/machinery/camera{c_tag = "Detective South"; dir = 1},/obj/machinery/computer/secure_data,/turf/simulated/floor{icon_state = "white"},/area/security/detectives_office) "aqY" = (/obj/structure/disposalpipe/segment,/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = -30},/turf/simulated/floor{icon_state = "white"},/area/security/detectives_office) "aqZ" = (/obj/structure/closet{name = "Evidence Closet"},/obj/item/weapon/storage/box/bodybags,/obj/item/weapon/storage/box/evidence,/turf/simulated/floor{icon_state = "white"},/area/security/detectives_office) @@ -923,7 +923,7 @@ "arM" = (/obj/structure/stool/bed/chair/wood/wings{icon_state = "wooden_chair_wings"; dir = 1},/turf/simulated/floor/wood,/area/maintenance/dormitory) "arN" = (/obj/machinery/vending/cigarette,/turf/simulated/floor/wood,/area/maintenance/dormitory) "arO" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "dorm_inner"; locked = 1; name = "Dormitory Internal Access"; req_access = null; req_access_txt = "13"},/obj/machinery/atmospherics/pipe/simple/visible,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/dormitory) -"arP" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "arrivals_airlock"; name = "exterior access button"; pixel_x = -25; pixel_y = -25; req_access_txt = "13"},/turf/simulated/floor/plating,/area/space) +"arP" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "dorm_airlock"; name = "exterior access button"; pixel_x = -25; pixel_y = -25; req_access_txt = "13"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating/airless,/area/maintenance/dormitory) "arQ" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plating,/area/maintenance/evahallway) "arR" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/security/brig) "arS" = (/obj/machinery/door/airlock/glass_security{name = "Solitary Confinement 1"; req_access_txt = "2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/security/brig) @@ -1051,13 +1051,13 @@ "auk" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/security/prison) "aul" = (/obj/structure/closet{name = "Prisoner's Locker"},/obj/item/weapon/flame/lighter/zippo,/obj/item/weapon/storage/fancy/cigarettes,/turf/simulated/floor,/area/security/prison) "aum" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/orange,/obj/machinery/camera{c_tag = "Bedroom"; dir = 6; network = list("SS13","Prison")},/turf/simulated/floor,/area/security/prison) -"aun" = (/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor,/area/security/prison) +"aun" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/machinery/computer/cryopod{density = 0; layer = 3.3; pixel_y = 32},/obj/machinery/light_switch{pixel_x = -25; pixel_y = 24},/turf/simulated/floor,/area/security/prison) "auo" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/orange,/obj/effect/decal/cleanable/generic,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) "aup" = (/obj/structure/closet{name = "Prisoner's Locker"},/obj/random/tech_supply,/obj/item/clothing/head/flatcap,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) "auq" = (/obj/machinery/atm{pixel_x = -25},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/hallway/primary/fore) "aur" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/hallway/primary/fore) "aus" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/hallway/primary/fore) -"aut" = (/obj/machinery/light_switch{pixel_x = 22; pixel_y = 10},/obj/structure/closet/secure_closet/personal,/turf/simulated/floor/wood,/area/crew_quarters/sleep/bedrooms) +"aut" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor,/area/security/prison) "auu" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/mime,/obj/machinery/atmospherics/unary/vent_pump/on,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/wood,/area/crew_quarters/sleep/bedrooms) "auv" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/mime,/turf/simulated/floor/wood,/area/crew_quarters/sleep/bedrooms) "auw" = (/obj/structure/closet/secure_closet/personal,/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/crew_quarters/fitness) @@ -1074,7 +1074,7 @@ "auH" = (/turf/simulated/floor/beach/water{tag = "icon-seadeep"; icon_state = "seadeep"},/area/crew_quarters/fitness) "auI" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/beach/water{tag = "icon-seadeep"; icon_state = "seadeep"},/area/crew_quarters/fitness) "auJ" = (/obj/structure/window/basic{dir = 4},/turf/simulated/floor/beach/water{tag = "icon-seadeep"; icon_state = "seadeep"},/area/crew_quarters/fitness) -"auK" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/carpet{tag = "icon-carpet3-0"; icon_state = "carpet3-0"},/area/crew_quarters/sleep/bedrooms) +"auK" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/stool/bed,/obj/item/weapon/bedsheet/mime,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/wood,/area/crew_quarters/sleep/bedrooms) "auL" = (/obj/machinery/vending/cola,/turf/simulated/floor{icon_state = "neutral"; dir = 5},/area/crew_quarters/fitness) "auM" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/crew_quarters/fitness) "auN" = (/turf/simulated/wall,/area/hallway/secondary/entry/fore) @@ -1102,10 +1102,10 @@ "avj" = (/obj/structure/cryofeed,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) "avk" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/cable/green,/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/hallway/primary/fore) "avl" = (/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/hallway/primary/fore) -"avm" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plating,/area/maintenance/dormitory) -"avn" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/mime,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/wood,/area/crew_quarters/sleep/bedrooms) +"avm" = (/obj/machinery/light_switch{pixel_x = 22; pixel_y = 10},/obj/structure/stool/bed,/obj/item/weapon/bedsheet/mime,/turf/simulated/floor/wood,/area/crew_quarters/sleep/bedrooms) +"avn" = (/turf/simulated/floor{icon_state = "neutralcorner"; dir = 4},/area/crew_quarters/sleep) "avo" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/carpet{tag = "icon-carpet3-0"; icon_state = "carpet3-0"},/area/crew_quarters/sleep/bedrooms) -"avp" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/crew_quarters/sleep) +"avp" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plating,/area/maintenance/dormitory) "avq" = (/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/crew_quarters/sleep) "avr" = (/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/sleep/cryo) "avs" = (/obj/effect/landmark{name = "JoinLateCryo"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/sleep/cryo) @@ -1151,7 +1151,7 @@ "awg" = (/obj/structure/table,/obj/structure/bedsheetbin,/turf/simulated/floor,/area/security/prison) "awh" = (/obj/structure/closet{name = "Prisoner's Locker"},/obj/item/clothing/head/soft/orange,/obj/item/clothing/shoes/sandal,/turf/simulated/floor,/area/security/prison) "awi" = (/obj/machinery/light,/obj/structure/stool/bed,/obj/item/weapon/bedsheet/orange,/turf/simulated/floor,/area/security/prison) -"awj" = (/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 0; pixel_y = -22},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor,/area/security/prison) +"awj" = (/turf/simulated/floor/wood,/area/crew_quarters/sleep/bedrooms) "awk" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/orange,/turf/simulated/floor,/area/security/prison) "awl" = (/obj/structure/closet{name = "Prisoner's Locker"},/obj/item/weapon/reagent_containers/food/drinks/bottle/absinthe,/obj/item/clothing/suit/apron/overalls,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) "awm" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/hallway/primary/fore) @@ -1238,7 +1238,7 @@ "axP" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/fore) "axQ" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/junction{icon_state = "pipe-j2"; dir = 4},/turf/simulated/floor,/area/hallway/primary/fore) "axR" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/fore) -"axS" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/dormitory) +"axS" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/structure/closet/secure_closet/personal,/turf/simulated/floor/wood,/area/crew_quarters/sleep/bedrooms) "axT" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/mime,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor/wood,/area/crew_quarters/sleep/bedrooms) "axU" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/closet/secure_closet/personal,/turf/simulated/floor/wood,/area/crew_quarters/sleep/bedrooms) "axV" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/crew_quarters/sleep) @@ -1289,7 +1289,7 @@ "ayO" = (/obj/machinery/camera{c_tag = "Fore Primary Hallway"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/fore) "ayP" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/primary/fore) "ayQ" = (/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/fore) -"ayR" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/mime,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/wood,/area/crew_quarters/sleep/bedrooms) +"ayR" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/crew_quarters/sleep) "ayS" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/machinery/camera{c_tag = "Dormitory Bedroom Fore"},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/carpet{tag = "icon-carpet2-0"; icon_state = "carpet2-0"},/area/crew_quarters/sleep/bedrooms) "ayT" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/crew_quarters/sleep) "ayU" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/crew_quarters/sleep) @@ -1404,7 +1404,7 @@ "aAZ" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/mime,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/wood,/area/crew_quarters/sleep/bedrooms) "aBa" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/mime,/obj/machinery/light/small{dir = 4},/obj/machinery/light_switch{pixel_x = 22; pixel_y = 10},/turf/simulated/floor/wood,/area/crew_quarters/sleep/bedrooms) "aBb" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock{id_tag = "Dormitory 2"; name = "Dorm"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/sleep) -"aBc" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/crew_quarters/sleep) +"aBc" = (/obj/machinery/camera{c_tag = "Dormitory Bedroom Aft"; dir = 1},/turf/simulated/floor/carpet{tag = "icon-carpet1-0"; icon_state = "carpet1-0"},/area/crew_quarters/sleep/bedrooms) "aBd" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "neutralcorner"; dir = 2},/area/crew_quarters/sleep) "aBe" = (/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/flora/pottedplant{tag = "icon-plant-22"; icon_state = "plant-22"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{icon_state = "neutral"},/area/crew_quarters/sleep) "aBf" = (/obj/machinery/light_switch{pixel_y = -25},/obj/structure/closet/secure_closet/personal,/turf/simulated/floor{icon_state = "neutral"},/area/crew_quarters/sleep) @@ -1847,7 +1847,7 @@ "aJA" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/bar) "aJB" = (/obj/structure/disposalpipe/sortjunction{dir = 4; icon_state = "pipe-j1s"; sortType = "Hydroponics"; name = "Hydroponics"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/maintenance/bar) "aJC" = (/obj/machinery/light/small{dir = 8},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/dormitory) -"aJD" = (/obj/machinery/camera{c_tag = "Dormitory Bedroom Aft"; dir = 1},/turf/simulated/floor/carpet{tag = "icon-carpet3-0"; icon_state = "carpet3-0"},/area/crew_quarters/sleep/bedrooms) +"aJD" = (/obj/structure/table/reinforced,/obj/item/device/radio/intercom{freerange = 1; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 28},/obj/item/weapon/packageWrap,/obj/item/weapon/hand_labeler,/obj/item/weapon/reagent_containers/spray/cleaner{desc = "Someone has crossed out the 'Space' from Space Cleaner and written in Chemistry. Scrawled on the back is, 'Okay, whoever filled this with polytrinic acid, it was only funny the first time. It was hard enough replacing the CMO's first cat!'"; name = "Chemistry Cleaner"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "aJE" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/sleep/engi_wash) "aJF" = (/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/sleep/engi_wash) "aJG" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/meter,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/bar) @@ -3570,9 +3570,9 @@ "bqH" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/beakers,/obj/item/weapon/storage/box/beakers,/obj/item/weapon/reagent_containers/dropper,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "bqI" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "bqJ" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) -"bqK" = (/obj/structure/table/reinforced,/obj/item/device/radio/intercom{freerange = 1; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 30},/obj/item/weapon/packageWrap,/obj/item/weapon/hand_labeler,/obj/item/weapon/reagent_containers/spray/cleaner{desc = "Someone has crossed out the 'Space' from Space Cleaner and written in Chemistry. Scrawled on the back is, 'Okay, whoever filled this with polytrinic acid, it was only funny the first time. It was hard enough replacing the CMO's first cat!'"; name = "Chemistry Cleaner"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) +"bqK" = (/obj/machinery/airlock_sensor/airlock_interior{id_tag = "eng_al_int_snsr"; master_tag = "engine_room_airlock"; pixel_y = 22; req_access_txt = "10"},/obj/machinery/light{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/turf/simulated/floor/plating,/area/engine/engine_room) "bqL" = (/turf/simulated/wall/r_wall,/area/medical/chemistry) -"bqM" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/medical/reception) +"bqM" = (/obj/machinery/atmospherics/portables_connector,/turf/simulated/floor/plating{icon_state = "platebotc"},/area/engine/engine_room) "bqN" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/reception) "bqO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/medical/reception) "bqP" = (/turf/simulated/floor{dir = 4; icon_state = "whiteblue_ex"; tag = "icon-whiteblue (EAST)"},/area/medical/reception) @@ -5174,7 +5174,7 @@ "bVz" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/engine/vacuum,/area/rnd/mixing) "bVA" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "bot"},/area/rnd/research) "bVB" = (/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/wall/r_wall,/area/rnd/mixing) -"bVC" = (/obj/machinery/airlock_sensor{id_tag = "tox_airlock_sensor"; master_tag = "tox_airlock_control"; pixel_y = 24},/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/binary/pump/on{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/cyan,/turf/simulated/floor/engine,/area/rnd/mixing) +"bVC" = (/obj/machinery/airlock_sensor{id_tag = "tox_airlock_sensor"; master_tag = "tox_airlock_control"; pixel_y = 24},/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/cyan,/obj/machinery/atmospherics/binary/pump{dir = 4},/turf/simulated/floor/engine,/area/rnd/mixing) "bVD" = (/obj/machinery/meter,/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "tox_airlock_pump"; tag_exterior_door = "tox_airlock_exterior"; id_tag = "tox_airlock_control"; tag_interior_door = "tox_airlock_interior"; pixel_x = -24; pixel_y = 0; tag_chamber_sensor = "tox_airlock_sensor"},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "warnwhitecorner"},/area/rnd/mixing) "bVE" = (/obj/machinery/atmospherics/valve{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "warnwhite"},/area/rnd/mixing) "bVF" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/rnd/mixing) @@ -5325,7 +5325,7 @@ "bYu" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/rnd/research) "bYv" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/rnd/research) "bYw" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/window/eastright{dir = 8; name = "Chemistry Desk"; req_access_txt = "33"},/obj/machinery/door/blast/shutters{density = 0; dir = 4; icon_state = "shutter0"; id = "chemcounter"; name = "Pharmacy Counter Shutters"; opacity = 0},/obj/structure/table/reinforced,/turf/simulated/floor{icon_state = "yellowfull"; dir = 8},/area/medical/chemistry) -"bYx" = (/obj/structure/sign/fire{pixel_y = -32},/obj/machinery/atmospherics/binary/pump/on{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/cyan,/turf/simulated/floor/engine,/area/rnd/mixing) +"bYx" = (/obj/structure/sign/fire{pixel_y = -32},/obj/machinery/atmospherics/pipe/simple/hidden/cyan,/obj/machinery/atmospherics/binary/pump{dir = 8},/turf/simulated/floor/engine,/area/rnd/mixing) "bYy" = (/obj/machinery/meter,/obj/machinery/door_control{id = "mixvent"; name = "Mixing Room Vent Control"; pixel_x = -25; pixel_y = 5; req_access_txt = "7"},/obj/machinery/ignition_switch{id = "mixingsparker"; pixel_x = -25; pixel_y = -5},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "warnwhitecorner"},/area/rnd/mixing) "bYz" = (/obj/machinery/atmospherics/valve{dir = 4},/obj/machinery/light,/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -29},/turf/simulated/floor{dir = 4; icon_state = "warnwhite"},/area/rnd/mixing) "bYA" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/rnd/mixing) @@ -6123,8 +6123,8 @@ "cnM" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Hallway"; req_one_access_txt = "10;24"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/hallway/primary/aft) "cnN" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Hallway"; req_one_access_txt = "10;24"},/turf/simulated/floor,/area/hallway/primary/aft) "cnO" = (/turf/simulated/wall/r_wall,/area/engine/workshop) -"cnP" = (/obj/machinery/atmospherics/binary/pump{dir = 1; icon_state = "map_on"; use_power = 1},/turf/simulated/floor,/area/atmos) -"cnQ" = (/obj/machinery/atmospherics/binary/pump{icon_state = "map_on"; use_power = 1},/turf/simulated/floor,/area/atmos) +"cnP" = (/obj/machinery/atmospherics/binary/pump/on{dir = 1},/turf/simulated/floor,/area/atmos) +"cnQ" = (/obj/machinery/atmospherics/binary/pump/on,/turf/simulated/floor,/area/atmos) "cnR" = (/turf/simulated/wall/r_wall,/area/engine/storage_hard) "cnS" = (/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating{dir = 4; icon_state = "warnplatecorner"},/area/maintenance/engineering) "cnT" = (/obj/structure/table,/obj/item/weapon/hemostat,/obj/machinery/light,/obj/item/weapon/cautery,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) @@ -6389,7 +6389,7 @@ "csS" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) "csT" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Workshop"; req_access_txt = "0"; req_one_access_txt = "11;24"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engine/workshop) "csU" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/turf/simulated/floor,/area/atmos) -"csV" = (/obj/machinery/airlock_sensor/airlock_interior{id_tag = "eng_al_int_snsr"; master_tag = "engine_room_airlock"; pixel_y = 22; req_access_txt = "10"},/obj/machinery/light{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/obj/machinery/atmospherics/binary/pump{dir = 8},/turf/simulated/floor/plating,/area/engine/engine_room) +"csV" = (/obj/machinery/atmospherics/binary/pump,/turf/simulated/floor/plating,/area/engine/engine_room) "csW" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact (EAST)"},/obj/machinery/meter,/turf/simulated/floor,/area/atmos) "csX" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact (EAST)"},/turf/simulated/floor,/area/atmos) "csY" = (/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/cyan{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/plating,/area/engine/engine_room) @@ -6452,7 +6452,7 @@ "cud" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; external_pressure_bound = 0; external_pressure_bound_default = 0; frequency = 1441; icon_state = "map_vent_in"; id_tag = "n2_out"; initialize_directions = 1; internal_pressure_bound = 4000; internal_pressure_bound_default = 4000; use_power = 1; pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0},/turf/simulated/floor/engine{name = "n2 floor"; nitrogen = 100000; oxygen = 0},/area/atmos) "cue" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/turf/simulated/floor,/area/atmos) "cuf" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/engine/engine_room) -"cug" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan{dir = 8},/turf/simulated/floor/plating,/area/engine/engine_room) +"cug" = (/obj/structure/grille,/obj/structure/grille,/turf/space,/area/space) "cuh" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 9},/turf/simulated/floor,/area/atmos) "cui" = (/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/atmos) "cuj" = (/obj/machinery/door/airlock/hatch{icon_state = "door_locked"; id_tag = "engine_access_hatch"; locked = 1; req_access_txt = "10"},/obj/machinery/atmospherics/pipe/simple/visible/yellow,/turf/simulated/floor/plating,/area/engine/engine_room) @@ -6790,6 +6790,7 @@ "cAD" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/atmos) "cAE" = (/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/atmos) "cAF" = (/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/atmos) +"cAG" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; layer = 3.1; master_tag = "incinerator_access_control"; name = "Incinerator airlock control"; pixel_x = 10; pixel_y = -22},/obj/structure/sign/fire{pixel_x = -32; pixel_y = 0},/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/binary/pump,/turf/simulated/floor/plating,/area/maintenance/incinerator) "cAH" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor/plating,/area/atmos) "cAI" = (/turf/simulated/wall/r_wall,/area/engine/hallway) "cAJ" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Hallway"; req_one_access_txt = "10;24"},/turf/simulated/floor,/area/engine/hallway) @@ -6831,12 +6832,16 @@ "cBt" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/visible/purple{tag = "icon-intact (NORTH)"; icon_state = "intact"; dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plating,/area/atmos) "cBu" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/atmos) "cBv" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/visible/green,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/atmos) +"cBw" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "incinerator_access_control"; name = "Incinerator airlock control"; pixel_x = -8; pixel_y = 24},/obj/structure/sign/fire{pixel_x = 32; pixel_y = 0},/obj/machinery/atmospherics/binary/pump{dir = 1},/turf/simulated/floor/plating,/area/maintenance/incinerator) +"cBx" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/turf/simulated/floor/plating,/area/engine/engine_room) +"cBy" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/heat_exchanging{tag = "icon-intact (SOUTHWEST)"; icon_state = "intact"; dir = 10},/turf/space,/area/space) "cBz" = (/obj/machinery/atmospherics/pipe/manifold/visible/purple,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engine/engine_room) "cBA" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/engine/engine_room) "cBB" = (/obj/machinery/portable_atmospherics/canister/oxygen,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/atmos) "cBC" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/atmos) "cBD" = (/obj/machinery/portable_atmospherics/canister/air,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/atmos) "cBE" = (/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/atmos) +"cBF" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/heat_exchanging{dir = 4},/turf/space,/area/space) "cBG" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/atmos) "cBH" = (/obj/machinery/atmospherics/pipe/manifold/visible/yellow,/turf/simulated/floor/plating,/area/engine/engine_room) "cBI" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engine/engine_hallway) @@ -6874,6 +6879,14 @@ "cCo" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/medical/virology) "cCp" = (/obj/structure/grille,/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/wall/r_wall,/area/atmos) "cCq" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/computer/reconstitutor/animal,/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology) +"cCr" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/structure/lattice,/turf/space,/area/space) +"cCs" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact (EAST)"},/turf/simulated/wall/r_wall,/area/engine/engine_room) +"cCt" = (/obj/effect/landmark{name = "carpspawn"},/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/space,/area/space) +"cCu" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/heat_exchanging{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/space,/area/space) +"cCv" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/heat_exchanging{dir = 5},/turf/space,/area/space) +"cCw" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/heat_exchanging,/turf/space,/area/space) +"cCx" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/heat_exchanging{dir = 6},/turf/space,/area/space) +"cCy" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/turf/simulated/floor/plating,/area/engine/engine_room) "cCz" = (/turf/simulated/wall/r_wall,/area/engine/drone_fabrication) "cCA" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engine/drone_fabrication) "cCB" = (/turf/simulated/wall/r_wall,/area/engine/engine_hallway) @@ -6887,6 +6900,7 @@ "cCJ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/engine/engine_hallway) "cCK" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor,/area/engine/engine_hallway) "cCL" = (/obj/structure/sign/securearea,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/wall/r_wall,/area/engine/engine_hallway) +"cCM" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating{dir = 1; icon_state = "warnplatecorner"},/area/engine/engine_room) "cCN" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplatecorner"},/area/maintenance/engi_shuttle) "cCO" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1380; master_tag = "engineering_dock_airlock"; name = "interior access button"; pixel_x = -30; pixel_y = -25; req_access_txt = "0"; req_one_access_txt = "13;11;24"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/engi_shuttle) "cCP" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/machinery/portable_atmospherics/canister/air/airlock,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating{dir = 1; icon_state = "warnplatecorner"},/area/maintenance/engi_shuttle) @@ -6894,8 +6908,6 @@ "cCR" = (/obj/machinery/atmospherics/valve,/turf/simulated/floor/plating,/area/maintenance/engineering) "cCS" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 6; icon_state = "intact"; tag = "icon-intact-f (SOUTHEAST)"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/engineering) "cCT" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 8},/turf/simulated/floor/plating,/area/maintenance/engineering) -"cCU" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; layer = 3.1; master_tag = "incinerator_access_control"; name = "Incinerator airlock control"; pixel_x = 10; pixel_y = -22},/obj/structure/sign/fire{pixel_x = -32; pixel_y = 0},/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/binary/pump/on,/turf/simulated/floor/plating,/area/maintenance/incinerator) -"cCV" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "incinerator_access_control"; name = "Incinerator airlock control"; pixel_x = -8; pixel_y = 24},/obj/structure/sign/fire{pixel_x = 32; pixel_y = 0},/obj/machinery/atmospherics/binary/pump/on{dir = 1},/turf/simulated/floor/plating,/area/maintenance/incinerator) "cCW" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor/plating/airless,/area/space) "cCX" = (/turf/simulated/floor/plating/airless,/area/maintenance/medbay) "cCY" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "virology_airlock"; name = "exterior access button"; pixel_x = 20; pixel_y = 20; req_access_txt = "13"},/turf/simulated/floor/plating/airless,/area/maintenance/medbay) @@ -7034,7 +7046,6 @@ "cFP" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/medical/virology) "cFQ" = (/obj/machinery/vending/coffee,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cFR" = (/obj/machinery/vending/snack,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) -"cFS" = (/obj/machinery/atmospherics/pipe/cap/visible{color = "#00ffff"; dir = 8},/turf/simulated/floor/plating,/area/engine/engine_room) "cFT" = (/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/obj/machinery/power/smes/buildable{charge = 0; RCon_tag = "Aft Port Solar"},/turf/simulated/floor/plating,/area/maintenance/portsolar) "cFU" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plating,/area/engine/drone_fabrication) "cFV" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan{tag = "icon-map (EAST)"; icon_state = "map"; dir = 4},/obj/machinery/meter,/turf/simulated/floor,/area/atmos) @@ -7085,7 +7096,6 @@ "cHh" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1443; input_tag = "air_in"; name = "Mixed Air Supply Control"; output_tag = "air_out"; pressure_setting = 2000; sensors = list("air_sensor" = "Tank")},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/machinery/light{dir = 1},/turf/simulated/floor{dir = 1; icon_state = "arrival"},/area/atmos) "cHi" = (/obj/machinery/light_switch{pixel_x = 12; pixel_y = 25},/obj/machinery/power/apc/super{dir = 1; name = "north bump"; pixel_y = 24},/obj/structure/cable/cyan{d2 = 8; icon_state = "0-8"},/obj/machinery/power/sensor{name = "Powernet Sensor - Engine Power"; name_tag = "Engine Power"},/turf/simulated/floor/plating,/area/engine/engine_room) "cHj" = (/turf/simulated/floor/plating,/area/engine/engine_room) -"cHk" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{tag = "icon-intact (SOUTHEAST)"; icon_state = "intact"; dir = 6},/turf/simulated/floor/plating,/area/engine/engine_room) "cHl" = (/obj/structure/table,/obj/item/stack/sheet/glass{amount = 50},/obj/item/clothing/head/welding{pixel_x = -5; pixel_y = 3},/obj/item/clothing/glasses/welding,/obj/structure/closet/fireaxecabinet{pixel_y = 32},/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/atmos) "cHn" = (/obj/machinery/power/solar{id = "portsolar"; name = "Port Solar Array"},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/airless{icon_state = "solarpanel"},/area/solar/port) "cHp" = (/obj/machinery/power/solar{id = "portsolar"; name = "Port Solar Array"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/airless{icon_state = "solarpanel"},/area/solar/port) @@ -7103,7 +7113,6 @@ "cHE" = (/obj/machinery/atmospherics/valve/digital/open{name = "Oxygen Outlet Valve"},/turf/simulated/floor{dir = 5; icon_state = "blue"},/area/atmos) "cHF" = (/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/floor{dir = 9; icon_state = "blue"},/area/atmos) "cHH" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_atmos{name = "Atmospherics Monitoring Room"; req_access_txt = "24"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/atmos) -"cHI" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/turf/simulated/floor/plating{icon_state = "platebotc"},/area/engine/engine_room) "cHK" = (/obj/item/stack/rods{amount = 10},/turf/space,/area/space) "cHL" = (/obj/machinery/atmospherics/pipe/manifold4w/visible/purple,/turf/simulated/floor/plating,/area/engine/engine_waste) "cHM" = (/obj/machinery/atmospherics/unary/heat_exchanger{dir = 8},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/engine/engine_waste) @@ -7117,8 +7126,6 @@ "cHW" = (/obj/machinery/atmospherics/pipe/manifold/visible/green,/turf/simulated/floor,/area/atmos) "cHX" = (/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/engine/atmos_monitoring) "cHY" = (/obj/machinery/computer/security/engineering{network = list("Engineering","Power Alarms","Atmosphere Alarms","Fire Alarms","Atmospherics")},/turf/simulated/floor,/area/engine/atmos_monitoring) -"cHZ" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact (EAST)"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engine/engine_room) -"cIa" = (/obj/machinery/atmospherics/unary/freezer{dir = 8; icon_state = "freezer"; req_access_txt = "56"; set_temperature = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/engine/engine_room) "cIb" = (/obj/structure/lattice,/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_x = -32; pixel_y = 0},/turf/space,/area/space) "cIc" = (/obj/item/stack/cable_coil,/turf/space,/area/space) "cIe" = (/obj/machinery/atmospherics/unary/heat_exchanger{dir = 8},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 10},/area/engine/engine_waste) @@ -7133,7 +7140,6 @@ "cIn" = (/obj/machinery/atmospherics/pipe/simple/visible/green,/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact (EAST)"},/turf/simulated/floor,/area/atmos) "cIo" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact (EAST)"},/turf/simulated/floor/plating,/area/engine/engine_room) "cIp" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan,/obj/machinery/meter,/turf/simulated/floor,/area/atmos) -"cIq" = (/obj/machinery/atmospherics/unary/freezer{dir = 8; icon_state = "freezer"; req_access_txt = "56"; set_temperature = 1},/turf/simulated/floor/plating,/area/engine/engine_room) "cIr" = (/turf/simulated/wall/r_wall,/area/engine/engine_waste) "cIs" = (/obj/machinery/light/small,/turf/simulated/floor/plating,/area/engine/engine_waste) "cIt" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/plating,/area/engine/engine_waste) @@ -7153,7 +7159,6 @@ "cIN" = (/obj/machinery/camera{c_tag = "Engineering Core West"; dir = 8; network = list("SS13","Supermatter")},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engine/engine_room) "cIQ" = (/obj/machinery/door/airlock/hatch{icon_state = "door_locked"; id_tag = "engine_access_hatch"; locked = 1; req_access_txt = "10"},/obj/machinery/atmospherics/pipe/simple/visible/cyan,/turf/simulated/floor/plating,/area/engine/engine_room) "cIR" = (/obj/machinery/camera{c_tag = "Engineering Core East"; dir = 4; network = list("SS13","Supermatter")},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engine/engine_room) -"cIS" = (/turf/simulated/floor/plating{dir = 8; icon_state = "warnplatecorner"},/area/engine/engine_room) "cIU" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/maintenance/portsolar) "cIV" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/maintenance/portsolar) "cIW" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/maintenance/portsolar) @@ -7219,7 +7224,6 @@ "cKB" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/space,/area/space) "cKU" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 10},/area/engine/engine_room) "cKV" = (/obj/machinery/door_control{desc = "A remote control-switch for the engine control room blast doors."; id = "EngineBlast"; name = "Engine Room Blast Doors"; pixel_x = 5; pixel_y = -25; req_access_txt = "10"},/obj/machinery/door_control{desc = "A remote control-switch for the engine charging port."; id = "EngineEmitterPort"; name = "Engine Charging Port"; pixel_x = -5; pixel_y = -25; req_access_txt = "10"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/engine/engine_room) -"cKX" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/visible/cyan{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/turf/simulated/floor/plating{dir = 1; icon_state = "warnplatecorner"},/area/engine/engine_room) "cKY" = (/obj/machinery/light,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/engine/engine_room) "cKZ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/engine/engine_room) "cLa" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/engine/engine_waste) @@ -7307,32 +7311,32 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaaaaeaaeaaeaaeaaeaaaaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauaauaauaauaauaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfagUagVagWagWagWagWagWagWagWagDagXagYagZagWahaahbahcahdaheahfahgahhahiahjahkahlahmahnahnahnahnaddahoahpahqahrahsahtahuahvahwagvahxahyaboaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahzaaaaaaaaaahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaaaaeaaeaaeaaeaaeaaaaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfafQafRahAabfahBadEagWahCahDahEahFahGahHagDagZahIahFahJahKahLahLahMahNahOahPacXacXacEacXahQahRahSacQacQacQaddahTahUahVahWahXahYahZaiaaibagvahxaicabOaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahzahzahzahzahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadDaidaieaifabfaigadEagWaihaiiaijaikailaimagDagZahIainagWaioahLaipaiqahKahOairaisacXaitacXacXaiuacZahSacQacQaddaiwaixaiyagPagPaizagPagPaiAagvaiBaiCactaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahzaaaaaaahzaaaaaaahzahzahzahzahzahzahzaaaaaaahzaaaaaaahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaewagbagbaiDabfagbadEagWaiEaiFaiGaiHaiIahFagDaiJaiKaiLagWaiMaiNaiOaiOaiPaiQaiRaiSaiTacEaiUaiVaeFaiWaiXaiYaiZajaajbajcajdajeajfajgajhagPajiagvahxabbabbabbabbaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahzahzahzahzaaaahzahzahzahzahzahzahzahzahzaaaahzahzahzahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaewagbagbaiDabfagbadEagWaiEaiFaiGaiHaiIahFagDaiJaiKaiLagWaiMaiNaiOaiOaiPaiQaiRaiSaiTacEaiUaiVaeFaiWaiXaiYaiZakNakfajcajdajeajfajgajhagPajiagvahxabbabbabbabbaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahzahzahzahzaaaahzahzahzahzahzahzahzahzahzaaaahzahzahzahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabfajjabfabfajkajlagWagWajmagWagWajnagWagWagWajoagWagWajpajqajrajsajtajuagWajvajwajxajyajqagWagWajzajAajBagWagWagWagpajCagpagpagpagpagpagvahxabbajDajEaboaaaaafaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahzahzahzahzaaaahzahzahzahzahzahzahzahzahzaaaahzahzahzahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfagBafYajFafYajGajHajIajJajKajLajMajNajOajPajQajRajSajTajUajVajWajXajUajYajWajWajZakaakaakbakcakdahOakeakfakgajzakhakiakjakkaklakmaknakoakpalaakZakqabOaaaaaaaaaaaaaaaaaaaaaaaaakrakrakrakrakraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaaIaaIaamaamaaaaaaaaaaaaaaaaaaaaaaaaahzahzahzahzaaaahzahzahzahzahzahzahzahzahzaaaahzahzahzahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaamaamaaIaamaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfadEagWagWagWagWagWagWaksaktakuakvakwakxakyakzakAakBakCakDakEakFakwakGakwakwakHakIakJakKakLakMakNakOakPakJakQakRakSakTakUakVakWakXakYakoalIabbamsalbactaaaaaaaaaaafaaaaaaaaaaaaakrakrakrakrakraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaaaaafaaaaaqaaaaaaaaaaaaaaaaaaaaaaaaahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfagBafYajFafYajGajHajIajJajKajLajMajNajOajPajQajRajSajTajUajVajWajXajUajYajWajWajZakaakaakbakcakdahOakeajbakgajzakhakiakjakkaklakmaknakoakpalaakZakqabOaaaaaaaaaaaaaaaaaaaaaaaaakrakrakrakrakraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaaIaaIaamaamaaaaaaaaaaaaaaaaaaaaaaaaahzahzahzahzaaaahzahzahzahzahzahzahzahzahzaaaahzahzahzahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaamaamaaIaamaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfadEagWagWagWagWagWagWaksaktakuakvakwakxakyakzakAakBakCakDakEakFakwakGakwakwakHakIakJakKakLakMajaakOakPakJakQakRakSakTakUakVakWakXakYakoalIabbamsalbactaaaaaaaaaaafaaaaaaaaaaaaakrakrakrakrakraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaaaaafaaaaaqaaaaaaaaaaaaaaaaaaaaaaaaahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaafaaaaaqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfadEagWalcaldalealfagWalgalhahLalialjagWacTacuacTagWabValnabUagWalpalqalralsagDaltalualvalwalxagWabTabSabSabRagWalBalCalDalEalFalGalHakoamtanQamuanQanQaaaaaaaafaafaaaaaaaaaaaaakrakrakrakrakraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafabQaafaaIaaaaaaaaaaaaaaaaaaaaaaaaahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafabMaafaaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafabfadEabPalMalMalNalOalPalQalRahKalSaljagWalTalUalValWalXalYalZamaahKambahKamcamdameameamfamgamhamiamjamkamlammakoamnamoampamqalDalDamrakoadQanQamvawKamwaaaaaaamxaaaaaaaaaaafaaaakrakrakrakrakraaaaaaaaaaaaaaaaaaaaIaaIaaIaaIaaIaaaaaaaaaabpaaaaaaaaaaaIaaIaamaamaamaaaaaaahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaamaaIaaIaaaaaaaaaaoXaaaaaaaaaaaIaaIaamaamaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfadEagWamAamBamCamDagWamEalRaljamFamGagWamHamIamJalWamKamLamMamNamOamPamQamRamSamgamgamfamgamTaoWamVamWamXamYakoamZanaalDamqalDalDanbakoancandaneanfangaafamxaafaafamxaafaafaafakrakranhakrakraaaaaaaaaaaaaaaaaaaaqaaaaaaaafaafaafaaaaaaaoYaafaafaaaaafaafaaaaaaaamaaaaaaahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaafaafaaaaaaaaaaoVaafaafaaaaafaafaaaaaaaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfankagWagWagWagWanlanmannanoanmanmanmanmanpaoPanpanraoQantaoRanvaoSaoTaoUanzanAamgamgamfanBanCamianDanEamXanFanGanHanIanJanKanLanManNanGanOanPawLanRanSaaaaaaaafaaaaafamxaafaaaakrakrakrakrakraaaaaaaaaaaaaaaaaaaaIaafanTanTanTanTanTaafalJaafanTanTanTanTanTaafaaIaaaahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafanVanVanVanVanVaafalkaafanVanVanVanVanVaafaaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanXanYanZaoaagDaobaocagWaodaoealKaogaohaoiaojaokaolaomaonaooaonaopaoqaoraonaoOaotamgamgaouaovaowamiaoxanEamXaoyanGaozaoAaoBaoCaoDaoEaoFanGaoGanQanQanQanQaoIaoJaoHaoKaoLaaaaafaaaakrakrakrakrakraaaaaaaaaaaaaaaaaaaaIaafanianjanjanjanjanualJansanqanqanqanqanwaafaaIaaaahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafabMaafaaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafabfadEabPalMalMalNalOalPalQalRahKalSaljagWalTalUalValWalXalYalZamaahKambahKamcamdameameamfamgamhamiamjamkamlammakoamnamoampamqalDalDamrakoadQanQamvawKamwaaaaaaaaLaaaaaaaaaaafaaaakrakrakrakrakraaaaaaaaaaaaaaaaaaaaIaaIaaIaaIaaIaaaaaaaaaabpaaaaaaaaaaaIaaIaamaamaamaaaaaaahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaamaaIaaIaaaaaaaaaaoXaaaaaaaaaaaIaaIaamaamaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfadEagWamAamBamCamDagWamEalRaljamFamGagWamHamIamJalWamKamLamMamNamOamPamQamRamSamgamgamfamgamTaoWamVamWamXamYakoamZanaalDamqalDalDanbakoancandaneanfangaafaaLaafaafaaLaafaafaafakrakranhakrakraaaaaaaaaaaaaaaaaaaaqaaaaaaaafaafaafaaaaaaaoYaafaafaaaaafaafaaaaaaaamaaaaaaahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaafaafaaaaaaaaaaoVaafaafaaaaafaafaaaaaaaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfankagWagWagWagWanlanmannanoanmanmanmanmanpaoPanpanraoQantaoRanvaoSaoTaoUanzanAamgamgamfanBanCamianDanEamXanFanGanHanIanJanKanLanManNanGanOanPawLanRanSaaaaaaaafaaaaafaaLaafaaaakrakrakrakrakraaaaaaaaaaaaaaaaaaaaIaafanTanTanTanTanTaafalJaafanTanTanTanTanTaafaaIaaaahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafanVanVanVanVanVaafalkaafanVanVanVanVanVaafaaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanXanYanZaoaagDaobaocagWaodaoealKaogaohaoiaojaokaolaomaonaooaonaopaoqaoraonaoOaotamgamgaouaovaowamiaoxanEamXaoyanGaozaoAaoBaoCaoDaoEaoFanGaoGanQanQanQanQaoIaoJaoHaoLarPaaaaafaaaakrakrakrakrakraaaaaaaaaaaaaaaaaaaaIaafanianjanjanjanjanualJansanqanqanqanqanwaafaaIaaaahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaIaafalzalyalyalyalyalAalkallaivaivaivaivagEaafaaIaaaaaaaaaaaaaaaaaaaacaaaaaaaaaanXanXapaapbagDalMapcapdapeapfaofaphapiaoMaonaonapkaplaonapmapnaoraonapoaonaoNapqapramgamfamgamTaosamYanEamXaptanGapuapvapwapxapyapzapAanGapBaoHapCapDapEapFapGaoHaoHapHaoHaoHaaaakrakrakrakrakraaaaaaaaaaaaaaaaaaaaIaafapIapIapIapIapIaafalJaafapIapIapIapIapIaafaaIaaaaaaahzahzahzahzaaaaaaahzahzahzahzahzahzahzaaaaaaahzahzahzahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafapJapJapJapJapJaafalkaafapJapJapJapJapJaafaaIaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaapKapaapbagDapLapMagWalgapNalKapOapPapQapRaokapSanWapUapVapWapXapYapZaqaanUaqcaqdaovaqeaovaqfaqgaqhaqiaqjaqkanGaqlaqmapyaqnaqoaqpaqoaqqaqraqsapFaqtaquapFaqvaoHaqwaqxaqyaoHaaaakrakrakrakrakraaaaaaaaaaaaaaaaaaaamaaaaaaaaaaafaaaaaaaafalJaaaaaaaaaaafaaaaaaaaaaamaaaaaaaaaaaaaaaaaaaaaaaaahzahzahzahzahzahzahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaafaaaaaaaafalkaaaaaaaaaaafaaaaaaaaaaaqaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaqzaqAaqBagDagWagWagWaqCalRagWalWalWalWaqDaqEapkaqFaqGaqHaonaqIaqJaqKaqLanyaqNaqOaqPaqQaqRaqSanxaqUaqVaqWamVanGaqXaqYaqZaraarbarcardanGarearfapFaqtaqtapFargaoHarhariarjaoHaaaakrakrakrakrakraaaaaaaaaaaaaaaaaaaaIaafanTanTanTanTanTaafalJaafanTanTanTanTanTaafaaIaaaaaaaaaaaaaaaaaaaaaaaaahzahzahzahzahzahzahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafanVanVanVanVanVaafalkaafanVanVanVanVanVaafaaIaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaqzarkaqBagDaobarlagWarmarnalKaogaroaoiaokarparqarrarsartaonarualWarvarwarxalLarzarAamUamzamyarEarFarGarHamjanGanGarIanGanGanGanGanGanGarJarKarLarMarMapFarNaoHaoHarOaoHaoHaaaaaaakrakrakraaaaaaaaaaaaaaaaaaaaaaaIaafanianjanjanjanjanualJansanqanqanqanqanwaafaaIaaaaaaaaaaaaaaaaaaaaaaaaahzahzahzahzahzahzahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamxarPamxaaaaaaaaaaaaaaaaaaaaaaaIaafalzalyalyalyalyalAalkallaivaivaivaivagEaafaaIaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaqzarQaqBagDarRapcarSarTarUaefapharWaloaonaonarYarZasaasbaonascalWasdasealmasgasharAasiasjaskarEaoHaoHaoHaoHaoHaslasmasnasoasoaspaspasqasrassastastasuasvasvaswasxasyaszaqsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafapIapIapIapIapIaafalJaafapIapIapIapIapIaafaaIaaaaaaaaaaaaaaaaaaaaaaaaahzahzahzahzahzahzahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLamxaaLaaaaaaaaaaaaaaaaaaaaaaaIaafalzalyalyalyalyalAalkallaivaivaivaivagEaafaaIaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaqzarQaqBagDarRapcarSarTarUaefapharWaloaonaonarYarZasaasbaonascalWasdasealmasgasharAasiasjaskarEaoHaoHaoHaoHaoHaslasmasnasoasoaspaspasqasrassastastasuasvasvaswasxasyaszaqsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafapIapIapIapIapIaafalJaafapIapIapIapIapIaafaaIaaaaaaaaaaaaaaaaaaaaaaaaahzahzahzahzahzahzahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafasAasBasAaaaaaaaaaaaaaaaaaaaaaaaIaafapJapJapJapJapJaafalkaafapJapJapJapJapJaafaaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasCarQapbagDapLapMagWasDasEalKapOasFaoiasGasGasHasIaonasJaonasKalWasLasMbgMasOasParAasQasRasSarEasTasUasUasVasWasVasXasYasZasZasZasZasZasZasZasZasZasmataatbatcaoKatdateatfaafatgathathatiathathatjaafaaaaaaaaaaamaaaaaaaaaaafaaaaaaaaaalJaaaaaaaaaaafaaaaaaaaaaamaaaaaaaaaaaaaaaaaaaaaaaaahzahzahzahzahzahzahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatkatlatmaaaatnatoatpaaaaafatqatratqaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaafaaaaaaaaaalkaaaaaaaaaaafaaaaaaaaaaamaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaanXatsattagDagDagDagWagWagWagWalWalWalWalWalWatuaonaoratvaqEatwalWalWalWatxatxatxarAatyatzatAarEatBasZasZasZasZatCatDatEatFatGatHatIatJatKatLatMatNatOatPatPatPatPatPatPatPatPatQatRatRatRatRatRatQatPaaaaaaaaaaaIaafanTanTanTanTanTaafalJaafanTanTanTanTanTaafaaIaaaaaaaaaaaaaaaaaaaaaaaaaaaahzahzahzahzahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatSatTatUatTatSatVatWatVatSaafatqatXatYaaaaaaaaaaaaaaaaaaaaaaaIaafanVanVanVanVanVaafalkaafanVanVanVanVanVaafaaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafatZauaanYaubaucanXaafaafalWaudaueaufaugauhauiaonapnaonasJaqEaujaukaulaumaunauoauparAauqaurausarEatBasZauuaySauvatCauxauyatFatGauzauAauBauCauDatMatNauEauFauGauHauIauJauwauLatPauMatRatRatRatRatRatQatPaafaaaaaaaamaafanianjanjanjanjanualJansanqanqanqanqanwaafaaIaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauNatTauOatTauNatVauPatVauNauQauRauSauTauUauUauVauQauQaafaaaaaIaafalzalyalyalyalyalAalkallaivaivaivaivagEaafaaIaaaaaaaaaaaaaaaaaaaaaaaaanXanXanXauWanXanXapbaucanXaaaaaaalWauXalWauYauZavaalWavbavcaonavdaveaveavfavgaveavhaviavjarAavkauravlarEavmasZavnauKauvatCavpavqatFatGauzauAavravsavtatMatNavuavvauGauHauHauJavwavxavyavzatRatRatRatRatRavAatPatPatPaaaaamaaaapIapIapIapIapIaafalJaafapIapIapIapIapIaaaaaqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauNavBavCavDauNavEavFavGauNavHavIavJavKavLavMavNavOauQaaaaaaaaqaaaapJapJapJapJapJaafbeSaafapJapJapJapJapJaaaaaIaaaaaaaaaaaaaaaaaaaaaaaaavQavRavSavTavUavVavWavXanXaaaaaaalWalWalWavYavZawaalWawbawcawdaweawfawgaukawhawiawjawkawlarAawmaurawnarEatBasZawoavoawpatCawravqatFatFatFawsawtawuatFatFatNawvawwauGauHauHauJawxawyawzawAatRatRatRatRatRawBawCawDawEaaaaamaaaaafaaaaafaafaaaaaabepaaaaaaaafaaaaaaaafaaaaaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauNawGawHawIauNawGawHawIauNawJavHavHavHavHavHavHavHasAaaaaaaaaIaaaaafaaaaafaafaaaaaabfxaaaaaaaafaaaaaaaafaaaaaIaafaaaaaaaafaafaaaaaaaafawPavRawQawRavUawSaucawTanXaafaaLcqTatxatxatxatxatxatxatxatxatxatxatxatxatxatxatxatxatxatxarAawVaurawWarEatBasZawXawUawYaxaaxbawZaxdaxcaxfaxeaxhaxgaxhaxiaxkaxlaxmaxnaxoaxoaxnaxpaxqaxraxsatRatRatRatRatRaxsaxtaxuaxvaaaaamaamaaIaaaaaaaafaaaaaaabpaaaaafaafaafaafaaIaaIaaIaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaatSauNaxwaxxatSauNaxyaxxatSauNawMauNauNauNauNauNavHatqaaaaaaaaIaaIaaIaaaaaaaafaaaaxBaxCaxBaafaafaafaafaaIaaIaaIaafanXanXanXanXaxDaxEaxEaxFanXanXanXanXaxGaucaucanXaxHaxIanXanXaxJaxKaxLaxMaxMaxMaxMaxMaxMaxMaxMaxNaxMaxMaxMaxMaxMaxOaxPaxQaxRaxOaxSasZaxTaxjautatCaxVaxXaxXaxXaxZaxYayaaybaxXavqaydayeayfaygayhayhayhayiavxayjaykatRatRatRatRatRaykaylaxuaxvaaaaaaaaaaafaafaaaaafaaaaaabfyaaaaaaaafaaaaaaaafaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaynayoaypayoayqayoayrayoaysaytayvayvayvayvaywauNawNatqaaaaafaafaaaaaaaaaaaaaafaaaayyayzayAaafaaaaafaaaaaaaaaaaaaaaanXayBayCayDayCayCayCayCayEayCayCayFayGayDayHayIaxMaxMaxMaxMaxMaxMayJayKayLayLayLayLayMayLayLayNayLayMayLayLayLarAayOayPayQarEaAiasZayRaycaxUatCayUayTayWayVayYayXayYayZayTazaazbazcazdazeazdazdazfazgazhaziazjatRatRatRatRatRazkazlazmaznaaaaaaaaaaaaaafaaaaafaaaazoazpazoaaaaafaaaaaaaafaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazqazrazsaztazuazvazwazxazyazwazzazAazwazwazBauNavHauRaafaafaaaaaaaaaaaaaaaaafazDazEazFazGazHaaaaafaaaaaaaaaaaaaaaanXazIanXazJazKazLazLazLazMazLazLazLazNazJazOazPazPazPazPazPazPazPazQazRayLazSazTazUazVazWazXazYazZaAaaAbazTaAcarAaAdayPayQarEaAiasZaAfaAecfSatCaxWaxXaxXaxXaxXaAjaAkaAlaAmaAnaxkaAoaApaApaApaApaAqavxavxaAraAsatRatRatRatRatRaAtatPatPatPaafaafaafaafaafaafaafaaaaAuaAvaAuaaaaafaaaaaaaafaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafauNaAwaAxaAwaAyazsazsaAzaAwaAxaAwaAAaABaACaADauNavHauQauQaAEauUauUauUauUauVauQaAFaAGaAHaAIaAFanXanXaxHaAJaxIanXanXanXazIaAKazJaaaaafaaaaafaaaaafaaaaafaaaazJazOazPaALaAMaANaAOaAPazPazQaucayLaAQaAQaARaASaATaAUaAVaATaAWaAXazTaAcarAaAdayPaDdarEaAiasZawXaAgaAhaBbaBcaBdaBeaBfaBgaBhaBiaBjaBjaBkaBjatPaBlaBmaBnaBoaBpaBqaBratPaBsatRatRatRatRatRaBtatPaafaaaaaaaaaaaaaafaafaaaaafaBuaBvaBwaBxaByaafaaaaaaaafaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatSatTatUatTatSatVatWatVatSaafatqatXatYaaaaaaaaaaaaaaaaaaaaaaaIaafanVanVanVanVanVaafalkaafanVanVanVanVanVaafaaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafatZauaanYaubaucanXaafaafalWaudaueaufaugauhauiaonapnaonasJaqEaujaukaulaumaunauoauparAauqaurausarEatBasZaAfaySauvatCauxauyatFatGauzauAauBauCauDatMatNauEauFauGauHauIauJauwauLatPauMatRatRatRatRatRatQatPaafaaaaaaaamaafanianjanjanjanjanualJansanqanqanqanqanwaafaaIaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauNatTauOatTauNatVauPatVauNauQauRauSauTauUauUauVauQauQaafaaaaaIaafalzalyalyalyalyalAalkallaivaivaivaivagEaafaaIaaaaaaaaaaaaaaaaaaaaaaaaanXanXanXauWanXanXapbaucanXaaaaaaalWauXalWauYauZavaalWavbavcaonavdaveaveavfavgaveavhaviavjarAavkauravlarEatBasZawoavoawpatCawravqatFatGauzauAavravsavtatMatNavuavvauGauHauHauJavwavxavyavzatRatRatRatRatRavAatPatPatPaaaaamaaaapIapIapIapIapIaafalJaafapIapIapIapIapIaaaaaqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauNavBavCavDauNavEavFavGauNavHavIavJavKavLavMavNavOauQaaaaaaaaqaaaapJapJapJapJapJaafbeSaafapJapJapJapJapJaaaaaIaaaaaaaaaaaaaaaaaaaaaaaaavQavRavSavTavUavVavWavXanXaaaaaaalWalWalWavYavZawaalWawbawcawdaweawfawgaukawhawiautawkawlarAawmaurawnarEatBasZawXawUawYaxaaxbawZatFatFatFawsawtawuatFatFatNawvawwauGauHauHauJawxawyawzawAatRatRatRatRatRawBawCawDawEaaaaamaaaaafaaaaafaafaaaaaabepaaaaaaaafaaaaaaaafaaaaaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauNawGawHawIauNawGawHawIauNawJavHavHavHavHavHavHavHasAaaaaaaaaIaaaaafaaaaafaafaaaaaabfxaaaaaaaafaaaaaaaafaaaaaIaafaaaaaaaafaafaaaaaaaafawPavRawQawRavUawSaucawTanXaafaaLcqTatxatxatxatxatxatxatxatxatxatxatxatxatxatxatxatxatxatxarAawVaurawWarEatBasZauKaxjavmatCaxVavnaxdaxcaxfaxeaxhaxgaxhaxiaxkaxlaxmaxnaxoaxoaxnaxpaxqaxraxsatRatRatRatRatRaxsaxtaxuaxvaaaaamaamaaIaaaaaaaafaaaaaaabpaaaaafaafaafaafaaIaaIaaIaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaatSauNaxwaxxatSauNaxyaxxatSauNawMauNauNauNauNauNavHatqaaaaaaaaIaaIaaIaaaaaaaafaaaaxBaxCaxBaafaafaafaafaaIaaIaaIaafanXanXanXanXaxDaxEaxEaxFanXanXanXanXaxGaucaucanXaxHaxIanXanXaxJaxKaxLaxMaxMaxMaxMaxMaxMaxMaxMaxNaxMaxMaxMaxMaxMaxOaxPaxQaxRaxOavpasZaxSawjcfSatCaxVaxXaxXaxXaxZaxYayaaybaxXavqaydayeayfaygayhayhayhayiavxayjaykatRatRatRatRatRaykaylaxuaxvaaaaaaaaaaafaafaaaaafaaaaaabfyaaaaaaaafaaaaaaaafaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaynayoaypayoayqayoayrayoaysaytayvayvayvayvaywauNawNatqaaaaafaafaaaaaaaaaaaaaafaaaayyayzayAaafaaaaafaaaaaaaaaaaaaaaanXayBayCayDayCayCayCayCayEayCayCayFayGayDayHayIaxMaxMaxMaxMaxMaxMayJayKayLayLayLayLayMayLayLayNayLayMayLayLayLarAayOayPayQarEaAiasZcfSaycaxUatCayUayTayWayVayYayXayYayZayTazaazbazcazdazeazdazdazfazgazhaziazjatRatRatRatRatRazkazlazmaznaaaaaaaaaaaaaafaaaaafaaaazoazpazoaaaaafaaaaaaaafaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazqazrazsaztazuazvazwazxazyazwazzazAazwazwazBauNavHauRaafaafaaaaaaaaaaaaaaaaafazDazEazFazGazHaaaaafaaaaaaaaaaaaaaaanXazIanXazJazKazLazLazLazMazLazLazLazNazJazOazPazPazPazPazPazPazPazQazRayLazSazTazUazVazWazXazYazZaAaaAbazTaAcarAaAdayPayQarEaAiasZauuaAeauvatCaxWaxXaxXaxXaxXaAjaAkaAlaAmaAnaxkaAoaApaApaApaApaAqavxavxaAraAsatRatRatRatRatRaAtatPatPatPaafaafaafaafaafaafaafaaaaAuaAvaAuaaaaafaaaaaaaafaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafauNaAwaAxaAwaAyazsazsaAzaAwaAxaAwaAAaABaACaADauNavHauQauQaAEauUauUauUauUauVauQaAFaAGaAHaAIaAFanXanXaxHaAJaxIanXanXanXazIaAKazJaaaaafaaaaafaaaaafaaaaafaaaazJazOazPaALaAMaANaAOaAPazPazQaucayLaAQaAQaARaASaATaAUaAVaATaAWaAXazTaAcarAaAdayPaDdarEaAiasZawXaAgaAhaBbayRaBdaBeaBfaBgaBhaBiaBjaBjaBkaBjatPaBlaBmaBnaBoaBpaBqaBratPaBsatRatRatRatRatRaBtatPaafaaaaaaaaaaaaaafaafaaaaafaBuaBvaBwaBxaByaafaaaaaaaafaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaBzatSaBAawHaBBaBCaBDaBEaBFaBBawHaBGaBHaBIaBJaBKaBLavHavHavHavHavHavHavHavHaBOaBPaAFaBQaBRaBSaAFaBTaBUayCayCayCayCayCaBVaBWaBXazJaafaBYaBYaBYaBYaBYaBYaBYaafazJazOazPaBZaCaaCbaCcaBZazPazQaCdayLayLayLayLaCeaCfaCgaChaCfaCiaCjazTaCkarAaAdayPaClarEaJCasZaAZaAYaBaatCaxWavqatEaBjaBjaBjaBjaBjaCqaCraCsaBjatPatPatPatPaCtatPatPatPaBtatRatRatRatRatRaBtatPaaaaaaaaaaacaaaaafaaaaaaaaaaCvaCwaCxaCyaCvaafaaaaaaaafaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazqaAxaCzaCAaCAaCAaCAaCBaAxazqaaaaBIaCCaxzaBLaCEaCEaCEaCEaCEaCEaCEavHaCFaCGaAFaCHaCIaCJaAFaCKaCLaCKaCKaCKaCKaCKaCKaCKaCKaCMaaaaBYaCNaCOaCPaCQaCRaBYaaaazJazOazPaBZaCSaCTaCUaBZazPazQanXayLaCVaCWaARaCXaCYaCZaDaaDbaDcayLayLayLarAaAdayPayQarEaAiasZaxTaJDauvatCaDgavqatEaDhaDiaDjaDkaBjaCqaDlaCsaBjaDmaDnaDoaDpaDqaGwaDsaafaDtaDuaDuaDuaDuaDuaDvaafaaaaaaaaaaaaaaaaafaaaaaaaaaaCvaDzaDAaDBaCvaafaaaaaaaDCaDCaDCaDCaDCaDDaDEaDCaDCaDCaDCaDCaDCaDCaDFaDGaDGaDGaDHaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazqaAxaCzaCAaCAaCAaCAaCBaAxazqaaaaBIaCCaxzaBLaCEaCEaCEaCEaCEaCEaCEavHaCFaCGaAFaCHaCIaCJaAFaCKaCLaCKaCKaCKaCKaCKaCKaCKaCKaCMaaaaBYaCNaCOaCPaCQaCRaBYaaaazJazOazPaBZaCSaCTaCUaBZazPazQanXayLaCVaCWaARaCXaCYaCZaDaaDbaDcayLayLayLarAaAdayPayQarEaAiasZaxTaBcauvatCaDgavqatEaDhaDiaDjaDkaBjaCqaDlaCsaBjaDmaDnaDoaDpaDqaGwaDsaafaDtaDuaDuaDuaDuaDuaDvaafaaaaaaaaaaaaaaaaafaaaaaaaaaaCvaDzaDAaDBaCvaafaaaaaaaDCaDCaDCaDCaDCaDDaDEaDCaDCaDCaDCaDCaDCaDCaDFaDGaDGaDGaDHaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaaaaaaaaaaaaaDIaDJaDKaDJaDJaDLaDMaDJaDJaDKaDNaDOaBIaDPaxAaBLaDRaDSaDTaDUaDVaDWaCEavHaDXauQaAFaAFaDYaDZaCMaEaaEbaEcaEdaEeaEfaEgaEhaEiaEjaCMaafaBYaEkaElaEmaEnaEoaBYaafazJazOazPaEpaEqaEraEsaEtazPazQaEuayLazSazTaEvaEwaCfaExaEyaATaEzaEAaEBaEBarAaAdayPayQarEaAiaCmaCmaCmaCmaCmaEHaEIatEaEJaEKaEKaELaEMaEKaENaEOaBjaEPaEQaERaESaETaCnaDsaaaaafaaaaafaaaaafaaaaafaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaCvaEXaEYaEZaCvaFaaFbaDCaDCaFcaFdaFdaFdaFdaFdaFeaFfaFgaFgaFgaFgaFgaFgaFgaFhaFiaFjaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaDIaDNaDJaFkaFlaFlaFmaFnaFoaFpaFqaFlaFlaFraFsaFtaDPayuaBLaFvayxaBMazCaBMaBNaCDavHaFuaDQaFxaFwaFzaFyaFIaFJaFKaFLaFLaFLaFMaFLaFLaFNaFOaCMaaaaBYaFPaElaFQaEnaFRaBYaaaazJazOazPaFSaFTaFUaFTaFVazPazQaFWayLayLayLayLaFXaCfaCgazTaCfaFYaFZazTaGaarAaGbaGcaGdarEaAiaDeaDfaDraCoaDeaCpaGjaGkaGlaGmaBjaBjaBjaBjaBjaBjaGnaGoaGpaGqaDpaGraGsaDsaDsaDsaDsaDsaDsaDsaDsaDsaFaaFbaDsaDsaFaaGtaDsaDsaaaaaaaCvaCvaGxaGyaCvaGzaGAaGBaFdaGCaDCaDCaDCaDCaDCaGDaGEaGFaGFaGFaGFaGFaGFaGGaGGaGHaGGaGGaGGaGGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaFraGIaGJaGKaFlaGLaFlaGLaFlaGLaFlaGLaFlaGMaGNaGOaDPayuaBLaGPaFAaGRaGSaGTaGUaCEaFBaFDaFCaFCaFCbazaFEaFCaHcaFLaFLaFLaFLaFLaFLaFLaFNaHdaCMaafaBYaHeaHfaHgaHhaHiaBYaafazJazOazPaHjaHkaFUaHlaHmazPaHnaHoayLaHpazTaARaHqaATaHrazTaCfaFYaHsazTaHtarAaHuaHvaHwarEaGuaDyaEUaGvaDwaDxaEVaEWatEaHCaHDaBjaHEaBjaHFaBjaHGaBjaHHaGpaHIaDpaHJaHKaHLaHMaHMaHNaHOaHKaHKaHKaHKaHKaHPaHKaHKaHKaHQaHVaDsaDsaDsaDsaHRaHSaHTaHUaIaaIbaDCaDCaIcaDCaIdaIeaIfaIgaGFaIhaGFaIiaIjaIkaIlbinaInaIoaIpaIqaIraIsbjFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIvaaaaaaaaaaaaaaaaaaaaaaaa @@ -7357,7 +7361,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaT aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaaabhObhObhObhObhObhObhObhObhObhObhObkKbkLbkMbkNbkObgrbkPbkQbkRbkRbkSbkTbkUbkVbkWbkWbkXbkYbbZbbZbbZbeZbkZbbZbajbajbajbajblaaXeaXeblbblcbldbleblfblgblhblibljblkbdPbllbfmblmbgGblnbgGbloblpblqaSzbctaJeblrblsbltblublvblwblxblybdYbebblzblAblCblBblDblAblEbebbedbedblFblGblHblIbiCblJblKaJiblLblMblNaJiblOblOblOblOblOblOaZzaZzblPblQbZNcdMblQblPaZzaZzaZzaZzaZzaZzaZzaZzaZzaZzblTaZzaZzaZzaZzaZzaZzaVIaZzbewbewblVblWblWblOblOblOblOblOblXblYblYblZblYbewblYblZbmablYbmbblObmcbmcbmcbmdaRZbmeaRZaRZaaaaaaaaaaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaaabhObhObhObhObhObhObhObhObhObhObhObdubdvbjmbjnbmfbgrbmgbjpbmhbmibjpbjpbjpaVAbmjbmkbmkbmlbbZbdDbmmbeZbmnbbZbmobmpbmqbmrbmsbmtbmtbmubmtbmtbmvbdPbmwbmxbfgbmybmzblfbmAbfmbmBbgGbgGbmCbmDbmEblqaSzbmFbmGbmGbmGbmGbmGbmGbmGbmHbmGbdYbebbmIbmJbmKbmLbmKbmMbmNbebbedbedbmObmPbmQbmRbiCbiGbmSaJibcKaRqaRpaJibmTbmUbmVbmWbmXbmYbmZbnabnbbncbndbnebncbnfbngbnhbnibnjbnkbnlbnmbnnbnobnpbnqbnrbnsbntbntbnubYfaVJblOblObZLblObZMbZMblObnzbnAbnBblObZtbZubZtblOblXblYbmbblObZnbZBbZnblObnGbnHbnIbnJbnKbnLbnMaaaaaaaaaaaaaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaaabhObhObhObhObhObhObhObhObhObhOaaabnNbnObnPbeQbnQbgrbnRbjpbnSbnTbnUbnVbjpbnWbnXbnYbnZbmlbbZbbZbbZbbZbbZbbZboabobbocbodboebdPbdPbdPbdPbdPbdPbdPbWqbdPbdPbdPbogbdPbohboibojbgGbgGbgGbokblpblqaSzbolbmGbombonboobcEbvGbotbosbotaafbebboubovbowboxboybozboAbebaafbedboBboCboDboEbiCbiGboFaJiboGboHaRpbXHboJboKboLboMboNbYwboPboQboRboRboSboTboUboUboVboWboXboYboZbpabpbbnnbpcbpdbpebpfbpgbphbpfbpibYfaVJbpjbpkbplbpmbpnbpobppbpqbprbpqbpsbptbpubpvblOaZzbpwbpxblObpybpzbpAbpBbpCbpDbnIbpEbpFbpGbnMaaaaaaaaaaacaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaaaaTDaTDaTDaTDaTDaaaaTDaTDaTDaTDaTDaaaaaaaaaaaaaaabgnbgobgpbgqbdvbpHbpHbpHbpIbpHbpJaZVbpKbpLbgrbpMbpNbpObpPbpQbpRbpSaYSaXeaXeaXebpTbkWbpUbkWbkWbkWbkWbpVbpWbpWbpXbpYbdPbpZbqabqbbqcbqdbqebqfbqgbqhbqibqjbqkbmAbqlbojbgGbgGbqmbfmaMbblqbqnbqoaJubqqbqrbqrbxqborbopbxsbotaafbebbebbebbebceebebbebbebbebaafbedbqzboCbqAbqBbqCbqDbqEaJibqFaRqaRpaJibqGbqHbqIbqJbqKbqLbqMbqNboUboUboUboUboUboUbqObqPbqQboYbqRbqSbqTbnnbqUbqVbqWbpfbpgbphbpfbqXbYfaVJbpjbqYbqZbqZbrabrbbrcbrdbrdbrdbrebrdbrfbrgbrhbribrjbrkbnIbrlbpCbrmbrnbrobrpbnIbrqbpFbrrbnMaaaaaaaaaaaaaaaaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaaaaTDaTDaTDaTDaTDaaaaTDaTDaTDaTDaTDaaaaaaaaaaaaaaabgnbgobgpbgqbdvbpHbpHbpHbpIbpHbpJaZVbpKbpLbgrbpMbpNbpObpPbpQbpRbpSaYSaXeaXeaXebpTbkWbpUbkWbkWbkWbkWbpVbpWbpWbpXbpYbdPbpZbqabqbbqcbqdbqebqfbqgbqhbqibqjbqkbmAbqlbojbgGbgGbqmbfmaMbblqbqnbqoaJubqqbqrbqrbxqborbopbxsbotaafbebbebbebbebceebebbebbebbebaafbedbqzboCbqAbqBbqCbqDbqEaJibqFaRqaRpaJibqGbqHbqIbqJaJDbqLboPbqNboUboUboUboUboUboUbqObqPbqQboYbqRbqSbqTbnnbqUbqVbqWbpfbpgbphbpfbqXbYfaVJbpjbqYbqZbqZbrabrbbrcbrdbrdbrdbrebrdbrfbrgbrhbribrjbrkbnIbrlbpCbrmbrnbrobrpbnIbrqbpFbrrbnMaaaaaaaaaaaaaaaaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaaaaTDaTDaTDaTDaTDaaaaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaaaaaaaaaaaabrsbrtbrubrvbrwbrxbrxbrybrzbrAbgrcedbrCbpPbrDbjpbjpbjpbajbrEbrFbrGbrHbrGbrGbrGbrHbrGbajbajbdPbdPbdPbrIbdPbrJbrJbrJbrJbrJbrJbqfbrKbrLbrMbrNbrObrPbrQbrRbrSbrTbrUbrVbrWbrXbrYbrZaHBbsbbqvbsabsebscbotbosbotaafbsibsjbskbslbsmbsnbskbsobsiaafbedbspbsqbspbedbedbedbsraJibssaRqaRpbXHboJboKbstbsubsvbqLbswbqNbsxbsybszbsAbsBbsCbqObsDbnibsEbsFbsGbsHbnnbsIbqVbpebpfbpgbphbpfbpibYfaVJbpjbsJbsKbsLbsMbplbsNbsObsPbsQbsRbsSbsTbsUbrhbsVbsWbsXbnIbsYbsZbtabtbbtcbtdbnIbrqbpFbtebnMaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaaaaacaaaaaaaaaaaaaaaaaaaaabrsbtfbtgbthbtibtibtibtjbtibtibgrbtkbtlbtmbpPbjpaaaaaaaaaaafaafbtnbtnbtnbtnbtnbtnbtnaaaaaabtobtpbtqbtrbtsbrJbrJbrJbrJbrJbrJbttbtubtvbtwbtxbtybtzbtAbfmbfmbtBbfmbfmbtCbtDbtEbtFbmGbtHbmGbmGbmGbmGbmGbtIbmGaafbtJbtKbtLbtMbtNbtMbtLbtObtPaafbspbtQbtRbtSbtTbtUbspbtVaJlbtWbbmbtXaJibtYbmUbtZbuabubbucbudbuebufbugbuhbuibujbukbulbumbnibnnbunbuobupbnnbuqburbusbutbuubuubuvbuwbYfaXqbpjbuxbplbplbsMbuybuzbuAbuBbuCbuDbuEbuFbuGbrhbuHbuIbuJbnIbuKbuLbuMbtbbpCbuNbnIbpEbpFbuObnMaaaaaaaaaaaaaafbuPbuQbuRbuQbuRbuQbuSaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabuTbeObuUbuUbuVbpHbuWbgnbgobuXbuWbgrbuYbuZbvabvbbjpaaaaaaaaaaaaaaabtnbtnbtnbtnbtnbtnbtnaaaaaabvcbvdbrJbvebvfbvfbvfbvfbvfbvgbvhbvfbvibvjbvkbvlbvmbvnbvobfmbvpbgGbvqbvrbvsbvtbvubvvbmGbmGbmGbvxbvybvzbvAbvBbvwaafbvDbvIbvHbvJbvKbvMbvNbvObvLaafbspbvPbvQbxnbedbvRbspbvSaJlbvTbcLbvUaJibvVbvWbvXbvYbvZbuccdTcdUbwcbwdbwebwebwfbwgcdWcdVbwjbwkbwlbwmbwkbwkbwkbwkbwnbwkbwkaXKaXKaXKaXKaVJbpjbsJbsKbsLbwobwpbwqbwrbwsbwsbwsbsSbwtbwubwvbwwbwxbwybnIbwzbwAbwBbwCbpCbwDbnIbwEbwFbnMbnMaaaaaaaaaaaaaafbwGbwHbwIbwJbwJbwKbwGaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -7405,26 +7409,26 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafaaaaaaaaacptcpucymcpucpucpucyocpucpucpucyocpucpucpucpucpucrRcpucywcpucyncvpcpucpucylcykcuhcyjcoCctdcoCcoCcpucyiczBcxCcyGcoQcxDcoQcnOckYczEczFczGczHcoXcnOczIczJczJczKczLczMczNczOcvNcxNczPczQcxNczRczSczTcvNczUczVcrGaaaaaaaaaaaaaaaaaacqvczWcuMczXcuVczYczZcAactFcAbcAccsPcyXczWcAdcAecqvaaaaaaaaaaaackEcdOcAfcAgcAgcAhcAicAjcAkcAlcAmcAncAocApcAqcokcAraaaaaacrPaafcwjcwjcwjcwjcwjaaackxaafcwjcwjcwjcwjcwjaaacrPaaacyhaaaaaacyhaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaacyhaaaaaacyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaacyxcpucymcpucqKcqMcyucqMcuacqMcyucqMcuacqMcqMcqMcyqcytcyqcyscyrcuhcyBcyCcACcADcAEcAFcoCclacnzcoCcoCcoCcoCcoCcAIcAJcAKcAJcnOcnOcnOcnOcnOcnOcnOcnOcALczJczJcAMcANcAObPxcAPcvNcAQcARcAScATcAUcAVcAWcvNcAXcAYcrGaaaaaaaaaaaaaaaaaacqvcuQcAZcAectFcBacBbcBcctFcBdcBecBfcBgcBhcBicBjcqvaafaafaaaaaaaaaaaabquaaacdOcBlcBmcBncBocBpcBmcBqcBrcBpcBmcBscdOaaaaaabZSaaaaafaaaaafaaaaafaaackxaaaaafaaaaafaafaafaafcrPaaacyhcyhcyhcyhaaacyhcyhcyhcyhcyhcyhcyhcyhcyhaaacyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIvaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabZSaaaaaaaaaaaaaamaaaaaaaaacyDcpucymcpucywcwscymcpucywcwscymcpucywcwscpucpucyvcpucywcwscyEczfczhczecBBcBCcBDcBEcoCcyFcBGcvqcBIcBJcBKcBLcBMcBKcBNcBKcBOcBPcBQcBRcBScBScBTcBUcBVcBWcBWcBXcBYcAObPxcBZcvNcvNcCacCbcCccCbcCacCdcvNcrGcCecrGaaaaaaaaaaaaaaaaaacqvctFcCfcuVctFcCgcChcCictFcCjcCkcqycgvcCmcCncCocrHaaaaaaaaaaaaaaaaaacgwaafcdOcCqcluclUcomclsclpclqcomcloclVclWcdOaaaaaacrPaaactXctXctXctXctXaafckxaafctXctXctXctXctXaafcrPaaacyhcyhcyhcyhaaacyhcyhcyhcyhcyhcyhcyhcyhcyhaaacyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaafaafaafaafaamaafaafaafcyDczwczAczyczgczsczqczpczkcznczmczlczoczscpuczwczvczuczrczncztcoCcoCcoCcCzcCzcCzcCzcCzcvrcCzcCBcCCcCDcCEcCFcCEcCEcCGcCEcCEcCHcCEcCDcCIcCJcCKcCLciCcCNcCOcCPcCQcAObPwcCRcCScCTcCacCUcAVcCVcCacCWaafcCXcCYcCXaaaaaaaaaaaaaaaaaacqvcCZctDcuQcDacDbcuQcDccDdcDeaafaaachxchFchEclXaaaaaaaaaaacaaaaaaaaaaaaaaacdOcDhcplcplcomcDicplcplcomcDicplcplcdOaafaafcrPaafckVckSckSckSckSckyckxckwckvckvckvckvckUaafcrPaaacyhcyhcyhcyhaaacyhcyhcyhcyhcyhcyhcyhcyhcyhaaacyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaafaafaafaafaamaafaafaafcyDczwczAczyczgczsczqczpczkcznczmczlczoczscpuczwczvczuczrczncztcoCcoCcoCcCzcCzcCzcCzcCzcvrcCzcCBcCCcCDcCEcCFcCEcCEcCGcCEcCEcCHcCEcCDcCIcCJcCKcCLciCcCNcCOcCPcCQcAObPwcCRcCScCTcCacAGcAVcBwcCacCWaafcCXcCYcCXaaaaaaaaaaaaaaaaaacqvcCZctDcuQcDacDbcuQcDccDdcDeaafaaachxchFchEclXaaaaaaaaaaacaaaaaaaaaaaaaaacdOcDhcplcplcomcDicplcplcomcDicplcplcdOaafaafcrPaafckVckSckSckSckSckyckxckwckvckvckvckvckUaafcrPaaacyhcyhcyhcyhaaacyhcyhcyhcyhcyhcyhcyhcyhcyhaaacyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPcpFaaaaaaaaaaamaaaaaaaaacAzcAvcAwcAxcAycABcAAcAHcAycABcAAcAHcAycABcBucBucBvcAHcAycABcBtcoCaaacDvcDwcDxcDycDzcDAcAucDCcDDcDDcDEcDFcDGcDHcDIcDJcDHcDIcDGcDKcDLcDMcDKcCBcCBcAOcDNcDOcDPcDQcAObNUcDRcDScDTcCacCbcDUcCbcCacCWaafaaaaafaaaaaaaaaaaaaaaaaaaaacqvcCZcDVcDWcDXcDXcDWcsPcDYcqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdOcDZcplcplcomcEacplcplcomcEacplcplcdOaaaaaacrPaafcwjcwjcwjcwjcwjaaackxaaacwjcwjcwjcwjcwjaaacrPaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPcClcqLcqLcqLcpEcpIcpIcpIcqLcpIcpPcpIcpGcpIcpPcpIcpGcpIcpPcpIcpGcpIcqLcpIcpRcpIcpGcpIcqNaafaaacEicEjcEkcElcEmcEncAucEocDDcEpcEqcErcEscEtcEucEvcEwcExcEscEycEzcEAcDKaaaaafcAOcEBcECcEDaafaaabNUbPxbPxbSkcCaclZcEFclYcCacCWaafaafaaaaaaaaaaaaaaaaaaaaaaaacqvcEHcuXcEIcEJcEJcEIcuQcEKcqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdOcplcplcplcomcELcplcplcomcELcplcplcdOaacaaacrPaaaaaaaafaafaafaaaaaacmTaafaaaaaaaafaafaaaaaacrPaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaafaafaaaaaaaaqaaaaaaaaaaafcgRcCpcmtcmvcgRcCpcmtcmvcgRcCpcmtcmxcgRaaacgRcmycmtcmxcgRaaaaafaaacEicEQcERcEScEQcCAcDBcEUcDDcEVcEWcEXcEscEYcEZcFacFbcFccEscFdcFecFfcDKaaaaaacAOcFgcFhcFiaaaaaabNUbPxbPxbNUcCacmUcmUcmUcCacFkcmWaaaaaaaaaaaaaaaaaaaaaaaaaaacqvcFmcFncuQcuQcuQcuQcuQcFocqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaackEcdOcdOcdOcdOcdOcdOcdOcdOcmYcmYcmYckEaaaaaacrPcrPcrPcrPcrPaaaaaaaaacmZaaaaaaaaacrPcrPcrPbZScrPaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaaaaafaafaaaaamaaaaaaaaaaafcgRcgCcDkcgBcgRcjbcDncjacgRciWcDqchqcgRaafcgRchpcDtchocgRaaaaafaaacEicFrcEkcEQcEQcqZcqXcFucFvcFwcFxcFycFzcFAcFBcFCcFDcFEcFFcFGcFHcFIcDKaafaaacFJcDNcFKcAOcFLaaabNUcFMbPxcFNcFOaafaafaafaaacBkaafaafaaaaaaaaaaaaaaaaaaaaaaaacrHcqvcqvcFPcFQcEIcEIcEIcFRcFPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqpbqpbqpaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaafcfTaafcrPaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaamaaaaaaaafaafcgRcEbcEccEbcgRcEdcEecEdcgRcEfcEgcEfcgRaaacgRcEfcEfcEhcgRaaaaafaaacEicFUcEkcEScEQcEncrVcEocDDcFWcFXcFYcEscFZcGacGbcGacGccEscGdcGecGfcDKaaLcGgcGgcGgcGgcGgcGgcGgbNUciEciDcGjaafaaaaaaaafcGkcDfaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacGlcEJcEJcEJcEJcEJcGlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaaaaafaaacrPaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaafaamaaaaafaafaaacgRcEbcENcEbcgRcEdcEOcEdcgRcEfcEPcEfcgRaafcgRcEfcEfcEfcgRaafaafaafcGncGocGpcGqcGrcGscsacEocDDcoycGvcGwcEscGxcpwcoJcpxcGBcEscGCcGDcGEcDKaaacGgcGgcGgcGgcGgcGgcGgcGFcGGcGHbNUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqvcCmcqxcqxcqxcCocqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPcrPcrPcrPcrPaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbZSaaaaaacgRcgRcgRcgRcgRcgRcgRcgRcgRcgRcgRcgRcgRaaacFqcgRcgRcgRcgRaaaaaaaaaaaacCzcCzcCzcCzcCzcsccGJcGJcGJcGJcGKcGJcjIcjdcjecjdcjccGJcGJcGPcGJcGJcGJcGgcGgcGgcGgcGgcGgcGgaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaacyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcrPaaaaaaaafaafaaaaafaafaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaafaaacGQcGRcGRcGRcGScGTcGUcsecsfcsgcshcGZcpzcpycpCcpAcqIcHfcsZcsYctacHgcHicHjcHkcsVcHIcGJcGgcGgcGgcGgcGgcGgcGgaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafcHncjVcHpaaacHncjVcHpaaacHncjVcHpaafaafaaaaafaafaafaafaafcHqcGRcGRcGRcGScGTcHLctfcHtctecjTcjUctkcjJcucctZcHzcIwcHjctccHjcHjcHjcHjcugcHZcIacGJcGgcGgcGgcGgcGgcGgcGgaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaacHncjWcHpaaacHncjWcHpaaacHncjWcHpaafaafaaaaafaaaaaacHKaafcGQcGRcGRcGRcGScGTcHLcHMcHNcjXcjYcjUcwpcwocwqcufcHjcHjcxocwucyAcHjcHjcHjcugcHZcIqcGJcIbaafaaIaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafcHncjWcHpaaacHncjWcHpaafcHncjWcHpaafaaaaaaaafaafcIcaaaaafcHqcGRcGRcGRcGScGTcwmcIecIfcrQckickrcBzckecBHcBAcnycnycpDcImcEMcIocIocIocpBcHZcFScGJaaaaaaaaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaacHncjWcHpaafcHncjWcHpaaacHncjWcHpaaaaaaaaaaaaaafaafaaaaafaaaaaaaaaaaaaafcIrcGVcIscItcIucLacGZcIwcHjcFscETcKYcLbcvocIycKUcKVcKYcKZcKXcHZcFScGJaaaaaaaaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaaIaafaaacHncjWcHpaafcHncjWcHpaaacHncjWcHpaafaaaaaaaaaaaaaafaafcIJcIKcIKcIKcIKcILcILcILcILcILcIMcILcGJcHjcHjcINcGJcGJcGJcujczDcIQcGJcGJcGJcIRcIScHzcGJaafaaabZSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaafaaaaafaafczCaafaafaafczCaafaaaaafczCaafaaaaaaaaaaaaaaacIUcIVcIWcIXcIYcFTcJacJbcJcciFcJecJfcJgcJecGJcJhcHjcJicxscJkcJlczzcJnczjcJlcJpcxscJqcHjcJrcGJaaaaaaaaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafcydcxzcxycxxcxxcxxcxxcxxcxxcxxcxxcxxcxxcxxczicxzcxzcxzcypcJzcJAcJBcJCcJDcJEcJFcJGcJHcJHcJHcJIcJJcJKcGJcHjcHjcJicxscJkcJLcJMcJNcJOcJLcJpcxscJqcHjcJPcGJaaaaaaaaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYaaactYctYctYctYctYaaactYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaafaaaaafaafcxfaafaaaaafcxfaafaaaaafcxfaafaaaaaaaaaaaaaaacIUcIVcJRcJScJTcJUcIKcJVcJWcJecJecJXcJXcJYcGJcHjcHjcJZcxscJkcKacJMcKbcKccKacJpcxscKdcHjcHjcGJaaaaaaaaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYaaactYctYctYctYctYaaactYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaaIaafaafcHncwrcHpaaacHncwrcHpaaacHncwrcHpaafaaaaaaaaaaaaaafaafcKfcIKcIKcIKcIKcKgcKhcKicKicKjcKgcKgcGJcGJcGZcGJcGJcGJcGJcGJcwDcGJcGJcGJcGJcGJcGZcGJcGJaafaafaaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacHncwrcHpaafcHncwrcHpaaacHncwrcHpaaaaaaaaaaafaaaaafaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaafaaaaaaaaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKlcKlcKlcKlcKlcKlcKlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafcHncwrcHpaaacHncwrcHpaaacHncwrcHpaafaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaaaaLaaaaafaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKlcKlcKlcKlcKlcKlcKlcKlcKlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbZSaaaaaacgRcgRcgRcgRcgRcgRcgRcgRcgRcgRcgRcgRcgRaaacFqcgRcgRcgRcgRaaaaaaaaaaaacCzcCzcCzcCzcCzcsccGJcGJcGJcGJcGKcGJcjIcjdcjecjdcjccGJcGJcGPcGJcGJcGJcGgcGgcGgcGgcGgcGgcGgaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaacyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcrPaaaaaaaafaafaaaaafaafaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaafaaacGQcGRcGRcGRcGScGTcGUcsecsfcsgcshcGZcpzcpycpCcpAcqIcHfcsZcsYctacHgcHicHjcHjbqKbqMcGJcGgcGgcGgcGgcGgcGgcGgaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafcHncjVcHpaaacHncjVcHpaaacHncjVcHpaafaafaaaaafaafaafaafaafcHqcGRcGRcGRcGScGTcHLctfcHtctecjTcjUctkcjJcucctZcHzcIwcHjctccHjcHjcHjcHjcHjcHjcsVcGJcGgcGgcGgcGgcGgcGgcGgaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaacHncjWcHpaaacHncjWcHpaaacHncjWcHpaafaafaaaaafaaaaaacHKaafcGQcGRcGRcGRcGScGTcHLcHMcHNcjXcjYcjUcwpcwocwqcufcHjcHjcxocwucyAcHjcHjcHjcHjcHjcBxcGJcIbaafaaIaafaafaafaafaafaafaafaafaafcugaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafcHncjWcHpaaacHncjWcHpaafcHncjWcHpaafaaaaaaaafaafcIcaaaaafcHqcGRcGRcGRcGScGTcwmcIecIfcrQckickrcBzckecBHcBAcnycnycpDcImcEMcIocIocIocIocIocpBcCscCrcBFcBFcBFcBFcBFcBFcBFcBFcBFcByaaacugaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaacHncjWcHpaafcHncjWcHpaaacHncjWcHpaaaaaaaaaaaaaafaafaaaaafaaaaaaaaaaaaaafcIrcGVcIscItcIucLacGZcIwcHjcFscETcKYcLbcvocIycKUcKVcKYcKZcCMcHjcCycCscCrcBycCxcBycCxcBycCxcBycCxcBycCwaafcugaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaaIaafaaacHncjWcHpaafcHncjWcHpaaacHncjWcHpaafaaaaaaaaaaaaaafaafcIJcIKcIKcIKcIKcILcILcILcILcILcIMcILcGJcHjcHjcINcGJcGJcGJcujczDcIQcGJcGJcGJcIRcHjcHjcGJaaacCwcCwcCwcCwcCwcCwcCwcCwcCwcCwaafcugaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaafaaaaafaafczCaafaafaafczCaafaaaaafczCaafaaaaaaaaaaaaaaacIUcIVcIWcIXcIYcFTcJacJbcJcciFcJecJfcJgcJecGJcJhcHjcJicxscJkcJlczzcJnczjcJlcJpcxscJqcHjcJrcGJaaacCwcCwcCwcCwcCwcCwcCwcCwcCwcCwaaaaanaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafcydcxzcxycxxcxxcxxcxxcxxcxxcxxcxxcxxcxxcxxczicxzcxzcxzcypcJzcJAcJBcJCcJDcJEcJFcJGcJHcJHcJHcJIcJJcJKcGJcHjcHjcJicxscJkcJLcJMcJNcJOcJLcJpcxscJqcHjcJPcGJaaacCwcCwcCwcCwcCwcCwcCwcCwcCwcCwaafcugaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYaaactYctYctYctYctYaaactYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaafaaaaafaafcxfaafaaaaafcxfaafaaaaafcxfaafaaaaaaaaaaaaaaacIUcIVcJRcJScJTcJUcIKcJVcJWcJecJecJXcJXcJYcGJcHjcHjcJZcxscJkcKacJMcKbcKccKacJpcxscKdcHjcHjcGJaaacCwcCwcCwcCwcCwcCwcCwcCwcCwcCwaafaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYaaactYctYctYctYctYaaactYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaaIaafaafcHncwrcHpaaacHncwrcHpaaacHncwrcHpaafaaaaaaaaaaaaaafaafcKfcIKcIKcIKcIKcKgcKhcKicKicKjcKgcKgcGJcGJcGZcGJcGJcGJcGJcGJcwDcGJcGJcGJcGJcGJcGZcGJcGJaafcCvcCucCvcCucCvcCucCvcCucCvcCuaaaaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacHncwrcHpaafcHncwrcHpaaacHncwrcHpaaaaaaaaaaafaaaaafaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaafaaaaafaafaaaaaaaafaafaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKlcKlcKlcKlcKlcKlcKlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafcHncwrcHpaaacHncwrcHpaaacHncwrcHpaafaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaaaaLaaaaafaaaaaacugcugcugcCtcugcugaancugcugaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKlcKlcKlcKlcKlcKlcKlcKlcKlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafcHncwrcHpaaacHncwrcHpaafcHncwrcHpaafaafaafaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaaIaaIbZSbZSaaIaaIaaaaaaaaaaaIaaIaaIaaIaaIaaIaaIaaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKlcKlcKlcKlcKlcKlcKlcKlcKlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqaafcHncwncHpaaacHncwncHpaaacHncwncHpaafaaIaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKlcKlcKlcKlcKlcKlcKlcKlcKlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaaaaafaaaaaaaaaaafaafaafaaaaaaaafaafaaaaaIaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKncKncKncKncKncKncKnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKlcKlcKlcKlcKlcKlcKlcKlcKlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/maps/exodus-3.dmm b/maps/exodus-3.dmm index e88029d54a..ad3f736587 100644 --- a/maps/exodus-3.dmm +++ b/maps/exodus-3.dmm @@ -101,7 +101,7 @@ "bW" = (/obj/structure/table,/obj/item/weapon/screwdriver,/obj/machinery/light,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) "bX" = (/obj/structure/table,/obj/item/device/radio/off,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) "bY" = (/obj/structure/lattice,/obj/structure/grille,/turf/space,/area/space) -"bZ" = (/obj/machinery/power/solar/fake,/turf/simulated/floor{icon_state = "solarpanel"},/area/space) +"bZ" = (/obj/machinery/power/solar/fake,/turf/simulated/floor/airless{icon_state = "solarpanel"},/area/space) "ca" = (/turf/simulated/floor/plating/airless,/area/space) "cb" = (/obj/structure/lattice,/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/space,/area/space) "cc" = (/obj/machinery/camera{c_tag = "North Solars"; dir = 8; network = list("Tcomsat")},/turf/space,/area/space) diff --git a/maps/exodus-4.dmm b/maps/exodus-4.dmm index 39e1ff0072..d0a2adf82a 100644 --- a/maps/exodus-4.dmm +++ b/maps/exodus-4.dmm @@ -33,11 +33,11 @@ "aG" = (/turf/space,/area/solar/constructionsite) "aH" = (/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/solar/constructionsite) "aI" = (/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/djstation/solars) -"aJ" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/solar{id = "construction_solar"; name = "Construction Solar Array"},/turf/simulated/floor{icon_state = "solarpanel"},/area/djstation/solars) +"aJ" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/solar{id = "construction_solar"; name = "Construction Solar Array"},/turf/simulated/floor/airless{icon_state = "solarpanel"},/area/djstation/solars) "aK" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating/airless,/area/djstation/solars) -"aL" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/tracker,/turf/simulated/floor{icon_state = "solarpanel"},/area/djstation/solars) +"aL" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/solar{id = "construction_solar"; name = "Construction Solar Array"},/turf/simulated/floor/airless{icon_state = "solarpanel"},/area/djstation/solars) "aM" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating/airless,/area/djstation/solars) -"aN" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/solar{id = "construction_solar"; name = "Construction Solar Array"},/turf/simulated/floor{icon_state = "solarpanel"},/area/djstation/solars) +"aN" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/tracker,/turf/simulated/floor/airless{icon_state = "solarpanel"},/area/djstation/solars) "aO" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating/airless,/area/djstation/solars) "aP" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating/airless,/area/djstation/solars) "aQ" = (/turf/simulated/wall,/area/djstation) @@ -58,7 +58,7 @@ "bf" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/djstation/solars) "bg" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/djstation/solars) "bh" = (/obj/machinery/door/airlock/engineering{name = "Construction Area"; req_access_txt = "32"},/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor/plating,/area/djstation) -"bi" = (/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/obj/machinery/power/solar{id = "construction_solar"; name = "Construction Solar Array"},/turf/simulated/floor{icon_state = "solarpanel"},/area/djstation/solars) +"bi" = (/obj/structure/cable,/obj/machinery/power/solar{id = "construction_solar"; name = "Construction Solar Array"},/turf/simulated/floor/airless{icon_state = "solarpanel"},/area/djstation/solars) "bj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/djstation/solars) "bk" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating,/area/djstation) "bl" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/djstation) @@ -86,7 +86,7 @@ "bH" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/djstation) "bI" = (/obj/machinery/door/blast/regular{id = "constructiondriver2"; name = "Construction Driver Door"},/turf/simulated/floor/plating,/area/djstation) "bJ" = (/turf/simulated/floor/airless{tag = "icon-gcircuit"; icon_state = "gcircuit"},/area/constructionsite/ai) -"bK" = (/obj/structure/cable,/obj/machinery/power/solar{id = "construction_solar"; name = "Construction Solar Array"},/turf/simulated/floor{icon_state = "solarpanel"},/area/djstation/solars) +"bK" = (/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/obj/machinery/power/solar{id = "construction_solar"; name = "Construction Solar Array"},/turf/simulated/floor/airless{icon_state = "solarpanel"},/area/djstation/solars) "bL" = (/obj/item/weapon/extinguisher,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/djstation) "bM" = (/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/obj/machinery/power/smes/buildable{charge = 2e+006},/turf/simulated/floor/plating,/area/djstation) "bN" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plating,/area/djstation) @@ -403,16 +403,16 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaabaaabacaeapaoaoanabaaabaaabaaabacaeapapapapauauaoaoaoauauapapapapaeacabaaabaaabaaabanauauapaeacaEaEaEaEaEaEaEaEaEaEaEaEaEaEaEaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababacaeapaoaoanabaaabaaabababapaqapauauauauauaoaoaoauauauauauapaqapabababaaabaaabanaoauapaeacaFaEaFaEaFaEaFaEaFaFaEaEaEaFaFaFabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaIaIaIaIaIaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaabaaabacaeapaoaoanababababababapapauauauaoaoaoaoaoaoaoaoaoaoauauauauapapababababababanaoauapaeacabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaIaJaKaLaMaNaIabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababacaeapaoaoanabacacacacapapauauauaoaoaoaoaoaoaoaoaoaoaoaoaoaoauauapapacacacacabanaoauapaeacabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaIaJaOaJaPaNaIababaaaaaQaQaQaQaQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaabaaabacaeapaoaoanabacaeaeaeaqauauaoaoaoaoaoapapapaRapapapaoaoaoaoauauauaqaeaeaeacabanaoauapaeacabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaIaJaOaJaPaNaIabababaaaSaTaUaVaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababacaeapaoaoanabacaeaeapapauauaoaoaoapapapaWaXaYaXaWapapapaoaoaoauauapapaeaeacabanaoauapaeacabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababaIaJaOaJaPaNaIababababaZbabbaVaZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaabaaabacaeapaoaoanabacaeaeapauauauaoaoapapababaWaXaYaXaWababapapaoaoaoauauapaeaeacabanauauapaeacabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaIaJaKaNaMaLaIabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababacaeapaoaoanabacacacacapapauauauaoaoaoaoaoaoaoaoaoaoaoaoaoaoauauapapacacacacabanaoauapaeacabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaIaJaOaJaPaLaIababaaaaaQaQaQaQaQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaabaaabacaeapaoaoanabacaeaeaeaqauauaoaoaoaoaoapapapaRapapapaoaoaoaoauauauaqaeaeaeacabanaoauapaeacabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaIaJaOaJaPaLaIabababaaaSaTaUaVaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababacaeapaoaoanabacaeaeapapauauaoaoaoapapapaWaXaYaXaWapapapaoaoaoauauapapaeaeacabanaoauapaeacabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababaIaJaOaJaPaLaIababababaZbabbaVaZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaabaaabacaeapaoaoanabacaeaeapauauauaoaoapapababaWaXaYaXaWababapapaoaoaoauauapaeaeacabanauauapaeacabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaIaIaIaIbcbdbebcbfbgbcaIaIaIaIaQaQbhaQaQaQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaababalabalalababalababalacaeapaoaoanabacaeaeapauaoaoaoapapabababaWaXaYaXaWabababapapauaoauauapaeaeacabanaoauapaeacabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaIbibibibibjbkblbmbnbobjbibibibiaQbpbqbrbsaQaQaQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababalababalalalalalalalalalalalacaeapaoaoapacacaeapapauaoaoaoapabababaWaWaWbtaWaWaWabababapauauaoauapapaeacacapauaoapaeacabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaIbKbKbKbKbjbkblbmbnbobjbKbKbKbKaQbpbqbrbsaQaQaQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababalababalalalalalalalalalalalacaeapaoaoapacacaeapapauaoaoaoapabababaWaWaWbtaWaWaWabababapauauaoauapapaeacacapauaoapaeacabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaIbubvbvbvbwbxaVbybzbAbwbBbBbBbCaQbpbDbEbFbGbHcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabalalalalalalalalalalalalalalalalalalacaeapaoaoapaeaeaeapauauaoaoapapababaWaWbJbJaXbJbJaWaWababapapauaoauauapaeaeaeapauauapaeacabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaIbKbKbKbKbcbLaVbMaVbNbcbKbKbKbKaQbObqaVbPaQaQaQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabavabababababavavavavavabalabalabalabalabalacacacacacacacacacacacaeapaoaoapaqapapapauauauauapaWaWaWaWaXbJaXaXaXbJaXaWaWaWaWapauauaoauapapapaqapauauapacacavavavababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaIbibibibibcbLaVbMaVbNbcbibibibiaQbObqaVbPaQaQaQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabavabababababavavavavavabalabalabalabalabalacacacacacacacacacacacaeapaoaoapaqapapapauauauauapaWaWaWaWaXbJaXaXaXbJaXaWaWaWaWapauauaoauapapapaqapauauapacacavavavababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaIbQbRbRbRbSbTbUbVaVbWbSbXbXbXaKaQbYbDbEbEbZbHcraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalabalalalalalalalalalalalalalaeaeaeaeaeaeaeaeaeaeaeaeapaoaoauauauauauauaoauauapaXaXaXaWbJbJaXaYaXbJbJaWaXaXaXapauauaoauauauauaoauauaoapaeaealalalalalalalalalalalalaaaaabaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaIbKbKbKbKcbcccdcecfcgcbbKbKbKbKaQchbqaVciaQaQaQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababalalalalalababalalabalabalabalabalabalcjaecjaeaeaeaeaeaeaeaeaeapauauauauauauauaoauauauckaYaYaYclaXaXaXaYaXaXaXcmaYaYaYcnaoauaoaoaoaoaoaoauauauapaeaealalalalalalalalalabalabalabalalalabalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaIbibibibicbcccdcecfcgcbbibibibiaQchbqaVciaQaQaQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababalalalalalababalalabalabalabalabalabalcjaecjaeaeaeaeaeaeaeaeaeapauauauauauauauaoauauauckaYaYaYclaXaXaXaYaXaXaXcmaYaYaYcnaoauaoaoaoaoaoaoauauauapaeaealalalalalalalalalabalabalabalalalabalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQaQaQaQaQaQaQaQaQcoaQaQaQaQaQaQaQaQcpbDbEbEcqbHbIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababalalalalalalalabalabalalalalalaeaeaecjaeaeaeaeaeaeaeaeapaoaoauaoaoaoaoaoaoaoaoapaXaXaXaWbJbJaXaYaXbJbJaWcscscsapauauaoauauauauauauaoaoapaeaealalalalalalalalalalalalalalalalabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabctcucvcwcwcxctcyczcAcBcCcDcEcFbEcEcDbEcGaVcHaQaQaQaQaQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaavavavabababababavavavavavavavavavavavacacacacacacacacacacacacapaoaoapcIapapapcJaucJauapaWaWaWaWaXbJaXaXaXbJaXaWaWaWaWapauauaoauapapapaqapauaoapacacavavavavavababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcKcucLcucucLcKcMcMcNcMcMaQaQaQaQaQaQcOcPbEcQcRcScTcUaQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababaccjcVcWcWcVaeaeaecVcXcXcXcXcVcVababaWaWbJbJaXbJbJaWaWababcVcVcXcXcXcXcVaeaeaecVcWcWcXaeacababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/maps/exodus-5.dmm b/maps/exodus-5.dmm index 9fb4fa0d41..bb8c4fc319 100644 --- a/maps/exodus-5.dmm +++ b/maps/exodus-5.dmm @@ -21,6 +21,7 @@ "au" = (/obj/structure/transit_tube{icon_state = "D-SE"},/turf/simulated/mineral,/area/mine/unexplored) "av" = (/obj/structure/transit_tube{icon_state = "E-SW"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating/airless/asteroid,/area/mine/unexplored) "aw" = (/obj/structure/transit_tube,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/hallway) +"ax" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/mine/abandoned) "ay" = (/obj/structure/transit_tube/station,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/research_outpost/hallway) "az" = (/obj/structure/transit_tube,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/research_outpost/hallway) "aA" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/transit_tube,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/hallway) @@ -142,7 +143,7 @@ "cM" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 8},/turf/simulated/floor/plating,/area/research_outpost/atmos) "cN" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor,/area/research_outpost/atmos) "cO" = (/obj/structure/transit_tube/station{dir = 8; icon_state = "closed"},/turf/simulated/floor{icon_state = "bot"},/area/research_outpost/atmos) -"cP" = (/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/shard{icon_state = "small"},/turf/simulated/floor/plating,/area/mine/abandoned) +"cP" = (/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/shard{icon_state = "small"},/turf/simulated/floor/plating/airless,/area/mine/abandoned) "cQ" = (/obj/item/stack/rods,/obj/structure/door_assembly/door_assembly_ext{name = "Broken External Airlock"},/turf/simulated/floor,/area/mine/abandoned) "cR" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/mine/abandoned) "cS" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/mine/abandoned) @@ -165,7 +166,7 @@ "dj" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/light/small,/turf/simulated/floor,/area/research_outpost/atmos) "dk" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "pwall"; dir = 9},/area/shuttle/alien/mine) "dl" = (/turf/simulated/shuttle/wall{icon_state = "pwall"; dir = 1},/area/shuttle/alien/mine) -"dm" = (/turf/simulated/floor/plating,/turf/simulated/shuttle/wall{icon_state = "pwall"; dir = 10},/area/shuttle/alien/mine) +"dm" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/mine/abandoned) "dn" = (/obj/item/stack/rods,/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned) "do" = (/obj/effect/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned) "dp" = (/obj/structure/lattice,/obj/structure/transit_tube{icon_state = "D-SE"},/turf/space,/area/space) @@ -225,7 +226,7 @@ "er" = (/obj/structure/transit_tube{icon_state = "N-S"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) "es" = (/turf/simulated/mineral,/area/mine/explored) "et" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "pwall"; dir = 5},/area/shuttle/alien/mine) -"eu" = (/turf/simulated/floor/plating,/turf/simulated/shuttle/wall{icon_state = "pwall"; dir = 6},/area/shuttle/alien/mine) +"eu" = (/turf/simulated/floor/plating/airless,/turf/simulated/shuttle/wall{icon_state = "pwall"; dir = 10},/area/shuttle/alien/mine) "ev" = (/obj/item/weapon/shard,/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned) "ew" = (/turf/simulated/wall,/area/mine/abandoned) "ex" = (/turf/space,/area/shuttle/research/outpost) @@ -251,7 +252,7 @@ "eR" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{dir = 4; icon_state = "whiteyellow"},/area/research_outpost/hallway) "eS" = (/turf/simulated/wall/r_wall,/area/research_outpost/power) "eT" = (/obj/machinery/door/airlock/glass_atmos{name = "Outpost Atmospherics"; req_access_txt = "0"; req_one_access_txt = "65;10;24"},/obj/machinery/atmospherics/pipe/simple/hidden/universal,/turf/simulated/floor/plating,/area/research_outpost/power) -"eU" = (/obj/item/stack/rods,/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/shard,/turf/simulated/floor/plating,/area/mine/abandoned) +"eU" = (/obj/item/stack/rods,/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/shard,/turf/simulated/floor/plating/airless,/area/mine/abandoned) "eV" = (/obj/item/stack/rods,/obj/effect/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned) "eW" = (/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned) "eX" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/hallway) @@ -281,7 +282,7 @@ "fv" = (/obj/machinery/light/small{dir = 8},/obj/structure/transit_tube{icon_state = "D-SE"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) "fw" = (/obj/structure/transit_tube{icon_state = "N-SW"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) "fx" = (/obj/structure/lattice,/obj/item/weapon/shard{icon_state = "medium"},/turf/space,/area/space) -"fy" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/mine/abandoned) +"fy" = (/turf/simulated/floor/plating/airless,/turf/simulated/shuttle/wall{icon_state = "pwall"; dir = 6},/area/shuttle/alien/mine) "fz" = (/obj/effect/alien/weeds{icon_state = "weeds2"},/obj/item/clothing/mask/facehugger{icon_state = "facehugger_dead"; stat = 2},/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned) "fA" = (/obj/effect/alien/weeds,/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned) "fB" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/hallway) @@ -498,9 +499,9 @@ "jE" = (/turf/simulated/floor/airless,/area/mine/abandoned) "jF" = (/obj/effect/alien/weeds,/turf/simulated/floor,/area/mine/abandoned) "jG" = (/obj/effect/decal/remains/xeno,/turf/simulated/floor/airless{icon_state = "damaged3"},/area/mine/abandoned) -"jH" = (/obj/structure/table,/turf/simulated/floor,/area/mine/abandoned) -"jI" = (/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/abandoned) -"jJ" = (/obj/structure/table/rack,/turf/simulated/floor,/area/mine/abandoned) +"jH" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/mine/abandoned) +"jI" = (/obj/structure/table/rack,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned) +"jJ" = (/obj/structure/table/rack,/turf/simulated/floor/airless,/area/mine/abandoned) "jK" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/transit_tube{icon_state = "D-NE"},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry) "jL" = (/obj/structure/transit_tube{icon_state = "S-NW"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/research_outpost/entry) "jM" = (/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/research_outpost/entry) @@ -612,15 +613,15 @@ "lO" = (/obj/machinery/alarm{dir = 1; pixel_y = -24},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/research_outpost/harvesting) "lP" = (/obj/machinery/artifact_scanpad,/obj/machinery/light/small,/turf/simulated/floor/bluegrid,/area/research_outpost/harvesting) "lQ" = (/obj/machinery/portable_atmospherics/hydroponics{closed_system = 1; name = "isolation tray"},/turf/simulated/floor{icon_state = "dark"},/area/mine/abandoned) -"lR" = (/obj/structure/table,/obj/item/weapon/paper/crumpled,/turf/simulated/floor/airless{icon_state = "floorscorched2"},/area/mine/abandoned) -"lS" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/mine/abandoned) -"lT" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/item/weapon/shard{icon_state = "medium"},/turf/simulated/floor/plating,/area/mine/abandoned) -"lU" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/mine/abandoned) -"lV" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/mine/abandoned) -"lW" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/mine/abandoned) -"lX" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/mine/abandoned) +"lR" = (/obj/item/weapon/table_parts,/turf/simulated/floor/airless,/area/mine/abandoned) +"lS" = (/obj/effect/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "damaged4"},/area/mine/abandoned) +"lT" = (/obj/effect/decal/remains/human,/obj/item/clothing/mask/facehugger{icon_state = "facehugger_dead"; stat = 2},/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned) +"lU" = (/obj/structure/transit_tube,/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 10},/area/mine/explored) +"lV" = (/obj/structure/transit_tube/station{dir = 2; icon_state = "closed"},/obj/structure/sign/securearea{desc = "A warning sign which reads 'VACUUM'"; icon_state = "space"; layer = 4; name = "VACUUM"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 6},/area/mine/explored) +"lW" = (/obj/effect/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/airless{icon_state = "damaged4"},/area/mine/abandoned) +"lX" = (/obj/structure/transit_tube/station{dir = 8; icon_state = "closed"},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 8},/area/mine/explored) "lY" = (/obj/effect/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor,/area/mine/abandoned) -"lZ" = (/obj/effect/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned) +"lZ" = (/obj/effect/alien/weeds{icon_state = "weeds2"},/obj/item/clothing/mask/facehugger{icon_state = "facehugger_dead"; stat = 2},/turf/simulated/floor/airless,/area/mine/abandoned) "ma" = (/obj/structure/transit_tube{icon_state = "S-NE"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) "mb" = (/obj/structure/transit_tube{icon_state = "D-NW"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) "mc" = (/obj/structure/transit_tube{icon_state = "E-NW"},/obj/structure/lattice,/turf/space,/area/space) @@ -662,7 +663,7 @@ "mM" = (/obj/item/clothing/mask/facehugger{icon_state = "facehugger_dead"; stat = 2},/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned) "mN" = (/obj/effect/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned) "mO" = (/obj/effect/decal/remains/xeno,/turf/simulated/floor,/area/mine/abandoned) -"mP" = (/obj/effect/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/airless{icon_state = "damaged3"},/area/mine/abandoned) +"mP" = (/obj/effect/alien/weeds,/turf/simulated/floor/airless,/area/mine/abandoned) "mQ" = (/obj/structure/ore_box,/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) "mR" = (/turf/simulated/wall,/area/mine/explored) "mS" = (/obj/structure/transit_tube{icon_state = "N-S"},/turf/simulated/wall,/area/mine/explored) @@ -698,13 +699,13 @@ "nw" = (/obj/structure/transit_tube{icon_state = "W-NE"},/obj/structure/lattice,/turf/space,/area/space) "nx" = (/obj/structure/transit_tube{icon_state = "D-NW"},/turf/space,/area/space) "ny" = (/obj/machinery/portable_atmospherics/hydroponics,/turf/simulated/floor{icon_state = "dark"},/area/mine/abandoned) -"nz" = (/turf/simulated/floor{icon_state = "green"; dir = 8},/area/mine/abandoned) +"nz" = (/obj/effect/decal/remains/human,/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned) "nA" = (/obj/effect/gibspawner/human,/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned) "nB" = (/obj/item/clothing/mask/facehugger{icon_state = "facehugger_dead"; stat = 2},/turf/simulated/floor,/area/mine/abandoned) "nC" = (/obj/effect/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned) "nD" = (/obj/machinery/light_construct/small{dir = 4},/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) "nE" = (/obj/machinery/door/window/westleft,/obj/structure/sign/securearea{desc = "A warning sign which reads 'VACUUM'"; icon_state = "space"; layer = 4; name = "VACUUM"; pixel_x = 0; pixel_y = 32},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) -"nF" = (/obj/structure/transit_tube{icon_state = "N-S"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/mine/explored) +"nF" = (/obj/structure/transit_tube{icon_state = "N-S"},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 10},/area/mine/explored) "nG" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/lattice,/turf/space,/area/space) "nH" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor,/area/research_outpost/gearstore) "nI" = (/obj/machinery/door/airlock/glass_mining{name = "Equipment storage"; req_access_txt = "65"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/research_outpost/gearstore) @@ -732,14 +733,14 @@ "oe" = (/turf/simulated/floor{tag = "icon-vault (NORTH)"; icon_state = "vault"; dir = 1},/area/research_outpost/longtermstorage) "of" = (/obj/structure/transit_tube{icon_state = "S-NE"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/unexplored) "og" = (/obj/structure/transit_tube{icon_state = "D-NW"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/unexplored) -"oh" = (/obj/effect/decal/remains/human,/turf/simulated/floor{icon_state = "green"; dir = 8},/area/mine/abandoned) +"oh" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/shard,/turf/simulated/floor/plating/airless,/area/mine/abandoned) "oi" = (/obj/effect/alien/resin,/turf/simulated/floor/airless{icon_state = "floorgrime"},/area/mine/abandoned) "oj" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/mine/abandoned) "ok" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/mine/abandoned) -"ol" = (/obj/effect/alien/weeds{icon_state = "weeds2"},/obj/item/clothing/mask/facehugger{icon_state = "facehugger_dead"; stat = 2},/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned) +"ol" = (/obj/effect/alien/weeds,/turf/simulated/floor/airless{icon_state = "damaged4"},/area/mine/abandoned) "om" = (/obj/structure/ore_box,/obj/machinery/light_construct/small{dir = 1},/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) "on" = (/obj/machinery/door/window/westleft,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) -"oo" = (/obj/structure/transit_tube/station{dir = 8; icon_state = "closed"},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/mine/explored) +"oo" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/mine/abandoned) "op" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22; pixel_y = 0},/obj/structure/dispenser/oxygen,/turf/simulated/floor,/area/research_outpost/gearstore) "oq" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/research_outpost/gearstore) "or" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/machinery/door/window{dir = 4; name = "Air Tank Access"; req_access_txt = "0"; req_one_access_txt = "47;10;24"},/obj/machinery/portable_atmospherics/canister/air/airlock,/turf/simulated/floor,/area/research_outpost/gearstore) @@ -764,8 +765,8 @@ "oK" = (/turf/simulated/wall/r_wall,/area/research_outpost/maintstore2) "oL" = (/obj/structure/transit_tube{icon_state = "D-SE"},/turf/simulated/wall/r_wall,/area/research_outpost/longtermstorage) "oM" = (/obj/structure/transit_tube{icon_state = "N-SW"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/unexplored) -"oN" = (/obj/effect/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "damaged3"},/area/mine/abandoned) -"oO" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/shard,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/abandoned) +"oN" = (/obj/effect/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/airless,/area/mine/abandoned) +"oO" = (/obj/machinery/door/airlock,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned) "oP" = (/obj/machinery/door/airlock/glass{name = "Glass Airlock"; req_access_txt = "0"},/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/mine/abandoned) "oQ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/mine/abandoned) "oR" = (/obj/machinery/suspension_gen,/turf/simulated/floor,/area/research_outpost/gearstore) @@ -790,8 +791,8 @@ "pk" = (/obj/structure/transit_tube{icon_state = "D-SE"},/turf/simulated/mineral/random,/area/mine/unexplored) "pl" = (/obj/structure/transit_tube{icon_state = "NE-SW"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/unexplored) "pm" = (/obj/structure/transit_tube{icon_state = "D-NW"},/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating/airless/asteroid,/area/mine/unexplored) -"pn" = (/obj/effect/decal/remains/human,/obj/item/clothing/mask/facehugger{icon_state = "facehugger_dead"; stat = 2},/turf/simulated/floor,/area/mine/abandoned) -"po" = (/obj/item/weapon/table_parts,/turf/simulated/floor,/area/mine/abandoned) +"pn" = (/obj/structure/transit_tube{icon_state = "N-S"},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 9},/area/mine/explored) +"po" = (/obj/machinery/door/airlock,/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned) "pp" = (/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/mine/abandoned) "pq" = (/obj/structure/table/rack,/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/mine/abandoned) "pr" = (/obj/structure/closet,/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) @@ -830,8 +831,8 @@ "pY" = (/obj/structure/lattice,/obj/structure/transit_tube{icon_state = "D-SE"},/turf/space,/area/mine/explored) "pZ" = (/obj/structure/lattice,/obj/structure/transit_tube{icon_state = "E-SW"},/turf/space,/area/mine/explored) "qa" = (/obj/structure/lattice,/obj/structure/transit_tube,/turf/space,/area/mine/explored) -"qb" = (/obj/structure/transit_tube,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/mine/explored) -"qc" = (/obj/structure/transit_tube/station{dir = 2; icon_state = "closed"},/obj/structure/sign/securearea{desc = "A warning sign which reads 'VACUUM'"; icon_state = "space"; layer = 4; name = "VACUUM"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/mine/explored) +"qb" = (/obj/structure/table/rack,/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned) +"qc" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/item/weapon/shard{icon_state = "medium"},/turf/simulated/floor/plating/airless,/area/mine/abandoned) "qd" = (/obj/machinery/mech_bay_recharge_port,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/mine/explored) "qe" = (/turf/simulated/floor/mech_bay_recharge_floor{icon_state = "recharge_floor_asteroid"},/area/mine/explored) "qf" = (/obj/machinery/computer/mech_bay_power_console,/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/mine/explored) @@ -875,22 +876,22 @@ "qR" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "research_outer"; locked = 1; name = "Research Outpost External Access"; req_access = null; req_access_txt = "10;13"},/turf/simulated/floor/plating,/area/research_outpost/gearstore) "qS" = (/obj/structure/disposalpipe/segment,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/mine/explored) "qT" = (/obj/machinery/door/window/westleft,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) -"qU" = (/obj/structure/transit_tube{icon_state = "D-SE"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/mine/explored) +"qU" = (/obj/structure/table,/obj/item/weapon/paper/crumpled,/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned) "qV" = (/obj/structure/transit_tube{icon_state = "E-SW"},/turf/simulated/wall/r_wall,/area/mine/explored) "qW" = (/obj/structure/transit_tube,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating/airless/asteroid,/area/mine/unexplored) "qX" = (/obj/structure/transit_tube,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/unexplored) -"qY" = (/obj/structure/transit_tube,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/mine/unexplored) -"qZ" = (/obj/structure/transit_tube/station,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/mine/unexplored) -"ra" = (/obj/structure/transit_tube{icon_state = "W-NE"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/mine/unexplored) +"qY" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/mine/abandoned) +"qZ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/mine/abandoned) +"ra" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/mine/abandoned) "rb" = (/obj/machinery/door/airlock/external{name = "External Airlock"; req_access_txt = "0"},/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/mine/abandoned) -"rc" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/item/weapon/shard{icon_state = "small"},/obj/item/stack/rods,/turf/simulated/floor/plating,/area/mine/abandoned) +"rc" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/item/weapon/shard{icon_state = "small"},/obj/item/stack/rods,/turf/simulated/floor/plating/airless,/area/mine/abandoned) "rd" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 1},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/space,/area/mine/explored) "re" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 1},/turf/space,/area/mine/explored) "rf" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "research_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = null; req_one_access = list(13,65); req_one_access_txt = null},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/explored) "rg" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 9},/area/mine/explored) "rh" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/explored) "ri" = (/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 5},/area/mine/explored) -"rj" = (/obj/structure/transit_tube{icon_state = "S-NE"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/mine/explored) +"rj" = (/obj/structure/transit_tube{icon_state = "S-NE"},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 8},/area/mine/explored) "rk" = (/obj/structure/transit_tube{icon_state = "D-NW"},/turf/simulated/wall/r_wall,/area/mine/explored) "rl" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'VACUUM'"; icon_state = "space"; layer = 4; name = "VACUUM"; pixel_x = -32; pixel_y = -32},/turf/simulated/floor/plating/airless/asteroid,/area/mine/unexplored) "rm" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/unexplored) @@ -898,7 +899,7 @@ "ro" = (/obj/machinery/door/window/westleft{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/unexplored) "rp" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/explored) "rq" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'VACUUM'"; icon_state = "space"; layer = 4; name = "VACUUM"; pixel_x = 0; pixel_y = -32},/obj/machinery/door/window/westleft,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) -"rr" = (/obj/structure/transit_tube/station{dir = 8; icon_state = "closed"},/obj/structure/transit_tube_pod,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/mine/explored) +"rr" = (/obj/structure/transit_tube/station{dir = 8; icon_state = "closed"},/obj/structure/transit_tube_pod,/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 10},/area/mine/explored) "rs" = (/obj/effect/glowshroom,/obj/machinery/light/small,/turf/simulated/floor/plating/airless/asteroid,/area/mine/unexplored) "rt" = (/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/abandoned) "ru" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/abandoned) @@ -1113,6 +1114,7 @@ "vv" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/mine/living_quarters) "vw" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor,/area/mine/living_quarters) "vx" = (/obj/machinery/camera{c_tag = "Storage Room"; dir = 1; network = list("MINE")},/turf/simulated/floor,/area/mine/living_quarters) +"vy" = (/obj/structure/table,/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned) "vz" = (/turf/simulated/wall,/area/mine/production) "vA" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/production) "vB" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/production) @@ -1374,6 +1376,10 @@ "Ax" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/mine/explored) "Ay" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/mine/explored) "Az" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/explored) +"AA" = (/obj/structure/transit_tube,/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 10},/area/mine/unexplored) +"AB" = (/obj/structure/transit_tube{icon_state = "W-NE"},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 6},/area/mine/unexplored) +"AC" = (/obj/structure/transit_tube/station,/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/unexplored) +"AD" = (/obj/structure/transit_tube{icon_state = "D-SE"},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 9},/area/mine/explored) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -1424,33 +1430,33 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaRababababababababaSaTaUaVaWaXaYaZbabbbcbdbebcbfbgbcbhbdaMaeaebibjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababbkbkababbkbkbkbkabbkbkbkbkbkbkbkababababababababaaaaaaaaaaaaaaaaaaaRabababababaSaSaSaSblbmaUbnbobpbpbpbqbcbrbsbtbubvbwbxbyaMaeaebzbAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababbkababababababbkbkababababbkbkbkbkabbkbkbkbkbkbkbkbkbkbkbkbkbkbkabaaaaaaaaaaaaaaaaaaaRababababaSaSbBbCaSbDbDbDbDbEbFbGbGbHbcbcbcbcbIbJbKbKbKbKbKbKbLbMbNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabObPbOaaaaaaaaaaababababababababababababababababababababababbkabababbkbkabbkbkbkababbkbkbkbkbkbkbkbkbkbkbkbkbkbkabbkaaaaaaaaaaaaaaaaaRababababaSbQbRbSbTbUbVbWbXbYbZcacbccbccdcebccfcgbKchcicjckclcmcncoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacpcqcpaeaaaaaaababababababababababababbkbkbkbkbkbkabababababababbkbkbkbkbkabababbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkaaaaaaaaaaaaaaaaaRababababaScrcsctaScucvcwcxcyczcAcbcBbccCcDcEcFcGcHcIcJcKcLcMcNcOcoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxbPbOaaaaaaaaaaababababababababababababababababababababababbkabababbkbkabbkbkbkababbkbkbkbkbkbkbkbkbkbkbkbkbkbkabbkaaaaaaaaaaaaaaaaaRababababaSbQbRbSbTbUbVbWbXbYbZcacbccbccdcebccfcgbKchcicjckclcmcncoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadmcqcpaeaaaaaaababababababababababababbkbkbkbkbkbkabababababababbkbkbkbkbkabababbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkaaaaaaaaaaaaaaaaaRababababaScrcsctaScucvcwcxcyczcAcbcBbccCcDcEcFcGcHcIcJcKcLcMcNcOcoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacPcQcRcSaeaaaaabababababababbkababbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkaaaaaaaaaaaaaaafcTaaabababaScrcUcVaScWcwcXcYcZdadbdadcdadadaaMdddebKdfdgcKdhdidjcncoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadkdldldmdndocpaeaaaaababababbkbkbkababbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkaedpdqaBaBaBdrdsaaabababaScrdtduaSdvdwdxdydzdAdBdCdDdEdFdGaMdHdIbKdJdKdLdMdNbKdOdPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadkdldleudndocpaeaaaaababababbkbkbkababbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkaedpdqaBaBaBdrdsaaabababaScrdtduaSdvdwdxdydzdAdBdCdDdEdFdGaMdHdIbKdJdKdLdMdNbKdOdPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadQdRdSdTdUdVdWaeaebkbkababbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkdXdXdXaedYdsaeaeaeaeaedZaSaSaSaSaSaSeaaSbDaMaMebecdaedeeefegeheiaMejekelemeneoepeqeleresaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaetdldleuevdoewbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkdXdXdXaaaaaRexexexexexexexbceyezeAeBeCeDeEeFeGeHeIeJdaeKeLeMeNeOePdaeQeReSeSeSeTeSeSeSeresaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaetdldlfyevdoewbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkdXdXdXaaaaaRexexexexexexexbceyezeAeBeCeDeEeFeGeHeIeJdaeKeLeMeNeOePdaeQeReSeSeSeTeSeSeSeresaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeeUeVeWewbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkdXaaaaaRexexexexexexexeXeYeZfaeZeZfbfceZfdfefffgfhfifjfkflfmfnfofpfqeSfrfsfufteSfvfwesesaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaefxfyfzfAewbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkaaaaaaaaaRexexexexexexexfBfCfDfEfFfGfHfIfJfKaMfLfMaMfNfOfPfQfRfSdafTfUfVfWfXfYfZgagbgcesesaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaefxjHfzfAewbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkaaaaaaaaaRexexexexexexexfBfCfDfEfFfGfHfIfJfKaMfLfMaMfNfOfPfQfRfSdafTfUfVfWfXfYfZgagbgcesesaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaegdgegfewggghewewewewbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkaaaaaaaaaaaaaRexexexexexexexgifCfDfEfFgjgkfIfJglaMgmgnaMgodadadadagpdagqgreSgsgtgugvgwergxgygyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacaaacacacacacaaacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaegzgAgBgCgDgEbOdVgFewgGgHewbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkaaaaaaaaaaaaaRexexexexexexexbcgIgJgKfFgLgMfIgNgOaMgPgQgRgSgTgUgVaMgWgXgYgZeShahbhchdheeresesesaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacaaacacacacacaaacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaehfhggAhhhihjhkhlgFhmgHhngGewbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkaaaaaaaaaaaahohphqhrhshphqhthuhvhwhxhyhyaMaMaMaMaMhzhAhBhCbghDhEaMhFhGhHhIaMhJhKhLhMhNhOhPaMhQdqaBaBaBaBaBaBaChRaaaaaaaaaaaaaaaaacacacacacaaaaaaaaaaaaaaacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahShfhThfgBgBgghUhiewfAhVewgHhWewbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkaaaaaaaaaaaahXhYhZiaibichZidieifhZigihiiijikilimaMinhAioipiqirisaMitiuiviwaMeSixeSaMaMiyiziAiBiCiDiDiEiDiDiDiFbjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeiGiHgBiIiJgBeWiKhjiLiMiNewewewewewewbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkabababababababababababababaaaaaaaaaaiOiPiQiQiQiQiRiSiTiUiViWiXiYijiZjajbjcjdjejfjgeZeZjhjieZeZjjjkjljmjnjojpjqeZeZjrjsjtjuiDjvjwjxjyiDbAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaejzjAjBgBiJjChhjDhijEewjFjGewjHgFjIjJewbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkabababababababababababababababaaaaaaaajKjLhZhZjMhZjNjOhZjPhZjQjRjSijjajTjUjVjWjXjYjZkakbkckdkekfkckdkdkgkhkikjkkklkmknkokpkqkrksktkukviDbAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaebkbkewgEkwkxkyjBkzkAhjkBbOdVkCewjHfAgFjJewbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkababababesesesesesesababababababkDkEaaaaaakFkGhZkHkIkJkKidkLkMkNkOkPkQijkRkSkTkUkUaMaMkVkWkWkXkWkYkYkZkYlalalblaaMlcaMldleiDlflgiDlhlikuljiDbAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeewewewewewewgDhilkkwhiiKllkBkBhlgFjFewjHeWlmjJewbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkababesesesgygygygyesesesabablnlolphRaaaaaalqlrhqhrlslslslslsltlsbcbcbcijlukUlvlwlxlylzlAkWlBlClDkYlElFlGlalHlIlJlalKlLldlMldiDiDiDlNlOlPjyiDbAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeewlQdVhjlRewlSlTlUewiLewlVlWlXewdVlYcqlZeWfzcqewbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkabababesesgygygygygygygygyesesabmambbimcaBaBaBdrdsaeaemdmemfmgmhmimjmkmlmmmnmompmqmrmsmtmungkWmwmxmykYmzmAmBlamCmDmElamFmGldmHmImJmKiDiDiDiDiDmLcTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkewlQeWdVhhiLlYkwmMkwmNdVdVmOgFdVeWeWewcqmPeWdVewbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkababesesgygygygygygygygygygymQmRmSmRaaaaaaaaaaaaaaaaaemdmTmUmVmWmXmYmZnananbnckUndnelylynfmvkWnhninjkYnknlnmlannnonplanqnrldnsntntnuldnvagaBaBnwnxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkbkewnynzeWeWiLeWlmggeWnAmNlmkCnBeWnCfAewkwcqlYdVewbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkabesmRgygygygygygygygygygygynDnEnFnGaaaaaaaaaaaaaaaaaemdmTmUnHnInJnKmUnLnanMijijnNnOlynPnQnRkWnSnTnUkYnVnWnXlanYnZoalaobocldodoeoeoeldofogbkaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkbkbkewnyohhhgDewoiewojokewhjewojokewhilYewmOolcqjFewbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkabesomgygygygygygygygygygygygyonoonGaaaaaaaaaaaaaaaaaemdopmUoqmhorosotounaovijowoxoylyozoAoBoCoCoDoCoEoEoFoEoGoGoHoGoGoIoJoKldldldldoLoMabbkbkbkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkbkbkbkbkbkewewewewewewoiewoNgFhjjFfAhikzhiiNhhewojoOoPoQewbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkabesmQgygygygygygygygygygygygyonnFnGaaaaaaaaaaaaaaaeaemdoRoSoTmWoUosoVoWnaoXijoYoxoylylylylyoCoZpapboEpcpdpeoGpfpgphoGpipjoKabbkabpkplpmabbkbkbkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkbkbkbkbkbkbkbkbkbkbkbkewoiewgFjFpniKdohhgFewhifAewpopppppqewadbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkabesesgygygyprgygygygygygygygypsptaeaaaaaaaaaaaaaeaeaemdmdpupvmdmdpwpxpwmdpypzpApBpCpDgygygyoCpEpFpGoEpHpIpJoGpKpLpMoGoKoKpNpOaiaipPogababbkbkbkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkbkbkbkbkbkbkbkbkbkbkbkewoiewjFdViNgFhifAiNewoiewewjHcqpppqpRadadbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkabespSpTgypUpSpQgygygygygygygygypWpXaaaaaaaaaaaepYpZqaqbqcqdqeqfmdqgqhqimdqjpzgygygygygygygyoCqkqlqmoCqnqoqpoEqqqrqsoGabauqtogquabababababbkbkbkbkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkbkbkbkbkbkbkbkbkbkbkbkbkewoiewewewewewewewewewoiewjHcqjIcqpqqvadadbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkabespSgygygypSpQgygygygygygygyqwqxqyqzqzqzqzqzqzqAqBqCqDqDqEqFqFmdqGqHqImdqJgygygygygypzpzpzoCoCoCoCoCoEoEoEoEoGoGoGoGauqtogqKadqKababababbkbkbkbkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLaaaaaaaaaaqLbkbkbkbkbkbkbkbkbkbkbkbkbkbkewoioioioioioioioioioioiewjHjIjIjIjJewadadadbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkabesgygygygyqMqNgygygygygygygygyqOqPqPqPqPqPqPqPqPqOgygygygygygymdqQqRpwmdqSgygygygygyqTqUqVaiaiaiaiqWaiaiaiaiaiqXqYqZraogadadadqKkDabbkbkbkbkbkbkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaejzjAjBgBiJjChhjDhijEewjFjGewkBkCdVjJewbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkabababababababababababababababaaaaaaaajKjLhZhZjMhZjNjOhZjPhZjQjRjSijjajTjUjVjWjXjYjZkakbkckdkekfkckdkdkgkhkikjkkklkmknkokpkqkrksktkukviDbAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaebkbkewgEkwkxkyjBkzkAhjkBbOdVkCewkBkwkCjIewbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkababababesesesesesesababababababkDkEaaaaaakFkGhZkHkIkJkKidkLkMkNkOkPkQijkRkSkTkUkUaMaMkVkWkWkXkWkYkYkZkYlalalblaaMlcaMldleiDlflgiDlhlikuljiDbAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeewewewewewewgDhilkkwhiiKllkBkBhlgFjFewkBeWfAqbewbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkababesesesgygygygyesesesabablnlolphRaaaaaalqlrhqhrlslslslslsltlsbcbcbcijlukUlvlwlxlylzlAkWlBlClDkYlElFlGlalHlIlJlalKlLldlMldiDiDiDlNlOlPjyiDbAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeewlQhijBqUewjzqcjAewiLewqZraqYewdVlYjEoNeWfzhiewbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkabababesesgygygygygygygygyesesabmambbimcaBaBaBdrdsaeaemdmemfmgmhmimjmkmlmmmnmompmqmrmsmtmungkWmwmxmykYmzmAmBlamCmDmElamFmGldmHmImJmKiDiDiDiDiDmLcTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkewlQeWjBeWoOlYkwmMkwmNdVdVmOgFdVeWeWewhioNhihiewbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkababesesgygygygygygygygygygymQmRmSmRaaaaaaaaaaaaaaaaaemdmTmUmVmWmXmYmZnananbnckUndnelylynfmvkWnhninjkYnknlnmlannnonplanqnrldnsntntnuldnvagaBaBnwnxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkbkewnyjBhieWpoeWlmggeWnAmNlmkCnBeWnCfAewmPeWiNdVewbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkabesmRgygygygygygygygygygygynDnEpnnGaaaaaaaaaaaaaaaaaemdmTmUnHnInJnKmUnLnanMijijnNnOlynPnQnRkWnSnTnUkYnVnWnXlanYnZoalaobocldodoeoeoeldofogbkaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkbkbkewnynzhigEewoiewojokeweWewojokewhilYewghlZjEmPewbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkabesomgygygygygygygygygygygygyonlXnGaaaaaaaaaaaaaaaaaemdopmUoqmhorosotounaovijowoxoylyozoAoBoCoCoDoCoEoEoFoEoGoGoHoGoGoIoJoKldldldldoLoMabbkbkbkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkbkbkbkbkbkewewewewewewoiewiNnCeWkzolhikzhiiNhhewooohoPoQewbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkabesmQgygygygygygygygygygygygyonnFnGaaaaaaaaaaaaaaaeaemdoRoSoTmWoUosoVoWnaoXijoYoxoylylylylyoCoZpapboEpcpdpeoGpfpgphoGpipjoKabbkabpkplpmabbkbkbkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkbkbkbkbkbkbkbkbkbkbkbkewoiewnCfAlTkzlSeWkCewhifAewlRpppppqewadbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkabesesgygygyprgygygygygygygygypsptaeaaaaaaaaaaaaaeaeaemdmdpupvmdmdpwpxpwmdpypzpApBpCpDgygygyoCpEpFpGoEpHpIpJoGpKpLpMoGoKoKpNpOaiaipPogababbkbkbkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkbkbkbkbkbkbkbkbkbkbkbkewoiewkzeWdolWhifAiNewoiewewkBhipppqpRadadbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkabespSpTgypUpSpQgygygygygygygygypWpXaaaaaaaaaaaepYpZqalUlVqdqeqfmdqgqhqimdqjpzgygygygygygygyoCqkqlqmoCqnqoqpoEqqqrqsoGabauqtogquabababababbkbkbkbkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkbkbkbkbkbkbkbkbkbkbkbkbkewoiewewewewewewewewewoiewvydVhidVpqqvadadbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkabespSgygygypSpQgygygygygygygyqwqxqyqzqzqzqzqzqzqAqBqCqDqDqEqFqFmdqGqHqImdqJgygygygygypzpzpzoCoCoCoCoCoEoEoEoEoGoGoGoGauqtogqKadqKababababbkbkbkbkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLaaaaaaaaaaqLbkbkbkbkbkbkbkbkbkbkbkbkbkbkewoioioioioioioioioioioiewkBhijEhijJewadadadbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkabesgygygygyqMqNgygygygygygygygyqOqPqPqPqPqPqPqPqPqOgygygygygygymdqQqRpwmdqSgygygygygyqTADqVaiaiaiaiqWaiaiaiaiaiqXAAACABogadadadqKkDabbkbkbkbkbkbkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkewewewewewewewewewewewewewewoQrbrcewewadadadadbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkabesgygygygygygygygygygygygygyqwqCrdrerererererereqwqCgygygygygygypBrfpCrgrhrigygygygyonrjrkababbkbkbkbkbkbkbkbkrlrmrnroadqKadadqKabababbkbkbkbkbkbkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkadadadewppppjIewadadadadadbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkabespSpTgygygygygygygygygygyaaaaaaaaaaaaaaaaesesesesesesesesgygygygygygypBrppCgygygygyrqrrpzbkabbkbkbkbkbkbkbkkDqKadrsadqKadadadabababababbkbkbkbkbkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkadadadewpppphiewadadadadadbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkabespSpTgygygygygygygygygygyaaaaaaaaaaaaaaaaesesesesesesesesgygygygygygypBrppCgygygygyrqrrpzbkabbkbkbkbkbkbkbkkDqKadrsadqKadadadabababababbkbkbkbkbkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkadadadewrtrurtewadadadadadbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkabespSgygygygygygygygygygygyaaaaaaaaaaaaaaaaesesesababababesesesgygygygygyrvgygydXgygypzpzpzbkbkbkbkbkbkbkbkbkbkbkbkkDbkadqubkabbkbkababababbkbkbkbkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkadadewrwrboQewadadadadbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkabesespVryrxgygygygygyesesesaaaaaaaaaaaaaaaaaaababababababababesesesgygygyrvgygydXdXdXdXbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkabbkbkbkababababbkbkbkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLqLqLrArAqLqLqLqLqLqLqLqLqLqLqLqLqLqLbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkadadadrBrCrDadadadadbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkababesesesmResgygymQmQesababaaaaaaaaaaaaaaaaaabkbkbkbkbkabababababesesgygyrvgygydXdXbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkabbkbkbkbkbkababababbkbkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/nano/templates/pda.tmpl b/nano/templates/pda.tmpl index 81a75a2500..38cc5ef945 100644 --- a/nano/templates/pda.tmpl +++ b/nano/templates/pda.tmpl @@ -294,12 +294,12 @@ Used In File(s): \code\game\objects\items\devices\PDA\PDA.dm {{:helper.link('Reply', 'comment', {'choice' : "Message", 'target': data.active_conversation}, null, 'fixedLeft')}} - {{else data.mode== 41}} + {{else data.mode== 41}}
- {{if data.manifest.heads.length}} + {{if data.cached.heads.length}} - {{for data.manifest["heads"]}} + {{for data.cached["heads"]}} {{if value.rank == "Captain"}} {{else}} @@ -307,9 +307,9 @@ Used In File(s): \code\game\objects\items\devices\PDA\PDA.dm {{/if}} {{/for}} {{/if}} - {{if data.manifest.sec.length}} + {{if data.cached.sec.length}} - {{for data.manifest["sec"]}} + {{for data.cached["sec"]}} {{if value.rank == "Head of Security"}} {{else}} @@ -317,9 +317,9 @@ Used In File(s): \code\game\objects\items\devices\PDA\PDA.dm {{/if}} {{/for}} {{/if}} - {{if data.manifest.eng.length}} + {{if data.cached.eng.length}} - {{for data.manifest["eng"]}} + {{for data.cached["eng"]}} {{if value.rank == "Chief Engineer"}} {{else}} @@ -327,9 +327,9 @@ Used In File(s): \code\game\objects\items\devices\PDA\PDA.dm {{/if}} {{/for}} {{/if}} - {{if data.manifest.med.length}} + {{if data.cached.med.length}} - {{for data.manifest["med"]}} + {{for data.cached["med"]}} {{if value.rank == "Chief Medical Officer"}} {{else}} @@ -337,9 +337,9 @@ Used In File(s): \code\game\objects\items\devices\PDA\PDA.dm {{/if}} {{/for}} {{/if}} - {{if data.manifest.sci.length}} + {{if data.cached.sci.length}} - {{for data.manifest["sci"]}} + {{for data.cached["sci"]}} {{if value.rank == "Research Director"}} {{else}} @@ -347,9 +347,9 @@ Used In File(s): \code\game\objects\items\devices\PDA\PDA.dm {{/if}} {{/for}} {{/if}} - {{if data.manifest.civ.length}} + {{if data.cached.civ.length}} - {{for data.manifest["civ"]}} + {{for data.cached["civ"]}} {{if value.rank == "Head of Personnel"}} {{else}} @@ -357,9 +357,9 @@ Used In File(s): \code\game\objects\items\devices\PDA\PDA.dm {{/if}} {{/for}} {{/if}} - {{if data.manifest.misc.length}} + {{if data.cached.misc.length}} - {{for data.manifest["misc"]}} + {{for data.cached["misc"]}} {{/for}} {{/if}} diff --git a/nano/templates/sec_camera.tmpl b/nano/templates/sec_camera.tmpl index ea18fb2047..886cb0f87c 100644 --- a/nano/templates/sec_camera.tmpl +++ b/nano/templates/sec_camera.tmpl @@ -12,7 +12,7 @@ Used In File(s): \code\game\machinery\computer\camera.dm
None
{{/if}} -{{for data.cameras}} +{{for data.cached.cameras}} {{if data.current && value.name == data.current.name}} {{:helper.link(value.name, '', {'switchTo' : value.camera}, 'selected')}} {{else value.deact}} @@ -20,4 +20,4 @@ Used In File(s): \code\game\machinery\computer\camera.dm {{else}} {{:helper.link(value.name, '', {'switchTo' : value.camera})}} {{/if}} -{{/for}} \ No newline at end of file +{{/for}} diff --git a/nano/templates/sec_camera_map_content.tmpl b/nano/templates/sec_camera_map_content.tmpl index 52dc8aeadd..55d9e05d4d 100644 --- a/nano/templates/sec_camera_map_content.tmpl +++ b/nano/templates/sec_camera_map_content.tmpl @@ -2,7 +2,7 @@ Title: Security Camera Console (Map content) Used In File(s): \code\game\machinery\computer\camera.dm --> -{{for data.cameras}} +{{for data.cached.cameras}} {{if value.z == 1}}
{{if data.current && value.name == data.current.name}} @@ -17,4 +17,4 @@ Used In File(s): \code\game\machinery\computer\camera.dm
{{/if}} -{{/for}} \ No newline at end of file +{{/for}} diff --git a/nano/templates/smes.tmpl b/nano/templates/smes.tmpl index 8b72cefedd..799ac3911d 100644 --- a/nano/templates/smes.tmpl +++ b/nano/templates/smes.tmpl @@ -50,6 +50,14 @@
{{:helper.link('Online', 'power', {'online' : 1}, data.outputOnline ? 'selected' : null)}}{{:helper.link('Offline', 'close', {'online' : 1}, data.outputOnline ? null : 'selected')}} +   + {{if data.outputting == 2}} + [Outputting] + {{else data.outputting == 1}} + [Stored energy too low] + {{else}} + [Not Outputting] + {{/if}}
Command
{{:value.name}}{{:value.rank}}{{:value.active}}
Security
{{:value.name}}{{:value.rank}}{{:value.active}}
Engineering
{{:value.name}}{{:value.rank}}{{:value.active}}
Medical
{{:value.name}}{{:value.rank}}{{:value.active}}
Science
{{:value.name}}{{:value.rank}}{{:value.active}}
Civilian
{{:value.name}}{{:value.rank}}{{:value.active}}
Misc
{{:value.name}}{{:value.rank}}{{:value.active}}