From 9e62e08d2eef629b162a1acc6f96c661a250ebc7 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Sat, 7 Feb 2015 17:00:52 -0500 Subject: [PATCH 01/45] Absolute paths --- code/modules/projectiles/gun.dm | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index f4bc1175d5..52daacf0c0 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -33,22 +33,22 @@ var/fire_delay = 6 var/last_fired = 0 - proc/ready_to_fire() - if(world.time >= last_fired + fire_delay) - last_fired = world.time - return 1 - else - return 0 - - proc/load_into_chamber() +/obj/item/weapon/gun/proc/ready_to_fire() + if(world.time >= last_fired + fire_delay) + last_fired = world.time + return 1 + else return 0 - proc/special_check(var/mob/M) //Placeholder for any special checks, like detective's revolver. - return 1 +/obj/item/weapon/gun/proc/load_into_chamber() + return 0 - emp_act(severity) - for(var/obj/O in contents) - O.emp_act(severity) +/obj/item/weapon/gun/proc/special_check(var/mob/M) //Placeholder for any special checks, like detective's revolver. + return 1 + +/obj/item/weapon/gun/emp_act(severity) + for(var/obj/O in contents) + O.emp_act(severity) /obj/item/weapon/gun/afterattack(atom/A as mob|obj|turf|area, mob/living/user as mob|obj, flag, params) if(flag) return //It's adjacent, is the user, or is on the user's person From a679d22db8c461a8fd190b3c85f9406e7e0edf88 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Sun, 8 Feb 2015 19:42:18 -0500 Subject: [PATCH 02/45] Cleaner click parameter handling --- code/modules/projectiles/gun.dm | 11 ++--------- code/modules/projectiles/projectile.dm | 12 +++++++++--- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 52daacf0c0..d7aae8f8f7 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -134,16 +134,9 @@ y_offset = rand(-1,1) x_offset = rand(-1,1) - var/p_x - var/p_y - if(params) - var/list/mouse_control = params2list(params) - if(mouse_control["icon-x"]) - p_x = text2num(mouse_control["icon-x"]) - if(mouse_control["icon-y"]) - p_y = text2num(mouse_control["icon-y"]) - if(in_chamber) + if(params) in_chamber.set_clickpoint(params) + var/fail = in_chamber.launch( target = target, user = user, diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 5cd7e640b1..a380974fbe 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -81,8 +81,16 @@ del(in_chamber) //No need for it anymore return output //Send it back to the gun! +//sets the click point of the projectile using mouse input params +/obj/item/projectile/proc/set_clickpoint(var/params) + var/list/mouse_control = params2list(params) + if(mouse_control["icon-x"]) + p_x = text2num(mouse_control["icon-x"]) + if(mouse_control["icon-y"]) + p_y = text2num(mouse_control["icon-y"]) + //called to launch a projectile from a gun -/obj/item/projectile/proc/launch(atom/target, mob/user, obj/item/weapon/gun/launcher, var/target_zone, var/x_offset=0, var/y_offset=0, var/px=null, var/py=null) +/obj/item/projectile/proc/launch(atom/target, mob/user, obj/item/weapon/gun/launcher, var/target_zone, var/x_offset=0, var/y_offset=0) var/turf/curloc = get_turf(user) var/turf/targloc = get_turf(target) if (!istype(targloc) || !istype(curloc)) @@ -106,8 +114,6 @@ current = curloc yo = targloc.y - curloc.y + y_offset xo = targloc.x - curloc.x + x_offset - if(!isnull(py)) p_y = py - if(!isnull(px)) p_x = px shot_from = launcher silenced = launcher.silenced From fc6dfb5f1b5b2b9ec36d48567897dc9e3ea23564 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Sun, 8 Feb 2015 20:27:53 -0500 Subject: [PATCH 03/45] Ammo magazine and casing update Rewrites ammo magazines and casings to be a bit more logical. Updates gun/projectile and all subtypes to work with the new ammo code. --- code/game/gamemodes/factions.dm | 2 +- code/game/gamemodes/wizard/rightandwrong.dm | 2 +- code/game/machinery/autolathe_datums.dm | 8 +- .../items/weapons/storage/uplink_kits.dm | 2 +- .../crates_lockers/closets/secure/security.dm | 4 +- code/modules/admin/verbs/debug.dm | 4 +- code/modules/admin/verbs/striketeam.dm | 2 +- .../living/simple_animal/hostile/russian.dm | 2 +- code/modules/projectiles/ammunition.dm | 132 +++++++--- code/modules/projectiles/ammunition/boxes.dm | 237 +++++++++--------- .../modules/projectiles/ammunition/bullets.dm | 11 + code/modules/projectiles/gun.dm | 27 +- code/modules/projectiles/guns/projectile.dm | 216 ++++++++++------ .../projectiles/guns/projectile/automatic.dm | 97 ++----- .../projectiles/guns/projectile/pistol.dm | 67 ++--- .../projectiles/guns/projectile/revolver.dm | 35 +-- .../projectiles/guns/projectile/shotgun.dm | 160 +++++------- code/modules/projectiles/projectile.dm | 26 +- .../research/xenoarchaeology/finds/finds.dm | 4 +- 19 files changed, 527 insertions(+), 511 deletions(-) diff --git a/code/game/gamemodes/factions.dm b/code/game/gamemodes/factions.dm index 1aaa70e2a5..47c8586f6e 100644 --- a/code/game/gamemodes/factions.dm +++ b/code/game/gamemodes/factions.dm @@ -119,7 +119,7 @@ operative_notes = "We'd like to remind our operatives to keep it professional. You are not here to have a good time, you are here to accomplish your objectives. These vile communists must be stopped at all costs. You may collaborate with any friends of the Syndicate coalition, but keep an eye on any of those Tiger punks if they do show up. You are completely free to accomplish your objectives any way you see fit." uplink_contents = {"Highly Visible and Dangerous Weapons; -/obj/item/weapon/gun/projectile:6:Revolver; +/obj/item/weapon/gun/projectile/revolver:6:Revolver; /obj/item/ammo_magazine/a357:2:Ammo-357; /obj/item/weapon/gun/energy/crossbow:5:Energy Crossbow; /obj/item/weapon/melee/energy/sword:4:Energy Sword; diff --git a/code/game/gamemodes/wizard/rightandwrong.dm b/code/game/gamemodes/wizard/rightandwrong.dm index ccce7f9bff..d9f129a27e 100644 --- a/code/game/gamemodes/wizard/rightandwrong.dm +++ b/code/game/gamemodes/wizard/rightandwrong.dm @@ -49,7 +49,7 @@ if("combatshotgun") new /obj/item/weapon/gun/projectile/shotgun/pump/combat(get_turf(H)) if("mateba") - new /obj/item/weapon/gun/projectile/mateba(get_turf(H)) + new /obj/item/weapon/gun/projectile/revolver/mateba(get_turf(H)) if("smg") new /obj/item/weapon/gun/projectile/automatic(get_turf(H)) if("uzi") diff --git a/code/game/machinery/autolathe_datums.dm b/code/game/machinery/autolathe_datums.dm index 3948f70f33..c7d592c1d0 100644 --- a/code/game/machinery/autolathe_datums.dm +++ b/code/game/machinery/autolathe_datums.dm @@ -217,13 +217,13 @@ category = "Arms and Ammunition" /datum/autolathe/recipe/magazine_rubber - name = "ammunition (rubber)" - path = /obj/item/ammo_magazine/c45r + name = "ammunition (.45, rubber)" + path = /obj/item/ammo_magazine/c45m/rubber category = "Arms and Ammunition" /datum/autolathe/recipe/magazine_flash - name = "ammunition (flash)" - path = /obj/item/ammo_magazine/c45f + name = "ammunition (.45, flash)" + path = /obj/item/ammo_magazine/c45m/flash category = "Arms and Ammunition" /datum/autolathe/recipe/consolescreen diff --git a/code/game/objects/items/weapons/storage/uplink_kits.dm b/code/game/objects/items/weapons/storage/uplink_kits.dm index fc1d2e2b8a..3ad4972caf 100644 --- a/code/game/objects/items/weapons/storage/uplink_kits.dm +++ b/code/game/objects/items/weapons/storage/uplink_kits.dm @@ -26,7 +26,7 @@ return if("guns") - new /obj/item/weapon/gun/projectile(src) + new /obj/item/weapon/gun/projectile/revolver(src) new /obj/item/ammo_magazine/a357(src) new /obj/item/weapon/card/emag(src) new /obj/item/weapon/plastique(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index b5b8796b3c..4185215f28 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -258,8 +258,8 @@ new /obj/item/device/radio/headset/headset_sec(src) new /obj/item/device/detective_scanner(src) new /obj/item/clothing/suit/armor/det_suit(src) - new /obj/item/ammo_magazine/c45r(src) - new /obj/item/ammo_magazine/c45r(src) + new /obj/item/ammo_magazine/c45m/rubber(src) + new /obj/item/ammo_magazine/c45m/rubber(src) new /obj/item/taperoll/police(src) new /obj/item/weapon/gun/projectile/detective/semiauto(src) new /obj/item/clothing/tie/holster/armpit(src) diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index db7f0ec78b..f750b7428e 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -710,7 +710,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that for(var/i=3, i>0, i--) sec_briefcase.contents += new /obj/item/weapon/spacecash/c1000 sec_briefcase.contents += new /obj/item/weapon/gun/energy/crossbow - sec_briefcase.contents += new /obj/item/weapon/gun/projectile/mateba + sec_briefcase.contents += new /obj/item/weapon/gun/projectile/revolver/mateba sec_briefcase.contents += new /obj/item/ammo_magazine/a357 sec_briefcase.contents += new /obj/item/weapon/plastique M.equip_to_slot_or_del(sec_briefcase, slot_l_hand) @@ -892,7 +892,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/eyepatch(M), slot_glasses) M.equip_to_slot_or_del(new /obj/item/clothing/suit/hgpirate(M), slot_wear_suit) M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(M), slot_back) - M.equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/mateba(M), slot_belt) + M.equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/revolver/mateba(M), slot_belt) M.equip_to_slot_or_del(new /obj/item/clothing/under/soviet(M), slot_w_uniform) var/obj/item/weapon/card/id/W = new(M) W.name = "[M.real_name]'s ID Card" diff --git a/code/modules/admin/verbs/striketeam.dm b/code/modules/admin/verbs/striketeam.dm index 36199c0305..9f42da94d9 100644 --- a/code/modules/admin/verbs/striketeam.dm +++ b/code/modules/admin/verbs/striketeam.dm @@ -153,7 +153,7 @@ var/global/sent_strike_team = 0 equip_to_slot_or_del(new /obj/item/weapon/melee/energy/sword(src), slot_l_store) equip_to_slot_or_del(new /obj/item/weapon/grenade/flashbang(src), slot_r_store) equip_to_slot_or_del(new /obj/item/weapon/tank/emergency_oxygen(src), slot_s_store) - equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/mateba(src), slot_belt) + equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/revolver/mateba(src), slot_belt) equip_to_slot_or_del(new /obj/item/weapon/gun/energy/pulse_rifle(src), slot_r_hand) diff --git a/code/modules/mob/living/simple_animal/hostile/russian.dm b/code/modules/mob/living/simple_animal/hostile/russian.dm index b09a6ec548..b96a615170 100644 --- a/code/modules/mob/living/simple_animal/hostile/russian.dm +++ b/code/modules/mob/living/simple_animal/hostile/russian.dm @@ -38,7 +38,7 @@ icon_state = "russianranged" icon_living = "russianranged" corpse = /obj/effect/landmark/mobcorpse/russian/ranged - weapon1 = /obj/item/weapon/gun/projectile/mateba + weapon1 = /obj/item/weapon/gun/projectile/revolver/mateba ranged = 1 projectiletype = /obj/item/projectile/bullet projectilesound = 'sound/weapons/Gunshot.ogg' diff --git a/code/modules/projectiles/ammunition.dm b/code/modules/projectiles/ammunition.dm index b4b213972f..fa17429016 100644 --- a/code/modules/projectiles/ammunition.dm +++ b/code/modules/projectiles/ammunition.dm @@ -6,73 +6,125 @@ flags = CONDUCT slot_flags = SLOT_BELT throwforce = 1 - w_class = 1.0 + w_class = 1 var/caliber = "" //Which kind of guns it can be loaded into var/projectile_type //The bullet type to create when New() is called - var/obj/item/projectile/BB = null //The loaded bullet - - - New() - ..() - if(ispath(projectile_type)) - BB = new projectile_type(src) - pixel_x = rand(-10.0, 10) - pixel_y = rand(-10.0, 10) - set_dir(pick(cardinal)) + var/obj/item/projectile/BB = null //The loaded bullet - make it so that the projectiles are created only when needed? +/obj/item/ammo_casing/New() + ..() + if(ispath(projectile_type)) + BB = new projectile_type(src) + pixel_x = rand(-10, 10) + pixel_y = rand(-10, 10) + set_dir(pick(cardinal)) /obj/item/ammo_casing/attackby(obj/item/weapon/W as obj, mob/user as mob) if(istype(W, /obj/item/weapon/screwdriver)) - if(BB) - if(initial(BB.name) == "bullet") - var/tmp_label = "" - var/label_text = sanitize(copytext(input(user, "Inscribe some text into \the [initial(BB.name)]","Inscription",tmp_label), 1, MAX_NAME_LEN)) - if(length(label_text) > 20) - user << "\red The inscription can be at most 20 characters long." - else - if(label_text == "") - user << "\blue You scratch the inscription off of [initial(BB)]." - BB.name = initial(BB.name) - else - user << "\blue You inscribe \"[label_text]\" into \the [initial(BB.name)]." - BB.name = "[initial(BB.name)] \"[label_text]\"" - else - user << "\blue You can only inscribe a metal bullet." //because inscribing beanbags is silly - else + if(!BB) user << "\blue There is no bullet in the casing to inscribe anything into." + return + + var/tmp_label = "" + var/label_text = sanitize(copytext(input(user, "Inscribe some text into \the [initial(BB.name)]","Inscription",tmp_label), 1, MAX_NAME_LEN)) + if(length(label_text) > 20) + user << "\red The inscription can be at most 20 characters long." + else if(!label_text) + user << "\blue You scratch the inscription off of [initial(BB)]." + BB.name = initial(BB.name) + else + user << "\blue You inscribe \"[label_text]\" into \the [initial(BB.name)]." + BB.name = "[initial(BB.name)] (\"[label_text]\")" /obj/item/ammo_casing/examine(mob/user) ..() if (!BB) user << "This one is spent." -//Boxes of ammo +//Gun loading types +#define SINGLE_CASING 1 //The gun only accepts ammo_casings. ammo_magazines should never have this as their mag_type. +#define SPEEDLOADER 2 //Transfers casings from the mag to the gun when used. +#define MAGAZINE 4 //The magazine item itself goes inside the gun + +//An item that holds casings and can be used to put them inside guns /obj/item/ammo_magazine - name = "ammo box (.357)" - desc = "A box of ammo" + name = "magazine" + desc = "A magazine for some kind of gun." icon_state = "357" icon = 'icons/obj/ammo.dmi' flags = CONDUCT slot_flags = SLOT_BELT item_state = "syringe_kit" - matter = list("metal" = 50000) - throwforce = 2 - w_class = 2.0 + matter = list("metal" = 500) + throwforce = 5 + w_class = 2 throw_speed = 4 throw_range = 10 + var/list/stored_ammo = list() - var/ammo_type = "/obj/item/ammo_casing" + var/mag_type = SPEEDLOADER //ammo_magazines can only be used with compatible guns + var/caliber = "357" var/max_ammo = 7 + + var/ammo_type = /obj/item/ammo_casing //ammo type that is initially loaded + var/initial_ammo = null + var/multiple_sprites = 0 + var/list/icon_map = list() +/obj/item/ammo_magazine/New() + if(multiple_sprites) + //should probably be cached or something. + icon_map = list(max_ammo = icon_state) + var/list/states = icon_states(icon) + for(var/i = 0, i <= max_ammo, i++) + var/ammo_state = "[icon_state]-[i]" + if(ammo_state in states) + //icon_map += i //so stupid BYOND understands that it's an association + icon_map[i] = ammo_state - New() - for(var/i = 1, i <= max_ammo, i++) + if(isnull(initial_ammo)) + initial_ammo = max_ammo + + if(initial_ammo) + for(var/i in 1 to initial_ammo) stored_ammo += new ammo_type(src) + update_icon() + +/obj/item/ammo_magazine/attackby(obj/item/weapon/W as obj, mob/user as mob) + if(istype(W, /obj/item/ammo_casing)) + var/obj/item/ammo_casing/C = W + if(C.caliber != caliber) + user << "[C] does not fit into [src]." + return + if(stored_ammo.len >= max_ammo) + user << "[src] is full!" + return + user.remove_from_mob(C) + C.loc = src + stored_ammo.Insert(1, C) //add to the head of the list update_icon() - +/obj/item/ammo_magazine/attack_self(mob/user) + if(!stored_ammo.len) + user << "[src] is already empty!" + return + user << "You empty [src]." + for(var/obj/item/ammo_casing/C in stored_ammo) + C.loc = user.loc + stored_ammo.Cut() update_icon() - if(multiple_sprites) - icon_state = "[initial(icon_state)]-[stored_ammo.len]" - desc = "There are [stored_ammo.len] shell\s left!" + +/obj/item/ammo_magazine/update_icon() + if(multiple_sprites) + //find the lowest key greater than or equal to stored_ammo.len + var/new_state = null + for(var/i in icon_map) + if (i >= stored_ammo.len) + new_state = icon_map[i] + break + icon_state = (new_state)? new_state : initial(icon_state) + +/obj/item/ammo_magazine/examine(mob/user) + ..() + user << "There [(stored_ammo.len > 1)? "are" : "is"] [stored_ammo.len] round\s left!" \ No newline at end of file diff --git a/code/modules/projectiles/ammunition/boxes.dm b/code/modules/projectiles/ammunition/boxes.dm index b4ae141cd7..a65a7bc4d1 100644 --- a/code/modules/projectiles/ammunition/boxes.dm +++ b/code/modules/projectiles/ammunition/boxes.dm @@ -2,44 +2,147 @@ name = "ammo box (.357)" desc = "A box of .357 ammo" icon_state = "357" - ammo_type = "/obj/item/ammo_casing/a357" + caliber = "357" + ammo_type = /obj/item/ammo_casing/a357 max_ammo = 7 multiple_sprites = 1 /obj/item/ammo_magazine/c38 name = "speed loader (.38)" icon_state = "38" - ammo_type = "/obj/item/ammo_casing/c38" + caliber = "38" + ammo_type = /obj/item/ammo_casing/c38 max_ammo = 6 multiple_sprites = 1 +/obj/item/ammo_magazine/c38/rubber + name = "speed loader (.38 rubber)" + ammo_type = /obj/item/ammo_casing/c38r /obj/item/ammo_magazine/c45m name = "magazine (.45)" icon_state = "45" - ammo_type = "/obj/item/ammo_casing/c45" + mag_type = MAGAZINE + ammo_type = /obj/item/ammo_casing/c45 + caliber = ".45" max_ammo = 7 multiple_sprites = 1 -/obj/item/ammo_magazine/c45/empty - max_ammo = 0 +/obj/item/ammo_magazine/c45m/empty + initial_ammo = 0 -/obj/item/ammo_magazine/c45r +/obj/item/ammo_magazine/c45m/rubber name = "magazine (.45 rubber)" - icon_state = "45" - ammo_type = "/obj/item/ammo_casing/c45r" - max_ammo = 7 - multiple_sprites = 1 + ammo_type = /obj/item/ammo_casing/c45r -/obj/item/ammo_magazine/c45f +/obj/item/ammo_magazine/c45m/flash name = "magazine (.45 flash)" - icon_state = "45" ammo_type = "/obj/item/ammo_casing/c45f" + +/obj/item/ammo_magazine/mc9mm + name = "magazine (9mm)" + icon_state = "9x19p" + origin_tech = "combat=2" + mag_type = MAGAZINE + caliber = "9mm" + ammo_type = /obj/item/ammo_casing/c9mm + max_ammo = 10 + multiple_sprites = 1 + +/obj/item/ammo_magazine/mc9mm/empty + initial_ammo = 0 + +/obj/item/ammo_magazine/mc9mm/flash + ammo_type = /obj/item/ammo_casing/c9mmf + +/obj/item/ammo_magazine/c9mm + name = "ammunition Box (9mm)" + icon_state = "9mm" + origin_tech = "combat=2" + caliber = "9mm" + ammo_type = /obj/item/ammo_casing/c9mm + max_ammo = 30 + +/obj/item/ammo_magazine/c9mm/empty + initial_ammo = 0 + +/obj/item/ammo_magazine/c45 + name = "ammunition Box (.45)" + icon_state = "9mm" + origin_tech = "combat=2" + caliber = ".45" + ammo_type = /obj/item/ammo_casing/c45 + max_ammo = 30 + +/obj/item/ammo_magazine/c9mm/empty + initial_ammo = 0 + +/obj/item/ammo_magazine/a12mm + name = "magazine (12mm)" + icon_state = "12mm" + origin_tech = "combat=2" + mag_type = MAGAZINE + caliber = "12mm" + ammo_type = "/obj/item/ammo_casing/a12mm" + max_ammo = 20 + multiple_sprites = 1 + +/obj/item/ammo_magazine/a12mm/empty + initial_ammo = 0 + +/obj/item/ammo_magazine/a50 + name = "magazine (.50)" + icon_state = "50ae" + origin_tech = "combat=2" + mag_type = MAGAZINE + caliber = ".50" + ammo_type = /obj/item/ammo_casing/a50 max_ammo = 7 multiple_sprites = 1 -/obj/item/ammo_magazine/c45r/empty - max_ammo = 0 +/obj/item/ammo_magazine/a50/empty + initial_ammo = 0 + +/obj/item/ammo_magazine/a75 + name = "ammo magazine (20mm)" + icon_state = "75" + mag_type = MAGAZINE + caliber = "75" + ammo_type = /obj/item/ammo_casing/a75 + multiple_sprites = 1 + max_ammo = 4 + +/obj/item/ammo_magazine/a75/empty + initial_ammo = 0 + +/obj/item/ammo_magazine/a762 + name = "magazine box (7.62mm)" + icon_state = "a762" + origin_tech = "combat=2" + mag_type = MAGAZINE + caliber = "a762" + ammo_type = /obj/item/ammo_casing/a762 + max_ammo = 50 + multiple_sprites = 1 + +/obj/item/ammo_magazine/a762/empty + initial_ammo = 0 + +/obj/item/ammo_magazine/chameleon + name = "magazine (.45)" + icon_state = "45" + mag_type = MAGAZINE + caliber = ".45" + ammo_type = /obj/item/ammo_casing/chameleon + max_ammo = 7 + multiple_sprites = 1 + matter = list() + +/obj/item/ammo_magazine/chameleon/empty + initial_ammo = 0 + +/* +//unused garbage /obj/item/ammo_magazine/a418 name = "ammo box (.418)" @@ -48,114 +151,10 @@ max_ammo = 7 multiple_sprites = 1 - - /obj/item/ammo_magazine/a666 name = "ammo box (.666)" icon_state = "666" ammo_type = "/obj/item/ammo_casing/a666" max_ammo = 4 multiple_sprites = 1 - - -/obj/item/ammo_magazine/mc9mm - name = "magazine (9mm)" - icon_state = "9x19p" - origin_tech = "combat=2" - ammo_type = "/obj/item/ammo_casing/c9mm" - max_ammo = 10 - multiple_sprites = 1 - -/obj/item/ammo_magazine/mc9mm/empty - max_ammo = 0 - -/obj/item/ammo_magazine/c9mm - name = "Ammunition Box (9mm)" - icon_state = "9mm" - origin_tech = "combat=2" - ammo_type = "/obj/item/ammo_casing/c9mm" - max_ammo = 30 - - - -/obj/item/ammo_magazine/c45 - name = "Ammunition Box (.45)" - icon_state = "9mm" - origin_tech = "combat=2" - ammo_type = "/obj/item/ammo_casing/c45" - max_ammo = 30 - - - -/obj/item/ammo_magazine/a12mm - name = "magazine (12mm)" - icon_state = "12mm" - origin_tech = "combat=2" - ammo_type = "/obj/item/ammo_casing/a12mm" - max_ammo = 20 - multiple_sprites = 1 - - -/obj/item/ammo_magazine/a12mm/empty - name = "magazine (12mm)" - icon_state = "12mm" - ammo_type = "/obj/item/ammo_casing/12mm" - max_ammo = 0 - -/obj/item/ammo_magazine/a50 - name = "magazine (.50)" - icon_state = "50ae" - origin_tech = "combat=2" - ammo_type = "/obj/item/ammo_casing/a50" - max_ammo = 7 - multiple_sprites = 1 - -/obj/item/ammo_magazine/a50/empty - name = "magazine (.50)" - icon_state = "50ae" - ammo_type = "/obj/item/ammo_casing/a50" - max_ammo = 0 - -/obj/item/ammo_magazine/a75 - name = "ammo magazine (.75)" - icon_state = "75" - ammo_type = "/obj/item/ammo_casing/a75" - multiple_sprites = 1 - max_ammo = 8 - -/obj/item/ammo_magazine/a75/empty - name = "ammo magazine (.75)" - icon_state = "75" - ammo_type = "/obj/item/ammo_casing/a75" - max_ammo = 0 - -/obj/item/ammo_magazine/a762 - name = "magazine (a762)" - icon_state = "a762" - origin_tech = "combat=2" - ammo_type = "/obj/item/ammo_casing/a762" - max_ammo = 50 - multiple_sprites = 1 - -/obj/item/ammo_magazine/a762/empty - name = "magazine (a762)" - icon_state = "a762" - ammo_type = "/obj/item/ammo_casing/a762" - max_ammo = 0 - multiple_sprites = 1 - -/obj/item/ammo_magazine/chameleon - name = "magazine (.45)" - icon_state = "45" - ammo_type = "/obj/item/ammo_casing/chameleon" - max_ammo = 7 - multiple_sprites = 1 - matter = list() - -/obj/item/ammo_magazine/chameleon/empty - name = "magazine (.45)" - icon_state = "45" - ammo_type = "/obj/item/ammo_casing/chameleon" - max_ammo = 0 - multiple_sprites = 1 - matter = list() +*/ \ No newline at end of file diff --git a/code/modules/projectiles/ammunition/bullets.dm b/code/modules/projectiles/ammunition/bullets.dm index d0cb2915dc..54c65fe019 100644 --- a/code/modules/projectiles/ammunition/bullets.dm +++ b/code/modules/projectiles/ammunition/bullets.dm @@ -16,6 +16,11 @@ /obj/item/ammo_casing/c38 desc = "A .38 bullet casing." caliber = "38" + projectile_type = /obj/item/projectile/bullet/pistol + +/obj/item/ammo_casing/c38r + desc = "A .38 rubber bullet casing." + caliber = "38" projectile_type = /obj/item/projectile/bullet/pistol/rubber /obj/item/ammo_casing/c9mm @@ -23,6 +28,12 @@ caliber = "9mm" projectile_type = /obj/item/projectile/bullet/pistol +/obj/item/ammo_casing/c9mmf + desc = "A 9mm flash shell casing." + caliber = "9mm" + projectile_type = /obj/item/projectile/energy/flash + + /obj/item/ammo_casing/c45 desc = "A .45 bullet casing." caliber = ".45" diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index d7aae8f8f7..dc9c77a294 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -78,7 +78,7 @@ /obj/item/weapon/gun/proc/Fire(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, params, reflex = 0)//TODO: go over this //Exclude lasertag guns from the CLUMSY check. if(!user) return - + if(clumsy_check) if(istype(user, /mob/living)) var/mob/living/M = user @@ -122,7 +122,7 @@ "You hear a [istype(in_chamber, /obj/item/projectile/beam) ? "laser blast" : "gunshot"]!") user.next_move = world.time + 4 - + var/x_offset = 0 var/y_offset = 0 if(istype(user, /mob/living/carbon)) @@ -135,21 +135,20 @@ x_offset = rand(-1,1) if(in_chamber) - if(params) in_chamber.set_clickpoint(params) - + if(params) + in_chamber.set_clickpoint(params) + var/fail = in_chamber.launch( - target = target, - user = user, - launcher = src, - target_zone = user.zone_sel.selecting, - x_offset = x_offset, - y_offset = y_offset, - px = p_x, - py = p_y + target = target, + user = user, + launcher = src, + target_zone = user.zone_sel.selecting, + x_offset = x_offset, + y_offset = y_offset ) - + if(fail) return - + if(recoil) spawn() shake_camera(user, recoil + 1, recoil) diff --git a/code/modules/projectiles/guns/projectile.dm b/code/modules/projectiles/guns/projectile.dm index bea28e9c37..a500af113f 100644 --- a/code/modules/projectiles/guns/projectile.dm +++ b/code/modules/projectiles/guns/projectile.dm @@ -1,111 +1,160 @@ -#define SPEEDLOADER 0 -#define FROM_BOX 1 -#define MAGAZINE 2 - /obj/item/weapon/gun/projectile - name = "revolver" - desc = "A classic revolver. Uses .357 ammo" + name = "gun" + desc = "A gun that fires bullets." icon_state = "revolver" caliber = "357" origin_tech = "combat=2;materials=2" - w_class = 3.0 + w_class = 3 matter = list("metal" = 1000) recoil = 1 - var/ammo_type = "/obj/item/ammo_casing/a357" + + var/load_method = SINGLE_CASING|SPEEDLOADER //1 = Single shells, 2 = box or quick loader, 3 = magazine + + //For SINGLE_CASING or SPEEDLOADER guns + var/max_shells = 0 + var/ammo_type = null var/list/loaded = list() - var/max_shells = 7 - var/load_method = SPEEDLOADER //0 = Single shells or quick loader, 1 = box, 2 = magazine - var/obj/item/ammo_magazine/empty_mag = null - var/mag_type = null + + //For MAGAZINE guns + var/magazine_type = null + var/obj/item/ammo_magazine/ammo_magazine = null + var/auto_eject = 0 //if the magazine should automatically eject itself when empty. /obj/item/weapon/gun/projectile/New() ..() - for(var/i = 1, i <= max_shells, i++) - loaded += new ammo_type(src) - if(load_method == MAGAZINE) - empty_mag = new mag_type(src) + + if(load_method & (SINGLE_CASING|SPEEDLOADER)) + for(var/i in 1 to max_shells) + loaded += new ammo_type(src) + if(load_method & MAGAZINE) + ammo_magazine = new magazine_type(src) + update_icon() - return - +//This proc is badly named. There is no "chamber." Would be better to call this get_next_projectile() or something. /obj/item/weapon/gun/projectile/load_into_chamber() if(in_chamber) return 1 //{R} - if(!loaded.len) - return 0 - var/obj/item/ammo_casing/AC = loaded[1] //load next casing. - loaded -= AC //Remove casing from loaded list. - if(isnull(AC) || !istype(AC)) - return 0 - AC.loc = get_turf(src) //Eject casing onto ground. - if(AC.BB) - in_chamber = AC.BB //Load projectile into chamber. - AC.BB.loc = src //Set projectile loc to gun. - return 1 + var/obj/item/ammo_casing/C = null + if(loaded.len) + C = loaded[1] //load next casing. + loaded -= C + else if(ammo_magazine && ammo_magazine.stored_ammo.len) + C = ammo_magazine.stored_ammo[1] + ammo_magazine.stored_ammo -= C + + if(istype(C)) + C.loc = get_turf(src) //Eject casing onto ground. + if(C.BB) + in_chamber = C.BB + C.BB.loc = src //Set projectile loc to gun. + return 1 + return 0 +//Attempts to load A into src, depending on the type of thing being loaded and the load_method +/obj/item/weapon/gun/projectile/proc/load_ammo(var/obj/item/A, mob/user) + if(istype(A, /obj/item/ammo_magazine)) + var/obj/item/ammo_magazine/AM = A + if(!(load_method & AM.mag_type) || caliber != AM.caliber) + return //incompatible + + switch(AM.mag_type) + if(MAGAZINE) + if(ammo_magazine) + return //already a magazine here + user.remove_from_mob(AM) + AM.loc = src + ammo_magazine = AM + user.visible_message("[user] inserts [AM] into [src].", "You insert [AM] into [src]!") + if(SPEEDLOADER) + var/count = 0 + for(var/obj/item/ammo_casing/C in AM.stored_ammo) + if(loaded.len >= max_shells) + break + if(C.caliber == caliber) + C.loc = src + loaded += C + AM.stored_ammo -= C //should probably go inside an ammo_magazine proc, but I guess less proc calls this way... + count++ + if(count) + user.visible_message("[user] reloads [src].", "You load [count] round\s into [src]!") + AM.update_icon() + update_icon() + return + + else if(istype(A, /obj/item/ammo_casing)) + var/obj/item/ammo_casing/C = A + if(!(load_method & SINGLE_CASING) || caliber != C.caliber || loaded.len >= max_shells) + return //incompatible or full + + user.remove_from_mob(C) + C.loc = src + loaded += C + user.visible_message("[user] inserts \a [C] into [src].", "You insert \a [C] into [src]!") + update_icon() + return + +//attempts to unload src +/obj/item/weapon/gun/projectile/proc/unload_ammo(mob/user) + if(ammo_magazine) + user.put_in_hands(ammo_magazine) + user.visible_message("[user] removes [ammo_magazine] from [src].", "You remove [ammo_magazine] from [src]!") + ammo_magazine.update_icon() + ammo_magazine = null + update_icon() + + else if(loaded.len) + //presumably, if it can be speed-loaded, it can be speed-unloaded. + if(load_method & SPEEDLOADER) + var/count = 0 + var/turf/T = get_turf(user) + if(T) + for(var/obj/item/ammo_casing/C in loaded) + C.loc = T + count++ + loaded.Cut() + if(count) + user.visible_message("[user] unloads [src].", "You unload [count] round\s from [src]!") + else + var/obj/item/ammo_casing/C = loaded[loaded.len] + loaded.len-- + user.put_in_hands(C) + user.visible_message("[user] removes \a [C] from [src].", "You remove \a [C] from [src]!") + update_icon() + + else + user << "There's nothing loaded in [src]!" /obj/item/weapon/gun/projectile/attackby(var/obj/item/A as obj, mob/user as mob) - - var/num_loaded = 0 - if(istype(A, /obj/item/ammo_magazine)) - if((load_method == MAGAZINE) && loaded.len) return - var/obj/item/ammo_magazine/AM = A - if(AM.stored_ammo.len <= 0) - user << "The magazine is empty!" - return - for(var/obj/item/ammo_casing/AC in AM.stored_ammo) - if(loaded.len >= max_shells) - break - if(AC.caliber == caliber && loaded.len < max_shells) - AC.loc = src - AM.stored_ammo -= AC - loaded += AC - num_loaded++ - if(load_method == MAGAZINE) - user.remove_from_mob(AM) - empty_mag = AM - empty_mag.loc = src - if(istype(A, /obj/item/ammo_casing) && load_method == SPEEDLOADER) - var/obj/item/ammo_casing/AC = A - if(AC.caliber == caliber && loaded.len < max_shells) - user.drop_item() - AC.loc = src - loaded += AC - num_loaded++ - if(num_loaded) - user << "\blue You load [num_loaded] shell\s into the gun!" - A.update_icon() - update_icon() - return + load_ammo(A, user) /obj/item/weapon/gun/projectile/attack_self(mob/user as mob) - if (target) + if (target) //TODO replace untargeting with a hotkey return ..() - if (loaded.len) - if (load_method == SPEEDLOADER) - var/obj/item/ammo_casing/AC = loaded[1] - loaded -= AC - AC.loc = get_turf(src) //Eject casing onto ground. - user << "\blue You unload shell from \the [src]!" - if (load_method == MAGAZINE) - var/obj/item/ammo_magazine/AM = empty_mag - for (var/obj/item/ammo_casing/AC in loaded) - AM.stored_ammo += AC - loaded -= AC - AM.loc = get_turf(src) - empty_mag = null - update_icon() - AM.update_icon() - user << "\blue You unload magazine from \the [src]!" - else - user << "\red Nothing loaded in \the [src]!" + unload_ammo(user) +/obj/item/weapon/gun/projectile/afterattack(atom/A, mob/living/user) + ..() + if(auto_eject && !ammo_magazine.stored_ammo.len) + eject_magazine(user) +//called when the magazine auto-ejects +/obj/item/weapon/gun/projectile/proc/eject_magazine(mob/user) + if(ammo_magazine) + ammo_magazine.loc = get_turf(src.loc) + user.visible_message( + "[ammo_magazine] falls out and clatters on the floor!", + "[ammo_magazine] falls out and clatters on the floor!" + ) + ammo_magazine = null + update_icon() /obj/item/weapon/gun/projectile/examine(mob/user) ..(user) + if(ammo_magazine) + user << "It has \a [ammo_magazine] loaded." user << "Has [getAmmo()] round\s remaining." // if(in_chamber && !loaded.len) // user << "However, it has a chambered round." @@ -115,7 +164,8 @@ /obj/item/weapon/gun/projectile/proc/getAmmo() var/bullets = 0 - for(var/obj/item/ammo_casing/AC in loaded) - if(istype(AC)) - bullets += 1 + if(loaded) + bullets += loaded.len + if(ammo_magazine.stored_ammo) + bullets += ammo_magazine.stored_ammo.len return bullets diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm index 0e5f0d68cd..98049fb8a5 100644 --- a/code/modules/projectiles/guns/projectile/automatic.dm +++ b/code/modules/projectiles/guns/projectile/automatic.dm @@ -2,11 +2,12 @@ name = "submachine gun" desc = "A lightweight, fast firing gun. Uses 9mm rounds." icon_state = "saber" //ugly - w_class = 3.0 + w_class = 3 + load_method = SPEEDLOADER //yup. until someone sprites a magazine for it. max_shells = 22 caliber = "9mm" origin_tech = "combat=4;materials=2" - ammo_type = "/obj/item/ammo_casing/c9mm" + ammo_type = /obj/item/ammo_casing/c9mm automatic = 1 fire_delay = 0 @@ -14,19 +15,16 @@ isHandgun() return 0 -/obj/item/weapon/gun/projectile/automatic/test - name = "test gun" - ammo_type = "/obj/item/ammo_casing/a145" - /obj/item/weapon/gun/projectile/automatic/mini_uzi name = "\improper Uzi" desc = "A lightweight, fast firing gun, for when you want someone dead. Uses .45 rounds." icon_state = "mini-uzi" - w_class = 3.0 - max_shells = 16 + w_class = 3 + load_method = SPEEDLOADER //yup. until someone sprites a magazine for it. + max_shells = 15 caliber = ".45" origin_tech = "combat=5;materials=2;syndicate=8" - ammo_type = "/obj/item/ammo_casing/c45" + ammo_type = /obj/item/ammo_casing/c45 isHandgun() return 1 @@ -37,32 +35,26 @@ desc = "A lightweight, fast firing gun, for when you REALLY need someone dead. Uses 12mm rounds. Has a 'Scarborough Arms - Per falcis, per pravitas' buttstamp" icon_state = "c20r" item_state = "c20r" - w_class = 3.0 - max_shells = 20 + w_class = 3 caliber = "12mm" origin_tech = "combat=5;materials=2;syndicate=8" - ammo_type = "/obj/item/ammo_casing/a12mm" fire_sound = 'sound/weapons/Gunshot_smg.ogg' load_method = MAGAZINE - mag_type = /obj/item/ammo_magazine/a12mm/empty + magazine_type = /obj/item/ammo_magazine/a12mm + auto_eject = 1 - afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, flag) - ..() - if(!loaded.len && empty_mag) - empty_mag.loc = get_turf(src.loc) - empty_mag = null - playsound(user, 'sound/weapons/smg_empty_alarm.ogg', 40, 1) - update_icon() - return +/obj/item/weapon/gun/projectile/automatic/c20r/eject_magazine(mob/user) + ..() + playsound(user, 'sound/weapons/smg_empty_alarm.ogg', 40, 1) +/obj/item/weapon/gun/projectile/automatic/c20r/update_icon() + ..() + if(ammo_magazine) + icon_state = "c20r-[round(loaded.len,4)]" + else + icon_state = "c20r" + return - update_icon() - ..() - if(empty_mag) - icon_state = "c20r-[round(loaded.len,4)]" - else - icon_state = "c20r" - return /obj/item/weapon/gun/projectile/automatic/l6_saw name = "\improper L6 SAW" @@ -77,19 +69,16 @@ ammo_type = "/obj/item/ammo_casing/a762" fire_sound = 'sound/weapons/Gunshot_smg.ogg' load_method = MAGAZINE + magazine_type = /obj/item/ammo_magazine/a762 var/cover_open = 0 - var/mag_inserted = 1 - /obj/item/weapon/gun/projectile/automatic/l6_saw/attack_self(mob/user as mob) cover_open = !cover_open user << "You [cover_open ? "open" : "close"] [src]'s cover." update_icon() - /obj/item/weapon/gun/projectile/automatic/l6_saw/update_icon() - icon_state = "l6[cover_open ? "open" : "closed"][mag_inserted ? round(loaded.len, 25) : "-empty"]" - + icon_state = "l6[cover_open ? "open" : "closed"][ammo_magazine ? round(loaded.len, 25) : "-empty"]" /obj/item/weapon/gun/projectile/automatic/l6_saw/afterattack(atom/target as mob|obj|turf, mob/living/user as mob|obj, flag, params) //what I tried to do here is just add a check to see if the cover is open or not and add an icon_state change because I can't figure out how c-20rs do it with overlays if(cover_open) @@ -98,46 +87,14 @@ ..() update_icon() - /obj/item/weapon/gun/projectile/automatic/l6_saw/attack_hand(mob/user as mob) if(loc != user) - ..() - return //let them pick it up - if(!cover_open || (cover_open && !mag_inserted)) - ..() - else if(cover_open && mag_inserted) - //drop the mag - empty_mag = new /obj/item/ammo_magazine/a762(src) - empty_mag.stored_ammo = loaded - empty_mag.icon_state = "a762-[round(loaded.len, 10)]" - empty_mag.desc = "There are [loaded.len] shells left!" - empty_mag.loc = get_turf(src.loc) - user.put_in_hands(empty_mag) - empty_mag = null - mag_inserted = 0 - loaded = list() - update_icon() - user << "You remove the magazine from [src]." - + ..() //let them pick it up + else if(cover_open) + unload_ammo(user) /obj/item/weapon/gun/projectile/automatic/l6_saw/attackby(var/obj/item/A as obj, mob/user as mob) - if(!cover_open) + if(istype(A,/obj/item/ammo_magazine) && !cover_open) user << "[src]'s cover is closed! You can't insert a new mag!" return - else if(cover_open && mag_inserted) - user << "[src] already has a magazine inserted!" - return - else if(cover_open && !mag_inserted) - mag_inserted = 1 - user << "You insert the magazine!" - update_icon() - ..() - - -/* The thing I found with guns in ss13 is that they don't seem to simulate the rounds in the magazine in the gun. - Afaik, since projectile.dm features a revolver, this would make sense since the magazine is part of the gun. - However, it looks like subsequent guns that use removable magazines don't take that into account and just get - around simulating a removable magazine by adding the casings into the loaded list and spawning an empty magazine - when the gun is out of rounds. Which means you can't eject magazines with rounds in them. The below is a very - rough and poor attempt at making that happen. -Ausops */ - \ No newline at end of file + ..() \ No newline at end of file diff --git a/code/modules/projectiles/guns/projectile/pistol.dm b/code/modules/projectiles/guns/projectile/pistol.dm index f12420f7dc..6dd1cfbe9b 100644 --- a/code/modules/projectiles/guns/projectile/pistol.dm +++ b/code/modules/projectiles/guns/projectile/pistol.dm @@ -2,42 +2,32 @@ name = "silenced pistol" desc = "A small, quiet, easily concealable gun. Uses .45 rounds." icon_state = "silenced_pistol" - w_class = 3.0 - max_shells = 12 + w_class = 3 caliber = ".45" silenced = 1 origin_tech = "combat=2;materials=2;syndicate=8" - ammo_type = "/obj/item/ammo_casing/c45" - - + load_method = MAGAZINE + magazine_type = /obj/item/ammo_magazine/c45m /obj/item/weapon/gun/projectile/deagle name = "desert eagle" desc = "A robust handgun that uses .50 AE ammo" icon_state = "deagle" force = 14.0 - max_shells = 7 caliber = ".50" - ammo_type ="/obj/item/ammo_casing/a50" load_method = MAGAZINE - mag_type = /obj/item/ammo_magazine/a50/empty + magazine_type = /obj/item/ammo_magazine/a50 + auto_eject = 1 - afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, flag) - ..() - if(!loaded.len && empty_mag) - empty_mag.loc = get_turf(src.loc) - empty_mag = null - playsound(user, 'sound/weapons/smg_empty_alarm.ogg', 40, 1) - update_icon() - return +/obj/item/weapon/gun/projectile/deagle/eject_magazine(mob/user) + ..() + playsound(user, 'sound/weapons/smg_empty_alarm.ogg', 40, 1) /obj/item/weapon/gun/projectile/deagle/gold desc = "A gold plated gun folded over a million times by superior martian gunsmiths. Uses .50 AE ammo." icon_state = "deagleg" item_state = "deagleg" - - /obj/item/weapon/gun/projectile/deagle/camo desc = "A Deagle brand Deagle for operators operating operationally. Uses .50 AE ammo." icon_state = "deaglecamo" @@ -55,44 +45,34 @@ origin_tech = "combat=3" ammo_type = "/obj/item/ammo_casing/a75" load_method = MAGAZINE - mag_type = /obj/item/ammo_magazine/a75/empty + magazine_type = /obj/item/ammo_magazine/a75 + auto_eject = 1 - afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, flag) - ..() - if(!loaded.len && empty_mag) - empty_mag.loc = get_turf(src.loc) - empty_mag = null - playsound(user, 'sound/weapons/smg_empty_alarm.ogg', 40, 1) - update_icon() - return +/obj/item/weapon/gun/projectile/gyropistol/eject_magazine(mob/user) + ..() + playsound(user, 'sound/weapons/smg_empty_alarm.ogg', 40, 1) - update_icon() - ..() - if(empty_mag) - icon_state = "gyropistolloaded" - else - icon_state = "gyropistol" - return +/obj/item/weapon/gun/projectile/gyropistol/update_icon() + ..() + if(ammo_magazine) + icon_state = "gyropistolloaded" + else + icon_state = "gyropistol" /obj/item/weapon/gun/projectile/pistol name = "\improper Stechtkin pistol" desc = "A small, easily concealable gun. Uses 9mm rounds." icon_state = "pistol" w_class = 2 - max_shells = 10 caliber = "9mm" silenced = 0 origin_tech = "combat=2;materials=2;syndicate=2" - ammo_type = "/obj/item/ammo_casing/c9mm" load_method = MAGAZINE - mag_type = /obj/item/ammo_magazine/mc9mm/empty + magazine_type = /obj/item/ammo_magazine/mc9mm -/obj/item/weapon/gun/projectile/pistol/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, flag) - ..() - if(!loaded.len && empty_mag) - empty_mag.loc = get_turf(src.loc) - empty_mag = null - return +/obj/item/weapon/gun/projectile/pistol/flash + desc = "A small, easily concealable gun. Uses 9mm illumination rounds." + magazine_type = /obj/item/ammo_magazine/mc9mm/flash /obj/item/weapon/gun/projectile/pistol/attack_hand(mob/user as mob) if(loc == user) @@ -108,7 +88,6 @@ return ..() - /obj/item/weapon/gun/projectile/pistol/attackby(obj/item/I as obj, mob/user as mob) if(istype(I, /obj/item/weapon/silencer)) if(user.l_hand != src && user.r_hand != src) //if we're not in his hands diff --git a/code/modules/projectiles/guns/projectile/revolver.dm b/code/modules/projectiles/guns/projectile/revolver.dm index 226e6467aa..dc2870892b 100644 --- a/code/modules/projectiles/guns/projectile/revolver.dm +++ b/code/modules/projectiles/guns/projectile/revolver.dm @@ -1,3 +1,13 @@ +/obj/item/weapon/gun/projectile/revolver + name = "revolver" + desc = "A classic revolver. Uses .357 ammo" + icon_state = "revolver" + caliber = "357" + origin_tech = "combat=2;materials=2" + + max_shells = 7 + ammo_type = /obj/item/ammo_casing/a357 + /obj/item/weapon/gun/projectile/detective name = "revolver" desc = "A cheap Martian knock-off of a Smith & Wesson Model 10. Uses .38-Special rounds." @@ -5,7 +15,7 @@ max_shells = 6 caliber = "38" origin_tech = "combat=2;materials=2" - ammo_type = "/obj/item/ammo_casing/c38" + ammo_type = /obj/item/ammo_casing/c38 special_check(var/mob/living/carbon/human/M) if(caliber == initial(caliber)) @@ -73,37 +83,27 @@ name = "\improper Colt M1911" desc = "A cheap Martian knock-off of a Colt M1911. Uses less-than-lethal .45 rounds." icon_state = "colt" - max_shells = 7 caliber = ".45" - ammo_type = "/obj/item/ammo_casing/c45r" load_method = MAGAZINE - mag_type = /obj/item/ammo_magazine/c45r/empty + magazine_type = /obj/item/ammo_magazine/c45m/rubber /obj/item/weapon/gun/projectile/detective/semiauto/flash - ammo_type = "/obj/item/ammo_casing/c45f" + magazine_type = /obj/item/ammo_magazine/c45m/flash /obj/item/weapon/gun/projectile/detective/semiauto/colt desc = "A cheap Martian knock-off of a Colt M1911." - ammo_type = "/obj/item/ammo_casing/c45" + magazine_type = /obj/item/ammo_magazine/c45m -/obj/item/weapon/gun/projectile/detective/semiauto/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, flag) - ..() - if(!loaded.len && empty_mag) - empty_mag.loc = get_turf(src.loc) - empty_mag = null - user << "The Magazine falls out and clatters on the floor!" - return - - -/obj/item/weapon/gun/projectile/mateba +/obj/item/weapon/gun/projectile/revolver/mateba name = "mateba" desc = "When you absolutely, positively need a 10mm hole in the other guy. Uses .357 ammo." //>10mm hole >.357 icon_state = "mateba" origin_tech = "combat=2;materials=2" + // A gun to play Russian Roulette! // You can spin the chamber to randomize the position of the bullet. - +/* /obj/item/weapon/gun/projectile/russian name = "\improper Russian revolver" desc = "A Russian made revolver. Uses .357 ammo. It has a single slot in it's chamber for a bullet." @@ -184,3 +184,4 @@ user.apply_damage(300, BRUTE, affecting, sharp=1) // You are dead, dead, dead. return ..() +*/ \ No newline at end of file diff --git a/code/modules/projectiles/guns/projectile/shotgun.dm b/code/modules/projectiles/guns/projectile/shotgun.dm index e96c7637e3..c23acfa129 100644 --- a/code/modules/projectiles/guns/projectile/shotgun.dm +++ b/code/modules/projectiles/guns/projectile/shotgun.dm @@ -10,127 +10,89 @@ slot_flags = SLOT_BACK caliber = "shotgun" origin_tech = "combat=4;materials=2" - ammo_type = "/obj/item/ammo_casing/shotgun/pellet" + load_method = SINGLE_CASING + ammo_type = /obj/item/ammo_casing/shotgun/pellet var/recentpump = 0 // to prevent spammage var/pumped = 0 var/obj/item/ammo_casing/current_shell = null - isHandgun() - return 0 +/obj/item/weapon/gun/projectile/shotgun/pump/isHandgun() + return 0 - load_into_chamber() - if(in_chamber) - return 1 - return 0 - - - attack_self(mob/living/user as mob) - if(recentpump) return - pump(user) - recentpump = 1 - spawn(10) - recentpump = 0 - return - - - proc/pump(mob/M as mob) - playsound(M, 'sound/weapons/shotgunpump.ogg', 60, 1) - pumped = 0 - if(current_shell)//We have a shell in the chamber - current_shell.loc = get_turf(src)//Eject casing - current_shell = null - if(in_chamber) - in_chamber = null - if(!loaded.len) return 0 - var/obj/item/ammo_casing/AC = loaded[1] //load next casing. - loaded -= AC //Remove casing from loaded list. - current_shell = AC - if(AC.BB) - in_chamber = AC.BB //Load projectile into chamber. - update_icon() //I.E. fix the desc +/obj/item/weapon/gun/projectile/shotgun/pump/load_into_chamber() + if(in_chamber) return 1 + return 0 + +/obj/item/weapon/gun/projectile/shotgun/pump/attack_self(mob/living/user as mob) + if(world.time >= recentpump + 10) + pump(user) + recentpump = world.time + +/obj/item/weapon/gun/projectile/shotgun/pump/getAmmo() + . = ..() + if(current_shell) .++ + +/obj/item/weapon/gun/projectile/shotgun/pump/proc/pump(mob/M as mob) + playsound(M, 'sound/weapons/shotgunpump.ogg', 60, 1) + pumped = 0 + if(current_shell)//We have a shell in the chamber + current_shell.loc = get_turf(src)//Eject casing + current_shell = null + if(in_chamber) + in_chamber = null + if(!loaded.len) return 0 + var/obj/item/ammo_casing/AC = loaded[1] //load next casing. + loaded -= AC //Remove casing from loaded list. + current_shell = AC + if(AC.BB) + in_chamber = AC.BB //Load projectile into chamber. + update_icon() //I.E. fix the desc + return 1 /obj/item/weapon/gun/projectile/shotgun/pump/combat name = "combat shotgun" icon_state = "cshotgun" - max_shells = 8 origin_tech = "combat=5;materials=2" - ammo_type = "/obj/item/ammo_casing/shotgun" + max_shells = 8 + ammo_type = /obj/item/ammo_casing/shotgun + -//this is largely hacky and bad :( -Pete /obj/item/weapon/gun/projectile/shotgun/doublebarrel name = "double-barreled shotgun" desc = "A true classic." icon_state = "dshotgun" item_state = "shotgun" + //SPEEDLOADER because rapid unloading. + //In principle someone could make a speedloader for it, so it makes sense. + load_method = SINGLE_CASING|SPEEDLOADER max_shells = 2 - w_class = 4.0 + w_class = 4 force = 10 flags = CONDUCT slot_flags = SLOT_BACK caliber = "shotgun" origin_tech = "combat=3;materials=1" - ammo_type = "/obj/item/ammo_casing/shotgun/beanbag" + ammo_type = /obj/item/ammo_casing/shotgun/beanbag - New() - for(var/i = 1, i <= max_shells, i++) - loaded += new ammo_type(src) - - update_icon() - return - - load_into_chamber() -// if(in_chamber) -// return 1 {R} - if(!loaded.len) - return 0 - - var/obj/item/ammo_casing/AC = loaded[1] //load next casing. - loaded -= AC //Remove casing from loaded list. - AC.desc += " This one is spent." - - if(AC.BB) - in_chamber = AC.BB //Load projectile into chamber. - return 1 - return 0 - - attack_self(mob/living/user as mob) - if(!(locate(/obj/item/ammo_casing/shotgun) in src) && !loaded.len) - user << "\The [src] is empty." - return - - for(var/obj/item/ammo_casing/shotgun/shell in src) //This feels like a hack. //don't code at 3:30am kids!! - if(shell in loaded) - loaded -= shell - shell.loc = get_turf(src.loc) - - user << "You break \the [src]." - update_icon() - - attackby(var/obj/item/A as obj, mob/user as mob) - if(istype(A, /obj/item/ammo_casing) && !load_method) - var/obj/item/ammo_casing/AC = A - if(AC.caliber == caliber && (loaded.len < max_shells) && (contents.len < max_shells)) //forgive me father, for i have sinned - user.drop_item() - AC.loc = src - loaded += AC - user << "You load a shell into \the [src]!" - A.update_icon() - update_icon() - if(istype(A, /obj/item/weapon/circular_saw) || istype(A, /obj/item/weapon/melee/energy) || istype(A, /obj/item/weapon/pickaxe/plasmacutter)) - user << "You begin to shorten the barrel of \the [src]." - if(loaded.len) - afterattack(user, user) //will this work? - afterattack(user, user) //it will. we call it twice, for twice the FUN +//this is largely hacky and bad :( -Pete +/obj/item/weapon/gun/projectile/shotgun/doublebarrel/attackby(var/obj/item/A as obj, mob/user as mob) + if(istype(A, /obj/item/weapon/circular_saw) || istype(A, /obj/item/weapon/melee/energy) || istype(A, /obj/item/weapon/pickaxe/plasmacutter)) + user << "You begin to shorten the barrel of \the [src]." + if(loaded.len) + for(var/i in 1 to max_shells) + afterattack(user, user) //will this work? //it will. we call it twice, for twice the FUN playsound(user, fire_sound, 50, 1) - user.visible_message("The shotgun goes off!", "The shotgun goes off in your face!") - return - if(do_after(user, 30)) //SHIT IS STEALTHY EYYYYY - icon_state = "sawnshotgun" - w_class = 3.0 - item_state = "gun" - slot_flags &= ~SLOT_BACK //you can't sling it on your back - slot_flags |= SLOT_BELT //but you can wear it on your belt (poorly concealed under a trenchcoat, ideally) - name = "sawn-off shotgun" - desc = "Omar's coming!" - user << "You shorten the barrel of \the [src]!" + user.visible_message("The shotgun goes off!", "The shotgun goes off in your face!") + return + if(do_after(user, 30)) //SHIT IS STEALTHY EYYYYY + icon_state = "sawnshotgun" + w_class = 3 + item_state = "gun" + slot_flags &= ~SLOT_BACK //you can't sling it on your back + slot_flags |= SLOT_BELT //but you can wear it on your belt (poorly concealed under a trenchcoat, ideally) + name = "sawn-off shotgun" + desc = "Omar's coming!" + user << "You shorten the barrel of \the [src]!" + else + ..() diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index a380974fbe..525d1ccb77 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -103,8 +103,8 @@ user.bullet_act(src, target_zone) del(src) return 0 - if(targloc == curloc) //Shooting the ground - targloc.bullet_act(src, target_zone) + if(targloc == curloc) //Shooting something in the same turf + target.bullet_act(src, target_zone) del(src) return 0 @@ -236,14 +236,20 @@ /obj/item/projectile/process() if(kill_count < 1) del(src) - return - step_towards(src, current) - sleep(1) - if(!bumped && !isturf(original)) - if(loc == get_turf(original)) - if(!(original in permutated)) - Bump(original) - sleep(1) + kill_count-- + spawn while(src) + if((!( current ) || loc == current)) + current = locate(min(max(x + xo, 1), world.maxx), min(max(y + yo, 1), world.maxy), z) + if((x == 1 || x == world.maxx || y == 1 || y == world.maxy)) + del(src) + return + step_towards(src, current) + sleep(1) + if(!bumped && !isturf(original)) + if(loc == get_turf(original)) + if(!(original in permutated)) + Bump(original) + sleep(1) //"Tracing" projectile /obj/item/projectile/test //Used to see if you can hit them. diff --git a/code/modules/research/xenoarchaeology/finds/finds.dm b/code/modules/research/xenoarchaeology/finds/finds.dm index 3c2a3dd8e2..b758192bee 100644 --- a/code/modules/research/xenoarchaeology/finds/finds.dm +++ b/code/modules/research/xenoarchaeology/finds/finds.dm @@ -367,7 +367,7 @@ item_type = "gun" if(27) //revolver - var/obj/item/weapon/gun/projectile/new_gun = new /obj/item/weapon/gun/projectile(src.loc) + var/obj/item/weapon/gun/projectile/new_gun = new /obj/item/weapon/gun/projectile/revolver(src.loc) new_item = new_gun new_item.icon_state = "gun[rand(1,4)]" new_item.icon = 'icons/obj/xenoarchaeology.dmi' @@ -383,7 +383,7 @@ if(num_bullets < new_gun.loaded.len) new_gun.loaded.Cut() for(var/i = 1, i <= num_bullets, i++) - var/A = text2path(new_gun.ammo_type) + var/A = new_gun.ammo_type new_gun.loaded += new A(new_gun) else for(var/obj/item/I in new_gun) From 5ddbbc03712b8cb54763578d053f1992eaf2e5f1 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 9 Feb 2015 19:59:04 -0500 Subject: [PATCH 04/45] Fixes ammo_magazine icon states being handled incorrectly. --- code/modules/projectiles/ammunition.dm | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/code/modules/projectiles/ammunition.dm b/code/modules/projectiles/ammunition.dm index fa17429016..47214ab937 100644 --- a/code/modules/projectiles/ammunition.dm +++ b/code/modules/projectiles/ammunition.dm @@ -70,18 +70,19 @@ var/initial_ammo = null var/multiple_sprites = 0 - var/list/icon_map = list() + //because BYOND doesn't support numbers as keys in associative lists + var/list/icon_keys = list() //keys + var/list/ammo_states = list() //values /obj/item/ammo_magazine/New() if(multiple_sprites) //should probably be cached or something. - icon_map = list(max_ammo = icon_state) var/list/states = icon_states(icon) for(var/i = 0, i <= max_ammo, i++) var/ammo_state = "[icon_state]-[i]" if(ammo_state in states) - //icon_map += i //so stupid BYOND understands that it's an association - icon_map[i] = ammo_state + icon_keys += i + ammo_states += ammo_state if(isnull(initial_ammo)) initial_ammo = max_ammo @@ -119,9 +120,10 @@ if(multiple_sprites) //find the lowest key greater than or equal to stored_ammo.len var/new_state = null - for(var/i in icon_map) - if (i >= stored_ammo.len) - new_state = icon_map[i] + for(var/idx in 1 to icon_keys.len) + var/ammo_count = icon_keys[idx] + if (ammo_count >= stored_ammo.len) + new_state = ammo_states[idx] break icon_state = (new_state)? new_state : initial(icon_state) From ee894d6b99de8f6a0cac3d5d7203334afc15f178 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 9 Feb 2015 20:00:33 -0500 Subject: [PATCH 05/45] Flash projectile adjustment Adjusts brightness, adds some effects, adds 9mm flash rounds and pistol variant. --- .../items/weapons/grenades/flashbang.dm | 1 + code/modules/projectiles/guns/projectile.dm | 2 +- .../projectiles/guns/projectile/pistol.dm | 3 ++- .../projectiles/guns/projectile/revolver.dm | 2 ++ code/modules/projectiles/projectile.dm | 2 ++ code/modules/projectiles/projectile/energy.dm | 24 ++++++++++++------- 6 files changed, 23 insertions(+), 11 deletions(-) diff --git a/code/game/objects/items/weapons/grenades/flashbang.dm b/code/game/objects/items/weapons/grenades/flashbang.dm index a332f6fa92..bda28f83b1 100644 --- a/code/game/objects/items/weapons/grenades/flashbang.dm +++ b/code/game/objects/items/weapons/grenades/flashbang.dm @@ -21,6 +21,7 @@ B.health -= damage B.update_icon() + new/obj/effect/effect/sparks(src.loc) new/obj/effect/effect/smoke/illumination(src.loc, brightness=15) del(src) return diff --git a/code/modules/projectiles/guns/projectile.dm b/code/modules/projectiles/guns/projectile.dm index a500af113f..d3f81185ab 100644 --- a/code/modules/projectiles/guns/projectile.dm +++ b/code/modules/projectiles/guns/projectile.dm @@ -153,9 +153,9 @@ /obj/item/weapon/gun/projectile/examine(mob/user) ..(user) + user << "Has [getAmmo()] round\s remaining." if(ammo_magazine) user << "It has \a [ammo_magazine] loaded." - user << "Has [getAmmo()] round\s remaining." // if(in_chamber && !loaded.len) // user << "However, it has a chambered round." // if(in_chamber && loaded.len) diff --git a/code/modules/projectiles/guns/projectile/pistol.dm b/code/modules/projectiles/guns/projectile/pistol.dm index 6dd1cfbe9b..32af57100a 100644 --- a/code/modules/projectiles/guns/projectile/pistol.dm +++ b/code/modules/projectiles/guns/projectile/pistol.dm @@ -71,7 +71,8 @@ magazine_type = /obj/item/ammo_magazine/mc9mm /obj/item/weapon/gun/projectile/pistol/flash - desc = "A small, easily concealable gun. Uses 9mm illumination rounds." + name = "\improper Stechtkin signal pistol" + desc = "A small, easily concealable gun. Uses 9mm signal flash rounds." magazine_type = /obj/item/ammo_magazine/mc9mm/flash /obj/item/weapon/gun/projectile/pistol/attack_hand(mob/user as mob) diff --git a/code/modules/projectiles/guns/projectile/revolver.dm b/code/modules/projectiles/guns/projectile/revolver.dm index dc2870892b..48ae9a2432 100644 --- a/code/modules/projectiles/guns/projectile/revolver.dm +++ b/code/modules/projectiles/guns/projectile/revolver.dm @@ -88,6 +88,8 @@ magazine_type = /obj/item/ammo_magazine/c45m/rubber /obj/item/weapon/gun/projectile/detective/semiauto/flash + name = "\improper Colt M1911 signal pistol" + desc = "A cheap Martian knock-off of a Colt M1911. Uses .45 signal flash rounds." magazine_type = /obj/item/ammo_magazine/c45m/flash /obj/item/weapon/gun/projectile/detective/semiauto/colt diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 525d1ccb77..9c985a0994 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -101,10 +101,12 @@ if(user == target) //Shooting yourself user.bullet_act(src, target_zone) + on_impact(user) del(src) return 0 if(targloc == curloc) //Shooting something in the same turf target.bullet_act(src, target_zone) + on_impact(target) del(src) return 0 diff --git a/code/modules/projectiles/projectile/energy.dm b/code/modules/projectiles/projectile/energy.dm index 851f691b41..1bb2490463 100644 --- a/code/modules/projectiles/projectile/energy.dm +++ b/code/modules/projectiles/projectile/energy.dm @@ -11,29 +11,35 @@ name = "shell" //a chemical filled shell or something icon_state = "bullet" damage = 5 - var/flash_range = 1 - var/brightness = 5 - var/light_duration = 10 + var/flash_range = 0 + var/brightness = 7 + var/light_duration = 5 -/obj/item/projectile/energy/flash/on_impact() - var/turf/T = get_turf(src) +/obj/item/projectile/energy/flash/on_impact(var/atom/A) + var/turf/T = get_turf(A) if(!istype(T)) return - src.visible_message("\The [src] explodes in a bright flash!") + //blind adjacent people for (var/mob/living/carbon/M in viewers(T, flash_range)) if(M.eyecheck() < 1) flick("e_flash", M.flash) + //snap pop playsound(src, 'sound/effects/snap.ogg', 50, 1) - new/obj/effect/effect/smoke/illumination(src.loc, brightness=max(flash_range*2, brightness), lifetime=light_duration) + src.visible_message("\The [src] explodes in a bright flash!") + + //use src.loc so that ash doesn't end up inside windows + new /obj/effect/effect/sparks(src.loc) + new /obj/effect/decal/cleanable/ash(src.loc) + new /obj/effect/effect/smoke/illumination(src.loc, brightness=max(flash_range*2, brightness), lifetime=light_duration) //blinds people like the flash round, but can also be used for temporary illumination /obj/item/projectile/energy/flash/flare damage = 10 flash_range = 1 - brightness = 7 //similar to a flare - light_duration = 150 + brightness = 9 //similar to a flare + light_duration = 200 /obj/item/projectile/energy/electrode name = "electrode" From 47a1639b6d8749081e5f7e19c9be44d08a9d45bb Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 9 Feb 2015 20:41:56 -0500 Subject: [PATCH 06/45] Adds removing single casings, runtime fix --- code/modules/projectiles/guns/projectile.dm | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/code/modules/projectiles/guns/projectile.dm b/code/modules/projectiles/guns/projectile.dm index d3f81185ab..fa17c0e67b 100644 --- a/code/modules/projectiles/guns/projectile.dm +++ b/code/modules/projectiles/guns/projectile.dm @@ -117,7 +117,7 @@ loaded.Cut() if(count) user.visible_message("[user] unloads [src].", "You unload [count] round\s from [src]!") - else + else if(load_method & SINGLE_CASING) var/obj/item/ammo_casing/C = loaded[loaded.len] loaded.len-- user.put_in_hands(C) @@ -135,6 +135,16 @@ return ..() unload_ammo(user) +/obj/item/weapon/gun/projectile/attack_hand(mob/user as mob) + //allow guns with both SPEEDLOADER and SINGLE_CASING a way to remove casings without dumping everything on the floor + if((load_method & SINGLE_CASING) && loaded.len && (src in user)) + var/obj/item/ammo_casing/C = loaded[loaded.len] + loaded.len-- + user.put_in_hands(C) + user.visible_message("[user] removes \a [C] from [src].", "You remove \a [C] from [src]!") + else + return ..() + /obj/item/weapon/gun/projectile/afterattack(atom/A, mob/living/user) ..() if(auto_eject && !ammo_magazine.stored_ammo.len) @@ -145,7 +155,7 @@ if(ammo_magazine) ammo_magazine.loc = get_turf(src.loc) user.visible_message( - "[ammo_magazine] falls out and clatters on the floor!", + "[ammo_magazine] falls out and clatters on the floor!", "[ammo_magazine] falls out and clatters on the floor!" ) ammo_magazine = null @@ -166,6 +176,6 @@ var/bullets = 0 if(loaded) bullets += loaded.len - if(ammo_magazine.stored_ammo) + if(ammo_magazine && ammo_magazine.stored_ammo) bullets += ammo_magazine.stored_ammo.len return bullets From bf24ac82b81ba0f80b08c71a49c2041cda45d5f3 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 9 Feb 2015 21:25:37 -0500 Subject: [PATCH 07/45] Removes IsHandgun() proc, adds slot flag --- code/game/objects/items/toys.dm | 2 +- code/modules/clothing/suits/armor.dm | 54 +++++++++---------- code/modules/clothing/under/ties.dm | 44 +++++++-------- code/modules/projectiles/gun.dm | 5 +- code/modules/projectiles/guns/energy/laser.dm | 7 +-- .../projectiles/guns/energy/nuclear.dm | 1 + code/modules/projectiles/guns/energy/pulse.dm | 8 +-- .../projectiles/guns/energy/special.dm | 7 ++- code/modules/projectiles/guns/energy/stun.dm | 3 +- .../projectiles/guns/energy/temperature.dm | 1 + .../projectiles/guns/projectile/automatic.dm | 9 ++-- .../projectiles/guns/projectile/crossbow.dm | 1 + .../projectiles/guns/projectile/launcher.dm | 4 -- .../projectiles/guns/projectile/pneumatic.dm | 1 + .../projectiles/guns/projectile/revolver.dm | 16 +++--- .../projectiles/guns/projectile/shotgun.dm | 6 +-- .../reagent_containers/food/snacks/grown.dm | 1 + code/setup.dm | 1 + 18 files changed, 79 insertions(+), 92 deletions(-) diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index cee5076a55..fe150bab74 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -128,7 +128,7 @@ icon_state = "revolver" item_state = "gun" flags = CONDUCT - slot_flags = SLOT_BELT + slot_flags = SLOT_BELT|SLOT_HOLSTER w_class = 3.0 matter = list("glass" = 10,"metal" = 10) diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index 6a5dd04cb6..3d5d2d9940 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -196,38 +196,32 @@ slowdown = 1 armor = list(melee = 60, bullet = 60, laser = 60, energy = 40, bomb = 20, bio = 0, rad = 0) siemens_coefficient = 0.7 + var/obj/item/clothing/tie/holster/holster - /obj/item/clothing/suit/armor/tactical/verb/holster() - set name = "Holster" - set category = "Object" - set src in usr - if(!istype(usr, /mob/living)) return - if(usr.stat) return +/obj/item/clothing/suit/armor/tactical/New() + ..() + holster = new(src) + +/obj/item/clothing/suit/armor/tactical/attackby(obj/item/W as obj, mob/user as mob) + ..() + holster.attackby(W, user) + +/obj/item/clothing/suit/armor/tactical/verb/holster() + set name = "Holster" + set category = "Object" + set src in usr + if(!istype(usr, /mob/living)) return + if(usr.stat) return + + if(!holster.holstered) + var/obj/item/W = usr.get_active_hand() + if(!istype(W, /obj/item)) + usr << "\blue You need your gun equiped to holster it." + return + holster.holster(W, usr) + else + holster.unholster(usr) - if(!holstered) - if(!istype(usr.get_active_hand(), /obj/item/weapon/gun)) - usr << "\blue You need your gun equiped to holster it." - return - var/obj/item/weapon/gun/W = usr.get_active_hand() - if (!W.isHandgun()) - usr << "\red This gun won't fit in \the belt!" - return - holstered = usr.get_active_hand() - usr.drop_item() - holstered.loc = src - usr.visible_message("\blue \The [usr] holsters \the [holstered].", "You holster \the [holstered].") - else - if(istype(usr.get_active_hand(),/obj) && istype(usr.get_inactive_hand(),/obj)) - usr << "\red You need an empty hand to draw the gun!" - else - if(usr.a_intent == "hurt") - usr.visible_message("\red \The [usr] draws \the [holstered], ready to shoot!", \ - "\red You draw \the [holstered], ready to shoot!") - else - usr.visible_message("\blue \The [usr] draws \the [holstered], pointing it at the ground.", \ - "\blue You draw \the [holstered], pointing it at the ground.") - usr.put_in_hands(holstered) - holstered = null //Non-hardsuit ERT armor. /obj/item/clothing/suit/armor/vest/ert diff --git a/code/modules/clothing/under/ties.dm b/code/modules/clothing/under/ties.dm index 050a2716e0..073b7a3757 100644 --- a/code/modules/clothing/under/ties.dm +++ b/code/modules/clothing/under/ties.dm @@ -197,45 +197,40 @@ desc = "A handgun holster." icon_state = "holster" item_color = "holster" - var/obj/item/weapon/gun/holstered = null - -//subtypes can override this to specify what can be holstered -/obj/item/clothing/tie/holster/proc/can_holster(obj/item/weapon/gun/W) - return W.isHandgun() + var/obj/item/holstered = null /obj/item/clothing/tie/holster/proc/holster(obj/item/I, mob/user as mob) if(holstered) - user << "\red There is already a [holstered] holstered here!" + user << "There is already \a [holstered] holstered here!" return - if (!istype(I, /obj/item/weapon/gun)) - user << "\red Only guns can be holstered!" + if (!(I.slot_flags & SLOT_HOLSTER)) + user << "[I] won't fit in [src]!" return - var/obj/item/weapon/gun/W = I - if (!can_holster(W)) - user << "\red This [W] won't fit in the [src]!" - return - - holstered = W + holstered = I user.drop_from_inventory(holstered) holstered.loc = src holstered.add_fingerprint(user) - user.visible_message("\blue [user] holsters the [holstered].", "You holster the [holstered].") + user.visible_message("[user] holsters [holstered].", "You holster [holstered].") /obj/item/clothing/tie/holster/proc/unholster(mob/user as mob) if(!holstered) return if(istype(user.get_active_hand(),/obj) && istype(user.get_inactive_hand(),/obj)) - user << "\red You need an empty hand to draw the [holstered]!" + user << "You need an empty hand to draw [holstered]!" else if(user.a_intent == "hurt") - usr.visible_message("\red [user] draws the [holstered], ready to shoot!", \ - "\red You draw the [holstered], ready to shoot!") + usr.visible_message( + "[user] draws [holstered], ready to shoot!", + "You draw [holstered], ready to shoot!" + ) else - user.visible_message("\blue [user] draws the [holstered], pointing it at the ground.", \ - "\blue You draw the [holstered], pointing it at the ground.") + user.visible_message( + "[user] draws [holstered], pointing it at the ground.", + "You draw [holstered], pointing it at the ground." + ) user.put_in_hands(holstered) holstered.add_fingerprint(user) holstered = null @@ -279,6 +274,7 @@ if(!istype(usr, /mob/living)) return if(usr.stat) return + //can't we just use src here? var/obj/item/clothing/tie/holster/H = null if (istype(src, /obj/item/clothing/tie/holster)) H = src @@ -288,20 +284,20 @@ H = S.hastie if (!H) - usr << "/red Something is very wrong." + usr << "\red Something is very wrong." if(!H.holstered) - if(!istype(usr.get_active_hand(), /obj/item/weapon/gun)) + var/obj/item/W = usr.get_active_hand() + if(!istype(W, /obj/item)) usr << "\blue You need your gun equiped to holster it." return - var/obj/item/weapon/gun/W = usr.get_active_hand() H.holster(W, usr) else H.unholster(usr) /obj/item/clothing/tie/holster/armpit name = "shoulder holster" - desc = "A worn-out handgun holster. Perfect for concealed carry" + desc = "A worn-out handgun holster. Perfect for concealed carrying." icon_state = "holster" item_color = "holster" diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index dc9c77a294..c744e1940f 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -5,7 +5,7 @@ icon_state = "detective" item_state = "gun" flags = CONDUCT - slot_flags = SLOT_BELT + slot_flags = SLOT_BELT|SLOT_HOLSTER matter = list("metal" = 2000) w_class = 3.0 throwforce = 5 @@ -72,9 +72,6 @@ else Fire(A,user,params) //Otherwise, fire normally. -/obj/item/weapon/gun/proc/isHandgun() - return 1 - /obj/item/weapon/gun/proc/Fire(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, params, reflex = 0)//TODO: go over this //Exclude lasertag guns from the CLUMSY check. if(!user) return diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm index 40a4b06689..c86fed89dc 100644 --- a/code/modules/projectiles/guns/energy/laser.dm +++ b/code/modules/projectiles/guns/energy/laser.dm @@ -4,6 +4,7 @@ icon_state = "laser" item_state = "laser" fire_sound = 'sound/weapons/Laser.ogg' + slot_flags = SLOT_BELT|SLOT_BACK w_class = 3.0 matter = list("metal" = 2000) origin_tech = "combat=3;magnets=2" @@ -70,13 +71,11 @@ obj/item/weapon/gun/energy/laser/retro icon_state = "lasercannon" fire_sound = 'sound/weapons/lasercannonfire.ogg' origin_tech = "combat=4;materials=3;powerstorage=3" + slot_flags = SLOT_BELT|SLOT_BACK projectile_type = "/obj/item/projectile/beam/heavylaser" fire_delay = 20 - isHandgun() - return 0 - /obj/item/weapon/gun/energy/lasercannon/cyborg/load_into_chamber() if(in_chamber) return 1 @@ -106,6 +105,7 @@ obj/item/weapon/gun/energy/laser/retro desc = "Standard issue weapon of the Imperial Guard" projectile_type = "/obj/item/projectile/beam/lastertag/blue" origin_tech = "combat=1;magnets=2" + slot_flags = SLOT_BELT|SLOT_HOLSTER clumsy_check = 0 var/charge_tick = 0 @@ -143,6 +143,7 @@ obj/item/weapon/gun/energy/laser/retro desc = "Standard issue weapon of the Imperial Guard" projectile_type = "/obj/item/projectile/beam/lastertag/red" origin_tech = "combat=1;magnets=2" + slot_flags = SLOT_BELT|SLOT_HOLSTER clumsy_check = 0 var/charge_tick = 0 diff --git a/code/modules/projectiles/guns/energy/nuclear.dm b/code/modules/projectiles/guns/energy/nuclear.dm index abfd7510a4..678f18bc01 100644 --- a/code/modules/projectiles/guns/energy/nuclear.dm +++ b/code/modules/projectiles/guns/energy/nuclear.dm @@ -40,6 +40,7 @@ desc = "An energy gun with an experimental miniaturized reactor." icon_state = "nucgun" origin_tech = "combat=3;materials=5;powerstorage=3" + slot_flags = SLOT_BELT var/lightfail = 0 var/charge_tick = 0 diff --git a/code/modules/projectiles/guns/energy/pulse.dm b/code/modules/projectiles/guns/energy/pulse.dm index 9b0a22e06c..bc675ea3dc 100644 --- a/code/modules/projectiles/guns/energy/pulse.dm +++ b/code/modules/projectiles/guns/energy/pulse.dm @@ -3,6 +3,7 @@ desc = "A heavy-duty, pulse-based energy weapon, preferred by front-line combat personnel." icon_state = "pulse" item_state = null //so the human update icon uses the icon_state instead. + slot_flags = SLOT_BELT|SLOT_BACK force = 10 fire_sound = 'sound/weapons/pulse.ogg' charge_cost = 200 @@ -33,9 +34,6 @@ projectile_type = /obj/item/projectile/beam/pulse return - isHandgun() - return 0 - /obj/item/weapon/gun/energy/pulse_rifle/cyborg/load_into_chamber() if(in_chamber) return 1 @@ -62,9 +60,7 @@ /obj/item/weapon/gun/energy/pulse_rifle/M1911 name = "\improper M1911-P" desc = "It's not the size of the gun, it's the size of the hole it puts through people." + slot_flags = SLOT_BELT|SLOT_HOLSTER icon_state = "m1911-p" cell_type = "/obj/item/weapon/cell/infinite" fire_delay = 10 - - isHandgun() - return 1 diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index d5417496bf..eeb3511fe4 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -141,6 +141,7 @@ obj/item/weapon/gun/energy/staff desc = "For the love of god, make sure you're aiming this the right way!" icon_state = "riotgun" item_state = "c20r" + slot_flags = SLOT_BELT|SLOT_BACK w_class = 4 projectile_type = "/obj/item/projectile/meteor" charge_cost = 100 @@ -176,6 +177,7 @@ obj/item/weapon/gun/energy/staff icon_state = "pen" item_state = "pen" w_class = 1 + slot_flags = SLOT_BELT /obj/item/weapon/gun/energy/mindflayer @@ -191,6 +193,7 @@ obj/item/weapon/gun/energy/staff/focus icon = 'icons/obj/wizard.dmi' icon_state = "focus" item_state = "focus" + slot_flags = SLOT_BACK projectile_type = "/obj/item/projectile/forcebolt" /* attack_self(mob/living/user as mob) @@ -215,7 +218,7 @@ obj/item/weapon/gun/energy/staff/focus /obj/item/weapon/gun/energy/sniperrifle name = "\improper L.W.A.P. sniper rifle" - desc = "A rifle constructed of lightweight materials, fitted with a SMART aiming-system scope." + desc = "A high-power laser rifle fitted with a SMART aiming-system scope." icon = 'icons/obj/gun.dmi' icon_state = "sniper" fire_sound = 'sound/weapons/marauder.ogg' @@ -224,7 +227,7 @@ obj/item/weapon/gun/energy/staff/focus slot_flags = SLOT_BACK charge_cost = 250 fire_delay = 35 - w_class = 4.0 + w_class = 4 zoomdevicename = "scope" /obj/item/weapon/gun/energy/sniperrifle/verb/scope() diff --git a/code/modules/projectiles/guns/energy/stun.dm b/code/modules/projectiles/guns/energy/stun.dm index c3d6529dcb..11cff5f1bc 100644 --- a/code/modules/projectiles/guns/energy/stun.dm +++ b/code/modules/projectiles/guns/energy/stun.dm @@ -60,6 +60,7 @@ item_state = "crossbow" matter = list("metal" = 2000) origin_tech = "combat=2;magnets=2;syndicate=5" + slot_flags = SLOT_BELT silenced = 1 fire_sound = 'sound/weapons/Genhit.ogg' projectile_type = /obj/item/projectile/energy/bolt @@ -96,7 +97,7 @@ /obj/item/weapon/gun/energy/crossbow/largecrossbow name = "Energy Crossbow" desc = "A weapon favored by mercenary infiltration teams." - w_class = 4.0 + w_class = 4 force = 10 matter = list("metal" = 200000) projectile_type = /obj/item/projectile/energy/bolt/large diff --git a/code/modules/projectiles/guns/energy/temperature.dm b/code/modules/projectiles/guns/energy/temperature.dm index 1e61590f21..7a4814aca0 100644 --- a/code/modules/projectiles/guns/energy/temperature.dm +++ b/code/modules/projectiles/guns/energy/temperature.dm @@ -7,6 +7,7 @@ var/current_temperature = T20C charge_cost = 100 origin_tech = "combat=3;materials=4;powerstorage=3;magnets=2" + slot_flags = SLOT_BELT|SLOT_BACK projectile_type = "/obj/item/projectile/temp" cell_type = "/obj/item/weapon/cell/crap" diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm index 98049fb8a5..854f4ada20 100644 --- a/code/modules/projectiles/guns/projectile/automatic.dm +++ b/code/modules/projectiles/guns/projectile/automatic.dm @@ -7,14 +7,12 @@ max_shells = 22 caliber = "9mm" origin_tech = "combat=4;materials=2" + slot_flags = SLOT_BELT ammo_type = /obj/item/ammo_casing/c9mm automatic = 1 fire_delay = 0 - isHandgun() - return 0 - /obj/item/weapon/gun/projectile/automatic/mini_uzi name = "\improper Uzi" desc = "A lightweight, fast firing gun, for when you want someone dead. Uses .45 rounds." @@ -26,9 +24,6 @@ origin_tech = "combat=5;materials=2;syndicate=8" ammo_type = /obj/item/ammo_casing/c45 - isHandgun() - return 1 - /obj/item/weapon/gun/projectile/automatic/c20r name = "\improper C-20r SMG" @@ -38,6 +33,7 @@ w_class = 3 caliber = "12mm" origin_tech = "combat=5;materials=2;syndicate=8" + slot_flags = SLOT_BELT|SLOT_BACK fire_sound = 'sound/weapons/Gunshot_smg.ogg' load_method = MAGAZINE magazine_type = /obj/item/ammo_magazine/a12mm @@ -66,6 +62,7 @@ max_shells = 50 caliber = "a762" origin_tech = "combat=5;materials=1;syndicate=2" + slot_flags = SLOT_BACK ammo_type = "/obj/item/ammo_casing/a762" fire_sound = 'sound/weapons/Gunshot_smg.ogg' load_method = MAGAZINE diff --git a/code/modules/projectiles/guns/projectile/crossbow.dm b/code/modules/projectiles/guns/projectile/crossbow.dm index faa3f8509f..e74e58fe73 100644 --- a/code/modules/projectiles/guns/projectile/crossbow.dm +++ b/code/modules/projectiles/guns/projectile/crossbow.dm @@ -55,6 +55,7 @@ mouthshoot = 1 // No suiciding with this weapon, causes runtimes. fire_sound_text = "a solid thunk" fire_delay = 25 + slot_flags = SLOT_BACK var/tension = 0 // Current draw on the bow. var/max_tension = 5 // Highest possible tension. diff --git a/code/modules/projectiles/guns/projectile/launcher.dm b/code/modules/projectiles/guns/projectile/launcher.dm index 6626d809cd..97f25cbc28 100644 --- a/code/modules/projectiles/guns/projectile/launcher.dm +++ b/code/modules/projectiles/guns/projectile/launcher.dm @@ -13,10 +13,6 @@ /obj/item/weapon/gun/launcher/load_into_chamber() return (!isnull(in_chamber)) -//This should not fit in a combat belt or holster. -/obj/item/weapon/gun/launcher/isHandgun() - return 0 - //Launchers are mechanical, no other impact. /obj/item/weapon/gun/launcher/emp_act(severity) return diff --git a/code/modules/projectiles/guns/projectile/pneumatic.dm b/code/modules/projectiles/guns/projectile/pneumatic.dm index 43a5bc8e9a..f83ab85570 100644 --- a/code/modules/projectiles/guns/projectile/pneumatic.dm +++ b/code/modules/projectiles/guns/projectile/pneumatic.dm @@ -4,6 +4,7 @@ icon = 'icons/obj/gun.dmi' icon_state = "pneumatic" item_state = "pneumatic" + slot_flags = SLOT_BELT w_class = 5.0 flags = CONDUCT fire_sound_text = "a loud whoosh of moving air" diff --git a/code/modules/projectiles/guns/projectile/revolver.dm b/code/modules/projectiles/guns/projectile/revolver.dm index 48ae9a2432..cc77625c0d 100644 --- a/code/modules/projectiles/guns/projectile/revolver.dm +++ b/code/modules/projectiles/guns/projectile/revolver.dm @@ -5,14 +5,22 @@ caliber = "357" origin_tech = "combat=2;materials=2" + eject_casings = 0 max_shells = 7 ammo_type = /obj/item/ammo_casing/a357 +/obj/item/weapon/gun/projectile/revolver/mateba + name = "mateba" + desc = "When you absolutely, positively need a 10mm hole in the other guy. Uses .357 ammo." //>10mm hole >.357 + icon_state = "mateba" + origin_tech = "combat=2;materials=2" + /obj/item/weapon/gun/projectile/detective name = "revolver" desc = "A cheap Martian knock-off of a Smith & Wesson Model 10. Uses .38-Special rounds." icon_state = "detective" max_shells = 6 + eject_casings = 0 caliber = "38" origin_tech = "combat=2;materials=2" ammo_type = /obj/item/ammo_casing/c38 @@ -84,6 +92,7 @@ desc = "A cheap Martian knock-off of a Colt M1911. Uses less-than-lethal .45 rounds." icon_state = "colt" caliber = ".45" + eject_casings = 1 load_method = MAGAZINE magazine_type = /obj/item/ammo_magazine/c45m/rubber @@ -96,13 +105,6 @@ desc = "A cheap Martian knock-off of a Colt M1911." magazine_type = /obj/item/ammo_magazine/c45m -/obj/item/weapon/gun/projectile/revolver/mateba - name = "mateba" - desc = "When you absolutely, positively need a 10mm hole in the other guy. Uses .357 ammo." //>10mm hole >.357 - icon_state = "mateba" - origin_tech = "combat=2;materials=2" - - // A gun to play Russian Roulette! // You can spin the chamber to randomize the position of the bullet. /* diff --git a/code/modules/projectiles/guns/projectile/shotgun.dm b/code/modules/projectiles/guns/projectile/shotgun.dm index c23acfa129..a75f3c9310 100644 --- a/code/modules/projectiles/guns/projectile/shotgun.dm +++ b/code/modules/projectiles/guns/projectile/shotgun.dm @@ -16,9 +16,6 @@ var/pumped = 0 var/obj/item/ammo_casing/current_shell = null -/obj/item/weapon/gun/projectile/shotgun/pump/isHandgun() - return 0 - /obj/item/weapon/gun/projectile/shotgun/pump/load_into_chamber() if(in_chamber) return 1 @@ -66,6 +63,7 @@ //SPEEDLOADER because rapid unloading. //In principle someone could make a speedloader for it, so it makes sense. load_method = SINGLE_CASING|SPEEDLOADER + eject_casings = 0 max_shells = 2 w_class = 4 force = 10 @@ -90,7 +88,7 @@ w_class = 3 item_state = "gun" slot_flags &= ~SLOT_BACK //you can't sling it on your back - slot_flags |= SLOT_BELT //but you can wear it on your belt (poorly concealed under a trenchcoat, ideally) + slot_flags |= SLOT_BELT|SLOT_HOLSTER //but you can wear it on your belt (poorly concealed under a trenchcoat, ideally), or in a holster, why not. name = "sawn-off shotgun" desc = "Omar's coming!" user << "You shorten the barrel of \the [src]!" diff --git a/code/modules/reagents/reagent_containers/food/snacks/grown.dm b/code/modules/reagents/reagent_containers/food/snacks/grown.dm index b57a4d5562..c59a5f9f7c 100644 --- a/code/modules/reagents/reagent_containers/food/snacks/grown.dm +++ b/code/modules/reagents/reagent_containers/food/snacks/grown.dm @@ -337,6 +337,7 @@ icon = 'icons/obj/items.dmi' icon_state = "banana" item_state = "banana" + slot_flags = SLOT_HOLSTER filling_color = "#FCF695" trash = /obj/item/weapon/bananapeel plantname = "banana" diff --git a/code/setup.dm b/code/setup.dm index e1b8b6695b..e64947838b 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -166,6 +166,7 @@ #define SLOT_DENYPOCKET 4096 // This is to deny items with a w_class of 2 or 1 from fitting in pockets. #define SLOT_TWOEARS 8192 #define SLOT_TIE 16384 +#define SLOT_HOLSTER 32768 //16th bit // Flags bitmasks. #define STOPPRESSUREDAMAGE 1 // This flag is used on the flags variable for SUIT and HEAD items which stop pressure damage. Note that the flag 1 was previous used as ONBACK, so it is possible for some code to use (flags & 1) when checking if something can be put on your back. Replace this code with (inv_flags & SLOT_BACK) if you see it anywhere From 1b35d5d53d086cdfef4e12e414c43e557b807e12 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 9 Feb 2015 21:25:57 -0500 Subject: [PATCH 08/45] Adds option for projectile guns to cycle casings --- code/modules/projectiles/guns/projectile.dm | 29 ++++++++++++++++----- 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/code/modules/projectiles/guns/projectile.dm b/code/modules/projectiles/guns/projectile.dm index fa17c0e67b..1bcc32a2c6 100644 --- a/code/modules/projectiles/guns/projectile.dm +++ b/code/modules/projectiles/guns/projectile.dm @@ -8,6 +8,7 @@ matter = list("metal" = 1000) recoil = 1 + var/eject_casings = 1 //experimental: for guns that don't eject casings, like revolvers. var/load_method = SINGLE_CASING|SPEEDLOADER //1 = Single shells, 2 = box or quick loader, 3 = magazine //For SINGLE_CASING or SPEEDLOADER guns @@ -45,10 +46,19 @@ ammo_magazine.stored_ammo -= C if(istype(C)) - C.loc = get_turf(src) //Eject casing onto ground. + if(eject_casings) + C.loc = get_turf(src) //Eject casing onto ground. + else + //cycle it to the end + if(ammo_magazine) + ammo_magazine.stored_ammo += C + else + loaded += C + if(C.BB) in_chamber = C.BB C.BB.loc = src //Set projectile loc to gun. + C.BB = null return 1 return 0 @@ -63,12 +73,16 @@ switch(AM.mag_type) if(MAGAZINE) if(ammo_magazine) - return //already a magazine here + user << "[src] already has a magazine loaded!" //already a magazine here + return user.remove_from_mob(AM) AM.loc = src ammo_magazine = AM user.visible_message("[user] inserts [AM] into [src].", "You insert [AM] into [src]!") if(SPEEDLOADER) + if(loaded.len >= max_shells) + user << "[src] is full!" + return var/count = 0 for(var/obj/item/ammo_casing/C in AM.stored_ammo) if(loaded.len >= max_shells) @@ -86,12 +100,15 @@ else if(istype(A, /obj/item/ammo_casing)) var/obj/item/ammo_casing/C = A - if(!(load_method & SINGLE_CASING) || caliber != C.caliber || loaded.len >= max_shells) - return //incompatible or full + if(!(load_method & SINGLE_CASING) || caliber != C.caliber) + return //incompatible + if(loaded.len >= max_shells) + user << "[src] is full!" + return user.remove_from_mob(C) C.loc = src - loaded += C + loaded.Insert(C, 1) //add to the head of the list user.visible_message("[user] inserts \a [C] into [src].", "You insert \a [C] into [src]!") update_icon() return @@ -125,7 +142,7 @@ update_icon() else - user << "There's nothing loaded in [src]!" + user << "[src] is empty!" /obj/item/weapon/gun/projectile/attackby(var/obj/item/A as obj, mob/user as mob) load_ammo(A, user) From 2e6a0f4ebbf0b08bc67fa26e0bc7f62f6faaeb4b Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 9 Feb 2015 22:46:00 -0500 Subject: [PATCH 09/45] Adjusts some gun force values Gave some of the heavier looking weapons the same force value as the shotgun. --- code/modules/projectiles/guns/energy/laser.dm | 1 + code/modules/projectiles/guns/energy/nuclear.dm | 1 + code/modules/projectiles/guns/energy/special.dm | 2 ++ code/modules/projectiles/guns/projectile/automatic.dm | 2 ++ 4 files changed, 6 insertions(+) diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm index c86fed89dc..24a3bb1541 100644 --- a/code/modules/projectiles/guns/energy/laser.dm +++ b/code/modules/projectiles/guns/energy/laser.dm @@ -6,6 +6,7 @@ fire_sound = 'sound/weapons/Laser.ogg' slot_flags = SLOT_BELT|SLOT_BACK w_class = 3.0 + force = 10 //it has a stock, might as well give some kind of perk over the egun matter = list("metal" = 2000) origin_tech = "combat=3;magnets=2" projectile_type = /obj/item/projectile/beam diff --git a/code/modules/projectiles/guns/energy/nuclear.dm b/code/modules/projectiles/guns/energy/nuclear.dm index 678f18bc01..8047a94784 100644 --- a/code/modules/projectiles/guns/energy/nuclear.dm +++ b/code/modules/projectiles/guns/energy/nuclear.dm @@ -41,6 +41,7 @@ icon_state = "nucgun" origin_tech = "combat=3;materials=5;powerstorage=3" slot_flags = SLOT_BELT + force = 8 var/lightfail = 0 var/charge_tick = 0 diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index eeb3511fe4..df36de84fb 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -5,6 +5,7 @@ fire_sound = 'sound/weapons/Laser.ogg' origin_tech = "combat=2;magnets=4" w_class = 4.0 + force = 10 flags = CONDUCT slot_flags = SLOT_BACK charge_cost = 100 @@ -227,6 +228,7 @@ obj/item/weapon/gun/energy/staff/focus slot_flags = SLOT_BACK charge_cost = 250 fire_delay = 35 + force = 10 w_class = 4 zoomdevicename = "scope" diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm index 854f4ada20..4500f2be2d 100644 --- a/code/modules/projectiles/guns/projectile/automatic.dm +++ b/code/modules/projectiles/guns/projectile/automatic.dm @@ -31,6 +31,7 @@ icon_state = "c20r" item_state = "c20r" w_class = 3 + force = 10 caliber = "12mm" origin_tech = "combat=5;materials=2;syndicate=8" slot_flags = SLOT_BELT|SLOT_BACK @@ -58,6 +59,7 @@ icon_state = "l6closed100" item_state = "l6closedmag" w_class = 4 + force = 10 slot_flags = 0 max_shells = 50 caliber = "a762" From 7ccd78baa7986661d939f0e93f35d56bb875be81 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 9 Feb 2015 23:27:10 -0500 Subject: [PATCH 10/45] Makes non-edge damage sources less likely to delimb Notably, shotgun slugs are no longer capable of automatic decapitation --- code/modules/organs/organ_external.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index b45d0aafa7..25e12ebfbf 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -159,7 +159,7 @@ //If limb took enough damage, try to cut or tear it off if(body_part != UPPER_TORSO && body_part != LOWER_TORSO) //as hilarious as it is, getting hit on the chest too much shouldn't effectively gib you. if(config.limbs_can_break && brute_dam >= max_damage * config.organ_health_multiplier) - if( (edge && prob(5 * brute)) || (brute > 20 && prob(2 * brute)) ) + if( (edge && prob(5 * brute)) || (brute > 20 && prob(brute)) ) droplimb(1) return From 611a42bb330ee8437e064affd87eace2fd3e18d3 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Sat, 7 Feb 2015 17:00:52 -0500 Subject: [PATCH 11/45] Gun cleanup and rewrite Rewrites gun.dm. Reorganizes the firing procedure into logical procs and cleans up some unnecessary variables or demotes them to the subtypes that actually care. Energy weapons that create their own projectiles no longer care about in_chamber. Launcher support is much more natural now. Cleans up duplicated cyborg energy weapon power supply code. Adds support for energy weapons to recharge from external power sources, unifying cyborg and hardsuit mounted weapons. Incorporates the cyborg taser recharging mechanism. Cleans up laser tag gun duplication Changes path strings to actual paths. Changes relative paths to absolute paths. Renamed several targeting vars to make their purposes more clear. Fixed targeting not handling firing correctly for certain subtypes. --- baystation12.dme | 1 - code/_onclick/hud/monkey.dm | 2 +- code/_onclick/hud/robot.dm | 2 +- code/game/machinery/bots/ed209bot.dm | 8 +- code/game/machinery/bots/secbot.dm | 4 +- code/game/machinery/portable_tag_turret.dm | 20 +- code/game/machinery/portable_turret.dm | 2 +- .../objects/items/robot/robot_upgrades.dm | 2 +- .../crates_lockers/closets/fitness.dm | 8 +- .../spacesuits/rig/modules/rig_weapons.dm | 51 --- code/modules/clothing/suits/armor.dm | 4 - code/modules/clothing/suits/miscellaneous.dm | 4 +- code/modules/clothing/under/ties.dm | 7 - .../mob/living/silicon/robot/robot_modules.dm | 10 +- .../living/silicon/robot/robot_upgrades.dm | 2 +- code/modules/projectiles/gun.dm | 315 +++++++++--------- code/modules/projectiles/guns/alien.dm | 24 +- code/modules/projectiles/guns/energy.dm | 92 +++-- code/modules/projectiles/guns/energy/laser.dm | 153 ++------- .../projectiles/guns/energy/nuclear.dm | 186 +++++------ code/modules/projectiles/guns/energy/pulse.dm | 73 ++-- .../projectiles/guns/energy/special.dm | 131 ++------ code/modules/projectiles/guns/energy/stun.dm | 68 +--- .../projectiles/guns/energy/temperature.dm | 116 ++++--- code/modules/projectiles/guns/projectile.dm | 38 ++- .../projectiles/guns/projectile/automatic.dm | 8 +- .../projectiles/guns/projectile/crossbow.dm | 55 +-- .../projectiles/guns/projectile/launcher.dm | 83 +---- .../projectiles/guns/projectile/pneumatic.dm | 44 +-- .../projectiles/guns/projectile/revolver.dm | 8 +- .../projectiles/guns/projectile/rocket.dm | 34 +- .../projectiles/guns/projectile/shotgun.dm | 29 +- code/modules/projectiles/projectile.dm | 30 +- code/modules/projectiles/targeting.dm | 107 +++--- 34 files changed, 697 insertions(+), 1024 deletions(-) delete mode 100644 code/modules/clothing/spacesuits/rig/modules/rig_weapons.dm diff --git a/baystation12.dme b/baystation12.dme index 82506f8bed..79362c1e91 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -871,7 +871,6 @@ #include "code\modules\clothing\spacesuits\rig\modules\computer.dm" #include "code\modules\clothing\spacesuits\rig\modules\modules.dm" #include "code\modules\clothing\spacesuits\rig\modules\ninja.dm" -#include "code\modules\clothing\spacesuits\rig\modules\rig_weapons.dm" #include "code\modules\clothing\spacesuits\rig\modules\utility.dm" #include "code\modules\clothing\spacesuits\rig\modules\vision.dm" #include "code\modules\clothing\spacesuits\rig\suits\alien.dm" diff --git a/code/_onclick/hud/monkey.dm b/code/_onclick/hud/monkey.dm index 65924284b5..0081fbe6b5 100644 --- a/code/_onclick/hud/monkey.dm +++ b/code/_onclick/hud/monkey.dm @@ -226,7 +226,7 @@ if (mymob.client.gun_mode) // If in aim mode, correct the sprite mymob.gun_setting_icon.set_dir(2) for(var/obj/item/weapon/gun/G in mymob) // If targeting someone, display other buttons - if (G.target) + if (G.aim_targets) mymob.item_use_icon = new /obj/screen/gun/item(null) if (mymob.client.target_can_click) mymob.item_use_icon.set_dir(1) diff --git a/code/_onclick/hud/robot.dm b/code/_onclick/hud/robot.dm index 644b811376..2738cf3a7d 100644 --- a/code/_onclick/hud/robot.dm +++ b/code/_onclick/hud/robot.dm @@ -157,7 +157,7 @@ var/obj/screen/robot_inventory if (mymob.client.gun_mode) // If in aim mode, correct the sprite mymob.gun_setting_icon.set_dir(2) for(var/obj/item/weapon/gun/G in mymob) // If targeting someone, display other buttons - if (G.target) + if (G.aim_targets) mymob.item_use_icon = new /obj/screen/gun/item(null) if (mymob.client.target_can_click) mymob.item_use_icon.set_dir(1) diff --git a/code/game/machinery/bots/ed209bot.dm b/code/game/machinery/bots/ed209bot.dm index 24e29e2839..639da55bf5 100644 --- a/code/game/machinery/bots/ed209bot.dm +++ b/code/game/machinery/bots/ed209bot.dm @@ -34,10 +34,10 @@ var/obj/item/weapon/gun/energy/taser/G = new /obj/item/weapon/gun/energy/taser(Tsec) G.power_supply.charge = 0 else if(lasercolor == "b") - var/obj/item/weapon/gun/energy/laser/bluetag/G = new /obj/item/weapon/gun/energy/laser/bluetag(Tsec) + var/obj/item/weapon/gun/energy/lasertag/blue/G = new (Tsec) G.power_supply.charge = 0 else if(lasercolor == "r") - var/obj/item/weapon/gun/energy/laser/redtag/G = new /obj/item/weapon/gun/energy/laser/redtag(Tsec) + var/obj/item/weapon/gun/energy/lasertag/red/G = new (Tsec) G.power_supply.charge = 0 if (prob(50)) new /obj/item/robot_parts/l_leg(Tsec) @@ -137,11 +137,11 @@ if(7) switch(lasercolor) if("b") - if( !istype(W, /obj/item/weapon/gun/energy/laser/bluetag) ) + if( !istype(W, /obj/item/weapon/gun/energy/lasertag/blue) ) return name = "bluetag ED-209 assembly" if("r") - if( !istype(W, /obj/item/weapon/gun/energy/laser/redtag) ) + if( !istype(W, /obj/item/weapon/gun/energy/lasertag/red) ) return name = "redtag ED-209 assembly" if("") diff --git a/code/game/machinery/bots/secbot.dm b/code/game/machinery/bots/secbot.dm index 1dcc02fbb9..6aa43c1b39 100644 --- a/code/game/machinery/bots/secbot.dm +++ b/code/game/machinery/bots/secbot.dm @@ -702,10 +702,10 @@ Auto Patrol: []"}, switch(lasercolor) if("b") target_suit = /obj/item/clothing/suit/redtag - target_weapon = /obj/item/weapon/gun/energy/laser/redtag + target_weapon = /obj/item/weapon/gun/energy/lasertag/red if("r") target_suit = /obj/item/clothing/suit/bluetag - target_weapon = /obj/item/weapon/gun/energy/laser/bluetag + target_weapon = /obj/item/weapon/gun/energy/lasertag/blue if((istype(perp.r_hand, target_weapon)) || (istype(perp.l_hand, target_weapon))) threat += 4 diff --git a/code/game/machinery/portable_tag_turret.dm b/code/game/machinery/portable_tag_turret.dm index 13f7032aa3..c9c2331e6d 100644 --- a/code/game/machinery/portable_tag_turret.dm +++ b/code/game/machinery/portable_tag_turret.dm @@ -5,13 +5,13 @@ /obj/machinery/porta_turret/tag // Reasonable defaults, in case someone manually spawns us var/lasercolor = "r" //Something to do with lasertag turrets, blame Sieve for not adding a comment. - installation = /obj/item/weapon/gun/energy/laser/redtag + installation = /obj/item/weapon/gun/energy/lasertag/red /obj/machinery/porta_turret/tag/red /obj/machinery/porta_turret/tag/blue lasercolor = "b" - installation = /obj/item/weapon/gun/energy/laser/bluetag + installation = /obj/item/weapon/gun/energy/lasertag/blue /obj/machinery/porta_turret/tag/New() ..() @@ -19,8 +19,8 @@ /obj/machinery/porta_turret/tag/weapon_setup(var/obj/item/weapon/gun/energy/E) switch(E.type) - if(/obj/item/weapon/gun/energy/laser/bluetag) - eprojectile = /obj/item/weapon/gun/energy/laser/bluetag + if(/obj/item/weapon/gun/energy/lasertag/blue) + eprojectile = /obj/item/weapon/gun/energy/lasertag/blue lasercolor = "b" req_access = list(access_maint_tunnels, access_theatre) check_arrest = 0 @@ -30,8 +30,8 @@ check_anomalies = 0 shot_delay = 30 - if(/obj/item/weapon/gun/energy/laser/redtag) - eprojectile = /obj/item/weapon/gun/energy/laser/redtag + if(/obj/item/weapon/gun/energy/lasertag/red) + eprojectile = /obj/item/weapon/gun/energy/lasertag/red lasercolor = "r" req_access = list(access_maint_tunnels, access_theatre) check_arrest = 0 @@ -86,13 +86,13 @@ ..() if(lasercolor == "b" && disabled == 0) - if(istype(Proj, /obj/item/weapon/gun/energy/laser/redtag)) + if(istype(Proj, /obj/item/weapon/gun/energy/lasertag/red)) disabled = 1 del(Proj) // qdel sleep(100) disabled = 0 if(lasercolor == "r" && disabled == 0) - if(istype(Proj, /obj/item/weapon/gun/energy/laser/bluetag)) + if(istype(Proj, /obj/item/weapon/gun/energy/lasertag/blue)) disabled = 1 del(Proj) // qdel sleep(100) @@ -110,10 +110,10 @@ switch(lasercolor) if("b") target_suit = /obj/item/clothing/suit/redtag - target_weapon = /obj/item/weapon/gun/energy/laser/redtag + target_weapon = /obj/item/weapon/gun/energy/lasertag/red if("r") target_suit = /obj/item/clothing/suit/bluetag - target_weapon = /obj/item/weapon/gun/energy/laser/bluetag + target_weapon = /obj/item/weapon/gun/energy/lasertag/blue if(target_suit)//Lasertag turrets target the opposing team, how great is that? -Sieve diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm index c531e53f96..a2dda1e400 100644 --- a/code/game/machinery/portable_turret.dm +++ b/code/game/machinery/portable_turret.dm @@ -733,7 +733,7 @@ gun_charge = E.power_supply.charge //the gun's charge is stored in gun_charge user << "You add [I] to the turret." - if(istype(installation, /obj/item/weapon/gun/energy/laser/bluetag) || istype(installation, /obj/item/weapon/gun/energy/laser/redtag)) + if(istype(installation, /obj/item/weapon/gun/energy/lasertag/blue) || istype(installation, /obj/item/weapon/gun/energy/lasertag/red)) target_type = /obj/machinery/porta_turret/tag else target_type = /obj/machinery/porta_turret diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index f9d3e356ce..9bc40c779d 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -121,7 +121,7 @@ usr << "There's no mounting point for the module!" return 0 - var/obj/item/weapon/gun/energy/taser/cyborg/T = locate() in R.module + var/obj/item/weapon/gun/energy/taser/mounted/cyborg/T = locate() in R.module if(!T) T = locate() in R.module.contents if(!T) diff --git a/code/game/objects/structures/crates_lockers/closets/fitness.dm b/code/game/objects/structures/crates_lockers/closets/fitness.dm index 05e7968a93..b42fe3f950 100644 --- a/code/game/objects/structures/crates_lockers/closets/fitness.dm +++ b/code/game/objects/structures/crates_lockers/closets/fitness.dm @@ -54,8 +54,8 @@ /obj/structure/closet/lasertag/red/New() ..() - new /obj/item/weapon/gun/energy/laser/redtag(src) - new /obj/item/weapon/gun/energy/laser/redtag(src) + new /obj/item/weapon/gun/energy/lasertag/red(src) + new /obj/item/weapon/gun/energy/lasertag/red(src) new /obj/item/clothing/suit/redtag(src) new /obj/item/clothing/suit/redtag(src) @@ -68,7 +68,7 @@ /obj/structure/closet/lasertag/blue/New() ..() - new /obj/item/weapon/gun/energy/laser/bluetag(src) - new /obj/item/weapon/gun/energy/laser/bluetag(src) + new /obj/item/weapon/gun/energy/lasertag/blue(src) + new /obj/item/weapon/gun/energy/lasertag/blue(src) new /obj/item/clothing/suit/bluetag(src) new /obj/item/clothing/suit/bluetag(src) diff --git a/code/modules/clothing/spacesuits/rig/modules/rig_weapons.dm b/code/modules/clothing/spacesuits/rig/modules/rig_weapons.dm deleted file mode 100644 index 792a6ed0d0..0000000000 --- a/code/modules/clothing/spacesuits/rig/modules/rig_weapons.dm +++ /dev/null @@ -1,51 +0,0 @@ -//Weapon types intended to be used with rig modules - -/obj/item/weapon/gun/energy/lasercannon/mounted/load_into_chamber() - if(in_chamber) - return 1 - var/obj/item/rig_module/module = loc - if(!istype(module)) - return 0 - if(module.holder && module.holder.wearer) - var/mob/living/carbon/human/H = module.holder.wearer - if(istype(H) && H.back) - var/obj/item/weapon/rig/suit = H.back - if(istype(suit) && suit.cell && suit.cell.charge >= 250) - suit.cell.use(250) - in_chamber = new /obj/item/projectile/beam/heavylaser(src) - return 1 - return 0 - -/obj/item/weapon/gun/energy/gun/mounted/load_into_chamber() - if(in_chamber) - return 1 - var/obj/item/rig_module/module = loc - if(!istype(module)) - return 0 - if(module.holder && module.holder.wearer) - var/mob/living/carbon/human/H = module.holder.wearer - if(istype(H) && H.back) - var/obj/item/weapon/rig/suit = H.back - if(istype(suit) && suit.cell && suit.cell.charge >= 250) - suit.cell.use(250) - var/prog_path = projectile_type - in_chamber = new prog_path(src) - return 1 - return 0 - -/obj/item/weapon/gun/energy/taser/mounted/load_into_chamber() - if(in_chamber) - return 1 - var/obj/item/rig_module/module = loc - if(!istype(module)) - return 0 - if(module.holder && module.holder.wearer) - var/mob/living/carbon/human/H = module.holder.wearer - if(istype(H) && H.back) - var/obj/item/weapon/rig/suit = H.back - if(istype(suit) && suit.cell && suit.cell.charge >= 250) - suit.cell.use(250) - var/prog_path = projectile_type - in_chamber = new prog_path(src) - return 1 - return 0 \ No newline at end of file diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index 6a5dd04cb6..3cb5460185 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -208,10 +208,6 @@ if(!istype(usr.get_active_hand(), /obj/item/weapon/gun)) usr << "\blue You need your gun equiped to holster it." return - var/obj/item/weapon/gun/W = usr.get_active_hand() - if (!W.isHandgun()) - usr << "\red This gun won't fit in \the belt!" - return holstered = usr.get_active_hand() usr.drop_item() holstered.loc = src diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index 09e67ea871..bcca81141c 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -15,7 +15,7 @@ item_state = "bluetag" blood_overlay_type = "armor" body_parts_covered = UPPER_TORSO - allowed = list (/obj/item/weapon/gun/energy/laser/bluetag) + allowed = list (/obj/item/weapon/gun/energy/lasertag/blue) siemens_coefficient = 3.0 /obj/item/clothing/suit/redtag @@ -25,7 +25,7 @@ item_state = "redtag" blood_overlay_type = "armor" body_parts_covered = UPPER_TORSO - allowed = list (/obj/item/weapon/gun/energy/laser/redtag) + allowed = list (/obj/item/weapon/gun/energy/lasertag/red) siemens_coefficient = 3.0 /* diff --git a/code/modules/clothing/under/ties.dm b/code/modules/clothing/under/ties.dm index 050a2716e0..798536651f 100644 --- a/code/modules/clothing/under/ties.dm +++ b/code/modules/clothing/under/ties.dm @@ -199,10 +199,6 @@ item_color = "holster" var/obj/item/weapon/gun/holstered = null -//subtypes can override this to specify what can be holstered -/obj/item/clothing/tie/holster/proc/can_holster(obj/item/weapon/gun/W) - return W.isHandgun() - /obj/item/clothing/tie/holster/proc/holster(obj/item/I, mob/user as mob) if(holstered) user << "\red There is already a [holstered] holstered here!" @@ -213,9 +209,6 @@ return var/obj/item/weapon/gun/W = I - if (!can_holster(W)) - user << "\red This [W] won't fit in the [src]!" - return holstered = W user.drop_from_inventory(holstered) diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index 3458a5bb47..9f213ad7e5 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -223,9 +223,9 @@ src.modules += new /obj/item/borg/sight/hud/sec(src) src.modules += new /obj/item/weapon/handcuffs/cyborg(src) src.modules += new /obj/item/weapon/melee/baton/robot(src) - src.modules += new /obj/item/weapon/gun/energy/taser/cyborg(src) + src.modules += new /obj/item/weapon/gun/energy/taser/mounted/cyborg(src) src.modules += new /obj/item/taperoll/police(src) - src.emag = new /obj/item/weapon/gun/energy/laser/cyborg(src) + src.emag = new /obj/item/weapon/gun/energy/laser/mounted(src) return /obj/item/weapon/robot_module/security/respawn_consumable(var/mob/living/silicon/robot/R) @@ -236,7 +236,7 @@ F.icon_state = "flash" else if(F.times_used) F.times_used-- - var/obj/item/weapon/gun/energy/taser/cyborg/T = locate() in src.modules + var/obj/item/weapon/gun/energy/taser/mounted/cyborg/T = locate() in src.modules if(T.power_supply.charge < T.power_supply.maxcharge) T.power_supply.give(T.charge_cost) T.update_icon() @@ -383,11 +383,11 @@ ..() src.modules += new /obj/item/device/flash(src) src.modules += new /obj/item/borg/sight/thermal(src) - src.modules += new /obj/item/weapon/gun/energy/laser/cyborg(src) + src.modules += new /obj/item/weapon/gun/energy/laser/mounted(src) src.modules += new /obj/item/weapon/pickaxe/plasmacutter(src) src.modules += new /obj/item/borg/combat/shield(src) src.modules += new /obj/item/borg/combat/mobility(src) - src.emag = new /obj/item/weapon/gun/energy/lasercannon/cyborg(src) + src.emag = new /obj/item/weapon/gun/energy/lasercannon/mounted(src) return /obj/item/weapon/robot_module/drone diff --git a/code/modules/mob/living/silicon/robot/robot_upgrades.dm b/code/modules/mob/living/silicon/robot/robot_upgrades.dm index 71f22a3029..a6d08bd534 100644 --- a/code/modules/mob/living/silicon/robot/robot_upgrades.dm +++ b/code/modules/mob/living/silicon/robot/robot_upgrades.dm @@ -108,7 +108,7 @@ usr << "There's no mounting point for the module!" return 0 - var/obj/item/weapon/gun/energy/taser/cyborg/T = locate() in R.module + var/obj/item/weapon/gun/energy/taser/mounted/cyborg/T = locate() in R.module if(!T) T = locate() in R.module.contents if(!T) diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index f4bc1175d5..6402e6d944 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -1,3 +1,4 @@ +//Parent gun type. Guns are weapons that can be aimed at mobs and act over a distance /obj/item/weapon/gun name = "gun" desc = "Its a gun. It's pretty terrible, though." @@ -7,57 +8,74 @@ flags = CONDUCT slot_flags = SLOT_BELT matter = list("metal" = 2000) - w_class = 3.0 + w_class = 3 throwforce = 5 throw_speed = 4 throw_range = 5 - force = 5.0 + force = 5 origin_tech = "combat=1" attack_verb = list("struck", "hit", "bashed") - var/fire_sound = 'sound/weapons/Gunshot.ogg' - var/obj/item/projectile/in_chamber = null - var/caliber = "" - var/silenced = 0 - var/recoil = 0 - var/ejectshell = 1 - var/clumsy_check = 1 - var/tmp/list/mob/living/target //List of who yer targeting. - var/tmp/lock_time = -100 - var/tmp/mouthshoot = 0 ///To stop people from suiciding twice... >.> - var/automatic = 0 //Used to determine if you can target multiple people. - var/tmp/mob/living/last_moved_mob //Used to fire faster at more than one person. - var/tmp/told_cant_shoot = 0 //So that it doesn't spam them with the fact they cannot hit them. - var/firerate = 0 //0 for keep shooting until aim is lowered - // 1 for one bullet after tarrget moves and aim is lowered var/fire_delay = 6 + var/fire_sound = 'sound/weapons/Gunshot.ogg' + var/fire_sound_text = "gunshot" + var/recoil = 0 //screen shake + var/silenced = 0 + var/last_fired = 0 - proc/ready_to_fire() - if(world.time >= last_fired + fire_delay) - last_fired = world.time - return 1 - else - return 0 + //aiming system stuff + var/keep_aim = 1 //1 for keep shooting until aim is lowered + //0 for one bullet after tarrget moves and aim is lowered + var/multi_aim = 0 //Used to determine if you can target multiple people. + var/tmp/list/mob/living/aim_targets //List of who yer targeting. + var/tmp/mob/living/last_moved_mob //Used to fire faster at more than one person. + var/tmp/told_cant_shoot = 0 //So that it doesn't spam them with the fact they cannot hit them. + var/tmp/lock_time = -100 - proc/load_into_chamber() +//Returns 1 if the gun is able to be fired +/obj/item/weapon/gun/proc/ready_to_fire() + if(world.time >= last_fired + fire_delay) + last_fired = world.time + return 1 + else return 0 - proc/special_check(var/mob/M) //Placeholder for any special checks, like detective's revolver. - return 1 +//Checks whether a given mob can use the gun +/obj/item/weapon/gun/proc/special_check(var/mob/user) + if(!istype(user, /mob/living)) + return 0 + if(!user.IsAdvancedToolUser()) + return 0 + + var/mob/living/M = user + + if(HULK in M.mutations) + M << "Your fingers are much too large for the trigger guard!" + return 0 + if((CLUMSY in M.mutations) && prob(40) && can_fire()) //Clumsy handling + var/obj/in_chamber = get_next_projectile() + if(in_chamber) + if(process_projectile(in_chamber, user, user, pick("l_foot", "r_foot"))) + handle_post_fire(user, user) + user.visible_message( + "[user] shoots \himself in the foot with \the [src]!", + "You shoot yourself in the foot with \the [src]!" + ) + M.drop_item() + return 0 + return 1 - emp_act(severity) - for(var/obj/O in contents) - O.emp_act(severity) - -/obj/item/weapon/gun/afterattack(atom/A as mob|obj|turf|area, mob/living/user as mob|obj, flag, params) - if(flag) return //It's adjacent, is the user, or is on the user's person - if(istype(target, /obj/machinery/recharger) && istype(src, /obj/item/weapon/gun/energy)) return//Shouldnt flag take care of this? +/obj/item/weapon/gun/emp_act(severity) + for(var/obj/O in contents) + O.emp_act(severity) +/obj/item/weapon/gun/afterattack(atom/A, mob/living/user, adjacent, params) + if(adjacent) return //A is adjacent, is the user, or is on the user's person //decide whether to aim or shoot normally var/aiming = 0 - if(user && user.client && !(A in target)) + if(user && user.client && !(A in aim_targets)) var/client/C = user.client //If help intent is on and we have clicked on an eligible target, switch to aim mode automatically if(user.a_intent == "help" && isliving(A) && !C.gun_mode) @@ -72,30 +90,16 @@ else Fire(A,user,params) //Otherwise, fire normally. -/obj/item/weapon/gun/proc/isHandgun() - return 1 +/obj/item/weapon/gun/attack(atom/A, mob/living/user, def_zone) + if (A == user && user.zone_sel.selecting == "mouth" && !mouthshoot) + handle_suicide(user) + else if(user.a_intent == "hurt") //point blank shooting + Fire(A, user, pointblank=1) + else + return ..() //Pistolwhippin' -/obj/item/weapon/gun/proc/Fire(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, params, reflex = 0)//TODO: go over this - //Exclude lasertag guns from the CLUMSY check. - if(!user) return - - if(clumsy_check) - if(istype(user, /mob/living)) - var/mob/living/M = user - if ((CLUMSY in M.mutations) && prob(50)) - M << "[src] blows up in your face." - M.take_organ_damage(0,20) - M.drop_item() - del(src) - return - - if (!user.IsAdvancedToolUser()) - return - if(istype(user, /mob/living)) - var/mob/living/M = user - if (HULK in M.mutations) - M << "Your fingers are much too large for the trigger guard!" - return +/obj/item/weapon/gun/proc/Fire(atom/target, mob/living/user, params, pointblank=0, reflex=0) + if(!user || !target) return add_fingerprint(user) @@ -107,22 +111,70 @@ user << "[src] is not ready to fire again!" return - if(!load_into_chamber()) //CHECK - return click_empty(user) - + var/obj/in_chamber = get_next_projectile() if(!in_chamber) + handle_click_empty(user) return + user.next_move = world.time + 4 + + if(process_projectile(in_chamber, user, target, user.zone_sel.selecting, params, pointblank, reflex)) + handle_post_fire(user, target, pointblank, reflex) + + update_icon() + if(user.hand) + user.update_inv_l_hand() + else + user.update_inv_r_hand() + + +//returns the next projectile to fire +/obj/item/weapon/gun/proc/get_next_projectile() + return null + +//TODO integrate this with gun code better. +//TODO maybe provide user so that subtypes can emit messages if they want? +/obj/item/weapon/gun/proc/can_fire() + return 0 + +//used by aiming code +/obj/item/weapon/gun/proc/can_hit(atom/target as mob, var/mob/living/user as mob) + if(!special_check(user)) + return 2 + return 0 //in_chamber.check_fire(target,user) + +//called if there was no projectile to shoot +/obj/item/weapon/gun/proc/handle_click_empty(mob/user) + if (user) + user.visible_message("*click click*", "*click*") + else + src.visible_message("*click click*") + playsound(src.loc, 'sound/weapons/empty.ogg', 100, 1) + +//called after successfully firing +/obj/item/weapon/gun/proc/handle_post_fire(mob/user, atom/target, var/pointblank=0, var/reflex=0) if(silenced) playsound(user, fire_sound, 10, 1) else playsound(user, fire_sound, 50, 1) - user.visible_message("[user] fires [src][reflex ? " by reflex":""]!", \ - "You fire [src][reflex ? "by reflex":""]!", \ - "You hear a [istype(in_chamber, /obj/item/projectile/beam) ? "laser blast" : "gunshot"]!") - - user.next_move = world.time + 4 + user.visible_message( + "[user] fires [src][pointblank ? " point blank at [target]":""][reflex ? " by reflex":""]!", + "You fire [src][reflex ? "by reflex":""]!", + "You hear a [fire_sound_text]!" + ) + if(recoil) + spawn() + shake_camera(user, recoil + 1, recoil) + +//does the actual shooting +/obj/item/weapon/gun/proc/process_projectile(obj/projectile, mob/user, atom/target, var/target_zone, var/params=null, var/pointblank=0, var/reflex=0) + if(!istype(projectile, /obj/item/projectile)) + return 0 //default behaviour only applies to true projectiles + + var/obj/item/projectile/P = projectile + + //shooting while in shock var/x_offset = 0 var/y_offset = 0 if(istype(user, /mob/living/carbon)) @@ -134,101 +186,52 @@ y_offset = rand(-1,1) x_offset = rand(-1,1) - var/p_x - var/p_y + //Point blank bonus + if(pointblank) P.damage *= 1.3 + + //TODO: accuracy modifiers + if(params) - var/list/mouse_control = params2list(params) - if(mouse_control["icon-x"]) - p_x = text2num(mouse_control["icon-x"]) - if(mouse_control["icon-y"]) - p_y = text2num(mouse_control["icon-y"]) + P.set_clickpoint(params) + + return !P.launch(target, user, src, target_zone, x_offset, y_offset) + +//Suicide handling. +/obj/item/weapon/gun/var/mouthshoot = 0 //To stop people from suiciding twice... >.> +/obj/item/weapon/gun/proc/handle_suicide(mob/living/user) + if(!ishuman(user)) + return + var/mob/living/carbon/human/M = user - if(in_chamber) - var/fail = in_chamber.launch( - target = target, - user = user, - launcher = src, - target_zone = user.zone_sel.selecting, - x_offset = x_offset, - y_offset = y_offset, - px = p_x, - py = p_y - ) - - if(fail) return - - if(recoil) - spawn() - shake_camera(user, recoil + 1, recoil) - - sleep(1) - in_chamber = null - - update_icon() - - if(user.hand) - user.update_inv_l_hand() - else - user.update_inv_r_hand() - -/obj/item/weapon/gun/proc/can_fire() - return load_into_chamber() - -/obj/item/weapon/gun/proc/can_hit(var/mob/living/target as mob, var/mob/living/user as mob) - return in_chamber.check_fire(target,user) - -/obj/item/weapon/gun/proc/click_empty(mob/user = null) - if (user) - user.visible_message("*click click*", "\red *click*") - playsound(user, 'sound/weapons/empty.ogg', 100, 1) - else - src.visible_message("*click click*") - playsound(src.loc, 'sound/weapons/empty.ogg', 100, 1) - -/obj/item/weapon/gun/attack(mob/living/M as mob, mob/living/user as mob, def_zone) - //Suicide handling. - if (M == user && user.zone_sel.selecting == "mouth" && !mouthshoot) - mouthshoot = 1 - M.visible_message("\red [user] sticks their gun in their mouth, ready to pull the trigger...") - if(!do_after(user, 40)) - M.visible_message("\blue [user] decided life was worth living") - mouthshoot = 0 - return - if (load_into_chamber()) - user.visible_message("[user] pulls the trigger.") - if(silenced) - playsound(user, fire_sound, 10, 1) - else - playsound(user, fire_sound, 50, 1) - if(istype(in_chamber, /obj/item/projectile/beam/lastertag)) - user.show_message("You feel rather silly, trying to commit suicide with a toy.") - mouthshoot = 0 - return - - in_chamber.on_hit(M) - if (in_chamber.damage_type != HALLOSS) - user.apply_damage(in_chamber.damage*2.5, in_chamber.damage_type, "head", used_weapon = "Point blank shot in the mouth with \a [in_chamber]", sharp=1) - user.death() - else - user << "Ow..." - user.apply_effect(110,AGONY,0) - del(in_chamber) - mouthshoot = 0 - return + mouthshoot = 1 + M.visible_message("\red [user] sticks their gun in their mouth, ready to pull the trigger...") + if(!do_after(user, 40)) + M.visible_message("\blue [user] decided life was worth living") + mouthshoot = 0 + return + var/obj/item/projectile/in_chamber = get_next_projectile() + if (istype(in_chamber)) + user.visible_message("[user] pulls the trigger.") + if(silenced) + playsound(user, fire_sound, 10, 1) else - click_empty(user) + playsound(user, fire_sound, 50, 1) + if(istype(in_chamber, /obj/item/projectile/beam/lastertag)) + user.show_message("You feel rather silly, trying to commit suicide with a toy.") mouthshoot = 0 return - if (load_into_chamber()) - //Point blank shooting if on harm intent or target we were targeting. - if(user.a_intent == "hurt") - user.visible_message("\red \The [user] fires \the [src] point blank at [M]!") - if(istype(in_chamber)) in_chamber.damage *= 1.3 - Fire(M,user) - return - else if(target && M in target) - Fire(M,user) ///Otherwise, shoot! - return + in_chamber.on_hit(M) + if (in_chamber.damage_type != HALLOSS) + user.apply_damage(in_chamber.damage*2.5, in_chamber.damage_type, "head", used_weapon = "Point blank shot in the mouth with \a [in_chamber]", sharp=1) + user.death() + else + user << "Ow..." + user.apply_effect(110,AGONY,0) + del(in_chamber) + mouthshoot = 0 + return else - return ..() //Pistolwhippin' + handle_click_empty(user) + mouthshoot = 0 + return \ No newline at end of file diff --git a/code/modules/projectiles/guns/alien.dm b/code/modules/projectiles/guns/alien.dm index f9af71acc8..c7efc4e3b6 100644 --- a/code/modules/projectiles/guns/alien.dm +++ b/code/modules/projectiles/guns/alien.dm @@ -24,7 +24,6 @@ ..() /obj/item/weapon/gun/launcher/spikethrower/process() - if(spikes < max_spikes && world.time > last_regen + spike_gen_time) spikes++ last_regen = world.time @@ -32,7 +31,7 @@ /obj/item/weapon/gun/launcher/spikethrower/examine(mob/user) ..(user) - user << "It has [spikes] [spikes == 1 ? "spike" : "spikes"] remaining." + user << "It has [spikes] spike\s remaining." /obj/item/weapon/gun/launcher/spikethrower/update_icon() icon_state = "spikethrower[spikes]" @@ -46,21 +45,18 @@ if(H.species && H.species.name != "Vox" && H.species.name != "Vox Armalis") user << "\red \The [src] does not respond to you!" return 0 - return 1 + return ..() /obj/item/weapon/gun/launcher/spikethrower/update_release_force() return -/obj/item/weapon/gun/launcher/spikethrower/load_into_chamber() - if(in_chamber) return 1 - if(spikes < 1) return 0 +/obj/item/weapon/gun/launcher/spikethrower/can_fire() + return (spikes >= 1) +/obj/item/weapon/gun/launcher/spikethrower/get_next_projectile() + if(spikes < 1) return null spikes-- - in_chamber = new /obj/item/weapon/spike(src) - return 1 - -/obj/item/weapon/gun/launcher/spikethrower/Fire(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, params, reflex = 0) - if(..()) update_icon() + return new /obj/item/weapon/spike(src) //This gun only functions for armalis. The on-sprite is too huge to render properly on other sprites. /obj/item/weapon/gun/energy/noisecannon @@ -74,7 +70,7 @@ force = 10 projectile_type = /obj/item/projectile/energy/sonic - cell_type = "/obj/item/weapon/cell/super" + cell_type = /obj/item/weapon/cell/super fire_delay = 40 fire_sound = 'sound/effects/basscannon.ogg' @@ -94,10 +90,6 @@ user << "\red \The [src] is far too large for you to pick up." return -/obj/item/weapon/gun/energy/noisecannon/load_into_chamber() //Does not have ammo. - in_chamber = new projectile_type(src) - return 1 - /obj/item/weapon/gun/energy/noisecannon/update_icon() return diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm index 0ed82e9f4a..e8997ea24f 100644 --- a/code/modules/projectiles/guns/energy.dm +++ b/code/modules/projectiles/guns/energy.dm @@ -3,39 +3,79 @@ desc = "A basic energy-based gun." icon_state = "energy" fire_sound = 'sound/weapons/Taser.ogg' + fire_sound_text = "laser blast" var/obj/item/weapon/cell/power_supply //What type of power cell this uses var/charge_cost = 100 //How much energy is needed to fire. - var/cell_type = "/obj/item/weapon/cell" + var/cell_type = /obj/item/weapon/cell var/projectile_type = /obj/item/projectile/beam/practice var/modifystate + var/charge_meter = 1 //if set, the icon state will be chosen based on the current charge + + //self-recharging + var/self_recharge = 0 //if set, the weapon will recharge itself + var/use_external_power = 0 //if set, the weapon will look for an external power source to draw from, otherwise it recharges magically + var/recharge_time = 4 + var/charge_tick = 0 - emp_act(severity) - power_supply.use(round(power_supply.maxcharge / severity)) - update_icon() - ..() - - - New() - ..() - if(cell_type) - power_supply = new cell_type(src) - else - power_supply = new(src) - power_supply.give(power_supply.maxcharge) - return - - - load_into_chamber() - if(in_chamber) return 1 - if(!power_supply) return 0 - if(!power_supply.use(charge_cost)) return 0 - if(!ispath(projectile_type)) return 0 - in_chamber = new projectile_type(src) - return 1 - - +/obj/item/weapon/gun/energy/emp_act(severity) + power_supply.use(round(power_supply.maxcharge / severity)) update_icon() + ..() + +/obj/item/weapon/gun/energy/New() + ..() + if(cell_type) + power_supply = new cell_type(src) + power_supply.give(power_supply.maxcharge) + if(self_recharge) + processing_objects.Add(src) + +/obj/item/weapon/gun/energy/Del() + if(self_recharge) + processing_objects.Remove(src) + ..() + +/obj/item/weapon/gun/energy/process() + if(self_recharge) //Every [recharge_time] ticks, recharge a shot for the cyborg + charge_tick++ + if(charge_tick < recharge_time) return 0 + charge_tick = 0 + + if(!power_supply || power_supply.charge >= power_supply.maxcharge) + return 0 // check if we actually need to recharge + + if(use_external_power) + var/obj/item/weapon/cell/external = get_external_power_supply() + if(!external || !external.use(charge_cost)) //Take power from the borg... + return 0 + + power_supply.give(charge_cost) //... to recharge the shot + update_icon() + return 1 + +/obj/item/weapon/gun/energy/get_next_projectile() + if(!power_supply) return null + if(!ispath(projectile_type)) return null + if(!power_supply.use(charge_cost)) return null + return new projectile_type(src) + +/obj/item/weapon/gun/energy/proc/get_external_power_supply() + if(isrobot(src.loc)) + var/mob/living/silicon/robot/R = src.loc + return R.cell + if(istype(src.loc, /obj/item/rig_module)) + var/obj/item/rig_module/module = src.loc + if(module.holder && module.holder.wearer) + var/mob/living/carbon/human/H = module.holder.wearer + if(istype(H) && H.back) + var/obj/item/weapon/rig/suit = H.back + if(istype(suit)) + return suit.cell + return null + +/obj/item/weapon/gun/energy/update_icon() + if(charge_meter) var/ratio = power_supply.charge / power_supply.maxcharge ratio = round(ratio, 0.25) * 100 if(modifystate) diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm index 40a4b06689..30e03a6988 100644 --- a/code/modules/projectiles/guns/energy/laser.dm +++ b/code/modules/projectiles/guns/energy/laser.dm @@ -9,84 +9,43 @@ origin_tech = "combat=3;magnets=2" projectile_type = /obj/item/projectile/beam +/obj/item/weapon/gun/energy/laser/mounted + self_recharge = 1 + use_external_power = 1 + /obj/item/weapon/gun/energy/laser/practice name = "practice laser gun" desc = "A modified version of the basic laser gun, this one fires less concentrated energy bolts designed for target practice." projectile_type = /obj/item/projectile/beam/practice - clumsy_check = 0 obj/item/weapon/gun/energy/laser/retro name = "retro laser" icon_state = "retro" desc = "An older model of the basic lasergun, no longer used by Nanotrasen's security or military forces. Nevertheless, it is still quite deadly and easy to maintain, making it a favorite amongst pirates and other outlaws." - /obj/item/weapon/gun/energy/laser/captain name = "antique laser gun" icon_state = "caplaser" desc = "This is an antique laser gun. All craftsmanship is of the highest quality. It is decorated with assistant leather and chrome. The object menaces with spikes of energy. On the item is an image of Space Station 13. The station is exploding." force = 10 origin_tech = null - var/charge_tick = 0 - - - New() - ..() - processing_objects.Add(src) - - - Del() - processing_objects.Remove(src) - ..() - - - process() - charge_tick++ - if(charge_tick < 4) return 0 - charge_tick = 0 - if(!power_supply) return 0 - power_supply.give(100) - update_icon() - return 1 - - - -/obj/item/weapon/gun/energy/laser/cyborg/load_into_chamber() - if(in_chamber) - return 1 - if(isrobot(src.loc)) - var/mob/living/silicon/robot/R = src.loc - if(R && R.cell) - R.cell.use(100) - in_chamber = new/obj/item/projectile/beam(src) - return 1 - return 0 - + self_recharge = 1 /obj/item/weapon/gun/energy/lasercannon name = "laser cannon" - desc = "With the L.A.S.E.R. cannon, the lasing medium is enclosed in a tube lined with uranium-235 and subjected to high neutron flux in a nuclear reactor core. This incredible technology may help YOU achieve high excitation rates with small laser volumes!" + desc = "With the laser cannon, the lasing medium is enclosed in a tube lined with uranium-235 and subjected to high neutron flux in a nuclear reactor core. This incredible technology may help YOU achieve high excitation rates with small laser volumes!" icon_state = "lasercannon" fire_sound = 'sound/weapons/lasercannonfire.ogg' origin_tech = "combat=4;materials=3;powerstorage=3" - projectile_type = "/obj/item/projectile/beam/heavylaser" - + projectile_type = /obj/item/projectile/beam/heavylaser + charge_cost = 250 fire_delay = 20 - isHandgun() - return 0 - -/obj/item/weapon/gun/energy/lasercannon/cyborg/load_into_chamber() - if(in_chamber) - return 1 - if(isrobot(src.loc)) - var/mob/living/silicon/robot/R = src.loc - if(R && R.cell) - R.cell.use(250) - in_chamber = new/obj/item/projectile/beam/heavylaser(src) - return 1 - return 0 +/obj/item/weapon/gun/energy/lasercannon/mounted + self_recharge = 1 + use_external_power = 1 + recharge_time = 25 /obj/item/weapon/gun/energy/xray name = "xray laser gun" @@ -94,80 +53,32 @@ obj/item/weapon/gun/energy/laser/retro icon_state = "xray" fire_sound = 'sound/weapons/laser3.ogg' origin_tech = "combat=5;materials=3;magnets=2;syndicate=2" - projectile_type = "/obj/item/projectile/beam/xray" + projectile_type = /obj/item/projectile/beam/xray charge_cost = 50 ////////Laser Tag//////////////////// -/obj/item/weapon/gun/energy/laser/bluetag +/obj/item/weapon/gun/energy/lasertag name = "laser tag gun" + desc = "Standard issue weapon of the Imperial Guard" + origin_tech = "combat=1;magnets=2" + self_recharge = 1 + var/required_vest + +/obj/item/weapon/gun/energy/lasertag/special_check(var/mob/living/carbon/human/M) + if(ishuman(M)) + if(!istype(M.wear_suit, required_vest)) + M << "\red You need to be wearing your laser tag vest!" + return 0 + return ..() + +/obj/item/weapon/gun/energy/lasertag/blue icon_state = "bluetag" - desc = "Standard issue weapon of the Imperial Guard" - projectile_type = "/obj/item/projectile/beam/lastertag/blue" - origin_tech = "combat=1;magnets=2" - clumsy_check = 0 - var/charge_tick = 0 + projectile_type = /obj/item/projectile/beam/lastertag/blue + required_vest = /obj/item/clothing/suit/bluetag - special_check(var/mob/living/carbon/human/M) - if(ishuman(M)) - if(istype(M.wear_suit, /obj/item/clothing/suit/bluetag)) - return 1 - M << "\red You need to be wearing your laser tag vest!" - return 0 - - New() - ..() - processing_objects.Add(src) - - - Del() - processing_objects.Remove(src) - ..() - - - process() - charge_tick++ - if(charge_tick < 4) return 0 - charge_tick = 0 - if(!power_supply) return 0 - power_supply.give(100) - update_icon() - return 1 - - - -/obj/item/weapon/gun/energy/laser/redtag - name = "laser tag gun" +/obj/item/weapon/gun/energy/lasertag/red icon_state = "redtag" - desc = "Standard issue weapon of the Imperial Guard" - projectile_type = "/obj/item/projectile/beam/lastertag/red" - origin_tech = "combat=1;magnets=2" - clumsy_check = 0 - var/charge_tick = 0 - - special_check(var/mob/living/carbon/human/M) - if(ishuman(M)) - if(istype(M.wear_suit, /obj/item/clothing/suit/redtag)) - return 1 - M << "\red You need to be wearing your laser tag vest!" - return 0 - - New() - ..() - processing_objects.Add(src) - - - Del() - processing_objects.Remove(src) - ..() - - - process() - charge_tick++ - if(charge_tick < 4) return 0 - charge_tick = 0 - if(!power_supply) return 0 - power_supply.give(100) - update_icon() - return 1 + projectile_type = /obj/item/projectile/beam/lastertag/red + required_vest = /obj/item/clothing/suit/redtag \ No newline at end of file diff --git a/code/modules/projectiles/guns/energy/nuclear.dm b/code/modules/projectiles/guns/energy/nuclear.dm index abfd7510a4..04ba9602e8 100644 --- a/code/modules/projectiles/guns/energy/nuclear.dm +++ b/code/modules/projectiles/guns/energy/nuclear.dm @@ -1,6 +1,6 @@ /obj/item/weapon/gun/energy/gun name = "energy gun" - desc = "A basic energy-based gun with two settings: Stun and kill." + desc = "An energy-based gun with two settings: Stun and kill." icon_state = "energystun100" item_state = null //so the human update icon uses the icon_state instead. fire_sound = 'sound/weapons/Taser.ogg' @@ -12,118 +12,106 @@ var/mode = 0 //0 = stun, 1 = kill +/obj/item/weapon/gun/energy/gun/attack_self(mob/living/user as mob) + switch(mode) + if(0) + mode = 1 + charge_cost = 100 + fire_sound = 'sound/weapons/Laser.ogg' + user << "\red [src.name] is now set to kill." + projectile_type = /obj/item/projectile/beam + modifystate = "energykill" + if(1) + mode = 0 + charge_cost = 100 + fire_sound = 'sound/weapons/Taser.ogg' + user << "\red [src.name] is now set to stun." + projectile_type = /obj/item/projectile/beam/stun + modifystate = "energystun" + update_icon() + if(user.l_hand == src) + user.update_inv_l_hand() + else + user.update_inv_r_hand() - attack_self(mob/living/user as mob) - switch(mode) - if(0) - mode = 1 - charge_cost = 100 - fire_sound = 'sound/weapons/Laser.ogg' - user << "\red [src.name] is now set to kill." - projectile_type = /obj/item/projectile/beam - modifystate = "energykill" - if(1) - mode = 0 - charge_cost = 100 - fire_sound = 'sound/weapons/Taser.ogg' - user << "\red [src.name] is now set to stun." - projectile_type = /obj/item/projectile/beam/stun - modifystate = "energystun" - update_icon() - if(user.l_hand == src) - user.update_inv_l_hand() - else - user.update_inv_r_hand() +/obj/item/weapon/gun/energy/gun/mounted + self_recharge = 1 + use_external_power = 1 /obj/item/weapon/gun/energy/gun/nuclear name = "advanced energy gun" desc = "An energy gun with an experimental miniaturized reactor." icon_state = "nucgun" origin_tech = "combat=3;materials=5;powerstorage=3" + self_recharge = 1 var/lightfail = 0 - var/charge_tick = 0 - New() - ..() - processing_objects.Add(src) +//override for failcheck behaviour +/obj/item/weapon/gun/energy/gun/nuclear/process() + charge_tick++ + if(charge_tick < 4) return 0 + charge_tick = 0 + if(!power_supply) return 0 + if((power_supply.charge / power_supply.maxcharge) != 1) + if(!failcheck()) return 0 + power_supply.give(charge_cost) + update_icon() + return 1 - - Del() +/obj/item/weapon/gun/energy/gun/nuclear/proc/failcheck() + lightfail = 0 + if (prob(src.reliability)) return 1 //No failure + if (prob(src.reliability)) + for (var/mob/living/M in range(0,src)) //Only a minor failure, enjoy your radiation if you're in the same tile or carrying it + if (src in M.contents) + M << "\red Your gun feels pleasantly warm for a moment." + else + M << "\red You feel a warm sensation." + M.apply_effect(rand(3,120), IRRADIATE) + lightfail = 1 + else + for (var/mob/living/M in range(rand(1,4),src)) //Big failure, TIME FOR RADIATION BITCHES + if (src in M.contents) + M << "\red Your gun's reactor overloads!" + M << "\red You feel a wave of heat wash over you." + M.apply_effect(300, IRRADIATE) + crit_fail = 1 //break the gun so it stops recharging processing_objects.Remove(src) - ..() + update_icon() + return 0 - process() - charge_tick++ - if(charge_tick < 4) return 0 - charge_tick = 0 - if(!power_supply) return 0 - if((power_supply.charge / power_supply.maxcharge) != 1) - if(!failcheck()) return 0 - power_supply.give(100) - update_icon() - return 1 +/obj/item/weapon/gun/energy/gun/nuclear/proc/update_charge() + if (crit_fail) + overlays += "nucgun-whee" + return + var/ratio = power_supply.charge / power_supply.maxcharge + ratio = round(ratio, 0.25) * 100 + overlays += "nucgun-[ratio]" +/obj/item/weapon/gun/energy/gun/nuclear/proc/update_reactor() + if(crit_fail) + overlays += "nucgun-crit" + return + if(lightfail) + overlays += "nucgun-medium" + else if ((power_supply.charge/power_supply.maxcharge) <= 0.5) + overlays += "nucgun-light" + else + overlays += "nucgun-clean" - proc - failcheck() - lightfail = 0 - if (prob(src.reliability)) return 1 //No failure - if (prob(src.reliability)) - for (var/mob/living/M in range(0,src)) //Only a minor failure, enjoy your radiation if you're in the same tile or carrying it - if (src in M.contents) - M << "\red Your gun feels pleasantly warm for a moment." - else - M << "\red You feel a warm sensation." - M.apply_effect(rand(3,120), IRRADIATE) - lightfail = 1 - else - for (var/mob/living/M in range(rand(1,4),src)) //Big failure, TIME FOR RADIATION BITCHES - if (src in M.contents) - M << "\red Your gun's reactor overloads!" - M << "\red You feel a wave of heat wash over you." - M.apply_effect(300, IRRADIATE) - crit_fail = 1 //break the gun so it stops recharging - processing_objects.Remove(src) - update_icon() - return 0 +/obj/item/weapon/gun/energy/gun/nuclear/proc/update_mode() + if (mode == 0) + overlays += "nucgun-stun" + else if (mode == 1) + overlays += "nucgun-kill" +/obj/item/weapon/gun/energy/gun/nuclear/emp_act(severity) + ..() + reliability -= round(15/severity) - update_charge() - if (crit_fail) - overlays += "nucgun-whee" - return - var/ratio = power_supply.charge / power_supply.maxcharge - ratio = round(ratio, 0.25) * 100 - overlays += "nucgun-[ratio]" - - - update_reactor() - if(crit_fail) - overlays += "nucgun-crit" - return - if(lightfail) - overlays += "nucgun-medium" - else if ((power_supply.charge/power_supply.maxcharge) <= 0.5) - overlays += "nucgun-light" - else - overlays += "nucgun-clean" - - - update_mode() - if (mode == 0) - overlays += "nucgun-stun" - else if (mode == 1) - overlays += "nucgun-kill" - - - emp_act(severity) - ..() - reliability -= round(15/severity) - - - update_icon() - overlays.Cut() - update_charge() - update_reactor() - update_mode() +/obj/item/weapon/gun/energy/gun/nuclear/update_icon() + overlays.Cut() + update_charge() + update_reactor() + update_mode() diff --git a/code/modules/projectiles/guns/energy/pulse.dm b/code/modules/projectiles/guns/energy/pulse.dm index 9b0a22e06c..6d3dd6f944 100644 --- a/code/modules/projectiles/guns/energy/pulse.dm +++ b/code/modules/projectiles/guns/energy/pulse.dm @@ -1,70 +1,55 @@ /obj/item/weapon/gun/energy/pulse_rifle name = "pulse rifle" - desc = "A heavy-duty, pulse-based energy weapon, preferred by front-line combat personnel." + desc = "A weapon that uses advanced pulse-based beam generation technology to emit powerful laser blasts. Because of its complexity and cost, it is rarely seen in use except by specialists." icon_state = "pulse" item_state = null //so the human update icon uses the icon_state instead. force = 10 fire_sound = 'sound/weapons/pulse.ogg' charge_cost = 200 projectile_type = /obj/item/projectile/beam/pulse - cell_type = "/obj/item/weapon/cell/super" + cell_type = /obj/item/weapon/cell/super var/mode = 2 fire_delay = 25 - attack_self(mob/living/user as mob) - switch(mode) - if(2) - mode = 0 - charge_cost = 100 - fire_sound = 'sound/weapons/Taser.ogg' - user << "\red [src.name] is now set to stun." - projectile_type = /obj/item/projectile/beam/stun - if(0) - mode = 1 - charge_cost = 100 - fire_sound = 'sound/weapons/Laser.ogg' - user << "\red [src.name] is now set to kill." - projectile_type = /obj/item/projectile/beam - if(1) - mode = 2 - charge_cost = 200 - fire_sound = 'sound/weapons/pulse.ogg' - user << "\red [src.name] is now set to DESTROY." - projectile_type = /obj/item/projectile/beam/pulse - return - - isHandgun() - return 0 - -/obj/item/weapon/gun/energy/pulse_rifle/cyborg/load_into_chamber() - if(in_chamber) - return 1 - if(isrobot(src.loc)) - var/mob/living/silicon/robot/R = src.loc - if(R && R.cell) - R.cell.use(charge_cost) - in_chamber = new/obj/item/projectile/beam(src) - return 1 - return 0 +/obj/item/weapon/gun/energy/pulse_rifle/attack_self(mob/living/user as mob) + switch(mode) + if(2) + mode = 0 + charge_cost = 100 + fire_sound = 'sound/weapons/Taser.ogg' + user << "\red [src.name] is now set to stun." + projectile_type = /obj/item/projectile/beam/stun + if(0) + mode = 1 + charge_cost = 100 + fire_sound = 'sound/weapons/Laser.ogg' + user << "\red [src.name] is now set to kill." + projectile_type = /obj/item/projectile/beam + if(1) + mode = 2 + charge_cost = 200 + fire_sound = 'sound/weapons/pulse.ogg' + user << "\red [src.name] is now set to DESTROY." + projectile_type = /obj/item/projectile/beam/pulse +/obj/item/weapon/gun/energy/pulse_rifle/mounted + self_recharge = 1 + use_external_power = 1 /obj/item/weapon/gun/energy/pulse_rifle/destroyer name = "pulse destroyer" - desc = "A heavy-duty, pulse-based energy weapon." + desc = "A heavy-duty, pulse-based energy weapon. Because of its complexity and cost, it is rarely seen in use except by specialists." cell_type = "/obj/item/weapon/cell/infinite" fire_delay = 10 - attack_self(mob/living/user as mob) - user << "\red [src.name] has three settings, and they are all DESTROY." - +/obj/item/weapon/gun/energy/pulse_rifle/destroyer/attack_self(mob/living/user as mob) + user << "\red [src.name] has three settings, and they are all DESTROY." +//WHY? /obj/item/weapon/gun/energy/pulse_rifle/M1911 name = "\improper M1911-P" desc = "It's not the size of the gun, it's the size of the hole it puts through people." icon_state = "m1911-p" cell_type = "/obj/item/weapon/cell/infinite" fire_delay = 10 - - isHandgun() - return 1 diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index d5417496bf..f6f4d4bf54 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -8,14 +8,12 @@ flags = CONDUCT slot_flags = SLOT_BACK charge_cost = 100 - projectile_type = "/obj/item/projectile/ion" + projectile_type = /obj/item/projectile/ion /obj/item/weapon/gun/energy/ionrifle/emp_act(severity) - if(severity <= 2) - power_supply.use(round(power_supply.maxcharge / severity)) - update_icon() - else - return + if(severity > 2) + return //so it doesn't EMP itself, I guess + ..() /obj/item/weapon/gun/energy/decloner name = "biological demolecularisor" @@ -24,9 +22,9 @@ fire_sound = 'sound/weapons/pulse3.ogg' origin_tech = "combat=5;materials=4;powerstorage=3" charge_cost = 100 - projectile_type = "/obj/item/projectile/energy/declone" + projectile_type = /obj/item/projectile/energy/declone -obj/item/weapon/gun/energy/staff +/obj/item/weapon/gun/energy/staff name = "staff of change" desc = "An artefact that spits bolts of coruscating energy which cause the target's very form to reshape itself" icon = 'icons/obj/gun.dmi' @@ -37,45 +35,22 @@ obj/item/weapon/gun/energy/staff slot_flags = SLOT_BACK w_class = 4.0 charge_cost = 200 - projectile_type = "/obj/item/projectile/change" + projectile_type = /obj/item/projectile/change origin_tech = null - clumsy_check = 0 - var/charge_tick = 0 + self_recharge = 1 + charge_meter = 0 - - New() - ..() - processing_objects.Add(src) - - - Del() - processing_objects.Remove(src) - ..() - - - process() - charge_tick++ - if(charge_tick < 4) return 0 - charge_tick = 0 - if(!power_supply) return 0 - power_supply.give(200) - return 1 - - update_icon() - return - - - click_empty(mob/user = null) - if (user) - user.visible_message("*fizzle*", "\red *fizzle*") - else - src.visible_message("*fizzle*") - playsound(src.loc, 'sound/effects/sparks1.ogg', 100, 1) +/obj/item/weapon/gun/energy/staff/handle_click_empty(mob/user = null) + if (user) + user.visible_message("*fizzle*", "\red *fizzle*") + else + src.visible_message("*fizzle*") + playsound(src.loc, 'sound/effects/sparks1.ogg', 100, 1) /obj/item/weapon/gun/energy/staff/animate name = "staff of animation" desc = "An artefact that spits bolts of life-force which causes objects which are hit by it to animate and come to life! This magic doesn't affect machines." - projectile_type = "/obj/item/projectile/animate" + projectile_type = /obj/item/projectile/animate charge_cost = 100 /obj/item/weapon/gun/energy/floragun @@ -85,55 +60,35 @@ obj/item/weapon/gun/energy/staff item_state = "obj/item/gun.dmi" fire_sound = 'sound/effects/stealthoff.ogg' charge_cost = 100 - projectile_type = "/obj/item/projectile/energy/floramut" + projectile_type = /obj/item/projectile/energy/floramut origin_tech = "materials=2;biotech=3;powerstorage=3" modifystate = "floramut" - var/charge_tick = 0 + self_recharge = 1 var/mode = 0 //0 = mutate, 1 = yield boost -/obj/item/weapon/gun/energy/floragun/New() - ..() - processing_objects.Add(src) - -/obj/item/weapon/gun/energy/floragun/Del() - processing_objects.Remove(src) - ..() - -/obj/item/weapon/gun/energy/floragun/process() - charge_tick++ - if(charge_tick < 4) return 0 - charge_tick = 0 - if(!power_supply) return 0 - power_supply.give(100) - update_icon() - return 1 - /obj/item/weapon/gun/energy/floragun/attack_self(mob/living/user as mob) switch(mode) if(0) mode = 1 charge_cost = 100 user << "\red The [src.name] is now set to increase yield." - projectile_type = "/obj/item/projectile/energy/florayield" + projectile_type = /obj/item/projectile/energy/florayield modifystate = "florayield" if(1) mode = 0 charge_cost = 100 user << "\red The [src.name] is now set to induce mutations." - projectile_type = "/obj/item/projectile/energy/floramut" + projectile_type = /obj/item/projectile/energy/floramut modifystate = "floramut" update_icon() return -/obj/item/weapon/gun/energy/floragun/afterattack(obj/target, mob/user, flag) - - if(flag && istype(target,/obj/machinery/portable_atmospherics/hydroponics)) - var/obj/machinery/portable_atmospherics/hydroponics/tray = target - if(load_into_chamber()) - user.visible_message("\red \The [user] fires \the [src] into \the [tray]!") - Fire(target,user) +/obj/item/weapon/gun/energy/floragun/afterattack(obj/target, mob/user, adjacent_flag) + //allow shooting into adjacent hydrotrays regardless of intent + if(adjacent_flag && istype(target,/obj/machinery/portable_atmospherics/hydroponics)) + user.visible_message("\red \The [user] fires \the [src] into \the [target]!") + Fire(target,user) return - ..() /obj/item/weapon/gun/energy/meteorgun @@ -142,32 +97,12 @@ obj/item/weapon/gun/energy/staff icon_state = "riotgun" item_state = "c20r" w_class = 4 - projectile_type = "/obj/item/projectile/meteor" + projectile_type = /obj/item/projectile/meteor charge_cost = 100 cell_type = "/obj/item/weapon/cell/potato" - clumsy_check = 0 //Admin spawn only, might as well let clowns use it. - var/charge_tick = 0 - var/recharge_time = 5 //Time it takes for shots to recharge (in ticks) - - New() - ..() - processing_objects.Add(src) - - - Del() - processing_objects.Remove(src) - ..() - - process() - charge_tick++ - if(charge_tick < recharge_time) return 0 - charge_tick = 0 - if(!power_supply) return 0 - power_supply.give(100) - - update_icon() - return - + self_recharge = 1 + recharge_time = 5 //Time it takes for shots to recharge (in ticks) + charge_meter = 0 /obj/item/weapon/gun/energy/meteorgun/pen name = "meteor pen" @@ -182,7 +117,7 @@ obj/item/weapon/gun/energy/staff name = "mind flayer" desc = "A prototype weapon recovered from the ruins of Research-Station Epsilon." icon_state = "xray" - projectile_type = "/obj/item/projectile/beam/mindflayer" + projectile_type = /obj/item/projectile/beam/mindflayer fire_sound = 'sound/weapons/Laser.ogg' obj/item/weapon/gun/energy/staff/focus @@ -191,7 +126,7 @@ obj/item/weapon/gun/energy/staff/focus icon = 'icons/obj/wizard.dmi' icon_state = "focus" item_state = "focus" - projectile_type = "/obj/item/projectile/forcebolt" + projectile_type = /obj/item/projectile/forcebolt /* attack_self(mob/living/user as mob) if(projectile_type == "/obj/item/projectile/forcebolt") @@ -211,7 +146,7 @@ obj/item/weapon/gun/energy/staff/focus fire_sound = 'sound/effects/stealthoff.ogg' w_class = 3.0 origin_tech = "combat=5;phorontech=4" - projectile_type = "/obj/item/projectile/energy/phoron" + projectile_type = /obj/item/projectile/energy/phoron /obj/item/weapon/gun/energy/sniperrifle name = "\improper L.W.A.P. sniper rifle" @@ -220,7 +155,7 @@ obj/item/weapon/gun/energy/staff/focus icon_state = "sniper" fire_sound = 'sound/weapons/marauder.ogg' origin_tech = "combat=6;materials=5;powerstorage=4" - projectile_type = "/obj/item/projectile/beam/sniper" + projectile_type = /obj/item/projectile/beam/sniper slot_flags = SLOT_BACK charge_cost = 250 fire_delay = 35 diff --git a/code/modules/projectiles/guns/energy/stun.dm b/code/modules/projectiles/guns/energy/stun.dm index c3d6529dcb..5dec0144d2 100644 --- a/code/modules/projectiles/guns/energy/stun.dm +++ b/code/modules/projectiles/guns/energy/stun.dm @@ -6,38 +6,15 @@ fire_sound = 'sound/weapons/Taser.ogg' charge_cost = 100 projectile_type = /obj/item/projectile/beam/stun - cell_type = "/obj/item/weapon/cell/crap" + cell_type = /obj/item/weapon/cell/crap -/obj/item/weapon/gun/energy/taser/cyborg - cell_type = "/obj/item/weapon/cell/secborg" - var/charge_tick = 0 - var/recharge_time = 10 //Time it takes for shots to recharge (in ticks) +/obj/item/weapon/gun/energy/taser/mounted + self_recharge = 1 + use_external_power = 1 - New() - ..() - processing_objects.Add(src) - - - Del() - processing_objects.Remove(src) - ..() - - process() //Every [recharge_time] ticks, recharge a shot for the cyborg - charge_tick++ - if(charge_tick < recharge_time) return 0 - charge_tick = 0 - - if(!power_supply) return 0 //sanity - if(power_supply.charge >= power_supply.maxcharge) return 0 // check if we actually need to recharge - - if(isrobot(src.loc)) - var/mob/living/silicon/robot/R = src.loc - if(R && R.cell) - R.cell.use(charge_cost) //Take power from the borg... - power_supply.give(charge_cost) //... to recharge the shot - - update_icon() - return 1 +/obj/item/weapon/gun/energy/taser/mounted/cyborg + cell_type = /obj/item/weapon/cell/secborg + recharge_time = 10 //Time it takes for shots to recharge (in ticks) /obj/item/weapon/gun/energy/stunrevolver @@ -48,8 +25,7 @@ origin_tech = "combat=3;materials=3;powerstorage=2" charge_cost = 125 projectile_type = /obj/item/projectile/beam/stun - cell_type = "/obj/item/weapon/cell" - + cell_type = /obj/item/weapon/cell /obj/item/weapon/gun/energy/crossbow @@ -63,31 +39,9 @@ silenced = 1 fire_sound = 'sound/weapons/Genhit.ogg' projectile_type = /obj/item/projectile/energy/bolt - cell_type = "/obj/item/weapon/cell/crap" - var/charge_tick = 0 - - - New() - ..() - processing_objects.Add(src) - - - Del() - processing_objects.Remove(src) - ..() - - - process() - charge_tick++ - if(charge_tick < 4) return 0 - charge_tick = 0 - if(!power_supply) return 0 - power_supply.give(100) - return 1 - - - update_icon() - return + cell_type = /obj/item/weapon/cell/crap + self_recharge = 1 + charge_meter = 0 /obj/item/weapon/gun/energy/crossbow/ninja name = "energy dart thrower" diff --git a/code/modules/projectiles/guns/energy/temperature.dm b/code/modules/projectiles/guns/energy/temperature.dm index 1e61590f21..4f7ad995af 100644 --- a/code/modules/projectiles/guns/energy/temperature.dm +++ b/code/modules/projectiles/guns/energy/temperature.dm @@ -8,73 +8,71 @@ charge_cost = 100 origin_tech = "combat=3;materials=4;powerstorage=3;magnets=2" - projectile_type = "/obj/item/projectile/temp" - cell_type = "/obj/item/weapon/cell/crap" + projectile_type = /obj/item/projectile/temp + cell_type = /obj/item/weapon/cell/crap - New() - ..() - processing_objects.Add(src) +/obj/item/weapon/gun/energy/temperature/New() + ..() + processing_objects.Add(src) - Del() - processing_objects.Remove(src) - ..() +/obj/item/weapon/gun/energy/temperature/Del() + processing_objects.Remove(src) + ..() - attack_self(mob/living/user as mob) - user.set_machine(src) - var/temp_text = "" - if(temperature > (T0C - 50)) - temp_text = "[temperature] ([round(temperature-T0C)]°C) ([round(temperature*1.8-459.67)]°F)" +/obj/item/weapon/gun/energy/temperature/attack_self(mob/living/user as mob) + user.set_machine(src) + var/temp_text = "" + if(temperature > (T0C - 50)) + temp_text = "[temperature] ([round(temperature-T0C)]°C) ([round(temperature*1.8-459.67)]°F)" + else + temp_text = "[temperature] ([round(temperature-T0C)]°C) ([round(temperature*1.8-459.67)]°F)" + + var/dat = {"Freeze Gun Configuration:
+ Current output temperature: [temp_text]
+ Target output temperature: - - - [current_temperature] + + +
+ "} + + user << browse(dat, "window=freezegun;size=450x300;can_resize=1;can_close=1;can_minimize=1") + onclose(user, "window=freezegun", src) + + +/obj/item/weapon/gun/energy/temperature/Topic(href, href_list) + if (..()) + return + usr.set_machine(src) + src.add_fingerprint(usr) + + + + if(href_list["temp"]) + var/amount = text2num(href_list["temp"]) + if(amount > 0) + src.current_temperature = min(500, src.current_temperature+amount) else - temp_text = "[temperature] ([round(temperature-T0C)]°C) ([round(temperature*1.8-459.67)]°F)" - - var/dat = {"Freeze Gun Configuration:
- Current output temperature: [temp_text]
- Target output temperature: - - - [current_temperature] + + +
- "} + src.current_temperature = max(0, src.current_temperature+amount) + if (istype(src.loc, /mob)) + attack_self(src.loc) + src.add_fingerprint(usr) + return - user << browse(dat, "window=freezegun;size=450x300;can_resize=1;can_close=1;can_minimize=1") - onclose(user, "window=freezegun", src) +/obj/item/weapon/gun/energy/temperature/process() + switch(temperature) + if(0 to 100) charge_cost = 1000 + if(100 to 250) charge_cost = 500 + if(251 to 300) charge_cost = 100 + if(301 to 400) charge_cost = 500 + if(401 to 500) charge_cost = 1000 - - Topic(href, href_list) - if (..()) - return - usr.set_machine(src) - src.add_fingerprint(usr) - - - - if(href_list["temp"]) - var/amount = text2num(href_list["temp"]) - if(amount > 0) - src.current_temperature = min(500, src.current_temperature+amount) + if(current_temperature != temperature) + var/difference = abs(current_temperature - temperature) + if(difference >= 10) + if(current_temperature < temperature) + temperature -= 10 else - src.current_temperature = max(0, src.current_temperature+amount) - if (istype(src.loc, /mob)) - attack_self(src.loc) - src.add_fingerprint(usr) - return - - - process() - switch(temperature) - if(0 to 100) charge_cost = 1000 - if(100 to 250) charge_cost = 500 - if(251 to 300) charge_cost = 100 - if(301 to 400) charge_cost = 500 - if(401 to 500) charge_cost = 1000 - - if(current_temperature != temperature) - var/difference = abs(current_temperature - temperature) - if(difference >= 10) - if(current_temperature < temperature) - temperature -= 10 - else - temperature += 10 - else - temperature = current_temperature - return + temperature += 10 + else + temperature = current_temperature diff --git a/code/modules/projectiles/guns/projectile.dm b/code/modules/projectiles/guns/projectile.dm index bea28e9c37..d9b9ce77e2 100644 --- a/code/modules/projectiles/guns/projectile.dm +++ b/code/modules/projectiles/guns/projectile.dm @@ -6,11 +6,11 @@ name = "revolver" desc = "A classic revolver. Uses .357 ammo" icon_state = "revolver" - caliber = "357" origin_tech = "combat=2;materials=2" w_class = 3.0 matter = list("metal" = 1000) recoil = 1 + var/caliber = "357" var/ammo_type = "/obj/item/ammo_casing/a357" var/list/loaded = list() var/max_shells = 7 @@ -27,24 +27,28 @@ update_icon() return - -/obj/item/weapon/gun/projectile/load_into_chamber() - if(in_chamber) - return 1 //{R} - +/obj/item/weapon/gun/projectile/can_fire() if(!loaded.len) return 0 - var/obj/item/ammo_casing/AC = loaded[1] //load next casing. - loaded -= AC //Remove casing from loaded list. - if(isnull(AC) || !istype(AC)) - return 0 - AC.loc = get_turf(src) //Eject casing onto ground. - if(AC.BB) - in_chamber = AC.BB //Load projectile into chamber. - AC.BB.loc = src //Set projectile loc to gun. - return 1 - return 0 + return 1 +/obj/item/weapon/gun/projectile/get_next_projectile() + if(!loaded.len) + return null + var/obj/item/ammo_casing/AC = loaded[1] //load next casing. + if(isnull(AC) || !istype(AC)) + return null + if(AC.BB) + AC.BB.loc = src //Set projectile loc to gun. + return AC.BB //Load projectile into chamber. + return null + +/obj/item/weapon/gun/projectile/handle_post_fire() + ..() + if(loaded.len) + var/obj/item/ammo_casing/AC = loaded[1] + loaded -= AC + AC.loc = get_turf(src) //Eject casing onto ground. /obj/item/weapon/gun/projectile/attackby(var/obj/item/A as obj, mob/user as mob) @@ -81,7 +85,7 @@ return /obj/item/weapon/gun/projectile/attack_self(mob/user as mob) - if (target) + if (aim_targets) return ..() if (loaded.len) if (load_method == SPEEDLOADER) diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm index 0e5f0d68cd..f36ffd7f48 100644 --- a/code/modules/projectiles/guns/projectile/automatic.dm +++ b/code/modules/projectiles/guns/projectile/automatic.dm @@ -7,13 +7,10 @@ caliber = "9mm" origin_tech = "combat=4;materials=2" ammo_type = "/obj/item/ammo_casing/c9mm" - automatic = 1 + multi_aim = 1 fire_delay = 0 - isHandgun() - return 0 - /obj/item/weapon/gun/projectile/automatic/test name = "test gun" ammo_type = "/obj/item/ammo_casing/a145" @@ -28,9 +25,6 @@ origin_tech = "combat=5;materials=2;syndicate=8" ammo_type = "/obj/item/ammo_casing/c45" - isHandgun() - return 1 - /obj/item/weapon/gun/projectile/automatic/c20r name = "\improper C-20r SMG" diff --git a/code/modules/projectiles/guns/projectile/crossbow.dm b/code/modules/projectiles/guns/projectile/crossbow.dm index faa3f8509f..72554cb5a0 100644 --- a/code/modules/projectiles/guns/projectile/crossbow.dm +++ b/code/modules/projectiles/guns/projectile/crossbow.dm @@ -51,11 +51,10 @@ icon_state = "crossbow" item_state = "crossbow-solid" fire_sound = 'sound/weapons/punchmiss.ogg' // TODO: Decent THWOK noise. - ejectshell = 0 // No spent shells. - mouthshoot = 1 // No suiciding with this weapon, causes runtimes. fire_sound_text = "a solid thunk" fire_delay = 25 + var/obj/item/bolt var/tension = 0 // Current draw on the bow. var/max_tension = 5 // Highest possible tension. var/release_speed = 5 // Speed per unit of tension. @@ -75,19 +74,25 @@ /obj/item/weapon/gun/launcher/crossbow/update_release_force() release_force = tension*release_speed -/obj/item/weapon/gun/launcher/crossbow/Fire(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, params, reflex = 0) +/obj/item/weapon/gun/launcher/crossbow/can_fire() + return (tension && bolt) - if(!..()) return //Only do this on a successful shot. +/obj/item/weapon/gun/launcher/crossbow/get_next_projectile() + return bolt + +/obj/item/weapon/gun/launcher/crossbow/handle_post_fire(mob/user, atom/target) + bolt = null icon_state = "crossbow" tension = 0 + ..() /obj/item/weapon/gun/launcher/crossbow/attack_self(mob/living/user as mob) if(tension) - if(in_chamber && in_chamber.loc == src) //Just in case they click it the tick after firing. - user.visible_message("[user] relaxes the tension on [src]'s string and removes [in_chamber].","You relax the tension on [src]'s string and remove [in_chamber].") - in_chamber.loc = get_turf(src) - var/obj/item/weapon/arrow/A = in_chamber - in_chamber = null + if(bolt) + user.visible_message("[user] relaxes the tension on [src]'s string and removes [bolt].","You relax the tension on [src]'s string and remove [bolt].") + bolt.loc = get_turf(src) + var/obj/item/weapon/arrow/A = bolt + bolt = null A.removed(user) else user.visible_message("[user] relaxes the tension on [src]'s string.","You relax the tension on [src]'s string.") @@ -98,7 +103,7 @@ /obj/item/weapon/gun/launcher/crossbow/proc/draw(var/mob/user as mob) - if(!in_chamber) + if(!bolt) user << "You don't have anything nocked to [src]." return @@ -112,7 +117,7 @@ /obj/item/weapon/gun/launcher/crossbow/proc/increase_tension(var/mob/user as mob) - if(!in_chamber || !tension || current_user != user) //Arrow has been fired, bow has been relaxed or user has changed. + if(!bolt || !tension || current_user != user) //Arrow has been fired, bow has been relaxed or user has changed. return tension++ @@ -126,22 +131,22 @@ spawn(25) increase_tension(user) /obj/item/weapon/gun/launcher/crossbow/attackby(obj/item/W as obj, mob/user as mob) - if(!in_chamber) + if(!bolt) if (istype(W,/obj/item/weapon/arrow)) user.drop_item() - in_chamber = W - in_chamber.loc = src - user.visible_message("[user] slides [in_chamber] into [src].","You slide [in_chamber] into [src].") + bolt = W + bolt.loc = src + user.visible_message("[user] slides [bolt] into [src].","You slide [bolt] into [src].") icon_state = "crossbow-nocked" return else if(istype(W,/obj/item/stack/rods)) var/obj/item/stack/rods/R = W if (R.use(1)) - in_chamber = new /obj/item/weapon/arrow/rod(src) - in_chamber.fingerprintslast = src.fingerprintslast - in_chamber.loc = src + bolt = new /obj/item/weapon/arrow/rod(src) + bolt.fingerprintslast = src.fingerprintslast + bolt.loc = src icon_state = "crossbow-nocked" - user.visible_message("[user] jams [in_chamber] into [src].","You jam [in_chamber] into [src].") + user.visible_message("[user] jams [bolt] into [src].","You jam [bolt] into [src].") superheat_rod(user) return @@ -168,14 +173,14 @@ ..() /obj/item/weapon/gun/launcher/crossbow/proc/superheat_rod(var/mob/user) - if(!user || !cell || !in_chamber) return + if(!user || !cell || !bolt) return if(cell.charge < 500) return - if(in_chamber.throwforce >= 15) return - if(!istype(in_chamber,/obj/item/weapon/arrow/rod)) return + if(bolt.throwforce >= 15) return + if(!istype(bolt,/obj/item/weapon/arrow/rod)) return - user << "[in_chamber] plinks and crackles as it begins to glow red-hot." - in_chamber.throwforce = 15 - in_chamber.icon_state = "metal-rod-superheated" + user << "[bolt] plinks and crackles as it begins to glow red-hot." + bolt.throwforce = 15 + bolt.icon_state = "metal-rod-superheated" cell.use(500) diff --git a/code/modules/projectiles/guns/projectile/launcher.dm b/code/modules/projectiles/guns/projectile/launcher.dm index 6626d809cd..82998ef60a 100644 --- a/code/modules/projectiles/guns/projectile/launcher.dm +++ b/code/modules/projectiles/guns/projectile/launcher.dm @@ -7,82 +7,29 @@ slot_flags = SLOT_BACK var/release_force = 0 - var/fire_sound_text = "a launcher firing" - -//Check if we're drawing and if the bow is loaded. -/obj/item/weapon/gun/launcher/load_into_chamber() - return (!isnull(in_chamber)) - -//This should not fit in a combat belt or holster. -/obj/item/weapon/gun/launcher/isHandgun() - return 0 - -//Launchers are mechanical, no other impact. -/obj/item/weapon/gun/launcher/emp_act(severity) - return + var/throw_distance = 10 + fire_sound_text = "a launcher firing" //This normally uses a proc on projectiles and our ammo is not strictly speaking a projectile. /obj/item/weapon/gun/launcher/can_hit(var/mob/living/target as mob, var/mob/living/user as mob) - return + return 1 //Override this to avoid a runtime with suicide handling. -/obj/item/weapon/gun/launcher/attack(mob/living/M as mob, mob/living/user as mob, def_zone) - if (M == user && user.zone_sel.selecting == "mouth") - user << "\red Shooting yourself with \a [src] is pretty tricky. You can't seem to manage it." - return - ..() +/obj/item/weapon/gun/launcher/handle_suicide(mob/living/user) + user << "\red Shooting yourself with \a [src] is pretty tricky. You can't seem to manage it." + return -/obj/item/weapon/gun/launcher/proc/update_release_force() +/obj/item/weapon/gun/launcher/proc/update_release_force(obj/item/projectile) return 0 -/obj/item/weapon/gun/launcher/Fire(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, params, reflex = 0) - - if (!user.IsAdvancedToolUser()) - return 0 - - add_fingerprint(user) - - //Make sure target turfs both exist. - var/turf/curloc = get_turf(user) - var/turf/targloc = get_turf(target) - if (!istype(targloc) || !istype(curloc)) - return 0 - - if(!special_check(user)) - return 0 - - if (!ready_to_fire()) - if (world.time % 3) //to prevent spam - user << "[src] is not ready to fire again!" - return 0 - - if(!load_into_chamber()) //CHECK - return click_empty(user) - - if(!in_chamber) - return 0 - - update_release_force() - - playsound(user, fire_sound, 50, 1) - user.visible_message("[user] fires [src][reflex ? " by reflex":""]!", \ - "You fire [src][reflex ? "by reflex":""]!", \ - "You hear [fire_sound_text]!") - - in_chamber.loc = get_turf(user) - in_chamber.throw_at(target,10,release_force) - - sleep(1) - - in_chamber = null - - update_icon() - - if(user.hand) - user.update_inv_l_hand() - else - user.update_inv_r_hand() - +/obj/item/weapon/gun/launcher/process_projectile(obj/projectile, mob/user, atom/target, var/target_zone, var/params=null, var/pointblank=0, var/reflex=0) + if(!istype(projectile, /obj/item)) return 0 + + var/obj/item/I = projectile + + update_release_force(I) + I.loc = get_turf(user) + I.throw_at(target, throw_distance, release_force, user) return 1 /obj/item/weapon/gun/launcher/attack_self(mob/living/user as mob) diff --git a/code/modules/projectiles/guns/projectile/pneumatic.dm b/code/modules/projectiles/guns/projectile/pneumatic.dm index 43a5bc8e9a..e58e2a7ded 100644 --- a/code/modules/projectiles/guns/projectile/pneumatic.dm +++ b/code/modules/projectiles/guns/projectile/pneumatic.dm @@ -62,7 +62,6 @@ item_state = "pneumatic-tank" user.update_icons() else if(W.w_class <= max_w_class) - var/total_stored = 0 for(var/obj/item/O in src.contents) total_stored += O.w_class @@ -79,9 +78,6 @@ /obj/item/weapon/gun/launcher/pneumatic/attack_self(mob/user as mob) if(contents.len > 0) var/obj/item/removing = contents[contents.len] - if(removing == in_chamber) - in_chamber = null - removing.loc = get_turf(src) user.put_in_hands(removing) user << "You remove [removing] from the hopper." @@ -89,12 +85,16 @@ user << "There is nothing to remove in \the [src]." return -/obj/item/weapon/gun/launcher/pneumatic/load_into_chamber() +/obj/item/weapon/gun/launcher/pneumatic/get_next_projectile() + if(!contents.len) + return null + return contents[1] + +/obj/item/weapon/gun/launcher/pneumatic/can_fire() if(!contents.len) return 0 - - in_chamber = contents[1] - return !isnull(in_chamber) + var/fire_pressure = (tank.air_contents.return_pressure()/100)*pressure_setting + return (fire_pressure >= minimum_tank_pressure) /obj/item/weapon/gun/launcher/pneumatic/examine(mob/user) if(!..(user, 2)) @@ -106,7 +106,6 @@ user << "Nothing is attached to the tank valve!" /obj/item/weapon/gun/launcher/pneumatic/special_check(user) - if (!tank) user << "There is no gas tank in [src]!" return 0 @@ -116,20 +115,23 @@ user << "There isn't enough gas in the tank to fire [src]." return 0 - return 1 + return ..() -/obj/item/weapon/gun/launcher/pneumatic/update_release_force() - if(!in_chamber) return - release_force = ((fire_pressure*tank.volume)/in_chamber.w_class)/force_divisor //projectile speed. - if(release_force >80) release_force = 80 //damage cap. +/obj/item/weapon/gun/launcher/pneumatic/update_release_force(obj/item/projectile) + if(tank) + release_force = ((fire_pressure*tank.volume)/projectile.w_class)/force_divisor //projectile speed. + if(release_force > 80) release_force = 80 //damage cap. + else + release_force = 0 -/obj/item/weapon/gun/launcher/pneumatic/Fire(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, params, reflex = 0) - - if(!tank || !..()) return //Only do this on a successful shot. - - var/lost_gas_amount = tank.air_contents.total_moles*(pressure_setting/100) - var/datum/gas_mixture/removed = tank.air_contents.remove(lost_gas_amount) - user.loc.assume_air(removed) +/obj/item/weapon/gun/launcher/pneumatic/handle_post_fire() + if(tank) + var/lost_gas_amount = tank.air_contents.total_moles*(pressure_setting/100) + var/datum/gas_mixture/removed = tank.air_contents.remove(lost_gas_amount) + + var/turf/T = get_turf(src.loc) + if(T) T.assume_air(removed) + ..() //Constructable pneumatic cannon. diff --git a/code/modules/projectiles/guns/projectile/revolver.dm b/code/modules/projectiles/guns/projectile/revolver.dm index 226e6467aa..59e6468fb9 100644 --- a/code/modules/projectiles/guns/projectile/revolver.dm +++ b/code/modules/projectiles/guns/projectile/revolver.dm @@ -8,15 +8,13 @@ ammo_type = "/obj/item/ammo_casing/c38" special_check(var/mob/living/carbon/human/M) - if(caliber == initial(caliber)) - return 1 - if(prob(70 - (loaded.len * 10))) //minimum probability of 10, maximum of 60 + if(caliber == initial(caliber) && prob(70 - (loaded.len * 10))) //minimum probability of 10, maximum of 60 M << "[src] blows up in your face." M.take_organ_damage(0,20) M.drop_item() del(src) return 0 - return 1 + return ..() verb/rename_gun() set name = "Name Gun" @@ -101,6 +99,7 @@ icon_state = "mateba" origin_tech = "combat=2;materials=2" +/* // A gun to play Russian Roulette! // You can spin the chamber to randomize the position of the bullet. @@ -184,3 +183,4 @@ user.apply_damage(300, BRUTE, affecting, sharp=1) // You are dead, dead, dead. return ..() +*/ \ No newline at end of file diff --git a/code/modules/projectiles/guns/projectile/rocket.dm b/code/modules/projectiles/guns/projectile/rocket.dm index 27fb15d571..8020c250f0 100644 --- a/code/modules/projectiles/guns/projectile/rocket.dm +++ b/code/modules/projectiles/guns/projectile/rocket.dm @@ -1,4 +1,4 @@ -/obj/item/weapon/gun/rocketlauncher +/obj/item/weapon/gun/launcher/rocket name = "rocket launcher" desc = "MAGGOT." icon_state = "rocket" @@ -10,18 +10,19 @@ flags = CONDUCT | USEDELAY slot_flags = 0 origin_tech = "combat=8;materials=5" - var/projectile = /obj/item/missile - var/missile_speed = 2 - var/missile_range = 30 + fire_sound = 'sound/effects/bang.ogg' + + release_force = 15 + throw_distance = 30 var/max_rockets = 1 var/list/rockets = new/list() -/obj/item/weapon/gun/rocketlauncher/examine(mob/user) +/obj/item/weapon/gun/launcher/rocket/examine(mob/user) if(!..(user, 2)) return user << "\blue [rockets.len] / [max_rockets] rockets." -/obj/item/weapon/gun/rocketlauncher/attackby(obj/item/I as obj, mob/user as mob) +/obj/item/weapon/gun/launcher/rocket/attackby(obj/item/I as obj, mob/user as mob) if(istype(I, /obj/item/ammo_casing/rocket)) if(rockets.len < max_rockets) user.drop_item() @@ -32,20 +33,19 @@ else usr << "\red [src] cannot hold more rockets." -/obj/item/weapon/gun/rocketlauncher/can_fire() +/obj/item/weapon/gun/launcher/rocket/can_fire() return rockets.len -/obj/item/weapon/gun/rocketlauncher/Fire(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, params, reflex = 0) +/obj/item/weapon/gun/launcher/rocket/get_next_projectile() if(rockets.len) var/obj/item/ammo_casing/rocket/I = rockets[1] - var/obj/item/missile/M = new projectile(user.loc) - playsound(user.loc, 'sound/effects/bang.ogg', 50, 1) + var/obj/item/missile/M = new (src) M.primed = 1 - M.throw_at(target, missile_range, missile_speed,user) - message_admins("[key_name_admin(user)] fired a rocket from a rocket launcher ([src.name]).") - log_game("[key_name_admin(user)] used a rocket launcher ([src.name]).") rockets -= I - del(I) - return - else - usr << "\red [src] is empty." + return M + return null + +/obj/item/weapon/gun/launcher/rocket/handle_post_fire(mob/user, atom/target) + message_admins("[key_name_admin(user)] fired a rocket from a rocket launcher ([src.name]) at [target].") + log_game("[key_name_admin(user)] used a rocket launcher ([src.name]) at [target].") + ..() diff --git a/code/modules/projectiles/guns/projectile/shotgun.dm b/code/modules/projectiles/guns/projectile/shotgun.dm index e96c7637e3..5f0a6d14c5 100644 --- a/code/modules/projectiles/guns/projectile/shotgun.dm +++ b/code/modules/projectiles/guns/projectile/shotgun.dm @@ -15,14 +15,8 @@ var/pumped = 0 var/obj/item/ammo_casing/current_shell = null - isHandgun() - return 0 - - load_into_chamber() - if(in_chamber) - return 1 - return 0 - + get_next_projectile() + return current_shell.BB attack_self(mob/living/user as mob) if(recentpump) return @@ -39,14 +33,10 @@ if(current_shell)//We have a shell in the chamber current_shell.loc = get_turf(src)//Eject casing current_shell = null - if(in_chamber) - in_chamber = null if(!loaded.len) return 0 var/obj/item/ammo_casing/AC = loaded[1] //load next casing. loaded -= AC //Remove casing from loaded list. current_shell = AC - if(AC.BB) - in_chamber = AC.BB //Load projectile into chamber. update_icon() //I.E. fix the desc return 1 @@ -79,21 +69,6 @@ update_icon() return - load_into_chamber() -// if(in_chamber) -// return 1 {R} - if(!loaded.len) - return 0 - - var/obj/item/ammo_casing/AC = loaded[1] //load next casing. - loaded -= AC //Remove casing from loaded list. - AC.desc += " This one is spent." - - if(AC.BB) - in_chamber = AC.BB //Load projectile into chamber. - return 1 - return 0 - attack_self(mob/living/user as mob) if(!(locate(/obj/item/ammo_casing/shotgun) in src) && !loaded.len) user << "\The [src] is empty." diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 5cd7e640b1..b9ebf819a6 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -69,20 +69,28 @@ /obj/item/projectile/proc/on_penetrate(var/atom/A) return 1 -/obj/item/projectile/proc/check_fire(var/mob/living/target as mob, var/mob/living/user as mob) //Checks if you can hit them or not. +/obj/item/projectile/proc/check_fire(atom/target as mob, var/mob/living/user as mob) //Checks if you can hit them or not. if(!istype(target) || !istype(user)) return 0 - var/obj/item/projectile/test/in_chamber = new /obj/item/projectile/test(get_step_to(user,target)) //Making the test.... - in_chamber.target = target - in_chamber.flags = flags //Set the flags... - in_chamber.pass_flags = pass_flags //And the pass flags to that of the real projectile... - in_chamber.firer = user - var/output = in_chamber.process() //Test it! - del(in_chamber) //No need for it anymore + var/obj/item/projectile/test/trace = new /obj/item/projectile/test(get_step_to(user,target)) //Making the test.... + trace.target = target + trace.flags = flags //Set the flags... + trace.pass_flags = pass_flags //And the pass flags to that of the real projectile... + trace.firer = user + var/output = trace.process() //Test it! + del(trace) //No need for it anymore return output //Send it back to the gun! +//sets the click point of the projectile using mouse input params +/obj/item/projectile/proc/set_clickpoint(var/params) + var/list/mouse_control = params2list(params) + if(mouse_control["icon-x"]) + p_x = text2num(mouse_control["icon-x"]) + if(mouse_control["icon-y"]) + p_y = text2num(mouse_control["icon-y"]) + //called to launch a projectile from a gun -/obj/item/projectile/proc/launch(atom/target, mob/user, obj/item/weapon/gun/launcher, var/target_zone, var/x_offset=0, var/y_offset=0, var/px=null, var/py=null) +/obj/item/projectile/proc/launch(atom/target, mob/user, obj/item/weapon/gun/launcher, var/target_zone, var/x_offset=0, var/y_offset=0) var/turf/curloc = get_turf(user) var/turf/targloc = get_turf(target) if (!istype(targloc) || !istype(curloc)) @@ -106,8 +114,6 @@ current = curloc yo = targloc.y - curloc.y + y_offset xo = targloc.x - curloc.x + x_offset - if(!isnull(py)) p_y = py - if(!isnull(px)) p_x = px shot_from = launcher silenced = launcher.silenced @@ -133,7 +139,7 @@ //accuracy bonus from aiming if (istype(shot_from, /obj/item/weapon/gun)) //If you aim at someone beforehead, it'll hit more often. var/obj/item/weapon/gun/daddy = shot_from //Kinda balanced by fact you need like 2 seconds to aim - if (daddy.target && original in daddy.target) //As opposed to no-delay pew pew + if (daddy.aim_targets && original in daddy.aim_targets) //As opposed to no-delay pew pew miss_modifier += -30 //roll to-hit diff --git a/code/modules/projectiles/targeting.dm b/code/modules/projectiles/targeting.dm index 496455f24e..7fe4c9f620 100644 --- a/code/modules/projectiles/targeting.dm +++ b/code/modules/projectiles/targeting.dm @@ -1,10 +1,10 @@ /obj/item/weapon/gun/verb/toggle_firerate() - set name = "Toggle Firerate" + set name = "Toggle Continue Aiming" set category = "Object" - firerate = !firerate + keep_aim = !keep_aim - if (firerate) + if (keep_aim) loc << "You will now continue firing when your target moves." else loc << "You will now only fire once, then lower your aim, when your target moves." @@ -12,7 +12,7 @@ /obj/item/weapon/gun/verb/lower_aim() set name = "Lower Aim" set category = "Object" - if(target) + if(aim_targets) stop_aim() usr.visible_message("\blue \The [usr] lowers \the [src]...") @@ -36,11 +36,11 @@ //Removes lock fro mall targets /obj/item/weapon/gun/proc/stop_aim() - if(target) - for(var/mob/living/M in target) + if(aim_targets) + for(var/mob/living/M in aim_targets) if(M) M.NotTargeted(src) //Untargeting people. - del(target) + del(aim_targets) //Compute how to fire..... //Return 1 if a target was found, 0 otherwise. @@ -49,13 +49,13 @@ if(lock_time > world.time - 2) return user.set_dir(get_cardinal_dir(src, A)) - if(isliving(A) && !(A in target)) + if(isliving(A) && !(A in aim_targets)) Aim(A) //Clicked a mob, aim at them return 1 //Didn't click someone, check if there is anyone along that guntrace var/mob/living/M = GunTrace(usr.x,usr.y,A.x,A.y,usr.z,usr) //Find dat mob. - if(isliving(M) && (M in view(user)) && !(M in target)) + if(isliving(M) && (M in view(user)) && !(M in aim_targets)) Aim(M) //Aha! Aim at them! return 1 @@ -63,13 +63,13 @@ //Aiming at the target mob. /obj/item/weapon/gun/proc/Aim(var/mob/living/M) - if(!target || !(M in target)) + if(!aim_targets || !(M in aim_targets)) lock_time = world.time - if(target && !automatic) //If they're targeting someone and they have a non automatic weapon. - for(var/mob/living/L in target) + if(aim_targets && !multi_aim) //If they're targeting someone and they have a non multi_aim weapon. + for(var/mob/living/L in aim_targets) if(L) L.NotTargeted(src) - del(target) + del(aim_targets) usr.visible_message("\red [usr] turns \the [src] on [M]!") else usr.visible_message("\red [usr] aims \a [src] at [M]!") @@ -90,29 +90,26 @@ return M.last_move_intent = world.time - if(can_fire()) - var/firing_check = can_hit(T,usr) //0 if it cannot hit them, 1 if it is capable of hitting, and 2 if a special check is preventing it from firing. - if(firing_check > 0) - if(firing_check == 1) - Fire(T,usr, reflex = 1) - else if(!told_cant_shoot) - M << "\red They can't be hit from here!" - told_cant_shoot = 1 - spawn(30) - told_cant_shoot = 0 - else - click_empty(M) + var/firing_check = can_hit(T,usr) //0 if it cannot hit them, 1 if it is capable of hitting, and 2 if a special check is preventing it from firing. + if(firing_check > 0) + if(firing_check == 1) + Fire(T,usr, reflex = 1) + else if(!told_cant_shoot) + M << "\red They can't be hit from here!" + told_cant_shoot = 1 + spawn(30) + told_cant_shoot = 0 usr.set_dir(get_cardinal_dir(src, T)) - if (!firerate) // If firerate is set to lower aim after one shot, untarget the target + if (!keep_aim) // If keep_aim is set to lower aim after one shot, untarget the target T.NotTargeted(src) //Yay, math! #define SIGN(X) ((X<0)?-1:1) -proc/GunTrace(X1,Y1,X2,Y2,Z=1,exc_obj,PX1=16,PY1=16,PX2=16,PY2=16) +/proc/GunTrace(X1,Y1,X2,Y2,Z=1,exc_obj,PX1=16,PY1=16,PX2=16,PY2=16) //bluh << "Tracin' [X1],[Y1] to [X2],[Y2] on floor [Z]." var/turf/T var/mob/living/M @@ -150,19 +147,19 @@ proc/GunTrace(X1,Y1,X2,Y2,Z=1,exc_obj,PX1=16,PY1=16,PX2=16,PY2=16) //Targeting management procs -mob/var +/mob/var list/targeted_by target_time = -100 last_move_intent = -100 last_target_click = -5 target_locked = null -mob/living/proc/Targeted(var/obj/item/weapon/gun/I) //Self explanitory. - if(!I.target) - I.target = list(src) - else if(I.automatic && I.target.len < 5) //Automatic weapon, they can hold down a room. - I.target += src - else if(I.target.len >= 5) +/mob/living/proc/Targeted(var/obj/item/weapon/gun/I) //Self explanitory. + if(!I.aim_targets) + I.aim_targets = list(src) + else if(I.multi_aim && I.aim_targets.len < 5) //multi_aim weapon, they can hold down a room. + I.aim_targets += src + else if(I.aim_targets.len >= 5) if(ismob(I.loc)) I.loc << "You can only target 5 people at once!" return @@ -223,43 +220,43 @@ mob/living/proc/Targeted(var/obj/item/weapon/gun/I) //Self explanitory. I.last_moved_mob = src sleep(1) -mob/living/proc/NotTargeted(var/obj/item/weapon/gun/I) +/mob/living/proc/NotTargeted(var/obj/item/weapon/gun/I) if(!I.silenced) for(var/mob/living/M in viewers(src)) M << 'sound/weapons/TargetOff.ogg' targeted_by -= I - I.target.Remove(src) //De-target them - if(!I.target.len) - del(I.target) + I.aim_targets.Remove(src) //De-target them + if(!I.aim_targets.len) + del(I.aim_targets) var/mob/living/T = I.loc //Remove the targeting icons - if(T && ismob(T) && !I.target) + if(T && ismob(T) && !I.aim_targets) T.client.remove_gun_icons() if(!targeted_by.len) del target_locked //Remove the overlay del targeted_by spawn(1) update_targeted() -mob/living/Move() +/mob/living/Move() . = ..() for(var/obj/item/weapon/gun/G in targeted_by) //Handle moving out of the gunner's view. var/mob/living/M = G.loc if(!(M in view(src))) NotTargeted(G) for(var/obj/item/weapon/gun/G in src) //Handle the gunner loosing sight of their target/s - if(G.target) - for(var/mob/living/M in G.target) + if(G.aim_targets) + for(var/mob/living/M in G.aim_targets) if(M && !(M in view(src))) M.NotTargeted(G) //If you move out of range, it isn't going to still stay locked on you any more. -client/var +/client/var target_can_move = 0 target_can_run = 0 target_can_click = 0 gun_mode = 0 //These are called by the on-screen buttons, adjusting what the victim can and cannot do. -client/proc/add_gun_icons() +/client/proc/add_gun_icons() screen += usr.item_use_icon screen += usr.gun_move_icon if (target_can_move) @@ -267,14 +264,14 @@ client/proc/add_gun_icons() -client/proc/remove_gun_icons() +/client/proc/remove_gun_icons() if(!usr) return 1 // Runtime prevention on N00k agents spawning with SMG screen -= usr.item_use_icon screen -= usr.gun_move_icon if (target_can_move) screen -= usr.gun_run_icon -client/verb/ToggleGunMode() +/client/verb/ToggleGunMode() set hidden = 1 gun_mode = !gun_mode if(gun_mode) @@ -288,7 +285,7 @@ client/verb/ToggleGunMode() usr.gun_setting_icon.icon_state = "gun[gun_mode]" -client/verb/AllowTargetMove() +/client/verb/AllowTargetMove() set hidden=1 //Changing client's permissions @@ -310,8 +307,8 @@ client/verb/AllowTargetMove() //Handling change for all the guns on client for(var/obj/item/weapon/gun/G in usr) G.lock_time = world.time + 5 - if(G.target) - for(var/mob/living/M in G.target) + if(G.aim_targets) + for(var/mob/living/M in G.aim_targets) if(target_can_move) M << "Your character may now walk at the discretion of their targeter." if(!target_can_run) @@ -320,7 +317,7 @@ client/verb/AllowTargetMove() else M << "\red Your character will now be shot if they move." -mob/living/proc/set_m_intent(var/intent) +/mob/living/proc/set_m_intent(var/intent) if (intent != "walk" && intent != "run") return 0 m_intent = intent @@ -346,14 +343,14 @@ client/verb/AllowTargetRun() //Handling change for all the guns on client for(var/obj/item/weapon/gun/G in src) G.lock_time = world.time + 5 - if(G.target) - for(var/mob/living/M in G.target) + if(G.aim_targets) + for(var/mob/living/M in G.aim_targets) if(target_can_run) M << "Your character may now run at the discretion of their targeter." else M << "\red Your character will now be shot if they run." -client/verb/AllowTargetClick() +/client/verb/AllowTargetClick() set hidden=1 //Changing client's permissions @@ -370,8 +367,8 @@ client/verb/AllowTargetClick() //Handling change for all the guns on client for(var/obj/item/weapon/gun/G in src) G.lock_time = world.time + 5 - if(G.target) - for(var/mob/living/M in G.target) + if(G.aim_targets) + for(var/mob/living/M in G.aim_targets) if(target_can_click) M << "Your character may now use items at the discretion of their targeter." else From 9e3667540c3a93db3299e2e40222047e17beab8d Mon Sep 17 00:00:00 2001 From: mwerezak Date: Wed, 11 Feb 2015 20:42:50 -0500 Subject: [PATCH 12/45] Fixes merge errors --- code/modules/projectiles/guns/projectile.dm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/code/modules/projectiles/guns/projectile.dm b/code/modules/projectiles/guns/projectile.dm index 2f8d7ffb33..e69d60d528 100644 --- a/code/modules/projectiles/guns/projectile.dm +++ b/code/modules/projectiles/guns/projectile.dm @@ -64,12 +64,13 @@ switch(handle_casings) if(EJECT_CASINGS) //eject casing onto ground. chambered.loc = get_turf(src) - if(CYCLE_CASINGS) //cycle the casubg back to the end. + chambered = null + if(CYCLE_CASINGS) //cycle the casing back to the end. if(ammo_magazine) ammo_magazine.stored_ammo += chambered else loaded += chambered - chambered = null + chambered = null //Attempts to load A into src, depending on the type of thing being loaded and the load_method //Maybe this should be broken up into separate procs for each load method? From 630369b9dd8ef48c5ee5adf42841db0435b27053 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Wed, 11 Feb 2015 18:41:55 -0500 Subject: [PATCH 13/45] More flash shell tweaks, autolathe recipes Tweaks the flash shell some more. Tweaks shotgun stun shells, adds spent icon. Additional autolathe ammo recipes. --- code/game/machinery/autolathe_datums.dm | 24 +++++++++++++++ .../objects/items/weapons/storage/boxes.dm | 28 ++++++++++++++++++ code/modules/projectiles/ammunition.dm | 13 +++++++- code/modules/projectiles/ammunition/boxes.dm | 8 +++-- .../modules/projectiles/ammunition/bullets.dm | 19 +++++++----- code/modules/projectiles/gun.dm | 17 +++++------ code/modules/projectiles/guns/projectile.dm | 2 +- code/modules/projectiles/projectile/energy.dm | 10 +++---- icons/obj/ammo.dmi | Bin 4588 -> 4637 bytes 9 files changed, 93 insertions(+), 28 deletions(-) diff --git a/code/game/machinery/autolathe_datums.dm b/code/game/machinery/autolathe_datums.dm index ec6713085a..f41cf36362 100644 --- a/code/game/machinery/autolathe_datums.dm +++ b/code/game/machinery/autolathe_datums.dm @@ -294,6 +294,24 @@ hidden = 1 category = "Arms and Ammunition" +/datum/autolathe/recipe/magazine_stetchkin + name = "ammunition (9mm)" + path = /obj/item/ammo_magazine/mc9mm + hidden = 1 + category = "Arms and Ammunition" + +/datum/autolathe/recipe/magazine_stetchkin_flash + name = "ammunition (9mm, flash)" + path = /obj/item/ammo_magazine/mc9mm/flash + hidden = 1 + category = "Arms and Ammunition" + +/datum/autolathe/recipe/magazine_c20r + name = "ammunition (12mm)" + path = /obj/item/ammo_magazine/a12mm + hidden = 1 + category = "Arms and Ammunition" + /datum/autolathe/recipe/shotgun name = "ammunition (slug, shotgun)" path = /obj/item/ammo_casing/shotgun @@ -306,6 +324,12 @@ hidden = 1 category = "Arms and Ammunition" +/datum/autolathe/recipe/stunshell + name = "ammunition (stun cartridge, shotgun)" + path = /obj/item/ammo_casing/shotgun/stunshell + hidden = 1 + category = "Arms and Ammunition" + /datum/autolathe/recipe/rcd name = "rapid construction device" path = /obj/item/weapon/rcd diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm index 9692cacf69..ddc0709a62 100644 --- a/code/game/objects/items/weapons/storage/boxes.dm +++ b/code/game/objects/items/weapons/storage/boxes.dm @@ -176,6 +176,34 @@ new /obj/item/ammo_casing/shotgun/pellet(src) new /obj/item/ammo_casing/shotgun/pellet(src) +/obj/item/weapon/storage/box/flashshells + name = "box of illumination shells" + desc = "It has a picture of a gun and several warning symbols on the front.
WARNING: Live ammunition. Misuse may result in serious injury or death." + + New() + ..() + new /obj/item/ammo_casing/shotgun/flash(src) + new /obj/item/ammo_casing/shotgun/flash(src) + new /obj/item/ammo_casing/shotgun/flash(src) + new /obj/item/ammo_casing/shotgun/flash(src) + new /obj/item/ammo_casing/shotgun/flash(src) + new /obj/item/ammo_casing/shotgun/flash(src) + new /obj/item/ammo_casing/shotgun/flash(src) + +/obj/item/weapon/storage/box/stunshells + name = "box of stun shells" + desc = "It has a picture of a gun and several warning symbols on the front.
WARNING: Live ammunition. Misuse may result in serious injury or death." + + New() + ..() + new /obj/item/ammo_casing/shotgun/stunshell(src) + new /obj/item/ammo_casing/shotgun/stunshell(src) + new /obj/item/ammo_casing/shotgun/stunshell(src) + new /obj/item/ammo_casing/shotgun/stunshell(src) + new /obj/item/ammo_casing/shotgun/stunshell(src) + new /obj/item/ammo_casing/shotgun/stunshell(src) + new /obj/item/ammo_casing/shotgun/stunshell(src) + /obj/item/weapon/storage/box/flashbangs name = "box of flashbangs (WARNING)" desc = "WARNING: These devices are extremely dangerous and can cause blindness or deafness in repeated use." diff --git a/code/modules/projectiles/ammunition.dm b/code/modules/projectiles/ammunition.dm index 47214ab937..16569cd172 100644 --- a/code/modules/projectiles/ammunition.dm +++ b/code/modules/projectiles/ammunition.dm @@ -10,6 +10,7 @@ var/caliber = "" //Which kind of guns it can be loaded into var/projectile_type //The bullet type to create when New() is called var/obj/item/projectile/BB = null //The loaded bullet - make it so that the projectiles are created only when needed? + var/spent_icon = null /obj/item/ammo_casing/New() ..() @@ -19,6 +20,12 @@ pixel_y = rand(-10, 10) set_dir(pick(cardinal)) +//removes the projectile from the ammo casing +/obj/item/ammo_casing/proc/expend() + . = BB + BB = null + update_icon() + /obj/item/ammo_casing/attackby(obj/item/weapon/W as obj, mob/user as mob) if(istype(W, /obj/item/weapon/screwdriver)) if(!BB) @@ -36,6 +43,10 @@ user << "\blue You inscribe \"[label_text]\" into \the [initial(BB.name)]." BB.name = "[initial(BB.name)] (\"[label_text]\")" +/obj/item/ammo_casing/update_icon() + if(spent_icon && !BB) + icon_state = spent_icon + /obj/item/ammo_casing/examine(mob/user) ..() if (!BB) @@ -62,7 +73,7 @@ throw_range = 10 var/list/stored_ammo = list() - var/mag_type = SPEEDLOADER //ammo_magazines can only be used with compatible guns + var/mag_type = SPEEDLOADER //ammo_magazines can only be used with compatible guns. This is not a bitflag, the load_method var on guns is. var/caliber = "357" var/max_ammo = 7 diff --git a/code/modules/projectiles/ammunition/boxes.dm b/code/modules/projectiles/ammunition/boxes.dm index a65a7bc4d1..16df2ad341 100644 --- a/code/modules/projectiles/ammunition/boxes.dm +++ b/code/modules/projectiles/ammunition/boxes.dm @@ -1,7 +1,9 @@ /obj/item/ammo_magazine/a357 - name = "ammo box (.357)" - desc = "A box of .357 ammo" - icon_state = "357" + //name = "ammo box (.357)" + //desc = "A box of .357 ammo" + //icon_state = "357" + name = "speed loader (.357)" + icon_state = "T38" caliber = "357" ammo_type = /obj/item/ammo_casing/a357 max_ammo = 7 diff --git a/code/modules/projectiles/ammunition/bullets.dm b/code/modules/projectiles/ammunition/bullets.dm index 54c65fe019..0c614657e3 100644 --- a/code/modules/projectiles/ammunition/bullets.dm +++ b/code/modules/projectiles/ammunition/bullets.dm @@ -84,13 +84,21 @@ projectile_type = /obj/item/projectile/bullet/shotgun/beanbag matter = list("metal" = 500) +//Can stun in one hit if aimed at the head, but +//is blocked by clothing that stops tasers and is vulnerable to EMP /obj/item/ammo_casing/shotgun/stunshell name = "stun shell" desc = "A 12 gauge taser cartridge." icon_state = "stunshell" + spent_icon = "stunshell-spent" projectile_type = /obj/item/projectile/energy/electrode/stunshot matter = list("metal" = 1250, "glass" = 1250) +/obj/item/ammo_casing/shotgun/stunshell/emp_act(severity) + if(prob(100/severity)) BB = null + update_icon() + +//Does not stun, only blinds, but has area of effect. /obj/item/ammo_casing/shotgun/flash name = "flash shell" desc = "A flash shell used to provide illumination." @@ -98,13 +106,6 @@ projectile_type = /obj/item/projectile/energy/flash/flare matter = list("metal" = 250, "glass" = 250) -/obj/item/ammo_casing/shotgun/dart - name = "shotgun dart" - desc = "A dart for use in shotguns." - icon_state = "dart" - projectile_type = /obj/item/projectile/energy/dart - matter = list("metal" = 12500) - /obj/item/ammo_casing/a762 desc = "A 7.62mm bullet casing." caliber = "a762" @@ -129,6 +130,7 @@ projectile_type = /obj/item/projectile/bullet/chameleon caliber = ".45" +/* /obj/item/ammo_casing/a418 desc = "A .418 bullet casing." caliber = "357" @@ -137,4 +139,5 @@ /obj/item/ammo_casing/a666 desc = "A .666 bullet casing." caliber = "357" - projectile_type = /obj/item/projectile/bullet/cyanideround \ No newline at end of file + projectile_type = /obj/item/projectile/bullet/cyanideround +*/ \ No newline at end of file diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index eeeb60692b..73806d1d4e 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -54,15 +54,14 @@ M << "Your fingers are much too large for the trigger guard!" return 0 if((CLUMSY in M.mutations) && prob(40) && can_fire()) //Clumsy handling - var/obj/in_chamber = get_next_projectile() - if(in_chamber) - if(process_projectile(in_chamber, user, user, pick("l_foot", "r_foot"))) - handle_post_fire(user, user) - user.visible_message( - "[user] shoots \himself in the foot with \the [src]!", - "You shoot yourself in the foot with \the [src]!" - ) - M.drop_item() + var/obj/P = get_next_projectile() + if(P && process_projectile(P, user, user, pick("l_foot", "r_foot"))) + handle_post_fire(user, user) + user.visible_message( + "[user] shoots \himself in the foot with \the [src]!", + "You shoot yourself in the foot with \the [src]!" + ) + M.drop_item() return 0 return 1 diff --git a/code/modules/projectiles/guns/projectile.dm b/code/modules/projectiles/guns/projectile.dm index e69d60d528..78c33cc507 100644 --- a/code/modules/projectiles/guns/projectile.dm +++ b/code/modules/projectiles/guns/projectile.dm @@ -60,7 +60,7 @@ /obj/item/weapon/gun/projectile/handle_post_fire() ..() if(chambered) - chambered.BB = null + chambered.expend() switch(handle_casings) if(EJECT_CASINGS) //eject casing onto ground. chambered.loc = get_turf(src) diff --git a/code/modules/projectiles/projectile/energy.dm b/code/modules/projectiles/projectile/energy.dm index 1bb2490463..dc0376b7c7 100644 --- a/code/modules/projectiles/projectile/energy.dm +++ b/code/modules/projectiles/projectile/energy.dm @@ -16,8 +16,7 @@ var/light_duration = 5 /obj/item/projectile/energy/flash/on_impact(var/atom/A) - var/turf/T = get_turf(A) - + var/turf/T = flash_range? src.loc : get_turf(A) if(!istype(T)) return //blind adjacent people @@ -29,10 +28,9 @@ playsound(src, 'sound/effects/snap.ogg', 50, 1) src.visible_message("\The [src] explodes in a bright flash!") - //use src.loc so that ash doesn't end up inside windows - new /obj/effect/effect/sparks(src.loc) - new /obj/effect/decal/cleanable/ash(src.loc) - new /obj/effect/effect/smoke/illumination(src.loc, brightness=max(flash_range*2, brightness), lifetime=light_duration) + new /obj/effect/decal/cleanable/ash(src.loc) //always use src.loc so that ash doesn't end up inside windows + new /obj/effect/effect/sparks(T) + new /obj/effect/effect/smoke/illumination(T, brightness=max(flash_range*2, brightness), lifetime=light_duration) //blinds people like the flash round, but can also be used for temporary illumination /obj/item/projectile/energy/flash/flare diff --git a/icons/obj/ammo.dmi b/icons/obj/ammo.dmi index b6780ecec3e2d702223f1080b824ce08fcf177c5..c1e14968f807d74af17961a76d53fc5ccc6fbec5 100644 GIT binary patch delta 4501 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 B%QpZ3 delta 4447 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 Date: Wed, 11 Feb 2015 22:54:40 -0500 Subject: [PATCH 14/45] Adds targeting hotkey --- code/modules/projectiles/targeting.dm | 3 ++- interface/skin.dmf | 8 ++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/code/modules/projectiles/targeting.dm b/code/modules/projectiles/targeting.dm index 7fe4c9f620..c3988ff2ff 100644 --- a/code/modules/projectiles/targeting.dm +++ b/code/modules/projectiles/targeting.dm @@ -34,7 +34,7 @@ user.client.remove_gun_icons() return ..() -//Removes lock fro mall targets +//Removes lock from all targets /obj/item/weapon/gun/proc/stop_aim() if(aim_targets) for(var/mob/living/M in aim_targets) @@ -272,6 +272,7 @@ screen -= usr.gun_run_icon /client/verb/ToggleGunMode() + set name = "Toggle Gun Mode" set hidden = 1 gun_mode = !gun_mode if(gun_mode) diff --git a/interface/skin.dmf b/interface/skin.dmf index 8eee4e1817..a8ae16d887 100644 --- a/interface/skin.dmf +++ b/interface/skin.dmf @@ -341,6 +341,14 @@ macro "hotkeymode" name = "CTRL+H" command = "holster" is-disabled = false + elem + name = "J" + command = "toggle-gun-mode" + is-disabled = false + elem + name = "CTRL+J" + command = "toggle-gun-mode" + is-disabled = false elem name = "Q" command = ".northwest" From ea39f7f718ebf303d00d169c095d9621e1d0d5e6 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Thu, 12 Feb 2015 00:53:02 -0500 Subject: [PATCH 15/45] Cleanup can_fire(), projectile flag Removes can_fire() and moves some of it's functionality into get_next_projectile(), which was renamed to consume_next_projectile() to indicate the possibility of side-effects. Also renamed flag var to check_armour --- code/game/machinery/bots/medbot.dm | 2 +- code/game/mecha/equipment/tools/tools.dm | 2 +- code/game/mecha/mecha.dm | 10 +-- code/modules/mob/living/living_defense.dm | 4 +- code/modules/power/antimatter/control.dm | 2 +- code/modules/power/antimatter/shielding.dm | 2 +- .../power/rust/virtual_particle_catcher.dm | 2 +- code/modules/projectiles/gun.dm | 42 ++++----- code/modules/projectiles/guns/alien.dm | 7 +- code/modules/projectiles/guns/energy.dm | 2 +- code/modules/projectiles/guns/projectile.dm | 10 +-- .../projectiles/guns/projectile/crossbow.dm | 14 +-- .../projectiles/guns/projectile/pneumatic.dm | 27 ++---- .../projectiles/guns/projectile/revolver.dm | 85 ------------------- .../projectiles/guns/projectile/rocket.dm | 5 +- .../projectiles/guns/projectile/shotgun.dm | 5 +- code/modules/projectiles/projectile.dm | 26 +++--- .../modules/projectiles/projectile/animate.dm | 2 +- code/modules/projectiles/projectile/beams.dm | 10 +-- .../modules/projectiles/projectile/bullets.dm | 2 +- code/modules/projectiles/projectile/change.dm | 2 +- code/modules/projectiles/projectile/energy.dm | 2 +- code/modules/projectiles/projectile/force.dm | 2 +- .../modules/projectiles/projectile/special.dm | 12 +-- 24 files changed, 83 insertions(+), 196 deletions(-) diff --git a/code/game/machinery/bots/medbot.dm b/code/game/machinery/bots/medbot.dm index 65a40289d0..a83f59d03f 100644 --- a/code/game/machinery/bots/medbot.dm +++ b/code/game/machinery/bots/medbot.dm @@ -455,7 +455,7 @@ return /obj/machinery/bot/medbot/bullet_act(var/obj/item/projectile/Proj) - if(Proj.flag == "taser") + if(Proj.taser_effect) src.stunned = min(stunned+10,20) ..() diff --git a/code/game/mecha/equipment/tools/tools.dm b/code/game/mecha/equipment/tools/tools.dm index 5b71a34ec6..8338e2caa7 100644 --- a/code/game/mecha/equipment/tools/tools.dm +++ b/code/game/mecha/equipment/tools/tools.dm @@ -585,7 +585,7 @@ chassis.visible_message("The [chassis.name] armor deflects the projectile") chassis.log_append_to_last("Armor saved.") else - chassis.take_damage(round(Proj.damage*src.damage_coeff),Proj.flag) + chassis.take_damage(round(Proj.damage*src.damage_coeff),Proj.check_armour) chassis.check_for_internal_damage(list(MECHA_INT_FIRE,MECHA_INT_TEMP_CONTROL,MECHA_INT_TANK_BREACH,MECHA_INT_CONTROL_LOST)) Proj.on_hit(chassis) set_ready_state(0) diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 4790550700..f57e2e046d 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -487,7 +487,7 @@ /obj/mecha/bullet_act(var/obj/item/projectile/Proj) //wrapper - src.log_message("Hit by projectile. Type: [Proj.name]([Proj.flag]).",1) + src.log_message("Hit by projectile. Type: [Proj.name]([Proj.check_armour]).",1) call((proc_res["dynbulletdamage"]||src), "dynbulletdamage")(Proj) //calls equipment ..() return @@ -506,10 +506,10 @@ var/ignore_threshold if(istype(Proj, /obj/item/projectile/beam/pulse)) ignore_threshold = 1 - src.take_damage(Proj.damage, Proj.flag) + src.take_damage(Proj.damage, Proj.check_armour) if(prob(25)) spark_system.start() src.check_for_internal_damage(list(MECHA_INT_FIRE,MECHA_INT_TEMP_CONTROL,MECHA_INT_TANK_BREACH,MECHA_INT_CONTROL_LOST,MECHA_INT_SHORT_CIRCUIT),ignore_threshold) - + //AP projectiles have a chance to cause additional damage if(Proj.penetrating) var/distance = get_dist(Proj.starting, get_turf(loc)) @@ -520,9 +520,9 @@ hit_occupant = 0 else src.check_for_internal_damage(list(MECHA_INT_FIRE,MECHA_INT_TEMP_CONTROL,MECHA_INT_TANK_BREACH,MECHA_INT_CONTROL_LOST,MECHA_INT_SHORT_CIRCUIT), 1) - + Proj.penetrating-- - + if(prob(15)) break //give a chance to exit early diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index b33c182b28..1783bad912 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -63,10 +63,10 @@ return //Armor - var/absorb = run_armor_check(def_zone, P.flag) + var/absorb = run_armor_check(def_zone, P.check_armour) var/proj_sharp = is_sharp(P) var/proj_edge = has_edge(P) - if ((proj_sharp || proj_edge) && prob(getarmor(def_zone, P.flag))) + if ((proj_sharp || proj_edge) && prob(getarmor(def_zone, P.check_armour))) proj_sharp = 0 proj_edge = 0 diff --git a/code/modules/power/antimatter/control.dm b/code/modules/power/antimatter/control.dm index b6eb7915d2..23c5e0243a 100644 --- a/code/modules/power/antimatter/control.dm +++ b/code/modules/power/antimatter/control.dm @@ -127,7 +127,7 @@ /obj/machinery/power/am_control_unit/bullet_act(var/obj/item/projectile/Proj) - if(Proj.flag != "bullet") + if(Proj.check_armour != "bullet") stability -= Proj.force return 0 diff --git a/code/modules/power/antimatter/shielding.dm b/code/modules/power/antimatter/shielding.dm index bdaeb0c659..5085fb6c85 100644 --- a/code/modules/power/antimatter/shielding.dm +++ b/code/modules/power/antimatter/shielding.dm @@ -117,7 +117,7 @@ proc/cardinalrange(var/center) /obj/machinery/am_shielding/bullet_act(var/obj/item/projectile/Proj) - if(Proj.flag != "bullet") + if(Proj.check_armour != "bullet") stability -= Proj.force/2 return 0 diff --git a/code/modules/power/rust/virtual_particle_catcher.dm b/code/modules/power/rust/virtual_particle_catcher.dm index 2d32a9a785..350d9f66fc 100644 --- a/code/modules/power/rust/virtual_particle_catcher.dm +++ b/code/modules/power/rust/virtual_particle_catcher.dm @@ -42,7 +42,7 @@ name = "collector [mysize] OFF" /obj/effect/rust_particle_catcher/bullet_act(var/obj/item/projectile/Proj) - if(Proj.flag != "bullet" && parent) + if(Proj.check_armour != "bullet" && parent) parent.AddEnergy(Proj.damage * 20, 0, 1) update_icon() return 0 diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 73806d1d4e..d0158816ca 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -53,15 +53,18 @@ if(HULK in M.mutations) M << "Your fingers are much too large for the trigger guard!" return 0 - if((CLUMSY in M.mutations) && prob(40) && can_fire()) //Clumsy handling - var/obj/P = get_next_projectile() - if(P && process_projectile(P, user, user, pick("l_foot", "r_foot"))) - handle_post_fire(user, user) - user.visible_message( - "[user] shoots \himself in the foot with \the [src]!", - "You shoot yourself in the foot with \the [src]!" - ) - M.drop_item() + if((CLUMSY in M.mutations) && prob(40)) //Clumsy handling + var/obj/P = consume_next_projectile() + if(P) + if(process_projectile(P, user, user, pick("l_foot", "r_foot"))) + handle_post_fire(user, user) + user.visible_message( + "[user] shoots \himself in the foot with \the [src]!", + "You shoot yourself in the foot with \the [src]!" + ) + M.drop_item() + else + handle_click_empty(user) return 0 return 1 @@ -110,14 +113,14 @@ user << "[src] is not ready to fire again!" return - var/obj/in_chamber = get_next_projectile() - if(!in_chamber) + var/obj/projectile = consume_next_projectile() + if(!projectile) handle_click_empty(user) return user.next_move = world.time + 4 - if(process_projectile(in_chamber, user, target, user.zone_sel.selecting, params, pointblank, reflex)) + if(process_projectile(projectile, user, target, user.zone_sel.selecting, params, pointblank, reflex)) handle_post_fire(user, target, pointblank, reflex) update_icon() @@ -127,20 +130,17 @@ user.update_inv_r_hand() -//returns the next projectile to fire -/obj/item/weapon/gun/proc/get_next_projectile() +//obtains the next projectile to fire +/obj/item/weapon/gun/proc/consume_next_projectile() return null -//TODO integrate this with gun code better. -//TODO maybe provide user so that subtypes can emit messages if they want? -/obj/item/weapon/gun/proc/can_fire() - return 0 - //used by aiming code /obj/item/weapon/gun/proc/can_hit(atom/target as mob, var/mob/living/user as mob) if(!special_check(user)) return 2 - return 0 //in_chamber.check_fire(target,user) + //just assume we can shoot through glass and stuff. No big deal, the player can just choose to not target someone + //on the other side of a window if it makes a difference. Or if they run behind a window, too bad. + return check_trajectory(target, user) //called if there was no projectile to shoot /obj/item/weapon/gun/proc/handle_click_empty(mob/user) @@ -208,7 +208,7 @@ M.visible_message("\blue [user] decided life was worth living") mouthshoot = 0 return - var/obj/item/projectile/in_chamber = get_next_projectile() + var/obj/item/projectile/in_chamber = consume_next_projectile() if (istype(in_chamber)) user.visible_message("[user] pulls the trigger.") if(silenced) diff --git a/code/modules/projectiles/guns/alien.dm b/code/modules/projectiles/guns/alien.dm index c7efc4e3b6..a351760da5 100644 --- a/code/modules/projectiles/guns/alien.dm +++ b/code/modules/projectiles/guns/alien.dm @@ -50,10 +50,7 @@ /obj/item/weapon/gun/launcher/spikethrower/update_release_force() return -/obj/item/weapon/gun/launcher/spikethrower/can_fire() - return (spikes >= 1) - -/obj/item/weapon/gun/launcher/spikethrower/get_next_projectile() +/obj/item/weapon/gun/launcher/spikethrower/consume_next_projectile() if(spikes < 1) return null spikes-- return new /obj/item/weapon/spike(src) @@ -100,7 +97,7 @@ icon_state = "particle" damage = 60 damage_type = BRUTE - flag = "bullet" + check_armour = "bullet" pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE embed = 0 diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm index e8997ea24f..047fe7ca06 100644 --- a/code/modules/projectiles/guns/energy.dm +++ b/code/modules/projectiles/guns/energy.dm @@ -54,7 +54,7 @@ update_icon() return 1 -/obj/item/weapon/gun/energy/get_next_projectile() +/obj/item/weapon/gun/energy/consume_next_projectile() if(!power_supply) return null if(!ispath(projectile_type)) return null if(!power_supply.use(charge_cost)) return null diff --git a/code/modules/projectiles/guns/projectile.dm b/code/modules/projectiles/guns/projectile.dm index 78c33cc507..b467b31a1e 100644 --- a/code/modules/projectiles/guns/projectile.dm +++ b/code/modules/projectiles/guns/projectile.dm @@ -35,16 +35,8 @@ if(ispath(magazine_type) && (load_method & MAGAZINE)) ammo_magazine = new magazine_type(src) update_icon() - -/obj/item/weapon/gun/projectile/can_fire() - var/obj/item/ammo_casing/C - if(loaded.len) - C = loaded[1] - else if(ammo_magazine && ammo_magazine.stored_ammo.len) - C = ammo_magazine.stored_ammo[1] - return (C && C.BB) -/obj/item/weapon/gun/projectile/get_next_projectile() +/obj/item/weapon/gun/projectile/consume_next_projectile() //store the next ammo_casing in a var so that handle_post_fire() knows which one to eject //also we might as well remove chambered here, so that we don't have to figure out where it came from later if(loaded.len) diff --git a/code/modules/projectiles/guns/projectile/crossbow.dm b/code/modules/projectiles/guns/projectile/crossbow.dm index a9e95254be..8891b29960 100644 --- a/code/modules/projectiles/guns/projectile/crossbow.dm +++ b/code/modules/projectiles/guns/projectile/crossbow.dm @@ -66,19 +66,13 @@ if(cell && severity) cell.use(100*severity) -/obj/item/weapon/gun/launcher/crossbow/special_check(user) - if(tension <= 0) - user << "\red \The [src] is not drawn back!" - return 0 - return 1 - /obj/item/weapon/gun/launcher/crossbow/update_release_force() release_force = tension*release_speed -/obj/item/weapon/gun/launcher/crossbow/can_fire() - return (tension && bolt) - -/obj/item/weapon/gun/launcher/crossbow/get_next_projectile() +/obj/item/weapon/gun/launcher/crossbow/consume_next_projectile(mob/user=null) + if(tension <= 0) + user << "\red \The [src] is not drawn back!" + return null return bolt /obj/item/weapon/gun/launcher/crossbow/handle_post_fire(mob/user, atom/target) diff --git a/code/modules/projectiles/guns/projectile/pneumatic.dm b/code/modules/projectiles/guns/projectile/pneumatic.dm index 96dc344dd1..3e653bfeeb 100644 --- a/code/modules/projectiles/guns/projectile/pneumatic.dm +++ b/code/modules/projectiles/guns/projectile/pneumatic.dm @@ -86,16 +86,19 @@ user << "There is nothing to remove in \the [src]." return -/obj/item/weapon/gun/launcher/pneumatic/get_next_projectile() +/obj/item/weapon/gun/launcher/pneumatic/consume_next_projectile(mob/user=null) if(!contents.len) return null - return contents[1] + if (!tank) + user << "There is no gas tank in [src]!" + return null -/obj/item/weapon/gun/launcher/pneumatic/can_fire() - if(!contents.len) - return 0 var/fire_pressure = (tank.air_contents.return_pressure()/100)*pressure_setting - return (fire_pressure >= minimum_tank_pressure) + if(fire_pressure < minimum_tank_pressure) + user << "There isn't enough gas in the tank to fire [src]." + return null + + return contents[1] /obj/item/weapon/gun/launcher/pneumatic/examine(mob/user) if(!..(user, 2)) @@ -106,18 +109,6 @@ else user << "Nothing is attached to the tank valve!" -/obj/item/weapon/gun/launcher/pneumatic/special_check(user) - if (!tank) - user << "There is no gas tank in [src]!" - return 0 - - fire_pressure = (tank.air_contents.return_pressure()/100)*pressure_setting - if (fire_pressure < minimum_tank_pressure) - user << "There isn't enough gas in the tank to fire [src]." - return 0 - - return ..() - /obj/item/weapon/gun/launcher/pneumatic/update_release_force(obj/item/projectile) if(tank) release_force = ((fire_pressure*tank.volume)/projectile.w_class)/force_divisor //projectile speed. diff --git a/code/modules/projectiles/guns/projectile/revolver.dm b/code/modules/projectiles/guns/projectile/revolver.dm index 36aba0f8c5..0d23d63d7b 100644 --- a/code/modules/projectiles/guns/projectile/revolver.dm +++ b/code/modules/projectiles/guns/projectile/revolver.dm @@ -81,88 +81,3 @@ caliber = "38" desc = initial(desc) user << "You remove the modifications on [src]! Now it will fire .38 rounds." - -/* -// A gun to play Russian Roulette! -// You can spin the chamber to randomize the position of the bullet. -/obj/item/weapon/gun/projectile/russian - name = "\improper Russian revolver" - desc = "A Russian made revolver. Uses .357 ammo. It has a single slot in it's chamber for a bullet." - max_shells = 6 - origin_tech = "combat=2;materials=2" - -/obj/item/weapon/gun/projectile/russian/New() - Spin() - update_icon() - -/obj/item/weapon/gun/projectile/russian/proc/Spin() - for(var/obj/item/ammo_casing/AC in loaded) - del(AC) - loaded = list() - var/random = rand(1, max_shells) - for(var/i = 1; i <= max_shells; i++) - if(i != random) - loaded += i // Basically null - else - loaded += new ammo_type(src) - - -/obj/item/weapon/gun/projectile/russian/attackby(var/obj/item/A as obj, mob/user as mob) - if(!A) return - - var/num_loaded = 0 - if(istype(A, /obj/item/ammo_magazine)) - - if((load_method == MAGAZINE) && loaded.len) return - var/obj/item/ammo_magazine/AM = A - for(var/obj/item/ammo_casing/AC in AM.stored_ammo) - if(getAmmo() > 0 || loaded.len >= max_shells) - break - if(AC.caliber == caliber && loaded.len < max_shells) - AC.loc = src - AM.stored_ammo -= AC - loaded += AC - num_loaded++ - break - A.update_icon() - - if(num_loaded) - user.visible_message("[user] loads a single bullet into the revolver and spins the chamber.", "You load a single bullet into the chamber and spin it.") - else - user.visible_message("[user] spins the chamber of the revolver.", "You spin the revolver's chamber.") - if(getAmmo() > 0) - Spin() - update_icon() - return - -/obj/item/weapon/gun/projectile/russian/attack_self(mob/user as mob) - user.visible_message("[user] spins the chamber of the revolver.", "You spin the revolver's chamber.") - if(getAmmo() > 0) - Spin() - -/obj/item/weapon/gun/projectile/russian/attack(atom/target as mob|obj|turf|area, mob/living/user as mob|obj) - if(!loaded.len) - user.visible_message("\red *click*", "\red *click*") - playsound(user, 'sound/weapons/empty.ogg', 100, 1) - return - - if(isliving(target) && isliving(user)) - if(target == user) - var/datum/organ/external/affecting = user.zone_sel.selecting - if(affecting == "head") - - var/obj/item/ammo_casing/AC = loaded[1] - if(!load_into_chamber()) - user.visible_message("\red *click*", "\red *click*") - playsound(user, 'sound/weapons/empty.ogg', 100, 1) - return - if(!in_chamber) - return - var/obj/item/projectile/P = new AC.projectile_type - playsound(user, fire_sound, 50, 1) - user.visible_message("[user.name] fires [src] at \his head!", "You fire [src] at your head!", "You hear a [istype(in_chamber, /obj/item/projectile/beam) ? "laser blast" : "gunshot"]!") - if(!P.nodamage) - user.apply_damage(300, BRUTE, affecting, sharp=1) // You are dead, dead, dead. - return - ..() -*/ \ No newline at end of file diff --git a/code/modules/projectiles/guns/projectile/rocket.dm b/code/modules/projectiles/guns/projectile/rocket.dm index 8020c250f0..fd86302fb8 100644 --- a/code/modules/projectiles/guns/projectile/rocket.dm +++ b/code/modules/projectiles/guns/projectile/rocket.dm @@ -33,10 +33,7 @@ else usr << "\red [src] cannot hold more rockets." -/obj/item/weapon/gun/launcher/rocket/can_fire() - return rockets.len - -/obj/item/weapon/gun/launcher/rocket/get_next_projectile() +/obj/item/weapon/gun/launcher/rocket/consume_next_projectile() if(rockets.len) var/obj/item/ammo_casing/rocket/I = rockets[1] var/obj/item/missile/M = new (src) diff --git a/code/modules/projectiles/guns/projectile/shotgun.dm b/code/modules/projectiles/guns/projectile/shotgun.dm index f070699991..77a9867e93 100644 --- a/code/modules/projectiles/guns/projectile/shotgun.dm +++ b/code/modules/projectiles/guns/projectile/shotgun.dm @@ -15,10 +15,7 @@ handle_casings = HOLD_CASINGS var/recentpump = 0 // to prevent spammage -/obj/item/weapon/gun/projectile/shotgun/pump/can_fire() - return (chambered && chambered.BB) - -/obj/item/weapon/gun/projectile/shotgun/pump/get_next_projectile() +/obj/item/weapon/gun/projectile/shotgun/pump/consume_next_projectile() if(chambered) return chambered.BB return null diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 793c53616b..131e152354 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -37,7 +37,7 @@ var/damage_type = BRUTE //BRUTE, BURN, TOX, OXY, CLONE are the only things that should be in here var/nodamage = 0 //Determines if the projectile will skip any damage inflictions var/taser_effect = 0 //If set then the projectile will apply it's agony damage using stun_effect_act() to mobs it hits, and other damage will be ignored - var/flag = "bullet" //Defines what armor to use when it hits things. Must be set to bullet, laser, energy,or bomb //Cael - bio and rad are also valid + var/check_armour = "bullet" //Defines what armor to use when it hits things. Must be set to bullet, laser, energy,or bomb //Cael - bio and rad are also valid var/projectile_type = /obj/item/projectile var/penetrating = 0 //If greater than zero, the projectile will pass through dense objects as specified by on_penetrate() var/kill_count = 50 //This will de-increment every process(). When 0, it will delete the projectile. @@ -70,16 +70,7 @@ return 1 /obj/item/projectile/proc/check_fire(atom/target as mob, var/mob/living/user as mob) //Checks if you can hit them or not. - if(!istype(target) || !istype(user)) - return 0 - var/obj/item/projectile/test/trace = new /obj/item/projectile/test(get_step_to(user,target)) //Making the test.... - trace.target = target - trace.flags = flags //Set the flags... - trace.pass_flags = pass_flags //And the pass flags to that of the real projectile... - trace.firer = user - var/output = trace.process() //Test it! - del(trace) //No need for it anymore - return output //Send it back to the gun! + check_trajectory(target, user, pass_flags, flags) //sets the click point of the projectile using mouse input params /obj/item/projectile/proc/set_clickpoint(var/params) @@ -293,3 +284,16 @@ M = locate() in get_step(src,target) if(istype(M)) return 1 + +/proc/check_trajectory(atom/target as mob, var/mob/living/user as mob, var/pass_flags=PASSTABLE|PASSGLASS|PASSGRILLE, flags=null) //Checks if you can hit them or not. + if(!istype(target) || !istype(user)) + return 0 + var/obj/item/projectile/test/trace = new /obj/item/projectile/test(get_step_to(user,target)) //Making the test.... + trace.target = target + if(!isnull(flags)) + trace.flags = flags //Set the flags... + trace.pass_flags = pass_flags //And the pass flags to that of the real projectile... + trace.firer = user + var/output = trace.process() //Test it! + del(trace) //No need for it anymore + return output //Send it back to the gun! \ No newline at end of file diff --git a/code/modules/projectiles/projectile/animate.dm b/code/modules/projectiles/projectile/animate.dm index 490227d233..0f92729ad4 100644 --- a/code/modules/projectiles/projectile/animate.dm +++ b/code/modules/projectiles/projectile/animate.dm @@ -4,7 +4,7 @@ damage = 0 damage_type = BURN nodamage = 1 - flag = "energy" + check_armour = "energy" /obj/item/projectile/animate/Bump(var/atom/change) if((istype(change, /obj/item) || istype(change, /obj/structure)) && !is_type_in_list(change, protected_objects)) diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm index 23ee20e132..06bf1146b4 100644 --- a/code/modules/projectiles/projectile/beams.dm +++ b/code/modules/projectiles/projectile/beams.dm @@ -14,7 +14,7 @@ var/list/beam_master = list() pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE damage = 40 damage_type = BURN - flag = "laser" + check_armour = "laser" eyeblur = 4 var/frequency = 1 @@ -87,7 +87,7 @@ var/list/beam_master = list() pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE damage = 0 damage_type = BURN - flag = "laser" + check_armour = "laser" eyeblur = 2 /obj/item/projectile/beam/heavylaser @@ -121,7 +121,7 @@ var/list/beam_master = list() pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE damage = 0 damage_type = BURN - flag = "laser" + check_armour = "laser" /obj/item/projectile/beam/lastertag/blue/on_hit(var/atom/target, var/blocked = 0) if(istype(target, /mob/living/carbon/human)) @@ -136,7 +136,7 @@ var/list/beam_master = list() pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE damage = 0 damage_type = BURN - flag = "laser" + check_armour = "laser" /obj/item/projectile/beam/lastertag/red/on_hit(var/atom/target, var/blocked = 0) if(istype(target, /mob/living/carbon/human)) @@ -151,7 +151,7 @@ var/list/beam_master = list() pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE damage = 0 damage_type = BURN - flag = "laser" + check_armour = "laser" /obj/item/projectile/beam/lastertag/omni/on_hit(var/atom/target, var/blocked = 0) if(istype(target, /mob/living/carbon/human)) diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index 5da27e9ef0..938b8b300a 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -4,7 +4,7 @@ damage = 60 damage_type = BRUTE nodamage = 0 - flag = "bullet" + check_armour = "bullet" embed = 1 sharp = 1 diff --git a/code/modules/projectiles/projectile/change.dm b/code/modules/projectiles/projectile/change.dm index 215c117342..24e2d4b6ef 100644 --- a/code/modules/projectiles/projectile/change.dm +++ b/code/modules/projectiles/projectile/change.dm @@ -4,7 +4,7 @@ damage = 0 damage_type = BURN nodamage = 1 - flag = "energy" + check_armour = "energy" on_hit(var/atom/change) wabbajack(change) diff --git a/code/modules/projectiles/projectile/energy.dm b/code/modules/projectiles/projectile/energy.dm index dc0376b7c7..76aa608b3d 100644 --- a/code/modules/projectiles/projectile/energy.dm +++ b/code/modules/projectiles/projectile/energy.dm @@ -3,7 +3,7 @@ icon_state = "spark" damage = 0 damage_type = BURN - flag = "energy" + check_armour = "energy" //releases a very short burst of light on impact, mainly used to blind people diff --git a/code/modules/projectiles/projectile/force.dm b/code/modules/projectiles/projectile/force.dm index 4dffe4ce89..71b7d34d04 100644 --- a/code/modules/projectiles/projectile/force.dm +++ b/code/modules/projectiles/projectile/force.dm @@ -3,7 +3,7 @@ icon = 'icons/obj/projectiles.dmi' icon_state = "ice_1" damage = 20 - flag = "energy" + check_armour = "energy" /obj/item/projectile/forcebolt/strong name = "force bolt" diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm index c7c2c05c4a..fc69f6ec94 100644 --- a/code/modules/projectiles/projectile/special.dm +++ b/code/modules/projectiles/projectile/special.dm @@ -4,7 +4,7 @@ damage = 0 damage_type = BURN nodamage = 1 - flag = "energy" + check_armour = "energy" on_hit(var/atom/target, var/blocked = 0) @@ -16,7 +16,7 @@ name ="explosive bolt" icon_state= "bolter" damage = 50 - flag = "bullet" + check_armour = "bullet" sharp = 1 edge = 1 @@ -30,7 +30,7 @@ damage = 0 damage_type = BURN nodamage = 1 - flag = "energy" + check_armour = "energy" var/temperature = 300 @@ -47,7 +47,7 @@ damage = 0 damage_type = BRUTE nodamage = 1 - flag = "bullet" + check_armour = "bullet" Bump(atom/A as mob|obj|turf|area) if(A == firer) @@ -76,7 +76,7 @@ damage = 0 damage_type = TOX nodamage = 1 - flag = "energy" + check_armour = "energy" on_hit(var/atom/target, var/blocked = 0) var/mob/living/M = target @@ -115,7 +115,7 @@ damage = 0 damage_type = TOX nodamage = 1 - flag = "energy" + check_armour = "energy" on_hit(var/atom/target, var/blocked = 0) var/mob/M = target From 5ab6b91c5ec229fafb79e804a3e11eed236261ae Mon Sep 17 00:00:00 2001 From: mwerezak Date: Thu, 12 Feb 2015 00:59:23 -0500 Subject: [PATCH 16/45] Generalizes emp energy weapon drain to power cells --- code/modules/power/cell.dm | 2 +- code/modules/projectiles/guns/alien.dm | 3 --- code/modules/projectiles/guns/energy.dm | 3 +-- code/modules/projectiles/guns/projectile/crossbow.dm | 6 +----- 4 files changed, 3 insertions(+), 11 deletions(-) diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index 36ab1047a3..69f0b92a48 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -128,7 +128,7 @@ rigged = 1 //broken batterys are dangerous /obj/item/weapon/cell/emp_act(severity) - charge -= 1000 / severity + charge -= maxcharge / severity if (charge < 0) charge = 0 if(reliability != 100 && prob(50/severity)) diff --git a/code/modules/projectiles/guns/alien.dm b/code/modules/projectiles/guns/alien.dm index a351760da5..c8048026c3 100644 --- a/code/modules/projectiles/guns/alien.dm +++ b/code/modules/projectiles/guns/alien.dm @@ -36,9 +36,6 @@ /obj/item/weapon/gun/launcher/spikethrower/update_icon() icon_state = "spikethrower[spikes]" -/obj/item/weapon/gun/launcher/spikethrower/emp_act(severity) - return - /obj/item/weapon/gun/launcher/spikethrower/special_check(user) if(istype(user,/mob/living/carbon/human)) var/mob/living/carbon/human/H = user diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm index 047fe7ca06..3cd90347f9 100644 --- a/code/modules/projectiles/guns/energy.dm +++ b/code/modules/projectiles/guns/energy.dm @@ -19,9 +19,8 @@ var/charge_tick = 0 /obj/item/weapon/gun/energy/emp_act(severity) - power_supply.use(round(power_supply.maxcharge / severity)) - update_icon() ..() + update_icon() /obj/item/weapon/gun/energy/New() ..() diff --git a/code/modules/projectiles/guns/projectile/crossbow.dm b/code/modules/projectiles/guns/projectile/crossbow.dm index 8891b29960..f59fce1137 100644 --- a/code/modules/projectiles/guns/projectile/crossbow.dm +++ b/code/modules/projectiles/guns/projectile/crossbow.dm @@ -62,10 +62,6 @@ var/obj/item/weapon/cell/cell = null // Used for firing superheated rods. var/current_user // Used to check if the crossbow has changed hands since being drawn. -/obj/item/weapon/gun/launcher/crossbow/emp_act(severity) - if(cell && severity) - cell.use(100*severity) - /obj/item/weapon/gun/launcher/crossbow/update_release_force() release_force = tension*release_speed @@ -148,8 +144,8 @@ if(istype(W, /obj/item/weapon/cell)) if(!cell) user.drop_item() - W.loc = src cell = W + cell.loc = src user << "You jam [cell] into [src] and wire it to the firing coil." superheat_rod(user) else From 628bc5eecc4047cfd8d35844a3427d190fb4c889 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Thu, 12 Feb 2015 01:09:39 -0500 Subject: [PATCH 17/45] Crossbow strings no longer magically pull back by themselves --- .../projectiles/guns/projectile/crossbow.dm | 29 ++++++++++++------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/code/modules/projectiles/guns/projectile/crossbow.dm b/code/modules/projectiles/guns/projectile/crossbow.dm index f59fce1137..3d3e2f6d86 100644 --- a/code/modules/projectiles/guns/projectile/crossbow.dm +++ b/code/modules/projectiles/guns/projectile/crossbow.dm @@ -102,24 +102,31 @@ return current_user = user - user.visible_message("[user] begins to draw back the string of [src].","You begin to draw back the string of [src].") + user.visible_message("[user] begins to draw back the string of [src].","You begin to draw back the string of [src].") tension = 1 - spawn(25) increase_tension(user) //TODO: This needs to be changed to something less shit. + + while(bolt && tension && current_user == user) + if(!do_after(user, 25)) //crossbow strings don't just magically pull back on their own. + user.visible_message("[usr] stops drawing and relaxes the string of [src].","You stop drawing back and relax the string of [src].") + tension = 0 + icon_state = "crossbow" + return + + tension++ + icon_state = "crossbow-drawn" + + if(tension >= max_tension) + tension = max_tension + usr << "[src] clunks as you draw the string to its maximum tension!" + return + + user.visible_message("[usr] draws back the string of [src]!","You continue drawing back the string of [src]!") /obj/item/weapon/gun/launcher/crossbow/proc/increase_tension(var/mob/user as mob) if(!bolt || !tension || current_user != user) //Arrow has been fired, bow has been relaxed or user has changed. return - tension++ - icon_state = "crossbow-drawn" - - if(tension>=max_tension) - tension = max_tension - usr << "[src] clunks as you draw the string to its maximum tension!" - else - user.visible_message("[usr] draws back the string of [src]!","You continue drawing back the string of [src]!") - spawn(25) increase_tension(user) /obj/item/weapon/gun/launcher/crossbow/attackby(obj/item/W as obj, mob/user as mob) if(!bolt) From 1e9143a1f0c3918aa5dfd2a5aa71d360c96e39d0 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Thu, 12 Feb 2015 01:18:18 -0500 Subject: [PATCH 18/45] Reorganizes launcher source files --- baystation12.dme | 8 ++++---- .../modules/projectiles/guns/{projectile => }/launcher.dm | 0 .../projectiles/guns/{projectile => launcher}/crossbow.dm | 0 .../guns/{projectile => launcher}/pneumatic.dm | 0 .../projectiles/guns/{projectile => launcher}/rocket.dm | 0 5 files changed, 4 insertions(+), 4 deletions(-) rename code/modules/projectiles/guns/{projectile => }/launcher.dm (100%) rename code/modules/projectiles/guns/{projectile => launcher}/crossbow.dm (100%) rename code/modules/projectiles/guns/{projectile => launcher}/pneumatic.dm (100%) rename code/modules/projectiles/guns/{projectile => launcher}/rocket.dm (100%) diff --git a/baystation12.dme b/baystation12.dme index 0c737c0953..389270165c 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -1319,6 +1319,7 @@ #include "code\modules\projectiles\ammunition\bullets.dm" #include "code\modules\projectiles\guns\alien.dm" #include "code\modules\projectiles\guns\energy.dm" +#include "code\modules\projectiles\guns\launcher.dm" #include "code\modules\projectiles\guns\projectile.dm" #include "code\modules\projectiles\guns\energy\laser.dm" #include "code\modules\projectiles\guns\energy\nuclear.dm" @@ -1326,13 +1327,12 @@ #include "code\modules\projectiles\guns\energy\special.dm" #include "code\modules\projectiles\guns\energy\stun.dm" #include "code\modules\projectiles\guns\energy\temperature.dm" +#include "code\modules\projectiles\guns\launcher\crossbow.dm" +#include "code\modules\projectiles\guns\launcher\pneumatic.dm" +#include "code\modules\projectiles\guns\launcher\rocket.dm" #include "code\modules\projectiles\guns\projectile\automatic.dm" -#include "code\modules\projectiles\guns\projectile\crossbow.dm" -#include "code\modules\projectiles\guns\projectile\launcher.dm" #include "code\modules\projectiles\guns\projectile\pistol.dm" -#include "code\modules\projectiles\guns\projectile\pneumatic.dm" #include "code\modules\projectiles\guns\projectile\revolver.dm" -#include "code\modules\projectiles\guns\projectile\rocket.dm" #include "code\modules\projectiles\guns\projectile\shotgun.dm" #include "code\modules\projectiles\projectile\animate.dm" #include "code\modules\projectiles\projectile\beams.dm" diff --git a/code/modules/projectiles/guns/projectile/launcher.dm b/code/modules/projectiles/guns/launcher.dm similarity index 100% rename from code/modules/projectiles/guns/projectile/launcher.dm rename to code/modules/projectiles/guns/launcher.dm diff --git a/code/modules/projectiles/guns/projectile/crossbow.dm b/code/modules/projectiles/guns/launcher/crossbow.dm similarity index 100% rename from code/modules/projectiles/guns/projectile/crossbow.dm rename to code/modules/projectiles/guns/launcher/crossbow.dm diff --git a/code/modules/projectiles/guns/projectile/pneumatic.dm b/code/modules/projectiles/guns/launcher/pneumatic.dm similarity index 100% rename from code/modules/projectiles/guns/projectile/pneumatic.dm rename to code/modules/projectiles/guns/launcher/pneumatic.dm diff --git a/code/modules/projectiles/guns/projectile/rocket.dm b/code/modules/projectiles/guns/launcher/rocket.dm similarity index 100% rename from code/modules/projectiles/guns/projectile/rocket.dm rename to code/modules/projectiles/guns/launcher/rocket.dm From 98dd5c46c003e976a702e5b2625eb94442c14ce3 Mon Sep 17 00:00:00 2001 From: RavingManiac Date: Fri, 13 Feb 2015 00:38:23 +0800 Subject: [PATCH 19/45] Circulators now draw air based on the total volume of the pipe network connected to the input. They also generate some power in the same manner as pipe turbines. Thermoelectric generators now generate much more power, mostly due to the increase in circulator intake volume. Supermatter no longer powers radiation collectors, and is tweaked to run at 4000-6000K. TEG supermatter engine mapped in. Currently generates ~1MW of power with chamber temperature of 5000K. --- .../components/binary_devices/circulator.dm | 33 ++++- code/modules/power/generator.dm | 66 ++++++--- code/modules/supermatter/supermatter.dm | 12 +- maps/exodus-1.dmm | 139 ++++++++++-------- 4 files changed, 157 insertions(+), 93 deletions(-) diff --git a/code/ATMOSPHERICS/components/binary_devices/circulator.dm b/code/ATMOSPHERICS/components/binary_devices/circulator.dm index cb9ecfbdc5..65511491a4 100644 --- a/code/ATMOSPHERICS/components/binary_devices/circulator.dm +++ b/code/ATMOSPHERICS/components/binary_devices/circulator.dm @@ -1,37 +1,50 @@ //node1, air1, network1 correspond to input //node2, air2, network2 correspond to output +#define ADIABATIC_EXPONENT 0.667 //Actually adiabatic exponent - 1. + /obj/machinery/atmospherics/binary/circulator name = "circulator/heat exchanger" - desc = "A gas circulator pump and heat exchanger." + desc = "A gas circulator turbine and heat exchanger." icon = 'icons/obj/pipes.dmi' icon_state = "circ-off" anchored = 0 + var/kinetic_efficiency = 0.04 //combined kinetic and kinetic-to-electric efficiency + var/volume_ratio = 0.2 + var/recent_moles_transferred = 0 var/last_heat_capacity = 0 var/last_temperature = 0 var/last_pressure_delta = 0 var/last_worldtime_transfer = 0 + var/last_stored_energy_transferred = 0 + var/volume_capacity_used = 0 + var/stored_energy = 0 density = 1 /obj/machinery/atmospherics/binary/circulator/New() ..() desc = initial(desc) + " Its outlet port is to the [dir2text(dir)]." + air1.volume = 500 /obj/machinery/atmospherics/binary/circulator/proc/return_transfer_air() var/datum/gas_mixture/removed - if(anchored && !(stat&BROKEN) ) + if(anchored && !(stat&BROKEN) && network1) var/input_starting_pressure = air1.return_pressure() var/output_starting_pressure = air2.return_pressure() - last_pressure_delta = max(input_starting_pressure - output_starting_pressure + 10, 0) + last_pressure_delta = max(input_starting_pressure - output_starting_pressure - 5, 0) - //only circulate air if there is a pressure difference (plus 10 kPa to represent friction in the machine) - if(air1.temperature > 0 && last_pressure_delta > 0) + //only circulate air if there is a pressure difference (plus 5kPa kinetic, 10kPa static friction) + if(air1.temperature > 0 && last_pressure_delta > 5) //Calculate necessary moles to transfer using PV = nRT - recent_moles_transferred = last_pressure_delta*air2.volume/(air1.temperature * R_IDEAL_GAS_EQUATION) + recent_moles_transferred = (last_pressure_delta*network1.volume/(air1.temperature * R_IDEAL_GAS_EQUATION))/3 //uses the volume of the whole network, not just itself + volume_capacity_used = min( (last_pressure_delta*network1.volume/3)/(input_starting_pressure*air1.volume) , 1) //how much of the gas in the input air volume is consumed + + //Calculate energy generated from kinetic turbine + stored_energy += 1/ADIABATIC_EXPONENT * min(last_pressure_delta * network1.volume , input_starting_pressure*air1.volume) * (1 - volume_ratio**ADIABATIC_EXPONENT) * kinetic_efficiency //Actually transfer the gas removed = air1.remove(recent_moles_transferred) @@ -40,8 +53,7 @@ last_temperature = removed.temperature //Update the gas networks. - if(network1) - network1.update = 1 + network1.update = 1 last_worldtime_transfer = world.time else @@ -50,6 +62,11 @@ update_icon() return removed +/obj/machinery/atmospherics/binary/circulator/proc/return_stored_energy() + last_stored_energy_transferred = stored_energy + stored_energy = 0 + return last_stored_energy_transferred + /obj/machinery/atmospherics/binary/circulator/process() ..() diff --git a/code/modules/power/generator.dm b/code/modules/power/generator.dm index c574c37ef8..c8277ee04e 100644 --- a/code/modules/power/generator.dm +++ b/code/modules/power/generator.dm @@ -1,4 +1,3 @@ - /obj/machinery/power/generator name = "thermoelectric generator" desc = "It's a high efficiency thermoelectric generator." @@ -9,11 +8,17 @@ use_power = 1 idle_power_usage = 100 //Watts, I hope. Just enough to do the computer and display things. + var/max_power = 500000 + var/thermal_efficiency = 0.65 + var/obj/machinery/atmospherics/binary/circulator/circ1 var/obj/machinery/atmospherics/binary/circulator/circ2 - var/lastgen = 0 - var/lastgenlev = -1 + var/stored_energy = 0 + var/lastgen1 = 0 + var/lastgen2 = 0 + var/effective_gen = 0 + var/lastgenlev = 0 /obj/machinery/power/generator/New() ..() @@ -31,11 +36,11 @@ circ2 = null if(src.loc && anchored) if(src.dir & (EAST|WEST)) - circ1 = locate(/obj/machinery/atmospherics/binary/circulator) in get_step(src,EAST) - circ2 = locate(/obj/machinery/atmospherics/binary/circulator) in get_step(src,WEST) + circ1 = locate(/obj/machinery/atmospherics/binary/circulator) in get_step(src,WEST) + circ2 = locate(/obj/machinery/atmospherics/binary/circulator) in get_step(src,EAST) if(circ1 && circ2) - if(circ1.dir != SOUTH || circ2.dir != NORTH) + if(circ1.dir != NORTH || circ2.dir != SOUTH) circ1 = null circ2 = null @@ -58,13 +63,16 @@ /obj/machinery/power/generator/process() if(!circ1 || !circ2 || !anchored || stat & (BROKEN|NOPOWER)) + stored_energy = 0 return updateDialog() var/datum/gas_mixture/air1 = circ1.return_transfer_air() var/datum/gas_mixture/air2 = circ2.return_transfer_air() - lastgen = 0 + + lastgen2 = lastgen1 + lastgen1 = 0 if(air1 && air2) var/air1_heat_capacity = air1.heat_capacity() @@ -72,10 +80,9 @@ var/delta_temperature = abs(air2.temperature - air1.temperature) if(delta_temperature > 0 && air1_heat_capacity > 0 && air2_heat_capacity > 0) - var/efficiency = 0.65 var/energy_transfer = delta_temperature*air2_heat_capacity*air1_heat_capacity/(air2_heat_capacity+air1_heat_capacity) - var/heat = energy_transfer*(1-efficiency) - lastgen = energy_transfer*efficiency*0.05 + var/heat = energy_transfer*(1-thermal_efficiency) + stored_energy += energy_transfer*thermal_efficiency if(air2.temperature > air1.temperature) air2.temperature = air2.temperature - energy_transfer/air2_heat_capacity @@ -96,19 +103,28 @@ if(circ2.network2) circ2.network2.update = 1 - // update icon overlays and power usage only if displayed level has changed - if(lastgen > 250000 && prob(10)) + //Exceeding maximum power leads to some power loss + if(effective_gen > max_power && prob(5)) var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(3, 1, src) s.start() - lastgen *= 0.5 - var/genlev = max(0, min( round(11*lastgen / 250000), 11)) - if(lastgen > 100 && genlev == 0) + stored_energy *= 0.5 + + //Power + stored_energy += circ1.return_stored_energy() + stored_energy += circ2.return_stored_energy() + lastgen1 = stored_energy*0.4 //smoothened power generation to prevent slingshotting as pressure is equalized, then restored by pumps + stored_energy -= lastgen1 + effective_gen = (lastgen1 + lastgen2) / 2 + + // update icon overlays and power usage only if displayed level has changed + var/genlev = max(0, min( round(11*effective_gen / max_power), 11)) + if(effective_gen > 100 && genlev == 0) genlev = 1 if(genlev != lastgenlev) lastgenlev = genlev updateicon() - add_avail(lastgen) + add_avail(effective_gen) /obj/machinery/power/generator/attack_ai(mob/user) if(stat & (BROKEN|NOPOWER)) return @@ -140,17 +156,23 @@ var/t = "
Thermo-Electric Generator
" if(circ1 && circ2) - t += "Output : [round(lastgen)] W

" - - t += "Primary Circulator (top or right)
" + t += "Output : [round(effective_gen/1000)] kW
" + t += "
" + t += "Primary Circulator (top or left)
" + t += "Flow Capacity: [round(circ1.volume_capacity_used*100)]%
" + t += "

" t += "Inlet Pressure: [round(circ1.air1.return_pressure(), 0.1)] kPa
" t += "Inlet Temperature: [round(circ1.air1.temperature, 0.1)] K
" + t += "
" t += "Outlet Pressure: [round(circ1.air2.return_pressure(), 0.1)] kPa
" t += "Outlet Temperature: [round(circ1.air2.temperature, 0.1)] K
" - - t += "Secondary Circulator (bottom or left)
" + t += "
" + t += "Secondary Circulator (bottom or right)
" + t += "Flow Capacity: [round(circ2.volume_capacity_used*100)]%
" + t += "
" t += "Inlet Pressure: [round(circ2.air1.return_pressure(), 0.1)] kPa
" t += "Inlet Temperature: [round(circ2.air1.temperature, 0.1)] K
" + t += "
" t += "Outlet Pressure: [round(circ2.air2.return_pressure(), 0.1)] kPa
" t += "Outlet Temperature: [round(circ2.air2.temperature, 0.1)] K
" @@ -201,4 +223,4 @@ if (usr.stat || usr.restrained() || anchored) return - src.set_dir(turn(src.dir, -90)) \ No newline at end of file + src.set_dir(turn(src.dir, -90)) diff --git a/code/modules/supermatter/supermatter.dm b/code/modules/supermatter/supermatter.dm index de8f5233e6..8aa31fa9b8 100644 --- a/code/modules/supermatter/supermatter.dm +++ b/code/modules/supermatter/supermatter.dm @@ -1,8 +1,8 @@ #define NITROGEN_RETARDATION_FACTOR 0.15 //Higher == N2 slows reaction more -#define THERMAL_RELEASE_MODIFIER 750 //Higher == more heat released during reaction +#define THERMAL_RELEASE_MODIFIER 10000 //Higher == more heat released during reaction #define PHORON_RELEASE_MODIFIER 1500 //Higher == less phoron released by reaction -#define OXYGEN_RELEASE_MODIFIER 1500 //Higher == less oxygen released at high temperature/power +#define OXYGEN_RELEASE_MODIFIER 15000 //Higher == less oxygen released at high temperature/power #define REACTION_POWER_MODIFIER 1.1 //Higher == more overall power /* @@ -16,9 +16,9 @@ */ //Controls how much power is produced by each collector in range - this is the main parameter for tweaking SM balance, as it basically controls how the power variable relates to the rest of the game. -#define POWER_FACTOR 1.0 +//#define POWER_FACTOR 1.0 #define DECAY_FACTOR 700 //Affects how fast the supermatter power decays -#define CRITICAL_TEMPERATURE 800 //K +#define CRITICAL_TEMPERATURE 7000 //K #define CHARGING_FACTOR 0.05 #define DAMAGE_RATE_LIMIT 3 //damage rate cap at power = 300, scales linearly with power @@ -209,7 +209,7 @@ power = max( (removed.temperature * temp_factor) * oxygen + power, 0) //We've generated power, now let's transfer it to the collectors for storing/usage - transfer_energy() + //transfer_energy() var/device_energy = power * REACTION_POWER_MODIFIER @@ -273,6 +273,7 @@ Consume(user) +/* /obj/machinery/power/supermatter/proc/transfer_energy() for(var/obj/machinery/power/rad_collector/R in rad_collectors) var/distance = get_dist(R, src) @@ -280,6 +281,7 @@ //for collectors using standard phoron tanks at 1013 kPa, the actual power generated will be this power*POWER_FACTOR*20*29 = power*POWER_FACTOR*580 R.receive_pulse(power * POWER_FACTOR * (min(3/distance, 1))**2) return +*/ /obj/machinery/power/supermatter/attackby(obj/item/weapon/W as obj, mob/living/user as mob) user.visible_message("\The [user] touches \a [W] to \the [src] as a silence fills the room...",\ diff --git a/maps/exodus-1.dmm b/maps/exodus-1.dmm index 1f3a01e60f..fcf67d78f2 100644 --- a/maps/exodus-1.dmm +++ b/maps/exodus-1.dmm @@ -5899,7 +5899,7 @@ "cjw" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/effect/decal/cleanable/dirt,/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "cjx" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/machinery/light/small{dir = 4},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "cjy" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/turf/simulated/wall/r_wall,/area/engineering/engine_waste) -"cjz" = (/obj/machinery/alarm{breach_detection = 0; dir = 2; frequency = 1439; name = "Engine Room Air Alarm"; pixel_y = 23},/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 10},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engineering/engine_room) +"cjz" = (/obj/machinery/alarm{breach_detection = 0; dir = 2; frequency = 1439; name = "Engine Room Air Alarm"; pixel_y = 23},/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 10},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engineering/engine_room) "cjA" = (/obj/machinery/power/terminal{dir = 4},/obj/structure/cable/yellow,/obj/machinery/power/sensor{name = "Powernet Sensor - Engine Output"; name_tag = "Engine Output"},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/engineering/engine_room) "cjB" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/construction) "cjC" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/engineering{name = "Construction Area"; req_access_txt = "32"},/turf/simulated/floor/plating,/area/construction) @@ -5917,7 +5917,7 @@ "cjO" = (/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/engineering/engine_room) "cjP" = (/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/plating,/area/engineering/engine_room) "cjQ" = (/obj/machinery/atmospherics/portables_connector,/turf/simulated/floor/plating{icon_state = "platebotc"},/area/engineering/engine_room) -"cjR" = (/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cjR" = (/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/power/smes/buildable{charge = 2e+006; input_level = 100000; output_level = 200000; RCon_tag = "Engine - Core"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/engineering/engine_room) "cjS" = (/obj/machinery/atmospherics/binary/pump,/turf/simulated/floor/plating,/area/engineering/engine_room) "cjT" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/turf/simulated/floor/plating,/area/engineering/engine_waste) "cjU" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engineering/engine_waste) @@ -5925,7 +5925,7 @@ "cjW" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating/airless,/area/solar/port) "cjX" = (/obj/machinery/atmospherics/pipe/manifold4w/visible/purple,/turf/simulated/floor/plating,/area/engineering/engine_waste) "cjY" = (/obj/machinery/atmospherics/binary/pump{dir = 8},/turf/simulated/floor/plating,/area/engineering/engine_waste) -"cjZ" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/engineering/engine_room) +"cjZ" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/engineering/engine_room) "cka" = (/obj/structure/table,/obj/item/weapon/FixOVein,/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -27},/obj/item/weapon/surgicaldrill,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "ckb" = (/obj/machinery/computer/operating,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "ckc" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) @@ -5934,7 +5934,7 @@ "ckf" = (/obj/structure/table,/obj/item/device/radio{anchored = 1; broadcasting = 0; canhear_range = 7; frequency = 1487; icon = 'icons/obj/items.dmi'; icon_state = "red_phone"; listening = 1; name = "Surgery Emergency Phone"},/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/medical/surgeryprep) "ckg" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/medical/surgeryprep) "ckh" = (/obj/structure/disposalpipe/segment,/obj/item/roller,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/medical/surgeryprep) -"cki" = (/obj/machinery/atmospherics/pipe/manifold/visible/yellow{dir = 4},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplatecorner"},/area/engineering/engine_room) +"cki" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/engineering/engine_room) "ckj" = (/obj/structure/table,/obj/item/weapon/reagent_containers/spray/cleaner{desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; name = "Surgery Cleaner"},/turf/simulated/floor{dir = 8; icon_state = "whitered"},/area/medical/surgery2) "ckk" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery2) "ckl" = (/obj/machinery/computer/operating,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery2) @@ -5943,7 +5943,7 @@ "cko" = (/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/medbay) "ckp" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance,/obj/structure/disposalpipe/segment,/obj/structure/sign/redcross{desc = "The Star of Life, a symbol of Medical Aid."; icon_state = "lifestar"; name = "Medbay"; pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/medical/virologyaccess) "ckq" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor,/area/medical/virologyaccess) -"ckr" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/engineering/engine_room) +"ckr" = (/obj/machinery/atmospherics/binary/pump,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/engineering/engine_room) "cks" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 6},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engineering/engine_room) "ckt" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/research_port) "cku" = (/obj/machinery/atmospherics/omni/filter{use_power = 0; tag_east = 1; tag_north = 0; tag_south = 4; tag_west = 2},/turf/simulated/floor/plating,/area/engineering/engine_room) @@ -5980,14 +5980,14 @@ "ckZ" = (/obj/machinery/door/window/brigdoor{dir = 8; name = "Engine Waste"; req_access = null; req_access_txt = "0"; req_one_access_txt = "10;24"},/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 9},/turf/simulated/floor/plating{icon_state = "platebot"},/area/engineering/engine_waste) "cla" = (/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engineering/engine_room) "clb" = (/obj/item/weapon/wirecutters,/obj/effect/decal/cleanable/blood/oil/streak{amount = 0},/turf/simulated/floor/plating,/area/construction) -"clc" = (/obj/machinery/atmospherics/pipe/manifold/visible/yellow{dir = 8},/turf/simulated/floor/plating,/area/engineering/engine_room) -"cld" = (/obj/machinery/atmospherics/pipe/manifold/visible/yellow{dir = 4},/obj/machinery/meter,/turf/simulated/floor/plating,/area/engineering/engine_room) +"clc" = (/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cld" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/engineering/engine_room) "cle" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/engineering/engine_room) "clf" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "nuke_shuttle_dock_inner"; locked = 1; name = "Docking Port Airlock"; req_access = null; req_access_txt = "13"},/turf/simulated/floor/plating,/area/hallway/secondary/entry/port) -"clg" = (/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/valve/digital/open{dir = 4},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/engineering/engine_room) -"clh" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 6},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplatecorner"},/area/engineering/engine_room) +"clg" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{dir = 4; icon_state = "warnplatecorner"},/area/engineering/engine_room) +"clh" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan{tag = "icon-map (EAST)"; icon_state = "map"; dir = 4},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplatecorner"},/area/engineering/engine_room) "cli" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor,/area/medical/virologyaccess) -"clj" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{tag = "icon-intact (SOUTHWEST)"; icon_state = "intact"; dir = 10},/turf/simulated/floor/plating{dir = 1; icon_state = "warnplatecorner"},/area/engineering/engine_room) +"clj" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/engineering/engine_room) "clk" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/turf/simulated/floor/plating,/area/engineering/engine_room) "cll" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/heat_exchanging{tag = "icon-intact (SOUTHWEST)"; icon_state = "intact"; dir = 10},/turf/space,/area/space) "clm" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/heat_exchanging{dir = 4},/turf/space,/area/space) @@ -5997,7 +5997,7 @@ "clq" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "xenobio5"; name = "Containment Blast Doors"; opacity = 0},/obj/structure/cable/green,/turf/simulated/floor/plating,/area/rnd/xenobiology) "clr" = (/obj/structure/table,/obj/item/stack/cable_coil/random,/obj/item/stack/cable_coil/random,/obj/machinery/light{dir = 8},/turf/simulated/floor,/area/storage/art) "cls" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "xenobio5"; name = "Containment Blast Doors"; opacity = 0},/obj/structure/disposalpipe/segment,/obj/structure/cable/green,/turf/simulated/floor/plating,/area/rnd/xenobiology) -"clt" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan{dir = 8},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engineering/engine_room) +"clt" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan{dir = 8},/turf/simulated/floor/plating,/area/engineering/engine_room) "clu" = (/obj/machinery/door/window/southright{name = "Containment Pen"; req_access_txt = "47"},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "xenobio4"; name = "Containment Blast Doors"; opacity = 0},/turf/simulated/floor/engine,/area/rnd/xenobiology) "clv" = (/obj/machinery/power/emitter{anchored = 1; id = "EngineEmitter"; state = 2},/obj/structure/cable/cyan,/turf/simulated/floor/plating,/area/engineering/engine_room) "clw" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 0},/turf/simulated/wall,/area/maintenance/substation/engineering) @@ -6048,10 +6048,10 @@ "cmp" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "solar_xeno_inner"; locked = 1; name = "Engineering External Access"; req_access = null; req_access_txt = "13"},/obj/machinery/atmospherics/pipe/simple/visible,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "cmq" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "cmr" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) -"cms" = (/obj/machinery/atmospherics/pipe/manifold/visible/yellow{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engineering/engine_room) +"cms" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/manifold/visible/cyan{tag = "icon-map (EAST)"; icon_state = "map"; dir = 4},/turf/simulated/floor/plating,/area/engineering/engine_room) "cmt" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/structure/lattice,/turf/space,/area/space) -"cmu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact (EAST)"},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "EngineRadiatorViewport"; name = "Engine Radiator Viewport Shutter"; opacity = 0},/turf/simulated/floor/plating,/area/engineering/engine_room) -"cmv" = (/obj/machinery/atmospherics/pipe/manifold4w/visible/cyan,/obj/machinery/meter,/turf/simulated/floor/plating,/area/engineering/engine_room) +"cmu" = (/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact (EAST)"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/engineering/engine_room) +"cmv" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{tag = "icon-intact (SOUTHEAST)"; icon_state = "intact"; dir = 6},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplatecorner"},/area/engineering/engine_room) "cmw" = (/obj/machinery/atmospherics/unary/heat_exchanger{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 6},/area/engineering/engine_waste) "cmx" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/visible/purple,/obj/machinery/meter{id = "wloop_atm_meter"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engineering/engine_waste) "cmy" = (/obj/machinery/atmospherics/pipe/manifold/visible/purple,/obj/machinery/meter,/turf/simulated/floor/plating,/area/engineering/engine_waste) @@ -6064,7 +6064,7 @@ "cmF" = (/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "EngineEmitterPortWest"; layer = 3.3; name = "Engine Waste Handling Access"},/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/turf/simulated/floor/plating,/area/engineering/engine_room) "cmG" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/turf/simulated/floor/plating,/area/engineering/engine_room) "cmH" = (/obj/machinery/atmospherics/pipe/manifold/visible/yellow,/turf/simulated/floor/plating,/area/engineering/engine_room) -"cmI" = (/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/engineering/engine_room) +"cmI" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 10},/turf/simulated/floor/plating{dir = 1; icon_state = "warnplatecorner"},/area/engineering/engine_room) "cmJ" = (/turf/simulated/wall/r_wall,/area/engineering/storage) "cmK" = (/obj/machinery/constructable_frame/machine_frame,/turf/simulated/floor,/area/engineering/workshop) "cmL" = (/obj/effect/decal/cleanable/blood/oil{amount = 0},/turf/simulated/floor,/area/engineering/workshop) @@ -7127,51 +7127,51 @@ "cHc" = (/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "EngineVent"; name = "Engine Core Vent"; p_open = 0},/turf/simulated/floor/engine,/area/engineering/engine_room) "cHd" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/heat_exchanging,/turf/space,/area/space) "cHe" = (/obj/machinery/camera{c_tag = "Engineering Core South"; dir = 1; network = list("SS13","Supermatter")},/turf/simulated/floor/engine/nitrogen{dir = 8; icon_state = "warnplate"; name = "plating"},/area/engineering/engine_room) -"cHf" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/engineering/engine_room) +"cHf" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/visible/green{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor/plating,/area/engineering/engine_room) "cHg" = (/turf/simulated/floor/engine/nitrogen{dir = 4; icon_state = "warnplate"; name = "plating"},/area/engineering/engine_room) "cHh" = (/turf/simulated/floor/engine/nitrogen,/area/engineering/engine_room) -"cHi" = (/obj/machinery/door_control{desc = "A remote control-switch for opening the engines blast doors."; id = "EngineRads"; name = "Radiation Collector Access"; pixel_x = 0; pixel_y = -25; req_access_txt = "10"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engineering/engine_room) -"cHj" = (/obj/machinery/power/rad_collector,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/engineering/engine_room) -"cHk" = (/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "EngineRads"; layer = 3.3; name = "Engine Radiation Collector Access"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/engineering/engine_room) -"cHl" = (/obj/machinery/door_control{id = "EngineVent"; name = "Engine Ventillatory Control"; pixel_x = -25; pixel_y = 0; req_access_txt = "10"},/turf/simulated/floor/plating,/area/engineering/engine_room) -"cHm" = (/obj/machinery/power/rad_collector,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cHi" = (/obj/machinery/atmospherics/valve/digital{dir = 4; name = "Emergency Cooling Valve 1"},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cHj" = (/obj/machinery/atmospherics/pipe/manifold/visible/green{tag = "icon-map (EAST)"; icon_state = "map"; dir = 4},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cHk" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engineering/engine_room) +"cHl" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan{tag = "icon-map (EAST)"; icon_state = "map"; dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engineering/engine_room) +"cHm" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 10},/turf/simulated/floor/plating,/area/engineering/engine_room) "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) -"cHo" = (/obj/machinery/door_control{desc = "A remote control-switch for opening the engines blast doors."; id = "EngineRads"; name = "Radiation Collector Access"; pixel_x = 0; pixel_y = -25; req_access_txt = "10"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engineering/engine_room) +"cHo" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/manifold4w/visible/cyan,/turf/simulated/floor/plating,/area/engineering/engine_room) "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) "cHq" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging{dir = 5},/turf/space,/area/space) -"cHr" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engineering/engine_room) -"cHs" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/engineering/engine_room) -"cHt" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engineering/engine_room) +"cHr" = (/obj/structure/grille,/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 = "EngineRadiatorViewport"; name = "Engine Radiator Viewport Shutter"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/visible/green{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cHs" = (/obj/machinery/atmospherics/binary/pump{dir = 8},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cHt" = (/obj/machinery/atmospherics/pipe/manifold/visible/green{dir = 1},/obj/machinery/meter,/turf/simulated/floor/plating,/area/engineering/engine_room) "cHu" = (/obj/machinery/power/supermatter{layer = 4},/obj/machinery/mass_driver{id = "enginecore"},/turf/simulated/floor/engine/nitrogen{icon_state = "gcircuit"; name = "floor"},/area/engineering/engine_room) "cHv" = (/turf/simulated/floor/engine/nitrogen{dir = 8; icon_state = "warnplate"; name = "plating"},/area/engineering/engine_room) -"cHw" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/plating,/area/engineering/engine_room) -"cHx" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 1; frequency = 1438; icon_state = "map_injector"; id = "cooling_in"; name = "Coolant Injector"; use_power = 1; pixel_y = 1; volume_rate = 700},/turf/simulated/floor/engine/nitrogen{dir = 1; icon_state = "warnplatecorner"; name = "plating"},/area/engineering/engine_room) -"cHy" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/engineering/engine_room) -"cHz" = (/obj/machinery/atmospherics/unary/vent_pump/engine{dir = 1; external_pressure_bound = 100; external_pressure_bound_default = 0; frequency = 1438; icon_state = "map_vent_in"; id_tag = "cooling_out"; initialize_directions = 1; use_power = 1; pressure_checks = 1; pressure_checks_default = 1; pump_direction = 0},/turf/simulated/floor/engine/nitrogen{icon_state = "warnplatecorner"; name = "plating"},/area/engineering/engine_room) +"cHw" = (/obj/machinery/atmospherics/pipe/manifold/visible/green{dir = 8},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cHx" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan,/turf/simulated/floor/plating,/area/engineering/engine_room) +"cHy" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "SupermatterPort"; layer = 3.3; name = "Supermatter Chamber Blast Door"},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cHz" = (/obj/machinery/atmospherics/valve/digital{dir = 4; name = "Emergency Cooling Valve 2"},/turf/simulated/floor/plating,/area/engineering/engine_room) "cHA" = (/obj/machinery/air_sensor{frequency = 1438; id_tag = "engine_sensor"; output = 63},/turf/simulated/floor/engine/nitrogen{icon_state = "warnplate"; name = "plating"},/area/engineering/engine_room) "cHB" = (/obj/machinery/light{dir = 8},/turf/simulated/floor/plating,/area/engineering/engine_room) "cHC" = (/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/obj/machinery/power/smes/buildable{charge = 0; RCon_tag = "Solar - Aft Port"},/turf/simulated/floor/plating,/area/maintenance/portsolar) -"cHD" = (/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/engineering/engine_room) -"cHE" = (/obj/machinery/door_control{desc = "A remote control-switch for the engine radiator viewport shutters."; id = "EngineRadiatorViewport"; name = "Engine Radiator Viewport Shutters"; pixel_x = 25; pixel_y = 0; req_access_txt = "10"},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cHD" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engineering/engine_room) +"cHE" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 9},/turf/simulated/floor/plating,/area/engineering/engine_room) "cHF" = (/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/engineering/engine_room) -"cHG" = (/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},/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "EngineEmitterPort"; layer = 3.3; name = "Engine Blast Doors"},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cHG" = (/obj/machinery/atmospherics/pipe/manifold/visible/purple,/turf/simulated/floor/plating,/area/engineering/engine_room) "cHH" = (/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/engineering/engine_room) -"cHI" = (/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/engineering/engine_room) +"cHI" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/turf/simulated/floor/plating,/area/engineering/engine_room) "cHJ" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/heat_exchanging{dir = 6},/turf/space,/area/space) "cHK" = (/obj/item/stack/rods{amount = 10},/turf/space,/area/space) "cHL" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/turf/simulated/floor/plating,/area/engineering/engine_room) -"cHM" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact (EAST)"},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "EngineRadiatorViewport"; name = "Engine Radiator Viewport Shutter"; opacity = 0},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/engineering/engine_room) -"cHN" = (/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/engineering/engine_room) -"cHO" = (/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/engineering/engine_room) -"cHP" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/visible/yellow,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 6},/area/engineering/engine_room) -"cHQ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/engineering/engine_room) -"cHR" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating{dir = 1; icon_state = "warnplatecorner"},/area/engineering/engine_room) -"cHS" = (/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/engineering/engine_room) -"cHT" = (/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/engineering/engine_room) +"cHM" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/turf/simulated/floor/plating{icon_state = "platebot"},/area/engineering/engine_room) +"cHN" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engineering/engine_room) +"cHO" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "SupermatterPort"; layer = 3.3; name = "Supermatter Chamber Blast Door"},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cHP" = (/obj/machinery/atmospherics/binary/circulator{anchored = 1},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cHQ" = (/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/floor/plating,/area/engineering/engine_room) +"cHR" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engineering/engine_room) +"cHS" = (/obj/machinery/atmospherics/binary/circulator{anchored = 1; dir = 1},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cHT" = (/obj/machinery/power/generator{anchored = 1; dir = 4},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/engineering/engine_room) "cHU" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/engineering/engine_waste) -"cHV" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/engineering/engine_room) -"cHW" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/engineering/engine_room) -"cHX" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplatecorner"},/area/engineering/engine_room) +"cHV" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/floor/plating,/area/engineering/engine_room) +"cHW" = (/obj/machinery/atmospherics/pipe/simple/visible/green{tag = "icon-intact (SOUTHEAST)"; icon_state = "intact"; dir = 6},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cHX" = (/obj/machinery/atmospherics/pipe/simple/visible/green{dir = 9; icon_state = "intact"; tag = "icon-intact (SOUTHEAST)"},/turf/simulated/floor/plating,/area/engineering/engine_room) "cHY" = (/turf/simulated/wall/r_wall,/area/engineering/engine_waste) "cHZ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplatecorner"},/area/engineering/engine_waste) "cIa" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/plating,/area/engineering/engine_waste) @@ -7179,7 +7179,7 @@ "cIc" = (/obj/item/stack/cable_coil,/turf/space,/area/space) "cId" = (/obj/machinery/light/small,/turf/simulated/floor/plating,/area/engineering/engine_waste) "cIe" = (/turf/simulated/floor/plating,/area/engineering/engine_waste) -"cIf" = (/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/power/smes/buildable{charge = 2e+006; RCon_tag = "Engine - Core"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/engineering/engine_room) +"cIf" = (/obj/machinery/atmospherics/unary/vent_pump/engine{dir = 1; external_pressure_bound = 100; external_pressure_bound_default = 0; frequency = 1438; icon_state = "map_vent_in"; id_tag = "cooling_out"; initialize_directions = 1; use_power = 1; pressure_checks = 1; pressure_checks_default = 1; pump_direction = 0},/turf/simulated/floor/engine/nitrogen{dir = 1; icon_state = "warnplatecorner"; name = "plating"},/area/engineering/engine_room) "cIg" = (/obj/machinery/light{dir = 8},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = -24},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/rnd/xenobiology) "cIh" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_x = 0; pixel_y = 32},/obj/structure/cable/cyan{d2 = 8; icon_state = "0-8"},/obj/machinery/power/smes/buildable{charge = 2e+006; RCon_tag = "Substation - Atmospherics"},/turf/simulated/floor/plating,/area/engineering/atmos/storage) "cIi" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/vending/wallmed1{name = "Emergency NanoMed"; pixel_x = -7; pixel_y = -32; req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 7; pixel_y = -32},/turf/simulated/floor,/area/rnd/xenobiology) @@ -7196,21 +7196,44 @@ "cIt" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plating,/area/maintenance/research_port) "cIu" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table,/obj/machinery/camera{c_tag = "Engineering Locker Room"; dir = 1; network = list("SS13")},/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/turf/simulated/floor,/area/engineering/locker_room) "cIv" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "10;24"},/obj/machinery/door/firedoor,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/substation/engineering) +"cIw" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "SupermatterPort"; layer = 3.3; name = "Supermatter Chamber Blast Door"},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cIx" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 1; frequency = 1438; icon_state = "map_injector"; id = "cooling_in"; name = "Coolant Injector"; use_power = 1; pixel_y = 1; volume_rate = 700},/turf/simulated/floor/engine/nitrogen{icon_state = "warnplatecorner"; name = "plating"},/area/engineering/engine_room) +"cIy" = (/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/engineering/engine_room) +"cIz" = (/obj/machinery/door_control{id = "EngineVent"; name = "Engine Ventillatory Control"; pixel_x = -25; pixel_y = 0; req_access_txt = "10"},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/engineering/engine_room) +"cIA" = (/obj/machinery/camera{c_tag = "Engineering Core West"; dir = 8; network = list("SS13","Supermatter")},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engineering/engine_room) +"cIB" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 5},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cIC" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/green,/turf/simulated/floor/plating,/area/engineering/engine_room) +"cID" = (/obj/machinery/door_control{desc = "A remote control-switch for the engine radiator viewport shutters."; id = "EngineRadiatorViewport"; name = "Engine Radiator Viewport Shutters"; pixel_x = 25; pixel_y = 0; req_access_txt = "10"},/obj/machinery/atmospherics/pipe/manifold/visible/purple{dir = 4},/obj/machinery/meter,/turf/simulated/floor/plating,/area/engineering/engine_room) +"cIE" = (/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},/obj/machinery/door/blast/regular{dir = 8; icon_state = "pdoor1"; id = "SupermatterPort"; layer = 3.3; name = "Supermatter Chamber Blast Door"},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cIF" = (/obj/machinery/camera{c_tag = "Engineering Core East"; dir = 4; network = list("SS13","Supermatter")},/obj/machinery/atmospherics/pipe/manifold/visible/yellow{dir = 8},/obj/machinery/meter,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engineering/engine_room) +"cIG" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cIH" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 9},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cII" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 6},/turf/simulated/floor/plating,/area/engineering/engine_room) "cIJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/maintenance/portsolar) "cIK" = (/turf/simulated/wall/r_wall,/area/maintenance/portsolar) "cIL" = (/turf/simulated/wall/r_wall,/area/maintenance/engi_engine) "cIM" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/maintenance{name = "Engine Waste Handling"; req_one_access_txt = "10;24"},/turf/simulated/floor/plating,/area/maintenance/engi_engine) +"cIN" = (/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 = "EngineRadiatorViewport"; name = "Engine Radiator Viewport Shutter"; opacity = 0},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/visible/green{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cIO" = (/obj/machinery/atmospherics/pipe/simple/visible/green,/turf/simulated/floor/plating,/area/engineering/engine_room) +"cIP" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 6},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 10},/area/engineering/engine_room) +"cIQ" = (/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 = "SupermatterPort"; name = "Supermatter Chamber Blast Doors"; pixel_x = -5; pixel_y = -25; req_access_txt = "10"},/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/engineering/engine_room) +"cIR" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 6},/area/engineering/engine_room) +"cIS" = (/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/engineering/engine_room) +"cIT" = (/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/power/generator{anchored = 1; dir = 4},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/engineering/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) "cIX" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = -32; pixel_y = 0},/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/canister/air/airlock,/turf/simulated/floor/plating{dir = 1; icon_state = "warnplatecorner"},/area/maintenance/portsolar) "cIY" = (/obj/machinery/power/terminal{dir = 4},/obj/machinery/light/small{dir = 1},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/maintenance/portsolar) +"cIZ" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 10},/turf/simulated/floor/plating{dir = 1; icon_state = "warnplatecorner"},/area/engineering/engine_room) "cJa" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 0},/turf/simulated/wall/r_wall,/area/maintenance/portsolar) "cJb" = (/obj/structure/closet/wardrobe/black,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating{dir = 1; icon_state = "warnplatecorner"},/area/maintenance/engi_engine) "cJc" = (/obj/structure/closet/crate,/obj/item/device/multitool,/obj/item/device/multitool,/obj/item/device/assembly/prox_sensor,/obj/item/device/flashlight,/turf/simulated/floor/plating,/area/maintenance/engi_engine) +"cJd" = (/obj/machinery/light,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/engineering/engine_room) "cJe" = (/turf/simulated/floor/plating,/area/maintenance/engi_engine) "cJf" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/maintenance/engi_engine) "cJg" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/engi_engine) +"cJh" = (/turf/simulated/floor/plating{dir = 2; icon_state = "warnplatecorner"},/area/engineering/engine_room) "cJz" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "robotics_solar_outer"; locked = 1; name = "Engineering External Access"; req_access = null; req_access_txt = "10;13"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/portsolar) "cJA" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "robotics_solar_pump"},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "robotics_solar_pump"; tag_exterior_door = "robotics_solar_outer"; frequency = 1379; id_tag = "robotics_solar_airlock"; tag_interior_door = "robotics_solar_inner"; layer = 3.3; pixel_x = 0; pixel_y = -25; req_access_txt = "13"; tag_chamber_sensor = "robotics_solar_sensor"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "robotics_solar_sensor"; layer = 3.3; pixel_x = 12; pixel_y = -25},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/warning_stripes,/turf/simulated/floor/plating,/area/maintenance/portsolar) "cJB" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "robotics_solar_inner"; locked = 1; name = "Engineering External Access"; req_access = null; req_access_txt = "13"},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/portsolar) @@ -7433,19 +7456,19 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaamaaaaaaaafaafcfIchkchlchkcfIchichjchicfIchgchhchgcfIaaacfIchgchgchfcfIaaaaafaaaceUchecexchdceychcchachbcgYcgZcgWcgXcgtcgRcgBcgCcgBcgucgtcgrcgpcgoceXaaLcGgcGgcGgcGgcGgcGgcGgbNUciEciDcGjaafaaaaaaaafcGkcDfaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacGlcEJcEJcEJcEJcEJcGlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaaaaafaaacrPaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaafaamaaaaafaafaaacfIchkchmchkcfIchichnchicfIchgchochgcfIaafcfIchgchgchgcfIaafaafaafcidciecifcigcihcikchpchbcgYcAhchGchHcgtciccimcilciocincgtcipcirciqceXaaacGgcGgcGgcGgcGgcGgcGgcGFcGGcGHbNUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqvcCmcqxcqxcqxcCocqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPcrPcrPcrPcrPaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbZSaaaaaacfIcfIcfIcfIcfIcfIcfIcfIcfIcfIcfIcfIcfIaaaciscfIcfIcfIcfIaaaaaaaaaaaacjbcjbcjbcjbcjbciycitcitcitcitcjacitciWcivciwcivciucitcitcixcitcitcitcGgcGgcGgcGgcGgcGgcGgaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaacyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcrPaaaaaaaafaafaaaaafaafaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaafaaacGQcGRcGRcGRcGScjycjccjdcjecjicjFcjGcjHcjIcjzcjAcIfcjEcjNcjMcjPcjOcjKcjJcjJcjLcjQcitcGgcGgcGgcGgcGgcGgcGgaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafcHncjVcHpaaacHncjVcHpaaacHncjVcHpaafaafaaaaafaafaafaafaafcHqcGRcGRcGRcGScjycjXcjYcjTcjUckzckAcksckuckickrcjZckecjJcjRcjJcjJcjJcjJcjJcjJcjScitcGgcGgcGgcGgcGgcGgcGgaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaacHncjWcHpaaacHncjWcHpaaacHncjWcHpaafaafaaaaafaaaaaacHKaafcGQcGRcGRcGRcGScjycjXckTckWckYckZckAclaclccldclecjJcjJclhclgcljcjJcjJcjJcjJcjJclkcitcIbaafaaIaafaafaafaafaafaafaafaafaafckBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafcHncjWcHpaaacHncjWcHpaafcHncjWcHpaafaaaaaaaafaafcIcaaaaafcHqcGRcGRcGRcGScjycmycmBcmwcmxcmEcmFcmCcmDcmHcmIcmGcmGcmsclvcltclnclnclnclnclncmvcmucmtclmclmclmclmclmclmclmclmclmcllaaackBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaacHncjWcHpaafcHncjWcHpaaacHncjWcHpaaaaaaaaaaaaaafaafaaaaafaaaaaaaaaaaaaafcHYcIecIdcIacHZcHUcjGckecjJcHXcHWcHScHVcHPcHQcHNcHOcHScHTcHRcjJcHLcHMcmtcllcHJcllcHJcllcHJcllcHJcllcHdaafckBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaaIaafaaacHncjWcHpaafcHncjWcHpaaacHncjWcHpaafaaaaaaaaaaaaaafaafcIJcIKcIKcIKcIKcILcILcILcILcILcIMcILcitcjJcjJcHDcitcitcitcHFcHGcHHcitcitcitcHIcjJcHEcitaaacHdcHdcHdcHdcHdcHdcHdcHdcHdcHdaafckBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaafaaaaafaafczCaafaafaafczCaafaaaaafczCaafaaaaaaaaaaaaaaacIUcIVcIWcIXcIYcHCcJacJbcJcciFcJecJfcJgcJecitcHBcjJcHrcHkcHmcHycHzcHAcHxcHycHjcHkcHtcjJcHwcitaaacHdcHdcHdcHdcHdcHdcHdcHdcHdcHdaaaaanaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafcydcxzcxycxxcxxcxxcxxcxxcxxcxxcxxcxxcxxcxxczicxzcxzcxzcypcJzcJAcJBcJCcJDcJEcJFcJGcJHcJHcJHcJIcJJcJKcitcjJcjJcHrcHkcHmcHscHgcHucHvcHscHjcHkcHtcjJcjJcitaaacHdcHdcHdcHdcHdcHdcHdcHdcHdcHdaafckBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYaaactYctYctYctYctYaaactYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaafaaaaafaafcxfaafaaaaafcxfaafaaaaafcxfaafaaaaaaaaaaaaaaacIUcIVcJRcJScJTcJUcIKcJVcJWcJecJecJXcJXcJYcitcHlcjJcHocHkcHmcHfcHgcHhcHecHfcHjcHkcHicjJcjJcitaaacHdcHdcHdcHdcHdcHdcHdcHdcHdcHdaafaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYaaactYctYctYctYctYaaactYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaaIaafaafcHncwrcHpaaacHncwrcHpaaacHncwrcHpaafaaaaaaaaaaaaaafaafcKfcIKcIKcIKcIKcKgcKhcKicKicKjcKgcKgcitcitcjGcitcitcitcitcitcHccitcitcitcitcitcjGcitcitaafcHbcHacHbcHacHbcHacHbcHacHbcHaaaaaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacHncwrcHpaafcHncwrcHpaaacHncwrcHpaaaaaaaaaaafaaaaafaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaafaaaaafaafaaaaaaaafaafaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKlcKlcKlcKlcKlcKlcKlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafcHncwrcHpaaacHncwrcHpaaacHncwrcHpaafaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaaaaLaaaaafaaaaaackBckBckBcGZckBckBaanckBckBaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKlcKlcKlcKlcKlcKlcKlcKlcKlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafcHncwrcHpaaacHncwrcHpaafcHncwrcHpaafaafaafaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaaIaaIbZSbZSaaIaaIaaaaaaaaaaaIaaIaaIaaIaaIaaIaaIaaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKlcKlcKlcKlcKlcKlcKlcKlcKlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcrPaaaaaaaafaafaaaaafaafaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaafaaacGQcGRcGRcGRcGScjycjccjdcjecjicjFcjGcjHcjIcjzcjAcjRcjEcjNcjMcjPcjOcjKcjQcjJcjLcjQcitcGgcGgcGgcGgcGgcGgcGgaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafcHncjVcHpaaacHncjVcHpaaacHncjVcHpaafaafaaaaafaafaafaafaafcHqcGRcGRcGRcGScjycjXcjYcjTcjUckzckAcksckuclhcljcldclgckiclcckickickickrckicjZcjScitcGgcGgcGgcGgcGgcGgcGgaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaacHncjWcHpaaacHncjWcHpaaacHncjWcHpaafaafaaaaafaaaaaacHKaafcGQcGRcGRcGRcGScjycjXckTckWckYckZckAclacltcmscjJcjJcjJcmvcmucmIcjJcjJcltcHicHfcHjcitcitcitcIbaafaaIaafaafaafaafaafaafaafaafaafckBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafcHncjWcHpaaacHncjWcHpaafcHncjWcHpaafaaaaaaaafaafcIcaaaaafcHqcGRcGRcGRcGScjycmycmBcmwcmxcmEcmFcmCcmDcHxclnclnclncHlclvcHkclnclncHocHmclecHwcHtcHscHrcmtclmclmclmclmclmclmclmclmclmcllaaackBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaacHncjWcHpaafcHncjWcHpaaacHncjWcHpaaaaaaaaaaaaaafaafaaaaafaaaaaaaaaaaaaafcHYcIecIdcIacHZcHUcjGckecjJcjJcjJcJhcJdcIRcIScIPcIQcIZclkcHScITcHPcIOcIIcINcmtcllcHJcllcHJcllcHJcllcHJcllcHdaafckBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaaIaafaaacHncjWcHpaafcHncjWcHpaaacHncjWcHpaafaaaaaaaaaaaaaafaafcIJcIKcIKcIKcIKcILcILcILcILcILcIMcILcitcHBcjJcjJcjJcIAcitcHHcIEcHFcitcIFcIGcIHclecIBcICcIDcitaaacHdcHdcHdcHdcHdcHdcHdcHdcHdcHdaafckBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaafaaaaafaafczCaafaafaafczCaafaaaaafczCaafaaaaaaaaaaaaaaacIUcIVcIWcIXcIYcHCcJacJbcJcciFcJecJfcJgcJecitcIzcIycjJcjJcHNcIwcIxcHAcIfcIwcHRcHLcHmclecHWcHXcHVcitaaacHdcHdcHdcHdcHdcHdcHdcHdcHdcHdaaaaanaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafcydcxzcxycxxcxxcxxcxxcxxcxxcxxcxxcxxcxxcxxczicxzcxzcxzcypcJzcJAcJBcJCcJDcJEcJFcJGcJHcJHcJHcJIcJJcJKcitcHMcHMcjJcjJcHNcHOcHgcHucHvcHOcHRcjJcHScHTcHPcjJcHQcitaaacHdcHdcHdcHdcHdcHdcHdcHdcHdcHdaafckBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYaaactYctYctYctYctYaaactYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaafaaaaafaafcxfaafaaaaafcxfaafaaaaafcxfaafaaaaaaaaaaaaaaacIUcIVcJRcJScJTcJUcIKcJVcJWcJecJecJXcJXcJYcitcHMcHMcjJcjJcHNcHycHgcHhcHecHycHDcmGcmHcHzcHGcHIcHEcitaaacHdcHdcHdcHdcHdcHdcHdcHdcHdcHdaafaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYaaactYctYctYctYctYaaactYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaaIaafaafcHncwrcHpaaacHncwrcHpaaacHncwrcHpaafaaaaaaaaaaaaaafaafcKfcIKcIKcIKcIKcKgcKhcKicKicKjcKgcKgcitcitcjGcitcitcitcitcitcHccitcitcitcitcitcjGcitcitcitcitaafcHbcHacHbcHacHbcHacHbcHacHbcHaaaaaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacHncwrcHpaafcHncwrcHpaaacHncwrcHpaaaaaaaaaaafaaaaafaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaaaaaaafaaaaaaaaaaaaaafaafaaaaaaaafaafaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKlcKlcKlcKlcKlcKlcKlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafcHncwrcHpaaacHncwrcHpaaacHncwrcHpaafaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaLaaaaafaafaaaaaaaamaamckBckBckBcGZckBckBaanckBckBaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKlcKlcKlcKlcKlcKlcKlcKlcKlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafcHncwrcHpaaacHncwrcHpaafcHncwrcHpaafaafaafaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaaIaaIbZSbZSaaIaaIaaaaaaaaaaaIaaIaaIaaIaaIaaIaaIaaIaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKlcKlcKlcKlcKlcKlcKlcKlcKlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqaafcHncwncHpaaacHncwncHpaaacHncwncHpaafaaIaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKlcKlcKlcKlcKlcKlcKlcKlcKlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaaaaafaaaaaaaaaaafaafaafaaaaaaaafaafaaaaaIaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKncKncKncKncKncKncKnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKlcKlcKlcKlcKlcKlcKlcKlcKlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaaIaamaamaaqaaIaaIaaIaaIaamaaIaaIaamcKoaafaaaaaaaaaaaaaaacKpaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaacHKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKncKncKncKncKncKncKncKncKnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKlcKlcKlcKlcKlcKlcKlcKlcKlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From b14e76f4a02ab50b1891c33cd84ab0484729d24e Mon Sep 17 00:00:00 2001 From: RavingManiac Date: Fri, 13 Feb 2015 00:56:01 +0800 Subject: [PATCH 20/45] Fixed compilation error. --- code/modules/supermatter/supermatter.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/supermatter/supermatter.dm b/code/modules/supermatter/supermatter.dm index 8aa31fa9b8..422f03c399 100644 --- a/code/modules/supermatter/supermatter.dm +++ b/code/modules/supermatter/supermatter.dm @@ -16,7 +16,7 @@ */ //Controls how much power is produced by each collector in range - this is the main parameter for tweaking SM balance, as it basically controls how the power variable relates to the rest of the game. -//#define POWER_FACTOR 1.0 +#define POWER_FACTOR 1.0 #define DECAY_FACTOR 700 //Affects how fast the supermatter power decays #define CRITICAL_TEMPERATURE 7000 //K #define CHARGING_FACTOR 0.05 From 01798c98b62829c6584c4d454d6c1cf83a4c88d2 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Fri, 13 Feb 2015 00:40:18 -0500 Subject: [PATCH 21/45] Rewrites syringe and dart guns --- .../objects/items/weapons/storage/boxes.dm | 18 +- code/modules/admin/verbs/vox_raiders.dm | 4 +- code/modules/mob/living/carbon/human/human.dm | 9 +- .../mob/living/carbon/human/human_defense.dm | 7 + code/modules/mob/living/living_defense.dm | 9 +- code/modules/projectiles/gun.dm | 1 + code/modules/projectiles/guns/projectile.dm | 29 +- code/modules/projectiles/projectile.dm | 1 + code/modules/reagents/dartgun.dm | 266 ++++++------------ .../reagents/reagent_containers/syringes.dm | 15 +- code/modules/reagents/syringe_gun.dm | 235 ++++++++-------- code/modules/research/designs.dm | 6 +- icons/obj/ammo.dmi | Bin 4637 -> 4887 bytes icons/obj/syringe.dmi | Bin 3323 -> 3325 bytes maps/exodus-1.dmm | 2 +- maps/exodus-2.dmm | 2 +- 16 files changed, 269 insertions(+), 335 deletions(-) diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm index ddc0709a62..a1681641ae 100644 --- a/code/game/objects/items/weapons/storage/boxes.dm +++ b/code/game/objects/items/weapons/storage/boxes.dm @@ -79,7 +79,7 @@ /obj/item/weapon/storage/box/syringes name = "box of syringes" desc = "A box full of syringes." - desc = "A biohazard alert warning is printed on the box" +// desc = "A biohazard alert warning is printed on the box" icon_state = "syringe" New() @@ -92,6 +92,22 @@ new /obj/item/weapon/reagent_containers/syringe( src ) new /obj/item/weapon/reagent_containers/syringe( src ) +/obj/item/weapon/storage/box/syringegun + name = "box of compressed gas cartridges" + desc = "A box full of compressed gas cartridges." + icon_state = "syringe" + + New() + ..() + new /obj/item/ammo_casing/gas_cartridge( src ) + new /obj/item/ammo_casing/gas_cartridge( src ) + new /obj/item/ammo_casing/gas_cartridge( src ) + new /obj/item/ammo_casing/gas_cartridge( src ) + new /obj/item/ammo_casing/gas_cartridge( src ) + new /obj/item/ammo_casing/gas_cartridge( src ) + new /obj/item/ammo_casing/gas_cartridge( src ) + + /obj/item/weapon/storage/box/beakers name = "box of beakers" icon_state = "beaker" diff --git a/code/modules/admin/verbs/vox_raiders.dm b/code/modules/admin/verbs/vox_raiders.dm index 6676acec32..6c34bb92c6 100644 --- a/code/modules/admin/verbs/vox_raiders.dm +++ b/code/modules/admin/verbs/vox_raiders.dm @@ -37,7 +37,7 @@ var/global/vox_tick = 1 equip_to_slot_or_del(new /obj/item/weapon/storage/belt/utility/full(src), slot_belt) equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/monocle(src), slot_glasses) // REPLACE WITH CODED VOX ALTERNATIVE. equip_to_slot_or_del(new /obj/item/weapon/card/emag(src), slot_l_store) - equip_to_slot_or_del(new /obj/item/weapon/gun/dartgun/vox/raider(src), slot_r_hand) + equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/dartgun/vox/raider(src), slot_r_hand) equip_to_slot_or_del(new /obj/item/device/multitool(src), slot_l_hand) if(4) // Vox medic! @@ -46,7 +46,7 @@ var/global/vox_tick = 1 equip_to_slot_or_del(new /obj/item/weapon/storage/belt/utility/full(src), slot_belt) // Who needs actual surgical tools? equip_to_slot_or_del(new /obj/item/clothing/glasses/hud/health(src), slot_glasses) // REPLACE WITH CODED VOX ALTERNATIVE. equip_to_slot_or_del(new /obj/item/weapon/circular_saw(src), slot_l_store) - equip_to_slot_or_del(new /obj/item/weapon/gun/dartgun/vox/medical, slot_r_hand) + equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/dartgun/vox/medical, slot_r_hand) equip_to_slot_or_del(new /obj/item/clothing/mask/breath(src), slot_wear_mask) equip_to_slot_or_del(new /obj/item/weapon/tank/nitrogen(src), slot_back) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index dd5bfe7d59..38ffc73f4e 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1220,10 +1220,11 @@ /mob/living/carbon/human/can_inject(var/mob/user, var/error_msg, var/target_zone) . = 1 - if(!user) - target_zone = pick("chest","chest","chest","left leg","right leg","left arm", "right arm", "head") - else if(!target_zone) - target_zone = user.zone_sel.selecting + if(!target_zone) + if(!user) + target_zone = pick("chest","chest","chest","left leg","right leg","left arm", "right arm", "head") + else + target_zone = user.zone_sel.selecting switch(target_zone) if("head") diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index a45a11f453..858bee60c1 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -389,6 +389,13 @@ emp_act src.anchored = 1 src.pinned += O +/mob/living/carbon/human/embed(var/obj/O, var/def_zone=null) + if(!def_zone) ..() + + var/datum/organ/external/affecting = get_organ(def_zone) + if(affecting) + affecting.embed(O) + /mob/living/carbon/human/proc/bloody_hands(var/mob/living/source, var/amount = 2) if (gloves) diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 1783bad912..2fa9cdc4b6 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -148,8 +148,7 @@ if(W.sharp) //Projectile is suitable for pinning. //Handles embedding for non-humans and simple_animals. - O.loc = src - src.embedded += O + embed(O) var/turf/T = near_wall(dir,2) @@ -158,7 +157,11 @@ visible_message("[src] is pinned to the wall by [O]!","You are pinned to the wall by [O]!") src.anchored = 1 src.pinned += O - src.verbs += /mob/proc/yank_out_object + +/mob/living/proc/embed(var/obj/O, var/def_zone=null) + O.loc = src + src.embedded += O + src.verbs += /mob/proc/yank_out_object //This is called when the mob is thrown into a dense turf /mob/living/proc/turf_collision(var/turf/T, var/speed) diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index d0158816ca..dd7aec246f 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -165,6 +165,7 @@ if(recoil) spawn() shake_camera(user, recoil + 1, recoil) + update_icon() //does the actual shooting /obj/item/weapon/gun/proc/process_projectile(obj/projectile, mob/user, atom/target, var/target_zone, var/params=null, var/pointblank=0, var/reflex=0) diff --git a/code/modules/projectiles/guns/projectile.dm b/code/modules/projectiles/guns/projectile.dm index b467b31a1e..26b42308ad 100644 --- a/code/modules/projectiles/guns/projectile.dm +++ b/code/modules/projectiles/guns/projectile.dm @@ -1,4 +1,4 @@ -#define HOLD_CASINGS 0 //do not do anything after firing. Manual action, like pump shotguns +#define HOLD_CASINGS 0 //do not do anything after firing. Manual action, like pump shotguns, or guns that want to define custom behaviour #define EJECT_CASINGS 1 //drop spent casings on the ground after firing #define CYCLE_CASINGS 2 //experimental: cycle casings, like a revolver. Also works for multibarrelled guns @@ -53,16 +53,19 @@ ..() if(chambered) chambered.expend() + + //check chambered again in case it deleted itself + if(chambered && handle_casings != HOLD_CASINGS) switch(handle_casings) if(EJECT_CASINGS) //eject casing onto ground. chambered.loc = get_turf(src) - chambered = null if(CYCLE_CASINGS) //cycle the casing back to the end. if(ammo_magazine) ammo_magazine.stored_ammo += chambered else loaded += chambered - chambered = null + chambered = null + //Attempts to load A into src, depending on the type of thing being loaded and the load_method //Maybe this should be broken up into separate procs for each load method? @@ -81,6 +84,7 @@ AM.loc = src ammo_magazine = AM user.visible_message("[user] inserts [AM] into [src].", "You insert [AM] into [src]!") + playsound(src.loc, 'sound/weapons/flipblade.ogg', 50, 1) if(SPEEDLOADER) if(loaded.len >= max_shells) user << "[src] is full!" @@ -96,6 +100,7 @@ count++ if(count) user.visible_message("[user] reloads [src].", "You load [count] round\s into [src]!") + playsound(src.loc, 'sound/weapons/empty.ogg', 50, 1) AM.update_icon() else if(istype(A, /obj/item/ammo_casing)) var/obj/item/ammo_casing/C = A @@ -109,20 +114,22 @@ C.loc = src loaded.Insert(1, C) //add to the head of the list user.visible_message("[user] inserts \a [C] into [src].", "You insert \a [C] into [src]!") + playsound(src.loc, 'sound/weapons/empty.ogg', 50, 1) update_icon() -//attempts to unload src -/obj/item/weapon/gun/projectile/proc/unload_ammo(mob/user) +//attempts to unload src. If allow_dump is set to 0, the speedloader unloading method will be disabled +/obj/item/weapon/gun/projectile/proc/unload_ammo(mob/user, var/allow_dump=1) if(ammo_magazine) user.put_in_hands(ammo_magazine) user.visible_message("[user] removes [ammo_magazine] from [src].", "You remove [ammo_magazine] from [src]!") + playsound(src.loc, 'sound/weapons/empty.ogg', 50, 1) ammo_magazine.update_icon() ammo_magazine = null else if(loaded.len) //presumably, if it can be speed-loaded, it can be speed-unloaded. - if(load_method & SPEEDLOADER) + if(allow_dump && load_method & SPEEDLOADER) var/count = 0 var/turf/T = get_turf(user) if(T) @@ -145,17 +152,11 @@ load_ammo(A, user) /obj/item/weapon/gun/projectile/attack_self(mob/user as mob) - if (aim_targets) //TODO replace untargeting with a hotkey - return ..() unload_ammo(user) /obj/item/weapon/gun/projectile/attack_hand(mob/user as mob) - //allow guns with both SPEEDLOADER and SINGLE_CASING a way to remove casings without dumping everything on the floor - if((load_method & SINGLE_CASING) && loaded.len && (src in user)) - var/obj/item/ammo_casing/C = loaded[loaded.len] - loaded.len-- - user.put_in_hands(C) - user.visible_message("[user] removes \a [C] from [src].", "You remove \a [C] from [src]!") + if(src in user) + unload_ammo(user, allow_dump=0) else return ..() diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 131e152354..f16359ad4b 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -229,6 +229,7 @@ /obj/item/projectile/process() spawn while(src) if(kill_count-- < 1) + on_impact(src.loc) //for any final impact behaviours del(src) if((!( current ) || loc == current)) current = locate(min(max(x + xo, 1), world.maxx), min(max(y + yo, 1), world.maxy), z) diff --git a/code/modules/reagents/dartgun.dm b/code/modules/reagents/dartgun.dm index d256f4f5f3..7fa6d52e2e 100644 --- a/code/modules/reagents/dartgun.dm +++ b/code/modules/reagents/dartgun.dm @@ -1,66 +1,94 @@ -/obj/item/weapon/dart_cartridge +/obj/item/projectile/bullet/chemdart + name = "dart" + icon_state = "cbbolt" + damage = 3 + sharp = 1 + embed = 1 + var/reagent_amount = 15 + kill_count = 10 //short range + +/obj/item/projectile/bullet/chemdart/New() + reagents = new/datum/reagents(reagent_amount) + reagents.my_atom = src + +/obj/item/projectile/bullet/chemdart/on_hit(var/atom/target, var/blocked = 0, var/def_zone = null) + if(blocked < 2 && isliving(target)) + var/mob/living/L = target + if(L.can_inject(target_zone=def_zone)) + reagents.trans_to(L, reagent_amount) + +/obj/item/ammo_casing/chemdart + name = "chemical dart" + desc = "A small hollow dart." + icon_state = "dart" + caliber = "dart" + projectile_type = /obj/item/projectile/bullet/chemdart + +/obj/item/ammo_magazine/chemdart name = "dart cartridge" desc = "A rack of hollow darts." - icon = 'icons/obj/ammo.dmi' - icon_state = "darts-5" + icon_state = "darts" item_state = "rcdammo" - opacity = 0 - density = 0 - anchored = 0.0 origin_tech = "materials=2" - var/darts = 5 + mag_type = MAGAZINE + caliber = "dart" + max_ammo = 5 + multiple_sprites = 1 -/obj/item/weapon/dart_cartridge/update_icon() - if(!darts) - icon_state = "darts-0" - else if(darts > 5) - icon_state = "darts-5" - else - icon_state = "darts-[darts]" - return 1 - -/obj/item/weapon/gun/dartgun +/obj/item/weapon/gun/projectile/dartgun name = "dart gun" desc = "A small gas-powered dartgun, capable of delivering chemical cocktails swiftly across short distances." icon_state = "dartgun-empty" + caliber = "dart" + fire_sound = 'sound/weapons/empty.ogg' + fire_sound_text = "a metallic click" + recoil = 0 + silenced = 1 + load_method = MAGAZINE + magazine_type = /obj/item/ammo_magazine/chemdart + auto_eject = 0 + var/list/beakers = list() //All containers inside the gun. var/list/mixing = list() //Containers being used for mixing. - var/obj/item/weapon/dart_cartridge/cartridge = null //Container of darts. var/max_beakers = 3 var/dart_reagent_amount = 15 var/container_type = /obj/item/weapon/reagent_containers/glass/beaker var/list/starting_chems = null -/obj/item/weapon/gun/dartgun/update_icon() - - if(!cartridge) - icon_state = "dartgun-empty" - return 1 - - if(!cartridge.darts) - icon_state = "dartgun-0" - else if(cartridge.darts > 5) - icon_state = "dartgun-5" - else - icon_state = "dartgun-[cartridge.darts]" - return 1 - -/obj/item/weapon/gun/dartgun/New() - +/obj/item/weapon/gun/projectile/dartgun/dartgun/New() ..() if(starting_chems) for(var/chem in starting_chems) var/obj/B = new container_type(src) - B.reagents.add_reagent(chem, 50) + B.reagents.add_reagent(chem, 60) beakers += B - cartridge = new /obj/item/weapon/dart_cartridge(src) update_icon() -/obj/item/weapon/gun/dartgun/examine(mob/user) - update_icon() - if (!..(user, 2)) - return +/obj/item/weapon/gun/projectile/dartgun/update_icon() + if(!ammo_magazine) + icon_state = "dartgun-empty" + return 1 + + if(!ammo_magazine.stored_ammo || ammo_magazine.stored_ammo.len) + icon_state = "dartgun-0" + else if(ammo_magazine.stored_ammo.len > 5) + icon_state = "dartgun-5" + else + icon_state = "dartgun-[ammo_magazine.stored_ammo.len]" + return 1 + +/obj/item/weapon/gun/projectile/dartgun/consume_next_projectile() + . = ..() + var/obj/item/projectile/bullet/chemdart/dart = . + if(istype(dart)) + fill_dart(dart) + +/obj/item/weapon/gun/projectile/dartgun/examine(mob/user) + //update_icon() + //if (!..(user, 2)) + // return + ..() if (beakers.len) user << "\blue [src] contains:" for(var/obj/item/weapon/reagent_containers/glass/beaker/B in beakers) @@ -68,28 +96,7 @@ for(var/datum/reagent/R in B.reagents.reagent_list) user << "\blue [R.volume] units of [R.name]" -/obj/item/weapon/gun/dartgun/attackby(obj/item/I as obj, mob/user as mob) - if(istype(I, /obj/item/weapon/dart_cartridge)) - - var/obj/item/weapon/dart_cartridge/D = I - - if(!D.darts) - user << "\blue [D] is empty." - return 0 - - if(cartridge) - if(cartridge.darts <= 0) - src.remove_cartridge() - else - user << "\blue There's already a cartridge in [src]." - return 0 - - user.drop_item() - cartridge = D - D.loc = src - user << "\blue You slot [D] into [src]." - update_icon() - return +/obj/item/weapon/gun/projectile/dartgun/attackby(obj/item/I as obj, mob/user as mob) if(istype(I, /obj/item/weapon/reagent_containers/glass)) if(!istype(I, container_type)) user << "\blue [I] doesn't seem to fit into [src]." @@ -103,112 +110,16 @@ beakers += B user << "\blue You slot [B] into [src]." src.updateUsrDialog() - -/obj/item/weapon/gun/dartgun/can_fire() - if(!cartridge) - return 0 - else - return cartridge.darts - -/obj/item/weapon/gun/dartgun/proc/has_selected_beaker_reagents() - return 0 - -/obj/item/weapon/gun/dartgun/proc/remove_cartridge() - if(cartridge) - usr << "\blue You pop the cartridge out of [src]." - var/obj/item/weapon/dart_cartridge/C = cartridge - C.loc = get_turf(src) - C.update_icon() - cartridge = null - src.update_icon() - -/obj/item/weapon/gun/dartgun/proc/get_mixed_syringe() - if (!cartridge) - return 0 - if(!cartridge.darts) - return 0 - - var/obj/item/weapon/reagent_containers/syringe/dart = new(src) - - if(mixing.len) - var/mix_amount = dart_reagent_amount/mixing.len - for(var/obj/item/weapon/reagent_containers/glass/beaker/B in mixing) - B.reagents.trans_to(dart,mix_amount) - - return dart - -/obj/item/weapon/gun/dartgun/proc/fire_dart(atom/target, mob/user) - if (locate (/obj/structure/table, src.loc)) - return - else - var/turf/trg = get_turf(target) - var/obj/effect/syringe_gun_dummy/D = new/obj/effect/syringe_gun_dummy(get_turf(src)) - var/obj/item/weapon/reagent_containers/syringe/S = get_mixed_syringe() - if(!S) - user << "\red There are no darts in [src]!" - return - if(!S.reagents) - user << "\red There are no reagents available!" - return - cartridge.darts-- - src.update_icon() - S.reagents.trans_to(D, S.reagents.total_volume) - del(S) - D.icon_state = "syringeproj" - D.name = "syringe" - D.flags |= NOREACT - playsound(user.loc, 'sound/items/syringeproj.ogg', 50, 1) - - for(var/i=0, i<6, i++) - if(!D) break - if(D.loc == trg) break - step_towards(D,trg) - - if(D) - for(var/mob/living/carbon/M in D.loc) - if(!istype(M,/mob/living/carbon)) continue - if(M == user) continue - //Syringe gun attack logging by Yvarov - var/R - if(D.reagents) - for(var/datum/reagent/A in D.reagents.reagent_list) - R += A.id + " (" - R += num2text(A.volume) + ")," - if (istype(M, /mob)) - M.attack_log += "\[[time_stamp()]\] [user]/[user.ckey] shot [M]/[M.ckey] with a dartgun ([R])" - user.attack_log += "\[[time_stamp()]\] [user]/[user.ckey] shot [M]/[M.ckey] with a dartgun ([R])" - msg_admin_attack("[user] ([user.ckey]) shot [M] ([M.ckey]) with a dartgun ([R]) (JMP)") - - else - M.attack_log += "\[[time_stamp()]\] UNKNOWN SUBJECT (No longer exists) shot [M]/[M.ckey] with a dartgun ([R])" - msg_admin_attack("UNKNOWN shot [M] ([M.ckey]) with a dartgun ([R]) (JMP)") - - if(D.reagents) - D.reagents.trans_to(M, 15) - M << "You feel a slight prick." - - del(D) - break - if(D) - for(var/atom/A in D.loc) - if(A == user) continue - if(A.density) del(D) - - sleep(1) - - if (D) spawn(10) del(D) - - return - -/obj/item/weapon/gun/dartgun/afterattack(obj/target, mob/user , flag) - if(!isturf(target.loc) || target == user) return ..() -/obj/item/weapon/gun/dartgun/can_hit(var/mob/living/target as mob, var/mob/living/user as mob) - return 1 - -/obj/item/weapon/gun/dartgun/attack_self(mob/user) +//fills the given dart with reagents +/obj/item/weapon/gun/projectile/dartgun/proc/fill_dart(var/obj/item/projectile/bullet/chemdart/dart) + if(mixing.len) + var/mix_amount = dart.reagent_amount/mixing.len + for(var/obj/item/weapon/reagent_containers/glass/beaker/B in mixing) + B.reagents.trans_to(dart, mix_amount) +/obj/item/weapon/gun/projectile/dartgun/attack_self(mob/user) user.set_machine(src) var/dat = "[src] mixing control:

" @@ -230,9 +141,9 @@ else dat += "There are no beakers inserted!

" - if(cartridge) - if(cartridge.darts) - dat += "The dart cartridge has [cartridge.darts] shots remaining." + if(ammo_magazine) + if(ammo_magazine.stored_ammo && ammo_magazine.stored_ammo.len) + dat += "The dart cartridge has [ammo_magazine.stored_ammo.len] shots remaining." else dat += "The dart cartridge is empty!" dat += " \[Eject\]" @@ -240,7 +151,7 @@ user << browse(dat, "window=dartgun") onclose(user, "dartgun", src) -/obj/item/weapon/gun/dartgun/proc/check_beaker_mixing(var/obj/item/B) +/obj/item/weapon/gun/projectile/dartgun/proc/check_beaker_mixing(var/obj/item/B) if(!mixing || !beakers) return 0 for(var/obj/item/M in mixing) @@ -248,7 +159,7 @@ return 1 return 0 -/obj/item/weapon/gun/dartgun/Topic(href, href_list) +/obj/item/weapon/gun/projectile/dartgun/Topic(href, href_list) src.add_fingerprint(usr) if(href_list["stop_mix"]) var/index = text2num(href_list["stop_mix"]) @@ -271,23 +182,16 @@ beakers -= B B.loc = get_turf(src) else if (href_list["eject_cart"]) - remove_cartridge() + unload_ammo(usr) src.updateUsrDialog() return -/obj/item/weapon/gun/dartgun/Fire(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, params, reflex = 0) - if(cartridge) - spawn(0) fire_dart(target,user) - else - usr << "\red [src] is empty." - - -/obj/item/weapon/gun/dartgun/vox +/obj/item/weapon/gun/projectile/dartgun/vox name = "alien dart gun" desc = "A small gas-powered dartgun, fitted for nonhuman hands." -/obj/item/weapon/gun/dartgun/vox/medical +/obj/item/weapon/gun/projectile/dartgun/vox/medical starting_chems = list("kelotane","bicaridine","anti_toxin") -/obj/item/weapon/gun/dartgun/vox/raider +/obj/item/weapon/gun/projectile/dartgun/vox/raider starting_chems = list("space_drugs","stoxin","impedrezene") \ No newline at end of file diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index c1d9b0fdec..8aa34a7dca 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -18,6 +18,7 @@ w_class = 1 sharp = 1 var/mode = SYRINGE_DRAW + var/image/filling //holds a reference to the current filling overlay on_reagent_change() update_icon() @@ -217,7 +218,7 @@ item_state = "syringe_[rounded_vol]" if(reagents.total_volume) - var/image/filling = image('icons/obj/reagentfillings.dmi', src, "syringe10") + filling = image('icons/obj/reagentfillings.dmi', src, "syringe10") filling.icon_state = "syringe[rounded_vol]" @@ -225,7 +226,7 @@ overlays += filling - /obj/item/weapon/reagent_containers/syringe/proc/syringestab(mob/living/carbon/target as mob, mob/living/carbon/user as mob) + proc/syringestab(mob/living/carbon/target as mob, mob/living/carbon/user as mob) user.attack_log += "\[[time_stamp()]\] Attacked [target.name] ([target.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])" target.attack_log += "\[[time_stamp()]\] Attacked by [user.name] ([user.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])" @@ -268,13 +269,19 @@ src.reagents.reaction(target, INGEST) var/syringestab_amount_transferred = rand(0, (reagents.total_volume - 5)) //nerfed by popular demand src.reagents.trans_to(target, syringestab_amount_transferred) + src.break_syringe(target, user) + + proc/break_syringe(mob/living/carbon/target, mob/living/carbon/user) src.desc += " It is broken." src.mode = SYRINGE_BROKEN - src.add_blood(target) - src.add_fingerprint(usr) + if(target) + src.add_blood(target) + if(user) + src.add_fingerprint(user) src.update_icon() + /obj/item/weapon/reagent_containers/ld50_syringe name = "Lethal Injection Syringe" desc = "A syringe used for lethal injections." diff --git a/code/modules/reagents/syringe_gun.dm b/code/modules/reagents/syringe_gun.dm index faecb79868..23a9eaa36b 100644 --- a/code/modules/reagents/syringe_gun.dm +++ b/code/modules/reagents/syringe_gun.dm @@ -1,137 +1,130 @@ +/obj/item/ammo_casing/gas_cartridge + name = "compressed gas cartridge" + desc = "An impact-triggered compressed gas cartridge that can fitted to a syringe for rapid injection. It's not very useful until primed though." //i.e. only works when shot out of a syringe gun. + icon_state = "syringe-cartridge" + caliber = "syringe" + projectile_type = /obj/item/projectile/bullet/syringe + w_class = 2 //mainly so that they can be yanked out + var/obj/item/weapon/reagent_containers/syringe/syringe +/obj/item/ammo_casing/gas_cartridge/update_icon() + underlays.Cut() + if(syringe) + underlays += image(syringe.icon, src, syringe.icon_state) + underlays += syringe.filling +/obj/item/ammo_casing/gas_cartridge/attackby(obj/item/I, mob/user) + if(istype(I, /obj/item/weapon/reagent_containers/syringe)) + syringe = I + user << "You carefully insert [syringe] into [src]." + user.remove_from_mob(syringe) + syringe.loc = src + var/obj/item/projectile/bullet/syringe/S = BB + if(istype(S)) + S.damage = 1 + S.sharp = 1 + update_icon() -/obj/item/weapon/gun/syringe +/obj/item/ammo_casing/gas_cartridge/attack_self(mob/user) + if(syringe) + user << "You remove [syringe] from [src]." + user.put_in_hands(syringe) + syringe = null + var/obj/item/projectile/bullet/syringe/S = BB + if(istype(S)) + S.damage = initial(S.damage) + S.sharp = initial(S.sharp) + update_icon() + +//This was kind of rushed, there may very well be a simpler way to implement this. +//Sort of hacky, though nearly not as bad as the previous implementation: +//Basically the syringe gun is supposed to launch the entire syringe+cartrige assemby, but hitby() isn't powerfull enough to do what we need. +//Instead, we fire a projectile that transfers the reagents, and teleport the cartridge once we impact something. +/obj/item/projectile/bullet/syringe + name = "syringe dart" + icon_state = "cbbolt" + damage = 3 + check_armour = "bullet" + sharp = 0 + embed = 0 //we handle this ourselves + var/obj/item/ammo_casing/gas_cartridge/cartridge + var/embedded = 0 + kill_count = 10 //short range + +/obj/item/projectile/bullet/syringe/New(newloc) + ..() + //ensure that cartridge is always set + cartridge = newloc + if(!istype(cartridge)) + del(src) + +/obj/item/projectile/bullet/syringe/on_hit(var/atom/target, var/blocked = 0, var/def_zone = null) + //..() //not really necessary + if(blocked < 2 && cartridge.syringe && isliving(target)) + var/mob/living/L = target + + //inject + if(L.can_inject(target_zone=def_zone)) + if(cartridge.syringe.reagents) + cartridge.syringe.reagents.trans_to(L, 15) + cartridge.syringe.update_icon() + cartridge.update_icon() + + //embed + L.embed(cartridge, def_zone) + embedded = 1 + +/obj/item/projectile/bullet/syringe/on_impact(atom/A) + if(!embedded) + cartridge.loc = src.loc + if(cartridge.syringe) + cartridge.syringe.break_syringe(iscarbon(A)? A : null) + cartridge.update_icon() + + + +/obj/item/weapon/gun/projectile/syringe name = "syringe gun" desc = "A spring loaded rifle designed to fit syringes, designed to incapacitate unruly patients from a distance." icon = 'icons/obj/gun.dmi' icon_state = "syringegun" item_state = "syringegun" - w_class = 3.0 - throw_speed = 2 - throw_range = 10 - force = 4.0 - var/list/syringes = new/list() - var/max_syringes = 1 + w_class = 3 + force = 7 matter = list("metal" = 2000) + slot_flags = SLOT_BELT + + caliber = "syringe" + fire_sound = 'sound/weapons/empty.ogg' + fire_sound_text = "a metallic thunk" + recoil = 0 + handle_casings = HOLD_CASINGS + load_method = SINGLE_CASING + max_shells = 1 + var/drawn = 0 -/obj/item/weapon/gun/syringe/examine(mob/user) - if(..(user, 2)) - user << "\blue [syringes.len] / [max_syringes] syringes." +/obj/item/weapon/gun/projectile/syringe/consume_next_projectile() + if(chambered) + return chambered.BB + return null -/obj/item/weapon/gun/syringe/attackby(obj/item/I as obj, mob/user as mob) - if(istype(I, /obj/item/weapon/reagent_containers/syringe)) - var/obj/item/weapon/reagent_containers/syringe/S = I - if(S.mode != 2)//SYRINGE_BROKEN in syringes.dm - if(syringes.len < max_syringes) - user.drop_item() - I.loc = src - syringes += I - user << "\blue You put the syringe in [src]." - user << "\blue [syringes.len] / [max_syringes] syringes." - else - usr << "\red [src] cannot hold more syringes." - else - usr << "\red This syringe is broken!" +/obj/item/weapon/gun/projectile/syringe/attack_self(mob/living/user as mob) + if(!chambered && loaded.len) + playsound(src.loc, 'sound/weapons/flipblade.ogg', 50, 1) + user.visible_message("[user] draws back the bolt on [src], clicking it into place.", "You draw back the bolt on the [src], loading the spring!") + var/obj/item/ammo_casing/AC = loaded[1] //load next casing. + loaded -= AC //Remove casing from loaded list. + chambered = AC + max_shells -= 1 //to prevent people from storing an extra syringe + update_icon() - -/obj/item/weapon/gun/syringe/afterattack(obj/target, mob/user , flag) - if(!isturf(target.loc) || target == user) return +/obj/item/weapon/gun/projectile/syringe/handle_post_fire() ..() + chambered = null + max_shells = initial(max_shells) -/obj/item/weapon/gun/syringe/can_fire() - return syringes.len - -/obj/item/weapon/gun/syringe/can_hit(var/mob/living/target as mob, var/mob/living/user as mob) - return 1 //SHOOT AND LET THE GOD GUIDE IT (probably will hit a wall anyway) - -/obj/item/weapon/gun/syringe/Fire(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, params, reflex = 0) - if(syringes.len) - spawn(0) fire_syringe(target,user) - else - usr << "\red [src] is empty." - -/obj/item/weapon/gun/syringe/proc/fire_syringe(atom/target, mob/user) - if (locate (/obj/structure/table, src.loc)) - return - else - var/turf/trg = get_turf(target) - var/obj/effect/syringe_gun_dummy/D = new/obj/effect/syringe_gun_dummy(get_turf(src)) - var/obj/item/weapon/reagent_containers/syringe/S = syringes[1] - if((!S) || (!S.reagents)) //ho boy! wot runtimes! - return - S.reagents.trans_to(D, S.reagents.total_volume) - syringes -= S - del(S) - D.icon_state = "syringeproj" - D.name = "syringe" - playsound(user.loc, 'sound/items/syringeproj.ogg', 50, 1) - - for(var/i=0, i<6, i++) - if(!D) break - if(D.loc == trg) break - step_towards(D,trg) - - if(D) - for(var/mob/living/carbon/M in D.loc) - if(!istype(M,/mob/living/carbon)) continue - if(M == user) continue - //Syringe gun attack logging by Yvarov - var/R - if(D.reagents) - for(var/datum/reagent/A in D.reagents.reagent_list) - R += A.id + " (" - R += num2text(A.volume) + ")," - if (istype(M, /mob)) - M.attack_log += "\[[time_stamp()]\] [user]/[user.ckey] shot [M]/[M.ckey] with a syringegun ([R])" - user.attack_log += "\[[time_stamp()]\] [user]/[user.ckey] shot [M]/[M.ckey] with a syringegun ([R])" - msg_admin_attack("[user] ([user.ckey]) shot [M] ([M.ckey]) with a syringegun ([R]) (JMP)") - - else - M.attack_log += "\[[time_stamp()]\] UNKNOWN SUBJECT (No longer exists) shot [M]/[M.ckey] with a syringegun ([R])" - msg_admin_attack("UNKNOWN shot [M] ([M.ckey]) with a syringegun ([R]) (JMP)") - - var/mob/living/T - if(istype(M,/mob/living)) - T = M - - M.visible_message("[M] is hit by the syringe!") - - if(T && istype(T) && T.can_inject()) - if(D.reagents) - D.reagents.trans_to(M, 15) - else - M.visible_message("The syringe bounces off [M]!") - - del(D) - break - if(D) - for(var/atom/A in D.loc) - if(A == user) continue - if(A.density) del(D) - - sleep(1) - - if (D) spawn(10) del(D) - - return - -/obj/item/weapon/gun/syringe/rapidsyringe +/obj/item/weapon/gun/projectile/syringe/rapid name = "rapid syringe gun" - desc = "A modification of the syringe gun design, using a rotating cylinder to store up to four syringes." + desc = "A modification of the syringe gun design, using a rotating cylinder to store up to four syringes. The spring still needs to be drawn between shots." icon_state = "rapidsyringegun" - max_syringes = 4 - - -/obj/effect/syringe_gun_dummy - name = "" - desc = "" - icon = 'icons/obj/chemical.dmi' - icon_state = "null" - anchored = 1 - density = 0 - - New() - var/datum/reagents/R = new/datum/reagents(15) - reagents = R - R.my_atom = src \ No newline at end of file + max_shells = 4 diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index e04618cf20..faf7e34d98 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -451,7 +451,7 @@ datum/design/circuit/tcom/server name = "server mainframe" id = "tcom-server" build_path = /obj/item/weapon/circuitboard/telecomms/server - + datum/design/circuit/tcom/processor name = "processor unit" id = "tcom-processor" @@ -1312,7 +1312,7 @@ datum/design/item/weapon/rapidsyringe id = "rapidsyringe" req_tech = list("combat" = 3, "materials" = 3, "engineering" = 3, "biotech" = 2) materials = list("$metal" = 5000, "$glass" = 1000) - build_path = /obj/item/weapon/gun/syringe/rapidsyringe + build_path = /obj/item/weapon/gun/projectile/syringe/rapid /* datum/design/item/weapon/largecrossbow name = "Energy Crossbow" @@ -1567,7 +1567,7 @@ datum/design/item/mesons req_tech = list("magnets" = 2, "engineering" = 2) materials = list("$metal" = 50, "$glass" = 50) build_path = /obj/item/clothing/glasses/meson - + datum/design/item/binaryencrypt name = "Binary encryption key" desc = "Allows for deciphering the binary channel on-the-fly." diff --git a/icons/obj/ammo.dmi b/icons/obj/ammo.dmi index c1e14968f807d74af17961a76d53fc5ccc6fbec5..acade2ce1b265ed5f2222160b69622521ccbb9cf 100644 GIT binary patch delta 4500 zcmYjVc{J4R`<}6n?2{$i6tZS1lq_T4vKFEggCbHU*~a!6lPoWyU6QR(p_wd^b&N73 zTb28>1OBzTWr!et-SWx&OKE=Q_`Q&ULPH-S_i6Q+lkNqsYM_^7e2f`2I7n zJn&=}WDElJYHJUhn-7_pQT+TSTwO=Z%_rU6N3E=+rKJ@V6#V`D;c&Q~p5DomCv9wO zFc^%Ej?Q}t3BtjHpS83|c6JkI&S+?8sH&rz)AJbt|M@L`g*b(fl2DhjHi@L*&_aM*PaC?>y(Wa9E&M}&uB_*-1GHm0tRbPvOmB*LvXP$+QJ{zdQgOEN-i z7Al|P4VrH9tI;ZU)HzVOW_D<1oiVr7+R)h4J5{+cwB~wYKP~WSP+K`XbFEAr*a)p1 z(n+Cp@1knIQ3kRb|$bC0BS_=v&v!4>rCCmuw%=8&3TB%&#LQj=fB_++^L z&J`aM8B@6w7cXE}$j9SbPptp^^@1CHdP8MaqQ6Ow9U|85rGe5Zsx#h$e<$(n(j=FO zcUF$p)46{Uj*8z7Q0FJQ@4xd(Ro3maLD^~Zn?Wh5AEoKLMS#})xrYWW-8Te)_uc{N zXeFD?q%I`1H1C*m%mrT0)~|J?A*+eqBQF#U{ll%a?kloC-=CF|H-Ez8Ab4rm*d{Ar zSkFc{-fA?=FCLkWzzUIs3e36!l7z9Tzyo#pOd*3C z+NN4hvxt<(&+~!E$mp|YgM6bI$Qx1BH&Vjeomi{aI*c^mP_bX0FofNQ_yI2Opa~F2 zsMOxd+&w0L`B^$3^HH3r`8E8Mhvoj_@i`-~x5sQ3BH9|(mpYsK!PmI$Ty6aBDs3 zP!3&aFeW;UJYngoef{atDI8mGi}NS{)-_RQ{KJqR65Rd#8Y4C}D2*RadwG7eSn84G zO6Xf6!x=I^KK2d^7io-1A}0kK&VLo4$ftW&09j`%%u$!q7Fd>M)B`0OeIg&cEs@&S zQ^-(UC1OLfWLH^5#jOAGrxg>hn|SEqrMbm}8d8SC1ut>*4f}n1lx};9dtU*<&y!lt~u7F0DY=~t{zk@(-Ta@=!%b+rtRzLo^!O^9^x9$O& zCm|RL&Dnj>Gg_5nJ5L8jY;9ViGmj&1ZIQ{~#W`Vk`;l10{nfd70WOC3wdO)z3oy#t z|6tq5EjVIwr{J+~;2t~=w#ij~MkwagxuVfq;15d=L8+@N2Dmm4!3JwCff!#rx_r*o zWJl}{slprmo@5Lz`f$$}-}!0u3@rpbm$=G>XO9k=1HD)p#lbib8w$3JnbLJ- zc-!*n16Qa5_ijTzIEVZDB*`MSBt?+vUFCbw5I~vubfmDV&Lv`A#Wkn&GQ6uG zD~BXxPy8QAaTl-TY+2a!0Rx(k;h9+0aP(5{z4|ZQ z#=cW`OoM8Fe#X8zz?B&RNdI=MZX#dTMnGoCJB-VdeV(w@o%pI0ZaWleawJsk`3s*g zZGXravVmVU+B%*w=fY`f^V?nIx8{o}Ere3K#Pxse&!BIfmct|I)Ic#%~ThVE6;M3X?I`kG=paO`!Nj;Uj&+Fa=!uQC6aIPh#%C^-2 zl}w*+T+rjHlo_gs*j>uK=G!!}gMM0w#|(?OV6d9&Cx>D7+4Y)+b*>{~A2y!H8-y4c z$re$V^PE-A_5YW6$AXt;G4Ya^mY!qD#B5Jx5Dx%} zmIOa)YzTuEGy->a*5%RSE`*2bdC2<7iSTg~!H|~SU*7209 zmqb<-R$l#6e}joj)}}y^GH(o^2yXs1jMdM8Tii4B{`Zn#%k6h*A(!L*{SDD>1b@uo z2(W+0VUA8};Z1E0pQDhNSY-fTtAY>*@ak;z;NEpTXb(L4sV*5NWUzwv?tMfjLUp*P z?YGcbTZn6ThdqbBcQd*-E_7mTn6#;~9uY5KB07J*WJTSPhM7yWiHlnk8u9av-j|Is$68@jZf zxJOjCu_h8w;>Z0h1O*s_wWEwc1-e-_6(dE>$E;}VLq&9fK~xamOx2+V$rF~^{4pqP z^iv#kb!n-RPL$D!)l!TWA-K`|>mdsko&Ka9HfpOHQw+EX z_9rDb?>{YA(Cxtq=1tI{6bbWWl1=+tVaNey_At(Yu*EfF^+JClTy$Q6jrQ2Hoi?DL zMGm*n0)E~A)eG`=di*5#Fa_<&VY5;gMCFlP?F9GC>QPSobVghhJ*zP$IQE_Weyaz; zEi8(QeD`wYZBotUkIeo@e-jS$)ci0pZwpF8PrH;hE=?xC%Kq`kw8}!4I$GTx8Q#@u z%uY(6D^6)U?m5FG5#3ckdHt$b8N)kcWfsq7Bb*5Cz}3M7NZj0S|KAuxkV`|U*4=~_Czw&i=fqOH8~ zCi?q8aq1RzYS;DPbSi079v*8JzP)PRKJE8!*Tcj+vM0B?jtXbP8M!3b1#hFqs0egg zOm6b!`l}R!Zxd6EU&1m}|*_=nK~a) z81pYpGY~gcl{GzGNq`5a{1v9zm~A>uq4WMze5+C!5B!6M>Eiclwnwe$N8Jd!Wk>!u zkR2iBOkctHVPd~&|jwlPu17DcUMnems`NpVqd+-BS zz3i>}K>S|mn4A&J2`$=8^R=@oI7HqBLgttG>)(dwDZZ5ai6pB=s##IoV=6blT zg&2OXQ$jMa{+G!{DD{01P0e=W*ukru)*J%Vn|G1ajPh7t!;v`lW=$SQ5v5V28`M_> zPNB27B+~ZAt7iagdhKva%^nCoV#Ivt_Af}%Cq`6I2U8Dy35B2m7IqF!n9c4+``kNl z2yC+!#ofAd%%^xdK}c-nnaQ=wFNAges@GVxF0trf$|`*`Vm6Bp=#GP)Z-3A*U_$79 ziFMIiCy(G&*&pmnEEHqyJE2h=u|EzQ3z6w|9?!r~9A2`U^Poro)9c0P$Qs1VX zAe(XaMG>x>m8SzB%iqu$D*^0)${>GfeBlw5BT+62cvUig*Xx0D8u+}pbf3{BLqFc$ zaYa-;rqG7tfw=USrcJ1s)@M}~wu8x+UATW;0proG0Mo%kS^R>(ctNbHC+q1+zAo7- z7t!od$KN}goArU8=3%ef^soKTiuaZ)N3dN3VESm&TIDO-Yh1FxiWwl-Y*}@7LP;&( zrPg#5-?aFY%hSs!x{s}#HL>yQ{z`UfOU*!cw>=`MZv5Rf78UbeH=7JWF94G*aVHjh z6Z9j1sv6e=xJHXzXjfr0M-ju9qXWFSX;*DrU_@B9b0r(*Wz z)RyP#lY@5S*)vv({<{@-Z5d(D9umqw*)vb)tJ^LC`s;SPRZV9qLH9SheV6Q8O-Gkv z;{vr$bbdeZ_fz6e5lqeVspg9)Bz}`yeNL3U9-z z3ZS;e{rUow*4Hk|SaX+qOv`vG$xxeXZv3d;p6C?U_dABDZW~dUv8x%Ir@7XZQ=vV6=Xuoi z2KlqCWL2a`IqvEfFELe#?OZqV)qRb%+Y8KE6Z8Q8hOwK2d#orov_1U8*8eeQL%2X_ zjgJ^5k(T>j(<19oSzC*XQxa+B1dGKt&Ra%UE)g zg!SEBb4eU$e(eX=dVCKvWY?`SZAIJIyw(M<#2r=5-23hT*;_kXy|Lgx GVEzN?>c2Dq delta 4249 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 N002ovPDHLkV1l-E+lc@G delta 2523 zcmV<12_*LY8T%Qq2mt}!lL-N13OlfCPSX$euJ_iHb^(Kb`7I#rM+OCu0wl@_?CtFp zk?dP$`xHQmptNk^oIImEN}4uZzfSwc*mx({dJ=sZ(CKvAv^Ml(Vwvqz07Pmy1R_#H z0T8L70EpC307Pm`ABAYBuNTKVI#h4j?RJZ$OP8ANXliN-EiElE-_au^nV1S7&u&LU zeZ6|=sJNtm1e-T+1_11TstB1y&tT=oAE^14Z`y>qx;n9P;XrwL zc~s(1gqREg>P4@`ss44NuEfZOdBexEN$fC>{66Y6qLPY(tM z2N8<^6gO+i#%w=SnUZn*X10Nua{hO?v=+OW4}lYRT}%@AE-v0neX5Z<=pvY6>S$o{XuCiY=qx z+-|q1ICa8&+c?+{RipB1W5i6#}|!)wLTwvKdMemg&|g7{#y@d7oi?x6 ztGzroZ~RL8sbQaCQD!mvll4xt_S&=AJq#nqTYD1CPCo5hW1j*bQo~0fh}2L3L~1Ai zA~h5Mk(!`J=+IWj$G6&ks4_7=|KdFVL05sSj*oA({ZM6MeE!75=MQC5OQOzyP!C{r ze0;0zhbj}}^Cu=ge<+(;5_SH0AAm>=onVuJ10Iur0}_9u3c%|4@Pt@F(E9*Z$A>2* z*<|Sxtd0*)NHU=hK%{0~4-g8gN25^#K1F9tHpm-+8F!Umf9o=Lx{-`0#`n@#h_D zX6sCAkPo0#{;saBsOpp&7RBoL@PsUcmbcy#SvffvzI6-jM~_Bbrx+KAq$OLoZdDuJ zXj^}P_W?*6($v@}3i9)ze3}{?qrUk{0g$w!sj+`i6geFD@|KEG0?NaFLy+rIYyFpAIr&#M{0Isof{ zO+$an<7!`jF0}SLu4Z7J@2!1Oc#z-F_>bQv_I<_9p` zZwklf|KY~jg)f1rDSy)9^S{1PmpM-M!=3-vH=6VS2{`_6WaZ=lh;952@IC-ZGnyJ3 zMR7?9Y&ILdk(Y~ zwRQ|dYPzk_y8c)w0Fn|Y6;&%hvorvv=|<~j+W-^*SpbQeA0nFgvqojpS8lUmmNuPE zFo_ti*Q>V5+6twlCj&FFMQfh|AeNITC)n(&l@KFK-&LSiB4Dv-Y7K37?( zF0Wm)MqR$#-Hn=>8ueR$LEBsO4a`m2O861XXwdIMLC8 zk3ap?bVnPis_>ir`vJ@!HjR9=2KUSU7FGnQ7N1_W`2l1^6+j>m5K3!)@#00bWmhWm zFKTPU#^=9q;X=^wqa!02`DhJJUHfH3G2-2BxA6OXhQAe;lwjX~zI~?KA3S(a3=R$= zp7H6m;DU_eXZR@*_Q=%2=x2=tMKua`}kGy%xv5GR(wNM6+*@5 z-%wR$=rB8eG=S}htOp1epZ>ss1E#)(74rjV%M)+=q2>oL`X3T;{4x-9A0Sfa^>TMN zo~x`>zm4ec?^l<9Q|;ylAqqiGu-;i!?%w_MrI+x*>C-_QDivH?(Y3JBlXM{Dvp`O# z)AsFEtHg`D&j0?0aZyYhz_6X-S61O@gd z5tb}jf~lz~(|nB2pMIqL8)1s`Yvov85y0)+w^3VLYnZ2}rw97@{0$8aVav=n!mK6b zC(2G0C)V%xqpYk9-6k_;8pY>7e*CzIL Date: Fri, 13 Feb 2015 16:08:52 +0800 Subject: [PATCH 22/45] Tweaked descriptions and settings of various TEG components. Maximum power of core vent and injector increased. --- .../components/binary_devices/circulator.dm | 9 ++++++--- code/ATMOSPHERICS/components/unary/vent_pump.dm | 8 ++++---- code/modules/power/generator.dm | 11 +++++++---- maps/exodus-1.dmm | 2 +- 4 files changed, 18 insertions(+), 12 deletions(-) diff --git a/code/ATMOSPHERICS/components/binary_devices/circulator.dm b/code/ATMOSPHERICS/components/binary_devices/circulator.dm index 65511491a4..7b048a2708 100644 --- a/code/ATMOSPHERICS/components/binary_devices/circulator.dm +++ b/code/ATMOSPHERICS/components/binary_devices/circulator.dm @@ -26,8 +26,8 @@ /obj/machinery/atmospherics/binary/circulator/New() ..() - desc = initial(desc) + " Its outlet port is to the [dir2text(dir)]." - air1.volume = 500 + desc = initial(desc) + " Its outlet port is to the [dir2text(dir)]." + air1.volume = 400 /obj/machinery/atmospherics/binary/circulator/proc/return_transfer_air() var/datum/gas_mixture/removed @@ -89,8 +89,11 @@ /obj/machinery/atmospherics/binary/circulator/attackby(obj/item/weapon/W as obj, mob/user as mob) if(istype(W, /obj/item/weapon/wrench)) + playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1) anchored = !anchored - user << "\blue You [anchored ? "secure" : "unsecure"] the bolts holding [src] to the floor." + user.visible_message("[user.name] [anchored ? "secures" : "unsecures"] the bolts holding [src.name] to the floor.", \ + "You [anchored ? "secure" : "unsecure"] the bolts holding [src] to the floor.", \ + "You hear a ratchet") if(anchored) if(dir & (NORTH|SOUTH)) diff --git a/code/ATMOSPHERICS/components/unary/vent_pump.dm b/code/ATMOSPHERICS/components/unary/vent_pump.dm index ed7290b00f..4961d22e79 100644 --- a/code/ATMOSPHERICS/components/unary/vent_pump.dm +++ b/code/ATMOSPHERICS/components/unary/vent_pump.dm @@ -89,7 +89,7 @@ /obj/machinery/atmospherics/unary/vent_pump/engine name = "Engine Core Vent" power_channel = ENVIRON - power_rating = 15000 //15 kW ~ 20 HP + power_rating = 30000 //15 kW ~ 20 HP /obj/machinery/atmospherics/unary/vent_pump/engine/New() ..() @@ -183,11 +183,11 @@ //JESUS FUCK. THERE ARE LITERALLY 250 OF YOU MOTHERFUCKERS ON ZLEVEL ONE AND YOU DO THIS SHIT EVERY TICK WHEN VERY OFTEN THERE IS NO REASON TO if(pump_direction && pressure_checks == PRESSURE_CHECK_EXTERNAL && controller_iteration > 10) //99% of all vents - //Fucking hibernate because you ain't doing shit. + //Fucking hibernate because you ain't doing shit. hibernate = 1 spawn(rand(100,200)) //hibernate for 10 or 20 seconds randomly - hibernate = 0 - + hibernate = 0 + if (power_draw >= 0) last_power_draw = power_draw diff --git a/code/modules/power/generator.dm b/code/modules/power/generator.dm index c8277ee04e..bb83481ade 100644 --- a/code/modules/power/generator.dm +++ b/code/modules/power/generator.dm @@ -22,7 +22,7 @@ /obj/machinery/power/generator/New() ..() - + desc = initial(desc) + " Rated for [round(max_power/1000)] kW." spawn(1) reconnect() @@ -132,8 +132,11 @@ /obj/machinery/power/generator/attackby(obj/item/weapon/W as obj, mob/user as mob) if(istype(W, /obj/item/weapon/wrench)) + playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1) anchored = !anchored - user << "\blue You [anchored ? "secure" : "unsecure"] the bolts holding [src] to the floor." + user.visible_message("[user.name] [anchored ? "secures" : "unsecures"] the bolts holding [src.name] to the floor.", \ + "You [anchored ? "secure" : "unsecure"] the bolts holding [src] to the floor.", \ + "You hear a ratchet") use_power = anchored reconnect() else @@ -160,7 +163,7 @@ t += "
" t += "Primary Circulator (top or left)
" t += "Flow Capacity: [round(circ1.volume_capacity_used*100)]%
" - t += "

" + t += "
" t += "Inlet Pressure: [round(circ1.air1.return_pressure(), 0.1)] kPa
" t += "Inlet Temperature: [round(circ1.air1.temperature, 0.1)] K
" t += "
" @@ -184,7 +187,7 @@ t += "
" t += "Refresh Close" - user << browse(t, "window=teg;size=460x300") + user << browse(t, "window=teg;size=360x420") onclose(user, "teg") return 1 diff --git a/maps/exodus-1.dmm b/maps/exodus-1.dmm index fcf67d78f2..5d3bcb1d24 100644 --- a/maps/exodus-1.dmm +++ b/maps/exodus-1.dmm @@ -7197,7 +7197,7 @@ "cIu" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table,/obj/machinery/camera{c_tag = "Engineering Locker Room"; dir = 1; network = list("SS13")},/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/turf/simulated/floor,/area/engineering/locker_room) "cIv" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "10;24"},/obj/machinery/door/firedoor,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/substation/engineering) "cIw" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "SupermatterPort"; layer = 3.3; name = "Supermatter Chamber Blast Door"},/turf/simulated/floor/plating,/area/engineering/engine_room) -"cIx" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 1; frequency = 1438; icon_state = "map_injector"; id = "cooling_in"; name = "Coolant Injector"; use_power = 1; pixel_y = 1; volume_rate = 700},/turf/simulated/floor/engine/nitrogen{icon_state = "warnplatecorner"; name = "plating"},/area/engineering/engine_room) +"cIx" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 1; frequency = 1438; icon_state = "map_injector"; id = "cooling_in"; name = "Coolant Injector"; pixel_y = 1; power_rating = 30000; use_power = 1; volume_rate = 700},/turf/simulated/floor/engine/nitrogen{icon_state = "warnplatecorner"; name = "plating"},/area/engineering/engine_room) "cIy" = (/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/engineering/engine_room) "cIz" = (/obj/machinery/door_control{id = "EngineVent"; name = "Engine Ventillatory Control"; pixel_x = -25; pixel_y = 0; req_access_txt = "10"},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/engineering/engine_room) "cIA" = (/obj/machinery/camera{c_tag = "Engineering Core West"; dir = 8; network = list("SS13","Supermatter")},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engineering/engine_room) From cc62c987eaf562e23833758d5c7cb264a7131ddd Mon Sep 17 00:00:00 2001 From: RavingManiac Date: Fri, 13 Feb 2015 18:34:48 +0800 Subject: [PATCH 23/45] Some TEG refactoring and UI improvements "circulator/heat exchanger" is now just called "circulator" --- .../components/binary_devices/circulator.dm | 2 +- code/modules/power/generator.dm | 34 +++++++++++++------ 2 files changed, 25 insertions(+), 11 deletions(-) diff --git a/code/ATMOSPHERICS/components/binary_devices/circulator.dm b/code/ATMOSPHERICS/components/binary_devices/circulator.dm index 7b048a2708..a4b720302b 100644 --- a/code/ATMOSPHERICS/components/binary_devices/circulator.dm +++ b/code/ATMOSPHERICS/components/binary_devices/circulator.dm @@ -4,7 +4,7 @@ #define ADIABATIC_EXPONENT 0.667 //Actually adiabatic exponent - 1. /obj/machinery/atmospherics/binary/circulator - name = "circulator/heat exchanger" + name = "circulator" desc = "A gas circulator turbine and heat exchanger." icon = 'icons/obj/pipes.dmi' icon_state = "circ-off" diff --git a/code/modules/power/generator.dm b/code/modules/power/generator.dm index bb83481ade..f6f7f135e2 100644 --- a/code/modules/power/generator.dm +++ b/code/modules/power/generator.dm @@ -14,6 +14,9 @@ var/obj/machinery/atmospherics/binary/circulator/circ1 var/obj/machinery/atmospherics/binary/circulator/circ2 + var/last_circ1_gen = 0 + var/last_circ2_gen = 0 + var/last_thermal_gen = 0 var/stored_energy = 0 var/lastgen1 = 0 var/lastgen2 = 0 @@ -73,6 +76,9 @@ lastgen2 = lastgen1 lastgen1 = 0 + last_thermal_gen = 0 + last_circ1_gen = 0 + last_circ2_gen = 0 if(air1 && air2) var/air1_heat_capacity = air1.heat_capacity() @@ -82,7 +88,7 @@ if(delta_temperature > 0 && air1_heat_capacity > 0 && air2_heat_capacity > 0) var/energy_transfer = delta_temperature*air2_heat_capacity*air1_heat_capacity/(air2_heat_capacity+air1_heat_capacity) var/heat = energy_transfer*(1-thermal_efficiency) - stored_energy += energy_transfer*thermal_efficiency + last_thermal_gen = energy_transfer*thermal_efficiency if(air2.temperature > air1.temperature) air2.temperature = air2.temperature - energy_transfer/air2_heat_capacity @@ -111,8 +117,9 @@ stored_energy *= 0.5 //Power - stored_energy += circ1.return_stored_energy() - stored_energy += circ2.return_stored_energy() + last_circ1_gen = circ1.return_stored_energy() + last_circ2_gen = circ2.return_stored_energy() + stored_energy += last_thermal_gen + last_circ1_gen + last_circ2_gen lastgen1 = stored_energy*0.4 //smoothened power generation to prevent slingshotting as pressure is equalized, then restored by pumps stored_energy -= lastgen1 effective_gen = (lastgen1 + lastgen2) / 2 @@ -156,12 +163,18 @@ user.set_machine(src) - var/t = "
Thermo-Electric Generator
" + var/t = "
Thermoelectric Generator
" + t += "Total Output: [round(effective_gen/1000)] kW
" + t += "Thermal Output: [round(last_thermal_gen/1000)] kW
" + t += "
" + + var/vertical = 0 + if (dir == NORTH || dir == SOUTH) + vertical = 1 if(circ1 && circ2) - t += "Output : [round(effective_gen/1000)] kW
" - t += "
" - t += "Primary Circulator (top or left)
" + t += "Primary Circulator ([vertical ? "top" : "left"])
" + t += "Turbine Output: [round(last_circ1_gen/1000)] kW
" t += "Flow Capacity: [round(circ1.volume_capacity_used*100)]%
" t += "
" t += "Inlet Pressure: [round(circ1.air1.return_pressure(), 0.1)] kPa
" @@ -170,7 +183,8 @@ t += "Outlet Pressure: [round(circ1.air2.return_pressure(), 0.1)] kPa
" t += "Outlet Temperature: [round(circ1.air2.temperature, 0.1)] K
" t += "
" - t += "Secondary Circulator (bottom or right)
" + t += "Secondary Circulator ([vertical ? "bottom" : "right"])
" + t += "Turbine Output: [round(last_circ2_gen/1000)] kW
" t += "Flow Capacity: [round(circ2.volume_capacity_used*100)]%
" t += "
" t += "Inlet Pressure: [round(circ2.air1.return_pressure(), 0.1)] kPa
" @@ -183,11 +197,11 @@ t += "Unable to connect to circulators.
" t += "Ensure both are in position and wrenched into place." - t += "
" + t += "
" t += "
" t += "Refresh Close" - user << browse(t, "window=teg;size=360x420") + user << browse(t, "window=teg;size=400x500") onclose(user, "teg") return 1 From f8977c65af0b2bfb46b4126758d74ab3fd1680b0 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Fri, 13 Feb 2015 21:21:43 -0500 Subject: [PATCH 24/45] Much nicer syringe gun implementation Makes syringe guns a type of launcher gun, and removes the hack projectile. Also moves syringe and dart gun source files into the modules/projectile folder. --- baystation12.dme | 4 +- code/defines/obj/weapon.dm | 2 +- .../objects/items/weapons/storage/boxes.dm | 14 +- .../mob/living/carbon/human/human_defense.dm | 21 +-- code/modules/mob/living/living_defense.dm | 19 +-- code/modules/projectiles/guns/alien.dm | 2 +- code/modules/projectiles/guns/energy/stun.dm | 2 +- code/modules/projectiles/guns/launcher.dm | 12 +- .../projectiles/guns/launcher/pneumatic.dm | 2 +- .../projectiles/guns/launcher/syringe_gun.dm | 135 ++++++++++++++++++ code/modules/projectiles/guns/projectile.dm | 18 +-- .../guns/projectile}/dartgun.dm | 0 code/modules/reagents/syringe_gun.dm | 130 ----------------- code/modules/research/designs.dm | 2 +- code/setup.dm | 2 +- icons/obj/ammo.dmi | Bin 4887 -> 4999 bytes maps/exodus-1.dmm | 2 +- 17 files changed, 185 insertions(+), 182 deletions(-) create mode 100644 code/modules/projectiles/guns/launcher/syringe_gun.dm rename code/modules/{reagents => projectiles/guns/projectile}/dartgun.dm (100%) delete mode 100644 code/modules/reagents/syringe_gun.dm diff --git a/baystation12.dme b/baystation12.dme index 0537e357be..f71ff8f3c5 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -1331,7 +1331,9 @@ #include "code\modules\projectiles\guns\launcher\crossbow.dm" #include "code\modules\projectiles\guns\launcher\pneumatic.dm" #include "code\modules\projectiles\guns\launcher\rocket.dm" +#include "code\modules\projectiles\guns\launcher\syringe_gun.dm" #include "code\modules\projectiles\guns\projectile\automatic.dm" +#include "code\modules\projectiles\guns\projectile\dartgun.dm" #include "code\modules\projectiles\guns\projectile\pistol.dm" #include "code\modules\projectiles\guns\projectile\revolver.dm" #include "code\modules\projectiles\guns\projectile\shotgun.dm" @@ -1351,11 +1353,9 @@ #include "code\modules\reagents\Chemistry-Reagents-Antidepressants.dm" #include "code\modules\reagents\Chemistry-Reagents.dm" #include "code\modules\reagents\Chemistry-Recipes.dm" -#include "code\modules\reagents\dartgun.dm" #include "code\modules\reagents\grenade_launcher.dm" #include "code\modules\reagents\reagent_containers.dm" #include "code\modules\reagents\reagent_dispenser.dm" -#include "code\modules\reagents\syringe_gun.dm" #include "code\modules\reagents\reagent_containers\blood_pack.dm" #include "code\modules\reagents\reagent_containers\borghydro.dm" #include "code\modules\reagents\reagent_containers\dropper.dm" diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index 4f424e0315..e513a7db37 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -67,7 +67,7 @@ icon_state = "bike_horn" item_state = "bike_horn" throwforce = 3 - w_class = 1.0 + w_class = 2 throw_speed = 3 throw_range = 15 attack_verb = list("HONKED") diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm index ff158590fa..8f6dd78996 100644 --- a/code/game/objects/items/weapons/storage/boxes.dm +++ b/code/game/objects/items/weapons/storage/boxes.dm @@ -99,13 +99,13 @@ New() ..() - new /obj/item/ammo_casing/gas_cartridge( src ) - new /obj/item/ammo_casing/gas_cartridge( src ) - new /obj/item/ammo_casing/gas_cartridge( src ) - new /obj/item/ammo_casing/gas_cartridge( src ) - new /obj/item/ammo_casing/gas_cartridge( src ) - new /obj/item/ammo_casing/gas_cartridge( src ) - new /obj/item/ammo_casing/gas_cartridge( src ) + new /obj/item/weapon/syringe_cartridge( src ) + new /obj/item/weapon/syringe_cartridge( src ) + new /obj/item/weapon/syringe_cartridge( src ) + new /obj/item/weapon/syringe_cartridge( src ) + new /obj/item/weapon/syringe_cartridge( src ) + new /obj/item/weapon/syringe_cartridge( src ) + new /obj/item/weapon/syringe_cartridge( src ) /obj/item/weapon/storage/box/beakers diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 858bee60c1..ac86766bde 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -304,10 +304,7 @@ emp_act throw_mode_off() return - var/dtype = BRUTE - if(istype(O,/obj/item/weapon)) - var/obj/item/weapon/W = O - dtype = W.damtype + var/dtype = O.damtype var/throw_damage = O.throwforce*(speed/THROWFORCE_SPEED_DIVISOR) var/zone @@ -370,17 +367,21 @@ emp_act affecting.embed(I) // Begin BS12 momentum-transfer code. - if(O.throw_source && speed >= THROWNOBJ_KNOCKBACK_SPEED) - var/obj/item/weapon/W = O - var/momentum = speed/THROWNOBJ_KNOCKBACK_DIVISOR + var/mass = 1.5 + if(istype(O, /obj/item)) + var/obj/item/I = O + mass = I.w_class/THROWNOBJ_KNOCKBACK_DIVISOR + var/momentum = speed*mass + + if(O.throw_source && momentum >= THROWNOBJ_KNOCKBACK_SPEED) var/dir = get_dir(O.throw_source, src) visible_message("\red [src] staggers under the impact!","\red You stagger under the impact!") src.throw_at(get_edge_target_turf(src,dir),1,momentum) + + if(!O || !src) return - if(!W || !src) return - - if(W.loc == src && W.sharp) //Projectile is embedded and suitable for pinning. + if(O.loc == src && O.sharp) //Projectile is embedded and suitable for pinning. var/turf/T = near_wall(dir,2) if(T) diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 2fa9cdc4b6..faafc23b2d 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -103,10 +103,7 @@ /mob/living/hitby(atom/movable/AM as mob|obj,var/speed = THROWFORCE_SPEED_DIVISOR)//Standardization and logging -Sieve if(istype(AM,/obj/)) var/obj/O = AM - var/dtype = BRUTE - if(istype(O,/obj/item/weapon)) - var/obj/item/weapon/W = O - dtype = W.damtype + var/dtype = O.damtype var/throw_damage = O.throwforce*(speed/THROWFORCE_SPEED_DIVISOR) var/miss_chance = 15 @@ -136,17 +133,21 @@ msg_admin_attack("[src.name] ([src.ckey]) was hit by a [O], thrown by [M.name] ([assailant.ckey]) (JMP)") // Begin BS12 momentum-transfer code. - if(O.throw_source && speed >= THROWNOBJ_KNOCKBACK_SPEED) - var/obj/item/weapon/W = O - var/momentum = speed/THROWNOBJ_KNOCKBACK_DIVISOR + var/mass = 1.5 + if(istype(O, /obj/item)) + var/obj/item/I = O + mass = I.w_class/THROWNOBJ_KNOCKBACK_DIVISOR + var/momentum = speed*mass + + if(O.throw_source && momentum >= THROWNOBJ_KNOCKBACK_SPEED) var/dir = get_dir(O.throw_source, src) visible_message("\red [src] staggers under the impact!","\red You stagger under the impact!") src.throw_at(get_edge_target_turf(src,dir),1,momentum) - if(!W || !src) return + if(!O || !src) return - if(W.sharp) //Projectile is suitable for pinning. + if(O.sharp) //Projectile is suitable for pinning. //Handles embedding for non-humans and simple_animals. embed(O) diff --git a/code/modules/projectiles/guns/alien.dm b/code/modules/projectiles/guns/alien.dm index c8048026c3..d26b1601cc 100644 --- a/code/modules/projectiles/guns/alien.dm +++ b/code/modules/projectiles/guns/alien.dm @@ -1,6 +1,6 @@ //Vox pinning weapon. /obj/item/weapon/gun/launcher/spikethrower - name = "Vox spike thrower" + name = "vox spike thrower" desc = "A vicious alien projectile weapon. Parts of it quiver gelatinously, as though the thing is insectile and alive." var/last_regen = 0 diff --git a/code/modules/projectiles/guns/energy/stun.dm b/code/modules/projectiles/guns/energy/stun.dm index e4d1b0070a..6bbc2aed3e 100644 --- a/code/modules/projectiles/guns/energy/stun.dm +++ b/code/modules/projectiles/guns/energy/stun.dm @@ -49,7 +49,7 @@ projectile_type = /obj/item/projectile/energy/dart /obj/item/weapon/gun/energy/crossbow/largecrossbow - name = "Energy Crossbow" + name = "energy crossbow" desc = "A weapon favored by mercenary infiltration teams." w_class = 4 force = 10 diff --git a/code/modules/projectiles/guns/launcher.dm b/code/modules/projectiles/guns/launcher.dm index 82998ef60a..ea86814afa 100644 --- a/code/modules/projectiles/guns/launcher.dm +++ b/code/modules/projectiles/guns/launcher.dm @@ -22,14 +22,10 @@ /obj/item/weapon/gun/launcher/proc/update_release_force(obj/item/projectile) return 0 -/obj/item/weapon/gun/launcher/process_projectile(obj/projectile, mob/user, atom/target, var/target_zone, var/params=null, var/pointblank=0, var/reflex=0) - if(!istype(projectile, /obj/item)) return 0 - - var/obj/item/I = projectile - - update_release_force(I) - I.loc = get_turf(user) - I.throw_at(target, throw_distance, release_force, user) +/obj/item/weapon/gun/launcher/process_projectile(obj/item/projectile, mob/user, atom/target, var/target_zone, var/params=null, var/pointblank=0, var/reflex=0) + update_release_force(projectile) + projectile.loc = get_turf(user) + projectile.throw_at(target, throw_distance, release_force, user) return 1 /obj/item/weapon/gun/launcher/attack_self(mob/living/user as mob) diff --git a/code/modules/projectiles/guns/launcher/pneumatic.dm b/code/modules/projectiles/guns/launcher/pneumatic.dm index 3e653bfeeb..712e74e150 100644 --- a/code/modules/projectiles/guns/launcher/pneumatic.dm +++ b/code/modules/projectiles/guns/launcher/pneumatic.dm @@ -62,7 +62,7 @@ icon_state = "pneumatic-tank" item_state = "pneumatic-tank" user.update_icons() - else if(W.w_class <= max_w_class) + else if(istype(W) && W.w_class <= max_w_class) var/total_stored = 0 for(var/obj/item/O in src.contents) total_stored += O.w_class diff --git a/code/modules/projectiles/guns/launcher/syringe_gun.dm b/code/modules/projectiles/guns/launcher/syringe_gun.dm new file mode 100644 index 0000000000..b0275599de --- /dev/null +++ b/code/modules/projectiles/guns/launcher/syringe_gun.dm @@ -0,0 +1,135 @@ +/obj/item/weapon/syringe_cartridge + name = "compressed gas cartridge" + desc = "An impact-triggered compressed gas cartridge that can fitted to a syringe for rapid injection." + icon = 'icons/obj/ammo.dmi' + icon_state = "syringe-cartridge" + var/icon_flight = "syringe-cartridge-flight" //so it doesn't look so weird when shot + flags = CONDUCT + slot_flags = SLOT_BELT + throwforce = 3 + force = 3 + w_class = 1 + var/obj/item/weapon/reagent_containers/syringe/syringe + var/primed = 0 + +/obj/item/weapon/syringe_cartridge/update_icon() + underlays.Cut() + if(syringe) + underlays += image(syringe.icon, src, syringe.icon_state) + underlays += syringe.filling + +/obj/item/weapon/syringe_cartridge/attackby(obj/item/I, mob/user) + if(istype(I, /obj/item/weapon/reagent_containers/syringe)) + syringe = I + user << "You carefully insert [syringe] into [src]." + user.remove_from_mob(syringe) + syringe.loc = src + sharp = 1 + update_icon() + +/obj/item/weapon/syringe_cartridge/attack_self(mob/user) + if(syringe) + user << "You remove [syringe] from [src]." + user.put_in_hands(syringe) + syringe = null + sharp = initial(sharp) + update_icon() + +/obj/item/weapon/syringe_cartridge/proc/prime() + //the icon state will revert back when update_icon() is called from throw_impact() + icon_state = icon_flight + underlays.Cut() + primed = 1 + +/obj/item/weapon/syringe_cartridge/throw_impact(atom/hit_atom, var/speed) + ..() //handles embedding for us. Should have a decent chance if thrown fast enough + if(syringe) + //check speed to see if we hit hard enough to trigger the rapid injection + //incidentally, this means syringe_cartridges can be used with the pneumatic launcher + if(speed >= 10 && primed && isliving(hit_atom)) + var/mob/living/L = hit_atom + //unfortuately we don't know where the dart will actually hit, since that's done by the parent. + if(L.can_inject()) + if(syringe.reagents) + syringe.reagents.trans_to(L, 15) + + syringe.break_syringe(iscarbon(hit_atom)? hit_atom : null) + syringe.update_icon() + + icon_state = initial(icon_state) //reset icon state + update_icon() + +/obj/item/weapon/gun/launcher/syringe + name = "syringe gun" + desc = "A spring loaded rifle designed to fit syringes, designed to incapacitate unruly patients from a distance." + icon = 'icons/obj/gun.dmi' + icon_state = "syringegun" + item_state = "syringegun" + w_class = 3 + force = 7 + matter = list("metal" = 2000) + slot_flags = SLOT_BELT + + fire_sound = 'sound/weapons/empty.ogg' + fire_sound_text = "a metallic thunk" + recoil = 0 + release_force = 10 + throw_distance = 10 + + var/list/darts = list() + var/max_darts = 1 + var/obj/item/weapon/syringe_cartridge/next + +/obj/item/weapon/gun/launcher/syringe/consume_next_projectile() + if(next) + next.prime() + return next + return null + +/obj/item/weapon/gun/launcher/syringe/handle_post_fire() + ..() + darts -= next + next = null + +/obj/item/weapon/gun/launcher/syringe/attack_self(mob/living/user as mob) + if(next) + user.visible_message("[user] unlatches and carefully relax the bolt on [src].", "You unlatch and carefully relax the bolt on [src], unloading the spring.") + next = null + else if(darts.len) + playsound(src.loc, 'sound/weapons/flipblade.ogg', 50, 1) + user.visible_message("[user] draws back the bolt on [src], clicking it into place.", "You draw back the bolt on the [src], loading the spring!") + next = darts[1] + +/obj/item/weapon/gun/launcher/syringe/attack_hand(mob/living/user as mob) + if(src in user) + if(!darts.len) + user << "[src] is empty." + return + if(next) + user << "The cover on [src] is locked shut." + return + var/obj/item/weapon/syringe_cartridge/C = darts[1] + darts -= C + user.put_in_hands(C) + user.visible_message("[user] removes \a [C] from [src].", "You remove \a [C] from [src].") + else + ..() + +/obj/item/weapon/gun/launcher/syringe/attackby(var/obj/item/A as obj, mob/user as mob) + if(istype(A, /obj/item/weapon/syringe_cartridge)) + var/obj/item/weapon/syringe_cartridge/C = A + if(darts.len >= max_darts) + user << "[src] is full!" + return + user.remove_from_mob(C) + C.loc = src + darts += C //add to the end + user.visible_message("[user] inserts \a [C] into [src].", "You insert \a [C] into [src].") + else + ..() + +/obj/item/weapon/gun/launcher/syringe/rapid + name = "rapid syringe gun" + desc = "A modification of the syringe gun design, using a rotating cylinder to store up to four syringes. The spring still needs to be drawn between shots." + icon_state = "rapidsyringegun" + max_darts = 4 diff --git a/code/modules/projectiles/guns/projectile.dm b/code/modules/projectiles/guns/projectile.dm index 26b42308ad..128eddccde 100644 --- a/code/modules/projectiles/guns/projectile.dm +++ b/code/modules/projectiles/guns/projectile.dm @@ -78,12 +78,12 @@ switch(AM.mag_type) if(MAGAZINE) if(ammo_magazine) - user << "[src] already has a magazine loaded!" //already a magazine here + user << "[src] already has a magazine loaded." //already a magazine here return user.remove_from_mob(AM) AM.loc = src ammo_magazine = AM - user.visible_message("[user] inserts [AM] into [src].", "You insert [AM] into [src]!") + user.visible_message("[user] inserts [AM] into [src].", "You insert [AM] into [src].") playsound(src.loc, 'sound/weapons/flipblade.ogg', 50, 1) if(SPEEDLOADER) if(loaded.len >= max_shells) @@ -99,7 +99,7 @@ AM.stored_ammo -= C //should probably go inside an ammo_magazine proc, but I guess less proc calls this way... count++ if(count) - user.visible_message("[user] reloads [src].", "You load [count] round\s into [src]!") + user.visible_message("[user] reloads [src].", "You load [count] round\s into [src].") playsound(src.loc, 'sound/weapons/empty.ogg', 50, 1) AM.update_icon() else if(istype(A, /obj/item/ammo_casing)) @@ -107,13 +107,13 @@ if(!(load_method & SINGLE_CASING) || caliber != C.caliber) return //incompatible if(loaded.len >= max_shells) - user << "[src] is full!" + user << "[src] is full." return user.remove_from_mob(C) C.loc = src loaded.Insert(1, C) //add to the head of the list - user.visible_message("[user] inserts \a [C] into [src].", "You insert \a [C] into [src]!") + user.visible_message("[user] inserts \a [C] into [src].", "You insert \a [C] into [src].") playsound(src.loc, 'sound/weapons/empty.ogg', 50, 1) update_icon() @@ -123,7 +123,7 @@ /obj/item/weapon/gun/projectile/proc/unload_ammo(mob/user, var/allow_dump=1) if(ammo_magazine) user.put_in_hands(ammo_magazine) - user.visible_message("[user] removes [ammo_magazine] from [src].", "You remove [ammo_magazine] from [src]!") + user.visible_message("[user] removes [ammo_magazine] from [src].", "You remove [ammo_magazine] from [src].") playsound(src.loc, 'sound/weapons/empty.ogg', 50, 1) ammo_magazine.update_icon() ammo_magazine = null @@ -138,14 +138,14 @@ count++ loaded.Cut() if(count) - user.visible_message("[user] unloads [src].", "You unload [count] round\s from [src]!") + user.visible_message("[user] unloads [src].", "You unload [count] round\s from [src].") else if(load_method & SINGLE_CASING) var/obj/item/ammo_casing/C = loaded[loaded.len] loaded.len-- user.put_in_hands(C) - user.visible_message("[user] removes \a [C] from [src].", "You remove \a [C] from [src]!") + user.visible_message("[user] removes \a [C] from [src].", "You remove \a [C] from [src].") else - user << "[src] is empty!" + user << "[src] is empty." update_icon() /obj/item/weapon/gun/projectile/attackby(var/obj/item/A as obj, mob/user as mob) diff --git a/code/modules/reagents/dartgun.dm b/code/modules/projectiles/guns/projectile/dartgun.dm similarity index 100% rename from code/modules/reagents/dartgun.dm rename to code/modules/projectiles/guns/projectile/dartgun.dm diff --git a/code/modules/reagents/syringe_gun.dm b/code/modules/reagents/syringe_gun.dm deleted file mode 100644 index 23a9eaa36b..0000000000 --- a/code/modules/reagents/syringe_gun.dm +++ /dev/null @@ -1,130 +0,0 @@ -/obj/item/ammo_casing/gas_cartridge - name = "compressed gas cartridge" - desc = "An impact-triggered compressed gas cartridge that can fitted to a syringe for rapid injection. It's not very useful until primed though." //i.e. only works when shot out of a syringe gun. - icon_state = "syringe-cartridge" - caliber = "syringe" - projectile_type = /obj/item/projectile/bullet/syringe - w_class = 2 //mainly so that they can be yanked out - var/obj/item/weapon/reagent_containers/syringe/syringe - -/obj/item/ammo_casing/gas_cartridge/update_icon() - underlays.Cut() - if(syringe) - underlays += image(syringe.icon, src, syringe.icon_state) - underlays += syringe.filling - -/obj/item/ammo_casing/gas_cartridge/attackby(obj/item/I, mob/user) - if(istype(I, /obj/item/weapon/reagent_containers/syringe)) - syringe = I - user << "You carefully insert [syringe] into [src]." - user.remove_from_mob(syringe) - syringe.loc = src - var/obj/item/projectile/bullet/syringe/S = BB - if(istype(S)) - S.damage = 1 - S.sharp = 1 - update_icon() - -/obj/item/ammo_casing/gas_cartridge/attack_self(mob/user) - if(syringe) - user << "You remove [syringe] from [src]." - user.put_in_hands(syringe) - syringe = null - var/obj/item/projectile/bullet/syringe/S = BB - if(istype(S)) - S.damage = initial(S.damage) - S.sharp = initial(S.sharp) - update_icon() - -//This was kind of rushed, there may very well be a simpler way to implement this. -//Sort of hacky, though nearly not as bad as the previous implementation: -//Basically the syringe gun is supposed to launch the entire syringe+cartrige assemby, but hitby() isn't powerfull enough to do what we need. -//Instead, we fire a projectile that transfers the reagents, and teleport the cartridge once we impact something. -/obj/item/projectile/bullet/syringe - name = "syringe dart" - icon_state = "cbbolt" - damage = 3 - check_armour = "bullet" - sharp = 0 - embed = 0 //we handle this ourselves - var/obj/item/ammo_casing/gas_cartridge/cartridge - var/embedded = 0 - kill_count = 10 //short range - -/obj/item/projectile/bullet/syringe/New(newloc) - ..() - //ensure that cartridge is always set - cartridge = newloc - if(!istype(cartridge)) - del(src) - -/obj/item/projectile/bullet/syringe/on_hit(var/atom/target, var/blocked = 0, var/def_zone = null) - //..() //not really necessary - if(blocked < 2 && cartridge.syringe && isliving(target)) - var/mob/living/L = target - - //inject - if(L.can_inject(target_zone=def_zone)) - if(cartridge.syringe.reagents) - cartridge.syringe.reagents.trans_to(L, 15) - cartridge.syringe.update_icon() - cartridge.update_icon() - - //embed - L.embed(cartridge, def_zone) - embedded = 1 - -/obj/item/projectile/bullet/syringe/on_impact(atom/A) - if(!embedded) - cartridge.loc = src.loc - if(cartridge.syringe) - cartridge.syringe.break_syringe(iscarbon(A)? A : null) - cartridge.update_icon() - - - -/obj/item/weapon/gun/projectile/syringe - name = "syringe gun" - desc = "A spring loaded rifle designed to fit syringes, designed to incapacitate unruly patients from a distance." - icon = 'icons/obj/gun.dmi' - icon_state = "syringegun" - item_state = "syringegun" - w_class = 3 - force = 7 - matter = list("metal" = 2000) - slot_flags = SLOT_BELT - - caliber = "syringe" - fire_sound = 'sound/weapons/empty.ogg' - fire_sound_text = "a metallic thunk" - recoil = 0 - handle_casings = HOLD_CASINGS - load_method = SINGLE_CASING - max_shells = 1 - var/drawn = 0 - -/obj/item/weapon/gun/projectile/syringe/consume_next_projectile() - if(chambered) - return chambered.BB - return null - -/obj/item/weapon/gun/projectile/syringe/attack_self(mob/living/user as mob) - if(!chambered && loaded.len) - playsound(src.loc, 'sound/weapons/flipblade.ogg', 50, 1) - user.visible_message("[user] draws back the bolt on [src], clicking it into place.", "You draw back the bolt on the [src], loading the spring!") - var/obj/item/ammo_casing/AC = loaded[1] //load next casing. - loaded -= AC //Remove casing from loaded list. - chambered = AC - max_shells -= 1 //to prevent people from storing an extra syringe - update_icon() - -/obj/item/weapon/gun/projectile/syringe/handle_post_fire() - ..() - chambered = null - max_shells = initial(max_shells) - -/obj/item/weapon/gun/projectile/syringe/rapid - name = "rapid syringe gun" - desc = "A modification of the syringe gun design, using a rotating cylinder to store up to four syringes. The spring still needs to be drawn between shots." - icon_state = "rapidsyringegun" - max_shells = 4 diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index faf7e34d98..9083a47e1c 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -1312,7 +1312,7 @@ datum/design/item/weapon/rapidsyringe id = "rapidsyringe" req_tech = list("combat" = 3, "materials" = 3, "engineering" = 3, "biotech" = 2) materials = list("$metal" = 5000, "$glass" = 1000) - build_path = /obj/item/weapon/gun/projectile/syringe/rapid + build_path = /obj/item/weapon/gun/launcher/syringe/rapid /* datum/design/item/weapon/largecrossbow name = "Energy Crossbow" diff --git a/code/setup.dm b/code/setup.dm index 59cf86f868..06235da7fc 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -83,7 +83,7 @@ #define FIRE_MAX_FIRESUIT_STACKS 20 // If the number of stacks goes above this firesuits won't protect you anymore. If not, you can walk around while on fire like a badass. #define THROWFORCE_SPEED_DIVISOR 5 // The throwing speed value at which the throwforce multiplier is exactly 1. -#define THROWNOBJ_KNOCKBACK_SPEED 15 // The minumum speed of a thrown object that will cause living mobs it hits to be knocked back. +#define THROWNOBJ_KNOCKBACK_SPEED 15 // The minumum speed of a w_class 2 thrown object that will cause living mobs it hits to be knocked back. Heavier objects can cause knockback at lower speeds. #define THROWNOBJ_KNOCKBACK_DIVISOR 2 // Affects how much speed the mob is knocked back with. #define PRESSURE_DAMAGE_COEFFICIENT 4 // The amount of pressure damage someone takes is equal to (pressure / HAZARD_HIGH_PRESSURE)*PRESSURE_DAMAGE_COEFFICIENT, with the maximum of MAX_PRESSURE_DAMAGE. diff --git a/icons/obj/ammo.dmi b/icons/obj/ammo.dmi index acade2ce1b265ed5f2222160b69622521ccbb9cf..e47e53e736913b7b2e3bcf9dbdfdee5939cff7e5 100644 GIT binary patch delta 4459 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 delta 4328 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 tO10z#1dP!OU|3qKmjB)&(+} Date: Sat, 14 Feb 2015 00:28:58 -0500 Subject: [PATCH 25/45] Adds accuracy modifier support --- code/modules/projectiles/gun.dm | 3 ++- code/modules/projectiles/projectile.dm | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index dd7aec246f..767f9fc40d 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -21,9 +21,10 @@ var/fire_sound_text = "gunshot" var/recoil = 0 //screen shake var/silenced = 0 + var/accuracy = 0 //accuracy is measured in tiles. +1 accuracy means that everything is effectively one tile closer for the purpose of miss chance, -1 means the opposite. launchers are not supported, at the moment. var/last_fired = 0 - + //aiming system stuff var/keep_aim = 1 //1 for keep shooting until aim is lowered //0 for one bullet after tarrget moves and aim is lowered diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index f16359ad4b..03e2489918 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -132,6 +132,7 @@ //accuracy bonus from aiming if (istype(shot_from, /obj/item/weapon/gun)) //If you aim at someone beforehead, it'll hit more often. var/obj/item/weapon/gun/daddy = shot_from //Kinda balanced by fact you need like 2 seconds to aim + miss_modifier -= round(15*daddy.accuracy) if (daddy.aim_targets && original in daddy.aim_targets) //As opposed to no-delay pew pew miss_modifier += -30 From e3be255f59dd32500bcf61142f2da6a6fcac6c95 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Sat, 14 Feb 2015 01:33:15 -0500 Subject: [PATCH 26/45] Adds dart gun projectile sprite, dart gun fixes --- .../projectiles/guns/projectile/dartgun.dm | 12 ++++++++---- .../modules/projectiles/projectile/bullets.dm | 1 + icons/obj/projectiles.dmi | Bin 29540 -> 29622 bytes 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/code/modules/projectiles/guns/projectile/dartgun.dm b/code/modules/projectiles/guns/projectile/dartgun.dm index 7fa6d52e2e..c068d0caaf 100644 --- a/code/modules/projectiles/guns/projectile/dartgun.dm +++ b/code/modules/projectiles/guns/projectile/dartgun.dm @@ -1,11 +1,11 @@ /obj/item/projectile/bullet/chemdart name = "dart" - icon_state = "cbbolt" - damage = 3 + icon_state = "dart" + damage = 1 sharp = 1 - embed = 1 + embed = 0 var/reagent_amount = 15 - kill_count = 10 //short range + kill_count = 10 //shorter range /obj/item/projectile/bullet/chemdart/New() reagents = new/datum/reagents(reagent_amount) @@ -24,6 +24,9 @@ caliber = "dart" projectile_type = /obj/item/projectile/bullet/chemdart +/obj/item/ammo_casing/chemdart/expend() + del(src) + /obj/item/ammo_magazine/chemdart name = "dart cartridge" desc = "A rack of hollow darts." @@ -32,6 +35,7 @@ origin_tech = "materials=2" mag_type = MAGAZINE caliber = "dart" + ammo_type = /obj/item/ammo_casing/chemdart max_ammo = 5 multiple_sprites = 1 diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index 938b8b300a..9fe555afab 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -123,6 +123,7 @@ /obj/item/projectile/bullet/rifle/a762 damage = 25 + penetrating = 1 /obj/item/projectile/bullet/rifle/a145 damage = 90 diff --git a/icons/obj/projectiles.dmi b/icons/obj/projectiles.dmi index 03915794e49bc652b39d4155e74d82c35a1ea291..7f3468a3638ae0635899cb40d196f44d85b3e95e 100644 GIT binary patch literal 29622 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 L@NR{=<*WY#%7ktf literal 29540 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 Date: Sat, 14 Feb 2015 01:33:55 -0500 Subject: [PATCH 27/45] ammo_magazine icon state data caching --- code/modules/projectiles/ammunition.dm | 36 ++++++++++++++++++++------ 1 file changed, 28 insertions(+), 8 deletions(-) diff --git a/code/modules/projectiles/ammunition.dm b/code/modules/projectiles/ammunition.dm index 16569cd172..02850db6e0 100644 --- a/code/modules/projectiles/ammunition.dm +++ b/code/modules/projectiles/ammunition.dm @@ -87,13 +87,7 @@ /obj/item/ammo_magazine/New() if(multiple_sprites) - //should probably be cached or something. - var/list/states = icon_states(icon) - for(var/i = 0, i <= max_ammo, i++) - var/ammo_state = "[icon_state]-[i]" - if(ammo_state in states) - icon_keys += i - ammo_states += ammo_state + initialize_magazine_icondata(src) if(isnull(initial_ammo)) initial_ammo = max_ammo @@ -140,4 +134,30 @@ /obj/item/ammo_magazine/examine(mob/user) ..() - user << "There [(stored_ammo.len > 1)? "are" : "is"] [stored_ammo.len] round\s left!" \ No newline at end of file + user << "There [(stored_ammo.len > 1)? "are" : "is"] [stored_ammo.len] round\s left!" + +//magazine icon state caching +/var/global/list/magazine_icondata_keys = list() +/var/global/list/magazine_icondata_states = list() + +/proc/initialize_magazine_icondata(var/obj/item/ammo_magazine/M) + var/typestr = "[M.type]" + if(!(typestr in magazine_icondata_keys) || !(typestr in magazine_icondata_states)) + magazine_icondata_cache_add(M) + + M.icon_keys = magazine_icondata_keys[typestr] + M.ammo_states = magazine_icondata_states[typestr] + +/proc/magazine_icondata_cache_add(var/obj/item/ammo_magazine/M) + var/list/icon_keys = list() + var/list/ammo_states = list() + var/list/states = icon_states(M.icon) + for(var/i = 0, i <= M.max_ammo, i++) + var/ammo_state = "[M.icon_state]-[i]" + if(ammo_state in states) + icon_keys += i + ammo_states += ammo_state + + magazine_icondata_keys["[M.type]"] = icon_keys + magazine_icondata_states["[M.type]"] = ammo_states + From 08635587e157e3b3ff956dbe7278d478b2df6a68 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Sat, 14 Feb 2015 01:56:20 -0500 Subject: [PATCH 28/45] Fixes revolver paths, span classes, typo. Cleans exodus-1.dmm Tweaks syringe gun and dart gun, renames syringe gun cartridges and makes them printable. Adjusts penetration so that passing through mobs happens with a probability that scales with damage. Adds a .45 signal pistol to the HoP's closet and a 9mm one to the mercenary shuttle. --- code/game/gamemodes/game_mode.dm | 2 +- code/game/machinery/autolathe_datums.dm | 5 + .../objects/items/weapons/storage/boxes.dm | 3 +- .../crates_lockers/closets/secure/security.dm | 1 + code/modules/admin/verbs/debug.dm | 2 +- .../modules/projectiles/ammunition/bullets.dm | 2 +- code/modules/projectiles/guns/alien.dm | 4 +- code/modules/projectiles/guns/energy/laser.dm | 2 +- .../projectiles/guns/energy/nuclear.dm | 12 +- code/modules/projectiles/guns/energy/pulse.dm | 8 +- .../projectiles/guns/energy/special.dm | 12 +- .../projectiles/guns/launcher/syringe_gun.dm | 17 +- .../projectiles/guns/projectile/dartgun.dm | 8 +- .../modules/projectiles/projectile/bullets.dm | 5 +- code/modules/projectiles/projectile/energy.dm | 5 +- maps/exodus-1.dmm | 2300 ++++++++--------- maps/exodus-2.dmm | 2 +- 17 files changed, 1197 insertions(+), 1193 deletions(-) diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index 3f0f8cdd64..8ad2d72288 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -40,7 +40,7 @@ new/datum/uplink_item(/obj/item/weapon/gun/energy/crossbow, 5, "Energy Crossbow", "XB"), new/datum/uplink_item(/obj/item/weapon/storage/box/syndie_kit/g9mm, 5, "Silenced 9mm", "S9"), new/datum/uplink_item(/obj/item/mecha_parts/mecha_equipment/weapon/energy/riggedlaser, 6, "Exosuit Rigged Laser", "RL"), - new/datum/uplink_item(/obj/item/weapon/gun/projectile, 6, "Revolver", "RE"), + new/datum/uplink_item(/obj/item/weapon/gun/projectile/revolver, 6, "Revolver", "RE"), new/datum/uplink_item(/obj/item/weapon/storage/box/syndicate, 10, "Mercenary Bundle", "BU") ), "Stealthy and Inconspicuous Weapons" = list( diff --git a/code/game/machinery/autolathe_datums.dm b/code/game/machinery/autolathe_datums.dm index f41cf36362..38989d2905 100644 --- a/code/game/machinery/autolathe_datums.dm +++ b/code/game/machinery/autolathe_datums.dm @@ -201,6 +201,11 @@ path = /obj/item/weapon/reagent_containers/syringe category = "Medical" +/datum/autolathe/recipe/syringegun_ammo + name = "syringe" + path = /obj/item/weapon/syringe_cartridge + category = "Arms and Ammunition" + /datum/autolathe/recipe/shotgun_blanks name = "ammunition (shotgun, blank)" path = /obj/item/ammo_casing/shotgun/blank diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm index 8f6dd78996..3d29aad51f 100644 --- a/code/game/objects/items/weapons/storage/boxes.dm +++ b/code/game/objects/items/weapons/storage/boxes.dm @@ -79,7 +79,6 @@ /obj/item/weapon/storage/box/syringes name = "box of syringes" desc = "A box full of syringes." -// desc = "A biohazard alert warning is printed on the box" icon_state = "syringe" New() @@ -93,7 +92,7 @@ new /obj/item/weapon/reagent_containers/syringe( src ) /obj/item/weapon/storage/box/syringegun - name = "box of compressed gas cartridges" + name = "box of syringe gun cartridges" desc = "A box full of compressed gas cartridges." icon_state = "syringe" diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index ccaf07516e..0bb76d5369 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -54,6 +54,7 @@ new /obj/item/weapon/storage/box/ids(src) new /obj/item/weapon/storage/box/ids( src ) new /obj/item/weapon/gun/energy/gun(src) + new /obj/item/weapon/gun/projectile/detective/flash(src) new /obj/item/device/flash(src) return diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index f750b7428e..769615af0f 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -595,7 +595,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that M.equip_to_slot_or_del(new /obj/item/weapon/cloaking_device(M), slot_r_store) - M.equip_to_slot_or_del(new /obj/item/weapon/gun/projectile(M), slot_r_hand) + M.equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/revolver(M), slot_r_hand) M.equip_to_slot_or_del(new /obj/item/ammo_magazine/a357(M), slot_l_store) if ("tournament chef") //Steven Seagal FTW diff --git a/code/modules/projectiles/ammunition/bullets.dm b/code/modules/projectiles/ammunition/bullets.dm index 0c614657e3..9de5fc87c0 100644 --- a/code/modules/projectiles/ammunition/bullets.dm +++ b/code/modules/projectiles/ammunition/bullets.dm @@ -101,7 +101,7 @@ //Does not stun, only blinds, but has area of effect. /obj/item/ammo_casing/shotgun/flash name = "flash shell" - desc = "A flash shell used to provide illumination." + desc = "A chemical shell used to signal distress or provide illumination." icon_state = "fshell" projectile_type = /obj/item/projectile/energy/flash/flare matter = list("metal" = 250, "glass" = 250) diff --git a/code/modules/projectiles/guns/alien.dm b/code/modules/projectiles/guns/alien.dm index d26b1601cc..797d0b07c2 100644 --- a/code/modules/projectiles/guns/alien.dm +++ b/code/modules/projectiles/guns/alien.dm @@ -40,7 +40,7 @@ if(istype(user,/mob/living/carbon/human)) var/mob/living/carbon/human/H = user if(H.species && H.species.name != "Vox" && H.species.name != "Vox Armalis") - user << "\red \The [src] does not respond to you!" + user << "\The [src] does not respond to you!" return 0 return ..() @@ -81,7 +81,7 @@ if(H.species.name == "Vox Armalis") ..() return - user << "\red \The [src] is far too large for you to pick up." + user << "\The [src] is far too large for you to pick up." return /obj/item/weapon/gun/energy/noisecannon/update_icon() diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm index f24bd99ff2..bcbb5beddc 100644 --- a/code/modules/projectiles/guns/energy/laser.dm +++ b/code/modules/projectiles/guns/energy/laser.dm @@ -99,7 +99,7 @@ obj/item/weapon/gun/energy/laser/retro /obj/item/weapon/gun/energy/lasertag/special_check(var/mob/living/carbon/human/M) if(ishuman(M)) if(!istype(M.wear_suit, required_vest)) - M << "\red You need to be wearing your laser tag vest!" + M << "You need to be wearing your laser tag vest!" return 0 return ..() diff --git a/code/modules/projectiles/guns/energy/nuclear.dm b/code/modules/projectiles/guns/energy/nuclear.dm index 80426a9bd5..e2b97672c7 100644 --- a/code/modules/projectiles/guns/energy/nuclear.dm +++ b/code/modules/projectiles/guns/energy/nuclear.dm @@ -18,14 +18,14 @@ mode = 1 charge_cost = 100 fire_sound = 'sound/weapons/Laser.ogg' - user << "\red [src.name] is now set to kill." + user << "[src.name] is now set to kill." projectile_type = /obj/item/projectile/beam modifystate = "energykill" if(1) mode = 0 charge_cost = 100 fire_sound = 'sound/weapons/Taser.ogg' - user << "\red [src.name] is now set to stun." + user << "[src.name] is now set to stun." projectile_type = /obj/item/projectile/beam/stun modifystate = "energystun" update_icon() @@ -66,16 +66,16 @@ if (prob(src.reliability)) for (var/mob/living/M in range(0,src)) //Only a minor failure, enjoy your radiation if you're in the same tile or carrying it if (src in M.contents) - M << "\red Your gun feels pleasantly warm for a moment." + M << "Your gun feels pleasantly warm for a moment." else - M << "\red You feel a warm sensation." + M << "You feel a warm sensation." M.apply_effect(rand(3,120), IRRADIATE) lightfail = 1 else for (var/mob/living/M in range(rand(1,4),src)) //Big failure, TIME FOR RADIATION BITCHES if (src in M.contents) - M << "\red Your gun's reactor overloads!" - M << "\red You feel a wave of heat wash over you." + M << "Your gun's reactor overloads!" + M << "You feel a wave of heat wash over you." M.apply_effect(300, IRRADIATE) crit_fail = 1 //break the gun so it stops recharging processing_objects.Remove(src) diff --git a/code/modules/projectiles/guns/energy/pulse.dm b/code/modules/projectiles/guns/energy/pulse.dm index 099e99fd79..03510d8d59 100644 --- a/code/modules/projectiles/guns/energy/pulse.dm +++ b/code/modules/projectiles/guns/energy/pulse.dm @@ -18,19 +18,19 @@ mode = 0 charge_cost = 100 fire_sound = 'sound/weapons/Taser.ogg' - user << "\red [src.name] is now set to stun." + user << "[src.name] is now set to stun." projectile_type = /obj/item/projectile/beam/stun if(0) mode = 1 charge_cost = 100 fire_sound = 'sound/weapons/Laser.ogg' - user << "\red [src.name] is now set to kill." + user << "[src.name] is now set to kill." projectile_type = /obj/item/projectile/beam if(1) mode = 2 charge_cost = 200 fire_sound = 'sound/weapons/pulse.ogg' - user << "\red [src.name] is now set to DESTROY." + user << "[src.name] is now set to DESTROY." projectile_type = /obj/item/projectile/beam/pulse /obj/item/weapon/gun/energy/pulse_rifle/mounted @@ -44,7 +44,7 @@ fire_delay = 10 /obj/item/weapon/gun/energy/pulse_rifle/destroyer/attack_self(mob/living/user as mob) - user << "\red [src.name] has three settings, and they are all DESTROY." + user << "[src.name] has three settings, and they are all DESTROY." //WHY? diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index 3cd057c2c4..000f1dd123 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -43,13 +43,13 @@ if(0) mode = 1 charge_cost = 100 - user << "\red The [src.name] is now set to increase yield." + user << "The [src.name] is now set to increase yield." projectile_type = /obj/item/projectile/energy/florayield modifystate = "florayield" if(1) mode = 0 charge_cost = 100 - user << "\red The [src.name] is now set to induce mutations." + user << "The [src.name] is now set to induce mutations." projectile_type = /obj/item/projectile/energy/floramut modifystate = "floramut" update_icon() @@ -58,7 +58,7 @@ /obj/item/weapon/gun/energy/floragun/afterattack(obj/target, mob/user, adjacent_flag) //allow shooting into adjacent hydrotrays regardless of intent if(adjacent_flag && istype(target,/obj/machinery/portable_atmospherics/hydroponics)) - user.visible_message("\red \The [user] fires \the [src] into \the [target]!") + user.visible_message("\The [user] fires \the [src] into \the [target]!") Fire(target,user) return ..() @@ -123,7 +123,7 @@ /obj/item/weapon/gun/energy/staff/handle_click_empty(mob/user = null) if (user) - user.visible_message("*fizzle*", "\red *fizzle*") + user.visible_message("*fizzle*", "*fizzle*") else src.visible_message("*fizzle*") playsound(src.loc, 'sound/effects/sparks1.ogg', 100, 1) @@ -146,11 +146,11 @@ obj/item/weapon/gun/energy/staff/focus attack_self(mob/living/user as mob) if(projectile_type == "/obj/item/projectile/forcebolt") charge_cost = 200 - user << "\red The [src.name] will now strike a small area." + user << "The [src.name] will now strike a small area." projectile_type = "/obj/item/projectile/forcebolt/strong" else charge_cost = 100 - user << "\red The [src.name] will now strike only a single person." + user << "The [src.name] will now strike only a single person." projectile_type = "/obj/item/projectile/forcebolt" */ diff --git a/code/modules/projectiles/guns/launcher/syringe_gun.dm b/code/modules/projectiles/guns/launcher/syringe_gun.dm index b0275599de..59110be195 100644 --- a/code/modules/projectiles/guns/launcher/syringe_gun.dm +++ b/code/modules/projectiles/guns/launcher/syringe_gun.dm @@ -1,16 +1,16 @@ /obj/item/weapon/syringe_cartridge - name = "compressed gas cartridge" + name = "syringe gun cartridge" desc = "An impact-triggered compressed gas cartridge that can fitted to a syringe for rapid injection." icon = 'icons/obj/ammo.dmi' icon_state = "syringe-cartridge" var/icon_flight = "syringe-cartridge-flight" //so it doesn't look so weird when shot + matter = list("metal" = 125, "glass" = 375) flags = CONDUCT slot_flags = SLOT_BELT throwforce = 3 force = 3 w_class = 1 var/obj/item/weapon/reagent_containers/syringe/syringe - var/primed = 0 /obj/item/weapon/syringe_cartridge/update_icon() underlays.Cut() @@ -39,14 +39,13 @@ //the icon state will revert back when update_icon() is called from throw_impact() icon_state = icon_flight underlays.Cut() - primed = 1 /obj/item/weapon/syringe_cartridge/throw_impact(atom/hit_atom, var/speed) ..() //handles embedding for us. Should have a decent chance if thrown fast enough if(syringe) //check speed to see if we hit hard enough to trigger the rapid injection //incidentally, this means syringe_cartridges can be used with the pneumatic launcher - if(speed >= 10 && primed && isliving(hit_atom)) + if(speed >= 10 && isliving(hit_atom)) var/mob/living/L = hit_atom //unfortuately we don't know where the dart will actually hit, since that's done by the parent. if(L.can_inject()) @@ -93,7 +92,7 @@ /obj/item/weapon/gun/launcher/syringe/attack_self(mob/living/user as mob) if(next) - user.visible_message("[user] unlatches and carefully relax the bolt on [src].", "You unlatch and carefully relax the bolt on [src], unloading the spring.") + user.visible_message("[user] unlatches and carefully relaxes the bolt on [src].", "You unlatch and carefully relax the bolt on [src], unloading the spring.") next = null else if(darts.len) playsound(src.loc, 'sound/weapons/flipblade.ogg', 50, 1) @@ -106,7 +105,7 @@ user << "[src] is empty." return if(next) - user << "The cover on [src] is locked shut." + user << "[src]'s cover is locked shut." return var/obj/item/weapon/syringe_cartridge/C = darts[1] darts -= C @@ -129,7 +128,7 @@ ..() /obj/item/weapon/gun/launcher/syringe/rapid - name = "rapid syringe gun" - desc = "A modification of the syringe gun design, using a rotating cylinder to store up to four syringes. The spring still needs to be drawn between shots." + name = "syringe gun revolver" + desc = "A modification of the syringe gun design, using a rotating cylinder to store up to five syringes. The spring still needs to be drawn between shots." icon_state = "rapidsyringegun" - max_darts = 4 + max_darts = 5 diff --git a/code/modules/projectiles/guns/projectile/dartgun.dm b/code/modules/projectiles/guns/projectile/dartgun.dm index c068d0caaf..a4fca2f2a4 100644 --- a/code/modules/projectiles/guns/projectile/dartgun.dm +++ b/code/modules/projectiles/guns/projectile/dartgun.dm @@ -1,11 +1,11 @@ /obj/item/projectile/bullet/chemdart name = "dart" icon_state = "dart" - damage = 1 + damage = 5 sharp = 1 - embed = 0 + embed = 1 //the dart is shot fast enough to pierce space suits, so I guess splintering inside the target can be a thing. Should be rare due to low damage. var/reagent_amount = 15 - kill_count = 10 //shorter range + kill_count = 15 //shorter range /obj/item/projectile/bullet/chemdart/New() reagents = new/datum/reagents(reagent_amount) @@ -19,7 +19,7 @@ /obj/item/ammo_casing/chemdart name = "chemical dart" - desc = "A small hollow dart." + desc = "A small hardened, hollow dart." icon_state = "dart" caliber = "dart" projectile_type = /obj/item/projectile/bullet/chemdart diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index 9fe555afab..6a04892ee1 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -21,9 +21,8 @@ if(ismob(A)) if(iscarbon(A)) - //squishy mobs absorb KE - if (damage <= 20) return 0 - damage *= 0.7 + if (damage <= 20 && !prob(damage)) return 0 + damage *= 0.7 //squishy mobs absorb KE return 1 if(istype(A, /obj/machinery) || istype(A, /obj/structure)) diff --git a/code/modules/projectiles/projectile/energy.dm b/code/modules/projectiles/projectile/energy.dm index 76aa608b3d..2a114e9067 100644 --- a/code/modules/projectiles/projectile/energy.dm +++ b/code/modules/projectiles/projectile/energy.dm @@ -6,11 +6,12 @@ check_armour = "energy" -//releases a very short burst of light on impact, mainly used to blind people +//releases a burst of light on impact or after travelling a distance /obj/item/projectile/energy/flash - name = "shell" //a chemical filled shell or something + name = "chemical shell" icon_state = "bullet" damage = 5 + kill_count = 15 //if the shell hasn't hit anything after travelling this far it just explodes. var/flash_range = 0 var/brightness = 7 var/light_duration = 5 diff --git a/maps/exodus-1.dmm b/maps/exodus-1.dmm index ca37fea7ed..93e8565d23 100644 --- a/maps/exodus-1.dmm +++ b/maps/exodus-1.dmm @@ -57,7 +57,7 @@ "abe" = (/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},/turf/simulated/floor/plating,/area/maintenance/security_port) "abf" = (/turf/simulated/wall,/area/maintenance/security_port) "abg" = (/obj/structure/closet/wardrobe/tactical,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/warden) -"abh" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/obj/machinery/door_control{id = "prisonentry"; name = "Entry Doors"; normaldoorcontrol = 1; pixel_x = -6; pixel_y = 24; req_access_txt = "2"},/obj/machinery/door_control{id = "prisonexit"; name = "Exit Doors"; normaldoorcontrol = 1; pixel_x = 6; pixel_y = 24; req_access_txt = "2"},/obj/machinery/button/flasher{id = "permentryflash"; name = "entry flash"; pixel_x = -26; pixel_y = 6; req_access_txt = "2"},/turf/simulated/floor,/area/security/brig) +"abh" = (/obj/machinery/camera{c_tag = "Armoury - Tactical Equipment "; dir = 2; network = list("SS13")},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/table/rack,/obj/machinery/door/window/brigdoor{dir = 2; name = "Weapons locker"; req_access = null; req_access_txt = "58"},/obj/item/ammo_magazine/c45m{icon_state = "45-7"},/obj/item/ammo_magazine/c45m{icon_state = "45-7"},/obj/item/weapon/storage/box/shotgunammo,/obj/item/weapon/storage/box/shotgunammo,/obj/item/weapon/storage/box/shotgunshells,/obj/item/weapon/storage/box/shotgunshells,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/warden) "abi" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/security/range) "abj" = (/obj/structure/table/reinforced,/obj/item/weapon/gun/energy/laser/practice,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor,/area/security/range) "abk" = (/obj/structure/table/reinforced,/obj/item/weapon/gun/energy/laser/practice,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor,/area/security/range) @@ -71,7 +71,7 @@ "abs" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/maintenance/foresolar) "abt" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = -32; pixel_y = 0},/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/canister/air/airlock,/turf/simulated/floor/plating{dir = 1; icon_state = "warnplatecorner"},/area/maintenance/foresolar) "abu" = (/obj/machinery/power/terminal{dir = 4},/obj/machinery/light/small{dir = 1},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/maintenance/foresolar) -"abv" = (/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/button/flasher{id = "permflash"; name = "Brig flashes"; pixel_x = 0; pixel_y = -27; tag = "permflash"},/turf/simulated/floor,/area/security/brig) +"abv" = (/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/obj/machinery/power/smes/buildable{charge = 0; RCon_tag = "Solar - Fore"},/turf/simulated/floor/plating,/area/maintenance/foresolar) "abw" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 0},/turf/simulated/wall/r_wall,/area/maintenance/foresolar) "abx" = (/obj/effect/decal/cleanable/ash,/obj/structure/closet/emcloset,/turf/simulated/floor/plating{dir = 1; icon_state = "warnplatecorner"},/area/maintenance/security_port) "aby" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/security/warden) @@ -470,7 +470,7 @@ "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/table,/obj/item/device/t_scanner,/turf/simulated/floor/plating{dir = 1; icon_state = "warnplatecorner"},/area/maintenance/security_starboard) +"aje" = (/obj/structure/table,/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = -28},/obj/item/clothing/accessory/holobadge,/obj/item/clothing/accessory/holobadge,/obj/item/clothing/accessory/holobadge/cord,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/main) "ajf" = (/obj/machinery/computer/security,/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/heads/hos) "ajg" = (/obj/machinery/computer/secure_data,/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/heads/hos) "ajh" = (/obj/structure/filingcabinet,/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/structure/table,/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = -28},/obj/item/clothing/accessory/holobadge,/obj/item/clothing/accessory/holobadge,/obj/item/clothing/accessory/holobadge/cord,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/main) +"akf" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = -29},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/heads/hos) "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) @@ -548,7 +548,7 @@ "akB" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/security/brig) "akC" = (/obj/machinery/light,/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/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/security/brig) "akD" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/security/brig) -"akE" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/button/flasher{id = "permflash"; name = "Brig flashes"; pixel_x = -6; pixel_y = -24; req_access_txt = "2"; tag = "permflash"},/obj/machinery/door_control{id = "brigobs"; name = "observation shutters"; pixel_x = 6; pixel_y = -24},/obj/machinery/door_control{id = "Secure Gate"; name = "Brig Lockdown"; pixel_x = -26; pixel_y = -4; req_access_txt = "2"},/turf/simulated/floor,/area/security/brig) +"akE" = (/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/button/flasher{id = "permflash"; name = "Brig flashes"; pixel_x = 0; pixel_y = -27; tag = "permflash"},/turf/simulated/floor,/area/security/brig) "akF" = (/obj/machinery/camera{c_tag = "Brig Center"; dir = 1},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/turf/simulated/floor,/area/security/brig) "akG" = (/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/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/security/brig) "akH" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor,/area/security/brig) @@ -622,7 +622,7 @@ "alX" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22; pixel_y = 0},/turf/simulated/floor,/area/security/prison) "alY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/prison) "alZ" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/window/brigdoor{base_state = "rightsecure"; dir = 8; icon_state = "rightsecure"; req_access_txt = "2"},/obj/structure/table/reinforced,/turf/simulated/floor,/area/security/brig) -"ama" = (/obj/structure/cable/green,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/machinery/power/smes/buildable{charge = 0; RCon_tag = "Substation - Security"},/turf/simulated/floor/plating,/area/maintenance/substation/security) +"ama" = (/obj/structure/table,/obj/item/device/t_scanner,/turf/simulated/floor/plating{dir = 1; icon_state = "warnplatecorner"},/area/maintenance/security_starboard) "amb" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/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) "amc" = (/obj/structure/stool/bed/chair/office/dark{dir = 4},/obj/machinery/door_control{desc = "A remote control switch for the brig foyer."; id = "BrigFoyer"; name = "Brig Foyer Doors"; normaldoorcontrol = 1; pixel_x = 28; pixel_y = -15},/turf/simulated/floor,/area/security/brig) "amd" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/window/southright{base_state = "left"; dir = 4; icon_state = "left"},/obj/structure/table/reinforced,/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor,/area/security/lobby) @@ -640,7 +640,7 @@ "amp" = (/obj/structure/table/woodentable,/obj/item/ashtray/bronze,/obj/item/weapon/storage/fancy/cigarettes/dromedaryco,/obj/item/device/flash,/obj/item/weapon/handcuffs,/turf/simulated/floor/carpet,/area/security/detectives_office) "amq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/carpet,/area/security/detectives_office) "amr" = (/obj/item/weapon/storage/secure/safe{pixel_x = 35; pixel_y = 5},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) -"ams" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = -29},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/heads/hos) +"ams" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/obj/machinery/door_control{id = "prisonentry"; name = "Entry Doors"; normaldoorcontrol = 1; pixel_x = -6; pixel_y = 24; req_access_txt = "2"},/obj/machinery/door_control{id = "prisonexit"; name = "Exit Doors"; normaldoorcontrol = 1; pixel_x = 6; pixel_y = 24; req_access_txt = "2"},/obj/machinery/button/flasher{id = "permentryflash"; name = "entry flash"; pixel_x = -26; pixel_y = 6; req_access_txt = "2"},/turf/simulated/floor,/area/security/brig) "amt" = (/obj/structure/disposalpipe/segment,/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/security_starboard) "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) @@ -661,7 +661,7 @@ "amK" = (/obj/machinery/flasher{id = "permentryflash"; name = "Floor mounted flash"; pixel_x = 0},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/security/prison) "amL" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/prison) "amM" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/window/brigdoor{dir = 8; req_access_txt = "2"},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/obj/structure/table/reinforced,/turf/simulated/floor,/area/security/brig) -"amN" = (/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/obj/machinery/power/smes/buildable{charge = 0; RCon_tag = "Solar - Fore"},/turf/simulated/floor/plating,/area/maintenance/foresolar) +"amN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/button/flasher{id = "permflash"; name = "Brig flashes"; pixel_x = -6; pixel_y = -24; req_access_txt = "2"; tag = "permflash"},/obj/machinery/door_control{id = "brigobs"; name = "observation shutters"; pixel_x = 6; pixel_y = -24},/obj/machinery/door_control{id = "Secure Gate"; name = "Brig Lockdown"; pixel_x = -26; pixel_y = -4; req_access_txt = "2"},/turf/simulated/floor,/area/security/brig) "amO" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/computer/security/telescreen{desc = "Big Brother is watching."; name = "Brig Monitor"; network = list("Prison"); pixel_x = 3; pixel_y = -33},/turf/simulated/floor,/area/security/brig) "amP" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/disposalpipe/trunk,/obj/machinery/disposal,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/camera{c_tag = "Prison Wing Observation"; dir = 1; network = list("SS13")},/turf/simulated/floor,/area/security/brig) "amQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/computer/security/telescreen{desc = "Big Brother is watching."; name = "Brig Monitor"; network = list("Prison"); pixel_x = -3; pixel_y = -33},/turf/simulated/floor,/area/security/brig) @@ -679,7 +679,7 @@ "anc" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplatecorner"},/area/maintenance/security_starboard) "and" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 0},/turf/simulated/wall,/area/maintenance/substation/security) "ane" = (/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/obj/machinery/power/terminal{dir = 4},/turf/simulated/floor/plating,/area/maintenance/substation/security) -"anf" = (/obj/machinery/camera{c_tag = "Armoury - Tactical Equipment "; dir = 2; network = list("SS13")},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/table/rack,/obj/machinery/door/window/brigdoor{dir = 2; name = "Weapons locker"; req_access = null; req_access_txt = "58"},/obj/item/ammo_magazine/c45m{icon_state = "45-7"},/obj/item/ammo_magazine/c45m{icon_state = "45-7"},/obj/item/weapon/storage/box/shotgunammo,/obj/item/weapon/storage/box/shotgunammo,/obj/item/weapon/storage/box/shotgunshells,/obj/item/weapon/storage/box/shotgunshells,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/warden) +"anf" = (/obj/structure/extinguisher_cabinet{pixel_x = 25; pixel_y = 0},/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice) "ang" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/substation/security) "anh" = (/obj/effect/landmark{name = "carpspawn"},/turf/space,/area/shuttle/syndicate_elite/station) "ani" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating/airless,/area/solar/auxstarboard) @@ -975,7 +975,7 @@ "asM" = (/obj/structure/stool/bed/chair{dir = 4},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison) "asN" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/hallway/primary/central_one) "asO" = (/obj/structure/stool/bed/chair{dir = 8},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor,/area/security/prison) -"asP" = (/obj/machinery/seed_storage/garden,/turf/simulated/floor,/area/hydroponics) +"asP" = (/obj/structure/cable/green,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/machinery/power/smes/buildable{charge = 0; RCon_tag = "Substation - Security"},/turf/simulated/floor/plating,/area/maintenance/substation/security) "asQ" = (/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) "asR" = (/obj/machinery/bot/secbot/beepsky{name = "Officer Beepsky"},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/hallway/primary/fore) "asS" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/hallway/primary/fore) @@ -992,10 +992,10 @@ "atd" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/turf/simulated/floor/plating,/area/maintenance/dormitory) "ate" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/machinery/portable_atmospherics/canister/air/airlock,/turf/simulated/floor/plating,/area/maintenance/dormitory) "atf" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/dormitory) -"atg" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/fancy/cigarettes{pixel_y = 2},/obj/random/single{icon = 'icons/obj/items.dmi'; icon_state = "lighter-g"; name = "randomly spawned lighter"; spawn_nothing_percentage = 50; spawn_object = /obj/item/weapon/flame/lighter},/turf/simulated/floor{icon_state = "grimy"},/area/hallway/secondary/entry/starboard) -"ath" = (/obj/structure/disposalpipe/segment,/obj/machinery/button/crematorium{pixel_x = 25},/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) -"ati" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/machinery/power/smes/buildable{charge = 0; RCon_tag = "Substation - Civilian West"},/turf/simulated/floor/plating,/area/maintenance/substation/civilian_west) -"atj" = (/obj/machinery/seed_storage/garden,/turf/simulated/floor{icon_state = "green"; dir = 8},/area/hydroponics) +"atg" = (/obj/machinery/button/flasher{id = "IAflash"; pixel_y = -30},/obj/machinery/door_control{id = "visit_blast"; name = "Privacy Shutters"; pixel_x = 25; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor,/area/security/prison) +"ath" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/crew_quarters/fitness) +"ati" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/crew_quarters/fitness) +"atj" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/effect/landmark{name = "Syndicate Breach Area"},/turf/simulated/floor/plating,/area/crew_quarters/fitness) "atk" = (/turf/simulated/shuttle/wall{icon_state = "swall_s6"; dir = 2},/area/shuttle/escape_pod1/station) "atl" = (/obj/structure/window/shuttle,/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/escape_pod1/station) "atm" = (/turf/simulated/shuttle/wall{icon_state = "swall_s10"; dir = 2},/area/shuttle/escape_pod1/station) @@ -1028,7 +1028,7 @@ "atN" = (/turf/simulated/wall/r_wall,/area/crew_quarters/fitness) "atO" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/maintenance,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/crew_quarters/fitness) "atP" = (/turf/simulated/wall,/area/crew_quarters/fitness) -"atQ" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/snacks/chips,/obj/random/single{icon = 'icons/obj/drinks.dmi'; icon_state = "cola"; name = "randomly spawned cola"; spawn_nothing_percentage = 50; spawn_object = /obj/item/weapon/reagent_containers/food/drinks/cans/cola},/turf/simulated/floor/carpet,/area/hallway/secondary/entry/starboard) +"atQ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/camera{c_tag = "Holodeck North"; dir = 2; network = list("SS13"); pixel_y = -6},/turf/simulated/floor/plating,/area/crew_quarters/fitness) "atR" = (/turf/simulated/floor/engine{name = "Holodeck Projector Floor"},/area/holodeck/alphadeck) "atS" = (/turf/simulated/wall/r_wall,/area/hallway/secondary/entry/fore) "atT" = (/turf/simulated/shuttle/wall{icon_state = "swall3"; dir = 2},/area/shuttle/escape_pod1/station) @@ -1076,7 +1076,7 @@ "auJ" = (/obj/structure/window/basic{dir = 4},/turf/simulated/floor/beach/water{tag = "icon-seadeep"; icon_state = "seadeep"},/area/crew_quarters/fitness) "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/table/woodentable,/obj/random/single{icon = 'icons/obj/playing_cards.dmi'; icon_state = "deck"; name = "randomly spawned deck of cards"; spawn_nothing_percentage = 50; spawn_object = /obj/item/weapon/deck},/turf/simulated/floor{icon_state = "grimy"},/area/hallway/secondary/entry/starboard) +"auM" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/crew_quarters/fitness) "auN" = (/turf/simulated/wall,/area/hallway/secondary/entry/fore) "auO" = (/obj/structure/stool/bed/chair{dir = 1},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod1/station) "auP" = (/obj/structure/stool/bed/chair{dir = 1},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod2/station) @@ -1114,9 +1114,9 @@ "avv" = (/turf/simulated/floor{dir = 2; icon_state = "whitecorner"},/area/crew_quarters/fitness) "avw" = (/turf/simulated/floor{icon_state = "escapecorner"; dir = 8},/area/crew_quarters/fitness) "avx" = (/turf/simulated/floor,/area/crew_quarters/fitness) -"avy" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/smartfridge/drying_rack,/turf/simulated/floor{dir = 9; icon_state = "green"},/area/hydroponics/garden) -"avz" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/crew_quarters/fitness) -"avA" = (/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/crew_quarters/fitness) +"avy" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/crew_quarters/fitness) +"avz" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = -6},/turf/simulated/floor/plating,/area/crew_quarters/fitness) +"avA" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/crew_quarters/fitness) "avB" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst,/turf/simulated/shuttle/wall{icon_state = "swall_f5"; dir = 2},/area/shuttle/escape_pod1/station) "avC" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_1_hatch"; locked = 1; name = "Escape Pod Hatch"; req_access_txt = "13"},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod1/station) "avD" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst,/turf/simulated/shuttle/wall{icon_state = "swall_f9"; dir = 2},/area/shuttle/escape_pod1/station) @@ -1132,12 +1132,12 @@ "avN" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/maintenance/arrivals) "avO" = (/obj/machinery/space_heater,/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/plating,/area/maintenance/arrivals) "avP" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/hallway/primary/central_one) -"avQ" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "eva_airlock"; name = "exterior access button"; pixel_x = 0; pixel_y = 25; req_access_txt = "1;11;18;24"},/turf/simulated/floor/plating/airless,/area/maintenance/evahallway) +"avQ" = (/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/crew_quarters/fitness) "avR" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "eva_outer"; locked = 1; name = "EVA External Access"; req_access = null; req_access_txt = "13"},/turf/simulated/floor/airless{icon_state = "circuit"},/area/maintenance/evahallway) "avS" = (/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "eva_sensor"; pixel_x = 0; pixel_y = 25},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "eva_pump"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/maintenance/evahallway) "avT" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{frequency = 1379; id_tag = "eva_airlock"; name = "EVA Airlock Console"; pixel_y = 25; req_access_txt = "0"; req_one_access_txt = "1;5;11;18;24"; tag_airpump = "eva_pump"; tag_chamber_sensor = "eva_sensor"; tag_exterior_door = "eva_outer"; tag_interior_door = "eva_inner"},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4; icon_state = "map"; tag = "icon-manifold-f (EAST)"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 5},/area/maintenance/evahallway) "avU" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "eva_inner"; locked = 1; name = "EVA Internal Access"; req_access = null; req_access_txt = "13"},/turf/simulated/floor/plating,/area/maintenance/evahallway) -"avV" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "eva_airlock"; name = "interior access button"; pixel_x = 0; pixel_y = 25; req_access_txt = "1;11;18;24"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/evahallway) +"avV" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "eva_airlock"; name = "exterior access button"; pixel_x = 0; pixel_y = 25; req_access_txt = "1;11;18;24"},/turf/simulated/floor/plating/airless,/area/maintenance/evahallway) "avW" = (/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/evahallway) "avX" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/maintenance/evahallway) "avY" = (/obj/machinery/shower{dir = 4; icon_state = "shower"; pixel_x = 5; pixel_y = 0},/obj/structure/curtain/open/shower,/turf/simulated/floor{icon_state = "freezerfloor"},/area/security/prison) @@ -1147,7 +1147,7 @@ "awc" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets,/obj/item/weapon/storage/box/donkpockets{pixel_x = -3; pixel_y = -3},/turf/simulated/floor,/area/security/prison) "awd" = (/obj/structure/table,/obj/item/weapon/minihoe,/obj/item/device/analyzer/plant_analyzer,/obj/item/clothing/head/greenbandana,/turf/simulated/floor,/area/security/prison) "awe" = (/obj/machinery/vending/hydronutrients,/turf/simulated/floor,/area/security/prison) -"awf" = (/turf/simulated/floor{dir = 10; icon_state = "whitehall"},/area/crew_quarters/fitness) +"awf" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "eva_airlock"; name = "interior access button"; pixel_x = 0; pixel_y = 25; req_access_txt = "1;11;18;24"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/evahallway) "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) @@ -1166,13 +1166,13 @@ "awv" = (/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/structure/disposalpipe/segment,/obj/machinery/camera{c_tag = "Fitness Room West"; dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/crew_quarters/fitness) "aww" = (/turf/simulated/floor{dir = 6; icon_state = "whitehall"},/area/crew_quarters/fitness) "awx" = (/obj/machinery/seed_storage/garden,/turf/simulated/floor,/area/security/prison) -"awy" = (/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/crew_quarters/fitness) -"awz" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/glass{name = "Holodeck"},/turf/simulated/floor,/area/crew_quarters/fitness) -"awA" = (/turf/simulated/floor{dir = 1; icon_state = "whitecorner"},/area/crew_quarters/fitness) -"awB" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/crew_quarters/fitness) -"awC" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/camera{c_tag = "Fitness Room East"; dir = 1},/turf/simulated/floor,/area/crew_quarters/fitness) -"awD" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor,/area/crew_quarters/fitness) -"awE" = (/obj/machinery/hologram/holopad,/obj/machinery/light,/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/crew_quarters/fitness) +"awy" = (/turf/simulated/floor{dir = 10; icon_state = "whitehall"},/area/crew_quarters/fitness) +"awz" = (/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/crew_quarters/fitness) +"awA" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/glass{name = "Holodeck"},/turf/simulated/floor,/area/crew_quarters/fitness) +"awB" = (/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/crew_quarters/fitness) +"awC" = (/turf/simulated/floor{dir = 1; icon_state = "whitecorner"},/area/crew_quarters/fitness) +"awD" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/crew_quarters/fitness) +"awE" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor,/area/crew_quarters/fitness) "awF" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/hallway/primary/central_one) "awG" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/entry/fore) "awH" = (/turf/simulated/floor/plating,/area/hallway/secondary/entry/fore) @@ -1209,13 +1209,13 @@ "axm" = (/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/fitness) "axn" = (/obj/structure/window/basic{dir = 1},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/fitness) "axo" = (/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/fitness) -"axp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/crew_quarters/fitness) -"axq" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/crew_quarters/fitness) -"axr" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/camera{c_tag = "Holodeck North"; dir = 2; network = list("SS13"); pixel_y = -6},/turf/simulated/floor/plating,/area/crew_quarters/fitness) +"axp" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/camera{c_tag = "Fitness Room East"; dir = 1},/turf/simulated/floor,/area/crew_quarters/fitness) +"axq" = (/obj/machinery/hologram/holopad,/obj/machinery/light,/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/crew_quarters/fitness) +"axr" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/crew_quarters/fitness) "axs" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/crew_quarters/fitness) -"axt" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/effect/landmark{name = "Syndicate Breach Area"},/turf/simulated/floor/plating,/area/crew_quarters/fitness) -"axu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/crew_quarters/fitness) -"axv" = (/obj/machinery/button/flasher{id = "IAflash"; pixel_y = -30},/obj/machinery/door_control{id = "visit_blast"; name = "Privacy Shutters"; pixel_x = 25; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor,/area/security/prison) +"axt" = (/obj/structure/closet/lasertag/blue,/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/crew_quarters/fitness) +"axu" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/glass{name = "Holodeck Control"},/turf/simulated/floor,/area/crew_quarters/fitness) +"axv" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor,/area/crew_quarters/fitness) "axw" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_1_berth_hatch"; locked = 1; name = "Escape Pod"; req_access_txt = "13"},/turf/simulated/floor/plating,/area/hallway/secondary/entry/fore) "axx" = (/obj/structure/sign/pods,/turf/simulated/wall,/area/hallway/secondary/entry/fore) "axy" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_2_berth_hatch"; locked = 1; name = "Escape Pod"; req_access_txt = "13"},/turf/simulated/floor/plating,/area/hallway/secondary/entry/fore) @@ -1254,10 +1254,10 @@ "ayf" = (/turf/simulated/floor{dir = 4; icon_state = "escapecorner"},/area/crew_quarters/fitness) "ayg" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor{icon_state = "whitehall"; dir = 1},/area/crew_quarters/fitness) "ayh" = (/turf/simulated/floor{icon_state = "whitehall"; dir = 1},/area/crew_quarters/fitness) -"ayi" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = -6},/turf/simulated/floor/plating,/area/crew_quarters/fitness) -"ayj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/crew_quarters/fitness) +"ayi" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/crew_quarters/fitness) +"ayj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/turf/simulated/floor/plating,/area/crew_quarters/fitness) "ayk" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/crew_quarters/fitness) -"ayl" = (/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/crew_quarters/fitness) +"ayl" = (/obj/structure/table,/obj/item/weapon/paper{desc = ""; info = "Brusies sustained in the holodeck can be healed simply by sleeping."; name = "Holodeck Disclaimer"},/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/machinery/light/small{dir = 1},/turf/simulated/floor,/area/crew_quarters/fitness) "aym" = (/turf/simulated/floor/airless{icon_state = "catwalk12"},/area/space) "ayn" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry/fore) "ayo" = (/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry/fore) @@ -1304,14 +1304,14 @@ "azd" = (/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/crew_quarters/fitness) "aze" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/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/crew_quarters/fitness) "azf" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/crew_quarters/fitness) -"azg" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplatecorner"},/area/maintenance/library) -"azh" = (/obj/machinery/camera{c_tag = "Fore Starboard Solars"; dir = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/smes/buildable{charge = 0; RCon_tag = "Solar - Fore Starboard"},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) -"azi" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating{dir = 1; icon_state = "warnplate"; nitrogen = 0.01; oxygen = 0.01},/area/maintenance/library) -"azj" = (/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/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating{dir = 4; icon_state = "warnplatecorner"},/area/maintenance/library) -"azk" = (/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/machinery/power/smes/buildable{charge = 0; RCon_tag = "Substation - Civilian East"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/maintenance/substation/civilian_east) -"azl" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/library) -"azm" = (/obj/structure/extinguisher_cabinet{pixel_x = 25; pixel_y = 0},/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice) -"azn" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/library) +"azg" = (/obj/structure/stool/bed/chair{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor,/area/crew_quarters/fitness) +"azh" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/plating,/area/crew_quarters/fitness) +"azi" = (/obj/machinery/computer/HolodeckControl,/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/crew_quarters/fitness) +"azj" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "solar_chapel_airlock"; name = "interior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = "13"},/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/obj/effect/decal/cleanable/dirt,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating{dir = 1; icon_state = "warnplate"; nitrogen = 82.1472; oxygen = 21.8366},/area/maintenance/auxsolarstarboard) +"azk" = (/obj/machinery/camera{c_tag = "Fore Starboard Solars"; dir = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/smes/buildable{charge = 0; RCon_tag = "Solar - Fore Starboard"},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) +"azl" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/smes/buildable{charge = 0; RCon_tag = "Solar - Fore Port"},/turf/simulated/floor/plating,/area/maintenance/auxsolarport) +"azm" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/crew_quarters/fitness) +"azn" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/camera{c_tag = "Holodeck South"; dir = 1; pixel_y = 6},/turf/simulated/floor/plating,/area/crew_quarters/fitness) "azo" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) "azp" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "solar_chapel_outer"; locked = 1; name = "Engineering External Access"; req_access = null; req_access_txt = "10;13"},/obj/effect/decal/cleanable/dirt,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) "azq" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry/fore) @@ -1367,8 +1367,8 @@ "aAo" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_x = -2; pixel_y = -28},/turf/simulated/floor{dir = 10; icon_state = "neutral"},/area/crew_quarters/fitness) "aAp" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/crew_quarters/fitness) "aAq" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/crew_quarters/fitness) -"aAr" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/library) -"aAs" = (/obj/item/device/radio/intercom{pixel_x = 28},/obj/machinery/libraryscanner,/turf/simulated/floor/wood,/area/library) +"aAr" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/crew_quarters/fitness) +"aAs" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/maintenance/library) "aAt" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/library) "aAu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) "aAv" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "solar_chapel_pump"; tag_exterior_door = "solar_chapel_outer"; frequency = 1379; id_tag = "solar_chapel_airlock"; tag_interior_door = "solar_chapel_inner"; pixel_x = 25; req_access_txt = "13"; tag_chamber_sensor = "solar_chapel_sensor"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "solar_chapel_sensor"; pixel_x = 25; pixel_y = 12},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 2; frequency = 1379; id_tag = "solar_chapel_pump"},/obj/effect/decal/cleanable/dirt,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/warning_stripes,/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) @@ -1418,10 +1418,10 @@ "aBn" = (/obj/machinery/light_switch{pixel_y = -25},/obj/structure/closet/athletic_mixed,/turf/simulated/floor{icon_state = "neutral"},/area/crew_quarters/fitness) "aBo" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/structure/flora/pottedplant{tag = "icon-plant-06"; icon_state = "plant-06"},/turf/simulated/floor{icon_state = "neutral"},/area/crew_quarters/fitness) "aBp" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "neutral"},/area/crew_quarters/fitness) -"aBq" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/maintenance/library) +"aBq" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplatecorner"},/area/maintenance/library) "aBr" = (/obj/structure/closet/lasertag/red,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor{icon_state = "neutral"; dir = 6},/area/crew_quarters/fitness) -"aBs" = (/obj/machinery/camera{c_tag = "Fore Port Solar Access"},/obj/effect/decal/cleanable/dirt,/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/plating,/area/maintenance/arrivals) -"aBt" = (/obj/machinery/button/driver{id = "chapelgun"; name = "Chapel Mass Driver"; pixel_x = 25},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) +"aBs" = (/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/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating{dir = 4; icon_state = "warnplatecorner"},/area/maintenance/library) +"aBt" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating{dir = 1; icon_state = "warnplate"; nitrogen = 0.01; oxygen = 0.01},/area/maintenance/library) "aBu" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) "aBv" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) "aBw" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "solar_chapel_inner"; locked = 1; name = "Engineering External Access"; req_access = null; req_access_txt = "13"},/obj/machinery/atmospherics/pipe/simple/visible,/obj/effect/decal/cleanable/dirt,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) @@ -1469,7 +1469,7 @@ "aCm" = (/turf/simulated/wall/r_wall,/area/maintenance/substation/civilian_east) "aCn" = (/obj/effect/decal/cleanable/dirt,/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/maintenance/bar) "aCo" = (/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/machinery/power/sensor{name = "Powernet Sensor - Civilian East Subgrid"; name_tag = "Civilian East Subgrid"},/turf/simulated/floor/plating,/area/maintenance/substation/civilian_east) -"aCp" = (/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "grimy"},/area/hydroponics/garden) +"aCp" = (/obj/machinery/camera{c_tag = "Fore Port Solar Access"},/obj/effect/decal/cleanable/dirt,/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/plating,/area/maintenance/arrivals) "aCq" = (/obj/machinery/shower{dir = 4; icon_state = "shower"; pixel_x = 5; pixel_y = 0},/obj/structure/curtain/open/shower,/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) "aCr" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) "aCs" = (/obj/machinery/shower{dir = 8; icon_state = "shower"; pixel_x = -5; pixel_y = 0},/obj/structure/curtain/open/shower,/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) @@ -1489,7 +1489,7 @@ "aCG" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 8},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/arrivals) "aCH" = (/obj/machinery/camera{c_tag = "Fore Port Solar Control"; dir = 1},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/maintenance/auxsolarport) "aCI" = (/obj/effect/decal/cleanable/dirt,/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,/area/maintenance/auxsolarport) -"aCJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/glass{name = "Holodeck Control"},/turf/simulated/floor,/area/crew_quarters/fitness) +"aCJ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/arrivals) "aCK" = (/turf/simulated/wall,/area/storage/primary) "aCL" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/storage/primary) "aCM" = (/turf/simulated/wall/r_wall,/area/storage/primary) @@ -1523,11 +1523,11 @@ "aDo" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/drinks/shaker,/obj/item/weapon/gun/projectile/shotgun/doublebarrel,/obj/item/weapon/paper{info = "This permit signifies that the Bartender is permitted to posess this firearm in the bar, and ONLY the bar. Failure to adhere to this permit will result in confiscation of the weapon and possibly arrest."; name = "Shotgun permit"},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/wood,/area/crew_quarters/bar) "aDp" = (/turf/simulated/wall,/area/crew_quarters/bar) "aDq" = (/obj/structure/disposalpipe/segment,/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/bar) -"aDr" = (/obj/structure/closet/lasertag/blue,/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/crew_quarters/fitness) +"aDr" = (/obj/effect/decal/cleanable/dirt,/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},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating{dir = 1; icon_state = "warnplate"; nitrogen = 0.01; oxygen = 0.01},/area/maintenance/arrivals) "aDs" = (/turf/simulated/wall,/area/maintenance/bar) -"aDt" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/crew_quarters/fitness) -"aDu" = (/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/hallway/primary/central_two) -"aDv" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor,/area/crew_quarters/fitness) +"aDt" = (/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/machinery/power/smes/buildable{charge = 0; RCon_tag = "Substation - Civilian East"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/maintenance/substation/civilian_east) +"aDu" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/crew_quarters/sleep) +"aDv" = (/obj/machinery/camera{c_tag = "Dormitory South"; c_tag_order = 999; dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/crew_quarters/sleep) "aDw" = (/obj/structure/cable/green,/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/turf/simulated/floor/plating,/area/maintenance/substation/civilian_east) "aDx" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/substation/civilian_east) "aDy" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/substation/civilian_east) @@ -1605,14 +1605,14 @@ "aES" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock/maintenance{name = "Bar Maintenance"; req_access_txt = "25"},/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/crew_quarters/bar) "aET" = (/obj/structure/disposalpipe/sortjunction{dir = 2; icon_state = "pipe-j1s"; sortType = "Bar"; name = "Bar"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/bar) "aEU" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/substation/civilian_east) -"aEV" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/hallway/primary/central_two) -"aEW" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/hallway/primary/central_two) +"aEV" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating,/area/maintenance/library) +"aEW" = (/turf/simulated/floor/plating,/area/maintenance/library) "aEX" = (/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) "aEY" = (/obj/effect/decal/cleanable/dirt,/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,/area/maintenance/auxsolarstarboard) -"aEZ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/arrivals) +"aEZ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/library) "aFa" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/bar) "aFb" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/maintenance/bar) -"aFc" = (/obj/structure/table,/obj/item/weapon/paper{desc = ""; info = "Brusies sustained in the holodeck can be healed simply by sleeping."; name = "Holodeck Disclaimer"},/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/machinery/light/small{dir = 1},/turf/simulated/floor,/area/crew_quarters/fitness) +"aFc" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/library) "aFd" = (/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/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/library) "aFe" = (/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/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/maintenance/library) "aFf" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/turf/simulated/floor/plating,/area/maintenance/library) @@ -1632,10 +1632,10 @@ "aFt" = (/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/hallway/secondary/entry/port) "aFu" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 5; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/turf/simulated/floor/plating,/area/maintenance/arrivals) "aFv" = (/obj/structure/closet/wardrobe/red,/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/checkpoint2) -"aFw" = (/obj/effect/decal/cleanable/dirt,/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},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating{dir = 1; icon_state = "warnplate"; nitrogen = 0.01; oxygen = 0.01},/area/maintenance/arrivals) +"aFw" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/crew_quarters/sleep) "aFx" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/arrivals) -"aFy" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/hallway/primary/central_two) -"aFz" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "neutralcorner"; dir = 4},/area/hallway/primary/central_two) +"aFy" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/crew_quarters/sleep) +"aFz" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/maintenance/library) "aFA" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "red"},/area/security/checkpoint2) "aFB" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/maintenance/arrivals) "aFC" = (/turf/simulated/wall,/area/maintenance/substation/civilian_west) @@ -1671,7 +1671,7 @@ "aGg" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/secondary/entry/port) "aGh" = (/obj/machinery/atmospherics/unary/vent_pump/on,/obj/structure/closet/emcloset,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/hallway/secondary/entry/port) "aGi" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/secondary/entry/port) -"aGj" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "neutralcorner"; dir = 1},/area/hallway/primary/central_two) +"aGj" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/structure/reagent_dispensers/watertank,/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/plating,/area/maintenance/library) "aGk" = (/obj/machinery/door/airlock{name = "Unisex Restrooms"; req_access_txt = "0"},/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},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/sleep) "aGl" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) "aGm" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) @@ -1687,10 +1687,10 @@ "aGw" = (/obj/effect/decal/cleanable/dirt,/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/maintenance/bar) "aGx" = (/obj/machinery/door/airlock/engineering{icon_state = "door_closed"; locked = 0; name = "Fore Starboard Solar Access"; req_access_txt = "10"},/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) "aGy" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 0},/turf/simulated/wall/r_wall,/area/maintenance/auxsolarstarboard) -"aGz" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/turf/simulated/floor/plating,/area/crew_quarters/fitness) -"aGA" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/structure/reagent_dispensers/watertank,/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/plating,/area/maintenance/library) -"aGB" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/maintenance/library) -"aGC" = (/obj/machinery/computer/HolodeckControl,/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/crew_quarters/fitness) +"aGz" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/library) +"aGA" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/landmark{name = "blobstart"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/library) +"aGB" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/meter,/turf/simulated/floor/plating,/area/maintenance/library) +"aGC" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Dormitory"},/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/hallway/primary/central_two) "aGD" = (/obj/item/weapon/cigbutt,/obj/effect/decal/cleanable/dirt,/obj/structure/cable,/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/turf/simulated/floor/plating,/area/maintenance/library) "aGE" = (/obj/structure/disposalpipe/segment,/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/library) "aGF" = (/turf/simulated/wall,/area/chapel/office) @@ -1757,17 +1757,17 @@ "aHO" = (/obj/structure/disposalpipe/junction{icon_state = "pipe-j1"; dir = 4},/obj/effect/decal/cleanable/flour,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/bar) "aHP" = (/obj/structure/disposalpipe/sortjunction{dir = 4; icon_state = "pipe-j1s"; sortType = "Kitchen"; name = "Kitchen"},/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"},/turf/simulated/floor/plating,/area/maintenance/bar) "aHQ" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/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"},/turf/simulated/floor/plating,/area/maintenance/bar) -"aHR" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/plating,/area/crew_quarters/fitness) -"aHS" = (/obj/structure/stool/bed/chair{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor,/area/crew_quarters/fitness) -"aHT" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/smes/buildable{charge = 0; RCon_tag = "Solar - Fore Port"},/turf/simulated/floor/plating,/area/maintenance/auxsolarport) -"aHU" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/crew_quarters/fitness) +"aHR" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Dormitory"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/hallway/primary/central_two) +"aHS" = (/obj/structure/disposalpipe/segment{dir = 4},/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) +"aHT" = (/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 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/maintenance/bar) +"aHU" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/maintenance{name = "Bar\\Library Maintenance"; req_access_txt = "0"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/library) "aHV" = (/obj/structure/closet,/obj/item/device/flashlight,/obj/effect/decal/cleanable/cobweb2,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/maintenance/bar) -"aHW" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/library) -"aHX" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/primary/starboard) -"aHY" = (/obj/structure/disposalpipe/segment,/obj/machinery/light{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/hallway/primary/starboard) +"aHW" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor/plating,/area/maintenance/bar) +"aHX" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/camera{c_tag = "Fore Starboard Solar Access"; dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/library) +"aHY" = (/obj/structure/disposalpipe/sortjunction/flipped{dir = 4; sortType = "Chapel"; name = "Chapel"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/library) "aHZ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/effect/decal/cleanable/blood/oil/streak{amount = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/maintenance/bar) -"aIa" = (/obj/structure/disposalpipe/sortjunction/flipped{dir = 2; sortType = "Library"; name = "Library"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/hallway/primary/starboard) -"aIb" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/camera{c_tag = "Holodeck South"; dir = 1; pixel_y = 6},/turf/simulated/floor/plating,/area/crew_quarters/fitness) +"aIa" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/library) +"aIb" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/library) "aIc" = (/obj/machinery/door/airlock/maintenance{name = "Library Maintenance"; req_access_txt = "0"; req_one_access_txt = "12;37"},/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/library) "aId" = (/obj/item/device/radio/intercom{pixel_y = 25},/obj/structure/table/woodentable,/obj/item/weapon/dice/d20,/obj/item/weapon/dice,/turf/simulated/floor/wood,/area/library) "aIe" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/packageWrap,/turf/simulated/floor/wood,/area/library) @@ -1827,8 +1827,8 @@ "aJg" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/primary/central_one) "aJh" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/central_one) "aJi" = (/turf/simulated/wall/r_wall,/area/hallway/primary/central_two) -"aJj" = (/obj/machinery/camera{c_tag = "Dormitory South"; c_tag_order = 999; dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/crew_quarters/sleep) -"aJk" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/crew_quarters/sleep) +"aJj" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/meter,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/library) +"aJk" = (/obj/machinery/button/driver{id = "chapelgun"; name = "Chapel Mass Driver"; pixel_x = 25},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) "aJl" = (/turf/simulated/wall,/area/hallway/primary/central_two) "aJm" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/structure/mirror{pixel_x = -28},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) "aJn" = (/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) @@ -1844,14 +1844,14 @@ "aJx" = (/obj/structure/plasticflaps{opacity = 1},/obj/machinery/navbeacon{codes_txt = "delivery;dir=2"; freq = 1400; location = "Kitchen"},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/maintenance/bar) "aJy" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/bar) "aJz" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/bar) -"aJA" = (/turf/simulated/floor/plating,/area/maintenance/library) -"aJB" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating,/area/maintenance/library) +"aJA" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/machinery/power/smes/buildable{charge = 0; RCon_tag = "Substation - Civilian West"},/turf/simulated/floor/plating,/area/maintenance/substation/civilian_west) +"aJB" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/hallway/primary/central_two) "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/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/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/crew_quarters/sleep) -"aJH" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/crew_quarters/sleep) +"aJG" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/hallway/primary/central_two) +"aJH" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/library) "aJI" = (/obj/structure/filingcabinet,/turf/simulated/floor/wood,/area/library) "aJJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/wood,/area/library) "aJK" = (/obj/structure/stool/bed/chair/office/dark,/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/machinery/camera{c_tag = "Library North"; dir = 2; network = list("SS13")},/turf/simulated/floor/wood,/area/library) @@ -1866,12 +1866,12 @@ "aJT" = (/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office) "aJU" = (/obj/structure/closet/coffin,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) "aJV" = (/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,/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) -"aJW" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/crew_quarters/fitness) +"aJW" = (/obj/structure/disposalpipe/segment,/obj/machinery/button/crematorium{pixel_x = 25},/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) "aJX" = (/turf/simulated/shuttle/floor,/turf/simulated/shuttle/wall{icon_state = "swall_f10"; dir = 2},/area/shuttle/arrival/station) "aJY" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/meter,/turf/simulated/floor/plating,/area/maintenance/substation/civilian_west) "aJZ" = (/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/power/sensor{name = "Powernet Sensor - Civilian West"; name_tag = "Civilian West Subgrid"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green,/turf/simulated/floor/plating,/area/maintenance/substation/civilian_west) "aKa" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/power/breakerbox/activated{RCon_tag = "Civilian West Substation Bypass"},/turf/simulated/floor/plating,/area/maintenance/substation/civilian_west) -"aKb" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/meter,/turf/simulated/floor/plating,/area/maintenance/library) +"aKb" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_command{name = "E.V.A."; req_access_txt = "0"; req_one_access_txt = "1;11;18;24"},/turf/simulated/floor{icon_state = "dark"},/area/hallway/primary/central_one) "aKc" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/storage/emergency2) "aKd" = (/turf/simulated/floor,/area/hallway/secondary/entry/starboard) "aKe" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/storage/emergency2) @@ -1915,8 +1915,8 @@ "aKQ" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "nuke_shuttle_dock_outer"; locked = 1; name = "Docking Port Airlock"; req_access = null; req_access_txt = "13"},/turf/simulated/floor/plating,/area/hallway/secondary/entry/port) "aKR" = (/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/hallway/primary/central_one) "aKS" = (/obj/machinery/vending/cola,/turf/simulated/floor{icon_state = "dark"},/area/hallway/primary/central_two) -"aKT" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/landmark{name = "blobstart"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/library) -"aKU" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Dormitory"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/hallway/primary/central_two) +"aKT" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_command{name = "E.V.A."; req_access_txt = "0"; req_one_access_txt = "1;11;18;24"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "dark"},/area/hallway/primary/central_one) +"aKU" = (/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/hallway/primary/central_two) "aKV" = (/obj/machinery/camera{c_tag = "Dormitory Toilets"; dir = 1},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) "aKW" = (/obj/machinery/light,/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) "aKX" = (/obj/machinery/door/airlock{name = "Bar Backroom"; req_access_txt = "25"},/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/crew_quarters/bar) @@ -1938,7 +1938,7 @@ "aLn" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/wood,/area/library) "aLo" = (/obj/machinery/newscaster{pixel_x = 30},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor/wood,/area/library) "aLp" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) -"aLq" = (/turf/simulated/wall,/area/engineering/break_room) +"aLq" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/hallway/primary/central_two) "aLr" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp{pixel_y = 10},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office) "aLs" = (/obj/structure/table/woodentable,/obj/item/weapon/pen,/obj/item/weapon/reagent_containers/food/drinks/bottle/holywater,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office) "aLt" = (/obj/structure/table/woodentable,/obj/item/weapon/nullrod,/obj/item/device/eftpos{eftpos_name = "Chapel EFTPOS scanner"},/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office) @@ -1979,8 +1979,8 @@ "aMc" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/primary/central_one) "aMd" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/primary/central_one) "aMe" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/sign/securearea,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/primary/central_one) -"aMf" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_command{name = "E.V.A."; req_access_txt = "0"; req_one_access_txt = "1;11;18;24"},/turf/simulated/floor{icon_state = "dark"},/area/hallway/primary/central_one) -"aMg" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_command{name = "E.V.A."; req_access_txt = "0"; req_one_access_txt = "1;11;18;24"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "dark"},/area/hallway/primary/central_one) +"aMf" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "neutralcorner"; dir = 4},/area/hallway/primary/central_two) +"aMg" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "neutralcorner"; dir = 1},/area/hallway/primary/central_two) "aMh" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/sign/securearea,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/primary/central_one) "aMi" = (/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/hallway/primary/central_one) "aMj" = (/obj/structure/extinguisher_cabinet{pixel_x = -24},/turf/simulated/floor,/area/hallway/primary/central_one) @@ -1990,8 +1990,8 @@ "aMn" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/primary/central_one) "aMo" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/primary/central_one) "aMp" = (/obj/machinery/vending/snack,/turf/simulated/floor{icon_state = "dark"},/area/hallway/primary/central_two) -"aMq" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Dormitory"},/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/hallway/primary/central_two) -"aMr" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/library) +"aMq" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/snacks/chips,/obj/random/single{icon = 'icons/obj/drinks.dmi'; icon_state = "cola"; name = "randomly spawned cola"; spawn_nothing_percentage = 50; spawn_object = /obj/item/weapon/reagent_containers/food/drinks/cans/cola},/turf/simulated/floor/carpet,/area/hallway/secondary/entry/starboard) +"aMr" = (/obj/structure/table/woodentable,/obj/random/single{icon = 'icons/obj/playing_cards.dmi'; icon_state = "deck"; name = "randomly spawned deck of cards"; spawn_nothing_percentage = 50; spawn_object = /obj/item/weapon/deck},/turf/simulated/floor{icon_state = "grimy"},/area/hallway/secondary/entry/starboard) "aMs" = (/obj/machinery/light_switch{pixel_y = 28},/obj/machinery/light{dir = 1},/obj/machinery/smartfridge/drinks,/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar) "aMt" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar) "aMu" = (/obj/structure/reagent_dispensers/beerkeg,/obj/machinery/requests_console{announcementConsole = 0; department = "Bar"; departmentType = 2; name = "Bar RC"; pixel_x = 0; pixel_y = 30},/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar) @@ -2083,8 +2083,8 @@ "aOc" = (/turf/simulated/floor{icon_state = "L15"},/area/hallway/primary/central_one) "aOd" = (/obj/machinery/light{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/turf/simulated/floor,/area/hallway/primary/central_two) "aOe" = (/turf/simulated/floor{icon_state = "neutralcorner"; dir = 4},/area/hallway/primary/central_two) -"aOf" = (/obj/structure/disposalpipe/sortjunction/flipped{dir = 4; sortType = "Chapel"; name = "Chapel"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/library) -"aOg" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/camera{c_tag = "Fore Starboard Solar Access"; dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/library) +"aOf" = (/obj/machinery/seed_storage/garden,/turf/simulated/floor{icon_state = "green"; dir = 8},/area/hydroponics) +"aOg" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/fancy/cigarettes{pixel_y = 2},/obj/random/single{icon = 'icons/obj/items.dmi'; icon_state = "lighter-g"; name = "randomly spawned lighter"; spawn_nothing_percentage = 50; spawn_object = /obj/item/weapon/flame/lighter},/turf/simulated/floor{icon_state = "grimy"},/area/hallway/secondary/entry/starboard) "aOh" = (/obj/machinery/newscaster{pixel_y = 32},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "neutralcorner"; dir = 1},/area/hallway/primary/central_two) "aOi" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/camera{c_tag = "Central Hallway North-East"; dir = 2},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/hallway/primary/central_two) "aOj" = (/obj/machinery/light{dir = 1},/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/hallway/primary/central_two) @@ -2135,8 +2135,8 @@ "aPc" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -27},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry/port) "aPd" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/hallway/secondary/entry/port) "aPe" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry/starboard) -"aPf" = (/obj/structure/extinguisher_cabinet{pixel_x = 25},/turf/simulated/floor/carpet,/area/engineering/break_room) -"aPg" = (/turf/simulated/floor/carpet,/area/engineering/break_room) +"aPf" = (/obj/machinery/seed_storage/garden,/turf/simulated/floor,/area/hydroponics) +"aPg" = (/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "grimy"},/area/hydroponics/garden) "aPh" = (/turf/simulated/floor/carpet,/area/hallway/secondary/entry/starboard) "aPi" = (/obj/structure/stool/bed/chair/comfy/beige{dir = 8},/turf/simulated/floor{icon_state = "grimy"},/area/hallway/secondary/entry/starboard) "aPj" = (/obj/machinery/vending/coffee,/turf/simulated/floor{icon_state = "dark"},/area/hallway/secondary/entry/starboard) @@ -2198,7 +2198,7 @@ "aQn" = (/turf/simulated/floor,/area/hydroponics) "aQo" = (/obj/structure/disposalpipe/segment,/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "green"; dir = 4},/area/hydroponics) "aQp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hydroponics) -"aQq" = (/obj/structure/stool/bed/chair/comfy/beige,/obj/effect/landmark/start{name = "Station Engineer"},/turf/simulated/floor/carpet,/area/engineering/break_room) +"aQq" = (/obj/item/device/radio/intercom{pixel_x = 28},/obj/machinery/libraryscanner,/turf/simulated/floor/wood,/area/library) "aQr" = (/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/hydroponics) "aQs" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/hydroponics) "aQt" = (/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor{icon_state = "green"; dir = 4},/area/hydroponics) @@ -2218,7 +2218,7 @@ "aQH" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry/port) "aQI" = (/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/hallway/secondary/entry/port) "aQJ" = (/obj/machinery/camera{c_tag = "Arrivals Center"; dir = 4; network = list("SS13")},/obj/structure/extinguisher_cabinet{pixel_x = -24},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry/port) -"aQK" = (/obj/structure/closet/wardrobe/atmospherics_yellow,/turf/simulated/floor{icon_state = "yellowfull"; dir = 8},/area/crew_quarters/sleep/engi_wash) +"aQK" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/primary/starboard) "aQL" = (/obj/structure/table/woodentable,/turf/simulated/floor/carpet,/area/hallway/secondary/entry/starboard) "aQM" = (/obj/machinery/vending/cola,/turf/simulated/floor{icon_state = "dark"},/area/hallway/secondary/entry/starboard) "aQN" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/turf/simulated/floor,/area/hallway/secondary/entry/starboard) @@ -2262,7 +2262,7 @@ "aRz" = (/obj/machinery/biogenerator,/turf/simulated/floor,/area/hydroponics) "aRA" = (/obj/machinery/seed_extractor,/turf/simulated/floor,/area/hydroponics) "aRB" = (/obj/machinery/vending/hydronutrients,/turf/simulated/floor,/area/hydroponics) -"aRC" = (/obj/structure/closet/wardrobe/engineering_yellow,/turf/simulated/floor{dir = 4; icon_state = "whiteyellowfull"},/area/crew_quarters/sleep/engi_wash) +"aRC" = (/obj/structure/disposalpipe/sortjunction/flipped{dir = 2; sortType = "Library"; name = "Library"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/hallway/primary/starboard) "aRD" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/disposal,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor{icon_state = "green"; dir = 4},/area/hydroponics) "aRE" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hydroponics) "aRF" = (/obj/machinery/vending/hydronutrients,/turf/simulated/floor{icon_state = "green"; dir = 8},/area/hydroponics) @@ -2517,7 +2517,7 @@ "aWu" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "aWv" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "aWw" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/glass{name = "Kitchen"; req_access_txt = "28"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/hydroponics/garden) -"aWx" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/meter,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/library) +"aWx" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/smartfridge/drying_rack,/turf/simulated/floor{dir = 9; icon_state = "green"},/area/hydroponics/garden) "aWy" = (/obj/structure/table/reinforced,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "grimy"},/area/hydroponics/garden) "aWz" = (/obj/structure/stool{pixel_y = 8},/obj/effect/landmark/start{name = "Gardener"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "green"; dir = 8},/area/hydroponics/garden) "aWA" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/hydroponics/garden) @@ -2611,7 +2611,7 @@ "aYk" = (/obj/structure/stool/bed/chair/comfy/black,/turf/simulated/floor/wood,/area/library) "aYl" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp/green{pixel_x = 1; pixel_y = 5},/turf/simulated/floor/wood,/area/library) "aYm" = (/obj/effect/landmark/start{name = "Librarian"},/obj/structure/stool/bed/chair/office/dark,/turf/simulated/floor/wood,/area/library) -"aYn" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/library) +"aYn" = (/obj/structure/disposalpipe/segment,/obj/machinery/light{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/hallway/primary/starboard) "aYo" = (/obj/structure/stool,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 8; icon_state = "chapel"},/area/chapel/main) "aYp" = (/obj/structure/stool,/turf/simulated/floor{icon_state = "chapel"},/area/chapel/main) "aYq" = (/obj/structure/stool,/turf/simulated/floor{dir = 8; icon_state = "chapel"},/area/chapel/main) @@ -2676,7 +2676,7 @@ "aZx" = (/obj/machinery/portable_atmospherics/hydroponics/soil,/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/grass,/area/hydroponics/garden) "aZy" = (/obj/structure/flora/ausbushes/brflowers,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/grass,/area/hydroponics/garden) "aZz" = (/turf/simulated/wall,/area/hallway/primary/starboard) -"aZA" = (/obj/structure/disposalpipe/segment{dir = 4},/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) +"aZA" = (/obj/machinery/door_control{id = "Disposal Exit"; name = "Disposal Vent Control"; pixel_x = -25; pixel_y = 4; req_access_txt = "12"},/obj/machinery/button/driver{id = "trash"; pixel_x = -26; pixel_y = -6},/turf/simulated/floor/plating,/area/maintenance/disposal) "aZB" = (/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/carpet,/area/library) "aZC" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/carpet,/area/library) "aZD" = (/obj/structure/table/woodentable,/obj/item/weapon/paper,/turf/simulated/floor/wood,/area/library) @@ -2784,7 +2784,7 @@ "bbB" = (/turf/simulated/floor{icon_state = "green"; dir = 8},/area/hydroponics/garden) "bbC" = (/obj/structure/flora/ausbushes/fernybush,/turf/simulated/floor/grass,/area/hydroponics/garden) "bbD" = (/obj/structure/flora/ausbushes/brflowers,/obj/machinery/camera/autoname{dir = 8},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/grass,/area/hydroponics/garden) -"bbE" = (/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 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/maintenance/bar) +"bbE" = (/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/machinery/camera{c_tag = "Command Substation"; dir = 2; network = list("SS13","Engineering")},/obj/machinery/power/smes/buildable{charge = 0; RCon_tag = "Substation - Command"},/turf/simulated/floor/plating,/area/maintenance/substation/command) "bbF" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/hallway/primary/starboard) "bbG" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/glass{name = "Library"},/turf/simulated/floor/carpet,/area/hallway/primary/starboard) "bbH" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/carpet,/area/library) @@ -2818,7 +2818,7 @@ "bcj" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/maintenance/locker) "bck" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) "bcl" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/power/terminal{dir = 8},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable,/turf/simulated/floor/plating,/area/maintenance/substation/medical) -"bcm" = (/obj/structure/table,/obj/item/bodybag/cryobag{pixel_x = 6},/obj/item/stack/medical/bruise_pack{pixel_x = -4; pixel_y = 3},/obj/item/stack/medical/bruise_pack{pixel_x = -4; pixel_y = 3},/obj/item/stack/medical/ointment{pixel_y = 10},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor{icon_state = "yellowfull"; dir = 8},/area/crew_quarters/sleep/engi_wash) +"bcm" = (/obj/structure/filingcabinet/chestdrawer,/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor{dir = 1; icon_state = "whitered"},/area/assembly/robotics) "bcn" = (/obj/structure/disposalpipe/sortjunction/flipped{dir = 2; sortType = "Robotics"; name = "Robotics"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/research_port) "bco" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/maintenance/locker) "bcp" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/storage/tools) @@ -2853,11 +2853,11 @@ "bcS" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "bcT" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/door_control{id = "kitchen"; name = "Kitchen Shutters Control"; pixel_x = -1; pixel_y = -24; req_access_txt = "28"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) "bcU" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen) -"bcV" = (/obj/machinery/light_switch{pixel_x = -22; pixel_y = -10},/turf/simulated/floor/carpet,/area/engineering/break_room) +"bcV" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/rnd/lab) "bcW" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 1; icon_state = "green"},/area/hydroponics/garden) "bcX" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/hydroponics/garden) "bcY" = (/obj/structure/flora/ausbushes,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/grass,/area/hydroponics/garden) -"bcZ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/maintenance{name = "Bar\\Library Maintenance"; req_access_txt = "0"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/library) +"bcZ" = (/obj/structure/lattice,/turf/space,/area/shuttle/escape/station) "bda" = (/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"},/turf/simulated/floor,/area/hallway/primary/starboard) "bdb" = (/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/hallway/primary/starboard) "bdc" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/glass{name = "Library"},/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/carpet,/area/hallway/primary/starboard) @@ -3402,12 +3402,12 @@ "bnv" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) "bnw" = (/obj/machinery/door/airlock{name = "Medbay Substation"; req_access_txt = "5"},/obj/machinery/door/firedoor,/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/plating,/area/maintenance/substation/medical) "bnx" = (/obj/machinery/door/blast/regular{id = "mixvent"; name = "Mixer Room Vent"},/turf/simulated/floor/engine/vacuum,/area/rnd/mixing) -"bny" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor/plating,/area/maintenance/bar) +"bny" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable/cyan,/turf/simulated/floor/plating,/area/turret_protected/ai_upload) "bnz" = (/obj/machinery/computer/rdconsole/robotics,/obj/machinery/alarm{pixel_y = 25},/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics) "bnA" = (/obj/structure/table,/obj/item/weapon/book/manual/robotics_cyborgs{pixel_x = 2; pixel_y = 5},/obj/item/weapon/storage/belt/utility,/obj/machinery/requests_console{department = "Robotics"; departmentType = 2; name = "Robotics RC"; pixel_y = 30},/obj/machinery/light{dir = 1},/obj/item/weapon/storage/belt/utility,/obj/item/weapon/reagent_containers/glass/beaker/large,/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics) "bnB" = (/obj/machinery/r_n_d/circuit_imprinter,/obj/item/weapon/reagent_containers/glass/beaker/sulphuric,/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics) -"bnC" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/crew_quarters/fitness) -"bnD" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "solar_chapel_airlock"; name = "interior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = "13"},/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/obj/effect/decal/cleanable/dirt,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating{dir = 1; icon_state = "warnplate"; nitrogen = 82.1472; oxygen = 21.8366},/area/maintenance/auxsolarstarboard) +"bnC" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/door_control{desc = "A remote control-switch for shutters."; id = "hop_office_desk"; name = "Desk Privacy Shutter"; pixel_x = 16; pixel_y = 28},/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/crew_quarters/heads/hop) +"bnD" = (/obj/structure/table/woodentable,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/item/weapon/storage/box/matches,/obj/item/clothing/mask/smokable/cigarette/cigar,/obj/item/weapon/reagent_containers/food/drinks/flask{pixel_x = 8},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor/carpet,/area/crew_quarters/captain) "bnE" = (/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/blast/shutters{density = 0; dir = 4; icon_state = "shutter0"; id = "scanhideside"; name = "Diagnostics Room Privacy Shutters"; opacity = 0},/turf/simulated/floor{dir = 8; icon_state = "whitered"},/area/medical/medbay4) "bnF" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/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{icon_state = "white"},/area/rnd/research) "bnG" = (/obj/machinery/autolathe,/turf/simulated/floor{icon_state = "white"},/area/rnd/lab) @@ -3422,7 +3422,7 @@ "bnP" = (/obj/structure/closet/emcloset,/obj/machinery/camera{c_tag = "Arrivals Auxiliary Docking South"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/hallway/secondary/entry/aft) "bnQ" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor,/area/hallway/secondary/entry/aft) "bnR" = (/obj/machinery/conveyor{dir = 1; id = "garbage"},/obj/structure/sign/vacuum{pixel_x = -32},/turf/simulated/floor/plating,/area/maintenance/disposal) -"bnS" = (/obj/structure/stool/bed/chair/comfy/beige{dir = 8},/obj/effect/landmark/start{name = "Atmospheric Technician"},/turf/simulated/floor/carpet,/area/engineering/break_room) +"bnS" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 28},/turf/simulated/floor{icon_state = "bot"},/area/rnd/research) "bnT" = (/obj/machinery/conveyor_switch/oneway{convdir = -1; id = "garbage"; name = "disposal coveyor"},/turf/simulated/floor/plating,/area/maintenance/disposal) "bnU" = (/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor/plating,/area/maintenance/disposal) "bnV" = (/obj/effect/decal/cleanable/blood/oil,/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/maintenance/disposal) @@ -3444,7 +3444,7 @@ "bol" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/central_one) "bom" = (/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/maintenance/substation/command) "bon" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/terminal{dir = 4},/turf/simulated/floor/plating,/area/maintenance/substation/command) -"boo" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/turf/simulated/floor/carpet,/area/engineering/break_room) +"boo" = (/obj/structure/grille,/obj/structure/cable/green,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/structure/window/reinforced/polarized{dir = 4},/obj/structure/window/reinforced/polarized{dir = 1},/obj/structure/window/reinforced/polarized{dir = 8},/turf/simulated/floor/plating,/area/crew_quarters/heads/hop) "bop" = (/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"},/obj/machinery/door/airlock/command{name = "Electrical Maintenance"; req_access = null; req_access_txt = "19"},/turf/simulated/floor/plating,/area/maintenance/substation/command) "boq" = (/obj/machinery/camera{c_tag = "Engineering Washroom"; dir = 1; network = list("SS13")},/obj/machinery/light,/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/sleep/engi_wash) "bor" = (/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{dir = 1},/turf/simulated/floor/plating,/area/maintenance/substation/command) @@ -3470,7 +3470,7 @@ "boL" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "boM" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "boN" = (/obj/structure/stool/bed/chair/office/dark{dir = 4},/obj/effect/landmark/start{name = "Chemist"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor{dir = 4; icon_state = "whiteyellow"},/area/medical/chemistry) -"boO" = (/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "psych"; name = "Mental Health Privacy Shutters"; opacity = 0},/obj/structure/window/reinforced/polarized,/obj/structure/window/reinforced/polarized{dir = 1},/obj/structure/window/reinforced/polarized{dir = 4},/turf/simulated/floor/plating,/area/medical/medbay4) +"boO" = (/obj/machinery/power/smes/buildable{charge = 0; RCon_tag = "Substation - Medical"},/obj/structure/cable/green,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/maintenance/substation/medical) "boP" = (/turf/simulated/floor{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/medical/reception) "boQ" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor{icon_state = "white"},/area/medical/reception) "boR" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/reception) @@ -3503,7 +3503,7 @@ "bps" = (/obj/machinery/camera{c_tag = "Robotics"; dir = 2; network = list("SS13","Research"); pixel_x = 22},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{dir = 4; icon_state = "whiteredcorner"},/area/assembly/robotics) "bpt" = (/turf/simulated/floor{dir = 1; icon_state = "whitered"},/area/assembly/robotics) "bpu" = (/obj/structure/stool,/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor{dir = 1; icon_state = "whitered"},/area/assembly/robotics) -"bpv" = (/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "psych"; name = "Mental Health Privacy Shutters"; opacity = 0},/obj/structure/window/reinforced/polarized,/obj/structure/window/reinforced/polarized{dir = 8},/obj/structure/window/reinforced/polarized{dir = 1},/turf/simulated/floor/plating,/area/medical/medbay4) +"bpv" = (/obj/structure/grille,/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = -32},/obj/structure/cable/green,/obj/structure/window/reinforced/polarized,/obj/structure/window/reinforced/polarized{dir = 4},/obj/structure/window/reinforced/polarized{dir = 8},/turf/simulated/floor/plating,/area/crew_quarters/heads/hop) "bpw" = (/obj/machinery/door/airlock/research{name = "Research Division Access"; req_access_txt = "47"},/turf/simulated/floor{icon_state = "white"},/area/hallway/primary/starboard) "bpx" = (/obj/structure/sign/securearea,/turf/simulated/wall,/area/hallway/primary/starboard) "bpy" = (/obj/structure/table,/obj/item/stack/sheet/glass{amount = 50; pixel_x = 3; pixel_y = 3},/obj/item/stack/sheet/metal{amount = 50},/obj/item/clothing/glasses/welding,/turf/simulated/floor{dir = 1; icon_state = "whitepurple"},/area/rnd/lab) @@ -3572,7 +3572,7 @@ "bqJ" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "bqK" = (/obj/machinery/camera{c_tag = "Common Brig Northwest"; dir = 4; network = list("SS13","Prison")},/obj/machinery/computer/arcade,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/security/prison) "bqL" = (/turf/simulated/wall/r_wall,/area/medical/chemistry) -"bqM" = (/obj/machinery/door/airlock/engineering{name = "Engineering Supplies"; req_one_access_txt = "10;24;5"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "yellowfull"; dir = 8},/area/engineering/break_room) +"bqM" = (/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = -5; pixel_y = -22},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/extinguisher_cabinet{pixel_x = 6; pixel_y = -29},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) "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) @@ -3601,7 +3601,7 @@ "brm" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/lab) "brn" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor{icon_state = "white"},/area/rnd/lab) "bro" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/lab) -"brp" = (/obj/structure/grille,/obj/structure/window/reinforced/polarized{id = "isoC_window_tint"},/obj/structure/window/reinforced/polarized{dir = 4; id = "isoC_window_tint"},/obj/structure/window/reinforced/polarized{dir = 1; id = "isoC_window_tint"},/obj/structure/window/reinforced/polarized{dir = 8; id = "isoC_window_tint"},/turf/simulated/floor/plating,/area/medical/patient_c) +"brp" = (/obj/structure/stool/bed/chair/office/dark{dir = 4},/obj/effect/landmark/start{name = "Head of Personnel"},/obj/machinery/door_control{desc = "A remote control-switch for shutters."; id = "hop_office_desk"; name = "Desk Privacy Shutter"; pixel_x = 26; pixel_y = 17},/obj/machinery/button/windowtint{pixel_x = 36; pixel_y = 18},/turf/simulated/floor,/area/crew_quarters/heads/hop) "brq" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/storage/emergency) "brr" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/storage/emergency) "brs" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry/aft) @@ -3823,7 +3823,7 @@ "bvA" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor,/area/crew_quarters/heads/hop) "bvB" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor,/area/crew_quarters/heads/hop) "bvC" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload_foyer) -"bvD" = (/obj/structure/grille,/obj/structure/window/reinforced/polarized{id = "isoB_window_tint"},/obj/structure/window/reinforced/polarized{dir = 4; id = "isoB_window_tint"},/obj/structure/window/reinforced/polarized{dir = 1; id = "isoB_window_tint"},/obj/structure/window/reinforced/polarized{dir = 8; id = "isoB_window_tint"},/turf/simulated/floor/plating,/area/medical/patient_b) +"bvD" = (/obj/structure/table/reinforced,/obj/machinery/door/window/eastright{dir = 1; name = "Emergency Kit"; req_access_txt = "5"},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 1; icon_state = "whiteyellow"},/area/medical/sleeper) "bvE" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/cyan{d2 = 4; icon_state = "0-4"},/obj/structure/cable/cyan{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload_foyer) "bvF" = (/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/obj/structure/cable/cyan{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/cyan{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload_foyer) "bvG" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/maintenance/substation/command) @@ -3831,7 +3831,7 @@ "bvI" = (/obj/structure/table,/obj/item/weapon/aiModule/nanotrasen,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) "bvJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) "bvK" = (/obj/machinery/hologram/holopad,/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) -"bvL" = (/obj/machinery/atmospherics/pipe/simple/visible{icon_state = "intact"; dir = 6},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/medical/sleeper) +"bvL" = (/obj/structure/table/rack,/obj/item/weapon/storage/belt/medical,/obj/item/weapon/storage/belt/medical,/obj/item/weapon/storage/belt/medical,/obj/item/weapon/storage/belt/medical,/obj/item/weapon/storage/belt/medical,/obj/item/clothing/accessory/stethoscope,/obj/item/clothing/accessory/stethoscope,/obj/item/clothing/accessory/stethoscope,/obj/item/clothing/accessory/stethoscope,/obj/machinery/camera{c_tag = "Medbay Equipment Storage"; dir = 1},/obj/item/clothing/accessory/stethoscope,/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 0; pixel_y = -22},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay3) "bvM" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) "bvN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) "bvO" = (/obj/structure/table,/obj/item/weapon/aiModule/freeform,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) @@ -3847,7 +3847,7 @@ "bvY" = (/obj/machinery/smartfridge/secure/medbay,/turf/simulated/wall,/area/medical/chemistry) "bvZ" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{name = "Chemistry Laboratory"; req_access_txt = "33"},/obj/structure/sign/chemistry{pixel_x = 32},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "bwa" = (/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/shutters{density = 0; dir = 4; icon_state = "shutter0"; id = "scanhideside"; name = "Diagnostics Room Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/medbay4) -"bwb" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/medical/sleeper) +"bwb" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;47"},/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/maintenance/research_shuttle) "bwc" = (/obj/machinery/door/window/eastright{base_state = "left"; dir = 8; icon_state = "left"; name = "Medical Reception"; req_access_txt = "5"},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor,/area/medical/reception) "bwd" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor,/area/medical/reception) "bwe" = (/turf/simulated/floor,/area/medical/reception) @@ -3905,7 +3905,7 @@ "bxe" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "loadingarea"},/area/hallway/primary/central_three) "bxf" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{icon_state = "delivery"},/area/hallway/primary/central_three) "bxg" = (/obj/machinery/door/firedoor,/obj/machinery/door/blast/shutters{density = 0; dir = 4; icon_state = "shutter0"; id = "scanhideside"; name = "Diagnostics Room Privacy Shutters"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "whitered"},/area/medical/medbay4) -"bxh" = (/obj/structure/grille,/obj/structure/window/reinforced/polarized{id = "isoA_window_tint"},/obj/structure/window/reinforced/polarized{dir = 4; id = "isoA_window_tint"},/obj/structure/window/reinforced/polarized{dir = 1; id = "isoA_window_tint"},/obj/structure/window/reinforced/polarized{dir = 8; id = "isoA_window_tint"},/turf/simulated/floor/plating,/area/medical/patient_a) +"bxh" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;47"},/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,/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/maintenance/research_shuttle) "bxi" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/carpet,/area/crew_quarters/heads/hop) "bxj" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/carpet,/area/crew_quarters/heads/hop) "bxk" = (/turf/simulated/floor/carpet,/area/crew_quarters/heads/hop) @@ -3918,7 +3918,7 @@ "bxr" = (/turf/simulated/wall/r_wall,/area/turret_protected/ai_upload) "bxs" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor,/area/maintenance/substation/command) "bxt" = (/obj/structure/stool/bed/chair/comfy/brown{dir = 4},/obj/machinery/camera{c_tag = "Captain's Quarters"; dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/carpet,/area/crew_quarters/captain) -"bxu" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/carpet,/area/engineering/break_room) +"bxu" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "bxv" = (/obj/machinery/door/window/eastright{base_state = "left"; dir = 1; icon_state = "left"; name = "Shower"; req_access_txt = "0"},/obj/machinery/shower{icon_state = "shower"; dir = 4},/obj/item/weapon/soap/deluxe,/obj/item/weapon/bikehorn/rubberducky,/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/captain) "bxw" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/hallway/primary/central_two) "bxx" = (/obj/structure/table,/obj/item/weapon/packageWrap,/obj/item/weapon/hand_labeler,/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor{dir = 1; icon_state = "whiteyellowcorner"},/area/medical/chemistry) @@ -3944,7 +3944,7 @@ "bxR" = (/obj/machinery/light{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor{dir = 1; icon_state = "whitecorner"},/area/medical/medbay2) "bxS" = (/obj/machinery/vending/medical,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) "bxT" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "toxin_test_airlock"; name = "exterior access button"; pixel_x = -20; pixel_y = -20; req_access_txt = "13"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating/airless,/area/space) -"bxU" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whiteyellowfull"},/area/crew_quarters/sleep/engi_wash) +"bxU" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "bxV" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/research_port) "bxW" = (/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) "bxX" = (/obj/structure/extinguisher_cabinet{pixel_x = -27},/obj/machinery/light{dir = 8},/turf/simulated/floor/bluegrid,/area/assembly/chargebay) @@ -4091,7 +4091,7 @@ "bAI" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) "bAJ" = (/obj/machinery/door/firedoor,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) "bAK" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) -"bAL" = (/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/button/ignition{id = "mixingsparker"; pixel_x = -25; pixel_y = -5},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -29},/turf/simulated/floor{dir = 4; icon_state = "warnwhitecorner"},/area/rnd/mixing) +"bAL" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "acute1"; name = "EMT Storage Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/sleeper) "bAM" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{dir = 2; icon_state = "whitepurplecorner"},/area/medical/medbay2) "bAN" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/medical/medbay2) "bAO" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "whitepurplecorner"},/area/medical/medbay2) @@ -4184,7 +4184,7 @@ "bCx" = (/turf/simulated/floor{icon_state = "white"},/area/rnd/research) "bCy" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/rnd/research) "bCz" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/turf/simulated/floor{icon_state = "white"},/area/rnd/research) -"bCA" = (/obj/structure/table/reinforced,/obj/machinery/door/window/eastright{dir = 1; name = "Emergency Kit"; req_access_txt = "5"},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 1; icon_state = "whiteyellow"},/area/medical/sleeper) +"bCA" = (/obj/machinery/door/firedoor,/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "acute1"; name = "EMT Storage Privacy Shutters"; opacity = 0},/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/sleeper) "bCB" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=8"; freq = 1400; location = "Research Division"},/obj/structure/plasticflaps{opacity = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor{icon_state = "bot"},/area/rnd/research) "bCC" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/rnd/docking) "bCD" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/rnd/docking) @@ -4206,7 +4206,7 @@ "bCT" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/central_three) "bCU" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor{icon_state = "bot"},/area/hallway/primary/central_three) "bCV" = (/obj/machinery/keycard_auth{pixel_x = -24; pixel_y = 0},/obj/machinery/account_database,/turf/simulated/floor{dir = 9; icon_state = "blue"},/area/crew_quarters/heads/hop) -"bCW" = (/obj/structure/grille,/obj/structure/window/reinforced/polarized{dir = 4; id = "isoA_window_tint"},/obj/structure/window/reinforced/polarized{id = "isoA_window_tint"},/obj/structure/window/reinforced/polarized{dir = 1; id = "isoA_window_tint"},/obj/structure/window/reinforced/polarized{dir = 8; id = "isoA_window_tint"},/turf/simulated/floor/plating,/area/medical/patient_a) +"bCW" = (/obj/structure/extinguisher_cabinet{pixel_x = -25},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics_cloning) "bCX" = (/obj/structure/table,/obj/item/weapon/folder/blue,/obj/item/weapon/stamp/hop,/obj/item/device/eftpos{eftpos_name = "HoP EFTPOS scanner"},/turf/simulated/floor,/area/crew_quarters/heads/hop) "bCY" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor,/area/crew_quarters/heads/hop) "bCZ" = (/obj/machinery/computer/message_monitor,/obj/machinery/light/small{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_server_room) @@ -4214,7 +4214,7 @@ "bDb" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_server_room) "bDc" = (/obj/machinery/door/airlock/highsecurity{name = "Messaging Server"; req_access_txt = "30"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_server_room) "bDd" = (/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1447; name = "Private AI Channel"; pixel_x = -12; pixel_y = 20},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/turretid/stun{control_area = "\improper AI Upload Chamber"; name = "AI Upload turret control"; pixel_x = 6; pixel_y = 24},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload_foyer) -"bDe" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = -20; pixel_y = 22},/turf/simulated/floor{icon_state = "yellowfull"; dir = 8},/area/crew_quarters/sleep/engi_wash) +"bDe" = (/turf/simulated/floor/mech_bay_recharge_floor,/area/medical/sleeper) "bDf" = (/obj/machinery/door_control{id = "engineering_cubicle"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = -25; pixel_y = 8; req_access_txt = "0"; specialfunctions = 4},/obj/structure/toilet{dir = 1},/obj/machinery/light/small{dir = 4},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/sleep/engi_wash) "bDg" = (/obj/machinery/door/airlock/highsecurity{name = "Cyborg Station"; req_access_txt = "16"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_cyborg_station) "bDh" = (/obj/effect/landmark/start{name = "Cyborg"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_cyborg_station) @@ -4230,7 +4230,7 @@ "bDr" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor,/area/hallway/primary/central_two) "bDs" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/sign/redcross{desc = "The Star of Life, a symbol of Medical Aid."; icon_state = "lifestar"; name = "Medbay"; pixel_x = 32},/turf/simulated/floor,/area/hallway/primary/central_two) "bDt" = (/turf/simulated/wall,/area/medical/sleeper) -"bDu" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) +"bDu" = (/obj/machinery/mech_bay_recharge_port,/obj/structure/sign/poster{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plating,/area/medical/sleeper) "bDv" = (/obj/structure/closet/secure_closet/medical_wall{name = "Pill Cabinet"},/obj/item/weapon/storage/pill_bottle/antitox,/obj/item/weapon/storage/pill_bottle/tramadol,/obj/item/weapon/reagent_containers/syringe/antiviral,/obj/item/weapon/reagent_containers/syringe/antiviral,/obj/item/weapon/reagent_containers/syringe/inaprovaline,/turf/simulated/wall,/area/medical/sleeper) "bDw" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{name = "Medicine Storage"; req_access_txt = "5"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "bDx" = (/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},/turf/simulated/floor/plating,/area/medical/sleeper) @@ -4238,7 +4238,7 @@ "bDz" = (/turf/simulated/floor{icon_state = "white"},/area/medical/medbay) "bDA" = (/obj/structure/disposalpipe/segment,/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{tag = "icon-whiteblue (EAST)"; icon_state = "whiteblue"; dir = 4},/area/medical/medbay) "bDB" = (/obj/structure/table,/obj/item/clothing/suit/straight_jacket,/obj/item/clothing/mask/muzzle,/obj/machinery/light,/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/turf/simulated/floor{tag = "icon-whiteblue (SOUTHWEST)"; icon_state = "whiteblue"; dir = 10},/area/medical/medbay3) -"bDC" = (/obj/structure/table/rack,/obj/item/weapon/storage/belt/medical,/obj/item/weapon/storage/belt/medical,/obj/item/weapon/storage/belt/medical,/obj/item/weapon/storage/belt/medical,/obj/item/weapon/storage/belt/medical,/obj/item/clothing/accessory/stethoscope,/obj/item/clothing/accessory/stethoscope,/obj/item/clothing/accessory/stethoscope,/obj/item/clothing/accessory/stethoscope,/obj/machinery/camera{c_tag = "Medbay Equipment Storage"; dir = 1},/obj/item/clothing/accessory/stethoscope,/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 0; pixel_y = -22},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay3) +"bDC" = (/obj/machinery/computer/mech_bay_power_console,/turf/simulated/floor/bluegrid,/area/medical/sleeper) "bDD" = (/obj/structure/table,/obj/machinery/light,/obj/item/weapon/storage/box/gloves{pixel_x = 4; pixel_y = 4},/obj/item/weapon/storage/box/masks{pixel_y = 0},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor{tag = "icon-whiteblue (SOUTHEAST)"; icon_state = "whiteblue"; dir = 6},/area/medical/medbay3) "bDE" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/medical/medbay2) "bDF" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) @@ -4255,7 +4255,7 @@ "bDQ" = (/obj/item/weapon/table_parts,/turf/simulated/floor/plating,/area/medical/genetics) "bDR" = (/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/plating,/area/medical/genetics) "bDS" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "cmooffice"; name = "CMO Office Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/medbay2) -"bDT" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) +"bDT" = (/obj/machinery/vending/medical,/turf/simulated/wall,/area/medical/medbay) "bDU" = (/obj/structure/sign/securearea,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall/r_wall,/area/rnd/research) "bDV" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "cmooffice"; name = "CMO Office Privacy Shutters"; opacity = 0},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/medical/medbay3) "bDW" = (/obj/machinery/light{dir = 1},/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 8; name = "hazard door west"},/turf/simulated/floor{dir = 8; icon_state = "whiteblue"},/area/rnd/research) @@ -4273,8 +4273,8 @@ "bEi" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/rnd/research) "bEj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/rnd/research) "bEk" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/rnd/research) -"bEl" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = -29},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) -"bEm" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/patient_wing) +"bEl" = (/obj/machinery/door_control{id = "acute1"; name = "EMT Storage Privacy Shutters"; pixel_x = 26; pixel_y = 25; req_access_txt = "5"},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) +"bEm" = (/obj/structure/disposalpipe/segment,/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{dir = 4; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay) "bEn" = (/turf/simulated/wall,/area/maintenance/research_shuttle) "bEo" = (/turf/simulated/floor{icon_state = "white"},/area/rnd/docking) "bEp" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/rnd/docking) @@ -4347,7 +4347,7 @@ "bFE" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plating,/area/medical/genetics) "bFF" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/research{name = "Genetics Research"; req_access_txt = "9"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics) "bFG" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 0; external_pressure_bound_default = 0; icon_state = "map_vent_in"; 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/bluegrid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/server) -"bFH" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "acute1"; name = "EMT Storage Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/sleeper) +"bFH" = (/obj/structure/table/rack,/obj/item/weapon/crowbar,/obj/item/weapon/crowbar,/obj/item/weapon/storage/toolbox/mechanical,/obj/machinery/vending/wallmed1{pixel_x = -32; pixel_y = 0; req_access_txt = "0"},/obj/item/roller,/obj/item/roller,/obj/item/roller,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "bFI" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced,/obj/machinery/door/blast/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "cmooffice"; name = "CMO Office Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/medbay) "bFJ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 8; name = "hazard door west"},/turf/simulated/floor{dir = 8; icon_state = "whiteblue"},/area/rnd/research) "bFK" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "white"},/area/rnd/research) @@ -4399,7 +4399,7 @@ "bGE" = (/obj/machinery/door/airlock/multi_tile/glass{autoclose = 1; dir = 2; req_access_txt = "5"},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/medical/sleeper) "bGF" = (/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "bGG" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) -"bGH" = (/obj/machinery/door/firedoor,/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "acute1"; name = "EMT Storage Privacy Shutters"; opacity = 0},/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/sleeper) +"bGH" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{autoclose = 1; name = "EMT Storage"; req_access_txt = "5"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "whitered"},/area/medical/medbay) "bGI" = (/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay) "bGJ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay) "bGK" = (/obj/structure/disposalpipe/sortjunction/flipped{dir = 1; sortType = "Chemistry"; name = "Chemistry"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"; tag = "icon-whitebluecorner"},/area/medical/medbay) @@ -4459,7 +4459,7 @@ "bHM" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/camera{c_tag = "Central Primary Hallway South South-West"; dir = 2},/turf/simulated/floor,/area/hallway/primary/central_three) "bHN" = (/obj/machinery/ai_status_display{pixel_y = 32},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/hallway/primary/central_three) "bHO" = (/obj/structure/sign/securearea{pixel_y = 32},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "warningcorner"; dir = 8},/area/hallway/primary/central_three) -"bHP" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor{icon_state = "yellowfull"; dir = 8},/area/crew_quarters/sleep/engi_wash) +"bHP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "bHQ" = (/obj/structure/sign/securearea{pixel_y = 32},/turf/simulated/floor{icon_state = "warningcorner"; dir = 4},/area/hallway/primary/central_three) "bHR" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor,/area/hallway/primary/central_three) "bHS" = (/obj/machinery/camera{c_tag = "Central Primary Hallway South South-East"; dir = 2},/turf/simulated/floor,/area/hallway/primary/central_three) @@ -4534,7 +4534,7 @@ "bJj" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "hazard door west"},/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},/turf/simulated/floor,/area/hallway/primary/central_three) "bJk" = (/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/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor,/area/hallway/primary/central_three) "bJl" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=AftH"; location = "AIW"},/obj/structure/disposalpipe/segment,/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},/turf/simulated/floor,/area/hallway/primary/central_three) -"bJm" = (/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/obj/machinery/light,/obj/machinery/camera{c_tag = "Engineering Supplies"; dir = 1; network = list("SS13")},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whiteyellowfull"},/area/crew_quarters/sleep/engi_wash) +"bJm" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay) "bJn" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=CHE"; location = "AIE"},/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},/turf/simulated/floor,/area/hallway/primary/central_three) "bJo" = (/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/manifold/hidden/scrubbers,/turf/simulated/floor,/area/hallway/primary/central_three) "bJp" = (/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/manifold/hidden/supply,/turf/simulated/floor,/area/hallway/primary/central_three) @@ -4545,12 +4545,12 @@ "bJu" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/turf/simulated/floor,/area/hallway/primary/central_two) "bJv" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/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},/turf/simulated/floor,/area/hallway/primary/central_two) "bJw" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=HOP"; location = "CHE"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor,/area/hallway/primary/central_two) -"bJx" = (/turf/simulated/floor/mech_bay_recharge_floor,/area/medical/sleeper) -"bJy" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor,/area/medical/sleeper) +"bJx" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white_1"},/area/medical/medbay) +"bJy" = (/obj/structure/stool{pixel_y = 8},/obj/effect/landmark/start{name = "Paramedic"},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "bJz" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 4; icon_state = "shutter0"; id = "cmooffice"; name = "CMO Office Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/medbay2) "bJA" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay) "bJB" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "cmooffice"; name = "CMO Office Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/medbay) -"bJC" = (/obj/machinery/computer/mech_bay_power_console,/turf/simulated/floor/bluegrid,/area/medical/sleeper) +"bJC" = (/obj/structure/closet/secure_closet/medical1,/obj/item/device/radio/intercom{broadcasting = 0; canhear_range = 5; freerange = 0; frequency = 1485; listening = 1; name = "Station Intercom (Medbay)"; pixel_x = 0; pixel_y = -31},/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/device/flashlight,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "bJD" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{id_tag = "cmodoor"; name = "CMO's Office"; req_access_txt = "40"},/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/heads/cmo) "bJE" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "cmooffice"; name = "CMO Office Privacy Shutters"; opacity = 0},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/medical/medbay4) "bJF" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "cmooffice"; name = "CMO Office Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/medbay4) @@ -4625,11 +4625,11 @@ "bKW" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/turf/simulated/floor,/area/hallway/primary/central_two) "bKX" = (/obj/machinery/light,/turf/simulated/floor,/area/hallway/primary/central_two) "bKY" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor,/area/hallway/primary/central_two) -"bKZ" = (/obj/machinery/vending/medical,/turf/simulated/wall,/area/medical/medbay) -"bLa" = (/obj/machinery/door_control{id = "acute1"; name = "EMT Storage Privacy Shutters"; pixel_x = 26; pixel_y = 25; req_access_txt = "5"},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) +"bKZ" = (/obj/structure/table,/obj/item/clothing/glasses/hud/health,/obj/item/clothing/glasses/hud/health,/obj/item/weapon/storage/belt/medical,/obj/item/weapon/storage/belt/medical,/obj/structure/closet/fireaxecabinet{pixel_x = 32; pixel_y = 0},/obj/item/weapon/storage/toolbox/emergency,/obj/item/bodybag/cryobag{pixel_x = 6},/obj/item/bodybag/cryobag{pixel_x = 6},/obj/item/bodybag/cryobag{pixel_x = 6},/obj/item/device/radio{frequency = 1487; name = "Medbay Emergency Radio Link"},/obj/machinery/door_control{id = "acutesep"; name = "Acute Separation Shutters"; pixel_y = -25; req_access_txt = "5"},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/machinery/camera{c_tag = "EMT Storage"; dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) +"bLa" = (/obj/item/device/radio/intercom{freerange = 1; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 28},/obj/structure/disposalpipe/segment,/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{dir = 4; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay) "bLb" = (/obj/machinery/sleep_console,/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "bLc" = (/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "scanhide"; name = "Diagnostics Room Separation Shutters"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/sleeper) -"bLd" = (/obj/structure/disposalpipe/segment,/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{dir = 4; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay) +"bLd" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "acutesep"; name = "Acute Separation Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/sleeper) "bLe" = (/obj/structure/disposalpipe/segment,/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{dir = 4; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay) "bLf" = (/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "scanhide"; name = "Diagnostics Room Separation Shutters"; opacity = 0},/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/sleeper) "bLg" = (/obj/machinery/light{dir = 1},/obj/structure/filingcabinet/chestdrawer{dir = 1},/turf/simulated/floor{tag = "icon-whiteblue (NORTHWEST)"; icon_state = "whiteblue"; dir = 9},/area/crew_quarters/heads/cmo) @@ -4696,12 +4696,12 @@ "bMp" = (/obj/machinery/door/airlock{name = "Custodial Closet"; req_access_txt = "26"},/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/hallway/primary/central_three) "bMq" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/primary/central_two) "bMr" = (/obj/machinery/vending/cigarette,/turf/simulated/floor{icon_state = "dark"},/area/hallway/primary/central_two) -"bMs" = (/obj/structure/table/rack,/obj/item/weapon/crowbar,/obj/item/weapon/crowbar,/obj/item/weapon/storage/toolbox/mechanical,/obj/machinery/vending/wallmed1{pixel_x = -32; pixel_y = 0; req_access_txt = "0"},/obj/item/roller,/obj/item/roller,/obj/item/roller,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) -"bMt" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{autoclose = 1; name = "EMT Storage"; req_access_txt = "5"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "whitered"},/area/medical/medbay) -"bMu" = (/obj/structure/stool{pixel_y = 8},/obj/effect/landmark/start{name = "Paramedic"},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) -"bMv" = (/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor,/area/medical/sleeper) -"bMw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) -"bMx" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay) +"bMs" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{autoclose = 1; name = "EMT Storage"; req_access_txt = "5"},/obj/machinery/light_switch{pixel_x = 22; pixel_y = 0},/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/sleeper) +"bMt" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "acutesep"; name = "Acute Separation Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/sleeper) +"bMu" = (/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -27},/obj/machinery/sleeper,/turf/simulated/floor{dir = 8; icon_state = "whitered"},/area/medical/sleeper) +"bMv" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{autoclose = 0; name = "Acute Treatment"; req_access_txt = "5"},/turf/simulated/floor{dir = 8; icon_state = "whitered"},/area/medical/medbay) +"bMw" = (/obj/machinery/door_control{id = "acutesep"; name = "Acute Separation Shutters"; pixel_y = 25; req_access_txt = "5"},/obj/machinery/camera{c_tag = "Medbay Acute"; network = list("SS13")},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) +"bMx" = (/obj/machinery/button/driver{dir = 2; id = "toxinsdriver"; pixel_y = 24},/turf/simulated/floor,/area/rnd/mixing) "bMy" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/structure/table,/obj/machinery/photocopier/faxmachine{department = "CMO's Office"},/turf/simulated/floor{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/crew_quarters/heads/cmo) "bMz" = (/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/heads/cmo) "bMA" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/heads/cmo) @@ -4779,8 +4779,8 @@ "bNU" = (/turf/simulated/wall,/area/maintenance/engineering) "bNV" = (/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/structure/closet/secure_closet/medical_wall{name = "O- Blood Locker"},/turf/simulated/wall,/area/medical/sleeper) "bNW" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "misclab"; name = "Test Chamber Blast Doors"; opacity = 0},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) -"bNX" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/table,/obj/item/weapon/clipboard,/obj/item/weapon/paper_bin,/obj/item/weapon/pen,/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 0; pixel_y = -36},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/machinery/button/windowtint{id = "isoC_window_tint"; pixel_y = -26},/turf/simulated/floor{dir = 6; icon_state = "whitered"},/area/medical/patient_c) -"bNY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white_1"},/area/medical/medbay) +"bNX" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/stool/bed/roller,/turf/simulated/floor{dir = 8; icon_state = "whitered"},/area/medical/sleeper) +"bNY" = (/obj/machinery/door/firedoor,/obj/machinery/door/blast/shutters{density = 0; dir = 4; icon_state = "shutter0"; id = "acute2"; name = "Acute Two Privacy Shutters"; opacity = 0},/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/medical/medbay) "bNZ" = (/obj/machinery/hologram/holopad,/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay) "bOa" = (/obj/structure/disposalpipe/segment,/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 = "white"},/area/medical/medbay) "bOb" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{name = "CMO's Office"; req_access_txt = "40"},/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/heads/cmo) @@ -4860,8 +4860,8 @@ "bPx" = (/turf/simulated/floor/plating,/area/maintenance/engineering) "bPy" = (/obj/structure/table/rack{dir = 1},/obj/item/clothing/suit/fire/firefighter,/obj/item/weapon/tank/oxygen,/obj/item/clothing/mask/gas,/obj/item/weapon/extinguisher,/obj/item/clothing/head/hardhat/red,/obj/item/clothing/glasses/meson,/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/plating,/area/maintenance/engineering) "bPz" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) -"bPA" = (/obj/structure/table/woodentable,/obj/machinery/light_switch{pixel_x = -4},/obj/machinery/button/windowtint{pixel_x = 3},/turf/simulated/floor/wood,/area/medical/psych) -"bPB" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "acutesep"; name = "Acute Separation Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/sleeper) +"bPA" = (/obj/structure/stool/bed,/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) +"bPB" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/table,/obj/item/weapon/clipboard,/obj/item/weapon/paper_bin,/obj/item/weapon/pen,/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 0; pixel_y = 36},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/machinery/button/windowtint{id = "isoA_window_tint"; pixel_y = 26},/turf/simulated/floor{dir = 5; icon_state = "whitered"},/area/medical/patient_a) "bPC" = (/obj/machinery/camera{c_tag = "Medbay Port Corridor"; dir = 8; network = list("SS13")},/obj/structure/disposalpipe/segment,/obj/machinery/light_switch{pixel_x = 22; pixel_y = -9},/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{dir = 4; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay) "bPD" = (/obj/machinery/camera{c_tag = "Medbay CMO Office"; dir = 4; network = list("SS13")},/obj/machinery/light_switch{pixel_x = -22; pixel_y = -9},/obj/machinery/requests_console{announcementConsole = 1; department = "Chief Medical Officer's Desk"; departmentType = 5; name = "Chief Medical Officer RC"; pixel_x = -34; pixel_y = 2},/turf/simulated/floor{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/crew_quarters/heads/cmo) "bPE" = (/obj/structure/table,/obj/machinery/computer/skills{pixel_y = 4},/obj/item/device/megaphone,/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/heads/cmo) @@ -4894,7 +4894,7 @@ "bQf" = (/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,/turf/simulated/floor{icon_state = "floorgrime"},/area/rnd/mixing) "bQg" = (/obj/machinery/light/small{dir = 4},/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/turf/simulated/floor{icon_state = "warningcorner"; dir = 2},/area/rnd/mixing) "bQh" = (/obj/item/device/radio/intercom{pixel_y = 25},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor,/area/rnd/mixing) -"bQi" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/engineering/foyer) +"bQi" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/table,/obj/item/weapon/clipboard,/obj/item/weapon/paper_bin,/obj/item/weapon/pen,/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 0; pixel_y = 36},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/machinery/button/windowtint{id = "isoB_window_tint"; pixel_y = 26},/turf/simulated/floor{dir = 5; icon_state = "whitered"},/area/medical/patient_b) "bQj" = (/obj/structure/stool/bed/chair{dir = 4},/obj/machinery/computer/security/telescreen{desc = "Used for watching the test chamber."; layer = 4; name = "Test Chamber Telescreen"; network = list("Toxins Test Area"); pixel_x = 32; pixel_y = 0},/turf/simulated/floor,/area/rnd/mixing) "bQk" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/rnd/mixing) "bQl" = (/turf/simulated/floor/airless{dir = 9; icon_state = "warning"},/area/rnd/test_area) @@ -4933,7 +4933,7 @@ "bQS" = (/obj/effect/decal/cleanable/cobweb,/obj/effect/decal/cleanable/generic,/turf/simulated/floor/plating,/area/maintenance/engineering) "bQT" = (/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,/mob/living/simple_animal/mouse,/turf/simulated/floor/plating,/area/maintenance/engineering) "bQU" = (/obj/structure/closet,/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/maintenance/engineering) -"bQV" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{autoclose = 1; name = "EMT Storage"; req_access_txt = "5"},/obj/machinery/light_switch{pixel_x = 22; pixel_y = 0},/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/sleeper) +"bQV" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "bQW" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "misclab"; name = "Test Chamber Blast Doors"; opacity = 0},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/engine,/area/rnd/misc_lab) "bQX" = (/turf/simulated/floor{icon_state = "white_2"},/area/medical/medbay) "bQY" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 4; frequency = 1441; icon_state = "map_injector"; id = "n2_in"; use_power = 1},/turf/simulated/floor/engine,/area/rnd/misc_lab) @@ -4946,11 +4946,11 @@ "bRf" = (/obj/machinery/computer/crew,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/medbreak) "bRg" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/structure/closet/secure_closet/personal/patient,/turf/simulated/floor{dir = 9; icon_state = "whitered"},/area/medical/patient_a) "bRh" = (/obj/machinery/light{dir = 1},/obj/machinery/newscaster{pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/hologram/holopad,/turf/simulated/floor{dir = 1; icon_state = "whitered"},/area/medical/patient_a) -"bRi" = (/obj/structure/closet/secure_closet/medical1,/obj/item/device/radio/intercom{broadcasting = 0; canhear_range = 5; freerange = 0; frequency = 1485; listening = 1; name = "Station Intercom (Medbay)"; pixel_x = 0; pixel_y = -31},/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/device/flashlight,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) +"bRi" = (/obj/machinery/sleeper,/turf/simulated/floor{dir = 8; icon_state = "whitered"},/area/medical/sleeper) "bRj" = (/turf/simulated/wall,/area/medical/patient_a) "bRk" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/structure/closet/secure_closet/personal/patient,/turf/simulated/floor{dir = 9; icon_state = "whitered"},/area/medical/patient_b) "bRl" = (/obj/machinery/light{dir = 1},/obj/machinery/newscaster{pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/hologram/holopad,/turf/simulated/floor{dir = 1; icon_state = "whitered"},/area/medical/patient_b) -"bRm" = (/obj/structure/table,/obj/item/clothing/glasses/hud/health,/obj/item/clothing/glasses/hud/health,/obj/item/weapon/storage/belt/medical,/obj/item/weapon/storage/belt/medical,/obj/structure/closet/fireaxecabinet{pixel_x = 32; pixel_y = 0},/obj/item/weapon/storage/toolbox/emergency,/obj/item/bodybag/cryobag{pixel_x = 6},/obj/item/bodybag/cryobag{pixel_x = 6},/obj/item/bodybag/cryobag{pixel_x = 6},/obj/item/device/radio{frequency = 1487; name = "Medbay Emergency Radio Link"},/obj/machinery/door_control{id = "acutesep"; name = "Acute Separation Shutters"; pixel_y = -25; req_access_txt = "5"},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/machinery/camera{c_tag = "EMT Storage"; dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) +"bRm" = (/obj/machinery/door/firedoor,/obj/machinery/door/blast/shutters{density = 0; dir = 4; icon_state = "shutter0"; id = "acute2"; name = "Acute Two Privacy Shutters"; opacity = 0},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/medical/medbay) "bRn" = (/turf/simulated/wall,/area/medical/patient_b) "bRo" = (/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor/engine,/area/rnd/misc_lab) "bRp" = (/obj/structure/table,/obj/item/device/assembly/igniter,/turf/simulated/floor/engine,/area/rnd/misc_lab) @@ -5003,7 +5003,7 @@ "bSk" = (/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/maintenance/engineering) "bSl" = (/obj/structure/table,/obj/item/device/t_scanner,/turf/simulated/floor/plating,/area/maintenance/engineering) "bSm" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) -"bSn" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "acutesep"; name = "Acute Separation Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/sleeper) +"bSn" = (/obj/machinery/door_control{id = "scanhide"; name = "Diagnostics Room Separation Shutters"; pixel_x = -6; pixel_y = -25; req_access_txt = "5"},/obj/machinery/iv_drip,/obj/machinery/door_control{id = "acute2"; name = "Acute Treatment Privacy Shutters"; pixel_x = 6; pixel_y = -25; req_access_txt = "5"},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "bSo" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay) "bSp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "staffroom"; name = "Staff Room Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/medbay2) "bSq" = (/obj/machinery/light,/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor{dir = 10; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/crew_quarters/heads/cmo) @@ -5065,7 +5065,7 @@ "bTu" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/weapon/circuitboard/powermonitor{pixel_x = -2; pixel_y = 2},/obj/item/weapon/circuitboard/stationalert{pixel_x = 1; pixel_y = -1},/obj/item/weapon/circuitboard/security/engineering,/obj/item/weapon/circuitboard/atmos_alert{pixel_x = 3; pixel_y = -3},/turf/simulated/floor/plating,/area/storage/tech) "bTv" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/weapon/circuitboard/secure_data{pixel_x = -2; pixel_y = 2},/obj/item/weapon/circuitboard/security{pixel_x = 1; pixel_y = -1},/obj/item/weapon/circuitboard/skills{pixel_x = 4; pixel_y = -3},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/storage/tech) "bTw" = (/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor/plating,/area/storage/tech) -"bTx" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/engineering/foyer) +"bTx" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/aft) "bTy" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/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/hallway/primary/aft) "bTz" = (/obj/structure/disposalpipe/segment,/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{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/aft) "bTA" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/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/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/primary/aft) @@ -5080,10 +5080,10 @@ "bTJ" = (/turf/simulated/wall,/area/medical/medbay4) "bTK" = (/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay4) "bTL" = (/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment,/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{dir = 4; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay4) -"bTM" = (/obj/machinery/mech_bay_recharge_port,/obj/structure/sign/poster{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plating,/area/medical/sleeper) -"bTN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) +"bTM" = (/obj/machinery/door/firedoor/border_only,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/hallway/primary/aft) +"bTN" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only,/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/aft) "bTO" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{name = "CMO's Office"; req_access_txt = "40"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay4) -"bTP" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/extinguisher_cabinet{pixel_x = 25; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay4) +"bTP" = (/turf/simulated/wall,/area/engineering/break_room) "bTQ" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{icon_state = "bot"},/area/rnd/research) "bTR" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/medical/medbay4) "bTS" = (/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay4) @@ -5098,7 +5098,7 @@ "bUb" = (/obj/structure/table/reinforced,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/noticeboard{pixel_y = 27},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "hop_office_desk"; name = "HoP Office Privacy Shutters"; opacity = 0},/obj/machinery/door/window/northleft{dir = 8; icon_state = "left"; name = "Reception Window"; req_access_txt = "0"},/obj/machinery/door/window/brigdoor{base_state = "rightsecure"; dir = 4; icon_state = "rightsecure"; name = "Head of Personnel's Desk"; req_access_txt = "57"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/crew_quarters/heads/hop) "bUc" = (/obj/machinery/atmospherics/unary/freezer{dir = 2; icon_state = "freezer_1"; use_power = 1; power_setting = 20; set_temperature = 73},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{icon_state = "dark"},/area/server) "bUd" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; icon_state = "map_vent_out"; use_power = 1},/turf/simulated/floor/bluegrid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/server) -"bUe" = (/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -27},/obj/machinery/sleeper,/turf/simulated/floor{dir = 8; icon_state = "whitered"},/area/medical/sleeper) +"bUe" = (/obj/machinery/atmospherics/pipe/simple/visible{icon_state = "intact"; dir = 6},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/medical/sleeper) "bUf" = (/obj/structure/sign/science{pixel_x = 32},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/rnd/research) "bUg" = (/turf/simulated/wall,/area/rnd/misc_lab) "bUh" = (/obj/machinery/light_switch{pixel_y = -23},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{icon_state = "floorgrime"},/area/rnd/storage) @@ -5125,8 +5125,8 @@ "bUC" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/storage/tech) "bUD" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 8; icon_state = "yellowcorner"},/area/hallway/primary/aft) "bUE" = (/obj/machinery/door/firedoor/border_only,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/primary/aft) -"bUF" = (/obj/machinery/alarm{pixel_y = 22},/turf/simulated/floor{dir = 2; icon_state = "yellowpatch"},/area/engineering/foyer) -"bUG" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/engineering/foyer) +"bUF" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/medical/sleeper) +"bUG" = (/obj/structure/grille,/obj/structure/window/reinforced/polarized{id = "isoA_window_tint"},/obj/structure/window/reinforced/polarized{dir = 4; id = "isoA_window_tint"},/obj/structure/window/reinforced/polarized{dir = 1; id = "isoA_window_tint"},/obj/structure/window/reinforced/polarized{dir = 8; id = "isoA_window_tint"},/turf/simulated/floor/plating,/area/medical/patient_a) "bUH" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/maintenance/engineering) "bUI" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/maintenance/engineering) "bUJ" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/plating,/area/maintenance/engineering) @@ -5134,8 +5134,8 @@ "bUL" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/maintenance/engineering) "bUM" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/plating,/area/maintenance/engineering) "bUN" = (/obj/machinery/atmospherics/unary/cryo_cell,/turf/simulated/floor{icon_state = "red"; dir = 9},/area/medical/sleeper) -"bUO" = (/obj/machinery/door_control{id = "acutesep"; name = "Acute Separation Shutters"; pixel_y = 25; req_access_txt = "5"},/obj/machinery/camera{c_tag = "Medbay Acute"; network = list("SS13")},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) -"bUP" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/table,/obj/item/weapon/clipboard,/obj/item/weapon/paper_bin,/obj/item/weapon/pen,/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 0; pixel_y = 36},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/machinery/button/windowtint{id = "isoB_window_tint"; pixel_y = 26},/turf/simulated/floor{dir = 5; icon_state = "whitered"},/area/medical/patient_b) +"bUO" = (/obj/structure/grille,/obj/structure/window/reinforced/polarized{dir = 4; id = "isoA_window_tint"},/obj/structure/window/reinforced/polarized{id = "isoA_window_tint"},/obj/structure/window/reinforced/polarized{dir = 1; id = "isoA_window_tint"},/obj/structure/window/reinforced/polarized{dir = 8; id = "isoA_window_tint"},/turf/simulated/floor/plating,/area/medical/patient_a) +"bUP" = (/obj/structure/grille,/obj/structure/window/reinforced/polarized{id = "isoB_window_tint"},/obj/structure/window/reinforced/polarized{dir = 4; id = "isoB_window_tint"},/obj/structure/window/reinforced/polarized{dir = 1; id = "isoB_window_tint"},/obj/structure/window/reinforced/polarized{dir = 8; id = "isoB_window_tint"},/turf/simulated/floor/plating,/area/medical/patient_b) "bUQ" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/medical/sleeper) "bUR" = (/obj/machinery/door_control{id = "scanhide"; name = "Diagnostics Room Separation Shutters"; pixel_x = -6; pixel_y = 25; req_access_txt = "5"},/obj/machinery/camera{c_tag = "Medbay Scanning"; network = list("SS13")},/obj/machinery/atmospherics/unary/freezer{dir = 8; icon_state = "freezer"},/obj/machinery/door_control{id = "scanhideside"; name = "Diagnostics Room Privacy Shutters"; pixel_x = 6; pixel_y = 25; req_access_txt = "5"},/turf/simulated/floor{icon_state = "delivery"},/area/medical/sleeper) "bUS" = (/obj/structure/disposalpipe/segment,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/rnd/research) @@ -5200,18 +5200,18 @@ "bVZ" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = -1},/obj/item/device/multitool,/obj/item/clothing/glasses/meson,/turf/simulated/floor/plating,/area/storage/tech) "bWa" = (/obj/machinery/door/airlock/glass{name = "Central Access"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 8; icon_state = "yellowcorner"},/area/hallway/primary/aft) "bWb" = (/obj/machinery/door/airlock/glass{name = "Central Access"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/primary/aft) -"bWc" = (/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/engineering/break_room) -"bWd" = (/obj/structure/table/woodentable,/obj/item/weapon/book/manual/supermatter_engine{pixel_x = -3},/turf/simulated/floor/carpet,/area/engineering/break_room) -"bWe" = (/obj/structure/stool/bed/chair/comfy/beige{tag = "icon-comfychair (EAST)"; icon_state = "comfychair"; dir = 4},/obj/effect/landmark/start{name = "Station Engineer"},/turf/simulated/floor/carpet,/area/engineering/break_room) -"bWf" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/crew_quarters/heads/chief) -"bWg" = (/obj/machinery/atm{pixel_y = 28},/turf/simulated/floor{dir = 4; icon_state = "yellowpatch"},/area/engineering/foyer) -"bWh" = (/obj/structure/table/reinforced,/obj/machinery/button/ignition{id = "Xenobio"; pixel_x = -6; pixel_y = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) -"bWi" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only,/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/aft) +"bWc" = (/obj/structure/table/reinforced,/obj/machinery/button/ignition{id = "Xenobio"; pixel_x = -6; pixel_y = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) +"bWd" = (/obj/machinery/vending/cigarette,/turf/simulated/floor/carpet,/area/engineering/break_room) +"bWe" = (/obj/structure/table/woodentable,/obj/item/weapon/dice,/turf/simulated/floor/carpet,/area/engineering/break_room) +"bWf" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp/green,/turf/simulated/floor/carpet,/area/engineering/break_room) +"bWg" = (/obj/structure/table/woodentable,/obj/item/weapon/book/manual/engineering_guide{pixel_x = 3; pixel_y = 2},/obj/item/weapon/book/manual/atmospipes,/obj/machinery/light{dir = 1},/turf/simulated/floor/carpet,/area/engineering/break_room) +"bWh" = (/obj/structure/table/woodentable,/obj/item/weapon/book/manual/engineering_construction,/obj/item/weapon/book/manual/evaguide{pixel_x = -2; pixel_y = 7},/turf/simulated/floor/carpet,/area/engineering/break_room) +"bWi" = (/obj/structure/bookcase/manuals/engineering,/turf/simulated/floor/carpet,/area/engineering/break_room) "bWj" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=4"; freq = 1400; location = "Medbay"},/obj/structure/plasticflaps{opacity = 1},/turf/simulated/floor{icon_state = "bot"},/area/medical/sleeper) "bWk" = (/obj/machinery/door/window/eastleft{name = "Medical Delivery"; req_access_txt = "5"},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "delivery"},/area/medical/sleeper) "bWl" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 8},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/medical/sleeper) -"bWm" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/table,/obj/item/weapon/clipboard,/obj/item/weapon/paper_bin,/obj/item/weapon/pen,/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 0; pixel_y = 36},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/machinery/button/windowtint{id = "isoA_window_tint"; pixel_y = 26},/turf/simulated/floor{dir = 5; icon_state = "whitered"},/area/medical/patient_a) -"bWn" = (/obj/structure/grille,/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = -32},/obj/structure/cable/green,/obj/structure/window/reinforced/polarized,/obj/structure/window/reinforced/polarized{dir = 4},/obj/structure/window/reinforced/polarized{dir = 8},/turf/simulated/floor/plating,/area/crew_quarters/heads/hop) +"bWm" = (/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor,/area/medical/sleeper) +"bWn" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor,/area/medical/sleeper) "bWo" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor,/area/medical/sleeper) "bWp" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor,/area/medical/sleeper) "bWq" = (/obj/machinery/door/blast/shutters{dir = 2; id = "qm_warehouse"; name = "Warehouse Shutters"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/quartermaster/storage) @@ -5270,13 +5270,13 @@ "bXr" = (/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod_berth{frequency = 1380; id_tag = "escape_pod_5_berth"; pixel_x = -25; pixel_y = 25; tag_door = "escape_pod_5_berth_hatch"},/turf/simulated/floor/plating,/area/maintenance/cargo) "bXs" = (/obj/structure/disposalpipe/segment,/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,/area/maintenance/cargo) "bXt" = (/obj/machinery/door/firedoor/border_only,/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/aft) -"bXu" = (/obj/machinery/door/firedoor/border_only,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/hallway/primary/aft) -"bXv" = (/obj/structure/table/woodentable,/obj/item/weapon/book/manual/engineering_guide{pixel_x = 3; pixel_y = 2},/obj/item/weapon/book/manual/atmospipes,/obj/machinery/light{dir = 1},/turf/simulated/floor/carpet,/area/engineering/break_room) -"bXw" = (/obj/structure/table/woodentable,/obj/item/weapon/book/manual/engineering_construction,/obj/item/weapon/book/manual/evaguide{pixel_x = -2; pixel_y = 7},/turf/simulated/floor/carpet,/area/engineering/break_room) -"bXx" = (/obj/structure/bookcase/manuals/engineering,/turf/simulated/floor/carpet,/area/engineering/break_room) -"bXy" = (/obj/machinery/vending/cigarette,/turf/simulated/floor/carpet,/area/engineering/break_room) -"bXz" = (/obj/structure/table/woodentable,/obj/item/weapon/dice,/turf/simulated/floor/carpet,/area/engineering/break_room) -"bXA" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp/green,/turf/simulated/floor/carpet,/area/engineering/break_room) +"bXu" = (/obj/machinery/light_switch{pixel_x = -22; pixel_y = -10},/turf/simulated/floor/carpet,/area/engineering/break_room) +"bXv" = (/obj/structure/stool/bed/chair/comfy/beige,/obj/effect/landmark/start{name = "Station Engineer"},/turf/simulated/floor/carpet,/area/engineering/break_room) +"bXw" = (/turf/simulated/floor/carpet,/area/engineering/break_room) +"bXx" = (/obj/structure/extinguisher_cabinet{pixel_x = 25},/turf/simulated/floor/carpet,/area/engineering/break_room) +"bXy" = (/obj/structure/closet/wardrobe/engineering_yellow,/turf/simulated/floor{dir = 4; icon_state = "whiteyellowfull"},/area/crew_quarters/sleep/engi_wash) +"bXz" = (/obj/structure/table,/obj/item/bodybag/cryobag{pixel_x = 6},/obj/item/stack/medical/bruise_pack{pixel_x = -4; pixel_y = 3},/obj/item/stack/medical/bruise_pack{pixel_x = -4; pixel_y = 3},/obj/item/stack/medical/ointment{pixel_y = 10},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor{icon_state = "yellowfull"; dir = 8},/area/crew_quarters/sleep/engi_wash) +"bXA" = (/obj/structure/closet/wardrobe/atmospherics_yellow,/turf/simulated/floor{icon_state = "yellowfull"; dir = 8},/area/crew_quarters/sleep/engi_wash) "bXB" = (/obj/structure/sign/redcross{desc = "The Star of Life, a symbol of Medical Aid."; icon_state = "lifestar"; name = "Medbay"; pixel_x = 32},/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,/area/maintenance/engineering) "bXC" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor,/area/medical/sleeper) "bXD" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/medical/sleeper) @@ -5306,7 +5306,7 @@ "bYb" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/research_port) "bYc" = (/turf/simulated/wall,/area/maintenance/substation/research) "bYd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/research_port) -"bYe" = (/turf/simulated/floor/plating/airless,/area/maintenance/atmos_control) +"bYe" = (/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/button/ignition{id = "mixingsparker"; pixel_x = -25; pixel_y = -5},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -29},/turf/simulated/floor{dir = 4; icon_state = "warnwhitecorner"},/area/rnd/mixing) "bYf" = (/turf/simulated/wall,/area/maintenance/research_port) "bYg" = (/obj/structure/sign/redcross{desc = "The Star of Life, a symbol of Medical Aid."; icon_state = "lifestar"; name = "Medbay"; pixel_x = -32},/obj/structure/disposalpipe/segment,/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,/area/maintenance/research_port) "bYh" = (/obj/machinery/atmospherics/binary/pump{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) @@ -5326,7 +5326,7 @@ "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/pipe/simple/hidden/cyan,/obj/machinery/atmospherics/binary/pump{dir = 8},/turf/simulated/floor/engine,/area/rnd/mixing) -"bYy" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "eng_eva_outer"; locked = 1; name = "Engineering EVA External Access"; req_access = null; req_access_txt = "13"},/turf/simulated/floor/airless{icon_state = "circuit"},/area/maintenance/atmos_control) +"bYy" = (/obj/machinery/atm{pixel_y = 28},/turf/simulated/floor{dir = 4; icon_state = "yellowpatch"},/area/engineering/foyer) "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) "bYB" = (/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 = 9},/area/maintenance/research_starboard) @@ -5344,23 +5344,23 @@ "bYN" = (/obj/structure/table/reinforced,/obj/machinery/light{dir = 1},/obj/machinery/light_switch{pixel_x = 0; pixel_y = 27},/obj/machinery/computer/skills{icon_state = "medlaptop"},/turf/simulated/floor,/area/crew_quarters/heads/chief) "bYO" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor,/area/crew_quarters/heads/chief) "bYP" = (/obj/machinery/alarm{pixel_y = 23},/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor,/area/crew_quarters/heads/chief) -"bYQ" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1379; id_tag = "eng_eva_pump"},/obj/machinery/camera{c_tag = "Engineering EVA Airlock"; dir = 1},/turf/simulated/floor{dir = 6; icon_state = "floorgrimecaution"},/area/maintenance/atmos_control) -"bYR" = (/obj/machinery/light/small,/turf/simulated/floor{dir = 10; icon_state = "floorgrimecaution"},/area/maintenance/atmos_control) -"bYS" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/atmos_control) -"bYT" = (/obj/structure/disposalpipe/segment,/obj/structure/extinguisher_cabinet{pixel_x = 25},/turf/simulated/floor/plating,/area/maintenance/atmos_control) -"bYU" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "eng_eva_inner"; locked = 1; name = "Engineering EVA Internal Access"; req_access = null; req_access_txt = "13"},/turf/simulated/floor/plating,/area/maintenance/atmos_control) -"bYV" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "floorgrimecaution"},/area/maintenance/atmos_control) -"bYW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable/green,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/crew_quarters/heads/chief) -"bYX" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "yellowcorner"},/area/engineering/foyer) -"bYY" = (/obj/structure/disposalpipe/segment{dir = 4},/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{dir = 2; icon_state = "yellowcorner"},/area/engineering/foyer) -"bYZ" = (/obj/structure/disposalpipe/sortjunction/flipped{dir = 2; name = "Engineering Break Room"; sortType = "Engineering Break Room"},/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/engineering/foyer) -"bZa" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/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/engineering/foyer) -"bZb" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/turf/simulated/floor,/area/engineering/foyer) -"bZc" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/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/carpet,/area/engineering/break_room) -"bZd" = (/obj/structure/disposalpipe/segment{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"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor/carpet,/area/engineering/break_room) -"bZe" = (/obj/structure/disposalpipe/segment{dir = 4},/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/carpet,/area/engineering/break_room) -"bZf" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Break Room"; req_one_access_txt = "10;24;5"},/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/engineering/break_room) -"bZg" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/engineering{name = "Engineering Washroom"; req_one_access_txt = "10;24;5"},/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/engineering/break_room) +"bYQ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/crew_quarters/heads/chief) +"bYR" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/engineering/foyer) +"bYS" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/engineering/foyer) +"bYT" = (/obj/machinery/alarm{pixel_y = 22},/turf/simulated/floor{dir = 2; icon_state = "yellowpatch"},/area/engineering/foyer) +"bYU" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/engineering/foyer) +"bYV" = (/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/engineering/break_room) +"bYW" = (/obj/structure/table/woodentable,/obj/item/weapon/book/manual/supermatter_engine{pixel_x = -3},/turf/simulated/floor/carpet,/area/engineering/break_room) +"bYX" = (/obj/structure/stool/bed/chair/comfy/beige{tag = "icon-comfychair (EAST)"; icon_state = "comfychair"; dir = 4},/obj/effect/landmark/start{name = "Station Engineer"},/turf/simulated/floor/carpet,/area/engineering/break_room) +"bYY" = (/obj/structure/stool/bed/chair/comfy/beige{dir = 8},/obj/effect/landmark/start{name = "Atmospheric Technician"},/turf/simulated/floor/carpet,/area/engineering/break_room) +"bYZ" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/turf/simulated/floor/carpet,/area/engineering/break_room) +"bZa" = (/obj/machinery/door/airlock/engineering{name = "Engineering Supplies"; req_one_access_txt = "10;24;5"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "yellowfull"; dir = 8},/area/engineering/break_room) +"bZb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/carpet,/area/engineering/break_room) +"bZc" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whiteyellowfull"},/area/crew_quarters/sleep/engi_wash) +"bZd" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = -20; pixel_y = 22},/turf/simulated/floor{icon_state = "yellowfull"; dir = 8},/area/crew_quarters/sleep/engi_wash) +"bZe" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor{icon_state = "yellowfull"; dir = 8},/area/crew_quarters/sleep/engi_wash) +"bZf" = (/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/obj/machinery/light,/obj/machinery/camera{c_tag = "Engineering Supplies"; dir = 1; network = list("SS13")},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whiteyellowfull"},/area/crew_quarters/sleep/engi_wash) +"bZg" = (/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "psych"; name = "Mental Health Privacy Shutters"; opacity = 0},/obj/structure/window/reinforced/polarized,/obj/structure/window/reinforced/polarized{dir = 8},/obj/structure/window/reinforced/polarized{dir = 1},/turf/simulated/floor/plating,/area/medical/medbay4) "bZh" = (/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,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/maintenance/engineering) "bZi" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{name = "Medbay Diagnostics Maintenance Access"; req_access_txt = "5"},/turf/simulated/floor/plating,/area/medical/sleeper) "bZj" = (/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor,/area/medical/sleeper) @@ -5399,29 +5399,29 @@ "bZQ" = (/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{dir = 8; icon_state = "map"; tag = "icon-manifold-f (WEST)"},/obj/machinery/meter,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 10},/area/maintenance/research_starboard) "bZR" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 8},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/research_starboard) "bZS" = (/obj/structure/lattice,/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/space,/area/space) -"bZT" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor/carpet,/area/engineering/break_room) -"bZU" = (/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/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/carpet,/area/engineering/break_room) -"bZV" = (/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/carpet,/area/engineering/break_room) -"bZW" = (/obj/item/clothing/mask/smokable/cigarette,/turf/simulated/floor/plating/airless,/area/rnd/test_area) -"bZX" = (/obj/machinery/seed_storage/xenobotany,/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology/xenoflora) +"bZT" = (/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "psych"; name = "Mental Health Privacy Shutters"; opacity = 0},/obj/structure/window/reinforced/polarized,/obj/structure/window/reinforced/polarized{dir = 1},/obj/structure/window/reinforced/polarized{dir = 4},/turf/simulated/floor/plating,/area/medical/medbay4) +"bZU" = (/obj/structure/grille,/obj/structure/window/reinforced/polarized{id = "isoC_window_tint"},/obj/structure/window/reinforced/polarized{dir = 4; id = "isoC_window_tint"},/obj/structure/window/reinforced/polarized{dir = 1; id = "isoC_window_tint"},/obj/structure/window/reinforced/polarized{dir = 8; id = "isoC_window_tint"},/turf/simulated/floor/plating,/area/medical/patient_c) +"bZV" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = -29},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) +"bZW" = (/turf/simulated/wall/r_wall,/area/maintenance/atmos_control) +"bZX" = (/turf/simulated/wall,/area/maintenance/atmos_control) "bZY" = (/obj/structure/table/reinforced,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd,/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/crew_quarters/heads/chief) "bZZ" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/crew_quarters/heads/chief) -"caa" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/engineering/foyer) +"caa" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/wall,/area/maintenance/atmos_control) "cab" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor,/area/crew_quarters/heads/chief) "cac" = (/obj/structure/stool/bed/chair/office/light{dir = 4},/obj/effect/landmark/start{name = "Chief Engineer"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/crew_quarters/heads/chief) "cad" = (/obj/structure/table/reinforced,/obj/item/weapon/folder/yellow,/obj/item/weapon/stamp/ce,/obj/item/weapon/pen,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/flame/lighter/zippo,/obj/item/device/megaphone,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/crew_quarters/heads/chief) "cae" = (/obj/structure/stool/bed/chair{dir = 8},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/crew_quarters/heads/chief) "caf" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/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 = 5},/turf/simulated/floor,/area/crew_quarters/heads/chief) -"cag" = (/obj/structure/stool/bed/chair/office/dark,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/engineering/break_room) -"cah" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/engineering/break_room) -"cai" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/engineering/break_room) -"caj" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/engineering/break_room) -"cak" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/engineering/break_room) -"cal" = (/obj/structure/noticeboard{pixel_x = 32; pixel_y = 0},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/engineering/break_room) -"cam" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/maintenance/atmos_control) -"can" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/disposalpipe/segment,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/maintenance/atmos_control) -"cao" = (/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/crew_quarters/heads/chief) -"cap" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/crew_quarters/heads/chief) +"cag" = (/obj/machinery/space_heater,/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/atmos_control) +"cah" = (/obj/structure/disposalpipe/segment,/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{icon_state = "floorgrime"},/area/maintenance/atmos_control) +"cai" = (/obj/machinery/button/driver{id = "enginecore"; name = "Emergency Core Eject"; pixel_x = -20; pixel_y = 0},/obj/structure/window/basic{dir = 4},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/heads/chief) +"caj" = (/obj/structure/disposalpipe/segment{dir = 4},/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{dir = 8; icon_state = "yellowcorner"},/area/engineering/foyer) +"cak" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_command{name = "Chief Engineer"; req_access_txt = "56"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-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/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/crew_quarters/heads/chief) +"cal" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/engineering/foyer) +"cam" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/foyer) +"can" = (/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/engineering/foyer) +"cao" = (/obj/structure/disposalpipe/sortjunction{sortType = "CE Office"; name = "CE Office"},/turf/simulated/floor,/area/engineering/foyer) +"cap" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/engineering/break_room) "caq" = (/turf/simulated/wall,/area/crew_quarters/sleep/engi_wash) "car" = (/obj/item/weapon/cigbutt,/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,/area/maintenance/engineering) "cas" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor{icon_state = "delivery"},/area/medical/sleeper) @@ -5441,7 +5441,7 @@ "caG" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp/green,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/wood,/area/medical/psych) "caH" = (/obj/structure/table/woodentable,/obj/machinery/computer/med_data/laptop,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/wood,/area/medical/psych) "caI" = (/turf/simulated/wall,/area/medical/psych) -"caJ" = (/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = -5; pixel_y = -22},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/extinguisher_cabinet{pixel_x = 6; pixel_y = -29},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) +"caJ" = (/obj/structure/table/woodentable,/obj/item/weapon/folder/yellow,/turf/simulated/floor/carpet,/area/engineering/break_room) "caK" = (/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{dir = 5},/turf/simulated/floor{icon_state = "dark"},/area/medical/biostorage) "caL" = (/obj/structure/table,/obj/item/weapon/storage/box/lights/mixed,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 0; pixel_y = 22},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/medical/biostorage) "caM" = (/obj/structure/table,/obj/machinery/computer/med_data/laptop,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor{dir = 9; icon_state = "whitered"},/area/medical/patient_c) @@ -5466,15 +5466,15 @@ "cbf" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/research_starboard) "cbg" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/machinery/meter,/turf/simulated/floor/plating,/area/maintenance/research_starboard) "cbh" = (/obj/effect/decal/cleanable/spiderling_remains,/obj/machinery/atmospherics/valve,/turf/simulated/floor/plating,/area/maintenance/research_starboard) -"cbi" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced,/obj/structure/cable/green,/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/crew_quarters/heads/chief) -"cbj" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{dir = 8; icon_state = "yellowcorner"},/area/engineering/foyer) -"cbk" = (/obj/structure/disposalpipe/segment,/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{icon_state = "floorgrime"},/area/maintenance/atmos_control) -"cbl" = (/obj/machinery/space_heater,/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/atmos_control) -"cbm" = (/turf/simulated/wall,/area/maintenance/atmos_control) -"cbn" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_command{name = "Chief Engineer"; req_access_txt = "56"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-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/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/crew_quarters/heads/chief) -"cbo" = (/obj/structure/disposalpipe/segment{dir = 4},/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{dir = 8; icon_state = "yellowcorner"},/area/engineering/foyer) -"cbp" = (/obj/machinery/button/driver{id = "enginecore"; name = "Emergency Core Eject"; pixel_x = -20; pixel_y = 0},/obj/structure/window/basic{dir = 4},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/heads/chief) -"cbq" = (/obj/structure/table/woodentable,/obj/item/weapon/folder/yellow,/turf/simulated/floor/carpet,/area/engineering/break_room) +"cbi" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/snacks/chips,/turf/simulated/floor/carpet,/area/engineering/break_room) +"cbj" = (/obj/machinery/newscaster{pixel_x = 28; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/carpet,/area/engineering/break_room) +"cbk" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/patient_wing) +"cbl" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating/airless,/area/maintenance/atmos_control) +"cbm" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "eng_eva_outer"; locked = 1; name = "Engineering EVA External Access"; req_access = null; req_access_txt = "13"},/turf/simulated/floor/airless{icon_state = "circuit"},/area/maintenance/atmos_control) +"cbn" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "eng_eva_airlock"; name = "exterior access button"; pixel_x = 0; pixel_y = 25; req_access_txt = "13"},/turf/simulated/floor/plating/airless,/area/maintenance/atmos_control) +"cbo" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "eng_eva_pump"; tag_exterior_door = "eng_eva_outer"; frequency = 1379; id_tag = "eng_eva_airlock"; tag_interior_door = "eng_eva_inner"; name = "Engineering Airlock Console"; pixel_y = 25; req_access_txt = "13"; tag_chamber_sensor = "eng_eva_sensor"},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4; icon_state = "map"; tag = "icon-manifold-f (EAST)"},/turf/simulated/floor{dir = 5; icon_state = "floorgrimecaution"},/area/maintenance/atmos_control) +"cbp" = (/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "eng_eva_sensor"; pixel_x = 0; pixel_y = 25},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "eng_eva_pump"},/turf/simulated/floor{dir = 9; icon_state = "floorgrimecaution"},/area/maintenance/atmos_control) +"cbq" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "eng_eva_airlock"; name = "interior access button"; pixel_x = 0; pixel_y = 25; req_access_txt = "13"},/turf/simulated/floor{dir = 8; icon_state = "floorgrimecaution"},/area/maintenance/atmos_control) "cbr" = (/obj/structure/closet/secure_closet/engineering_chief{req_access_txt = "0"},/obj/item/weapon/tank/emergency_oxygen/engi,/turf/simulated/floor,/area/crew_quarters/heads/chief) "cbs" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/crew_quarters/heads/chief) "cbt" = (/obj/machinery/keycard_auth{pixel_x = -24; pixel_y = 0},/obj/machinery/door_control{desc = "A remote control-switch for engine core."; id = "EngineVent"; name = "Engine Ventillatory Control"; pixel_x = -24; pixel_y = 10; req_access_txt = "10"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door_control{desc = "A remote control-switch for the engine core airlock hatch bolts."; id = "engine_access_hatch"; name = "Engine Hatch Bolt Control"; normaldoorcontrol = 1; pixel_x = -24; pixel_y = -10; req_access_txt = "10"; specialfunctions = 4},/turf/simulated/floor,/area/crew_quarters/heads/chief) @@ -5482,25 +5482,25 @@ "cbv" = (/obj/structure/table/reinforced,/obj/item/weapon/clipboard,/obj/item/clothing/glasses/meson{pixel_y = 4},/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/item/clothing/glasses/welding/superior,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/book/manual/supermatter_engine,/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/crew_quarters/heads/chief) "cbw" = (/obj/machinery/hologram/holopad,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/crew_quarters/heads/chief) "cbx" = (/obj/structure/disposalpipe/segment,/obj/machinery/firealarm{dir = 4; layer = 3.3; pixel_x = 26},/turf/simulated/floor,/area/crew_quarters/heads/chief) -"cby" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/engineering/break_room) -"cbz" = (/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/engineering/foyer) -"cbA" = (/obj/structure/disposalpipe/sortjunction{sortType = "CE Office"; name = "CE Office"},/turf/simulated/floor,/area/engineering/foyer) -"cbB" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/engineering/foyer) -"cbC" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/foyer) -"cbD" = (/obj/machinery/newscaster{pixel_x = 28; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/carpet,/area/engineering/break_room) -"cbE" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/snacks/chips,/turf/simulated/floor/carpet,/area/engineering/break_room) +"cby" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "eng_eva_inner"; locked = 1; name = "Engineering EVA Internal Access"; req_access = null; req_access_txt = "13"},/turf/simulated/floor/plating,/area/maintenance/atmos_control) +"cbz" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/atmos_control) +"cbA" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/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{icon_state = "floorgrime"},/area/maintenance/atmos_control) +"cbB" = (/turf/simulated/floor{dir = 8; icon_state = "yellowcorner"},/area/engineering/foyer) +"cbC" = (/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},/obj/structure/cable/green,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/crew_quarters/heads/chief) +"cbD" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/engineering/foyer) +"cbE" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Break Room"; req_one_access_txt = "10;24;5"},/turf/simulated/floor,/area/engineering/break_room) "cbF" = (/obj/structure/mirror{pixel_y = 32},/obj/structure/sink{pixel_y = 16},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/sleep/engi_wash) "cbG" = (/obj/structure/mirror{pixel_y = 32},/obj/structure/sink{pixel_y = 16},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/sleep/engi_wash) "cbH" = (/obj/structure/urinal{pixel_y = 32},/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/sleep/engi_wash) "cbI" = (/turf/simulated/wall,/area/medical/surgeryobs) "cbJ" = (/obj/machinery/camera{c_tag = "Medbay Surgery Access"; dir = 4; network = list("SS13")},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay4) -"cbK" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 28},/turf/simulated/floor{icon_state = "bot"},/area/rnd/research) +"cbK" = (/obj/structure/stool/bed/chair/comfy/beige{tag = "icon-comfychair (NORTH)"; icon_state = "comfychair"; dir = 1},/obj/effect/landmark/start{name = "Station Engineer"},/turf/simulated/floor/carpet,/area/engineering/break_room) "cbL" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/medical,/obj/machinery/vending/wallmed1{pixel_x = -26},/turf/simulated/floor{dir = 8; icon_state = "whitered"},/area/medical/ward) "cbM" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/ward) "cbN" = (/turf/simulated/floor{icon_state = "white"},/area/medical/ward) "cbO" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/medical,/obj/machinery/vending/wallmed1{name = "NanoMed Wall"; pixel_x = 25; pixel_y = 0; req_access_txt = "0"},/turf/simulated/floor{dir = 4; icon_state = "whitered"},/area/medical/ward) "cbP" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/wood,/area/medical/psych) -"cbQ" = (/obj/structure/grille,/obj/structure/cable/green,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/structure/window/reinforced/polarized{dir = 4},/obj/structure/window/reinforced/polarized{dir = 1},/obj/structure/window/reinforced/polarized{dir = 8},/turf/simulated/floor/plating,/area/crew_quarters/heads/hop) +"cbQ" = (/obj/structure/stool/bed/chair/comfy/beige{tag = "icon-comfychair (NORTH)"; icon_state = "comfychair"; dir = 1},/obj/effect/landmark/start{name = "Atmospheric Technician"},/turf/simulated/floor/carpet,/area/engineering/break_room) "cbR" = (/obj/structure/stool/bed/chair/office/dark{dir = 1},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/wood,/area/medical/psych) "cbS" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "dark"},/area/medical/biostorage) "cbT" = (/obj/structure/closet/crate{icon_state = "crateopen"; name = "Grenade Crate"; opened = 1},/obj/item/weapon/grenade/chem_grenade,/obj/item/weapon/grenade/chem_grenade,/obj/item/weapon/grenade/chem_grenade,/obj/item/weapon/grenade/chem_grenade,/obj/item/device/assembly/igniter,/obj/item/device/assembly/igniter,/obj/item/device/assembly/igniter,/obj/item/device/assembly/timer,/obj/item/device/assembly/timer,/obj/item/device/assembly/timer,/turf/simulated/floor{icon_state = "dark"},/area/medical/biostorage) @@ -5536,12 +5536,12 @@ "ccx" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 9; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/turf/simulated/floor/plating,/area/maintenance/research_starboard) "ccy" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/maintenance/research_starboard) "ccz" = (/obj/structure/table/rack,/obj/item/clothing/mask/gas,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplatecorner"},/area/maintenance/research_starboard) -"ccA" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/wall,/area/maintenance/atmos_control) -"ccB" = (/turf/simulated/wall/r_wall,/area/maintenance/atmos_control) -"ccC" = (/obj/machinery/power/smes/buildable{charge = 0; RCon_tag = "Substation - Research"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/maintenance/substation/research) -"ccD" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Break Room"; req_one_access_txt = "10;24;5"},/turf/simulated/floor,/area/engineering/break_room) -"ccE" = (/obj/structure/stool/bed/chair/comfy/beige{tag = "icon-comfychair (NORTH)"; icon_state = "comfychair"; dir = 1},/obj/effect/landmark/start{name = "Station Engineer"},/turf/simulated/floor/carpet,/area/engineering/break_room) -"ccF" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/engineering/foyer) +"ccA" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/camera{c_tag = "Engineering Break Room"; dir = 8; network = list("SS13")},/turf/simulated/floor/carpet,/area/engineering/break_room) +"ccB" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/extinguisher_cabinet{pixel_x = 25; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay4) +"ccC" = (/obj/structure/table/woodentable,/obj/machinery/light_switch{pixel_x = -4},/obj/machinery/button/windowtint{pixel_x = 3},/turf/simulated/floor/wood,/area/medical/psych) +"ccD" = (/obj/machinery/power/smes/buildable{charge = 0; RCon_tag = "Substation - Research"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/maintenance/substation/research) +"ccE" = (/turf/simulated/floor/plating/airless,/area/maintenance/atmos_control) +"ccF" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1379; id_tag = "eng_eva_pump"},/obj/machinery/camera{c_tag = "Engineering EVA Airlock"; dir = 1},/turf/simulated/floor{dir = 6; icon_state = "floorgrimecaution"},/area/maintenance/atmos_control) "ccG" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/mask/breath,/obj/item/weapon/rig/ce,/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/crew_quarters/heads/chief) "ccH" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/crew_quarters/heads/chief) "ccI" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/crew_quarters/heads/chief) @@ -5551,19 +5551,19 @@ "ccM" = (/obj/machinery/camera{c_tag = "Chief Engineer's Office"; dir = 1; network = list("SS13")},/obj/item/device/radio/intercom{layer = 4; name = "Station Intercom (General)"; pixel_y = -29},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/crew_quarters/heads/chief) "ccN" = (/obj/machinery/newscaster{layer = 3.3; pixel_x = 0; pixel_y = -27},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor,/area/crew_quarters/heads/chief) "ccO" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor,/area/crew_quarters/heads/chief) -"ccP" = (/obj/structure/stool/bed/chair/comfy/beige{tag = "icon-comfychair (NORTH)"; icon_state = "comfychair"; dir = 1},/obj/effect/landmark/start{name = "Atmospheric Technician"},/turf/simulated/floor/carpet,/area/engineering/break_room) -"ccQ" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/camera{c_tag = "Engineering Break Room"; dir = 8; network = list("SS13")},/turf/simulated/floor/carpet,/area/engineering/break_room) -"ccR" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "eng_eva_airlock"; name = "interior access button"; pixel_x = 0; pixel_y = 25; req_access_txt = "13"},/turf/simulated/floor{dir = 8; icon_state = "floorgrimecaution"},/area/maintenance/atmos_control) -"ccS" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/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{icon_state = "floorgrime"},/area/maintenance/atmos_control) -"ccT" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/atmos_control) -"ccU" = (/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},/obj/structure/cable/green,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/crew_quarters/heads/chief) -"ccV" = (/turf/simulated/floor{dir = 8; icon_state = "yellowcorner"},/area/engineering/foyer) -"ccW" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "eng_eva_pump"; tag_exterior_door = "eng_eva_outer"; frequency = 1379; id_tag = "eng_eva_airlock"; tag_interior_door = "eng_eva_inner"; name = "Engineering Airlock Console"; pixel_y = 25; req_access_txt = "13"; tag_chamber_sensor = "eng_eva_sensor"},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4; icon_state = "map"; tag = "icon-manifold-f (EAST)"},/turf/simulated/floor{dir = 5; icon_state = "floorgrimecaution"},/area/maintenance/atmos_control) -"ccX" = (/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "eng_eva_sensor"; pixel_x = 0; pixel_y = 25},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "eng_eva_pump"},/turf/simulated/floor{dir = 9; icon_state = "floorgrimecaution"},/area/maintenance/atmos_control) -"ccY" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "eng_eva_airlock"; name = "exterior access button"; pixel_x = 0; pixel_y = 25; req_access_txt = "13"},/turf/simulated/floor/plating/airless,/area/maintenance/atmos_control) -"ccZ" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating/airless,/area/maintenance/atmos_control) -"cda" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/aft) -"cdb" = (/obj/machinery/button/driver{dir = 2; id = "toxinsdriver"; pixel_y = 24},/turf/simulated/floor,/area/rnd/mixing) +"ccP" = (/obj/machinery/light/small,/turf/simulated/floor{dir = 10; icon_state = "floorgrimecaution"},/area/maintenance/atmos_control) +"ccQ" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "floorgrimecaution"},/area/maintenance/atmos_control) +"ccR" = (/obj/structure/disposalpipe/segment,/obj/structure/extinguisher_cabinet{pixel_x = 25},/turf/simulated/floor/plating,/area/maintenance/atmos_control) +"ccS" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/atmos_control) +"ccT" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "yellowcorner"},/area/engineering/foyer) +"ccU" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable/green,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/crew_quarters/heads/chief) +"ccV" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/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/engineering/foyer) +"ccW" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/turf/simulated/floor,/area/engineering/foyer) +"ccX" = (/obj/structure/disposalpipe/segment{dir = 4},/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{dir = 2; icon_state = "yellowcorner"},/area/engineering/foyer) +"ccY" = (/obj/structure/disposalpipe/sortjunction/flipped{dir = 2; name = "Engineering Break Room"; sortType = "Engineering Break Room"},/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/engineering/foyer) +"ccZ" = (/obj/structure/disposalpipe/segment{dir = 4},/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/carpet,/area/engineering/break_room) +"cda" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Break Room"; req_one_access_txt = "10;24;5"},/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/engineering/break_room) +"cdb" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/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/carpet,/area/engineering/break_room) "cdc" = (/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = -20; pixel_y = -21},/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 = 10},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/sleep/engi_wash) "cdd" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/sleep/engi_wash) "cde" = (/obj/machinery/camera{c_tag = "Engineering Substation"; dir = 2; network = list("SS13","Engineering")},/obj/machinery/light{dir = 1},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/machinery/power/sensor{name = "Powernet Sensor - Engineering Subgrid"; name_tag = "Engineering Subgrid"},/turf/simulated/floor/plating,/area/maintenance/substation/engineering) @@ -5586,10 +5586,10 @@ "cdv" = (/turf/simulated/floor{icon_state = "bcarpet02"},/area/medical/psych) "cdw" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{icon_state = "bcarpet03"},/area/medical/psych) "cdx" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/light/small{dir = 8},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "dark"},/area/medical/biostorage) -"cdy" = (/obj/structure/table,/obj/item/weapon/storage/box/cdeathalarm_kit,/turf/simulated/floor{icon_state = "dark"},/area/medical/biostorage) +"cdy" = (/obj/structure/table,/obj/item/weapon/storage/box/cdeathalarm_kit,/obj/item/bodybag/cryobag{pixel_x = -3},/obj/item/bodybag/cryobag{pixel_x = -3},/turf/simulated/floor{icon_state = "dark"},/area/medical/biostorage) "cdz" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/structure/closet/secure_closet/personal/patient,/turf/simulated/floor{dir = 10; icon_state = "whitered"},/area/medical/patient_c) "cdA" = (/obj/machinery/light,/obj/machinery/newscaster{pixel_y = -28},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/hologram/holopad,/turf/simulated/floor{dir = 3; icon_state = "whitered"},/area/medical/patient_c) -"cdB" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/door_control{desc = "A remote control-switch for shutters."; id = "hop_office_desk"; name = "Desk Privacy Shutter"; pixel_x = 16; pixel_y = 28},/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/crew_quarters/heads/hop) +"cdB" = (/obj/structure/disposalpipe/segment{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"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor/carpet,/area/engineering/break_room) "cdC" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/research_port) "cdD" = (/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/research_port) "cdE" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/medical/virologyaccess) @@ -5624,21 +5624,21 @@ "ceh" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless,/area/rnd/test_area) "cei" = (/obj/machinery/camera{c_tag = "Toxins Test Chamber South"; dir = 1; network = list("Toxins Test Area")},/obj/machinery/light,/turf/simulated/floor/airless,/area/rnd/test_area) "cej" = (/turf/simulated/wall,/area/construction) -"cek" = (/obj/machinery/power/smes/buildable{charge = 0; RCon_tag = "Substation - Medical"},/obj/structure/cable/green,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/maintenance/substation/medical) -"cel" = (/obj/structure/table/woodentable,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/item/weapon/storage/box/matches,/obj/item/clothing/mask/smokable/cigarette/cigar,/obj/item/weapon/reagent_containers/food/drinks/flask{pixel_x = 8},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor/carpet,/area/crew_quarters/captain) -"cem" = (/obj/machinery/door_control{id = "Disposal Exit"; name = "Disposal Vent Control"; pixel_x = -25; pixel_y = 4; req_access_txt = "12"},/obj/machinery/button/driver{id = "trash"; pixel_x = -26; pixel_y = -6},/turf/simulated/floor/plating,/area/maintenance/disposal) -"cen" = (/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/machinery/camera{c_tag = "Command Substation"; dir = 2; network = list("SS13","Engineering")},/obj/machinery/power/smes/buildable{charge = 0; RCon_tag = "Substation - Command"},/turf/simulated/floor/plating,/area/maintenance/substation/command) -"ceo" = (/obj/structure/lattice,/turf/space,/area/shuttle/escape/station) -"cep" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/engineering/engine_smes) -"ceq" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/engineering/engine_smes) -"cer" = (/obj/machinery/door/airlock/maintenance_hatch{name = "SMES Access"; req_access_txt = "11"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/engineering/engine_monitoring) -"ces" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor,/area/engineering/engine_monitoring) -"cet" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/engineering/drone_fabrication) -"ceu" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/toolbox/electrical,/obj/machinery/camera{c_tag = "Drone Fabrication"; dir = 8; network = list("SS13")},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/engineering/drone_fabrication) -"cev" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/wall/r_wall,/area/engineering/engine_smes) -"cew" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/table,/obj/item/stack/cable_coil,/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/lights/mixed,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/engineering/engine_smes) -"cex" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engineering/drone_fabrication) -"cey" = (/turf/simulated/floor/plating,/area/engineering/drone_fabrication) +"cek" = (/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/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/carpet,/area/engineering/break_room) +"cel" = (/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/carpet,/area/engineering/break_room) +"cem" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/engineering{name = "Engineering Washroom"; req_one_access_txt = "10;24;5"},/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/engineering/break_room) +"cen" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor/carpet,/area/engineering/break_room) +"ceo" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/table,/obj/item/weapon/clipboard,/obj/item/weapon/paper_bin,/obj/item/weapon/pen,/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 0; pixel_y = -36},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/machinery/button/windowtint{id = "isoC_window_tint"; pixel_y = -26},/turf/simulated/floor{dir = 6; icon_state = "whitered"},/area/medical/patient_c) +"cep" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/disposalpipe/segment,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/maintenance/atmos_control) +"ceq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/maintenance/atmos_control) +"cer" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/crew_quarters/heads/chief) +"ces" = (/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/crew_quarters/heads/chief) +"cet" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{dir = 8; icon_state = "yellowcorner"},/area/engineering/foyer) +"ceu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced,/obj/structure/cable/green,/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/crew_quarters/heads/chief) +"cev" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/engineering/foyer) +"cew" = (/obj/structure/stool/bed/chair/office/dark,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/engineering/break_room) +"cex" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/engineering/break_room) +"cey" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/engineering/break_room) "cez" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/sleep/engi_wash) "ceA" = (/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plating,/area/maintenance/substation/engineering) "ceB" = (/obj/machinery/door/airlock/medical{autoclose = 0; icon_state = "door_open"; id_tag = "engineering_cubicle"; name = "Restroom"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/sleep/engi_wash) @@ -5658,13 +5658,13 @@ "ceP" = (/obj/structure/closet/l3closet,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/suit/bio_suit/general,/obj/item/clothing/suit/bio_suit/general,/obj/item/clothing/suit/bio_suit/general,/obj/item/clothing/mask/gas,/obj/item/clothing/head/bio_hood/general,/obj/item/clothing/head/bio_hood/general,/obj/item/clothing/head/bio_hood/general,/turf/simulated/floor{icon_state = "dark"},/area/medical/biostorage) "ceQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/research_port) "ceR" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/structure/mirror{pixel_x = 32},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/patient_wing) -"ceS" = (/obj/structure/stool/bed/chair/office/dark{dir = 4},/obj/effect/landmark/start{name = "Head of Personnel"},/obj/machinery/door_control{desc = "A remote control-switch for shutters."; id = "hop_office_desk"; name = "Desk Privacy Shutter"; pixel_x = 26; pixel_y = 17},/obj/machinery/button/windowtint{pixel_x = 36; pixel_y = 18},/turf/simulated/floor,/area/crew_quarters/heads/hop) -"ceT" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engineering/drone_fabrication) -"ceU" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/engineering/drone_fabrication) +"ceS" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/engineering/break_room) +"ceT" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/engineering/break_room) +"ceU" = (/obj/structure/noticeboard{pixel_x = 32; pixel_y = 0},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/engineering/break_room) "ceV" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/maintenance/substation/engineering) -"ceW" = (/obj/structure/table,/obj/item/weapon/storage/box/matches,/obj/item/weapon/storage/fancy/cigarettes,/obj/machinery/light/small{dir = 8},/obj/item/weapon/deck,/turf/simulated/floor/plating,/area/engineering/drone_fabrication) -"ceX" = (/turf/simulated/wall/r_wall,/area/engineering/engine_airlock) -"ceY" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/universal,/turf/simulated/floor/plating,/area/engineering/engine_airlock) +"ceW" = (/obj/machinery/seed_storage/xenobotany,/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology/xenoflora) +"ceX" = (/obj/item/clothing/mask/smokable/cigarette,/turf/simulated/floor/plating/airless,/area/rnd/test_area) +"ceY" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/atmos_control) "ceZ" = (/obj/structure/table,/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/obj/machinery/light{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/item/weapon/hand_labeler,/turf/simulated/floor{tag = "icon-whitegreen (NORTHWEST)"; icon_state = "whitegreen"; dir = 9},/area/rnd/xenobiology/xenoflora_storage) "cfa" = (/obj/structure/closet/crate/hydroponics/prespawned,/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/rnd/xenobiology/xenoflora_storage) "cfb" = (/obj/structure/closet/secure_closet/hydroponics{req_access = list(47)},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/rnd/xenobiology/xenoflora_storage) @@ -5675,7 +5675,7 @@ "cfg" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/disposalpipe/trunk,/obj/machinery/disposal,/obj/structure/sign/deathsposal{pixel_x = 0; pixel_y = 32},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"},/area/rnd/xenobiology/xenoflora) "cfh" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/hydroponics{closed_system = 1; name = "isolation tray"},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology/xenoflora) "cfi" = (/obj/machinery/light{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/obj/machinery/light_switch{pixel_x = -6; pixel_y = 26},/obj/machinery/atmospherics/portables_connector,/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/rnd/xenobiology/xenoflora) -"cfj" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/wall/r_wall,/area/engineering/engine_monitoring) +"cfj" = (/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/atmos_control) "cfk" = (/obj/machinery/vending/hydronutrients,/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology/xenoflora) "cfl" = (/obj/machinery/light{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/structure/table,/obj/item/weapon/storage/box/botanydisk,/turf/simulated/floor{dir = 8; icon_state = "whitegreen"},/area/rnd/xenobiology/xenoflora) "cfm" = (/obj/machinery/botany/editor,/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology/xenoflora) @@ -5686,33 +5686,33 @@ "cfr" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/research_starboard) "cfs" = (/obj/machinery/light/small{dir = 4},/obj/machinery/camera{c_tag = "Aft Starboard Solar Access"; dir = 1},/obj/effect/decal/cleanable/generic,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 6},/area/maintenance/research_starboard) "cft" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/rnd/test_area) -"cfu" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/universal,/turf/simulated/floor/plating,/area/engineering/engine_airlock) +"cfu" = (/obj/structure/dispenser{phorontanks = 0},/turf/simulated/floor,/area/engineering/engine_eva) "cfv" = (/obj/machinery/light/small,/turf/simulated/floor/plating/airless,/area/rnd/test_area) "cfw" = (/obj/machinery/light{dir = 8},/turf/simulated/floor/plating,/area/construction) "cfx" = (/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor/plating,/area/construction) "cfy" = (/obj/structure/table,/obj/item/weapon/tank/emergency_oxygen/engi,/obj/random/tech_supply,/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plating,/area/construction) "cfz" = (/obj/structure/table,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/turf/simulated/floor,/area/construction) "cfA" = (/obj/structure/table,/obj/random/tech_supply,/obj/random/tech_supply,/turf/simulated/floor,/area/construction) -"cfB" = (/obj/machinery/door/airlock/maintenance_hatch{frequency = 1379; icon_state = "door_closed"; id_tag = "engine_airlock_exterior"; locked = 0; name = "Engine Airlock Exterior"; req_access_txt = "10"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/engineering/engine_airlock) -"cfC" = (/obj/machinery/hologram/holopad,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor,/area/engineering/engine_monitoring) -"cfD" = (/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/engineering/engine_monitoring) -"cfE" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/newscaster{pixel_x = 28; pixel_y = 0},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor,/area/engineering/engine_monitoring) -"cfF" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/engine_monitoring) -"cfG" = (/obj/machinery/air_sensor{frequency = 1441; id_tag = "co2_sensor"},/turf/simulated/floor/engine{carbon_dioxide = 50000; name = "co2 floor"; nitrogen = 0; oxygen = 0},/area/engineering/atmos) -"cfH" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 0; external_pressure_bound_default = 0; frequency = 1441; icon_state = "map_vent_in"; id_tag = "co2_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{carbon_dioxide = 50000; name = "co2 floor"; nitrogen = 0; oxygen = 0},/area/engineering/atmos) -"cfI" = (/obj/structure/grille,/turf/simulated/wall/r_wall,/area/engineering/atmos) -"cfJ" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 1; frequency = 1441; icon_state = "map_injector"; id = "co2_in"; use_power = 1; pixel_y = 1},/turf/simulated/floor/engine{carbon_dioxide = 50000; name = "co2 floor"; nitrogen = 0; oxygen = 0},/area/engineering/atmos) -"cfK" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 0; external_pressure_bound_default = 0; frequency = 1441; icon_state = "map_vent_in"; id_tag = "waste_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 = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/engineering/atmos) -"cfL" = (/obj/machinery/air_sensor{frequency = 1441; id_tag = "waste_sensor"; output = 63},/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/engineering/atmos) -"cfM" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 1; frequency = 1441; icon_state = "map_injector"; id = "waste_in"; use_power = 1; pixel_y = 1},/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/engineering/atmos) -"cfN" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 0; external_pressure_bound_default = 0; frequency = 1441; icon_state = "map_vent_in"; id_tag = "n2o_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 = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/engineering/atmos) -"cfO" = (/obj/machinery/air_sensor{frequency = 1441; id_tag = "n2o_sensor"},/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/engineering/atmos) -"cfP" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 1; frequency = 1441; icon_state = "map_injector"; id = "n2o_in"; use_power = 1; pixel_y = 1},/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/engineering/atmos) -"cfQ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 0; external_pressure_bound_default = 0; frequency = 1441; icon_state = "map_vent_in"; id_tag = "tox_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{carbon_dioxide = 0; name = "phoron floor"; nitrogen = 0; oxygen = 0; phoron = 70000},/area/engineering/atmos) -"cfR" = (/obj/machinery/air_sensor{frequency = 1441; id_tag = "tox_sensor"},/turf/simulated/floor/engine{carbon_dioxide = 0; name = "phoron floor"; nitrogen = 0; oxygen = 0; phoron = 70000},/area/engineering/atmos) +"cfB" = (/obj/structure/sign/pods,/turf/simulated/wall/r_wall,/area/engineering/engine_eva) +"cfC" = (/obj/structure/table/rack{dir = 8; layer = 2.6},/obj/item/clothing/shoes/magboots,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/void/engineering,/obj/machinery/light{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/southleft{name = "Engineering Hardsuits"; req_access_txt = "11"},/obj/item/clothing/suit/space/void/engineering,/turf/simulated/floor,/area/engineering/engine_eva) +"cfD" = (/obj/machinery/portable_atmospherics/canister/oxygen,/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor,/area/engineering/engine_eva) +"cfE" = (/obj/item/clothing/shoes/magboots,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/void/engineering,/obj/machinery/door/window/southleft{name = "Engineering Hardsuits"; req_access_txt = "11"},/obj/structure/table/rack{dir = 8; layer = 2.6},/obj/item/clothing/suit/space/void/engineering,/turf/simulated/floor,/area/engineering/engine_eva) +"cfF" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/powered/scrubber,/turf/simulated/floor{icon_state = "red"; dir = 1},/area/engineering/foyer) +"cfG" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/engineering/engine_eva) +"cfH" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/powered/pump,/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/engineering/foyer) +"cfI" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/powered/pump,/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/engineering/foyer) +"cfJ" = (/obj/machinery/newscaster{pixel_x = 31; pixel_y = 3},/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/engineering/foyer) +"cfK" = (/obj/machinery/computer/station_alert,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/engineering/break_room) +"cfL" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/engineering/break_room) +"cfM" = (/obj/machinery/light,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/green,/obj/structure/flora/pottedplant{icon_state = "plant-20"; tag = "icon-plant-22"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/engineering/break_room) +"cfN" = (/obj/machinery/light,/obj/structure/table,/obj/machinery/chem_dispenser/soda,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/engineering/break_room) +"cfO" = (/obj/structure/table,/obj/item/weapon/storage/box/drinkingglasses{pixel_x = 1; pixel_y = 4},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/engineering/break_room) +"cfP" = (/obj/machinery/vending/snack,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/engineering/break_room) +"cfQ" = (/obj/structure/grille,/turf/simulated/wall/r_wall,/area/engineering/atmos) +"cfR" = (/obj/structure/disposalpipe/segment,/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{icon_state = "floorgrime"},/area/maintenance/atmos_control) "cfS" = (/obj/structure/closet/secure_closet/personal,/turf/simulated/floor/wood,/area/crew_quarters/sleep/bedrooms) "cfT" = (/obj/machinery/power/tracker,/obj/structure/cable/yellow,/turf/simulated/floor/plating/airless,/area/solar/starboard) -"cfU" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable/cyan,/turf/simulated/floor/plating,/area/turret_protected/ai_upload) +"cfU" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/atmos_control) "cfV" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{icon_state = "blue"; dir = 10},/area/medical/surgeryobs) "cfW" = (/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/medical/surgeryobs) "cfX" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor{icon_state = "blue"; dir = 6},/area/medical/surgeryobs) @@ -5726,27 +5726,27 @@ "cgf" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin,/obj/item/weapon/pen,/obj/machinery/camera{c_tag = "Medbay Mental Health Room"; dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "bcarpet04"},/area/medical/psych) "cgg" = (/obj/structure/stool/bed/chair/comfy/brown,/obj/effect/landmark/start{name = "Psychiatrist"},/turf/simulated/floor{icon_state = "bcarpet06"},/area/medical/psych) "cgh" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "whitegreen"},/area/medical/patient_wing) -"cgi" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 1; frequency = 1441; icon_state = "map_injector"; id = "tox_in"; use_power = 1; pixel_y = 1},/turf/simulated/floor/engine{carbon_dioxide = 0; name = "phoron floor"; nitrogen = 0; oxygen = 0; phoron = 70000},/area/engineering/atmos) +"cgi" = (/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/engineering/engine_eva) "cgj" = (/obj/structure/table,/turf/simulated/floor{dir = 2; icon_state = "whitegreen"},/area/medical/patient_wing) "cgk" = (/obj/item/weapon/storage/toolbox/emergency,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "dark"},/area/medical/biostorage) "cgl" = (/obj/structure/table/rack,/obj/item/clothing/suit/radiation,/obj/item/clothing/head/radiation,/turf/simulated/floor{icon_state = "dark"},/area/medical/biostorage) "cgm" = (/obj/structure/reagent_dispensers/fueltank,/obj/effect/decal/cleanable/blood/oil{amount = 0},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/plating,/area/maintenance/research_port) "cgn" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/patient_wing) -"cgo" = (/obj/structure/closet/emcloset,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 5},/area/engineering/engine_airlock) -"cgp" = (/obj/machinery/atmospherics/binary/dp_vent_pump/high_volume{dir = 8; frequency = 1379; id = "engine_airlock_pump"},/turf/simulated/floor/plating,/area/engineering/engine_airlock) +"cgo" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/engineering{name = "Engineering EVA Storage"; req_access_txt = "12"; req_one_access_txt = "11;24"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "floorgrime"},/area/engineering/engine_eva) +"cgp" = (/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/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/engineering/engine_eva) "cgq" = (/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/obj/machinery/power/terminal{dir = 8},/turf/simulated/floor/plating,/area/maintenance/substation/engineering) -"cgr" = (/obj/machinery/embedded_controller/radio/airlock/advanced_airlock_controller{id_tag = "engine_room_airlock"; name = "Engine Room Airlock"; pixel_x = -24; tag_airpump = "engine_airlock_pump"; tag_chamber_sensor = "eng_al_c_snsr"; tag_exterior_door = "engine_airlock_exterior"; tag_exterior_sensor = "eng_al_ext_snsr"; tag_interior_door = "engine_airlock_interior"; tag_interior_sensor = "eng_al_int_snsr"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5; icon_state = "intact"; tag = "icon-intact-f (NORTHEAST)"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/engineering/engine_airlock) +"cgr" = (/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/engineering/engine_eva) "cgs" = (/turf/simulated/wall/r_wall,/area/maintenance/substation/engineering) -"cgt" = (/turf/simulated/wall/r_wall,/area/engineering/engine_monitoring) -"cgu" = (/obj/structure/table/reinforced,/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor,/area/engineering/engine_monitoring) +"cgt" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/engine_eva) +"cgu" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/engine_eva) "cgv" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall/r_wall,/area/medical/virology) "cgw" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/structure/disposaloutlet,/turf/simulated/floor/plating/airless,/area/rnd/xenobiology) "cgx" = (/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/machinery/camera/autoname{dir = 4},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"},/area/rnd/xenobiology/xenoflora_storage) "cgy" = (/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology/xenoflora_storage) "cgz" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/rnd/xenobiology/xenoflora_storage) "cgA" = (/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},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/rnd/xenobiology) -"cgB" = (/obj/structure/stool/bed/chair/office/dark,/obj/effect/landmark/start{name = "Station Engineer"},/turf/simulated/floor,/area/engineering/engine_monitoring) -"cgC" = (/obj/structure/table/reinforced,/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 = 0; pixel_y = -3; 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 = -6; pixel_y = 7; req_access_txt = "10"},/obj/machinery/door_control{desc = "A remote control-switch for the engine emitter."; id = "EngineEmitter"; name = "Engine Emitter"; normaldoorcontrol = 2; pixel_x = 6; pixel_y = 7; req_access_txt = "10"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/engineering/engine_monitoring) +"cgB" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/purple,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/foyer) +"cgC" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering EVA Storage"; req_one_access_txt = "11;24"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/engine_eva) "cgD" = (/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},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/rnd/xenobiology/xenoflora) "cgE" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{tag = "icon-whitegreen_v (SOUTHWEST)"; icon_state = "whitegreen_v"; dir = 10},/area/rnd/xenobiology/xenoflora) "cgF" = (/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/turf/simulated/floor{dir = 2; icon_state = "whitegreen"},/area/rnd/xenobiology/xenoflora) @@ -5761,32 +5761,32 @@ "cgO" = (/obj/machinery/door/airlock/engineering{name = "Aft Starboard Solar Access"; req_access_txt = "10"},/obj/machinery/atmospherics/pipe/simple/visible,/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "cgP" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 0},/turf/simulated/wall/r_wall,/area/maintenance/starboardsolar) "cgQ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/rnd/test_area) -"cgR" = (/obj/structure/table/reinforced,/obj/machinery/camera{c_tag = "Engine Monitoring Room"; dir = 4; network = list("SS13","Supermatter")},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor,/area/engineering/engine_monitoring) +"cgR" = (/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{dir = 8; icon_state = "map"; tag = "icon-manifold-f (WEST)"},/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/engineering/foyer) "cgS" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/construction) "cgT" = (/turf/simulated/floor/plating,/area/construction) "cgU" = (/turf/simulated/floor,/area/construction) "cgV" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/table,/obj/item/clothing/gloves/black,/obj/item/device/multitool{pixel_x = 5},/obj/random/tech_supply,/turf/simulated/floor,/area/construction) -"cgW" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor{icon_state = "warningcorner"; dir = 1},/area/engineering/engine_smes) -"cgX" = (/obj/machinery/camera{c_tag = "SMES"; dir = 8; network = list("SS13","Supermatter")},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor,/area/engineering/engine_smes) -"cgY" = (/turf/simulated/wall/r_wall,/area/engineering/engine_smes) -"cgZ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "warning"},/area/engineering/engine_smes) -"cha" = (/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,/turf/simulated/floor/plating,/area/engineering/drone_fabrication) -"chb" = (/obj/machinery/recharge_station,/turf/simulated/floor/plating,/area/engineering/drone_fabrication) -"chc" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engineering/drone_fabrication) -"chd" = (/obj/machinery/drone_fabricator,/turf/simulated/floor/plating,/area/engineering/drone_fabrication) -"che" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plating,/area/engineering/drone_fabrication) -"chf" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/engineering/atmos) -"chg" = (/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/engineering/atmos) -"chh" = (/obj/machinery/portable_atmospherics/canister/sleeping_agent/roomfiller,/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/engineering/atmos) -"chi" = (/turf/simulated/floor/engine{carbon_dioxide = 0; name = "phoron floor"; nitrogen = 0; oxygen = 0; phoron = 70000},/area/engineering/atmos) -"chj" = (/obj/machinery/portable_atmospherics/canister/phoron,/turf/simulated/floor/engine{carbon_dioxide = 0; name = "phoron floor"; nitrogen = 0; oxygen = 0; phoron = 70000},/area/engineering/atmos) -"chk" = (/turf/simulated/floor/engine{carbon_dioxide = 50000; name = "co2 floor"; nitrogen = 0; oxygen = 0},/area/engineering/atmos) -"chl" = (/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/turf/simulated/floor/engine{carbon_dioxide = 50000; name = "co2 floor"; nitrogen = 0; oxygen = 0},/area/engineering/atmos) -"chm" = (/obj/machinery/light/small,/turf/simulated/floor/engine{carbon_dioxide = 50000; name = "co2 floor"; nitrogen = 0; oxygen = 0},/area/engineering/atmos) -"chn" = (/obj/machinery/light/small,/turf/simulated/floor/engine{carbon_dioxide = 0; name = "phoron floor"; nitrogen = 0; oxygen = 0; phoron = 70000},/area/engineering/atmos) -"cho" = (/obj/machinery/light/small,/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/engineering/atmos) -"chp" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/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,/turf/simulated/floor/plating,/area/engineering/drone_fabrication) -"chq" = (/obj/structure/extinguisher_cabinet{pixel_x = -25},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics_cloning) +"cgW" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/foyer) +"cgX" = (/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{dir = 8; icon_state = "yellowcorner"},/area/engineering/foyer) +"cgY" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 9; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/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/engineering/foyer) +"cgZ" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/engineering/foyer) +"cha" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/foyer) +"chb" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/machinery/camera{c_tag = "Engineering Foyer"; dir = 8; network = list("SS13")},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/engineering/foyer) +"chc" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/engineering/foyer) +"chd" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/smes/buildable{charge = 0; RCon_tag = "Solar - Aft Starboard"},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) +"che" = (/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/engineering/atmos) +"chf" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/engineering/atmos) +"chg" = (/turf/simulated/floor/engine{name = "o2 floor"; nitrogen = 0; oxygen = 100000},/area/engineering/atmos) +"chh" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/engine{name = "o2 floor"; nitrogen = 0; oxygen = 100000},/area/engineering/atmos) +"chi" = (/turf/simulated/floor/engine{name = "n2 floor"; nitrogen = 100000; oxygen = 0},/area/engineering/atmos) +"chj" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/engine{name = "n2 floor"; nitrogen = 100000; oxygen = 0},/area/engineering/atmos) +"chk" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/atmos_control) +"chl" = (/obj/effect/decal/cleanable/blood/oil/streak{amount = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/atmos_control) +"chm" = (/obj/item/weapon/storage/briefcase/inflatable{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/briefcase/inflatable,/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/table/reinforced{icon_state = "table"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor,/area/engineering/engine_eva) +"chn" = (/turf/simulated/wall/r_wall,/area/engineering/engine_eva) +"cho" = (/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/engineering/engine_eva) +"chp" = (/obj/machinery/atmospherics/pipe/simple/hidden/purple,/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor,/area/engineering/engine_eva) +"chq" = (/turf/simulated/floor,/area/engineering/engine_eva) "chr" = (/obj/structure/table,/obj/item/weapon/storage/box/gloves{pixel_x = 4; pixel_y = 4},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/item/weapon/storage/box/masks,/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{dir = 9; icon_state = "blue"},/area/medical/surgeryprep) "chs" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 1; icon_state = "bluecorner"},/area/medical/surgeryprep) "cht" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{dir = 4; icon_state = "blue"},/area/medical/surgeryprep) @@ -5795,15 +5795,15 @@ "chw" = (/obj/structure/sign/biohazard,/turf/simulated/wall,/area/medical/virologyaccess) "chx" = (/obj/structure/disposaloutlet,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plating/airless,/area/medical/virology) "chy" = (/obj/structure/bedsheetbin,/obj/structure/table,/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/cable/green,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/medical/biostorage) -"chz" = (/obj/structure/table,/obj/item/bodybag/cryobag{pixel_x = -3},/obj/item/bodybag/cryobag{pixel_x = -3},/obj/item/weapon/gun/launcher/syringe,/obj/item/weapon/storage/box/syringegun,/turf/simulated/floor{icon_state = "dark"},/area/medical/biostorage) +"chz" = (/obj/structure/table,/obj/item/weapon/gun/launcher/syringe,/obj/item/weapon/storage/box/syringegun,/turf/simulated/floor{icon_state = "dark"},/area/medical/biostorage) "chA" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/research_port) "chB" = (/turf/simulated/floor/plating,/area/maintenance/research_port) "chC" = (/obj/machinery/door/airlock/medical{autoclose = 0; icon_state = "door_open"; id_tag = "cubicle1"; name = "Cubicle 1"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/patient_wing) "chD" = (/obj/machinery/door/airlock/medical{autoclose = 0; icon_state = "door_open"; id_tag = "cubicle2"; name = "Cubicle 2"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/patient_wing) "chE" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 5},/turf/simulated/floor/plating/airless,/area/medical/virology) "chF" = (/turf/simulated/floor/plating/airless,/area/medical/virology) -"chG" = (/obj/machinery/power/terminal{dir = 8},/obj/machinery/light,/obj/machinery/door_control{id = "engine_electrical_maintenance"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 5; pixel_y = -25; req_access_txt = "10"; specialfunctions = 4},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/engineering/engine_smes) -"chH" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "warning"},/area/engineering/engine_smes) +"chG" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor,/area/engineering/engine_eva) +"chH" = (/turf/simulated/floor,/area/engineering/foyer) "chI" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"},/area/rnd/xenobiology/xenoflora_storage) "chJ" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology/xenoflora_storage) "chK" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/rnd/xenobiology/xenoflora_storage) @@ -5824,29 +5824,29 @@ "chZ" = (/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "cia" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "cib" = (/obj/machinery/power/breakerbox/activated{RCon_tag = "Engineering Substation Bypass"},/turf/simulated/floor/plating,/area/maintenance/substation/engineering) -"cic" = (/obj/machinery/computer/general_air_control/supermatter_core{frequency = 1438; input_tag = "cooling_in"; name = "Engine Cooling Control"; output_tag = "cooling_out"; pressure_setting = 100; sensors = list("engine_sensor" = "Engine Core")},/turf/simulated/floor{icon_state = "warning"},/area/engineering/engine_monitoring) -"cid" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/engineering/drone_fabrication) -"cie" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/engineering/drone_fabrication) -"cif" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/light,/obj/machinery/mecha_part_fabricator{output_dir = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 10},/area/engineering/drone_fabrication) -"cig" = (/obj/machinery/computer/drone_control,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/engineering/drone_fabrication) -"cih" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/engineering/drone_fabrication) +"cic" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering EVA Storage"; req_one_access_txt = "11;24"},/turf/simulated/floor,/area/engineering/engine_eva) +"cid" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan,/turf/simulated/floor,/area/engineering/foyer) +"cie" = (/obj/machinery/hologram/holopad,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/engineering/foyer) +"cif" = (/obj/machinery/firealarm{dir = 4; layer = 3.3; pixel_x = 26},/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/engineering/foyer) +"cig" = (/obj/structure/closet/secure_closet/engineering_personal,/obj/item/weapon/tank/emergency_oxygen/engi,/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor,/area/engineering/locker_room) +"cih" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/engineering/locker_room) "cii" = (/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/construction) "cij" = (/obj/structure/table,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor,/area/construction) -"cik" = (/obj/machinery/light,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/sensor{name = "Powernet Sensor - Master Grid"; name_tag = "Master"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 6},/area/engineering/drone_fabrication) -"cil" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/computer/power_monitor,/turf/simulated/floor{icon_state = "warning"},/area/engineering/engine_monitoring) -"cim" = (/obj/machinery/computer/rcon,/turf/simulated/floor{icon_state = "warning"},/area/engineering/engine_monitoring) -"cin" = (/obj/machinery/computer/station_alert,/turf/simulated/floor{icon_state = "warning"},/area/engineering/engine_monitoring) -"cio" = (/obj/machinery/computer/security/engineering{network = list("Engineering","Power Alarms","Atmosphere Alarms","Fire Alarms","Supermatter")},/turf/simulated/floor{icon_state = "warning"},/area/engineering/engine_monitoring) -"cip" = (/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "eng_al_c_snsr"; pixel_x = -25; pixel_y = 0},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 10},/area/engineering/engine_airlock) -"ciq" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 6},/area/engineering/engine_airlock) -"cir" = (/turf/simulated/floor/plating,/area/engineering/engine_airlock) -"cis" = (/obj/structure/grille,/obj/structure/grille,/turf/simulated/wall/r_wall,/area/engineering/atmos) -"cit" = (/turf/simulated/wall/r_wall,/area/engineering/engine_room) -"ciu" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "EngineBlast"; name = "Engine Monitoring Room Blast Doors"; opacity = 0},/turf/simulated/floor/plating,/area/engineering/engine_room) -"civ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "EngineBlast"; name = "Engine Monitoring Room Blast Doors"; opacity = 0},/turf/simulated/floor/plating,/area/engineering/engine_room) -"ciw" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "EngineBlast"; name = "Engine Monitoring Room Blast Doors"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/engineering/engine_room) -"cix" = (/obj/machinery/door/airlock/maintenance_hatch{frequency = 1379; icon_state = "door_closed"; id_tag = "engine_airlock_interior"; locked = 0; name = "Engine Airlock Interior"; req_access_txt = "10"},/turf/simulated/floor/plating,/area/engineering/engine_room) -"ciy" = (/obj/machinery/door/airlock/maintenance{name = "Drone Fabrication/Engine Waste Handling"; req_one_access_txt = "10;24"},/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,/turf/simulated/floor/plating,/area/engineering/drone_fabrication) +"cik" = (/obj/structure/closet/secure_closet/engineering_personal,/obj/machinery/light{dir = 1},/obj/item/weapon/tank/emergency_oxygen/engi,/turf/simulated/floor,/area/engineering/locker_room) +"cil" = (/obj/structure/closet/secure_closet/engineering_personal,/obj/item/weapon/tank/emergency_oxygen/engi,/turf/simulated/floor,/area/engineering/locker_room) +"cim" = (/obj/structure/closet/secure_closet/engineering_personal,/obj/item/weapon/tank/emergency_oxygen/engi,/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/turf/simulated/floor,/area/engineering/locker_room) +"cin" = (/turf/simulated/wall,/area/engineering/locker_room) +"cio" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor,/area/engineering/locker_room) +"cip" = (/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/obj/machinery/smartfridge/drying_rack,/turf/simulated/floor{dir = 6; icon_state = "whitegreen"},/area/rnd/xenobiology/xenoflora_storage) +"ciq" = (/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/engineering/atmos) +"cir" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/engine{name = "o2 floor"; nitrogen = 0; oxygen = 100000},/area/engineering/atmos) +"cis" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/turf/simulated/floor/engine{name = "n2 floor"; nitrogen = 100000; oxygen = 0},/area/engineering/atmos) +"cit" = (/obj/machinery/light/small{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/atmos_control) +"ciu" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/atmos_control) +"civ" = (/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/item/weapon/storage/briefcase/inflatable{pixel_x = 3; pixel_y = 6},/obj/item/weapon/storage/briefcase/inflatable{pixel_y = 3},/obj/structure/table/reinforced{icon_state = "table"},/obj/item/weapon/storage/briefcase/inflatable{pixel_x = -3; pixel_y = 0},/turf/simulated/floor,/area/engineering/engine_eva) +"ciw" = (/obj/machinery/camera{c_tag = "Engineering EVA Storage"; dir = 1; network = list("SS13")},/obj/machinery/suit_cycler/engineering,/turf/simulated/floor,/area/engineering/engine_eva) +"cix" = (/obj/machinery/atmospherics/pipe/simple/hidden/purple,/turf/simulated/floor,/area/engineering/engine_eva) +"ciy" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/void/atmos,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/void/atmos,/obj/machinery/door/window/northright{name = "Atmospherics Hardsuits"; req_access_txt = "24"},/turf/simulated/floor,/area/engineering/engine_eva) "ciz" = (/obj/structure/table/rack{dir = 1},/obj/item/weapon/storage/toolbox/emergency,/turf/simulated/floor/plating,/area/maintenance/engineering) "ciA" = (/turf/simulated/wall,/area/maintenance/substation/engineering) "ciB" = (/obj/structure/table/rack{dir = 1},/obj/item/weapon/extinguisher,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/maintenance/medbay) @@ -5870,19 +5870,19 @@ "ciT" = (/obj/structure/closet/secure_closet/medical2,/obj/machinery/light_switch{pixel_x = 22; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery2) "ciU" = (/turf/simulated/wall,/area/medical/surgery2) "ciV" = (/obj/machinery/camera{c_tag = "Virology Access Fore"; dir = 4; network = list("SS13","Research")},/turf/simulated/floor,/area/medical/virologyaccess) -"ciW" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "EngineBlast"; name = "Engine Monitoring Room Blast Doors"; opacity = 0},/turf/simulated/floor/plating,/area/engineering/engine_room) +"ciW" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/void/atmos,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/void/atmos,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/northleft{name = "Atmospherics Hardsuits"; req_access_txt = "24"},/turf/simulated/floor,/area/engineering/engine_eva) "ciX" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor,/area/medical/surgeryprep) "ciY" = (/obj/structure/toilet{dir = 1},/obj/machinery/light/small{dir = 4},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/patient_wing) "ciZ" = (/obj/machinery/shower{dir = 1},/obj/machinery/light/small{dir = 8},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/patient_wing) -"cja" = (/obj/machinery/door/airlock/hatch{icon_state = "door_locked"; id_tag = "engine_electrical_maintenance"; locked = 1; name = "Electrical Maintenance"; req_access_txt = "10"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/engineering/engine_room) -"cjb" = (/turf/simulated/wall/r_wall,/area/engineering/drone_fabrication) -"cjc" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 10},/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/plating,/area/engineering/engine_waste) -"cjd" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/engineering/engine_waste) -"cje" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/engineering/engine_waste) +"cja" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/turf/simulated/floor,/area/engineering/foyer) +"cjb" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/engineering/engine_eva) +"cjc" = (/obj/structure/table/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/cyan,/obj/item/weapon/folder/yellow,/turf/simulated/floor,/area/engineering/foyer) +"cjd" = (/obj/structure/table/reinforced,/obj/item/weapon/packageWrap,/obj/item/weapon/hand_labeler,/turf/simulated/floor,/area/engineering/foyer) +"cje" = (/obj/structure/table/reinforced,/obj/machinery/recharger{pixel_y = 0},/turf/simulated/floor,/area/engineering/foyer) "cjf" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/research_port) "cjg" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor{tag = "icon-whitegreen_v (SOUTHWEST)"; icon_state = "whitegreen_v"; dir = 10},/area/rnd/xenobiology/xenoflora_storage) "cjh" = (/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "whitegreen"},/area/rnd/xenobiology/xenoflora_storage) -"cji" = (/obj/machinery/camera/autoname{dir = 2; network = list("SS13","Supermatter","Atmospherics")},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-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 = 6},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplatecorner"},/area/engineering/engine_waste) +"cji" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/engineering/foyer) "cjj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/light,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/turf/simulated/floor/plating,/area/rnd/xenobiology) "cjk" = (/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) "cjl" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/purple{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) @@ -5898,43 +5898,43 @@ "cjv" = (/obj/structure/stool,/obj/machinery/camera{c_tag = "Aft Starboard Solar Control"; dir = 4; network = list("SS13")},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "cjw" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/effect/decal/cleanable/dirt,/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "cjx" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/machinery/light/small{dir = 4},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) -"cjy" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/turf/simulated/wall/r_wall,/area/engineering/engine_waste) -"cjz" = (/obj/machinery/alarm{breach_detection = 0; dir = 2; frequency = 1439; name = "Engine Room Air Alarm"; pixel_y = 23},/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 10},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engineering/engine_room) -"cjA" = (/obj/machinery/power/terminal{dir = 4},/obj/structure/cable/yellow,/obj/machinery/power/sensor{name = "Powernet Sensor - Engine Output"; name_tag = "Engine Output"},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/engineering/engine_room) +"cjy" = (/obj/machinery/atmospherics/unary/vent_pump/on,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/engineering/foyer) +"cjz" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/engineering/locker_room) +"cjA" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Locker Room"; req_one_access_txt = "11;24"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/engineering/locker_room) "cjB" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/construction) "cjC" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/engineering{name = "Construction Area"; req_access_txt = "32"},/turf/simulated/floor/plating,/area/construction) -"cjD" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;47"},/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/maintenance/research_shuttle) -"cjE" = (/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engineering/engine_room) -"cjF" = (/obj/machinery/light/small{dir = 4},/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},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/engineering/engine_waste) -"cjG" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 0; pixel_y = 0},/turf/simulated/wall/r_wall,/area/engineering/engine_room) -"cjH" = (/obj/machinery/door_control{desc = "A remote control-switch for the engine control room blast doors."; id = "EngineEmitterPortWest"; name = "Engine Room Blast Doors"; pixel_x = 0; pixel_y = 25; req_access_txt = "10"},/obj/machinery/atmospherics/portables_connector{dir = 4},/turf/simulated/floor/plating{icon_state = "platebot"},/area/engineering/engine_room) -"cjI" = (/obj/machinery/light{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/obj/machinery/atmospherics/binary/pump{dir = 8},/turf/simulated/floor/plating,/area/engineering/engine_room) -"cjJ" = (/turf/simulated/floor/plating,/area/engineering/engine_room) -"cjK" = (/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/engineering/engine_room) -"cjL" = (/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/engineering/engine_room) -"cjM" = (/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/engineering/engine_room) -"cjN" = (/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/plating,/area/engineering/engine_room) -"cjO" = (/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/engineering/engine_room) -"cjP" = (/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/plating,/area/engineering/engine_room) -"cjQ" = (/obj/machinery/atmospherics/portables_connector,/turf/simulated/floor/plating{icon_state = "platebotc"},/area/engineering/engine_room) -"cjR" = (/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/engineering/engine_room) -"cjS" = (/obj/machinery/atmospherics/binary/pump,/turf/simulated/floor/plating,/area/engineering/engine_room) -"cjT" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/turf/simulated/floor/plating,/area/engineering/engine_waste) -"cjU" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engineering/engine_waste) +"cjD" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/engineering/locker_room) +"cjE" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/engineering/locker_room) +"cjF" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor,/area/engineering/locker_room) +"cjG" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/engineering/locker_room) +"cjH" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 28},/turf/simulated/floor,/area/engineering/locker_room) +"cjI" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 2; external_pressure_bound = 0; external_pressure_bound_default = 0; frequency = 1443; icon_state = "map_vent_in"; id_tag = "air_out"; internal_pressure_bound = 2000; internal_pressure_bound_default = 2000; use_power = 1; pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0},/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/engineering/atmos) +"cjJ" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 2; frequency = 1443; icon_state = "map_injector"; id = "air_in"; use_power = 1},/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/engineering/atmos) +"cjK" = (/obj/machinery/air_sensor{frequency = 1443; id_tag = "air_sensor"; output = 7},/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/engineering/atmos) +"cjL" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 2; frequency = 1441; icon_state = "map_injector"; id = "o2_in"; use_power = 1},/turf/simulated/floor/engine{name = "o2 floor"; nitrogen = 0; oxygen = 100000},/area/engineering/atmos) +"cjM" = (/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 = "o2_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 = "o2 floor"; nitrogen = 0; oxygen = 100000},/area/engineering/atmos) +"cjN" = (/obj/machinery/air_sensor{frequency = 1441; id_tag = "o2_sensor"},/turf/simulated/floor/engine{name = "o2 floor"; nitrogen = 0; oxygen = 100000},/area/engineering/atmos) +"cjO" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 2; frequency = 1441; icon_state = "map_injector"; id = "n2_in"; use_power = 1},/turf/simulated/floor/engine{name = "n2 floor"; nitrogen = 100000; oxygen = 0},/area/engineering/atmos) +"cjP" = (/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/engineering/atmos) +"cjQ" = (/obj/machinery/air_sensor{frequency = 1441; id_tag = "n2_sensor"},/turf/simulated/floor/engine{name = "n2 floor"; nitrogen = 100000; oxygen = 0},/area/engineering/atmos) +"cjR" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/plating,/area/maintenance/atmos_control) +"cjS" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/atmos_control) +"cjT" = (/obj/machinery/door/airlock/maintenance{name = "Engineering EVA Storage Maintainance"; req_access_txt = "12"; req_one_access_txt = "11;24"},/obj/machinery/atmospherics/pipe/simple/hidden/purple,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/engineering/engine_eva) +"cjU" = (/obj/machinery/computer/station_alert,/turf/simulated/floor,/area/engineering/foyer) "cjV" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating/airless,/area/solar/port) "cjW" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating/airless,/area/solar/port) -"cjX" = (/obj/machinery/atmospherics/pipe/manifold4w/visible/purple,/turf/simulated/floor/plating,/area/engineering/engine_waste) -"cjY" = (/obj/machinery/atmospherics/binary/pump{dir = 8},/turf/simulated/floor/plating,/area/engineering/engine_waste) -"cjZ" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/engineering/engine_room) +"cjX" = (/obj/structure/stool/bed/chair/office/dark{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/cyan,/turf/simulated/floor,/area/engineering/foyer) +"cjY" = (/obj/structure/table/reinforced,/obj/item/weapon/clipboard,/obj/item/weapon/tape_roll,/turf/simulated/floor,/area/engineering/foyer) +"cjZ" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=AIE"; location = "AftH"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor,/area/engineering/foyer) "cka" = (/obj/structure/table,/obj/item/weapon/FixOVein,/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -27},/obj/item/weapon/surgicaldrill,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "ckb" = (/obj/machinery/computer/operating,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "ckc" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "ckd" = (/obj/structure/table,/obj/item/weapon/reagent_containers/spray/cleaner{desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; name = "Surgery Cleaner"},/turf/simulated/floor{dir = 4; icon_state = "whitered"},/area/medical/surgery) -"cke" = (/turf/simulated/floor/plating{dir = 4; icon_state = "warnplatecorner"},/area/engineering/engine_room) +"cke" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor,/area/engineering/foyer) "ckf" = (/obj/structure/table,/obj/item/device/radio{anchored = 1; broadcasting = 0; canhear_range = 7; frequency = 1487; icon = 'icons/obj/items.dmi'; icon_state = "red_phone"; listening = 1; name = "Surgery Emergency Phone"},/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/medical/surgeryprep) "ckg" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/medical/surgeryprep) "ckh" = (/obj/structure/disposalpipe/segment,/obj/item/roller,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/medical/surgeryprep) -"cki" = (/obj/machinery/atmospherics/pipe/manifold/visible/yellow{dir = 4},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplatecorner"},/area/engineering/engine_room) +"cki" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/engineering/foyer) "ckj" = (/obj/structure/table,/obj/item/weapon/reagent_containers/spray/cleaner{desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; name = "Surgery Cleaner"},/turf/simulated/floor{dir = 8; icon_state = "whitered"},/area/medical/surgery2) "ckk" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery2) "ckl" = (/obj/machinery/computer/operating,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery2) @@ -5943,17 +5943,17 @@ "cko" = (/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/medbay) "ckp" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance,/obj/structure/disposalpipe/segment,/obj/structure/sign/redcross{desc = "The Star of Life, a symbol of Medical Aid."; icon_state = "lifestar"; name = "Medbay"; pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/medical/virologyaccess) "ckq" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor,/area/medical/virologyaccess) -"ckr" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/engineering/engine_room) -"cks" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 6},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engineering/engine_room) +"ckr" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/foyer) +"cks" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor,/area/engineering/locker_room) "ckt" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/research_port) -"cku" = (/obj/machinery/atmospherics/omni/filter{use_power = 0; tag_east = 1; tag_north = 0; tag_south = 4; tag_west = 2},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cku" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Locker Room"; req_one_access_txt = "11;24"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/locker_room) "ckv" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating/airless,/area/solar/starboard) "ckw" = (/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating/airless,/area/solar/starboard) "ckx" = (/turf/simulated/floor/plating/airless,/area/solar/starboard) "cky" = (/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless,/area/solar/starboard) -"ckz" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/window/brigdoor{dir = 8; name = "Engine Waste"; req_access = null; req_access_txt = "0"; req_one_access_txt = "10;24"},/obj/machinery/atmospherics/portables_connector,/turf/simulated/floor/plating{icon_state = "platebot"},/area/engineering/engine_waste) -"ckA" = (/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "EngineEmitterPortWest"; layer = 3.3; name = "Engine Waste Handling Access"},/turf/simulated/floor/plating,/area/engineering/engine_room) -"ckB" = (/obj/structure/grille,/obj/structure/grille,/turf/space,/area/space) +"ckz" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/engineering/locker_room) +"ckA" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/engineering/locker_room) +"ckB" = (/turf/simulated/floor,/area/engineering/locker_room) "ckC" = (/obj/machinery/door/window/northright{name = "Xenoflora Containment"; req_access_txt = "47"},/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology/xenoflora_storage) "ckD" = (/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology/xenoflora_storage) "ckE" = (/obj/structure/sign/biohazard,/turf/simulated/wall/r_wall,/area/rnd/xenobiology) @@ -5971,35 +5971,35 @@ "ckQ" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "solar_xeno_airlock"; name = "interior access button"; pixel_x = -25; pixel_y = -25; req_access_txt = "10;13"},/obj/machinery/atmospherics/pipe/manifold/visible{dir = 8},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/starboardsolar) "ckR" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = -32},/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/machinery/portable_atmospherics/canister/air/airlock,/turf/simulated/floor/plating{dir = 1; icon_state = "warnplatecorner"},/area/maintenance/starboardsolar) "ckS" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating/airless,/area/solar/starboard) -"ckT" = (/obj/machinery/atmospherics/unary/heat_exchanger{dir = 8},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/engineering/engine_waste) +"ckT" = (/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor,/area/engineering/locker_room) "ckU" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating/airless,/area/solar/starboard) "ckV" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating/airless,/area/solar/starboard) -"ckW" = (/obj/machinery/atmospherics/unary/heat_exchanger{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 5},/area/engineering/engine_waste) +"ckW" = (/obj/machinery/power/smes/buildable{charge = 0; RCon_tag = "Substation - Engineering"},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/structure/cable/green,/turf/simulated/floor/plating,/area/maintenance/substation/engineering) "ckX" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "xenobio1"; name = "Containment Blast Doors"; opacity = 0},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/rnd/xenobiology) -"ckY" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/visible/purple{dir = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engineering/engine_waste) -"ckZ" = (/obj/machinery/door/window/brigdoor{dir = 8; name = "Engine Waste"; req_access = null; req_access_txt = "0"; req_one_access_txt = "10;24"},/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 9},/turf/simulated/floor/plating{icon_state = "platebot"},/area/engineering/engine_waste) -"cla" = (/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engineering/engine_room) +"ckY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plating,/area/maintenance/research_port) +"ckZ" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/visible/cyan,/obj/machinery/meter{frequency = 1443; id = "mair_out_meter"; name = "Mixed Air Tank Out"},/turf/simulated/wall/r_wall,/area/engineering/atmos) +"cla" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/visible/cyan,/obj/machinery/meter{frequency = 1443; id = "mair_in_meter"; name = "Mixed Air Tank In"},/turf/simulated/wall/r_wall,/area/engineering/atmos) "clb" = (/obj/item/weapon/wirecutters,/obj/effect/decal/cleanable/blood/oil/streak{amount = 0},/turf/simulated/floor/plating,/area/construction) -"clc" = (/obj/machinery/atmospherics/pipe/manifold/visible/yellow{dir = 8},/turf/simulated/floor/plating,/area/engineering/engine_room) -"cld" = (/obj/machinery/atmospherics/pipe/manifold/visible/yellow{dir = 4},/obj/machinery/meter,/turf/simulated/floor/plating,/area/engineering/engine_room) -"cle" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/engineering/engine_room) +"clc" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/engineering/atmos) +"cld" = (/obj/structure/grille,/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/wall/r_wall,/area/engineering/atmos) +"cle" = (/obj/structure/grille,/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/visible/green,/turf/simulated/wall/r_wall,/area/engineering/atmos) "clf" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "nuke_shuttle_dock_inner"; locked = 1; name = "Docking Port Airlock"; req_access = null; req_access_txt = "13"},/turf/simulated/floor/plating,/area/hallway/secondary/entry/port) -"clg" = (/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/valve/digital/open{dir = 4},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/engineering/engine_room) -"clh" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 6},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplatecorner"},/area/engineering/engine_room) +"clg" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/atmos_control) +"clh" = (/obj/structure/sign/securearea{pixel_x = -32},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/atmos_control) "cli" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor,/area/medical/virologyaccess) -"clj" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{tag = "icon-intact (SOUTHWEST)"; icon_state = "intact"; dir = 10},/turf/simulated/floor/plating{dir = 1; icon_state = "warnplatecorner"},/area/engineering/engine_room) -"clk" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/turf/simulated/floor/plating,/area/engineering/engine_room) -"cll" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/heat_exchanging{tag = "icon-intact (SOUTHWEST)"; icon_state = "intact"; dir = 10},/turf/space,/area/space) -"clm" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/heat_exchanging{dir = 4},/turf/space,/area/space) -"cln" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact (EAST)"},/turf/simulated/floor/plating,/area/engineering/engine_room) +"clj" = (/obj/machinery/door/window/eastright{name = "Engineering Delivery"; req_one_access_txt = "11;24"},/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 6; icon_state = "intact"; tag = "icon-intact-f (SOUTHEAST)"},/turf/simulated/floor{icon_state = "delivery"},/area/engineering/foyer) +"clk" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=4"; freq = 1400; location = "Engineering"},/obj/structure/plasticflaps{opacity = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor{icon_state = "bot"},/area/engineering/foyer) +"cll" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/obj/machinery/light,/turf/simulated/floor,/area/engineering/foyer) +"clm" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/obj/machinery/atmospherics/pipe/simple/hidden/purple,/turf/simulated/floor{dir = 4; icon_state = "loadingarea"},/area/engineering/foyer) +"cln" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/turf/simulated/floor,/area/engineering/foyer) "clo" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "xenobio6"; name = "Containment Blast Doors"; opacity = 0},/obj/structure/disposalpipe/segment,/obj/structure/cable/green,/turf/simulated/floor/plating,/area/rnd/xenobiology) "clp" = (/obj/machinery/door/window/southright{name = "Containment Pen"; req_access_txt = "47"},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "xenobio5"; name = "Containment Blast Doors"; opacity = 0},/turf/simulated/floor/engine,/area/rnd/xenobiology) "clq" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "xenobio5"; name = "Containment Blast Doors"; opacity = 0},/obj/structure/cable/green,/turf/simulated/floor/plating,/area/rnd/xenobiology) "clr" = (/obj/structure/table,/obj/item/stack/cable_coil/random,/obj/item/stack/cable_coil/random,/obj/machinery/light{dir = 8},/turf/simulated/floor,/area/storage/art) "cls" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "xenobio5"; name = "Containment Blast Doors"; opacity = 0},/obj/structure/disposalpipe/segment,/obj/structure/cable/green,/turf/simulated/floor/plating,/area/rnd/xenobiology) -"clt" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan{dir = 8},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engineering/engine_room) +"clt" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/obj/machinery/requests_console{announcementConsole = 0; department = "Engineering"; departmentType = 4; name = "Engineering RC"; pixel_x = 0; pixel_y = -32},/turf/simulated/floor,/area/engineering/foyer) "clu" = (/obj/machinery/door/window/southright{name = "Containment Pen"; req_access_txt = "47"},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "xenobio4"; name = "Containment Blast Doors"; opacity = 0},/turf/simulated/floor/engine,/area/rnd/xenobiology) -"clv" = (/obj/machinery/power/emitter{anchored = 1; id = "EngineEmitter"; state = 2},/obj/structure/cable/cyan,/turf/simulated/floor/plating,/area/engineering/engine_room) +"clv" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/obj/machinery/computer/guestpass{pixel_y = -28},/turf/simulated/floor,/area/engineering/foyer) "clw" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 0},/turf/simulated/wall,/area/maintenance/substation/engineering) "clx" = (/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 = 1; icon_state = "warnplatecorner"},/area/maintenance/engineering) "cly" = (/obj/structure/table,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/item/weapon/circular_saw{pixel_y = 8},/obj/item/weapon/scalpel,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) @@ -6048,48 +6048,48 @@ "cmp" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "solar_xeno_inner"; locked = 1; name = "Engineering External Access"; req_access = null; req_access_txt = "13"},/obj/machinery/atmospherics/pipe/simple/visible,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "cmq" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "cmr" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) -"cms" = (/obj/machinery/atmospherics/pipe/manifold/visible/yellow{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engineering/engine_room) -"cmt" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/structure/lattice,/turf/space,/area/space) -"cmu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact (EAST)"},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "EngineRadiatorViewport"; name = "Engine Radiator Viewport Shutter"; opacity = 0},/turf/simulated/floor/plating,/area/engineering/engine_room) -"cmv" = (/obj/machinery/atmospherics/pipe/manifold4w/visible/cyan,/obj/machinery/meter,/turf/simulated/floor/plating,/area/engineering/engine_room) -"cmw" = (/obj/machinery/atmospherics/unary/heat_exchanger{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 6},/area/engineering/engine_waste) -"cmx" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/visible/purple,/obj/machinery/meter{id = "wloop_atm_meter"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engineering/engine_waste) -"cmy" = (/obj/machinery/atmospherics/pipe/manifold/visible/purple,/obj/machinery/meter,/turf/simulated/floor/plating,/area/engineering/engine_waste) +"cms" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 9; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/turf/simulated/floor,/area/engineering/foyer) +"cmt" = (/obj/machinery/door/window/eastright{name = "Engineering Reception Desk"; req_one_access_txt = "10;24"},/obj/machinery/light,/turf/simulated/floor,/area/engineering/foyer) +"cmu" = (/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/engineering/foyer) +"cmv" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor{dir = 8; icon_state = "yellowcorner"},/area/engineering/foyer) +"cmw" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/engineering/foyer) +"cmx" = (/obj/structure/disposalpipe/junction{icon_state = "pipe-j2"; dir = 2},/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/engineering/foyer) +"cmy" = (/obj/structure/closet/secure_closet/atmos_personal,/obj/item/weapon/tank/emergency_oxygen/engi,/turf/simulated/floor,/area/engineering/locker_room) "cmz" = (/obj/structure/grille,/obj/structure/window/reinforced,/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/construction) "cmA" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor,/area/construction) -"cmB" = (/obj/machinery/atmospherics/unary/heat_exchanger{dir = 8},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 10},/area/engineering/engine_waste) -"cmC" = (/obj/machinery/atmospherics/pipe/manifold/visible/purple,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engineering/engine_room) -"cmD" = (/obj/machinery/atmospherics/omni/filter{use_power = 0; tag_east = 1; tag_north = 4; tag_south = 0; tag_west = 2},/turf/simulated/floor/plating,/area/engineering/engine_room) -"cmE" = (/obj/machinery/door/window/brigdoor{dir = 8; name = "Engine Waste"; req_access = null; req_access_txt = "0"; req_one_access_txt = "10;24"},/obj/structure/window/reinforced,/obj/machinery/atmospherics/binary/pump{dir = 8; name = "waste pump"},/turf/simulated/floor/plating{icon_state = "platebot"},/area/engineering/engine_waste) -"cmF" = (/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "EngineEmitterPortWest"; layer = 3.3; name = "Engine Waste Handling Access"},/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/turf/simulated/floor/plating,/area/engineering/engine_room) -"cmG" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/turf/simulated/floor/plating,/area/engineering/engine_room) -"cmH" = (/obj/machinery/atmospherics/pipe/manifold/visible/yellow,/turf/simulated/floor/plating,/area/engineering/engine_room) -"cmI" = (/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/engineering/engine_room) -"cmJ" = (/turf/simulated/wall/r_wall,/area/engineering/storage) -"cmK" = (/obj/machinery/constructable_frame/machine_frame,/turf/simulated/floor,/area/engineering/workshop) -"cmL" = (/obj/effect/decal/cleanable/blood/oil{amount = 0},/turf/simulated/floor,/area/engineering/workshop) -"cmM" = (/turf/simulated/floor,/area/engineering/workshop) -"cmN" = (/obj/structure/table,/obj/item/weapon/storage/belt/utility,/obj/item/weapon/storage/belt/utility,/obj/item/stack/cable_coil,/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = 3},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor,/area/engineering/workshop) -"cmO" = (/obj/structure/stool/bed/chair,/obj/effect/landmark/start{name = "Station Engineer"},/turf/simulated/floor,/area/engineering/workshop) -"cmP" = (/obj/structure/disposalpipe/segment,/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,/area/engineering) -"cmQ" = (/turf/simulated/floor,/area/engineering) -"cmR" = (/turf/simulated/wall/r_wall,/area/engineering/workshop) -"cmS" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor,/area/engineering) +"cmB" = (/obj/structure/closet/secure_closet/atmos_personal,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/item/weapon/tank/emergency_oxygen/engi,/turf/simulated/floor,/area/engineering/locker_room) +"cmC" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor,/area/engineering/locker_room) +"cmD" = (/obj/structure/table,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/turf/simulated/floor,/area/engineering/locker_room) +"cmE" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table,/obj/machinery/camera{c_tag = "Engineering Locker Room"; dir = 1; network = list("SS13")},/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/turf/simulated/floor,/area/engineering/locker_room) +"cmF" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "10;24"},/obj/machinery/door/firedoor,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/substation/engineering) +"cmG" = (/obj/machinery/camera{c_tag = "Medbay Operating Theatre 1"; dir = 8; network = list("SS13")},/obj/machinery/button/holosign{pixel_x = 24; pixel_y = 2},/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "whiteredcorner"},/area/medical/surgery) +"cmH" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/obj/structure/extinguisher_cabinet{pixel_x = 25; pixel_y = 0},/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/medical/surgeryprep) +"cmI" = (/obj/machinery/button/holosign{pixel_x = -24; pixel_y = 2},/obj/machinery/camera{c_tag = "Medbay Operating Theatre 2"; dir = 4; network = list("SS13")},/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/simulated/floor{dir = 1; icon_state = "whiteredcorner"},/area/medical/surgery2) +"cmJ" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/atmos{name = "Atmospherics Maintenance"; req_access_txt = "12;24"},/obj/machinery/atmospherics/pipe/simple/visible/supply,/turf/simulated/floor,/area/maintenance/atmos_control) +"cmK" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/atmos{name = "Atmospherics Maintenance"; req_access_txt = "12;24"},/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,/turf/simulated/floor,/area/maintenance/atmos_control) +"cmL" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan,/turf/simulated/wall/r_wall,/area/engineering/atmos) +"cmM" = (/turf/simulated/wall/r_wall,/area/engineering/atmos) +"cmN" = (/turf/simulated/wall/r_wall,/area/engineering/atmos/monitoring) +"cmO" = (/obj/machinery/door/airlock/maintenance{name = "Atmospherics Maintenance Access"; req_access_txt = "12;24"},/obj/machinery/atmospherics/pipe/simple/hidden/purple,/turf/simulated/floor,/area/engineering/atmos) +"cmP" = (/obj/machinery/door/airlock/glass_atmos{name = "Atmospherics Monitoring Room"; req_access_txt = "24"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/engineering/atmos/monitoring) +"cmQ" = (/turf/simulated/wall/r_wall,/area/engineering/engineering_monitoring) +"cmR" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/engineering/engineering_monitoring) +"cmS" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Monitoring Room"; req_access_txt = "11"},/turf/simulated/floor,/area/engineering/engineering_monitoring) "cmT" = (/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating/airless,/area/solar/starboard) "cmU" = (/obj/machinery/door/blast/regular{dir = 4; id = "disvent"; name = "Incinerator Vent"},/turf/simulated/floor/engine/vacuum,/area/maintenance/incinerator) "cmV" = (/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/hallway/secondary/entry/port) "cmW" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; external_pressure_bound = 140; external_pressure_bound_default = 140; icon_state = "map_vent_out"; use_power = 1; pressure_checks = 0; pressure_checks_default = 0},/turf/simulated/floor/plating/airless,/area/maintenance/incinerator) -"cmX" = (/obj/machinery/portable_atmospherics/powered/scrubber,/turf/simulated/floor,/area/engineering/atmos/storage) +"cmX" = (/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area/engineering/engineering_monitoring) "cmY" = (/obj/machinery/door/blast/regular{desc = "By gods, release the hounds!"; id = "xenobioout6"; name = "Containment Release"},/turf/simulated/floor/engine,/area/rnd/xenobiology) "cmZ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating/airless,/area/solar/starboard) "cna" = (/obj/structure/cable/yellow,/turf/simulated/floor/plating/airless,/area/solar/starboard) "cnb" = (/obj/structure/table,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/item/stack/medical/advanced/bruise_pack,/obj/item/weapon/retractor,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "cnc" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "cnd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) -"cne" = (/obj/machinery/atmospherics/pipe/manifold/hidden/yellow{tag = "icon-map (WEST)"; icon_state = "map"; dir = 8},/turf/simulated/wall/r_wall,/area/engineering/atmos/storage) +"cne" = (/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/engineering) "cnf" = (/obj/structure/stool/bed/chair/comfy/black{dir = 4},/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/medical/surgeryprep) -"cng" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;47"},/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,/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/maintenance/research_shuttle) -"cnh" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/engineering) +"cng" = (/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/engineering) +"cnh" = (/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area/engineering/workshop) "cni" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery2) "cnj" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery2) "cnk" = (/obj/structure/table,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/item/stack/medical/advanced/bruise_pack,/obj/item/weapon/retractor,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery2) @@ -6106,26 +6106,26 @@ "cnv" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "cnw" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "solar_xeno_pump"; tag_exterior_door = "solar_xeno_outer"; frequency = 1379; id_tag = "solar_xeno_airlock"; tag_interior_door = "solar_xeno_inner"; pixel_x = 25; req_access_txt = "13"; tag_chamber_sensor = "solar_xeno_sensor"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "solar_xeno_sensor"; pixel_x = 25; pixel_y = 12},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1379; id_tag = "solar_xeno_pump"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/warning_stripes,/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "cnx" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/obj/structure/lattice,/turf/space,/area/space) -"cny" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor,/area/engineering/atmos) -"cnz" = (/turf/simulated/floor,/area/engineering/atmos) +"cny" = (/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/engineering) +"cnz" = (/turf/simulated/wall/r_wall,/area/engineering/workshop) "cnA" = (/obj/machinery/light{dir = 8},/turf/simulated/floor,/area/construction) "cnB" = (/obj/item/device/flashlight,/turf/simulated/floor,/area/construction) "cnC" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor,/area/construction) "cnD" = (/turf/simulated/wall/r_wall,/area/construction) -"cnE" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/atmos{name = "Atmospherics Maintenance"; req_access_txt = "12;24"},/turf/simulated/floor,/area/engineering/atmos/storage) -"cnF" = (/turf/simulated/floor,/area/engineering/atmos/storage) -"cnG" = (/obj/machinery/atmospherics/portables_connector,/turf/simulated/floor,/area/engineering/atmos) -"cnH" = (/obj/machinery/atmospherics/binary/pump{dir = 1},/turf/simulated/floor,/area/engineering/atmos) -"cnI" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor,/area/engineering/atmos) -"cnJ" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/machinery/camera{c_tag = "Atmospherics South East"; dir = 1},/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/atmos) -"cnK" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow,/turf/simulated/floor,/area/engineering/atmos) -"cnL" = (/obj/machinery/atmospherics/binary/pump,/turf/simulated/floor,/area/engineering/atmos) -"cnM" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 10},/turf/simulated/floor,/area/engineering/atmos) -"cnN" = (/obj/machinery/atmospherics/pipe/manifold/visible/purple,/obj/machinery/meter,/turf/simulated/floor,/area/engineering/atmos) -"cnO" = (/obj/machinery/atmospherics/pipe/manifold/visible/purple{dir = 1},/turf/simulated/floor,/area/engineering/atmos) -"cnP" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/turf/simulated/floor,/area/engineering/atmos) -"cnQ" = (/obj/machinery/atmospherics/pipe/simple/visible/green,/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/turf/simulated/floor,/area/engineering/atmos) -"cnR" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/obj/machinery/meter,/turf/simulated/floor,/area/engineering/atmos) +"cnE" = (/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 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/engineering/workshop) +"cnF" = (/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"},/turf/simulated/floor,/area/engineering/workshop) +"cnG" = (/turf/simulated/wall/r_wall,/area/engineering/locker_room) +"cnH" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plating,/area/engineering/atmos) +"cnI" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/engineering/atmos) +"cnJ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/engineering/atmos) +"cnK" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor/plating,/area/engineering/atmos) +"cnL" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/floor/plating,/area/engineering/atmos) +"cnM" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/visible/green{dir = 8},/turf/simulated/floor/plating,/area/engineering/atmos) +"cnN" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/green{tag = "icon-intact (SOUTHWEST)"; icon_state = "intact"; dir = 10},/turf/simulated/floor/plating,/area/engineering/atmos) +"cnO" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/manifold/visible/green{dir = 8},/turf/simulated/floor/plating,/area/engineering/atmos) +"cnP" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plating,/area/engineering/atmos) +"cnQ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/engineering/atmos) +"cnR" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/visible/green{tag = "icon-intact (SOUTHWEST)"; icon_state = "intact"; dir = 10},/turf/simulated/floor/plating,/area/engineering/atmos) "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) "cnU" = (/obj/structure/table,/obj/item/weapon/bonesetter,/obj/item/weapon/bonegel,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) @@ -6154,40 +6154,40 @@ "cor" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "xenobio2"; name = "Containment Blast Doors"; opacity = 0},/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen"; req_access_txt = "55"},/turf/simulated/floor/engine,/area/rnd/xenobiology) "cos" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "cot" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "solar_xeno_outer"; locked = 1; name = "Engineering External Access"; req_access = null; req_access_txt = "10;13"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) -"cou" = (/obj/machinery/atmospherics/omni/filter{use_power = 1; tag_east = 1; tag_north = 4; tag_south = 7; tag_west = 2},/turf/simulated/floor,/area/engineering/atmos) -"cov" = (/obj/machinery/atmospherics/omni/filter{use_power = 1; tag_east = 1; tag_north = 3; tag_south = 6; tag_west = 2},/turf/simulated/floor,/area/engineering/atmos) -"cow" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 6},/turf/simulated/floor,/area/engineering/atmos) -"cox" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/engineering/atmos) -"coy" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/turf/simulated/wall/r_wall,/area/engineering/atmos/storage) +"cou" = (/obj/machinery/meter{frequency = 1443; id = "dloop_atm_meter"; name = "Distribution Loop"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/visible/supply{dir = 8},/turf/simulated/floor,/area/engineering/atmos) +"cov" = (/obj/machinery/meter{frequency = 1443; id = "wloop_atm_meter"; name = "Waste Loop"},/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,/turf/simulated/floor,/area/engineering/atmos) +"cow" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/obj/machinery/meter,/obj/machinery/firealarm{pixel_y = 24},/turf/simulated/floor,/area/engineering/atmos) +"cox" = (/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/obj/machinery/atmospherics/pipe/simple/visible/supply{dir = 10},/turf/simulated/floor,/area/engineering/atmos) +"coy" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/engineering/atmos/monitoring) "coz" = (/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/hallway/secondary/entry/port) -"coA" = (/obj/machinery/space_heater,/obj/machinery/light/small,/turf/simulated/floor,/area/engineering/atmos/storage) -"coB" = (/obj/machinery/space_heater,/turf/simulated/floor,/area/engineering/atmos/storage) -"coC" = (/turf/simulated/wall/r_wall,/area/engineering/atmos/storage) -"coD" = (/obj/machinery/door/airlock/maintenance{name = "Atmospherics Maintenance Access"; req_access_txt = "12;24"},/obj/structure/disposalpipe/segment,/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/engineering/atmos/storage) -"coE" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/engineering/atmos) -"coF" = (/obj/machinery/atmospherics/pipe/manifold/visible/yellow,/obj/machinery/meter,/turf/simulated/floor,/area/engineering/atmos) -"coG" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 9},/turf/simulated/floor,/area/engineering/atmos) -"coH" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/turf/simulated/floor,/area/engineering/atmos) -"coI" = (/obj/machinery/requests_console{announcementConsole = 0; department = "Engineering"; departmentType = 4; name = "Engineering RC"; pixel_x = 0; pixel_y = -32},/turf/simulated/floor,/area/engineering/workshop) -"coJ" = (/obj/structure/table,/obj/item/device/radio/off{pixel_y = 6},/obj/item/device/radio/off{pixel_x = 6; pixel_y = 4},/obj/item/device/radio/off{pixel_x = -6; pixel_y = 4},/obj/item/device/radio/off,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor,/area/engineering/workshop) -"coK" = (/obj/structure/table,/obj/machinery/light,/obj/item/weapon/wrench,/obj/item/device/flashlight,/obj/machinery/cell_charger,/turf/simulated/floor,/area/engineering/workshop) -"coL" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical{pixel_y = 5},/obj/item/weapon/storage/toolbox/mechanical{pixel_y = 5},/obj/item/weapon/storage/toolbox/electrical,/turf/simulated/floor,/area/engineering/workshop) -"coM" = (/obj/structure/table,/obj/item/device/floor_painter,/obj/item/device/multitool{pixel_x = 5},/obj/item/device/t_scanner,/obj/item/weapon/reagent_containers/spray/cleaner,/turf/simulated/floor,/area/engineering/workshop) -"coN" = (/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/floor,/area/engineering/atmos) -"coO" = (/obj/machinery/atmospherics/binary/passive_gate,/turf/simulated/floor,/area/engineering/atmos) -"coP" = (/obj/machinery/atmospherics/pipe/simple/visible/green,/turf/simulated/floor,/area/engineering/atmos) -"coQ" = (/obj/machinery/atmospherics/pipe/simple/visible/purple,/obj/machinery/meter,/turf/simulated/floor,/area/engineering/atmos) -"coR" = (/obj/machinery/atmospherics/pipe/manifold4w/visible/green,/turf/simulated/floor,/area/engineering/atmos) -"coS" = (/obj/machinery/atmospherics/pipe/simple/visible/green{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor,/area/engineering/atmos) -"coT" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/purple{tag = "icon-intact (NORTH)"; icon_state = "intact"; dir = 1},/turf/simulated/floor,/area/engineering/atmos) -"coU" = (/obj/machinery/atmospherics/binary/pump{dir = 4},/turf/simulated/floor,/area/engineering/atmos) -"coV" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/visible/green{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor,/area/engineering/atmos) -"coW" = (/obj/machinery/atmospherics/pipe/manifold/visible/green{dir = 1},/turf/simulated/floor,/area/engineering/atmos) -"coX" = (/obj/machinery/atmospherics/pipe/simple/visible/purple,/obj/machinery/atmospherics/pipe/simple/visible/green{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor,/area/engineering/atmos) -"coY" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/engineering/atmos) -"coZ" = (/obj/machinery/atmospherics/pipe/simple/visible/green{tag = "icon-intact (SOUTHEAST)"; icon_state = "intact"; dir = 6},/turf/simulated/floor,/area/engineering/atmos) -"cpa" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/structure/disposalpipe/segment,/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/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/engineering) -"cpb" = (/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/engineering) +"coA" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/floor,/area/engineering/atmos) +"coB" = (/obj/machinery/firealarm{pixel_x = 32; pixel_y = 24},/turf/simulated/floor,/area/engineering/atmos/monitoring) +"coC" = (/obj/machinery/computer/general_air_control{frequency = 1443; level = 3; name = "Distribution and Waste Monitor"; sensors = list("mair_in_meter" = "Mixed Air In", "air_sensor" = "Mixed Air Supply Tank", "mair_out_meter" = "Mixed Air Out", "dloop_atm_meter" = "Distribution Loop", "wloop_atm_meter" = "Engine Waste")},/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/engineering/atmos/monitoring) +"coD" = (/obj/machinery/computer/atmoscontrol,/turf/simulated/floor,/area/engineering/atmos/monitoring) +"coE" = (/obj/structure/table/reinforced,/turf/simulated/floor,/area/engineering/engineering_monitoring) +"coF" = (/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/simulated/floor,/area/engineering/engineering_monitoring) +"coG" = (/obj/machinery/computer/atmos_alert,/obj/machinery/alarm{pixel_y = 22},/turf/simulated/floor,/area/engineering/engineering_monitoring) +"coH" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor,/area/engineering) +"coI" = (/turf/simulated/floor,/area/engineering) +"coJ" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/structure/sign/directions/medical{dir = 1; icon_state = "direction_med"; pixel_x = 30; pixel_y = 4; tag = "icon-direction_med (NORTH)"},/obj/structure/sign/directions/evac{dir = 8; icon_state = "direction_evac"; pixel_x = 30; pixel_y = -4; tag = "icon-direction_evac (WEST)"},/turf/simulated/floor,/area/engineering) +"coK" = (/obj/machinery/vending/engivend,/turf/simulated/floor,/area/engineering/workshop) +"coL" = (/obj/machinery/vending/tool,/turf/simulated/floor,/area/engineering/workshop) +"coM" = (/obj/structure/closet/toolcloset,/obj/item/device/flashlight,/turf/simulated/floor,/area/engineering/workshop) +"coN" = (/obj/structure/closet/toolcloset,/obj/machinery/light{dir = 1},/obj/item/device/flashlight,/turf/simulated/floor,/area/engineering/workshop) +"coO" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/engineering/workshop) +"coP" = (/turf/simulated/floor,/area/engineering/workshop) +"coQ" = (/obj/machinery/shield_gen/external,/turf/simulated/floor/plating,/area/engineering/storage) +"coR" = (/turf/simulated/wall/r_wall,/area/engineering/storage) +"coS" = (/obj/machinery/shield_gen,/obj/machinery/light{dir = 1},/turf/simulated/floor/plating,/area/engineering/storage) +"coT" = (/obj/machinery/power/rad_collector,/turf/simulated/floor/plating,/area/engineering/storage) +"coU" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/engineering/atmos) +"coV" = (/obj/machinery/atmospherics/valve/digital/open{name = "Mixed Air Outlet Valve"},/turf/simulated/floor{dir = 9; icon_state = "arrival"},/area/engineering/atmos) +"coW" = (/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/engineering/atmos) +"coX" = (/obj/machinery/atmospherics/valve/digital/open{name = "Mixed Air Inlet Valve"},/turf/simulated/floor{icon_state = "arrival"; dir = 5},/area/engineering/atmos) +"coY" = (/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/engineering/atmos) +"coZ" = (/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/floor{dir = 9; icon_state = "blue"},/area/engineering/atmos) +"cpa" = (/obj/machinery/atmospherics/valve/digital/open{name = "Oxygen Outlet Valve"},/turf/simulated/floor{dir = 5; icon_state = "blue"},/area/engineering/atmos) +"cpb" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "o2_in"; name = "Oxygen Supply Control"; output_tag = "o2_out"; sensors = list("o2_sensor" = "Tank")},/obj/machinery/camera{c_tag = "Atmospherics North West"; dir = 2},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/machinery/light{dir = 1},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/engineering/atmos) "cpc" = (/obj/machinery/status_display,/turf/simulated/wall,/area/medical/surgery) "cpd" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Operating Theatre 1 Storage"; req_access_txt = "45"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "cpe" = (/obj/machinery/light{dir = 8},/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -27},/obj/structure/closet/wardrobe/medic_white,/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/medical/surgeryprep) @@ -6195,55 +6195,55 @@ "cpg" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Operating Theatre 2 Storage"; req_access_txt = "45"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery2) "cph" = (/obj/machinery/status_display,/turf/simulated/wall,/area/medical/surgery2) "cpi" = (/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/maintenance/medbay) -"cpj" = (/obj/structure/disposalpipe/segment,/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/power/sensor{name = "Powernet Sensor - Atmospherics Subgrid"; name_tag = "Atmospherics Subgrid"},/obj/structure/cable/cyan{d2 = 4; icon_state = "0-4"},/obj/structure/cable/cyan,/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engineering/atmos/storage) -"cpk" = (/obj/structure/filingcabinet/chestdrawer,/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor{dir = 1; icon_state = "whitered"},/area/assembly/robotics) +"cpj" = (/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/floor{icon_state = "red"; dir = 9},/area/engineering/atmos) +"cpk" = (/obj/machinery/atmospherics/binary/pump,/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/engineering/atmos) "cpl" = (/turf/simulated/floor/engine,/area/rnd/xenobiology) "cpm" = (/mob/living/carbon/slime,/turf/simulated/floor/engine,/area/rnd/xenobiology) -"cpn" = (/turf/simulated/wall/r_wall,/area/engineering) +"cpn" = (/obj/machinery/atmospherics/valve/digital/open{name = "Nitrogen Outlet Valve"},/turf/simulated/floor{icon_state = "red"; dir = 5},/area/engineering/atmos) "cpo" = (/obj/machinery/door/window/northleft{dir = 4; name = "Containment Pen"; req_access_txt = "55"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/rnd/xenobiology) "cpp" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) "cpq" = (/obj/machinery/atmospherics/pipe/simple/hidden/purple,/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) "cpr" = (/obj/machinery/door/airlock/research{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "xeno_airlock_interior"; locked = 1; name = "Xenobiology Internal Airlock"; req_access_txt = "55"},/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/purple,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) -"cps" = (/obj/machinery/portable_atmospherics/canister/phoron,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engineering/atmos) -"cpt" = (/obj/machinery/portable_atmospherics/canister/sleeping_agent,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engineering/atmos) -"cpu" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engineering/atmos) -"cpv" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engineering/atmos) -"cpw" = (/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engineering/atmos) -"cpx" = (/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/engineering/atmos) -"cpy" = (/obj/machinery/embedded_controller/radio/airlock/access_controller{tag_exterior_door = "incinerator_airlock_exterior"; id_tag = "incinerator_access_control"; tag_interior_door = "incinerator_airlock_interior"; name = "Incinerator Access Console"; pixel_x = -6; pixel_y = -26; req_access_txt = "12"},/obj/machinery/button/ignition{id = "Incinerator"; pixel_x = 6; pixel_y = -24},/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor{dir = 2; icon_state = "warningcorner"; tag = "icon-warningcorner (WEST)"},/area/maintenance/incinerator) -"cpz" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/engineering/atmos) -"cpA" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{tag = "icon-intact (NORTH)"; icon_state = "intact"; dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor,/area/engineering/atmos) -"cpB" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "10;24"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/engineering) -"cpC" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering) -"cpD" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment,/obj/machinery/camera{c_tag = "Atmospherics Substation"; dir = 4},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplatecorner"},/area/engineering/atmos/storage) +"cps" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "n2_in"; name = "Nitrogen Supply Control"; output_tag = "n2_out"; sensors = list("n2_sensor" = "Tank")},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/engineering/atmos) +"cpt" = (/turf/simulated/floor,/area/engineering/atmos) +"cpu" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/binary/pump,/turf/simulated/floor,/area/engineering/atmos) +"cpv" = (/obj/structure/reagent_dispensers/fueltank,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = 25},/turf/simulated/floor,/area/engineering/atmos) +"cpw" = (/obj/structure/reagent_dispensers/watertank,/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/engineering/atmos) +"cpx" = (/obj/structure/table,/obj/item/device/t_scanner,/obj/item/device/multitool{pixel_x = 5},/obj/item/device/radio/headset/headset_eng,/obj/item/weapon/cartridge/atmos,/obj/item/weapon/cartridge/atmos,/obj/item/device/pipe_painter,/obj/machinery/requests_console{department = "Atmospherics"; departmentType = 4; name = "Atmos RC"; pixel_x = 0; pixel_y = 28},/turf/simulated/floor,/area/engineering/atmos) +"cpy" = (/obj/structure/dispenser,/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/engineering/atmos) +"cpz" = (/obj/structure/table,/obj/item/weapon/wrench,/obj/machinery/camera{c_tag = "Atmospherics North East"; dir = 6},/obj/structure/sign/atmosplaque{pixel_x = 0; pixel_y = 32},/obj/machinery/cell_charger,/turf/simulated/floor,/area/engineering/atmos) +"cpA" = (/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/engineering/atmos) +"cpB" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor,/area/engineering/atmos) +"cpC" = (/obj/structure/table,/obj/machinery/newscaster{pixel_y = 30},/obj/machinery/light{dir = 1},/obj/item/stack/sheet/metal{amount = 50; pixel_x = 2; pixel_y = 2},/obj/item/clothing/gloves/black,/obj/item/clothing/gloves/black,/obj/item/weapon/storage/belt/utility/atmostech,/obj/item/weapon/storage/belt/utility/atmostech,/turf/simulated/floor,/area/engineering/atmos) +"cpD" = (/obj/structure/disposalpipe/sortjunction/flipped{dir = 1; sortType = "Atmospherics"; name = "Atmospherics"},/obj/machinery/atmospherics/pipe/simple/visible/universal,/turf/simulated/floor,/area/engineering/atmos) "cpE" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/turf/space,/area/space) -"cpF" = (/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/engineering/atmos/storage) +"cpF" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/universal,/turf/simulated/floor,/area/engineering/atmos) "cpG" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/yellow,/turf/space,/area/space) -"cpH" = (/obj/machinery/alarm{pixel_y = 22},/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/engineering) +"cpH" = (/obj/machinery/atmospherics/binary/pump/on{dir = 1},/turf/simulated/floor,/area/engineering/atmos) "cpI" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/turf/space,/area/space) -"cpJ" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = 25},/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/engineering) +"cpJ" = (/obj/machinery/atmospherics/pipe/simple/visible/universal,/turf/simulated/floor,/area/engineering/atmos) "cpK" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor{icon_state = "warningcorner"; dir = 1},/area/hallway/secondary/entry/aft) -"cpL" = (/obj/machinery/light{dir = 1},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor,/area/engineering) -"cpM" = (/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/engineering) -"cpN" = (/obj/machinery/portable_atmospherics/canister/sleeping_agent,/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/engineering/atmos) -"cpO" = (/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/engineering/atmos) +"cpL" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/engineering/atmos/monitoring) +"cpM" = (/obj/machinery/atmospherics/binary/pump/on,/turf/simulated/floor,/area/engineering/atmos) +"cpN" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor,/area/engineering/atmos/monitoring) +"cpO" = (/obj/machinery/computer/atmos_alert,/turf/simulated/floor,/area/engineering/atmos/monitoring) "cpP" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/space,/area/space) -"cpQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/atmos) +"cpQ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/engineering/engineering_monitoring) "cpR" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/green,/turf/space,/area/space) "cpS" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor,/area/hallway/secondary/entry/port) -"cpT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/portable_atmospherics/canister/phoron,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engineering/atmos) -"cpU" = (/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/engineering/atmos) -"cpV" = (/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/engineering/atmos) -"cpW" = (/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/engineering/atmos) -"cpX" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "10;24"},/turf/simulated/floor/plating,/area/engineering) -"cpY" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor,/area/engineering) -"cpZ" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering) -"cqa" = (/obj/machinery/firealarm{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},/turf/simulated/floor,/area/engineering) -"cqb" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/turf/simulated/floor,/area/engineering) -"cqc" = (/obj/machinery/light{dir = 1},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor,/area/engineering) -"cqd" = (/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/engineering) -"cqe" = (/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/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/engineering) -"cqf" = (/obj/machinery/camera{c_tag = "Engineering Hallway South East"; dir = 1},/turf/simulated/floor,/area/engineering) +"cpT" = (/obj/structure/stool/bed/chair/office/dark{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/engineering/atmos/monitoring) +"cpU" = (/obj/structure/stool/bed/chair/office/dark{dir = 4},/obj/effect/landmark/start{name = "Station Engineer"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor,/area/engineering/engineering_monitoring) +"cpV" = (/obj/machinery/camera{c_tag = "Engineering Monitoring"; dir = 5},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor,/area/engineering/engineering_monitoring) +"cpW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/status_display{pixel_y = 32},/turf/simulated/floor/plating,/area/engineering/engineering_monitoring) +"cpX" = (/obj/machinery/computer/security/engineering,/turf/simulated/floor{dir = 8; icon_state = "floorgrimecaution"},/area/engineering/engineering_monitoring) +"cpY" = (/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/engineering) +"cpZ" = (/obj/structure/disposalpipe/segment,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor,/area/engineering) +"cqa" = (/obj/structure/extinguisher_cabinet{pixel_x = 25},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/engineering/workshop) +"cqb" = (/obj/machinery/shield_capacitor,/turf/simulated/floor/plating,/area/engineering/storage) +"cqc" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/engineering/atmos) +"cqd" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan{dir = 8},/obj/machinery/meter,/turf/simulated/floor,/area/engineering/atmos) +"cqe" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan{tag = "icon-map (EAST)"; icon_state = "map"; dir = 4},/obj/machinery/meter,/turf/simulated/floor,/area/engineering/atmos) +"cqf" = (/obj/machinery/atmospherics/binary/pump{dir = 8},/turf/simulated/floor,/area/engineering/atmos) "cqg" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/engineering) "cqh" = (/obj/structure/closet/crate/freezer,/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/surgery) "cqi" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/surgery) @@ -6263,7 +6263,7 @@ "cqw" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/medical/virology) "cqx" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/medical/virology) "cqy" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/medical/virology) -"cqz" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/engineering) +"cqz" = (/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/floor,/area/engineering/atmos) "cqA" = (/obj/structure/table/reinforced,/obj/machinery/door_control{id = "xenobio3"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access_txt = "55"},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/rnd/xenobiology) "cqB" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) "cqC" = (/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 5},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) @@ -6272,40 +6272,40 @@ "cqF" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/purple{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/rnd/xenobiology) "cqG" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "whitegreencorner"},/area/rnd/xenobiology) "cqH" = (/obj/machinery/newscaster{pixel_y = 32},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) -"cqI" = (/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,/area/engineering) -"cqJ" = (/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/engineering) -"cqK" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/engineering) +"cqI" = (/obj/machinery/atmospherics/pipe/simple/visible/green,/turf/simulated/floor,/area/engineering/atmos) +"cqJ" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/turf/simulated/floor,/area/engineering/atmos) +"cqK" = (/obj/structure/stool/bed/chair{dir = 1},/obj/effect/landmark/start{name = "Atmospheric Technician"},/turf/simulated/floor,/area/engineering/atmos) "cqL" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/obj/structure/lattice,/turf/space,/area/space) -"cqM" = (/obj/structure/sign/securearea,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/wall/r_wall,/area/engineering) +"cqM" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor,/area/engineering/atmos) "cqN" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 9},/turf/space,/area/space) "cqO" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1380; master_tag = "centcom_shuttle_dock_airlock"; name = "interior access button"; pixel_x = -30; pixel_y = 25; req_access_txt = "0"; req_one_access_txt = "13"},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4; icon_state = "map"; tag = "icon-manifold-f (EAST)"},/turf/simulated/floor,/area/hallway/secondary/entry/aft) -"cqP" = (/turf/simulated/wall/r_wall,/area/engineering/atmos) -"cqQ" = (/obj/machinery/camera{c_tag = "Engineering Hallway South West"; dir = 1; pixel_x = 22},/turf/simulated/floor,/area/engineering) -"cqR" = (/obj/machinery/door/airlock/maintenance{name = "Drone Fabrication"; req_one_access_txt = "10;24"},/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/door/firedoor/border_only,/turf/simulated/floor/plating,/area/engineering/drone_fabrication) -"cqS" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor,/area/engineering) +"cqP" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/turf/simulated/floor,/area/engineering/atmos) +"cqQ" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/obj/effect/landmark/start{name = "Atmospheric Technician"},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor,/area/engineering/atmos/monitoring) +"cqR" = (/obj/machinery/computer/general_air_control{frequency = 1441; name = "Tank Monitor"; sensors = list("n2_sensor" = "Nitrogen", "o2_sensor" = "Oxygen", "co2_sensor" = "Carbon Dioxide", "tox_sensor" = "Toxins", "n2o_sensor" = "Nitrous Oxide", "waste_sensor" = "Gas Mix Tank")},/turf/simulated/floor,/area/engineering/atmos/monitoring) +"cqS" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/engineering/engineering_monitoring) "cqT" = (/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/security/prison) -"cqU" = (/obj/machinery/atmospherics/valve/digital{name = "N2O Outlet Valve"},/turf/simulated/floor{icon_state = "escape"; dir = 6},/area/engineering/atmos) -"cqV" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "n2o_in"; name = "Nitrous Oxide Supply Control"; output_tag = "n2o_out"; sensors = list("n2o_sensor" = "Tank")},/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/machinery/light,/turf/simulated/floor{dir = 7; icon_state = "escape"},/area/engineering/atmos) -"cqW" = (/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/floor{dir = 10; icon_state = "escape"},/area/engineering/atmos) -"cqX" = (/obj/machinery/atmospherics/binary/pump{dir = 1},/obj/machinery/light,/turf/simulated/floor,/area/engineering/atmos) -"cqY" = (/obj/machinery/atmospherics/valve/digital{name = "Phoron Outlet Valve"},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/engineering/atmos) -"cqZ" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "tox_in"; name = "Phoron Supply Control"; output_tag = "tox_out"; sensors = list("tox_sensor" = "Tank")},/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/machinery/light,/turf/simulated/floor{icon_state = "warning"},/area/engineering/atmos) -"cra" = (/obj/machinery/camera{c_tag = "Atmospherics South West"; dir = 1},/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/engineering/atmos) -"crb" = (/obj/machinery/light,/obj/machinery/atmospherics/binary/pump{dir = 1},/turf/simulated/floor,/area/engineering/atmos) -"crc" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{tag = "icon-intact (NORTH)"; icon_state = "intact"; dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/engineering/atmos) -"crd" = (/obj/machinery/atmospherics/valve/digital{name = "Gas Mix Outlet Valve"},/turf/simulated/floor{icon_state = "green"; dir = 6},/area/engineering/atmos) -"cre" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "waste_in"; name = "Gas Mix Tank Control"; output_tag = "waste_out"; sensors = list("waste_sensor" = "Tank")},/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/machinery/light,/turf/simulated/floor{dir = 2; icon_state = "green"},/area/engineering/atmos) -"crf" = (/obj/machinery/atmospherics/valve/digital{name = "Gas Mix Inlet Valve"},/obj/machinery/camera{c_tag = "Atmospherics South"; dir = 1},/turf/simulated/floor{dir = 10; icon_state = "green"},/area/engineering/atmos) -"crg" = (/obj/machinery/light,/turf/simulated/floor,/area/engineering/atmos) -"crh" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "co2_in"; name = "Carbon Dioxide Supply Control"; output_tag = "co2_out"; sensors = list("co2_sensor" = "Tank")},/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/machinery/light,/turf/simulated/floor{dir = 2; icon_state = "yellow"},/area/engineering/atmos) -"cri" = (/obj/machinery/atmospherics/valve/digital{name = "CO2 Outlet Valve"},/turf/simulated/floor{dir = 6; icon_state = "yellow"},/area/engineering/atmos) -"crj" = (/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/floor{dir = 10; icon_state = "yellow"},/area/engineering/atmos) -"crk" = (/obj/structure/stool/bed/chair,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/engineering/drone_fabrication) -"crl" = (/obj/machinery/ai_status_display{layer = 4; pixel_y = 32},/obj/machinery/light{dir = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 5},/area/engineering/drone_fabrication) -"crm" = (/obj/machinery/light{dir = 1},/obj/effect/landmark{name = "JoinLateCyborg"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/engineering/drone_fabrication) -"crn" = (/obj/machinery/computer/cryopod/robot{pixel_y = 30},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/engineering/drone_fabrication) -"cro" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/engineering/drone_fabrication) -"crp" = (/obj/machinery/cryopod/robot/right,/turf/simulated/floor/plating,/area/engineering/drone_fabrication) +"cqU" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/atmos/monitoring) +"cqV" = (/obj/structure/stool/bed/chair/office/dark{dir = 4},/obj/effect/landmark/start{name = "Station Engineer"},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor,/area/engineering/engineering_monitoring) +"cqW" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor,/area/engineering/engineering_monitoring) +"cqX" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/engineering/engineering_monitoring) +"cqY" = (/obj/machinery/computer/station_alert,/turf/simulated/floor,/area/engineering/engineering_monitoring) +"cqZ" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/engineering) +"cra" = (/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor,/area/engineering/workshop) +"crb" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor,/area/engineering/workshop) +"crc" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/engineering/workshop) +"crd" = (/obj/machinery/power/port_gen/pacman{anchored = 1},/turf/simulated/floor/plating,/area/engineering/storage) +"cre" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor/plating,/area/engineering/storage) +"crf" = (/turf/simulated/floor/plating,/area/engineering/storage) +"crg" = (/obj/structure/closet/crate/solar,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plating,/area/engineering/storage) +"crh" = (/obj/machinery/atmospherics/pipe/manifold/visible/green{dir = 8},/obj/machinery/meter,/turf/simulated/floor,/area/engineering/atmos) +"cri" = (/obj/machinery/atmospherics/pipe/simple/visible/purple,/obj/machinery/atmospherics/pipe/simple/visible/green{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor,/area/engineering/atmos) +"crj" = (/obj/machinery/atmospherics/pipe/simple/visible/green{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor,/area/engineering/atmos) +"crk" = (/obj/machinery/atmospherics/pipe/simple/visible/green,/obj/machinery/atmospherics/pipe/simple/visible/green{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor,/area/engineering/atmos) +"crl" = (/obj/machinery/atmospherics/pipe/simple/visible/green{tag = "icon-intact (SOUTHWEST)"; icon_state = "intact"; dir = 10},/turf/simulated/floor,/area/engineering/atmos) +"crm" = (/obj/machinery/atmospherics/binary/pump{dir = 4},/turf/simulated/floor,/area/engineering/atmos) +"crn" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/turf/simulated/floor,/area/engineering/atmos) +"cro" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 6},/turf/simulated/floor,/area/engineering/atmos) +"crp" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor,/area/engineering/atmos) "crq" = (/obj/structure/closet,/obj/item/weapon/storage/backpack,/turf/simulated/floor/plating,/area/maintenance/engineering) "crr" = (/obj/machinery/light/small{dir = 8},/obj/structure/closet/crate/freezer,/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/surgery) "crs" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/surgery) @@ -6332,41 +6332,41 @@ "crN" = (/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) "crO" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) "crP" = (/obj/structure/lattice,/obj/structure/grille,/turf/space,/area/space) -"crQ" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 0; pixel_y = 0},/turf/simulated/wall/r_wall,/area/engineering/engine_monitoring) -"crR" = (/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/engineering/engine_monitoring) -"crS" = (/obj/machinery/door/airlock/maintenance_hatch{name = "SMES Access"; req_access_txt = "11"},/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,/area/engineering/engine_smes) -"crT" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 0},/turf/simulated/wall/r_wall,/area/engineering/engine_smes) -"crU" = (/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,/turf/simulated/floor/plating,/area/engineering/drone_fabrication) -"crV" = (/obj/machinery/recharge_station,/obj/machinery/light_switch{pixel_x = 0; pixel_y = 27},/turf/simulated/floor/plating,/area/engineering/drone_fabrication) -"crW" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/engineering/engine_airlock) -"crX" = (/obj/machinery/door/airlock/maintenance_hatch{icon_state = "door_closed"; locked = 0; name = "Engine Access"; req_access_txt = "0"; req_one_access_txt = "11;24"},/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,/area/engineering/engine_airlock) +"crQ" = (/obj/machinery/atmospherics/pipe/manifold/visible/purple,/turf/simulated/floor,/area/engineering/atmos) +"crR" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/cyan,/turf/simulated/floor,/area/engineering/atmos) +"crS" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/pipedispenser,/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 9},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor,/area/engineering/atmos) +"crT" = (/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/engineering/atmos/monitoring) +"crU" = (/obj/machinery/computer/security/engineering{network = list("Engineering","Power Alarms","Atmosphere Alarms","Fire Alarms","Atmospherics")},/turf/simulated/floor,/area/engineering/atmos/monitoring) +"crV" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor,/area/engineering/atmos/monitoring) +"crW" = (/obj/structure/table/reinforced,/obj/machinery/light,/obj/item/device/flashlight,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor,/area/engineering/engineering_monitoring) +"crX" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/engineering/engineering_monitoring) "crY" = (/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/plating,/area/maintenance/engineering) -"crZ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/engineering/engine_monitoring) -"csa" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engine Monitoring Room"; req_access_txt = "11"},/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,/area/engineering/engine_monitoring) -"csb" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{external_pressure_bound = 140; external_pressure_bound_default = 140; icon_state = "map_vent_out"; pressure_checks = 0; pressure_checks_default = 0},/turf/simulated/floor/plating/airless,/area/engineering/atmos) -"csc" = (/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},/turf/simulated/floor/plating,/area/engineering/atmos) -"csd" = (/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/purple,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/engineering/atmos) -"cse" = (/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 = 5},/turf/simulated/floor/plating,/area/engineering/atmos) -"csf" = (/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/manifold/visible/yellow{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/engineering/atmos) -"csg" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/plating,/area/engineering/atmos) -"csh" = (/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/purple,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/engineering/atmos) -"csi" = (/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/yellow{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/engineering/atmos) -"csj" = (/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/engineering/atmos) -"csk" = (/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/engineering/atmos) +"crZ" = (/obj/machinery/computer/power_monitor,/turf/simulated/floor,/area/engineering/engineering_monitoring) +"csa" = (/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,/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/engineering) +"csb" = (/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/turf/simulated/floor,/area/engineering) +"csc" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/engineering/workshop) +"csd" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/engineering) +"cse" = (/obj/structure/closet/secure_closet/engineering_welding,/obj/item/clothing/glasses/welding,/obj/item/clothing/glasses/welding,/turf/simulated/floor,/area/engineering/workshop) +"csf" = (/obj/structure/closet/secure_closet/engineering_welding,/obj/item/clothing/glasses/welding,/obj/item/clothing/glasses/welding,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/engineering/workshop) +"csg" = (/obj/structure/closet/secure_closet/engineering_electrical,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/engineering/workshop) +"csh" = (/obj/structure/closet/secure_closet/engineering_electrical,/turf/simulated/floor,/area/engineering/workshop) +"csi" = (/obj/machinery/light_switch{pixel_x = 27},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/engineering/workshop) +"csj" = (/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/engineering/storage) +"csk" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/engineering/storage) "csl" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "xenobio2"; name = "Containment Blast Doors"; opacity = 0},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/rnd/xenobiology) -"csm" = (/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/engineering/atmos) -"csn" = (/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/engineering/atmos) -"cso" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/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,/area/engineering/engine_monitoring) -"csp" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor,/area/engineering/engine_monitoring) -"csq" = (/obj/structure/closet/radiation,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = 28},/turf/simulated/floor,/area/engineering/engine_monitoring) -"csr" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/ai_status_display{layer = 4; pixel_y = 32},/turf/simulated/floor,/area/engineering/engine_monitoring) -"css" = (/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor,/area/engineering/engine_airlock) -"cst" = (/obj/structure/closet/radiation,/obj/item/clothing/glasses/meson,/obj/item/clothing/glasses/meson,/obj/machinery/camera{c_tag = "Engine Room Airlock"; dir = 2; network = list("SS13","Supermatter")},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor,/area/engineering/engine_airlock) -"csu" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/engineering/engine_airlock) -"csv" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plating,/area/engineering/drone_fabrication) -"csw" = (/obj/machinery/computer/drone_control,/turf/simulated/floor/plating,/area/engineering/drone_fabrication) -"csx" = (/obj/machinery/computer/security/engineering{name = "Drone Monitoring Cameras"; network = list("Engineering")},/turf/simulated/floor/plating,/area/engineering/drone_fabrication) -"csy" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = 25},/obj/structure/table,/obj/item/stack/cable_coil,/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = 3},/obj/item/device/multitool{pixel_x = 5},/obj/item/clothing/gloves/yellow,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor,/area/engineering/engine_smes) +"csm" = (/obj/structure/closet/crate,/obj/item/stack/sheet/mineral/phoron{amount = 25},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = 28},/turf/simulated/floor/plating,/area/engineering/storage) +"csn" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/turf/simulated/floor,/area/engineering/atmos) +"cso" = (/obj/machinery/atmospherics/pipe/simple/visible/purple,/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact (EAST)"},/turf/simulated/floor,/area/engineering/atmos) +"csp" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact (EAST)"},/turf/simulated/floor,/area/engineering/atmos) +"csq" = (/obj/machinery/atmospherics/omni/mixer{active_power_usage = 7500; use_power = 1; tag_east = 1; tag_east_con = 0.79; tag_north = 1; tag_north_con = 0.21; tag_west = 2},/turf/simulated/floor,/area/engineering/atmos) +"csr" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact (EAST)"},/obj/machinery/meter,/turf/simulated/floor,/area/engineering/atmos) +"css" = (/obj/machinery/atmospherics/pipe/simple/visible/green{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/meter,/turf/simulated/floor,/area/engineering/atmos) +"cst" = (/obj/machinery/atmospherics/pipe/manifold/visible/green,/turf/simulated/floor,/area/engineering/atmos) +"csu" = (/obj/machinery/atmospherics/pipe/manifold/visible/green{tag = "icon-map (EAST)"; icon_state = "map"; dir = 4},/turf/simulated/floor,/area/engineering/atmos) +"csv" = (/obj/machinery/atmospherics/pipe/manifold/visible/purple{dir = 8},/obj/machinery/meter,/turf/simulated/floor,/area/engineering/atmos) +"csw" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/floor,/area/engineering/atmos) +"csx" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 1},/obj/machinery/meter,/turf/simulated/floor,/area/engineering/atmos) +"csy" = (/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/simulated/floor,/area/engineering/atmos) "csz" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/surgery) "csA" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/surgery) "csB" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/surgery) @@ -6384,37 +6384,37 @@ "csN" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "csO" = (/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "csP" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) -"csQ" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor,/area/engineering/engine_smes) +"csQ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/engineering/atmos/monitoring) "csR" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/window/reinforced,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/rnd/xenobiology) "csS" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) -"csT" = (/obj/machinery/light_switch{pixel_x = 0; pixel_y = 27},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor,/area/engineering/engine_smes) -"csU" = (/obj/structure/table,/obj/machinery/microwave{pixel_x = -2; pixel_y = 5},/turf/simulated/floor,/area/engineering/engine_monitoring) -"csV" = (/obj/structure/grille,/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/wall/r_wall,/area/engineering/atmos) -"csW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/engineering/atmos) -"csX" = (/obj/structure/grille,/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/visible/yellow,/turf/simulated/wall/r_wall,/area/engineering/atmos) -"csY" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/visible/yellow,/obj/machinery/meter,/turf/simulated/wall/r_wall,/area/engineering/atmos) -"csZ" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/visible/green,/obj/machinery/meter,/turf/simulated/wall/r_wall,/area/engineering/atmos) -"cta" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engineering/drone_fabrication) +"csT" = (/obj/structure/disposalpipe/segment,/obj/machinery/pipedispenser/disposal,/obj/structure/window/reinforced,/turf/simulated/floor,/area/engineering/atmos) +"csU" = (/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/engineering/atmos/monitoring) +"csV" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/engineering/atmos/monitoring) +"csW" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Monitoring Room"; req_access_txt = "11"},/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,/area/engineering/engineering_monitoring) +"csX" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor,/area/engineering) +"csY" = (/obj/machinery/camera{c_tag = "Engineering Hallway North"; dir = 4; network = list("SS13")},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor,/area/engineering) +"csZ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/engineering/workshop) +"cta" = (/obj/structure/window/reinforced{dir = 1},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/structure/table/reinforced,/turf/simulated/floor,/area/engineering/workshop) "ctb" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "xenobio1"; name = "Containment Blast Doors"; opacity = 0},/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen"; req_access_txt = "55"},/turf/simulated/floor/engine,/area/rnd/xenobiology) -"ctc" = (/obj/effect/decal/remains/robot,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engineering/drone_fabrication) -"ctd" = (/obj/structure/table,/obj/item/stack/cable_coil,/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = 3},/turf/simulated/floor,/area/engineering/engine_smes) -"cte" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/engineering/drone_fabrication) -"ctf" = (/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/disposal,/turf/simulated/floor/plating,/area/engineering/drone_fabrication) -"ctg" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor,/area/engineering/engine_monitoring) -"cth" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/engineering/engine_smes) -"cti" = (/turf/simulated/floor,/area/engineering/engine_smes) -"ctj" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor,/area/engineering/engine_monitoring) -"ctk" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/engineering/engine_monitoring) -"ctl" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/engineering/engine_monitoring) -"ctm" = (/turf/simulated/floor,/area/engineering/engine_monitoring) -"ctn" = (/obj/machinery/shower{icon_state = "shower"; dir = 8},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor,/area/engineering/engine_airlock) -"cto" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor,/area/engineering/engine_airlock) +"ctc" = (/obj/structure/window/reinforced{dir = 1},/obj/item/stack/rods{amount = 50},/obj/item/weapon/airlock_electronics,/obj/item/weapon/airlock_electronics,/obj/item/weapon/cell/high,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/table/reinforced,/turf/simulated/floor,/area/engineering/workshop) +"ctd" = (/obj/structure/window/reinforced{dir = 1},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/table/reinforced,/turf/simulated/floor,/area/engineering/workshop) +"cte" = (/obj/structure/window/reinforced{dir = 1},/obj/item/stack/sheet/plasteel{amount = 10},/obj/item/stack/sheet/plasteel{amount = 10},/obj/item/stack/sheet/mineral/plastic{amount = 10},/obj/structure/table/reinforced,/turf/simulated/floor,/area/engineering/workshop) +"ctf" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/camera{c_tag = "Engineering Workshop"; dir = 8; network = list("SS13"); pixel_y = -23},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/engineering/workshop) +"ctg" = (/obj/machinery/light_switch{pixel_x = -27; pixel_y = 0},/obj/machinery/camera{c_tag = "Engineering Hard Storage"; dir = 4; network = list("SS13")},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/engineering/storage) +"cth" = (/obj/structure/closet/crate,/obj/item/weapon/circuitboard/smes,/obj/item/weapon/circuitboard/smes,/obj/item/weapon/smes_coil,/obj/item/weapon/smes_coil,/obj/item/weapon/smes_coil,/obj/item/weapon/smes_coil,/turf/simulated/floor/plating,/area/engineering/storage) +"cti" = (/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/engineering/atmos) +"ctj" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact (EAST)"},/obj/machinery/atmospherics/binary/pump{dir = 1},/turf/simulated/floor,/area/engineering/atmos) +"ctk" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/simulated/floor,/area/engineering/atmos) +"ctl" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan,/obj/machinery/meter,/turf/simulated/floor,/area/engineering/atmos) +"ctm" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/engineering/atmos) +"ctn" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/engineering/atmos) +"cto" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor,/area/engineering) "ctp" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "surgeryobs"; name = "Operating Theatre Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/surgeryobs) "ctq" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "surgeryobs"; name = "Operating Theatre Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/surgeryobs) "ctr" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "surgeryobs"; name = "Operating Theatre Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/surgeryobs) "cts" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) -"ctt" = (/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/obj/machinery/light_switch{pixel_x = -27; pixel_y = 0},/obj/machinery/airlock_sensor/airlock_exterior{id_tag = "eng_al_ext_snsr"; layer = 3.3; master_tag = "engine_room_airlock"; pixel_y = -22; req_access_txt = "10"},/obj/structure/table,/obj/item/weapon/book/manual/supermatter_engine,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor,/area/engineering/engine_airlock) -"ctu" = (/obj/structure/stool/bed/chair{dir = 1},/obj/effect/landmark/start{name = "Atmospheric Technician"},/turf/simulated/floor,/area/engineering/atmos) +"ctt" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_atmos{name = "Atmospherics"; req_access_txt = "24"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/engineering/atmos) +"ctu" = (/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/engineering) "ctv" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/engineering) "ctw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/meter,/turf/simulated/floor/plating,/area/maintenance/engineering) "ctx" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{name = "Operating Theatre 1 Maintenance Access"; req_access_txt = "45"},/turf/simulated/floor/plating,/area/medical/surgery) @@ -6445,35 +6445,35 @@ "ctW" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) "ctX" = (/obj/machinery/power/solar{id = "starboardsolar"; name = "Starboard Solar Array"},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/airless{icon_state = "solarpanel"},/area/solar/starboard) "ctY" = (/turf/space,/area/syndicate_station/southwest) -"ctZ" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/turf/simulated/floor,/area/engineering/atmos) -"cua" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan{dir = 8},/obj/machinery/meter,/turf/simulated/floor,/area/engineering/atmos) +"ctZ" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor,/area/engineering) +"cua" = (/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/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/engineering) "cub" = (/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/shutters{density = 0; dir = 4; icon_state = "shutter0"; id = "surgeryobs"; name = "Operating Theatre Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/surgery) -"cuc" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan{tag = "icon-map (EAST)"; icon_state = "map"; dir = 4},/obj/machinery/meter,/turf/simulated/floor,/area/engineering/atmos) -"cud" = (/obj/machinery/atmospherics/binary/pump{dir = 8},/turf/simulated/floor,/area/engineering/atmos) -"cue" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/engineering/atmos) -"cuf" = (/turf/simulated/floor/plating,/area/engineering/storage) -"cug" = (/obj/structure/closet/crate/solar,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plating,/area/engineering/storage) -"cuh" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor/plating,/area/engineering/storage) -"cui" = (/obj/machinery/power/port_gen/pacman{anchored = 1},/turf/simulated/floor/plating,/area/engineering/storage) -"cuj" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/engineering/workshop) -"cuk" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor,/area/engineering/workshop) -"cul" = (/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor,/area/engineering/workshop) -"cum" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/engineering) -"cun" = (/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/engineering) -"cuo" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/engineering/engineering_monitoring) -"cup" = (/obj/machinery/computer/station_alert,/turf/simulated/floor,/area/engineering/engineering_monitoring) -"cuq" = (/obj/structure/stool/bed/chair/office/dark{dir = 4},/obj/effect/landmark/start{name = "Station Engineer"},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor,/area/engineering/engineering_monitoring) -"cur" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor,/area/engineering/engineering_monitoring) -"cus" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/engineering/engineering_monitoring) -"cut" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/atmos/monitoring) -"cuu" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/obj/effect/landmark/start{name = "Atmospheric Technician"},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor,/area/engineering/atmos/monitoring) -"cuv" = (/obj/machinery/computer/general_air_control{frequency = 1441; name = "Tank Monitor"; sensors = list("n2_sensor" = "Nitrogen", "o2_sensor" = "Oxygen", "co2_sensor" = "Carbon Dioxide", "tox_sensor" = "Toxins", "n2o_sensor" = "Nitrous Oxide", "waste_sensor" = "Gas Mix Tank")},/turf/simulated/floor,/area/engineering/atmos/monitoring) -"cuw" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/engineering/atmos/monitoring) -"cux" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/turf/simulated/floor,/area/engineering/atmos) -"cuy" = (/obj/machinery/atmospherics/binary/pump/on{dir = 1},/turf/simulated/floor,/area/engineering/atmos) -"cuz" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor,/area/engineering/atmos) -"cuA" = (/obj/machinery/atmospherics/binary/pump/on,/turf/simulated/floor,/area/engineering/atmos) -"cuB" = (/obj/machinery/atmospherics/valve/digital/open{name = "Mixed Air Inlet Valve"},/turf/simulated/floor{icon_state = "arrival"; dir = 5},/area/engineering/atmos) +"cuc" = (/obj/machinery/newscaster{pixel_y = 30},/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/engineering) +"cud" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/engineering) +"cue" = (/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/engineering/workshop) +"cuf" = (/obj/structure/disposalpipe/sortjunction/flipped{dir = 2; sortType = "Engineering"; name = "Engineering"},/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/engineering) +"cug" = (/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/engineering/workshop) +"cuh" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/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/engineering/workshop) +"cui" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor,/area/engineering/workshop) +"cuj" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-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/engineering/workshop) +"cuk" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/engineering/storage) +"cul" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/engineering{name = "Engineering Hard Storage"; req_access_txt = "11"},/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/engineering/storage) +"cum" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plating,/area/engineering/storage) +"cun" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/engineering/storage) +"cuo" = (/obj/machinery/power/emitter,/turf/simulated/floor/plating,/area/engineering/storage) +"cup" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow,/obj/machinery/meter,/turf/simulated/floor,/area/engineering/atmos) +"cuq" = (/obj/machinery/atmospherics/unary/freezer{dir = 2; icon_state = "freezer"},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engineering/atmos) +"cur" = (/obj/machinery/constructable_frame/machine_frame,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engineering/atmos) +"cus" = (/obj/machinery/atmospherics/unary/heater{dir = 2; icon_state = "heater"},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engineering/atmos) +"cut" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/engineering/atmos) +"cuu" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor,/area/engineering/atmos) +"cuv" = (/obj/machinery/hologram/holopad,/obj/structure/disposalpipe/sortjunction/flipped{dir = 8; sortType = "Drone Fabrication"; name = "Drone Fabrication"},/turf/simulated/floor,/area/engineering/atmos) +"cuw" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/engineering) +"cux" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_atmos{name = "Atmospherics"; req_access_txt = "24"},/turf/simulated/floor,/area/engineering/atmos) +"cuy" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light,/turf/simulated/floor,/area/engineering) +"cuz" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor,/area/engineering) +"cuA" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/turf/simulated/floor,/area/engineering) +"cuB" = (/obj/structure/disposalpipe/junction{dir = 8; icon_state = "pipe-j2"},/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,/area/engineering) "cuC" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/plating,/area/maintenance/engineering) "cuD" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/plating,/area/maintenance/engineering) "cuE" = (/obj/structure/sign/redcross{desc = "The Star of Life, a symbol of Medical Aid."; icon_state = "lifestar"; name = "Medbay"; pixel_x = 0; pixel_y = 32},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{name = "Engineering\\Medbay Maintenance"; req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/engineering) @@ -6505,37 +6505,37 @@ "cve" = (/obj/machinery/smartfridge/secure/extract,/turf/simulated/floor{dir = 2; icon_state = "whitecorner"},/area/rnd/xenobiology) "cvf" = (/obj/machinery/optable{name = "Xenobiology Operating Table"},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "whitehall"; dir = 2},/area/rnd/xenobiology) "cvg" = (/obj/machinery/computer/operating{name = "Xenobiology Operating Computer"},/turf/simulated/floor{dir = 8; icon_state = "whitecorner"},/area/rnd/xenobiology) -"cvh" = (/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/engineering/atmos) -"cvi" = (/obj/machinery/atmospherics/valve/digital/open{name = "Mixed Air Outlet Valve"},/turf/simulated/floor{dir = 9; icon_state = "arrival"},/area/engineering/atmos) -"cvj" = (/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/engineering/atmos) -"cvk" = (/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/engineering/atmos) +"cvh" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor,/area/engineering) +"cvi" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/engineering/workshop) +"cvj" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/engineering/workshop) +"cvk" = (/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/engineering/workshop) "cvl" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "xenobio3"; name = "Containment Blast Doors"; opacity = 0},/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen"; req_access_txt = "55"},/turf/simulated/floor/engine,/area/rnd/xenobiology) "cvm" = (/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "virologyquar"; name = "Virology Emergency Quarantine Blast Doors"; opacity = 0},/turf/simulated/floor{icon_state = "delivery"},/area/medical/virologyaccess) "cvn" = (/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "virologyquar"; name = "Virology Emergency Quarantine Blast Doors"; opacity = 0},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "delivery"},/area/medical/virologyaccess) -"cvo" = (/obj/structure/table,/obj/item/weapon/wrench,/obj/machinery/camera{c_tag = "Atmospherics North East"; dir = 6},/obj/structure/sign/atmosplaque{pixel_x = 0; pixel_y = 32},/obj/machinery/cell_charger,/turf/simulated/floor,/area/engineering/atmos) -"cvp" = (/obj/structure/dispenser,/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/engineering/atmos) -"cvq" = (/obj/structure/table,/obj/item/device/t_scanner,/obj/item/device/multitool{pixel_x = 5},/obj/item/device/radio/headset/headset_eng,/obj/item/weapon/cartridge/atmos,/obj/item/weapon/cartridge/atmos,/obj/item/device/pipe_painter,/obj/machinery/requests_console{department = "Atmospherics"; departmentType = 4; name = "Atmos RC"; pixel_x = 0; pixel_y = 28},/turf/simulated/floor,/area/engineering/atmos) -"cvr" = (/obj/structure/reagent_dispensers/watertank,/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/engineering/atmos) -"cvs" = (/obj/structure/reagent_dispensers/fueltank,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = 25},/turf/simulated/floor,/area/engineering/atmos) +"cvo" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/engineering{name = "Engineering Hard Storage"; req_access_txt = "11"},/turf/simulated/floor,/area/engineering/storage) +"cvp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/engineering/storage) +"cvq" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow,/turf/simulated/floor,/area/engineering/atmos) +"cvr" = (/obj/machinery/atmospherics/pipe/cap/visible{color = "#ffcc00"},/turf/simulated/floor,/area/engineering/atmos) +"cvs" = (/obj/machinery/power/apc/super{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable/cyan{d2 = 8; icon_state = "0-8"},/turf/simulated/floor,/area/engineering/atmos) "cvt" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "solar_xeno_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = "10;13"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating/airless,/area/solar/starboard) -"cvu" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/binary/pump,/turf/simulated/floor,/area/engineering/atmos) -"cvv" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "n2_in"; name = "Nitrogen Supply Control"; output_tag = "n2_out"; sensors = list("n2_sensor" = "Tank")},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/engineering/atmos) -"cvw" = (/obj/machinery/atmospherics/valve/digital/open{name = "Nitrogen Outlet Valve"},/turf/simulated/floor{icon_state = "red"; dir = 5},/area/engineering/atmos) -"cvx" = (/obj/machinery/atmospherics/binary/pump,/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/engineering/atmos) -"cvy" = (/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/floor{icon_state = "red"; dir = 9},/area/engineering/atmos) -"cvz" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "o2_in"; name = "Oxygen Supply Control"; output_tag = "o2_out"; sensors = list("o2_sensor" = "Tank")},/obj/machinery/camera{c_tag = "Atmospherics North West"; dir = 2},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/machinery/light{dir = 1},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/engineering/atmos) -"cvA" = (/obj/machinery/atmospherics/valve/digital/open{name = "Oxygen Outlet Valve"},/turf/simulated/floor{dir = 5; icon_state = "blue"},/area/engineering/atmos) -"cvB" = (/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/floor{dir = 9; icon_state = "blue"},/area/engineering/atmos) -"cvC" = (/obj/structure/stool/bed/chair/office/dark{dir = 4},/obj/effect/landmark/start{name = "Station Engineer"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor,/area/engineering/engineering_monitoring) -"cvD" = (/obj/machinery/camera{c_tag = "Engineering Monitoring"; dir = 5},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor,/area/engineering/engineering_monitoring) -"cvE" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/status_display{pixel_y = 32},/turf/simulated/floor/plating,/area/engineering/engineering_monitoring) -"cvF" = (/obj/machinery/computer/security/engineering,/turf/simulated/floor{dir = 8; icon_state = "floorgrimecaution"},/area/engineering/engineering_monitoring) -"cvG" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor,/area/engineering/atmos/monitoring) -"cvH" = (/obj/machinery/computer/atmos_alert,/turf/simulated/floor,/area/engineering/atmos/monitoring) -"cvI" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/engineering/engineering_monitoring) -"cvJ" = (/obj/structure/stool/bed/chair/office/dark{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/engineering/atmos/monitoring) -"cvK" = (/obj/machinery/atmospherics/pipe/simple/visible/universal,/turf/simulated/floor,/area/engineering/atmos) -"cvL" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor,/area/engineering/atmos) +"cvu" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/cyan{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/engineering/atmos) +"cvv" = (/turf/simulated/wall/r_wall,/area/engineering/atmos/storage) +"cvw" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/turf/simulated/floor{dir = 8; icon_state = "yellow"},/area/engineering) +"cvx" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 6; icon_state = "intact"; tag = "icon-intact-f (SOUTHEAST)"},/turf/simulated/wall/r_wall,/area/engineering/atmos/storage) +"cvy" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor,/area/engineering) +"cvz" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor,/area/engineering) +"cvA" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor,/area/engineering/workshop) +"cvB" = (/obj/effect/decal/cleanable/blood/oil/streak{amount = 0},/turf/simulated/floor,/area/engineering/workshop) +"cvC" = (/obj/structure/reagent_dispensers/fueltank,/obj/machinery/newscaster{pixel_x = 28; pixel_y = 3},/turf/simulated/floor,/area/engineering/workshop) +"cvD" = (/obj/machinery/portable_atmospherics/canister/phoron,/turf/simulated/floor/plating,/area/engineering/storage) +"cvE" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/plating,/area/engineering/storage) +"cvF" = (/obj/machinery/shieldgen,/turf/simulated/floor/plating,/area/engineering/storage) +"cvG" = (/obj/machinery/shieldwallgen,/turf/simulated/floor/plating,/area/engineering/storage) +"cvH" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/vending/wallmed1{name = "Emergency NanoMed"; pixel_x = -7; pixel_y = -32; req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 7; pixel_y = -32},/turf/simulated/floor,/area/rnd/xenobiology) +"cvI" = (/obj/machinery/atmospherics/pipe/simple/visible/purple,/obj/machinery/meter,/turf/simulated/floor,/area/engineering/atmos) +"cvJ" = (/obj/machinery/atmospherics/pipe/manifold/visible/purple{dir = 8},/turf/simulated/floor,/area/engineering/atmos) +"cvK" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/turf/simulated/floor,/area/engineering/atmos) +"cvL" = (/obj/machinery/atmospherics/pipe/manifold4w/visible/yellow,/turf/simulated/floor,/area/engineering/atmos) "cvM" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/engineering) "cvN" = (/turf/simulated/wall,/area/maintenance/incinerator) "cvO" = (/obj/machinery/door/airlock/maintenance{name = "Incinerator Access"; req_access_txt = null; req_one_access_txt = "5;12"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/maintenance/incinerator) @@ -6562,27 +6562,27 @@ "cwj" = (/obj/machinery/power/solar{id = "starboardsolar"; name = "Starboard Solar Array"},/obj/structure/cable/yellow,/turf/simulated/floor/airless{icon_state = "solarpanel"},/area/solar/starboard) "cwk" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; external_pressure_bound = 140; external_pressure_bound_default = 140; icon_state = "map_vent_out"; use_power = 1; pressure_checks = 0; pressure_checks_default = 0},/turf/simulated/floor/plating/airless,/area/rnd/xenobiology) "cwl" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "xenobio3"; name = "Containment Blast Doors"; opacity = 0},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/rnd/xenobiology) -"cwm" = (/obj/structure/table,/obj/machinery/newscaster{pixel_y = 30},/obj/machinery/light{dir = 1},/obj/item/stack/sheet/metal{amount = 50; pixel_x = 2; pixel_y = 2},/obj/item/clothing/gloves/black,/obj/item/clothing/gloves/black,/obj/item/weapon/storage/belt/utility/atmostech,/obj/item/weapon/storage/belt/utility/atmostech,/turf/simulated/floor,/area/engineering/atmos) +"cwm" = (/obj/machinery/atmospherics/pipe/manifold/visible/yellow,/obj/machinery/meter,/turf/simulated/floor,/area/engineering/atmos) "cwn" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating/airless,/area/solar/port) -"cwo" = (/obj/structure/disposalpipe/sortjunction/flipped{dir = 1; sortType = "Atmospherics"; name = "Atmospherics"},/obj/machinery/atmospherics/pipe/simple/visible/universal,/turf/simulated/floor,/area/engineering/atmos) -"cwp" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/universal,/turf/simulated/floor,/area/engineering/atmos) -"cwq" = (/obj/machinery/shield_capacitor,/turf/simulated/floor/plating,/area/engineering/storage) +"cwo" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/obj/machinery/meter,/turf/simulated/floor,/area/engineering/atmos) +"cwp" = (/obj/machinery/atmospherics/valve/digital{dir = 4},/turf/simulated/floor,/area/engineering/atmos) +"cwq" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/turf/simulated/floor,/area/engineering/atmos) "cwr" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating/airless,/area/solar/port) -"cws" = (/obj/machinery/power/rad_collector,/turf/simulated/floor/plating,/area/engineering/storage) -"cwt" = (/obj/structure/extinguisher_cabinet{pixel_x = 25},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/engineering/workshop) -"cwu" = (/obj/structure/disposalpipe/segment,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor,/area/engineering) -"cwv" = (/obj/machinery/light_switch{pixel_x = -27; pixel_y = 0},/obj/machinery/camera{c_tag = "Engineering Hard Storage"; dir = 4; network = list("SS13")},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/engineering/storage) -"cww" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/camera{c_tag = "Engineering Workshop"; dir = 8; network = list("SS13"); pixel_y = -23},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/engineering/workshop) -"cwx" = (/obj/structure/closet/crate,/obj/item/weapon/circuitboard/smes,/obj/item/weapon/circuitboard/smes,/obj/item/weapon/smes_coil,/obj/item/weapon/smes_coil,/obj/item/weapon/smes_coil,/obj/item/weapon/smes_coil,/turf/simulated/floor/plating,/area/engineering/storage) -"cwy" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/engineering/storage) -"cwz" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/engineering) -"cwA" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/engineering/workshop) -"cwB" = (/obj/machinery/camera{c_tag = "Engineering Hallway North"; dir = 4; network = list("SS13")},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor,/area/engineering) -"cwC" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor,/area/engineering) -"cwD" = (/obj/structure/window/reinforced{dir = 1},/obj/item/stack/sheet/plasteel{amount = 10},/obj/item/stack/sheet/plasteel{amount = 10},/obj/item/stack/sheet/mineral/plastic{amount = 10},/obj/structure/table/reinforced,/turf/simulated/floor,/area/engineering/workshop) -"cwE" = (/obj/structure/window/reinforced{dir = 1},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/table/reinforced,/turf/simulated/floor,/area/engineering/workshop) -"cwF" = (/obj/structure/window/reinforced{dir = 1},/obj/item/stack/rods{amount = 50},/obj/item/weapon/airlock_electronics,/obj/item/weapon/airlock_electronics,/obj/item/weapon/cell/high,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/table/reinforced,/turf/simulated/floor,/area/engineering/workshop) -"cwG" = (/obj/structure/window/reinforced{dir = 1},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/structure/table/reinforced,/turf/simulated/floor,/area/engineering/workshop) +"cws" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/turf/simulated/floor,/area/engineering/atmos/storage) +"cwt" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/obj/machinery/door/airlock/atmos{name = "Atmospherics Maintenance"; req_access_txt = "12;24"},/turf/simulated/floor,/area/engineering/atmos/storage) +"cwu" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/obj/machinery/portable_atmospherics/powered/pump,/turf/simulated/floor,/area/engineering/atmos/storage) +"cwv" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/obj/machinery/portable_atmospherics/powered/pump,/obj/machinery/light/small{dir = 1},/turf/simulated/floor,/area/engineering/atmos/storage) +"cww" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/manifold4w/hidden/yellow,/turf/simulated/wall/r_wall,/area/engineering/atmos/storage) +"cwx" = (/obj/structure/disposalpipe/segment,/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,/area/engineering) +"cwy" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/engineering/workshop) +"cwz" = (/obj/structure/table,/obj/item/weapon/crowbar,/obj/item/clothing/gloves/black,/obj/item/clothing/gloves/black,/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor,/area/engineering/workshop) +"cwA" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor,/area/engineering/workshop) +"cwB" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor,/area/engineering/workshop) +"cwC" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/turf/simulated/floor/plating,/area/engineering/storage) +"cwD" = (/obj/structure/dispenser{oxygentanks = 0},/obj/machinery/light,/turf/simulated/floor/plating,/area/engineering/storage) +"cwE" = (/obj/machinery/atmospherics/omni/filter{use_power = 1; tag_east = 1; tag_north = 3; tag_south = 6; tag_west = 2},/turf/simulated/floor,/area/engineering/atmos) +"cwF" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/obj/machinery/meter,/turf/simulated/floor,/area/engineering/atmos) +"cwG" = (/obj/machinery/atmospherics/omni/filter{use_power = 1; tag_east = 1; tag_north = 4; tag_south = 7; tag_west = 2},/turf/simulated/floor,/area/engineering/atmos) "cwH" = (/obj/effect/decal/cleanable/blood/oil{amount = 0},/obj/effect/decal/remains/robot,/turf/simulated/floor/plating,/area/maintenance/engineering) "cwI" = (/obj/machinery/atmospherics/pipe/tank/phoron{dir = 2; volume = 3200},/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) "cwJ" = (/obj/machinery/atmospherics/pipe/tank/oxygen{dir = 2; volume = 3200},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) @@ -6613,31 +6613,31 @@ "cxi" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) "cxj" = (/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) "cxk" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) -"cxl" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/rnd/lab) +"cxl" = (/obj/machinery/atmospherics/pipe/simple/visible/green,/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/turf/simulated/floor,/area/engineering/atmos) "cxm" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/sign/deathsposal{pixel_x = 0; pixel_y = -32},/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/turf/simulated/floor{icon_state = "whitehall"; dir = 1},/area/rnd/xenobiology) "cxn" = (/obj/structure/table,/obj/item/weapon/circular_saw,/obj/item/weapon/scalpel{pixel_y = 12},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor,/area/rnd/xenobiology) -"cxo" = (/turf/simulated/wall/r_wall,/area/engineering/engineering_monitoring) -"cxp" = (/turf/simulated/wall/r_wall,/area/engineering/atmos/monitoring) -"cxq" = (/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/engineering/atmos/monitoring) -"cxr" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/engineering/atmos/monitoring) -"cxs" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Monitoring Room"; req_access_txt = "11"},/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,/area/engineering/engineering_monitoring) -"cxt" = (/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/simulated/floor,/area/engineering/atmos) -"cxu" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/floor,/area/engineering/atmos) -"cxv" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 1},/obj/machinery/meter,/turf/simulated/floor,/area/engineering/atmos) -"cxw" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/engineering/atmos/monitoring) +"cxo" = (/obj/machinery/atmospherics/pipe/manifold/visible/purple{dir = 1},/turf/simulated/floor,/area/engineering/atmos) +"cxp" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 10},/turf/simulated/floor,/area/engineering/atmos) +"cxq" = (/obj/machinery/atmospherics/pipe/manifold/visible/purple,/obj/machinery/meter,/turf/simulated/floor,/area/engineering/atmos) +"cxr" = (/obj/machinery/atmospherics/binary/pump,/turf/simulated/floor,/area/engineering/atmos) +"cxs" = (/obj/machinery/atmospherics/binary/pump{dir = 1},/turf/simulated/floor,/area/engineering/atmos) +"cxt" = (/obj/machinery/atmospherics/portables_connector,/turf/simulated/floor,/area/engineering/atmos) +"cxu" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/machinery/camera{c_tag = "Atmospherics South East"; dir = 1},/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/atmos) +"cxv" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor,/area/engineering/atmos) +"cxw" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor,/area/engineering/atmos) "cxx" = (/turf/simulated/floor/plating/airless,/area/solar/port) "cxy" = (/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless,/area/solar/port) "cxz" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless,/area/solar/port) -"cxA" = (/obj/structure/disposalpipe/segment,/obj/machinery/pipedispenser/disposal,/obj/structure/window/reinforced,/turf/simulated/floor,/area/engineering/atmos) -"cxB" = (/obj/machinery/atmospherics/pipe/manifold/visible/green{tag = "icon-map (EAST)"; icon_state = "map"; dir = 4},/turf/simulated/floor,/area/engineering/atmos) -"cxC" = (/obj/machinery/atmospherics/pipe/manifold/visible/purple{dir = 8},/obj/machinery/meter,/turf/simulated/floor,/area/engineering/atmos) -"cxD" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact (EAST)"},/turf/simulated/floor,/area/engineering/atmos) -"cxE" = (/obj/machinery/atmospherics/pipe/simple/visible/purple,/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact (EAST)"},/turf/simulated/floor,/area/engineering/atmos) -"cxF" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact (EAST)"},/obj/machinery/meter,/turf/simulated/floor,/area/engineering/atmos) -"cxG" = (/obj/machinery/atmospherics/omni/mixer{active_power_usage = 7500; use_power = 1; tag_east = 1; tag_east_con = 0.79; tag_north = 1; tag_north_con = 0.21; tag_west = 2},/turf/simulated/floor,/area/engineering/atmos) -"cxH" = (/obj/machinery/atmospherics/pipe/simple/visible/green{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/meter,/turf/simulated/floor,/area/engineering/atmos) -"cxI" = (/obj/machinery/atmospherics/pipe/manifold/visible/green,/turf/simulated/floor,/area/engineering/atmos) -"cxJ" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/turf/simulated/floor,/area/engineering/atmos) +"cxA" = (/turf/simulated/floor,/area/engineering/atmos/storage) +"cxB" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/atmos{name = "Atmospherics Maintenance"; req_access_txt = "12;24"},/turf/simulated/floor,/area/engineering/atmos/storage) +"cxC" = (/obj/machinery/portable_atmospherics/powered/scrubber,/turf/simulated/floor,/area/engineering/atmos/storage) +"cxD" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/engineering) +"cxE" = (/obj/machinery/atmospherics/pipe/manifold/hidden/yellow{tag = "icon-map (WEST)"; icon_state = "map"; dir = 8},/turf/simulated/wall/r_wall,/area/engineering/atmos/storage) +"cxF" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor,/area/engineering) +"cxG" = (/obj/structure/table,/obj/item/weapon/storage/belt/utility,/obj/item/weapon/storage/belt/utility,/obj/item/stack/cable_coil,/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = 3},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor,/area/engineering/workshop) +"cxH" = (/obj/structure/stool/bed/chair,/obj/effect/landmark/start{name = "Station Engineer"},/turf/simulated/floor,/area/engineering/workshop) +"cxI" = (/obj/machinery/constructable_frame/machine_frame,/turf/simulated/floor,/area/engineering/workshop) +"cxJ" = (/obj/effect/decal/cleanable/blood/oil{amount = 0},/turf/simulated/floor,/area/engineering/workshop) "cxK" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) "cxL" = (/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) "cxM" = (/obj/machinery/atmospherics/binary/pump,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) @@ -6662,36 +6662,36 @@ "cyf" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) "cyg" = (/obj/machinery/camera{c_tag = "Xenobiology South"; dir = 8; network = list("SS13","Research"); pixel_y = -22},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) "cyh" = (/turf/space,/area/vox_station/southeast_solars) -"cyi" = (/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/engineering/atmos/monitoring) -"cyj" = (/obj/machinery/computer/security/engineering{network = list("Engineering","Power Alarms","Atmosphere Alarms","Fire Alarms","Atmospherics")},/turf/simulated/floor,/area/engineering/atmos/monitoring) -"cyk" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor,/area/engineering/atmos/monitoring) -"cyl" = (/obj/structure/table/reinforced,/obj/machinery/light,/obj/item/device/flashlight,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor,/area/engineering/engineering_monitoring) -"cym" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/engineering/engineering_monitoring) -"cyn" = (/obj/machinery/computer/power_monitor,/turf/simulated/floor,/area/engineering/engineering_monitoring) -"cyo" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor,/area/engineering/atmos) +"cyi" = (/obj/machinery/atmospherics/binary/passive_gate,/turf/simulated/floor,/area/engineering/atmos) +"cyj" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/turf/simulated/floor,/area/engineering/atmos) +"cyk" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 9},/turf/simulated/floor,/area/engineering/atmos) +"cyl" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/engineering/atmos) +"cym" = (/obj/machinery/door/airlock/maintenance{name = "Atmospherics Maintenance Access"; req_access_txt = "12;24"},/obj/structure/disposalpipe/segment,/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/engineering/atmos/storage) +"cyn" = (/obj/machinery/space_heater,/turf/simulated/floor,/area/engineering/atmos/storage) +"cyo" = (/obj/machinery/space_heater,/obj/machinery/light/small,/turf/simulated/floor,/area/engineering/atmos/storage) "cyp" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; layer = 3.3; master_tag = "robotics_solar_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = "13"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless,/area/solar/port) -"cyq" = (/obj/machinery/atmospherics/pipe/manifold/visible/purple,/turf/simulated/floor,/area/engineering/atmos) -"cyr" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/cyan,/turf/simulated/floor,/area/engineering/atmos) -"cys" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/pipedispenser,/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 9},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor,/area/engineering/atmos) -"cyt" = (/obj/machinery/light_switch{pixel_x = 27},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/engineering/workshop) -"cyu" = (/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/engineering/storage) -"cyv" = (/obj/structure/closet/crate,/obj/item/stack/sheet/mineral/phoron{amount = 25},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = 28},/turf/simulated/floor/plating,/area/engineering/storage) -"cyw" = (/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/turf/simulated/floor,/area/engineering) -"cyx" = (/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,/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/engineering) -"cyy" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/engineering/workshop) -"cyz" = (/obj/structure/closet/secure_closet/engineering_welding,/obj/item/clothing/glasses/welding,/obj/item/clothing/glasses/welding,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/engineering/workshop) -"cyA" = (/obj/structure/closet/secure_closet/engineering_welding,/obj/item/clothing/glasses/welding,/obj/item/clothing/glasses/welding,/turf/simulated/floor,/area/engineering/workshop) -"cyB" = (/obj/structure/closet/secure_closet/engineering_electrical,/turf/simulated/floor,/area/engineering/workshop) -"cyC" = (/obj/structure/closet/secure_closet/engineering_electrical,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/engineering/workshop) -"cyD" = (/obj/machinery/atmospherics/pipe/simple/visible/green{tag = "icon-intact (SOUTHWEST)"; icon_state = "intact"; dir = 10},/turf/simulated/floor,/area/engineering/atmos) -"cyE" = (/obj/machinery/atmospherics/pipe/manifold/visible/green{dir = 8},/obj/machinery/meter,/turf/simulated/floor,/area/engineering/atmos) -"cyF" = (/obj/machinery/atmospherics/pipe/simple/visible/green,/obj/machinery/atmospherics/pipe/simple/visible/green{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor,/area/engineering/atmos) -"cyG" = (/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/engineering/workshop) -"cyH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/engineering/workshop) -"cyI" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/engineering/workshop) -"cyJ" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor,/area/engineering) -"cyK" = (/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"},/turf/simulated/floor,/area/engineering/workshop) -"cyL" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/engineering) +"cyq" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/turf/simulated/wall/r_wall,/area/engineering/atmos/storage) +"cyr" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical{pixel_y = 5},/obj/item/weapon/storage/toolbox/mechanical{pixel_y = 5},/obj/item/weapon/storage/toolbox/electrical,/turf/simulated/floor,/area/engineering/workshop) +"cys" = (/obj/structure/table,/obj/item/device/floor_painter,/obj/item/device/multitool{pixel_x = 5},/obj/item/device/t_scanner,/obj/item/weapon/reagent_containers/spray/cleaner,/turf/simulated/floor,/area/engineering/workshop) +"cyt" = (/obj/structure/table,/obj/item/device/radio/off{pixel_y = 6},/obj/item/device/radio/off{pixel_x = 6; pixel_y = 4},/obj/item/device/radio/off{pixel_x = -6; pixel_y = 4},/obj/item/device/radio/off,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor,/area/engineering/workshop) +"cyu" = (/obj/structure/table,/obj/machinery/light,/obj/item/weapon/wrench,/obj/item/device/flashlight,/obj/machinery/cell_charger,/turf/simulated/floor,/area/engineering/workshop) +"cyv" = (/obj/machinery/requests_console{announcementConsole = 0; department = "Engineering"; departmentType = 4; name = "Engineering RC"; pixel_x = 0; pixel_y = -32},/turf/simulated/floor,/area/engineering/workshop) +"cyw" = (/obj/machinery/light{dir = 8},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = -24},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/rnd/xenobiology) +"cyx" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/engineering/atmos) +"cyy" = (/obj/machinery/atmospherics/pipe/simple/visible/green{tag = "icon-intact (SOUTHEAST)"; icon_state = "intact"; dir = 6},/turf/simulated/floor,/area/engineering/atmos) +"cyz" = (/obj/machinery/atmospherics/pipe/manifold/visible/green{dir = 1},/turf/simulated/floor,/area/engineering/atmos) +"cyA" = (/obj/machinery/atmospherics/pipe/manifold4w/visible/green,/turf/simulated/floor,/area/engineering/atmos) +"cyB" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/visible/green{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor,/area/engineering/atmos) +"cyC" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/purple{tag = "icon-intact (NORTH)"; icon_state = "intact"; dir = 1},/turf/simulated/floor,/area/engineering/atmos) +"cyD" = (/obj/machinery/portable_atmospherics/canister/phoron,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engineering/atmos) +"cyE" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engineering/atmos) +"cyF" = (/obj/machinery/portable_atmospherics/canister/sleeping_agent,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engineering/atmos) +"cyG" = (/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engineering/atmos) +"cyH" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engineering/atmos) +"cyI" = (/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/engineering/atmos) +"cyJ" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_x = 0; pixel_y = 32},/obj/structure/cable/cyan{d2 = 8; icon_state = "0-8"},/obj/machinery/power/smes/buildable{charge = 2e+006; RCon_tag = "Substation - Atmospherics"},/turf/simulated/floor/plating,/area/engineering/atmos/storage) +"cyK" = (/obj/structure/disposalpipe/segment,/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/power/sensor{name = "Powernet Sensor - Atmospherics Subgrid"; name_tag = "Atmospherics Subgrid"},/obj/structure/cable/cyan{d2 = 4; icon_state = "0-4"},/obj/structure/cable/cyan,/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engineering/atmos/storage) +"cyL" = (/turf/simulated/wall/r_wall,/area/engineering) "cyM" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) "cyN" = (/obj/machinery/atmospherics/trinary/mixer,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) "cyO" = (/mob/living/simple_animal/mouse,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) @@ -6710,36 +6710,36 @@ "czb" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) "czc" = (/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) "czd" = (/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/rnd/xenobiology) -"cze" = (/obj/structure/disposalpipe/junction{dir = 8; icon_state = "pipe-j2"},/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,/area/engineering) -"czf" = (/obj/machinery/power/emitter,/turf/simulated/floor/plating,/area/engineering/storage) -"czg" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/engineering/storage) -"czh" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/engineering{name = "Engineering Hard Storage"; req_access_txt = "11"},/turf/simulated/floor,/area/engineering/storage) +"cze" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/structure/disposalpipe/segment,/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/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/engineering) +"czf" = (/obj/machinery/embedded_controller/radio/airlock/access_controller{tag_exterior_door = "incinerator_airlock_exterior"; id_tag = "incinerator_access_control"; tag_interior_door = "incinerator_airlock_interior"; name = "Incinerator Access Console"; pixel_x = -6; pixel_y = -26; req_access_txt = "12"},/obj/machinery/button/ignition{id = "Incinerator"; pixel_x = 6; pixel_y = -24},/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor{dir = 2; icon_state = "warningcorner"; tag = "icon-warningcorner (WEST)"},/area/maintenance/incinerator) +"czg" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/engineering/atmos) +"czh" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{tag = "icon-intact (NORTH)"; icon_state = "intact"; dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor,/area/engineering/atmos) "czi" = (/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating/airless,/area/solar/port) -"czj" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/engineering/atmos) -"czk" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor,/area/engineering/atmos) -"czl" = (/obj/machinery/constructable_frame/machine_frame,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engineering/atmos) -"czm" = (/obj/machinery/atmospherics/unary/heater{dir = 2; icon_state = "heater"},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engineering/atmos) -"czn" = (/obj/machinery/atmospherics/unary/freezer{dir = 2; icon_state = "freezer"},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engineering/atmos) -"czo" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow,/obj/machinery/meter,/turf/simulated/floor,/area/engineering/atmos) -"czp" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/turf/simulated/floor,/area/engineering) -"czq" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light,/turf/simulated/floor,/area/engineering) -"czr" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor,/area/engineering) -"czs" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_atmos{name = "Atmospherics"; req_access_txt = "24"},/turf/simulated/floor,/area/engineering/atmos) -"czt" = (/obj/machinery/hologram/holopad,/obj/structure/disposalpipe/sortjunction/flipped{dir = 8; sortType = "Drone Fabrication"; name = "Drone Fabrication"},/turf/simulated/floor,/area/engineering/atmos) -"czu" = (/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/engineering/atmos) -"czv" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/simulated/floor,/area/engineering/atmos) -"czw" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan,/obj/machinery/meter,/turf/simulated/floor,/area/engineering/atmos) -"czx" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/engineering/atmos) -"czy" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact (EAST)"},/obj/machinery/atmospherics/binary/pump{dir = 1},/turf/simulated/floor,/area/engineering/atmos) -"czz" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor,/area/engineering) -"czA" = (/obj/machinery/newscaster{pixel_y = 30},/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/engineering) -"czB" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/engineering/atmos) +"czj" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/portable_atmospherics/canister/phoron,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engineering/atmos) +"czk" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/atmos) +"czl" = (/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/engineering/atmos) +"czm" = (/obj/machinery/portable_atmospherics/canister/sleeping_agent,/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/engineering/atmos) +"czn" = (/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/engineering/atmos) +"czo" = (/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/engineering/atmos) +"czp" = (/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/engineering/atmos) +"czq" = (/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/engineering/atmos/storage) +"czr" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment,/obj/machinery/camera{c_tag = "Atmospherics Substation"; dir = 4},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplatecorner"},/area/engineering/atmos/storage) +"czs" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering) +"czt" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "10;24"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/engineering) +"czu" = (/obj/machinery/light{dir = 1},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor,/area/engineering) +"czv" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = 25},/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/engineering) +"czw" = (/obj/machinery/alarm{pixel_y = 22},/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/engineering) +"czx" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/turf/simulated/floor,/area/engineering) +"czy" = (/obj/machinery/firealarm{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},/turf/simulated/floor,/area/engineering) +"czz" = (/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/engineering) +"czA" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering) +"czB" = (/obj/machinery/light{dir = 1},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor,/area/engineering) "czC" = (/obj/structure/cable/yellow,/turf/simulated/floor/plating/airless,/area/solar/port) -"czD" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor,/area/engineering) -"czE" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_atmos{name = "Atmospherics"; req_access_txt = "24"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/engineering/atmos) -"czF" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/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/engineering/workshop) -"czG" = (/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/engineering/workshop) -"czH" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor,/area/engineering/workshop) +"czD" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor,/area/engineering) +"czE" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "10;24"},/turf/simulated/floor/plating,/area/engineering) +"czF" = (/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/floor{dir = 10; icon_state = "yellow"},/area/engineering/atmos) +"czG" = (/obj/machinery/light,/turf/simulated/floor,/area/engineering/atmos) +"czH" = (/obj/machinery/atmospherics/valve/digital{name = "CO2 Outlet Valve"},/turf/simulated/floor{dir = 6; icon_state = "yellow"},/area/engineering/atmos) "czI" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) "czJ" = (/obj/structure/table,/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) "czK" = (/obj/structure/stool/bed/chair{dir = 8},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) @@ -6765,7 +6765,7 @@ "cAe" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cAf" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/wall/r_wall,/area/rnd/xenobiology) "cAg" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall/r_wall,/area/rnd/xenobiology) -"cAh" = (/obj/machinery/power/smes/buildable{charge = 1e+007; cur_coils = 4; input_attempt = 1; input_level = 500000; output_level = 500000; RCon_tag = "Engine - Main"},/obj/structure/cable,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/engineering/engine_smes) +"cAh" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "co2_in"; name = "Carbon Dioxide Supply Control"; output_tag = "co2_out"; sensors = list("co2_sensor" = "Tank")},/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/machinery/light,/turf/simulated/floor{dir = 2; icon_state = "yellow"},/area/engineering/atmos) "cAi" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) "cAj" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) "cAk" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) @@ -6777,24 +6777,24 @@ "cAq" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) "cAr" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/rnd/xenobiology) "cAs" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/maintenance/engineering) -"cAt" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/engineering) -"cAu" = (/obj/structure/disposalpipe/sortjunction/flipped{dir = 2; sortType = "Engineering"; name = "Engineering"},/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/engineering) -"cAv" = (/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/engineering/workshop) -"cAw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/engineering/storage) -"cAx" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plating,/area/engineering/storage) -"cAy" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-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/engineering/workshop) -"cAz" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/engineering{name = "Engineering Hard Storage"; req_access_txt = "11"},/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/engineering/storage) -"cAA" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/engineering/storage) -"cAB" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/engineering/workshop) -"cAC" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor,/area/engineering/workshop) -"cAD" = (/obj/structure/table,/obj/item/weapon/crowbar,/obj/item/clothing/gloves/black,/obj/item/clothing/gloves/black,/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor,/area/engineering/workshop) -"cAE" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/turf/simulated/floor/plating,/area/engineering/storage) -"cAF" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor,/area/engineering/workshop) +"cAt" = (/obj/machinery/camera{c_tag = "Atmospherics South West"; dir = 1},/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/engineering/atmos) +"cAu" = (/obj/machinery/light,/obj/machinery/atmospherics/binary/pump{dir = 1},/turf/simulated/floor,/area/engineering/atmos) +"cAv" = (/obj/machinery/atmospherics/valve/digital{name = "Phoron Outlet Valve"},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/engineering/atmos) +"cAw" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "tox_in"; name = "Phoron Supply Control"; output_tag = "tox_out"; sensors = list("tox_sensor" = "Tank")},/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/machinery/light,/turf/simulated/floor{icon_state = "warning"},/area/engineering/atmos) +"cAx" = (/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/floor{dir = 10; icon_state = "escape"},/area/engineering/atmos) +"cAy" = (/obj/machinery/atmospherics/binary/pump{dir = 1},/obj/machinery/light,/turf/simulated/floor,/area/engineering/atmos) +"cAz" = (/obj/machinery/atmospherics/valve/digital{name = "N2O Outlet Valve"},/turf/simulated/floor{icon_state = "escape"; dir = 6},/area/engineering/atmos) +"cAA" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "n2o_in"; name = "Nitrous Oxide Supply Control"; output_tag = "n2o_out"; sensors = list("n2o_sensor" = "Tank")},/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/machinery/light,/turf/simulated/floor{dir = 7; icon_state = "escape"},/area/engineering/atmos) +"cAB" = (/obj/machinery/atmospherics/valve/digital{name = "Gas Mix Inlet Valve"},/obj/machinery/camera{c_tag = "Atmospherics South"; dir = 1},/turf/simulated/floor{dir = 10; icon_state = "green"},/area/engineering/atmos) +"cAC" = (/obj/machinery/atmospherics/valve/digital{name = "Gas Mix Outlet Valve"},/turf/simulated/floor{icon_state = "green"; dir = 6},/area/engineering/atmos) +"cAD" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "waste_in"; name = "Gas Mix Tank Control"; output_tag = "waste_out"; sensors = list("waste_sensor" = "Tank")},/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/machinery/light,/turf/simulated/floor{dir = 2; icon_state = "green"},/area/engineering/atmos) +"cAE" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{tag = "icon-intact (NORTH)"; icon_state = "intact"; dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/engineering/atmos) +"cAF" = (/turf/simulated/wall/r_wall,/area/engineering/drone_fabrication) "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/machinery/shieldwallgen,/turf/simulated/floor/plating,/area/engineering/storage) -"cAI" = (/obj/machinery/shieldgen,/turf/simulated/floor/plating,/area/engineering/storage) -"cAJ" = (/obj/structure/dispenser{oxygentanks = 0},/obj/machinery/light,/turf/simulated/floor/plating,/area/engineering/storage) -"cAK" = (/obj/machinery/atmospherics/pipe/manifold4w/visible/yellow,/turf/simulated/floor,/area/engineering/atmos) +"cAH" = (/obj/machinery/door/airlock/maintenance{name = "Drone Fabrication"; req_one_access_txt = "10;24"},/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/door/firedoor/border_only,/turf/simulated/floor/plating,/area/engineering/drone_fabrication) +"cAI" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor,/area/engineering) +"cAJ" = (/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,/area/engineering) +"cAK" = (/obj/machinery/camera{c_tag = "Engineering Hallway South West"; dir = 1; pixel_x = 22},/turf/simulated/floor,/area/engineering) "cAL" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) "cAM" = (/obj/structure/stool/bed/chair{dir = 8},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) "cAN" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) @@ -6802,7 +6802,7 @@ "cAP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/engineering) "cAQ" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/maintenance/incinerator) "cAR" = (/obj/structure/sign/nosmoking_2{pixel_x = 0; pixel_y = -30},/turf/simulated/floor/plating,/area/maintenance/incinerator) -"cAS" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/turf/simulated/floor,/area/engineering/atmos) +"cAS" = (/obj/machinery/camera{c_tag = "Engineering Hallway South East"; dir = 1},/turf/simulated/floor,/area/engineering) "cAT" = (/turf/simulated/floor{dir = 2; icon_state = "floorgrimecaution"},/area/maintenance/incinerator) "cAU" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/machinery/meter,/obj/machinery/door_control{id = "disvent"; name = "Incinerator Vent Control"; pixel_x = 0; pixel_y = -24; req_access_txt = null; req_one_access_txt = "12;5"},/turf/simulated/floor{dir = 1; icon_state = "warningcorner"; tag = "icon-warningcorner (WEST)"},/area/maintenance/incinerator) "cAV" = (/turf/simulated/floor/plating,/area/maintenance/incinerator) @@ -6829,34 +6829,34 @@ "cBq" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table/reinforced,/obj/machinery/door_control{id = "xenobio5"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access_txt = "55"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/rnd/xenobiology) "cBr" = (/obj/machinery/light,/obj/structure/closet,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/rnd/xenobiology) "cBs" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table/reinforced,/obj/machinery/door_control{id = "xenobio6"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access_txt = "55"},/obj/machinery/door_control{desc = "A remote control-switch for a door to space."; id = "xenobioout6"; name = "Containment Release Switch"; pixel_x = 24; pixel_y = 4; req_access = "55"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/rnd/xenobiology) -"cBt" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/obj/machinery/meter,/turf/simulated/floor,/area/engineering/atmos) -"cBu" = (/obj/machinery/atmospherics/valve/digital{dir = 4},/turf/simulated/floor,/area/engineering/atmos) -"cBv" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/turf/simulated/floor,/area/engineering/atmos/storage) +"cBt" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/engineering) +"cBu" = (/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/engineering) +"cBv" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/engineering) "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/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/obj/machinery/door/airlock/atmos{name = "Atmospherics Maintenance"; req_access_txt = "12;24"},/turf/simulated/floor,/area/engineering/atmos/storage) -"cBy" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/turf/simulated/floor,/area/engineering/atmos) -"cBz" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/turf/simulated/floor{dir = 8; icon_state = "yellow"},/area/engineering) -"cBA" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/manifold4w/hidden/yellow,/turf/simulated/wall/r_wall,/area/engineering/atmos/storage) -"cBB" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/obj/machinery/portable_atmospherics/powered/pump,/turf/simulated/floor,/area/engineering/atmos/storage) -"cBC" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/obj/machinery/portable_atmospherics/powered/pump,/obj/machinery/light/small{dir = 1},/turf/simulated/floor,/area/engineering/atmos/storage) -"cBD" = (/obj/machinery/atmospherics/pipe/manifold/visible/purple{dir = 8},/turf/simulated/floor,/area/engineering/atmos) -"cBE" = (/obj/machinery/atmospherics/pipe/cap/visible{color = "#ffcc00"},/turf/simulated/floor,/area/engineering/atmos) -"cBF" = (/obj/machinery/power/apc/super{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable/cyan{d2 = 8; icon_state = "0-8"},/turf/simulated/floor,/area/engineering/atmos) -"cBG" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/cyan{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/engineering/atmos) -"cBH" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 6; icon_state = "intact"; tag = "icon-intact-f (SOUTHEAST)"},/turf/simulated/wall/r_wall,/area/engineering/atmos/storage) -"cBI" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor,/area/engineering) -"cBJ" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor,/area/engineering) -"cBK" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor,/area/engineering/workshop) -"cBL" = (/obj/effect/decal/cleanable/blood/oil/streak{amount = 0},/turf/simulated/floor,/area/engineering/workshop) -"cBM" = (/obj/structure/reagent_dispensers/fueltank,/obj/machinery/newscaster{pixel_x = 28; pixel_y = 3},/turf/simulated/floor,/area/engineering/workshop) -"cBN" = (/obj/machinery/portable_atmospherics/canister/phoron,/turf/simulated/floor/plating,/area/engineering/storage) -"cBO" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/plating,/area/engineering/storage) -"cBP" = (/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{dir = 8; icon_state = "yellowcorner"},/area/engineering/foyer) -"cBQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 9; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/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/engineering/foyer) -"cBR" = (/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{dir = 8; icon_state = "map"; tag = "icon-manifold-f (WEST)"},/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/engineering/foyer) -"cBS" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/foyer) -"cBT" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/purple,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/foyer) -"cBU" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering EVA Storage"; req_one_access_txt = "11;24"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/engine_eva) +"cBx" = (/obj/structure/sign/securearea,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/wall/r_wall,/area/engineering) +"cBy" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{external_pressure_bound = 140; external_pressure_bound_default = 140; icon_state = "map_vent_out"; pressure_checks = 0; pressure_checks_default = 0},/turf/simulated/floor/plating/airless,/area/engineering/atmos) +"cBz" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/plating,/area/engineering/atmos) +"cBA" = (/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/purple,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/engineering/atmos) +"cBB" = (/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},/turf/simulated/floor/plating,/area/engineering/atmos) +"cBC" = (/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/manifold/visible/yellow{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/engineering/atmos) +"cBD" = (/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 = 5},/turf/simulated/floor/plating,/area/engineering/atmos) +"cBE" = (/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/purple,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/engineering/atmos) +"cBF" = (/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/yellow{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/engineering/atmos) +"cBG" = (/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/engineering/atmos) +"cBH" = (/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/engineering/atmos) +"cBI" = (/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/engineering/atmos) +"cBJ" = (/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/engineering/atmos) +"cBK" = (/obj/machinery/cryopod/robot/right,/turf/simulated/floor/plating,/area/engineering/drone_fabrication) +"cBL" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/engineering/drone_fabrication) +"cBM" = (/obj/machinery/computer/cryopod/robot{pixel_y = 30},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/engineering/drone_fabrication) +"cBN" = (/obj/machinery/light{dir = 1},/obj/effect/landmark{name = "JoinLateCyborg"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/engineering/drone_fabrication) +"cBO" = (/obj/machinery/ai_status_display{layer = 4; pixel_y = 32},/obj/machinery/light{dir = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 5},/area/engineering/drone_fabrication) +"cBP" = (/obj/structure/stool/bed/chair,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/engineering/drone_fabrication) +"cBQ" = (/obj/machinery/recharge_station,/obj/machinery/light_switch{pixel_x = 0; pixel_y = 27},/turf/simulated/floor/plating,/area/engineering/drone_fabrication) +"cBR" = (/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,/turf/simulated/floor/plating,/area/engineering/drone_fabrication) +"cBS" = (/turf/simulated/wall/r_wall,/area/engineering/engine_smes) +"cBT" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 0},/turf/simulated/wall/r_wall,/area/engineering/engine_smes) +"cBU" = (/obj/machinery/door/airlock/maintenance_hatch{name = "SMES Access"; req_access_txt = "11"},/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,/area/engineering/engine_smes) "cBV" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/engi_engine) "cBW" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) "cBX" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) @@ -6877,30 +6877,30 @@ "cCm" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/medical/virology) "cCn" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/status_display,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/floor/plating,/area/medical/virology) "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/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/engine_eva) +"cCp" = (/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/engineering/engine_monitoring) "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/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/engine_eva) -"cCs" = (/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/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/engineering/engine_eva) -"cCt" = (/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/engineering/engine_eva) -"cCu" = (/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/engineering/engine_eva) -"cCv" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/engineering{name = "Engineering EVA Storage"; req_access_txt = "12"; req_one_access_txt = "11;24"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "floorgrime"},/area/engineering/engine_eva) -"cCw" = (/obj/structure/disposalpipe/segment,/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{icon_state = "floorgrime"},/area/maintenance/atmos_control) -"cCx" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/atmos_control) -"cCy" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/engineering/foyer) -"cCz" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/machinery/camera{c_tag = "Engineering Foyer"; dir = 8; network = list("SS13")},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/engineering/foyer) -"cCA" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/foyer) -"cCB" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/engineering/foyer) -"cCC" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/smes/buildable{charge = 0; RCon_tag = "Solar - Aft Starboard"},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) -"cCD" = (/obj/structure/table,/obj/item/weapon/storage/box/drinkingglasses{pixel_x = 1; pixel_y = 4},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/engineering/break_room) -"cCE" = (/obj/machinery/light,/obj/structure/table,/obj/machinery/chem_dispenser/soda,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/engineering/break_room) -"cCF" = (/obj/machinery/vending/snack,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/engineering/break_room) -"cCG" = (/obj/machinery/computer/station_alert,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/engineering/break_room) -"cCH" = (/obj/machinery/light,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/green,/obj/structure/flora/pottedplant{icon_state = "plant-20"; tag = "icon-plant-22"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/engineering/break_room) -"cCI" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/engineering/break_room) -"cCJ" = (/obj/machinery/newscaster{pixel_x = 31; pixel_y = 3},/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/engineering/foyer) -"cCK" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/powered/pump,/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/engineering/foyer) -"cCL" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/powered/scrubber,/turf/simulated/floor{icon_state = "red"; dir = 1},/area/engineering/foyer) -"cCM" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/powered/pump,/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/engineering/foyer) +"cCr" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 0; pixel_y = 0},/turf/simulated/wall/r_wall,/area/engineering/engine_monitoring) +"cCs" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engine Monitoring Room"; req_access_txt = "11"},/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,/area/engineering/engine_monitoring) +"cCt" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/engineering/engine_monitoring) +"cCu" = (/turf/simulated/wall/r_wall,/area/engineering/engine_airlock) +"cCv" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/engineering/engine_airlock) +"cCw" = (/obj/machinery/door/airlock/maintenance_hatch{icon_state = "door_closed"; locked = 0; name = "Engine Access"; req_access_txt = "0"; req_one_access_txt = "11;24"},/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,/area/engineering/engine_airlock) +"cCx" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plating,/area/engineering/drone_fabrication) +"cCy" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/engineering/drone_fabrication) +"cCz" = (/obj/machinery/computer/drone_control,/turf/simulated/floor/plating,/area/engineering/drone_fabrication) +"cCA" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engineering/drone_fabrication) +"cCB" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engineering/drone_fabrication) +"cCC" = (/obj/machinery/computer/security/engineering{name = "Drone Monitoring Cameras"; network = list("Engineering")},/turf/simulated/floor/plating,/area/engineering/drone_fabrication) +"cCD" = (/obj/machinery/recharge_station,/turf/simulated/floor/plating,/area/engineering/drone_fabrication) +"cCE" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = 25},/obj/structure/table,/obj/item/stack/cable_coil,/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = 3},/obj/item/device/multitool{pixel_x = 5},/obj/item/clothing/gloves/yellow,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor,/area/engineering/engine_smes) +"cCF" = (/obj/machinery/light_switch{pixel_x = 0; pixel_y = 27},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor,/area/engineering/engine_smes) +"cCG" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor,/area/engineering/engine_smes) +"cCH" = (/obj/structure/table,/obj/machinery/microwave{pixel_x = -2; pixel_y = 5},/turf/simulated/floor,/area/engineering/engine_monitoring) +"cCI" = (/turf/simulated/wall/r_wall,/area/engineering/engine_monitoring) +"cCJ" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/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,/area/engineering/engine_monitoring) +"cCK" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor,/area/engineering/engine_monitoring) +"cCL" = (/obj/structure/closet/radiation,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = 28},/turf/simulated/floor,/area/engineering/engine_monitoring) +"cCM" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/ai_status_display{layer = 4; pixel_y = 32},/turf/simulated/floor,/area/engineering/engine_monitoring) "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) @@ -6908,8 +6908,8 @@ "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/item/clothing/shoes/magboots,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/void/engineering,/obj/machinery/door/window/southleft{name = "Engineering Hardsuits"; req_access_txt = "11"},/obj/structure/table/rack{dir = 8; layer = 2.6},/obj/item/clothing/suit/space/void/engineering,/turf/simulated/floor,/area/engineering/engine_eva) -"cCV" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/engineering/engine_eva) +"cCU" = (/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor,/area/engineering/engine_airlock) +"cCV" = (/obj/structure/closet/radiation,/obj/item/clothing/glasses/meson,/obj/item/clothing/glasses/meson,/obj/machinery/camera{c_tag = "Engine Room Airlock"; dir = 2; network = list("SS13","Supermatter")},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor,/area/engineering/engine_airlock) "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) @@ -6920,39 +6920,39 @@ "cDd" = (/obj/structure/table,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cDe" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/medical/virology) "cDf" = (/obj/structure/disposaloutlet,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plating/airless,/area/space) -"cDg" = (/obj/structure/dispenser{phorontanks = 0},/turf/simulated/floor,/area/engineering/engine_eva) +"cDg" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/engineering/engine_airlock) "cDh" = (/obj/machinery/clonepod,/turf/simulated/floor/engine,/area/rnd/xenobiology) "cDi" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/engine,/area/rnd/xenobiology) -"cDj" = (/obj/structure/sign/pods,/turf/simulated/wall/r_wall,/area/engineering/engine_eva) -"cDk" = (/obj/structure/table/rack{dir = 8; layer = 2.6},/obj/item/clothing/shoes/magboots,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/void/engineering,/obj/machinery/light{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/southleft{name = "Engineering Hardsuits"; req_access_txt = "11"},/obj/item/clothing/suit/space/void/engineering,/turf/simulated/floor,/area/engineering/engine_eva) -"cDl" = (/obj/machinery/portable_atmospherics/canister/oxygen,/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor,/area/engineering/engine_eva) -"cDm" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/atmos_control) -"cDn" = (/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/atmos_control) -"cDo" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/turf/simulated/floor,/area/engineering/foyer) -"cDp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/engineering/engine_eva) -"cDq" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/void/atmos,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/void/atmos,/obj/machinery/door/window/northright{name = "Atmospherics Hardsuits"; req_access_txt = "24"},/turf/simulated/floor,/area/engineering/engine_eva) -"cDr" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/void/atmos,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/void/atmos,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/northleft{name = "Atmospherics Hardsuits"; req_access_txt = "24"},/turf/simulated/floor,/area/engineering/engine_eva) -"cDs" = (/obj/structure/table/reinforced,/obj/machinery/recharger{pixel_y = 0},/turf/simulated/floor,/area/engineering/foyer) -"cDt" = (/obj/structure/table/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/cyan,/obj/item/weapon/folder/yellow,/turf/simulated/floor,/area/engineering/foyer) -"cDu" = (/obj/structure/table/reinforced,/obj/item/weapon/packageWrap,/obj/item/weapon/hand_labeler,/turf/simulated/floor,/area/engineering/foyer) -"cDv" = (/obj/machinery/light/small{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/atmos_control) -"cDw" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/atmos_control) -"cDx" = (/obj/machinery/camera{c_tag = "Engineering EVA Storage"; dir = 1; network = list("SS13")},/obj/machinery/suit_cycler/engineering,/turf/simulated/floor,/area/engineering/engine_eva) -"cDy" = (/obj/machinery/atmospherics/pipe/simple/hidden/purple,/turf/simulated/floor,/area/engineering/engine_eva) -"cDz" = (/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/item/weapon/storage/briefcase/inflatable{pixel_x = 3; pixel_y = 6},/obj/item/weapon/storage/briefcase/inflatable{pixel_y = 3},/obj/structure/table/reinforced{icon_state = "table"},/obj/item/weapon/storage/briefcase/inflatable{pixel_x = -3; pixel_y = 0},/turf/simulated/floor,/area/engineering/engine_eva) -"cDA" = (/turf/simulated/wall/r_wall,/area/engineering/engine_eva) -"cDB" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/engineering/locker_room) -"cDC" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/engineering/locker_room) -"cDD" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/engineering/locker_room) -"cDE" = (/obj/machinery/atmospherics/unary/vent_pump/on,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/engineering/foyer) -"cDF" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/engineering/foyer) -"cDG" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Locker Room"; req_one_access_txt = "11;24"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/engineering/locker_room) -"cDH" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/engineering/locker_room) -"cDI" = (/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/engineering/atmos) -"cDJ" = (/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/engineering/atmos) -"cDK" = (/turf/simulated/floor/engine{name = "o2 floor"; nitrogen = 0; oxygen = 100000},/area/engineering/atmos) -"cDL" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/engine{name = "o2 floor"; nitrogen = 0; oxygen = 100000},/area/engineering/atmos) -"cDM" = (/turf/simulated/floor/engine{name = "n2 floor"; nitrogen = 100000; oxygen = 0},/area/engineering/atmos) +"cDj" = (/obj/structure/grille,/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/visible/yellow,/turf/simulated/wall/r_wall,/area/engineering/atmos) +"cDk" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/visible/yellow,/obj/machinery/meter,/turf/simulated/wall/r_wall,/area/engineering/atmos) +"cDl" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/visible/green,/obj/machinery/meter,/turf/simulated/wall/r_wall,/area/engineering/atmos) +"cDm" = (/turf/simulated/floor/plating,/area/engineering/drone_fabrication) +"cDn" = (/obj/machinery/drone_fabricator,/turf/simulated/floor/plating,/area/engineering/drone_fabrication) +"cDo" = (/obj/effect/decal/remains/robot,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engineering/drone_fabrication) +"cDp" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engineering/drone_fabrication) +"cDq" = (/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/disposal,/turf/simulated/floor/plating,/area/engineering/drone_fabrication) +"cDr" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/engineering/drone_fabrication) +"cDs" = (/obj/structure/table,/obj/item/stack/cable_coil,/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = 3},/turf/simulated/floor,/area/engineering/engine_smes) +"cDt" = (/turf/simulated/floor,/area/engineering/engine_smes) +"cDu" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/engineering/engine_smes) +"cDv" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor,/area/engineering/engine_monitoring) +"cDw" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/engineering/engine_monitoring) +"cDx" = (/turf/simulated/floor,/area/engineering/engine_monitoring) +"cDy" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor,/area/engineering/engine_monitoring) +"cDz" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/engineering/engine_monitoring) +"cDA" = (/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/obj/machinery/light_switch{pixel_x = -27; pixel_y = 0},/obj/machinery/airlock_sensor/airlock_exterior{id_tag = "eng_al_ext_snsr"; layer = 3.3; master_tag = "engine_room_airlock"; pixel_y = -22; req_access_txt = "10"},/obj/structure/table,/obj/item/weapon/book/manual/supermatter_engine,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor,/area/engineering/engine_airlock) +"cDB" = (/obj/machinery/shower{icon_state = "shower"; dir = 8},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor,/area/engineering/engine_airlock) +"cDC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor,/area/engineering/engine_airlock) +"cDD" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 1; frequency = 1441; icon_state = "map_injector"; id = "co2_in"; use_power = 1; pixel_y = 1},/turf/simulated/floor/engine{carbon_dioxide = 50000; name = "co2 floor"; nitrogen = 0; oxygen = 0},/area/engineering/atmos) +"cDE" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 0; external_pressure_bound_default = 0; frequency = 1441; icon_state = "map_vent_in"; id_tag = "co2_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{carbon_dioxide = 50000; name = "co2 floor"; nitrogen = 0; oxygen = 0},/area/engineering/atmos) +"cDF" = (/obj/machinery/air_sensor{frequency = 1441; id_tag = "co2_sensor"},/turf/simulated/floor/engine{carbon_dioxide = 50000; name = "co2 floor"; nitrogen = 0; oxygen = 0},/area/engineering/atmos) +"cDG" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 1; frequency = 1441; icon_state = "map_injector"; id = "tox_in"; use_power = 1; pixel_y = 1},/turf/simulated/floor/engine{carbon_dioxide = 0; name = "phoron floor"; nitrogen = 0; oxygen = 0; phoron = 70000},/area/engineering/atmos) +"cDH" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 0; external_pressure_bound_default = 0; frequency = 1441; icon_state = "map_vent_in"; id_tag = "tox_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{carbon_dioxide = 0; name = "phoron floor"; nitrogen = 0; oxygen = 0; phoron = 70000},/area/engineering/atmos) +"cDI" = (/obj/machinery/air_sensor{frequency = 1441; id_tag = "tox_sensor"},/turf/simulated/floor/engine{carbon_dioxide = 0; name = "phoron floor"; nitrogen = 0; oxygen = 0; phoron = 70000},/area/engineering/atmos) +"cDJ" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 1; frequency = 1441; icon_state = "map_injector"; id = "n2o_in"; use_power = 1; pixel_y = 1},/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/engineering/atmos) +"cDK" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 0; external_pressure_bound_default = 0; frequency = 1441; icon_state = "map_vent_in"; id_tag = "n2o_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 = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/engineering/atmos) +"cDL" = (/obj/machinery/air_sensor{frequency = 1441; id_tag = "n2o_sensor"},/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/engineering/atmos) +"cDM" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 1; frequency = 1441; icon_state = "map_injector"; id = "waste_in"; use_power = 1; pixel_y = 1},/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/engineering/atmos) "cDN" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) "cDO" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "engineering_dock_inner"; locked = 1; name = "Engineering Dock Airlock"; req_access = null; req_access_txt = "13"},/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) "cDP" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) @@ -6967,92 +6967,92 @@ "cDY" = (/obj/machinery/washing_machine,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cDZ" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/engine,/area/rnd/xenobiology) "cEa" = (/obj/machinery/light/small{dir = 8},/obj/structure/disposalpipe/segment,/turf/simulated/floor/engine,/area/rnd/xenobiology) -"cEb" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/turf/simulated/floor/engine{name = "n2 floor"; nitrogen = 100000; oxygen = 0},/area/engineering/atmos) -"cEc" = (/obj/structure/closet/secure_closet/engineering_personal,/obj/item/weapon/tank/emergency_oxygen/engi,/turf/simulated/floor,/area/engineering/locker_room) -"cEd" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor,/area/engineering/locker_room) -"cEe" = (/turf/simulated/wall,/area/engineering/locker_room) -"cEf" = (/obj/machinery/hologram/holopad,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/engineering/foyer) -"cEg" = (/obj/machinery/firealarm{dir = 4; layer = 3.3; pixel_x = 26},/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/engineering/foyer) -"cEh" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/engineering/locker_room) -"cEi" = (/obj/structure/closet/secure_closet/engineering_personal,/obj/item/weapon/tank/emergency_oxygen/engi,/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor,/area/engineering/locker_room) -"cEj" = (/obj/structure/closet/secure_closet/engineering_personal,/obj/machinery/light{dir = 1},/obj/item/weapon/tank/emergency_oxygen/engi,/turf/simulated/floor,/area/engineering/locker_room) -"cEk" = (/turf/simulated/floor,/area/engineering/engine_eva) -"cEl" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor,/area/engineering/engine_eva) -"cEm" = (/turf/simulated/floor,/area/engineering/foyer) -"cEn" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering EVA Storage"; req_one_access_txt = "11;24"},/turf/simulated/floor,/area/engineering/engine_eva) -"cEo" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan,/turf/simulated/floor,/area/engineering/foyer) -"cEp" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/atmos_control) -"cEq" = (/obj/effect/decal/cleanable/blood/oil/streak{amount = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/atmos_control) -"cEr" = (/obj/item/weapon/storage/briefcase/inflatable{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/briefcase/inflatable,/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/table/reinforced{icon_state = "table"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor,/area/engineering/engine_eva) -"cEs" = (/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/engineering/engine_eva) -"cEt" = (/obj/machinery/atmospherics/pipe/simple/hidden/purple,/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor,/area/engineering/engine_eva) -"cEu" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/engine{name = "o2 floor"; nitrogen = 0; oxygen = 100000},/area/engineering/atmos) -"cEv" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/engine{name = "n2 floor"; nitrogen = 100000; oxygen = 0},/area/engineering/atmos) -"cEw" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/engineering/atmos) -"cEx" = (/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/obj/machinery/smartfridge/drying_rack,/turf/simulated/floor{dir = 6; icon_state = "whitegreen"},/area/rnd/xenobiology/xenoflora_storage) -"cEy" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/visible/cyan,/obj/machinery/meter{frequency = 1443; id = "mair_out_meter"; name = "Mixed Air Tank Out"},/turf/simulated/wall/r_wall,/area/engineering/atmos) -"cEz" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/visible/cyan,/obj/machinery/meter{frequency = 1443; id = "mair_in_meter"; name = "Mixed Air Tank In"},/turf/simulated/wall/r_wall,/area/engineering/atmos) -"cEA" = (/obj/structure/grille,/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/visible/green,/turf/simulated/wall/r_wall,/area/engineering/atmos) +"cEb" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 0; external_pressure_bound_default = 0; frequency = 1441; icon_state = "map_vent_in"; id_tag = "waste_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 = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/engineering/atmos) +"cEc" = (/obj/machinery/air_sensor{frequency = 1441; id_tag = "waste_sensor"; output = 63},/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/engineering/atmos) +"cEd" = (/obj/structure/table,/obj/item/weapon/storage/box/matches,/obj/item/weapon/storage/fancy/cigarettes,/obj/machinery/light/small{dir = 8},/obj/item/weapon/deck,/turf/simulated/floor/plating,/area/engineering/drone_fabrication) +"cEe" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engineering/drone_fabrication) +"cEf" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/toolbox/electrical,/obj/machinery/camera{c_tag = "Drone Fabrication"; dir = 8; network = list("SS13")},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/engineering/drone_fabrication) +"cEg" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/engineering/drone_fabrication) +"cEh" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/table,/obj/item/stack/cable_coil,/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/lights/mixed,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/engineering/engine_smes) +"cEi" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/wall/r_wall,/area/engineering/engine_smes) +"cEj" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/engineering/engine_smes) +"cEk" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/engineering/engine_smes) +"cEl" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor,/area/engineering/engine_monitoring) +"cEm" = (/obj/machinery/door/airlock/maintenance_hatch{name = "SMES Access"; req_access_txt = "11"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/engineering/engine_monitoring) +"cEn" = (/obj/machinery/hologram/holopad,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor,/area/engineering/engine_monitoring) +"cEo" = (/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/engineering/engine_monitoring) +"cEp" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/newscaster{pixel_x = 28; pixel_y = 0},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor,/area/engineering/engine_monitoring) +"cEq" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/engine_monitoring) +"cEr" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/universal,/turf/simulated/floor/plating,/area/engineering/engine_airlock) +"cEs" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/wall/r_wall,/area/engineering/engine_monitoring) +"cEt" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/universal,/turf/simulated/floor/plating,/area/engineering/engine_airlock) +"cEu" = (/obj/machinery/door/airlock/maintenance_hatch{frequency = 1379; icon_state = "door_closed"; id_tag = "engine_airlock_exterior"; locked = 0; name = "Engine Airlock Exterior"; req_access_txt = "10"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/engineering/engine_airlock) +"cEv" = (/turf/simulated/floor/engine{carbon_dioxide = 50000; name = "co2 floor"; nitrogen = 0; oxygen = 0},/area/engineering/atmos) +"cEw" = (/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/turf/simulated/floor/engine{carbon_dioxide = 50000; name = "co2 floor"; nitrogen = 0; oxygen = 0},/area/engineering/atmos) +"cEx" = (/turf/simulated/floor/engine{carbon_dioxide = 0; name = "phoron floor"; nitrogen = 0; oxygen = 0; phoron = 70000},/area/engineering/atmos) +"cEy" = (/obj/machinery/portable_atmospherics/canister/phoron,/turf/simulated/floor/engine{carbon_dioxide = 0; name = "phoron floor"; nitrogen = 0; oxygen = 0; phoron = 70000},/area/engineering/atmos) +"cEz" = (/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/engineering/atmos) +"cEA" = (/obj/machinery/portable_atmospherics/canister/sleeping_agent/roomfiller,/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/engineering/atmos) "cEB" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1380; id_tag = "engineering_dock_pump"},/obj/machinery/embedded_controller/radio/airlock/docking_port{frequency = 1380; id_tag = "engineering_dock_airlock"; pixel_x = -25; pixel_y = 0; req_access_txt = "0"; req_one_access_txt = "13;11;24"; tag_airpump = "engineering_dock_pump"; tag_chamber_sensor = "engineering_dock_sensor"; tag_exterior_door = "engineering_dock_outer"; tag_interior_door = "engineering_dock_inner"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/maintenance/engi_shuttle) "cEC" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4; icon_state = "map"; tag = "icon-manifold-f (EAST)"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 5},/area/maintenance/engi_shuttle) "cED" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) -"cEE" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/obj/machinery/light,/turf/simulated/floor,/area/engineering/foyer) +"cEE" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/engineering/atmos) "cEF" = (/turf/simulated/floor/engine/vacuum,/area/maintenance/incinerator) -"cEG" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/obj/machinery/atmospherics/pipe/simple/hidden/purple,/turf/simulated/floor{dir = 4; icon_state = "loadingarea"},/area/engineering/foyer) +"cEG" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plating,/area/engineering/drone_fabrication) "cEH" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/green,/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -27},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cEI" = (/obj/structure/stool,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cEJ" = (/obj/structure/table,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cEK" = (/obj/machinery/computer/arcade,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cEL" = (/obj/structure/disposaloutlet{dir = 4},/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/engine,/area/rnd/xenobiology) -"cEM" = (/obj/machinery/door/window/eastright{name = "Engineering Delivery"; req_one_access_txt = "11;24"},/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 6; icon_state = "intact"; tag = "icon-intact-f (SOUTHEAST)"},/turf/simulated/floor{icon_state = "delivery"},/area/engineering/foyer) -"cEN" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=4"; freq = 1400; location = "Engineering"},/obj/structure/plasticflaps{opacity = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor{icon_state = "bot"},/area/engineering/foyer) -"cEO" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/atmos_control) -"cEP" = (/obj/structure/sign/securearea{pixel_x = -32},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/atmos_control) -"cEQ" = (/obj/machinery/door/window/eastright{name = "Engineering Reception Desk"; req_one_access_txt = "10;24"},/obj/machinery/light,/turf/simulated/floor,/area/engineering/foyer) -"cER" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 9; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/turf/simulated/floor,/area/engineering/foyer) -"cES" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/turf/simulated/floor,/area/engineering/foyer) -"cET" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/obj/machinery/requests_console{announcementConsole = 0; department = "Engineering"; departmentType = 4; name = "Engineering RC"; pixel_x = 0; pixel_y = -32},/turf/simulated/floor,/area/engineering/foyer) -"cEU" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/obj/machinery/computer/guestpass{pixel_y = -28},/turf/simulated/floor,/area/engineering/foyer) -"cEV" = (/obj/structure/closet/secure_closet/atmos_personal,/obj/item/weapon/tank/emergency_oxygen/engi,/turf/simulated/floor,/area/engineering/locker_room) -"cEW" = (/obj/structure/closet/secure_closet/atmos_personal,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/item/weapon/tank/emergency_oxygen/engi,/turf/simulated/floor,/area/engineering/locker_room) -"cEX" = (/obj/structure/disposalpipe/junction{icon_state = "pipe-j2"; dir = 2},/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/engineering/foyer) -"cEY" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/engineering/foyer) -"cEZ" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor{dir = 8; icon_state = "yellowcorner"},/area/engineering/foyer) -"cFa" = (/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/engineering/foyer) -"cFb" = (/obj/structure/table,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/turf/simulated/floor,/area/engineering/locker_room) -"cFc" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor,/area/engineering/locker_room) -"cFd" = (/turf/simulated/floor,/area/engineering/locker_room) -"cFe" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor,/area/engineering/locker_room) -"cFf" = (/obj/machinery/button/holosign{pixel_x = -24; pixel_y = 2},/obj/machinery/camera{c_tag = "Medbay Operating Theatre 2"; dir = 4; network = list("SS13")},/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/simulated/floor{dir = 1; icon_state = "whiteredcorner"},/area/medical/surgery2) +"cEM" = (/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,/turf/simulated/floor/plating,/area/engineering/drone_fabrication) +"cEN" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "warning"},/area/engineering/engine_smes) +"cEO" = (/obj/machinery/camera{c_tag = "SMES"; dir = 8; network = list("SS13","Supermatter")},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor,/area/engineering/engine_smes) +"cEP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor{icon_state = "warningcorner"; dir = 1},/area/engineering/engine_smes) +"cEQ" = (/obj/structure/table/reinforced,/obj/machinery/camera{c_tag = "Engine Monitoring Room"; dir = 4; network = list("SS13","Supermatter")},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor,/area/engineering/engine_monitoring) +"cER" = (/obj/structure/table/reinforced,/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 = 0; pixel_y = -3; 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 = -6; pixel_y = 7; req_access_txt = "10"},/obj/machinery/door_control{desc = "A remote control-switch for the engine emitter."; id = "EngineEmitter"; name = "Engine Emitter"; normaldoorcontrol = 2; pixel_x = 6; pixel_y = 7; req_access_txt = "10"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/engineering/engine_monitoring) +"cES" = (/obj/structure/stool/bed/chair/office/dark,/obj/effect/landmark/start{name = "Station Engineer"},/turf/simulated/floor,/area/engineering/engine_monitoring) +"cET" = (/obj/structure/table/reinforced,/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor,/area/engineering/engine_monitoring) +"cEU" = (/obj/machinery/embedded_controller/radio/airlock/advanced_airlock_controller{id_tag = "engine_room_airlock"; name = "Engine Room Airlock"; pixel_x = -24; tag_airpump = "engine_airlock_pump"; tag_chamber_sensor = "eng_al_c_snsr"; tag_exterior_door = "engine_airlock_exterior"; tag_exterior_sensor = "eng_al_ext_snsr"; tag_interior_door = "engine_airlock_interior"; tag_interior_sensor = "eng_al_int_snsr"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5; icon_state = "intact"; tag = "icon-intact-f (NORTHEAST)"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/engineering/engine_airlock) +"cEV" = (/obj/structure/closet/emcloset,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 5},/area/engineering/engine_airlock) +"cEW" = (/obj/machinery/atmospherics/binary/dp_vent_pump/high_volume{dir = 8; frequency = 1379; id = "engine_airlock_pump"},/turf/simulated/floor/plating,/area/engineering/engine_airlock) +"cEX" = (/obj/machinery/light/small,/turf/simulated/floor/engine{carbon_dioxide = 50000; name = "co2 floor"; nitrogen = 0; oxygen = 0},/area/engineering/atmos) +"cEY" = (/obj/machinery/light/small,/turf/simulated/floor/engine{carbon_dioxide = 0; name = "phoron floor"; nitrogen = 0; oxygen = 0; phoron = 70000},/area/engineering/atmos) +"cEZ" = (/obj/machinery/light/small,/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/engineering/atmos) +"cFa" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/engineering/drone_fabrication) +"cFb" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/engineering/drone_fabrication) +"cFc" = (/obj/machinery/computer/drone_control,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/engineering/drone_fabrication) +"cFd" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/light,/obj/machinery/mecha_part_fabricator{output_dir = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 10},/area/engineering/drone_fabrication) +"cFe" = (/obj/machinery/light,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/sensor{name = "Powernet Sensor - Master Grid"; name_tag = "Master"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 6},/area/engineering/drone_fabrication) +"cFf" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/engineering/drone_fabrication) "cFg" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1380; id_tag = "engineering_dock_pump"},/obj/machinery/airlock_sensor{frequency = 1380; id_tag = "engineering_dock_sensor"; pixel_x = -25; pixel_y = 8},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 10},/area/maintenance/engi_shuttle) "cFh" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 6},/area/maintenance/engi_shuttle) "cFi" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) -"cFj" = (/obj/machinery/camera{c_tag = "Medbay Operating Theatre 1"; dir = 8; network = list("SS13")},/obj/machinery/button/holosign{pixel_x = 24; pixel_y = 2},/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "whiteredcorner"},/area/medical/surgery) +"cFj" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/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,/turf/simulated/floor/plating,/area/engineering/drone_fabrication) "cFk" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/obj/structure/sign/securearea{desc = "A warning sign which reads 'HOT EXHAUST'."; name = "\improper HOT EXHAUST"; pixel_x = -32},/turf/simulated/floor/plating/airless,/area/space) -"cFl" = (/obj/machinery/air_sensor{frequency = 1441; id_tag = "n2_sensor"},/turf/simulated/floor/engine{name = "n2 floor"; nitrogen = 100000; oxygen = 0},/area/engineering/atmos) +"cFl" = (/obj/machinery/power/smes/buildable{charge = 1e+007; cur_coils = 4; input_attempt = 1; input_level = 500000; output_level = 500000; RCon_tag = "Engine - Main"},/obj/structure/cable,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/engineering/engine_smes) "cFm" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/green,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cFn" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cFo" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/closet/secure_closet/personal/patient,/obj/item/clothing/under/color/white,/obj/item/clothing/under/color/white,/obj/item/clothing/under/color/white,/obj/item/clothing/under/color/white,/obj/item/clothing/under/color/white,/obj/item/clothing/under/color/white,/obj/item/clothing/under/color/white,/obj/item/clothing/shoes/white,/obj/item/clothing/shoes/white,/obj/item/clothing/shoes/white,/obj/item/clothing/shoes/white,/obj/item/clothing/shoes/white,/obj/item/clothing/shoes/white,/obj/item/clothing/shoes/white,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) -"cFp" = (/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/engineering/atmos) -"cFq" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 2; frequency = 1441; icon_state = "map_injector"; id = "n2_in"; use_power = 1},/turf/simulated/floor/engine{name = "n2 floor"; nitrogen = 100000; oxygen = 0},/area/engineering/atmos) -"cFr" = (/obj/machinery/air_sensor{frequency = 1441; id_tag = "o2_sensor"},/turf/simulated/floor/engine{name = "o2 floor"; nitrogen = 0; oxygen = 100000},/area/engineering/atmos) -"cFs" = (/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 = "o2_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 = "o2 floor"; nitrogen = 0; oxygen = 100000},/area/engineering/atmos) -"cFt" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 2; frequency = 1441; icon_state = "map_injector"; id = "o2_in"; use_power = 1},/turf/simulated/floor/engine{name = "o2 floor"; nitrogen = 0; oxygen = 100000},/area/engineering/atmos) -"cFu" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 2; frequency = 1443; icon_state = "map_injector"; id = "air_in"; use_power = 1},/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/engineering/atmos) -"cFv" = (/obj/machinery/air_sensor{frequency = 1443; id_tag = "air_sensor"; output = 7},/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/engineering/atmos) -"cFw" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 2; external_pressure_bound = 0; external_pressure_bound_default = 0; frequency = 1443; icon_state = "map_vent_in"; id_tag = "air_out"; internal_pressure_bound = 2000; internal_pressure_bound_default = 2000; use_power = 1; pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0},/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/engineering/atmos) -"cFx" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Locker Room"; req_one_access_txt = "11;24"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/locker_room) -"cFy" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor,/area/engineering/locker_room) -"cFz" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/engineering/locker_room) -"cFA" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor,/area/engineering/foyer) -"cFB" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=AIE"; location = "AftH"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor,/area/engineering/foyer) -"cFC" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/foyer) -"cFD" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/engineering/foyer) -"cFE" = (/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor,/area/engineering/locker_room) -"cFF" = (/obj/machinery/power/smes/buildable{charge = 0; RCon_tag = "Substation - Engineering"},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/structure/cable/green,/turf/simulated/floor/plating,/area/maintenance/substation/engineering) -"cFG" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/engineering/locker_room) -"cFH" = (/obj/machinery/door/airlock/maintenance{name = "Engineering EVA Storage Maintainance"; req_access_txt = "12"; req_one_access_txt = "11;24"},/obj/machinery/atmospherics/pipe/simple/hidden/purple,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/engineering/engine_eva) -"cFI" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/plating,/area/maintenance/atmos_control) +"cFp" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "warning"},/area/engineering/engine_smes) +"cFq" = (/obj/machinery/power/terminal{dir = 8},/obj/machinery/light,/obj/machinery/door_control{id = "engine_electrical_maintenance"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 5; pixel_y = -25; req_access_txt = "10"; specialfunctions = 4},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/engineering/engine_smes) +"cFr" = (/obj/machinery/computer/general_air_control/supermatter_core{frequency = 1438; input_tag = "cooling_in"; name = "Engine Cooling Control"; output_tag = "cooling_out"; pressure_setting = 100; sensors = list("engine_sensor" = "Engine Core")},/turf/simulated/floor{icon_state = "warning"},/area/engineering/engine_monitoring) +"cFs" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/computer/power_monitor,/turf/simulated/floor{icon_state = "warning"},/area/engineering/engine_monitoring) +"cFt" = (/obj/machinery/computer/rcon,/turf/simulated/floor{icon_state = "warning"},/area/engineering/engine_monitoring) +"cFu" = (/obj/machinery/computer/station_alert,/turf/simulated/floor{icon_state = "warning"},/area/engineering/engine_monitoring) +"cFv" = (/obj/machinery/computer/security/engineering{network = list("Engineering","Power Alarms","Atmosphere Alarms","Fire Alarms","Supermatter")},/turf/simulated/floor{icon_state = "warning"},/area/engineering/engine_monitoring) +"cFw" = (/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "eng_al_c_snsr"; pixel_x = -25; pixel_y = 0},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 10},/area/engineering/engine_airlock) +"cFx" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 6},/area/engineering/engine_airlock) +"cFy" = (/turf/simulated/floor/plating,/area/engineering/engine_airlock) +"cFz" = (/obj/structure/grille,/obj/structure/grille,/turf/simulated/wall/r_wall,/area/engineering/atmos) +"cFA" = (/turf/simulated/wall/r_wall,/area/engineering/engine_room) +"cFB" = (/obj/machinery/door/airlock/maintenance{name = "Drone Fabrication/Engine Waste Handling"; req_one_access_txt = "10;24"},/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,/turf/simulated/floor/plating,/area/engineering/drone_fabrication) +"cFC" = (/obj/machinery/door/airlock/hatch{icon_state = "door_locked"; id_tag = "engine_electrical_maintenance"; locked = 1; name = "Electrical Maintenance"; req_access_txt = "10"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cFD" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "EngineBlast"; name = "Engine Monitoring Room Blast Doors"; opacity = 0},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cFE" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "EngineBlast"; name = "Engine Monitoring Room Blast Doors"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/engineering/engine_room) +"cFF" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "EngineBlast"; name = "Engine Monitoring Room Blast Doors"; opacity = 0},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cFG" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "EngineBlast"; name = "Engine Monitoring Room Blast Doors"; opacity = 0},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cFH" = (/obj/machinery/door/airlock/maintenance_hatch{frequency = 1379; icon_state = "door_closed"; id_tag = "engine_airlock_interior"; locked = 0; name = "Engine Airlock Interior"; req_access_txt = "10"},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cFI" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/turf/simulated/wall/r_wall,/area/engineering/engine_waste) "cFJ" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_y = 0},/turf/simulated/wall,/area/maintenance/engi_shuttle) "cFK" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "engineering_dock_outer"; locked = 1; name = "Engineering Dock Airlock"; req_access = null; req_access_txt = "13"},/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) "cFL" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1380; master_tag = "engineering_dock_airlock"; name = "exterior access button"; pixel_x = -25; pixel_y = -8; req_access_txt = "0"; req_one_access_txt = "13;11;24"},/turf/space,/area/space) @@ -7062,141 +7062,141 @@ "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/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/atmos_control) -"cFT" = (/obj/structure/stool/bed/chair/office/dark{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/cyan,/turf/simulated/floor,/area/engineering/foyer) -"cFU" = (/obj/structure/table/reinforced,/obj/item/weapon/clipboard,/obj/item/weapon/tape_roll,/turf/simulated/floor,/area/engineering/foyer) -"cFV" = (/obj/machinery/computer/station_alert,/turf/simulated/floor,/area/engineering/foyer) -"cFW" = (/obj/machinery/meter{frequency = 1443; id = "dloop_atm_meter"; name = "Distribution Loop"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/visible/supply{dir = 8},/turf/simulated/floor,/area/engineering/atmos) -"cFX" = (/obj/machinery/meter{frequency = 1443; id = "wloop_atm_meter"; name = "Waste Loop"},/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,/turf/simulated/floor,/area/engineering/atmos) -"cFY" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/engineering/atmos/monitoring) -"cFZ" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/floor,/area/engineering/atmos) -"cGa" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/obj/machinery/meter,/obj/machinery/firealarm{pixel_y = 24},/turf/simulated/floor,/area/engineering/atmos) -"cGb" = (/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/obj/machinery/atmospherics/pipe/simple/visible/supply{dir = 10},/turf/simulated/floor,/area/engineering/atmos) -"cGc" = (/obj/machinery/computer/atmoscontrol,/turf/simulated/floor,/area/engineering/atmos/monitoring) -"cGd" = (/obj/machinery/firealarm{pixel_x = 32; pixel_y = 24},/turf/simulated/floor,/area/engineering/atmos/monitoring) -"cGe" = (/obj/machinery/computer/general_air_control{frequency = 1443; level = 3; name = "Distribution and Waste Monitor"; sensors = list("mair_in_meter" = "Mixed Air In", "air_sensor" = "Mixed Air Supply Tank", "mair_out_meter" = "Mixed Air Out", "dloop_atm_meter" = "Distribution Loop", "wloop_atm_meter" = "Engine Waste")},/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/engineering/atmos/monitoring) -"cGf" = (/obj/machinery/computer/atmos_alert,/obj/machinery/alarm{pixel_y = 22},/turf/simulated/floor,/area/engineering/engineering_monitoring) +"cFS" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/engineering/engine_waste) +"cFT" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 10},/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/plating,/area/engineering/engine_waste) +"cFU" = (/obj/machinery/camera/autoname{dir = 2; network = list("SS13","Supermatter","Atmospherics")},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-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 = 6},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplatecorner"},/area/engineering/engine_waste) +"cFV" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/engineering/engine_waste) +"cFW" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 0; pixel_y = 0},/turf/simulated/wall/r_wall,/area/engineering/engine_room) +"cFX" = (/obj/machinery/light/small{dir = 4},/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},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/engineering/engine_waste) +"cFY" = (/obj/machinery/light{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/obj/machinery/atmospherics/binary/pump{dir = 8},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cFZ" = (/obj/machinery/door_control{desc = "A remote control-switch for the engine control room blast doors."; id = "EngineEmitterPortWest"; name = "Engine Room Blast Doors"; pixel_x = 0; pixel_y = 25; req_access_txt = "10"},/obj/machinery/atmospherics/portables_connector{dir = 4},/turf/simulated/floor/plating{icon_state = "platebot"},/area/engineering/engine_room) +"cGa" = (/obj/machinery/power/terminal{dir = 4},/obj/structure/cable/yellow,/obj/machinery/power/sensor{name = "Powernet Sensor - Engine Output"; name_tag = "Engine Output"},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/engineering/engine_room) +"cGb" = (/obj/machinery/alarm{breach_detection = 0; dir = 2; frequency = 1439; name = "Engine Room Air Alarm"; pixel_y = 23},/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 10},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engineering/engine_room) +"cGc" = (/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engineering/engine_room) +"cGd" = (/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/power/smes/buildable{charge = 2e+006; RCon_tag = "Engine - Core"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/engineering/engine_room) +"cGe" = (/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/engineering/engine_room) +"cGf" = (/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/plating,/area/engineering/engine_room) "cGg" = (/turf/space,/area/shuttle/constructionsite/station) -"cGh" = (/obj/structure/table/reinforced,/turf/simulated/floor,/area/engineering/engineering_monitoring) -"cGi" = (/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/simulated/floor,/area/engineering/engineering_monitoring) +"cGh" = (/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cGi" = (/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/plating,/area/engineering/engine_room) "cGj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/engineering) "cGk" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 32; pixel_y = 0},/turf/space,/area/space) "cGl" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/medical/virology) -"cGm" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/structure/sign/directions/medical{dir = 1; icon_state = "direction_med"; pixel_x = 30; pixel_y = 4; tag = "icon-direction_med (NORTH)"},/obj/structure/sign/directions/evac{dir = 8; icon_state = "direction_evac"; pixel_x = 30; pixel_y = -4; tag = "icon-direction_evac (WEST)"},/turf/simulated/floor,/area/engineering) -"cGn" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor,/area/engineering) -"cGo" = (/obj/structure/closet/toolcloset,/obj/machinery/light{dir = 1},/obj/item/device/flashlight,/turf/simulated/floor,/area/engineering/workshop) -"cGp" = (/obj/structure/closet/toolcloset,/obj/item/device/flashlight,/turf/simulated/floor,/area/engineering/workshop) -"cGq" = (/obj/machinery/vending/tool,/turf/simulated/floor,/area/engineering/workshop) -"cGr" = (/obj/machinery/vending/engivend,/turf/simulated/floor,/area/engineering/workshop) -"cGs" = (/obj/machinery/shield_gen/external,/turf/simulated/floor/plating,/area/engineering/storage) -"cGt" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/engineering/workshop) -"cGu" = (/obj/machinery/shield_gen,/obj/machinery/light{dir = 1},/turf/simulated/floor/plating,/area/engineering/storage) -"cGv" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plating,/area/engineering/atmos) -"cGw" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/engineering/atmos) -"cGx" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/engineering/atmos) -"cGy" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor/plating,/area/engineering/atmos) -"cGz" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/floor/plating,/area/engineering/atmos) -"cGA" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/visible/green{dir = 8},/turf/simulated/floor/plating,/area/engineering/atmos) -"cGB" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/green{tag = "icon-intact (SOUTHWEST)"; icon_state = "intact"; dir = 10},/turf/simulated/floor/plating,/area/engineering/atmos) -"cGC" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plating,/area/engineering/atmos) -"cGD" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/manifold/visible/green{dir = 8},/turf/simulated/floor/plating,/area/engineering/atmos) -"cGE" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/visible/green{tag = "icon-intact (SOUTHWEST)"; icon_state = "intact"; dir = 10},/turf/simulated/floor/plating,/area/engineering/atmos) +"cGm" = (/turf/simulated/floor/plating,/area/engineering/engine_room) +"cGn" = (/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/engineering/engine_room) +"cGo" = (/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/engineering/engine_room) +"cGp" = (/obj/machinery/atmospherics/portables_connector,/turf/simulated/floor/plating{icon_state = "platebotc"},/area/engineering/engine_room) +"cGq" = (/obj/machinery/atmospherics/binary/pump{dir = 8},/turf/simulated/floor/plating,/area/engineering/engine_waste) +"cGr" = (/obj/machinery/atmospherics/pipe/manifold4w/visible/purple,/turf/simulated/floor/plating,/area/engineering/engine_waste) +"cGs" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engineering/engine_waste) +"cGt" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/turf/simulated/floor/plating,/area/engineering/engine_waste) +"cGu" = (/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "EngineEmitterPortWest"; layer = 3.3; name = "Engine Waste Handling Access"},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cGv" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/window/brigdoor{dir = 8; name = "Engine Waste"; req_access = null; req_access_txt = "0"; req_one_access_txt = "10;24"},/obj/machinery/atmospherics/portables_connector,/turf/simulated/floor/plating{icon_state = "platebot"},/area/engineering/engine_waste) +"cGw" = (/obj/machinery/atmospherics/omni/filter{use_power = 0; tag_east = 1; tag_north = 0; tag_south = 4; tag_west = 2},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cGx" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 6},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engineering/engine_room) +"cGy" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/engineering/engine_room) +"cGz" = (/obj/machinery/atmospherics/pipe/manifold/visible/yellow{dir = 4},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplatecorner"},/area/engineering/engine_room) +"cGA" = (/turf/simulated/floor/plating{dir = 4; icon_state = "warnplatecorner"},/area/engineering/engine_room) +"cGB" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/engineering/engine_room) +"cGC" = (/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cGD" = (/obj/machinery/atmospherics/binary/pump,/turf/simulated/floor/plating,/area/engineering/engine_room) +"cGE" = (/obj/machinery/atmospherics/unary/heat_exchanger{dir = 8},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/engineering/engine_waste) "cGF" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_y = 0},/turf/simulated/wall,/area/maintenance/engineering) "cGG" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/engineering) "cGH" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/maintenance/engineering) -"cGI" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/engineering/atmos) -"cGJ" = (/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/engineering) -"cGK" = (/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/engineering) -"cGL" = (/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area/engineering/workshop) -"cGM" = (/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 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/engineering/workshop) -"cGN" = (/turf/simulated/wall/r_wall,/area/engineering/locker_room) -"cGO" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/atmos{name = "Atmospherics Maintenance"; req_access_txt = "12;24"},/obj/machinery/atmospherics/pipe/simple/visible/supply,/turf/simulated/floor,/area/maintenance/atmos_control) -"cGP" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/atmos{name = "Atmospherics Maintenance"; req_access_txt = "12;24"},/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,/turf/simulated/floor,/area/maintenance/atmos_control) +"cGI" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/visible/purple{dir = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engineering/engine_waste) +"cGJ" = (/obj/machinery/atmospherics/unary/heat_exchanger{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 5},/area/engineering/engine_waste) +"cGK" = (/obj/machinery/door/window/brigdoor{dir = 8; name = "Engine Waste"; req_access = null; req_access_txt = "0"; req_one_access_txt = "10;24"},/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 9},/turf/simulated/floor/plating{icon_state = "platebot"},/area/engineering/engine_waste) +"cGL" = (/obj/machinery/atmospherics/pipe/manifold/visible/yellow{dir = 8},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cGM" = (/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engineering/engine_room) +"cGN" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cGO" = (/obj/machinery/atmospherics/pipe/manifold/visible/yellow{dir = 4},/obj/machinery/meter,/turf/simulated/floor/plating,/area/engineering/engine_room) +"cGP" = (/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/valve/digital/open{dir = 4},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/engineering/engine_room) "cGQ" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging{dir = 6},/turf/space,/area/space) "cGR" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging{dir = 4},/turf/space,/area/space) "cGS" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction{dir = 8},/obj/structure/lattice,/obj/structure/grille,/turf/space,/area/space) -"cGT" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan,/turf/simulated/wall/r_wall,/area/engineering/atmos) -"cGU" = (/obj/machinery/door/airlock/maintenance{name = "Atmospherics Maintenance Access"; req_access_txt = "12;24"},/obj/machinery/atmospherics/pipe/simple/hidden/purple,/turf/simulated/floor,/area/engineering/atmos) -"cGV" = (/obj/machinery/door/airlock/glass_atmos{name = "Atmospherics Monitoring Room"; req_access_txt = "24"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/engineering/atmos/monitoring) -"cGW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/engineering/engineering_monitoring) -"cGX" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Monitoring Room"; req_access_txt = "11"},/turf/simulated/floor,/area/engineering/engineering_monitoring) -"cGY" = (/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area/engineering/engineering_monitoring) -"cGZ" = (/obj/effect/landmark{name = "carpspawn"},/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/space,/area/space) -"cHa" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/heat_exchanging{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/space,/area/space) -"cHb" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/heat_exchanging{dir = 5},/turf/space,/area/space) -"cHc" = (/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "EngineVent"; name = "Engine Core Vent"; p_open = 0},/turf/simulated/floor/engine,/area/engineering/engine_room) -"cHd" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/heat_exchanging,/turf/space,/area/space) -"cHe" = (/obj/machinery/camera{c_tag = "Engineering Core South"; dir = 1; network = list("SS13","Supermatter")},/turf/simulated/floor/engine/nitrogen{dir = 8; icon_state = "warnplate"; name = "plating"},/area/engineering/engine_room) -"cHf" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/engineering/engine_room) -"cHg" = (/turf/simulated/floor/engine/nitrogen{dir = 4; icon_state = "warnplate"; name = "plating"},/area/engineering/engine_room) -"cHh" = (/turf/simulated/floor/engine/nitrogen,/area/engineering/engine_room) -"cHi" = (/obj/machinery/door_control{desc = "A remote control-switch for opening the engines blast doors."; id = "EngineRads"; name = "Radiation Collector Access"; pixel_x = 0; pixel_y = -25; req_access_txt = "10"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engineering/engine_room) -"cHj" = (/obj/machinery/power/rad_collector,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/engineering/engine_room) -"cHk" = (/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "EngineRads"; layer = 3.3; name = "Engine Radiation Collector Access"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/engineering/engine_room) -"cHl" = (/obj/machinery/door_control{id = "EngineVent"; name = "Engine Ventillatory Control"; pixel_x = -25; pixel_y = 0; req_access_txt = "10"},/turf/simulated/floor/plating,/area/engineering/engine_room) -"cHm" = (/obj/machinery/power/rad_collector,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cGT" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 6},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplatecorner"},/area/engineering/engine_room) +"cGU" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{tag = "icon-intact (SOUTHWEST)"; icon_state = "intact"; dir = 10},/turf/simulated/floor/plating{dir = 1; icon_state = "warnplatecorner"},/area/engineering/engine_room) +"cGV" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/turf/simulated/floor/plating,/area/engineering/engine_room) +"cGW" = (/obj/structure/grille,/obj/structure/grille,/turf/space,/area/space) +"cGX" = (/obj/machinery/atmospherics/unary/heat_exchanger{dir = 8},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 10},/area/engineering/engine_waste) +"cGY" = (/obj/machinery/atmospherics/pipe/manifold/visible/purple,/obj/machinery/meter,/turf/simulated/floor/plating,/area/engineering/engine_waste) +"cGZ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/visible/purple,/obj/machinery/meter{id = "wloop_atm_meter"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engineering/engine_waste) +"cHa" = (/obj/machinery/atmospherics/unary/heat_exchanger{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 6},/area/engineering/engine_waste) +"cHb" = (/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "EngineEmitterPortWest"; layer = 3.3; name = "Engine Waste Handling Access"},/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cHc" = (/obj/machinery/door/window/brigdoor{dir = 8; name = "Engine Waste"; req_access = null; req_access_txt = "0"; req_one_access_txt = "10;24"},/obj/structure/window/reinforced,/obj/machinery/atmospherics/binary/pump{dir = 8; name = "waste pump"},/turf/simulated/floor/plating{icon_state = "platebot"},/area/engineering/engine_waste) +"cHd" = (/obj/machinery/atmospherics/omni/filter{use_power = 0; tag_east = 1; tag_north = 4; tag_south = 0; tag_west = 2},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cHe" = (/obj/machinery/atmospherics/pipe/manifold/visible/purple,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engineering/engine_room) +"cHf" = (/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/engineering/engine_room) +"cHg" = (/obj/machinery/atmospherics/pipe/manifold/visible/yellow,/turf/simulated/floor/plating,/area/engineering/engine_room) +"cHh" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cHi" = (/obj/machinery/power/emitter{anchored = 1; id = "EngineEmitter"; state = 2},/obj/structure/cable/cyan,/turf/simulated/floor/plating,/area/engineering/engine_room) +"cHj" = (/obj/machinery/atmospherics/pipe/manifold/visible/yellow{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engineering/engine_room) +"cHk" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact (EAST)"},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cHl" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan{dir = 8},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engineering/engine_room) +"cHm" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact (EAST)"},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "EngineRadiatorViewport"; name = "Engine Radiator Viewport Shutter"; opacity = 0},/turf/simulated/floor/plating,/area/engineering/engine_room) "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) -"cHo" = (/obj/machinery/door_control{desc = "A remote control-switch for opening the engines blast doors."; id = "EngineRads"; name = "Radiation Collector Access"; pixel_x = 0; pixel_y = -25; req_access_txt = "10"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engineering/engine_room) +"cHo" = (/obj/machinery/atmospherics/pipe/manifold4w/visible/cyan,/obj/machinery/meter,/turf/simulated/floor/plating,/area/engineering/engine_room) "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) "cHq" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging{dir = 5},/turf/space,/area/space) -"cHr" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engineering/engine_room) -"cHs" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/engineering/engine_room) -"cHt" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engineering/engine_room) -"cHu" = (/obj/machinery/power/supermatter{layer = 4},/obj/machinery/mass_driver{id = "enginecore"},/turf/simulated/floor/engine/nitrogen{icon_state = "gcircuit"; name = "floor"},/area/engineering/engine_room) -"cHv" = (/turf/simulated/floor/engine/nitrogen{dir = 8; icon_state = "warnplate"; name = "plating"},/area/engineering/engine_room) -"cHw" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/plating,/area/engineering/engine_room) -"cHx" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 1; frequency = 1438; icon_state = "map_injector"; id = "cooling_in"; name = "Coolant Injector"; use_power = 1; pixel_y = 1; volume_rate = 700},/turf/simulated/floor/engine/nitrogen{dir = 1; icon_state = "warnplatecorner"; name = "plating"},/area/engineering/engine_room) -"cHy" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/engineering/engine_room) -"cHz" = (/obj/machinery/atmospherics/unary/vent_pump/engine{dir = 1; external_pressure_bound = 100; external_pressure_bound_default = 0; frequency = 1438; icon_state = "map_vent_in"; id_tag = "cooling_out"; initialize_directions = 1; use_power = 1; pressure_checks = 1; pressure_checks_default = 1; pump_direction = 0},/turf/simulated/floor/engine/nitrogen{icon_state = "warnplatecorner"; name = "plating"},/area/engineering/engine_room) -"cHA" = (/obj/machinery/air_sensor{frequency = 1438; id_tag = "engine_sensor"; output = 63},/turf/simulated/floor/engine/nitrogen{icon_state = "warnplate"; name = "plating"},/area/engineering/engine_room) -"cHB" = (/obj/machinery/light{dir = 8},/turf/simulated/floor/plating,/area/engineering/engine_room) -"cHC" = (/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/obj/machinery/power/smes/buildable{charge = 0; RCon_tag = "Solar - Aft Port"},/turf/simulated/floor/plating,/area/maintenance/portsolar) -"cHD" = (/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/engineering/engine_room) -"cHE" = (/obj/machinery/door_control{desc = "A remote control-switch for the engine radiator viewport shutters."; id = "EngineRadiatorViewport"; name = "Engine Radiator Viewport Shutters"; pixel_x = 25; pixel_y = 0; req_access_txt = "10"},/turf/simulated/floor/plating,/area/engineering/engine_room) -"cHF" = (/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/engineering/engine_room) -"cHG" = (/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},/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "EngineEmitterPort"; layer = 3.3; name = "Engine Blast Doors"},/turf/simulated/floor/plating,/area/engineering/engine_room) -"cHH" = (/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/engineering/engine_room) -"cHI" = (/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/engineering/engine_room) -"cHJ" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/heat_exchanging{dir = 6},/turf/space,/area/space) +"cHr" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/heat_exchanging{dir = 4},/turf/space,/area/space) +"cHs" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/structure/lattice,/turf/space,/area/space) +"cHt" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/heat_exchanging{tag = "icon-intact (SOUTHWEST)"; icon_state = "intact"; dir = 10},/turf/space,/area/space) +"cHu" = (/turf/simulated/wall/r_wall,/area/engineering/engine_waste) +"cHv" = (/obj/machinery/light/small,/turf/simulated/floor/plating,/area/engineering/engine_waste) +"cHw" = (/turf/simulated/floor/plating,/area/engineering/engine_waste) +"cHx" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplatecorner"},/area/engineering/engine_waste) +"cHy" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/plating,/area/engineering/engine_waste) +"cHz" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/engineering/engine_waste) +"cHA" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/engineering/engine_room) +"cHB" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplatecorner"},/area/engineering/engine_room) +"cHC" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/engineering/engine_room) +"cHD" = (/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/engineering/engine_room) +"cHE" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/engineering/engine_room) +"cHF" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/visible/yellow,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 6},/area/engineering/engine_room) +"cHG" = (/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/engineering/engine_room) +"cHH" = (/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/engineering/engine_room) +"cHI" = (/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/engineering/engine_room) +"cHJ" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating{dir = 1; icon_state = "warnplatecorner"},/area/engineering/engine_room) "cHK" = (/obj/item/stack/rods{amount = 10},/turf/space,/area/space) -"cHL" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/turf/simulated/floor/plating,/area/engineering/engine_room) -"cHM" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact (EAST)"},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "EngineRadiatorViewport"; name = "Engine Radiator Viewport Shutter"; opacity = 0},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/engineering/engine_room) -"cHN" = (/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/engineering/engine_room) -"cHO" = (/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/engineering/engine_room) -"cHP" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/visible/yellow,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 6},/area/engineering/engine_room) -"cHQ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/engineering/engine_room) -"cHR" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating{dir = 1; icon_state = "warnplatecorner"},/area/engineering/engine_room) -"cHS" = (/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/engineering/engine_room) -"cHT" = (/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/engineering/engine_room) -"cHU" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/engineering/engine_waste) -"cHV" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/engineering/engine_room) -"cHW" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/engineering/engine_room) -"cHX" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplatecorner"},/area/engineering/engine_room) -"cHY" = (/turf/simulated/wall/r_wall,/area/engineering/engine_waste) -"cHZ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplatecorner"},/area/engineering/engine_waste) -"cIa" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/plating,/area/engineering/engine_waste) +"cHL" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact (EAST)"},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "EngineRadiatorViewport"; name = "Engine Radiator Viewport Shutter"; opacity = 0},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/engineering/engine_room) +"cHM" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cHN" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/heat_exchanging{dir = 6},/turf/space,/area/space) +"cHO" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/heat_exchanging,/turf/space,/area/space) +"cHP" = (/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/engineering/engine_room) +"cHQ" = (/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},/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "EngineEmitterPort"; layer = 3.3; name = "Engine Blast Doors"},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cHR" = (/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/engineering/engine_room) +"cHS" = (/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/engineering/engine_room) +"cHT" = (/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/engineering/engine_room) +"cHU" = (/obj/machinery/door_control{desc = "A remote control-switch for the engine radiator viewport shutters."; id = "EngineRadiatorViewport"; name = "Engine Radiator Viewport Shutters"; pixel_x = 25; pixel_y = 0; req_access_txt = "10"},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cHV" = (/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/obj/machinery/power/smes/buildable{charge = 0; RCon_tag = "Solar - Aft Port"},/turf/simulated/floor/plating,/area/maintenance/portsolar) +"cHW" = (/obj/machinery/light{dir = 8},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cHX" = (/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "EngineRads"; layer = 3.3; name = "Engine Radiation Collector Access"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cHY" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engineering/engine_room) +"cHZ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cIa" = (/obj/machinery/power/rad_collector,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/engineering/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) -"cId" = (/obj/machinery/light/small,/turf/simulated/floor/plating,/area/engineering/engine_waste) -"cIe" = (/turf/simulated/floor/plating,/area/engineering/engine_waste) -"cIf" = (/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/power/smes/buildable{charge = 2e+006; RCon_tag = "Engine - Core"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/engineering/engine_room) -"cIg" = (/obj/machinery/light{dir = 8},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = -24},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/rnd/xenobiology) -"cIh" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_x = 0; pixel_y = 32},/obj/structure/cable/cyan{d2 = 8; icon_state = "0-8"},/obj/machinery/power/smes/buildable{charge = 2e+006; RCon_tag = "Substation - Atmospherics"},/turf/simulated/floor/plating,/area/engineering/atmos/storage) -"cIi" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/vending/wallmed1{name = "Emergency NanoMed"; pixel_x = -7; pixel_y = -32; req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 7; pixel_y = -32},/turf/simulated/floor,/area/rnd/xenobiology) -"cIj" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/obj/structure/extinguisher_cabinet{pixel_x = 25; pixel_y = 0},/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/medical/surgeryprep) -"cIk" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{autoclose = 0; name = "Acute Treatment"; req_access_txt = "5"},/turf/simulated/floor{dir = 8; icon_state = "whitered"},/area/medical/medbay) -"cIl" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/stool/bed/roller,/turf/simulated/floor{dir = 8; icon_state = "whitered"},/area/medical/sleeper) -"cIm" = (/obj/machinery/door/firedoor,/obj/machinery/door/blast/shutters{density = 0; dir = 4; icon_state = "shutter0"; id = "acute2"; name = "Acute Two Privacy Shutters"; opacity = 0},/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/medical/medbay) -"cIn" = (/obj/structure/stool/bed,/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) -"cIo" = (/obj/machinery/sleeper,/turf/simulated/floor{dir = 8; icon_state = "whitered"},/area/medical/sleeper) -"cIp" = (/obj/machinery/door/firedoor,/obj/machinery/door/blast/shutters{density = 0; dir = 4; icon_state = "shutter0"; id = "acute2"; name = "Acute Two Privacy Shutters"; opacity = 0},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/medical/medbay) -"cIq" = (/obj/machinery/door_control{id = "scanhide"; name = "Diagnostics Room Separation Shutters"; pixel_x = -6; pixel_y = -25; req_access_txt = "5"},/obj/machinery/iv_drip,/obj/machinery/door_control{id = "acute2"; name = "Acute Treatment Privacy Shutters"; pixel_x = 6; pixel_y = -25; req_access_txt = "5"},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) -"cIr" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 28},/turf/simulated/floor,/area/engineering/locker_room) -"cIs" = (/obj/item/device/radio/intercom{freerange = 1; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 28},/obj/structure/disposalpipe/segment,/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{dir = 4; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay) -"cIt" = (/obj/structure/closet/secure_closet/engineering_personal,/obj/item/weapon/tank/emergency_oxygen/engi,/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/turf/simulated/floor,/area/engineering/locker_room) -"cIu" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table,/obj/machinery/camera{c_tag = "Engineering Locker Room"; dir = 1; network = list("SS13")},/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/turf/simulated/floor,/area/engineering/locker_room) -"cIv" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "10;24"},/obj/machinery/door/firedoor,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/substation/engineering) -"cIw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plating,/area/maintenance/research_port) +"cId" = (/obj/machinery/air_sensor{frequency = 1438; id_tag = "engine_sensor"; output = 63},/turf/simulated/floor/engine/nitrogen{icon_state = "warnplate"; name = "plating"},/area/engineering/engine_room) +"cIe" = (/obj/machinery/atmospherics/unary/vent_pump/engine{dir = 1; external_pressure_bound = 100; external_pressure_bound_default = 0; frequency = 1438; icon_state = "map_vent_in"; id_tag = "cooling_out"; initialize_directions = 1; use_power = 1; pressure_checks = 1; pressure_checks_default = 1; pump_direction = 0},/turf/simulated/floor/engine/nitrogen{icon_state = "warnplatecorner"; name = "plating"},/area/engineering/engine_room) +"cIf" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 1; frequency = 1438; icon_state = "map_injector"; id = "cooling_in"; name = "Coolant Injector"; use_power = 1; pixel_y = 1; volume_rate = 700},/turf/simulated/floor/engine/nitrogen{dir = 1; icon_state = "warnplatecorner"; name = "plating"},/area/engineering/engine_room) +"cIg" = (/obj/machinery/power/rad_collector,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cIh" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engineering/engine_room) +"cIi" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cIj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cIk" = (/obj/machinery/power/supermatter{layer = 4},/obj/machinery/mass_driver{id = "enginecore"},/turf/simulated/floor/engine/nitrogen{icon_state = "gcircuit"; name = "floor"},/area/engineering/engine_room) +"cIl" = (/turf/simulated/floor/engine/nitrogen{dir = 4; icon_state = "warnplate"; name = "plating"},/area/engineering/engine_room) +"cIm" = (/turf/simulated/floor/engine/nitrogen{dir = 8; icon_state = "warnplate"; name = "plating"},/area/engineering/engine_room) +"cIn" = (/obj/machinery/door_control{id = "EngineVent"; name = "Engine Ventillatory Control"; pixel_x = -25; pixel_y = 0; req_access_txt = "10"},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cIo" = (/obj/machinery/door_control{desc = "A remote control-switch for opening the engines blast doors."; id = "EngineRads"; name = "Radiation Collector Access"; pixel_x = 0; pixel_y = -25; req_access_txt = "10"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engineering/engine_room) +"cIp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/engineering/engine_room) +"cIq" = (/turf/simulated/floor/engine/nitrogen,/area/engineering/engine_room) +"cIr" = (/obj/machinery/camera{c_tag = "Engineering Core South"; dir = 1; network = list("SS13","Supermatter")},/turf/simulated/floor/engine/nitrogen{dir = 8; icon_state = "warnplate"; name = "plating"},/area/engineering/engine_room) +"cIs" = (/obj/machinery/door_control{desc = "A remote control-switch for opening the engines blast doors."; id = "EngineRads"; name = "Radiation Collector Access"; pixel_x = 0; pixel_y = -25; req_access_txt = "10"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engineering/engine_room) +"cIt" = (/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "EngineVent"; name = "Engine Core Vent"; p_open = 0},/turf/simulated/floor/engine,/area/engineering/engine_room) +"cIu" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/heat_exchanging{dir = 5},/turf/space,/area/space) +"cIv" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/heat_exchanging{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/space,/area/space) +"cIw" = (/obj/effect/landmark{name = "carpspawn"},/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/space,/area/space) "cIJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/maintenance/portsolar) "cIK" = (/turf/simulated/wall/r_wall,/area/maintenance/portsolar) "cIL" = (/turf/simulated/wall/r_wall,/area/maintenance/engi_engine) @@ -7311,8 +7311,8 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauaauaauaauaauaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaamaaacKraazaavaaacKraazaavaaacKraazaavaafaafaafaafaaaaaaaaaaaaaaaaaaaafaaaaaaaafaaAaaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaaCaaDaaEaaDaaEaaDaaFaayaayaaGaaHaayaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaauaaaaaaaauaaaaaaaauaauaauaauaauaauaauaaaaaaaauaaaaaaaauaaaaaaaaaaaaaaaaaaaaIaafcKraazaavaaacKraazaavaafcKraazaavaafaaaaaaaafaafaaJaaaaaaaaaaaaaafaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaKaaLaafaayaaMaaNaaNaaNaaNaaNaaOaaPaaQaaRaaSaayaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaauaauaauaauaaaaauaauaauaauaauaauaauaauaauaaaaauaauaauaauaaaaaaaaaaaaaaaaaaaafaaacKraazaavaafcKraazaavaaacKraazaavaaaaaaaaaaaaaafaafaaaaaaaaaaaaaafaafaafaafaaaaaaaaTaaTaaTaaTaaTaaTaaTaafaaaaayaaUaaVaaEaaVaaEaaVaaWaaXaaYaaZabaaayabbabbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaauaauaauaauaaaaauaauaauaauaauaauaauaauaauaaaaauaauaauaauaaaaaaaaaaamaamaaIaafaaacKraazaavaafcKraazaavaaacKraazaavaafaaaaaaaacaaaaafaafabcabdabdabdabdabeabfaaaaaaaaTabgabganfabgabgaaTaaaaafaayabiabjaaXabkaaXabjaaXaayablaaZabmaayabnaboaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaauaauaauaauaaaaauaauaauaauaauaauaauaauaauaaaaauaauaauaauaaaaaaaaaaamaaaaafaaaaafaafapsaafaafaafapsaafaaaaafapsaafaaaaaaaaaaaaaaaabqabrabsabtabuamNabwabxabfaafaaaaaTabyabzabAabBabCaaTaaaaaaabDabEabFabGabHaaEabFaaEabIabJabKabLappabNabOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaadaadaadaadaadaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaauaauaauaauaaaaauaauaauaauaauaauaauaauaauaaaaauaauaauaauaaaaaaaaaaamaamaaIaafaaacKraazaavaafcKraazaavaaacKraazaavaafaaaaaaaacaaaaafaafabcabdabdabdabdabeabfaaaaaaaaTabgabgabhabgabgaaTaaaaafaayabiabjaaXabkaaXabjaaXaayablaaZabmaayabnaboaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaauaauaauaauaaaaauaauaauaauaauaauaauaauaauaaaaauaauaauaauaaaaaaaaaaamaaaaafaaaaafaafapsaafaafaafapsaafaaaaafapsaafaaaaaaaaaaaaaaaabqabrabsabtabuabvabwabxabfaafaaaaaTabyabzabAabBabCaaTaaaaaaabDabEabFabGabHaaEabFaaEabIabJabKabLappabNabOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaadaadaadaadaadaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaaaaaaaaaaaIaafaqMaqbapTaqTaqTaqTaqTaqTaqTaqTaqTaqTaqTaqTaqTarBaqbaqbaryabWabXabYabZacaacbaccacdaaTaaTaaTaaTaaTaceacfacgaaTaaTachaciacjackaclacmacnacmacoackackackacpacqacracsactaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaaaaafaaLaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaadaadaadaadaadaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaaaaaaaaaaamaaaaafaaaaafaafapjaafaaaaafapjaafaaaaafapjaafaaaaaaaaaaaaaaaabqabracvacwacxacyabdaczaaTaaTacBacAacDacCacEacFaaTaaTacGacHacIacJacKacLacMacNacOacPacQacQacRacSacracsabbabbabbabbabbabbaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaafaafaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaauaaaaaaaaaaamaamaaIaafaafcKrapgaavaaacKrapgaavaaacKrapgaavaafaaaaaaaaaaaaaafaafacUabdabdabdabdacVaaTacWacXacXacXacXacEacXacYaoZadaacQadbadcaddadeacMadfacQacQacQacQadgadhackadiadjabbadkadladmabbaaLaafaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -7328,13 +7328,13 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaaaaeaaeaaeaaeaaeaaaaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauaauaauaauaauaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfagUagVagWagWagWagWagWagWagWagDagXagYagZagWahaahbahcahdaheahfahgahhahiahjahkahmahlahnahnahnahnaddahoahpahqahrahsahtahuahvahwagvahxahyaboaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahzaaaaaaaaaahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaaaaeaaeaaeaaeaaeaaaaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfafQafRahAabfahBadEagWahCahDahEahFahGahHagDagZahIahFahJahKahLahLahMahNahOahPacXacXacEacXahQahRahSacQacQacQaddahTahUahVahWahXahYahZaiaaibagvahxaicabOaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahzahzahzahzahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadDaidaieaifabfaigadEagWaihaiiaijaikailaimagDagZahIainagWaioahLaipaiqahKahOairaisacXaitacXacXaiuacZahSacQacQaddaiwaixaiyagPagPaizagPagPaiAagvaiBaiCactaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahzaaaaaaahzaaaaaaahzahzahzahzahzahzahzaaaaaaahzaaaaaaahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaewagbagbaiDabfagbadEagWaiEaiFaiGaiHaiIahFagDaiJaiKaiLagWaiMaiNaiOaiOaiPaiQaiRaiSaiTacEaiUaiVaeFaiWaiXaiYaiZakNakfajcajdamsajfajgajhagPajiagvahxabbabbabbabbaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaaIaaIaamaamaaaaaaaaaaaaaaaaaaaaaaaaahzahzahzahzaaaahzahzahzahzahzahzahzahzahzaaaahzahzahzahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaewagbagbaiDabfagbadEagWaiEaiFaiGaiHaiIahFagDaiJaiKaiLagWaiMaiNaiOaiOaiPaiQaiRaiSaiTacEaiUaiVaeFaiWaiXaiYaiZakNajeajcajdakfajfajgajhagPajiagvahxabbabbabbabbaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaaIaaIaamaamaaaaaaaaaaaaaaaaaaaaaaaaahzahzahzahzaaaahzahzahzahzahzahzahzahzahzaaaahzahzahzahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabfajjabfabfajkajlagWagWajmagWagWajnagWagWagWajoagWagWajpajsajrantajtajuagWajvajwajxajyajqagWagWajzajAajBagWagWagWagpajCagpagpagpagpagpagvahxabbajDajEaboaaaaafaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaaaaafaaaaaqaaaaaaaaaaaaaaaaaaaaaaaaahzahzahzahzaaaahzahzahzahzahzahzahzahzahzaaaahzahzahzahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfagBafYajFafYajGajHajIajJajKajLajMajNajOajPajQajRajSajTajUajVajWajXajUajYajWajWajZakaakaakbakcakdahOakeajbakgajzakhakiakjakkaklakmaknakoakpalaakZakqabOaaaaaaaaaaaaaaaaaaaaaaaaakrakrakrakrakraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafabQaafaaIaaaaaaaaaaaaaaaaaaaaaaaaahzahzahzahzaaaahzahzahzahzahzahzahzahzahzaaaahzahzahzahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaamaamaaIaamaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfadEagWagWagWagWagWagWaksaktakuakvakwakxakyakzakAakBakCakDabvakFakwakGakwakwakHakIakJakKakLakMajaakOakPakJakQakRakSakTakUakVakWakXakYakoalIabbalbajeactaaaaaaaaaaafaaaaaaaaaaaaakrakrakrakrakraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaaIaaIaaIaaIaaaaaaaaaabpaaaaaaaaaaaIaaIaamaamaamaaaaaaahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaamaamaaIaamaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfadEagWagWagWagWagWagWaksaktakuakvakwakxakyakzakAakBakCakDakEakFakwakGakwakwakHakIakJakKakLakMajaakOakPakJakQakRakSakTakUakVakWakXakYakoalIabbalbamaactaaaaaaaaaaafaaaaaaaaaaaaakrakrakrakrakraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaaIaaIaaIaaIaaaaaaaaaabpaaaaaaaaaaaIaaIaamaamaamaaaaaaahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaafaaaaaqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfadEagWalcaldalealfagWalgalhahLalialjagWacTacuacTagWabValnabUagWalpalqalralsagDaltalualvalwalxagWabTabSabSabRagWalBalCalDalEalFalGalHakoamtanQamuanQanQaaaaaaaafaafaaaaaaaaaaaaakrakrakrakrakraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqaaaaaaaafaafaafaaaaaaaoYaafaafaaaaafaafaaaaaaaamaaaaaaahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafabMaafaaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafabfadEabPalMalMalNalOalPalQalRahKalSaljagWalTalUalValWalXalYalZabhahKambahKamcamdameameamfamgamhamiamjamkamlammakoamnamoampamqalDalDamrakoadQanQamvawKamwaaaaaaaaLaaaaaaaaaaafaaaakrakrakrakrakraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafanTanTanTanTanTaafalJaafanTanTanTanTanTaafaaIaaaaaaahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaamaaIaaIaaaaaaaaaaoXaaaaaaaaaaaIaaIaamaamaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfadEagWamAamBamCamDagWamEalRaljamFamGagWamHamIamJalWamKamLamMakEamOamPamQamRamSamgamgamfamgamTaoWamVamWamXazmakoamZanaalDamqalDalDanbakoancandaneamaangaafaaLaafaafaaLaafaafaafakrakranhakrakraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafanianjanjanjanjanualJansanqanqanqanqanwaafaaIaaaaaaahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafabMaafaaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafabfadEabPalMalMalNalOalPalQalRahKalSaljagWalTalUalValWalXalYalZamsahKambahKamcamdameameamfamgamhamiamjamkamlammakoamnamoampamqalDalDamrakoadQanQamvawKamwaaaaaaaaLaaaaaaaaaaafaaaakrakrakrakrakraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafanTanTanTanTanTaafalJaafanTanTanTanTanTaafaaIaaaaaaahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaamaaIaaIaaaaaaaaaaoXaaaaaaaaaaaIaaIaamaamaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfadEagWamAamBamCamDagWamEalRaljamFamGagWamHamIamJalWamKamLamMamNamOamPamQamRamSamgamgamfamgamTaoWamVamWamXanfakoamZanaalDamqalDalDanbakoancandaneasPangaafaaLaafaafaaLaafaafaafakrakranhakrakraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafanianjanjanjanjanualJansanqanqanqanqanwaafaaIaaaaaaahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaafaafaaaaaaaaaaoVaafaafaaaaafaafaaaaaaaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfankagWagWagWagWanlanmannanoanmanmanmanmanpaoPanpanraoQaojaoRanvaoSaoTaoUanzanAamgamgamfanBanCamianDanEamXanFanGanHanIanJanKanLanManNanGanOanPawLanRanSaaaaaaaafaaaaafaaLaafaaaakrakrakrakrakraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafapIapIapIapIapIaafalJaafapIapIapIapIapIaafaaIaaaahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafanVanVanVanVanVaafalkaafanVanVanVanVanVaafaaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanXanYanZaoaagDaobaocagWaodaoealKaogaohaoibqKaokaolaomaonaooaonaopaoqaoraonaoOaotamgamgaouaovaowamiaoxanEamXaoyanGaozaoAaoBaoCaoDaoEaoFanGaoGanQanQanQanQaoIaoJaoHaoLarPaaaaafaaaakrakrakrakrakraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaafaaaaaaaafalJaaaaaaaaaaafaaaaaaaaaaamaaaahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaIaafalzalyalyalyalyalAalkallaivaivaivaivagEaafaaIaaaaaaaaaaaaaaaaaaaacaaaaaaaaaanXanXapaapbagDalMapcapdapeapfaofaphapiaoMaonaonapkaplaonapmapnaoraonapoaonaoNapqapramgamfamgamTaosamYanEamXaptanGapuapvapwapxapyapzapAanGapBaoHapCapDapEapFapGaoHaoHapHaoHaoHaaaakrakrakrakrakraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafanTanTanTanTanTaafalJaafanTanTanTanTanTaafaaIaaaaaaahzahzahzahzaaaaaaahzahzahzahzahzahzahzaaaaaaahzahzahzahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -7342,34 +7342,34 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaafaaaaaaaafalkaaaaaaaaaaafaaaaaaaaaaaqaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaqzaqAaqBagDagWagWagWaqCalRagWalWalWalWaqDaqEapkaqFaqGaqHaonaqIaqJaqKaqLanyaqNaqOaqPaqQaqRaqSanxaqUaqVaqWamVanGaqXaqYaqZaraarbarcardanGarearfapFaqtaqtapFargaoHarhariarjaoHaaaakrakrakrakrakraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafapIapIapIapIapIaafalJaafapIapIapIapIapIaafaaIaaaaaaaaaaaaaaaaaaaaaaaaahzahzahzahzahzahzahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafanVanVanVanVanVaafalkaafanVanVanVanVanVaafaaIaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaqzarkaqBagDaobarlagWarmarnalKaogaroaoiaokarparqarrarsartaonarualWarvarwarxalLarzarAamUamzamyarEarFarGarHamjanGanGarIanGanGanGanGanGanGarJarKarLarMarMapFarNaoHaoHarOaoHaoHaaaaaaakrakrakraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaafaaaaaaaaaalJaaaaaaaaaaafaaaaaaaaaaamaaaaaaaaaaaaaaaaaaaaaaaaahzahzahzahzahzahzahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLamxaaLaaaaaaaaaaaaaaaaaaaaaaaIaafalzalyalyalyalyalAalkallaivaivaivaivagEaafaaIaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaqzarQaqBagDarRapcarSarTarUaefapharWaloaonaonarYarZasaasbaonascalWasdasealmasgasharAasiasjaskarEaoHaoHaoHaoHaoHaslasmasnasoasoaspaspasqasrassastastasuasvasvaswasxasyaszaqsaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaIaafanTanTanTanTanTaafalJaafanTanTanTanTanTaafaaIaaaaaaaaaaaaaaaaaaaaaaaaahzahzahzahzahzahzahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafasAasBasAaaaaaaaaaaaaaaaaaaaaaaaIaafapJapJapJapJapJaafalkaafapJapJapJapJapJaafaaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasCarQapbagDapLapMagWasDasEalKapOasFaoiasGasGasHasIaonasJaonasKalWasLasMbgMasOaxvarAasQasRasSarEasTasUasUasVasWasVasXasYasZasZasZasZasZasZasZasZasZasmataatbatcaoKatdateatfaafaafaxuaxtaxqaxqaxqaxqaxraxqaxqaxqaxqaxpaafaaaaaaaaaaaaaamaafanianjanjanjanjanualJansanqanqanqanqanwaafaaIaaaaaaaaaaaaaaaaaaaaaaaaahzahzahzahzahzahzahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatkatlatmaaaatnatoatpaaaaafatqatratqaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaafaaaaaaaaaalkaaaaaaaaaaafaaaaaaaaaaamaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaanXatsattagDagDagDagWagWagWagWalWalWalWalWalWatuaonaoratvaqEatwalWalWalWatxatxatxarAatyatzatAarEatBasZasZasZasZatCatDatEatFatGatHatIatJatKatLatMatNatOatPatPatPatPatPatPatPatPatPavzatRatRatRatRatRatRatRatRatRatRayiaafaaaaaaaaaaaaaamaaaapIapIapIapIapIaafalJaafapIapIapIapIapIaaaaaqaaaaaaaaaaaaaaaaaaaaaaaaaaaahzahzahzahzahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatSatTatUatTatSatVatWatVatSaafatqatXatYaaaaaaaaaaaaaaaaaaaaaaaIaafanVanVanVanVanVaafalkaafanVanVanVanVanVaafaaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafatZauaanYaubaucanXaafaafalWaudaueaufaugauhauiaonapnaonasJaqEaujaukaulaumaunauoauparAauqaurausarEatBasZaAfaySauvatCauxauyatFatGauzauAauBauCauDatMatNauEauFauGauHauIauHauJauwauLatPayjatRatRatRatRatRatRatRatRatRatRavzaafaaaaaaaaaaaaaamaaaaafaaaaafaafaaaaaabepaaaaaaaafaaaaaaaafaaaaaIaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauNatTauOatTauNatVauPatVauNauQauRauSauTauUauUauVauQauQaafaaaaaIaafalzalyalyalyalyalAalkallaivaivaivaivagEaafaaIaaaaaaaaaaaaaaaaaaaaaaaaanXanXanXauWanXanXapbaucanXaaaaaaalWauXalWauYauZavaalWavbavcaonavdaveaveavfavgaveavhaviavjarAavkauravlarEatBasZawoavoawpatCawravqatFatGauzauAavravsavtatMatNavuavvauGauHauHauHauJavwaylatPayjatRatRatRatRatRatRatRatRatRatRavzaafaaaaaaaaaaaaaamaamaaIaaaaaaaafaaaaaaabpaaaaafaafaafaafaaIaaIaaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauNavBavCavDauNavEavFavGauNavHavIavJavKavLavMavNavOauQaaaaaaaaqaaaapJapJapJapJapJaafbeSaafapJapJapJapJapJaaaaaIaaaaaaaaaaaaaaaaaaaaaaaaavQavRavSavTavUavVavWavXanXaaaaaaalWalWalWavYavZawaalWawbawcawdaweawxawgaukawhawiautawkawlarAawmaurawnarEatBasZawXawUawYaxaaxbawZatFatFatFawsawtawuatFatFatNawvawwauGauHauHauHauJawfavxavAaykatRatRatRatRatRatRatRatRatRatRavzaafaaaaaaaaaaaaaaaaaaaafaafaaaaafaaaaaabfyaaaaaaaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauNawGawHawIauNawGawHawIauNawJavHavHavHavHavHavHavHasAaaaaaaaaIaaaaafaaaaafaafaaaaaabfxaaaaaaaafaaaaaaaafaaaaaIaafaaaaaaaafaafaaaaaaaafawPavRawQawRavUawSaucawTanXaafaaLcqTatxatxatxatxatxatxatxatxatxatxatxatxatxatxatxatxatxatxarAawVaurawWarEatBasZauKaxjavmatCaxVavnaxdaxcaxfaxeaxhaxgaxhaxiaxkaxlaxmaxnaxoaxoaxoaxnaxmavxawyawzatRatRatRatRatRatRatRatRatRatRavzaafaaaaaaaaaaaaaaaaaaaaaaafaafaafaaaazoazpazoaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaatSauNaxwaxxatSauNaxyaxxatSauNawMauNauNauNauNauNavHatqaaaaaaaaIaaIaaIaaaaaaaafaaaaxBaxCaxBaafaafaafaafaaIaaIaaIaafanXanXanXanXaxDaxEaxEaxFanXanXanXanXaxGaucaucanXaxHaxIanXanXaxJaxKaxLaxMaxMaxMaxMaxMaxMaxMaxMaxNaxMaxMaxMaxMaxMaxOaxPaxQaxRaxOavpasZaxSawjcfSatCaxVaxXaxXaxXaxZaxYayaaybaxXavqaydayeayfaygayhayhayhayhawAavxawyawzatRatRatRatRatRatRatRatRatRatRavzaafaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaAuaAvaAuaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaynayoaypayoayqayoayrayoaysaytayvayvayvayvaywauNawNatqaaaaafaafaaaaaaaaaaaaaafaaaayyayzayAaafaaaaafaaaaaaaaaaaaaaaanXayBayCayDayCayCayCayCayEayCayCayFayGayDayHayIaxMaxMaxMaxMaxMaxMayJayKayLayLayLayLayMayLayLayNayLayMayLayLayLarAayOayPayQarEaAiasZcfSaycaxUatCayUayTayWayVayYayXayYayZayTazaazbazcazdazeazdazdazfawBawCawDawEaxsatRatRatRatRatRatRatRatRatRatRavzaafaaaaaaaaaaaaaaaaaaaaaaaaaafaafaBuaBvaBwaBxaByaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazqazrazsaztazuazvazwazxazyazwazzazAazwazwazBauNavHauRaafaafaaaaaaaaaaaaaaaaafazDazEazFazGazHaaaaafaaaaaaaaaaaaaaaanXazIanXazJazKazLazLazLazMazLazLazLazNazJazOazPazPazPazPazPazPazPazQazRayLazSazTazUazVazWazXazYazZaAaaAbazTaAcarAaAdayPayQarEaAiasZauuaAeauvatCaxWaxXaxXaxXaxXaAjaAkaAlaAmaAnaxkaAoaDtaApaApaApaAqaDratPaCJatPaykatRatRatRatRatRatRatRatRatRatRavzaafaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaCvaCwaCxaCyaCvaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafauNaAwaAxaAwaAyazsazsaAzaAwaAxaAwaAAaABaACaADauNavHauQauQaAEauUauUauUauUauVauQaAFaAGaAHaAIaAFanXanXaxHaAJaxIanXanXanXazIaAKazJaaaaafaaaaafaaaaafaaaaafaaaazJazOazPaALaAMaANaAOaAPazPazQaucayLaAQaAQaARaASaATaAUaAVaATaAWaAXazTaAcarAaAdayPaDdarEaAiasZawXaAgaAhaBbayRaBdaBeaBfaBgaBhaBiaBjaBjaBkaBjatPaBlaBmaBnaBoaBpaBrbnCaDvaFcaGzatRatRatRatRatRatRatRatRatRatRavzaafaaaaaaaaaaaaaaaaacaaaaaaaafaaaaCvaDzaDAaDBaCvaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaBzatSaBAawHaBBaBCaBDaBEaBFaBBawHaBGaBHaBIaBJaBKaBLavHavHavHavHavHavHavHavHaBOaBPaAFaBQaBRaBSaAFaBTaBUayCayCayCayCayCaBVaBWaBXazJaafaBYaBYaBYaBYaBYaBYaBYaafazJazOazPaBZaCaaCbaCcaBZazPazQaCdayLayLayLayLaCeaCfaCgaChaCfaCiaCjazTaCkarAaAdayPaClarEaJCasZaAZaAYaBaatCaxWavqatEaBjaBjaBjaBjaBjaCqaCraCsaBjatPatPatPatPaCtatPatPaHSaGCaHRatRatRatRatRatRatRatRatRatRatRayiaafaaaaaaaaaaaaaaabnDaaaaaaaafaaaaCvaEXaEYazhaCvaaaaaaaaaaafaafaaaaaaaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazqaAxaCzaCAaCAaCAaCAaCBaAxazqaaaaBIaCCaxzaBLaCEaCEaCEaCEaCEaCEaCEavHaCFaCGaAFaCHaCIaHTaAFaCKaCLaCKaCKaCKaCKaCKaCKaCKaCKaCMaaaaBYaCNaCOaCPaCQaCRaBYaaaazJazOazPaBZaCSaCTaCUaBZazPazQanXayLaCVaCWaARaCXaCYaCZaDaaDbaDcayLayLayLarAaAdayPayQarEaAiasZaxTaBcauvatCaDgavqatEaDhaDiaDjaDkaBjaCqaDlaCsaBjaDmaDnaDoaDpaDqaGwaDsatPatPaJWaxqaxqaxqaxqaxqaIbaxqaxqaxqaxqaHUaafaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaCvaCvaGxaGyaCvaDCaDDaDEaDCaDCaDCaDCaDCaDCaDCaDFaDGaDGaDGaDHaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaaaaaaaaaaaaaDIaDJaDKaDJaDJaDLaDMaDJaDJaDKaDNaDOaBIaDPaxAaBLaDRaDSaDTaDUaDVaDWaCEavHaDXauQaAFaAFaDYaDZaCMaEaaEbaEcaEdaEeaEfaEgaEhaEiaEjaCMaafaBYaEkaElaEmaEnaEoaBYaafazJazOazPaEpaEqaEraEsaEtazPazQaEuayLazSazTaEvaEwaCfaExaEyaATaEzaEAaEBaEBarAaAdayPayQarEaAiaCmaCmaCmaCmaCmaEHaEIatEaEJaEKaEKaELaEMaEKaENaEOaBjaEPaEQaERaESaETaCnaDsaafaaaaafaaaaafaaaaafaaaaafaaaaafaaaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaDCaAtaBqaDCazgaziazjaFdaFdaFdaFdaFeaFfaFgaFgaFgaFgaFgaFgaFgaFhaFiaFjaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaDIaDNaDJaFkaFlaFlaFmaFnaFoaFpaFqaFlaFlaFraFsaFtaDPayuaBLaFvayxaBMazCaBMaBNaCDavHaFuaDQaFxaBsaFwaEZaFIaFJaFKaFLaFLaFLaFMaFLaFLaFNaFOaCMaaaaBYaFPaElaFQaEnaFRaBYaaaazJazOazPaFSaFTaFUaFTaFVazPazQaFWayLayLayLayLaFXaCfaCgazTaCfaFYaFZazTaGaarAaGbaGcaGdarEaAiaDeaDfazkaCoaDeaJjaJkaGkaGlaGmaBjaBjaBjaBjaBjaBjaGnaGoaGpaGqaDpaGraGsaDsaDsaDsaDsaDsaDsaDsaDsaDsaFaaFbaDsaDsaFaaGtaDsaDsaaaaaaaDCaDCaDCaDCaDCaJAaJBaFdazlaznaDCaDCaDCaDCaDCaGDaGEaGFaGFaGFaGFaGFaGFaGGaGGaGHaGGaGGaGGaGGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaFraGIaGJaGKaFlaGLaFlaGLaFlaGLaFlaGLaFlaGMaGNaGOaDPayuaBLaGPaFAaGRaGSaGTaGUaCEaFBaFDaFCaFCaFCbazaFEaFCaHcaFLaFLaFLaFLaFLaFLaFLaFNaHdaCMaafaBYaHeaHfaHgaHhaHiaBYaafazJazOazPaHjaHkaFUaHlaHmazPaHnaHoayLaHpazTaARaHqaATaHrazTaCfaFYaHsazTaHtarAaHuaHvaHwarEaGuaDyaEUaGvaDwaDxaJGaJHatEaHCaHDaBjaHEaBjaHFaBjaHGaBjaHHaGpaHIaDpaHJaHKaHLaHMaHMaHNaHOaHKaHKaHKaHKaHKaHPaHKaHKaHKaHQaHVaDsaDsaDsaDCaGAaGBaHWaHWaKbaKTaDCaDCaIcaDCaIdaIeaIfaIgaGFaIhaGFaIiaIjaIkaIlbinaInaIoaIpaIqaIraIsbjFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIvaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaIwaFlaFlaDKaFlaGLaFlaGLaIxaGLaIyaGLaFlaGMaGNaGOaDPaFFaIAaIAaFGaICaIDaICaIAaIAaIEaIFaFCaGQaFHaGWaGVaFCaIKaILaIMaFLaFLaINaFLaIOaIPaIKaCMaaaaBYaBYaIQaIRaIQaBYaBYaaaazJazOazPaISaITaIUaFTaIVazPaIWaIXayLaIYazTaIZaEwaCfaJaaEyaATaJbaJcazTaJdaJeaJfaJgaJhaMbaECaCuaCuaCuaCuaCuaKUaMqaJlaJmaJnaBjaJoaBjaJpaBjaJqaBjaJraGpaJsaJtaGsaGsaDqaJvaDsaDsaJwaDsaDsaJxaDsaGsaJyaGsaGsaGsaJzaHZbbEaZAbnybcZaOfaOgaMraMraWxaYnaIgaJIaJJaJKaJLaJMaJNaIgaJOaJPaGFaJQaJRaJSaJTbinaJUaIoaJVaBtaGGaGGaGGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaFraJXaGJaGKaFlaGLaFlaGLaFlaGLaFlaGLaFlaGMaGNaGOaDPaGYaGXaHaaGZaHbaHbaIBaIzaIHaIGaIJaIIaJZaJYatiaKaaFCaIKaKmaKnaKoaKpaIKaKqaKraKsaKtaKuaaaaafaaaaKvaKwaKvaaaaafaaaaKuazOazPaKxaKyaKzaKAaKBazPaKCaKDayLaKEazTaARaKFaKGaHrazTaKHaKIaKJaKKaKLaJeaEDaKNaKOaKPaEEaKRaaaaaaaJlaKSaFyaEWaJlaKVaJnaJnaJnaKWaJnaJnaJnaBjaDpaKXaDpaDpaDpaDpaKYaDpaKZaLaaLbaLcaLdaLeaLfaLgaLhaLfaLfaLfaLfaLfaLiaLfaLfaLfaLfaLfaLfaLfaLfaAraIgaLjaLkaLlaEFaLnaLoaIgaLpathaGFaLraLsaLtaJTaRraJUaIoaJVaIoaLvaLwaLxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaLyaLzaDJaFkaFlaFlaFlaLAaFlaFlaLBaFlaFlaFraLCaLDaDPaLEaLFaLGaLHaLGaLGaLGaLGaLGaLIaLJaFCaFCaFCaFCaFCaFCaLLaLMaLNaLOaLOaLOaLOaLPaLQaLRaKuaLSaLTaLTaLUaLVaLWaLTaLTaLXaKuaLYaKuaKuaLZaMaaLZaJeaJeaMbaMcaJeaJeaJeaJeaMdaMeaMgaMfaMhaMiaJeaJeaJeaJeaMjaKNaMkaMkaMlaMmaMnaMoaJlaMpaEVaDuaJlaJlaJlaJlaJlaJlaJlaJlaBjaBjaMsaMtaMuaMvaMwaMxaMyaMzaKZaMAaMBaMCaMCaMDaLfaMEaMFaMGaMHaMIaMJaMKaMLaMMaMNaMHaMJaMIaMHaMOaLfaAraIgaMPaMQaMRaMSaMTaMUaIgaMVaMWaMXaMYaMZaNaaNbaGFaGGaNcaJVaIoaNdaNeaNfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaaaaaaaaaaaaaLyaDJaDKaDJaDJaDLaDMaDJaDJaDKaLzaNgaBIaNhaLEaNiaNjaNjaNkaNjaNlaIAaNmaNnaLJaNoaNpaNqaNraNsaNtaNraNuaNraNraNraNvaNraNraNwaNxaNyaNzaNAaNBaNzaNCaNzaNzaNzaNzaNDaNEaNFaNGaNraNHaNIaNJaNKaNLaNMaNLaNNaNOaNPaNQaNQaNRaNSaNTaNSaNUaNVaNWaEGaNYaNZaOaaObaOcaMkaMkaMkaOdaOeaGjaFzaOhaOiaOjaOkaOlaOmaOnaJlaOoaOpaOqaOraOsaOtaOuaOvaOwaOxaKZaOyaOzaOAaOAaOBaLfaOCaODaOEaOEaOEaOEaOFaOGaOHaOIaOJaOKaOKaOLaOMaLfaAraIgaONaOOaOPaOQaONaONaIgaORaOSaGFaOTaOUaOVaOWaGFaIoaIoaJVaIoaGGaGGaGGaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOXaOYaOZaPaaPaaPaaPaaPbaOYaOXaaaaBIaPcaPdaPeauMatQaPhaPhaPiaIAaPjaNnaPkaPlaPmaPnaPoaPpaPqaPqaPraPsaPsaPsaPtaPuaPuaPvaPwaNIaPqaPqaPxaPyaPzaPAaPBaPBaPCaPBaPDaPyaPyaPyaPEaPFaPGaPHaMkaPIaPJaPJaPJaPJaPJaPJaPJaPJaPKaPJaPLaPMaPNaPOaPPaPQaPRaPSaPTaPJaPUaPJaPVaPWaPXaPWaPWaPWaPWaPWaPWaPYaPZaRsaQbaQbaQbaQcaQbaQbaQdaQeaQfaQgaKZaQhaMCaQiaQjaQkaLfaQlaQmaQnaQnaQnaQnaQnaQoaQpatjaQraQnaQnaQsaQtaLfaAraIgaQuaONaONaQvaONaQwaIgaGFaGFaGFaGFaGFaGFaQxaGFaIoaIoaJVaIoaQyaQzaGGaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaafaBIawqaBIaQBaQCaGOaQDaQEaQFaQGaGOaQCaQHaQIaBIaQJaLEaPeatgaQLaPhaPhaPiaIAaQMaNnaLJaQNaNpaQOaQPaNraNraQQaQRaQSaQTaNraQUaQVaQWaQVaQXaQYaQVaQVaQZaQVaQVaRaaRbaQVaRcaQVaRdaNraNraNraReaPFaPGaPHaMkaRfaMkaRgaRgaRgaRgaRgaRgaRgaRgaRhaRiaRgaRjaRgaRgaRkaRgaRgaRgaRgaRlaRmaRnaRoaRoaRoaRoaRoaRoaRoaRpaRqaRpaJlaImawOawOawOawOawOaItaRuaRvaRwaKZaKZaKZaKZaKZaRxaLfaRyaQmaQnaRzaRAaRBasPaRDaREaRFaQraRGaRHaRIaRJaLfaAraIgaRKaRKaRLaRMaRNaRNaROaIgaRPaRQaRRaGGaRSaRTaRUaRVaRVaRWaRXaGGaRYaGGaRZaRZaRZaSaaSbaScaaaaaaaaaaaaaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaGeaGgaGgaGiaGfaGhaSdaOYaLDaDPaHxaHxaSfaLDaOYaLDaHyaHAaHzaLEaSkaSlaSlaNkaSlaNlaIAaSmaNnaSnaIAaLKaLKaSoaLKaLKaLKaLKaLKaLKaSpaSqaLKaLKaLKaLKaLKaLKaSraSsaSraLKaStaLKaNraQPaSuaSvaSwaSxaNraSyaLKaMbaMbaMkaSzaKOaSAaMnaMnaSBaSBaSBaSBaSCaJeasfasNarVarXarXavParXarXarVasNawFaJeaSJaSKaSKaSKaSKaSLaSLaSMaSNaRqaRpaJlaSOaSPaSPaSPaSPaSPaSPaSQaSRaSSaSTaSUaSVaSWaSXaSYaKZaKZaSZaTaaTbaTcaTdaTeaTeaTeaTfaTgaTfaTeaTeaTeaTeaAraIgaThaONaRLaRMaONaONaTiaIgaTjaTkaTlaGGaIoaTmaTnaToaTpaTqaIoaTraTsaGGaTtaTuaRZaTvaTwaTxaafaaaaaaaaaaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaKQaNXaLmaKMaQAaSgaSeaSiaShaSjaSiaTzaTyaTBaTAaTEaTCaTAaTFcozaTIaTJaTKaTLaTLaTLaTMaTLaTNaTOaIAaTPaTQaTRaTSaTTaTUaTVaTWaTXaTUaTYaTZaUaaUbaUcaUdaUeaUfaUgaUhaUeaUiaLKaLKaUjaLKaLKaLKaLKaUkaUlaLKaUmaMbaUnaSzaKOaUoaaaaaaaaaaaaaaaaaaaaaaUpaUqaUraUsaUtaUvaUuaUxaUwaUzaUyaVUaUpaaaaaaaaaaaaaaaaaaaaaaUAaSNaRqaUBaUCaUDaUEaUFaUFaUFaUFaUGaUHaUIaUFaUFaUFaUJaUKaULaUMaUNaUOaUPaUQaURaUSaUTaTfaUUaUVaUWaUXaUYaUZaVaaVbaTeaAraIgaVcaVcaRLaRMaVdaVdaVeaIgaIgaVfaIgaGGaVgaVhaViaViaViaVjaVkaGGaGGaGGaVlaVmaVnaVoaVpaVqaafaafaaaaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaKQcmVaVrclfaDPaVsaVsaVtaVsaVsaVsaVDaVsaVsaVtaVsaVsaYEaWYaVuaVvaKdaKdaKdaKdaKdaVwaVxaVyaVzaIAaTQaTQaVAaTSaVBaTUaTUaTUaTUaTUaTYaVCaTUaTUaTUaUdaUeclraVEaVFaUeaUiaVGaVHaKeaKcaVKaUmaVLaVMaVNaVOaVPaVQaMkaSzaKOaUoaaaaaaaaaaaaaUpaUpaUpaUpaVRaVSaVTaXEaVVaVWaVXaXFaVZaWaaWbaUpaUpaUpaUpaaaaaaaaaaaaaUAaSNaRqaRpaWcaSSaWdaWeaWfaSSaWgaWhaWiaWjaWkaWlaWmaWnaQbaWoaWpaWqaWraWsaWtaWtaWuaWvaWwaCpaWyaWzaWAaWBaWCaWDaWEaTeaAraIgaThaONaRLaRMaONaONaONaWFaWGaONaWHaGGaWIaWJaToaToaToaTqaIoaYsaGGaQaaVoaLuaWQaVoaWRaWSaWTaWTaWUaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTGaGgaTHaGiaBIaBIaBIaWVaWWaWWaWWaWWaWWaWWaWWaWXaBIaBLcpSaWZaIAaXcaXbaXbaXbaYraXdaIAaIAaIAaIAaTQaXeaXfaTSaXgaTUaTUaXhaXiaXjaXkaXhaTUaTUaTUaXlaUeaXmaXnaXoaUeaUiaVGaXpaKfaXraXsaUmaXtaVPaXuaXvaXwaXxaMkaSzaKOaMmaSCaMbaXyaUpaUpaVYaXAaXzaXCaXDaXDaXEaXFaXGaXEaXFaXDaXDaXHaXIaXJaXBaUpaUpaXyaJlaXLaXMaSNaRqaRpaJlaXNaWdaXOaWfaSSaXPaXQaSSaXRaXSaWfaSSaXTaOtaXUaXVaUQaXWaXXaXYaXZaYaaYbaYcaYdaYeaYfaYgaWBaYhaWDaYiaTeaAraIgaYjaYjaRLaRMaYkaONaONaYlaONaYmaAsaGGaIoaYoaYpaToaYqaZkaZXaWLbaOaYGaWOaZcaVoaYvaYwaYxaYyaYzaYAaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaYVaaaaaaaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaafaYCaYDcpKaYFaWPaYHaYHaYIaYJaYKaYLaYMaYNaYOaYPaYQaYRaYSaTSaYTaTUaTUaXhaXjaYUbbTaXhaTUaTUaYWaUdaUeaUeaUeaUeaUeaUiaVGaVGaVGaVGaVGaUmaYYaXvaYZaXvaXvaXxaMkaSzaKOaNSaNSaZaaZbaWNaUpaZdaZeaZfaZgaZfaZfaZfaZfaZhaZfaZfaZfaZfaZfaZfaZiaZjaUpaWMaZbaZlaZmaZnaSNaRqaRpaWcaSSaSSaSSaSSaSSaXPaZoaSSaXRaZpaWfaSSaXTaOtaZqaXVaUQaZraZsaZtaZuaYaaZvaZwaYdaYeaYfaYgaWBaYhaZxaZyaZzaHXaZzaZzaZzaZBaZCaZDaZEaOOaZFaZGaZHaZIaGGaZJaZKaZLaToaZMaZLaIoaIoaXaaYtaVoaYuaVoaZNaZOaZPaZQaWTaZRaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaZSaZTaZUbjnaZWaSFaZYaZZbaababbacbadbaebafaYObagbahbaibajaTSbakbalbambanbaobapbaqbarbarbarbasbataTSbaubavbawbaxaKgbajbnZaKhbajbaCaUmbaDbaEbaFbaGbaHbaIaMkbaJbaKaMkbaLbaMbaNbcybaPbaQbaRbaQbaSbaTbaUbaVbaWbaXbaYbaZbbabbbbbcbaQbbdbbebbfbeobbhbbibbjbbkbblbbmbbnaJlaUDaWdbboaWfaSSbbpbbqbbrbbsaXOaWfaSSaXTbbtaULaXVbbubbvbbwaUQaUQaYabbxbbybbzbbAbbBaYgaWBbbCaWDbbDaZzaIabbFbbFbbGbbHbbIaRLaRLaRLaRLaRLaRLaRLaGGbbJaYoaYpaToaYqaYpaIobbKaGGbbLaVoaYuaVoaZNbbMbbNbbOaafbbPaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBbbQbbRbbScqObbUaSFbaabaabaabaabaabbVbaabbWaYObbXbbYbaibbZbbZbbZbbZbcabbZbcbaTUbccbcdbcebcebcfbcgaTSaXebchbcibcjaKiaKjblcaKkbcobcobcpbcpbcpbcpbcpbcqaMbbcrbcsbctbcubcvbcwbcxbbgaUpbczbcAbcBbaBaUpaUpaUpaUpaUpbcDaUpaUpaUpbcCbcFbcGbczaUpbbgbcxbcHbcIbcJbcKbcLaRpaWcaSSaSSaSSaSSaSSaGpbcMaSSbcNaSSbcObcObcObcObcPbcQbcRbcSaUQaUQaUQbcTbcUaTeavybcWbcXaYgaWBaYhaWDbcYaZzaHYbdabdbbdcbddbdebddbddbddbddbddbdfbdgbdhbdibdjbdkbdlbdmbdnbdobdpbdqbdraVoaYubdsaZNaVobdtbbOaafaaaaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafasAasBasAaaaaaaaaaaaaaaaaaaaaaaaIaafapJapJapJapJapJaafalkaafapJapJapJapJapJaafaaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasCarQapbagDapLapMagWasDasEalKapOasFaoiasGasGasHasIaonasJaonasKalWasLasMbgMasOatgarAasQasRasSarEasTasUasUasVasWasVasXasYasZasZasZasZasZasZasZasZasZasmataatbatcaoKatdateatfaafaafathatjatiatiatiatiatQatiatiatiatiauMaafaaaaaaaaaaaaaamaafanianjanjanjanjanualJansanqanqanqanqanwaafaaIaaaaaaaaaaaaaaaaaaaaaaaaahzahzahzahzahzahzahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatkatlatmaaaatnatoatpaaaaafatqatratqaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaafaaaaaaaaaalkaaaaaaaaaaafaaaaaaaaaaamaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaanXatsattagDagDagDagWagWagWagWalWalWalWalWalWatuaonaoratvaqEatwalWalWalWatxatxatxarAatyatzatAarEatBasZasZasZasZatCatDatEatFatGatHatIatJatKatLatMatNatOatPatPatPatPatPatPatPatPatPavyatRatRatRatRatRatRatRatRatRatRavzaafaaaaaaaaaaaaaamaaaapIapIapIapIapIaafalJaafapIapIapIapIapIaaaaaqaaaaaaaaaaaaaaaaaaaaaaaaaaaahzahzahzahzahzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatSatTatUatTatSatVatWatVatSaafatqatXatYaaaaaaaaaaaaaaaaaaaaaaaIaafanVanVanVanVanVaafalkaafanVanVanVanVanVaafaaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafatZauaanYaubaucanXaafaafalWaudaueaufaugauhauiaonapnaonasJaqEaujaukaulaumaunauoauparAauqaurausarEatBasZaAfaySauvatCauxauyatFatGauzauAauBauCauDatMatNauEauFauGauHauIauHauJauwauLatPavAatRatRatRatRatRatRatRatRatRatRavyaafaaaaaaaaaaaaaamaaaaafaaaaafaafaaaaaabepaaaaaaaafaaaaaaaafaaaaaIaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauNatTauOatTauNatVauPatVauNauQauRauSauTauUauUauVauQauQaafaaaaaIaafalzalyalyalyalyalAalkallaivaivaivaivagEaafaaIaaaaaaaaaaaaaaaaaaaaaaaaanXanXanXauWanXanXapbaucanXaaaaaaalWauXalWauYauZavaalWavbavcaonavdaveaveavfavgaveavhaviavjarAavkauravlarEatBasZawoavoawpatCawravqatFatGauzauAavravsavtatMatNavuavvauGauHauHauHauJavwavQatPavAatRatRatRatRatRatRatRatRatRatRavyaafaaaaaaaaaaaaaamaamaaIaaaaaaaafaaaaaaabpaaaaafaafaafaafaaIaaIaaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauNavBavCavDauNavEavFavGauNavHavIavJavKavLavMavNavOauQaaaaaaaaqaaaapJapJapJapJapJaafbeSaafapJapJapJapJapJaaaaaIaaaaaaaaaaaaaaaaaaaaaaaaavVavRavSavTavUawfavWavXanXaaaaaaalWalWalWavYavZawaalWawbawcawdaweawxawgaukawhawiautawkawlarAawmaurawnarEatBasZawXawUawYaxaaxbawZatFatFatFawsawtawuatFatFatNawvawwauGauHauHauHauJawyavxawzaykatRatRatRatRatRatRatRatRatRatRavyaafaaaaaaaaaaaaaaaaaaaafaafaaaaafaaaaaabfyaaaaaaaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauNawGawHawIauNawGawHawIauNawJavHavHavHavHavHavHavHasAaaaaaaaaIaaaaafaaaaafaafaaaaaabfxaaaaaaaafaaaaaaaafaaaaaIaafaaaaaaaafaafaaaaaaaafawPavRawQawRavUawSaucawTanXaafaaLcqTatxatxatxatxatxatxatxatxatxatxatxatxatxatxatxatxatxatxarAawVaurawWarEatBasZauKaxjavmatCaxVavnaxdaxcaxfaxeaxhaxgaxhaxiaxkaxlaxmaxnaxoaxoaxoaxnaxmavxawBawAatRatRatRatRatRatRatRatRatRatRavyaafaaaaaaaaaaaaaaaaaaaaaaafaafaafaaaazoazpazoaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaatSauNaxwaxxatSauNaxyaxxatSauNawMauNauNauNauNauNavHatqaaaaaaaaIaaIaaIaaaaaaaafaaaaxBaxCaxBaafaafaafaafaaIaaIaaIaafanXanXanXanXaxDaxEaxEaxFanXanXanXanXaxGaucaucanXaxHaxIanXanXaxJaxKaxLaxMaxMaxMaxMaxMaxMaxMaxMaxNaxMaxMaxMaxMaxMaxOaxPaxQaxRaxOavpasZaxSawjcfSatCaxVaxXaxXaxXaxZaxYayaaybaxXavqaydayeayfaygayhayhayhayhawCavxawBawAatRatRatRatRatRatRatRatRatRatRavyaafaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaAuaAvaAuaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaynayoaypayoayqayoayrayoaysaytayvayvayvayvaywauNawNatqaaaaafaafaaaaaaaaaaaaaafaaaayyayzayAaafaaaaafaaaaaaaaaaaaaaaanXayBayCayDayCayCayCayCayEayCayCayFayGayDayHayIaxMaxMaxMaxMaxMaxMayJayKayLayLayLayLayMayLayLayNayLayMayLayLayLarAayOayPayQarEaAiasZcfSaycaxUatCayUayTayWayVayYayXayYayZayTazaazbazcazdazeazdazdazfawDaxpawEaxqaxsatRatRatRatRatRatRatRatRatRatRavyaafaaaaaaaaaaaaaaaaaaaaaaaaaafaafaBuaBvaBwaBxaByaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazqazrazsaztazuazvazwazxazyazwazzazAazwazwazBauNavHauRaafaafaaaaaaaaaaaaaaaaafazDazEazFazGazHaaaaafaaaaaaaaaaaaaaaanXazIanXazJazKazLazLazLazMazLazLazLazNazJazOazPazPazPazPazPazPazPazQazRayLazSazTazUazVazWazXazYazZaAaaAbazTaAcarAaAdayPayQarEaAiasZauuaAeauvatCaxWaxXaxXaxXaxXaAjaAkaAlaAmaAnaxkaAoaxraApaApaApaAqaxtatPaxuatPaykatRatRatRatRatRatRatRatRatRatRavyaafaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaCvaCwaCxaCyaCvaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafauNaAwaAxaAwaAyazsazsaAzaAwaAxaAwaAAaABaACaADauNavHauQauQaAEauUauUauUauUauVauQaAFaAGaAHaAIaAFanXanXaxHaAJaxIanXanXanXazIaAKazJaaaaafaaaaafaaaaafaaaaafaaaazJazOazPaALaAMaANaAOaAPazPazQaucayLaAQaAQaARaASaATaAUaAVaATaAWaAXazTaAcarAaAdayPaDdarEaAiasZawXaAgaAhaBbayRaBdaBeaBfaBgaBhaBiaBjaBjaBkaBjatPaBlaBmaBnaBoaBpaBrayiaxvaylayjatRatRatRatRatRatRatRatRatRatRavyaafaaaaaaaaaaaaaaaaacaaaaaaaafaaaaCvaDzaDAaDBaCvaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaBzatSaBAawHaBBaBCaBDaBEaBFaBBawHaBGaBHaBIaBJaBKaBLavHavHavHavHavHavHavHavHaBOaBPaAFaBQaBRaBSaAFaBTaBUayCayCayCayCayCaBVaBWaBXazJaafaBYaBYaBYaBYaBYaBYaBYaafazJazOazPaBZaCaaCbaCcaBZazPazQaCdayLayLayLayLaCeaCfaCgaChaCfaCiaCjazTaCkarAaAdayPaClarEaJCasZaAZaAYaBaatCaxWavqatEaBjaBjaBjaBjaBjaCqaCraCsaBjatPatPatPatPaCtatPatPazgaziazhatRatRatRatRatRatRatRatRatRatRavzaafaaaaaaaaaaaaaaaazjaaaaaaaafaaaaCvaEXaEYazkaCvaaaaaaaaaaafaafaaaaaaaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazqaAxaCzaCAaCAaCAaCAaCBaAxazqaaaaBIaCCaxzaBLaCEaCEaCEaCEaCEaCEaCEavHaCFaCGaAFaCHaCIazlaAFaCKaCLaCKaCKaCKaCKaCKaCKaCKaCKaCMaaaaBYaCNaCOaCPaCQaCRaBYaaaazJazOazPaBZaCSaCTaCUaBZazPazQanXayLaCVaCWaARaCXaCYaCZaDaaDbaDcayLayLayLarAaAdayPayQarEaAiasZaxTaBcauvatCaDgavqatEaDhaDiaDjaDkaBjaCqaDlaCsaBjaDmaDnaDoaDpaDqaGwaDsatPatPazmatiatiatiatiatiaznatiatiatiatiaAraafaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaCvaCvaGxaGyaCvaDCaDDaDEaDCaDCaDCaDCaDCaDCaDCaDFaDGaDGaDGaDHaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaaaaaaaaaaaaaDIaDJaDKaDJaDJaDLaDMaDJaDJaDKaDNaDOaBIaDPaxAaBLaDRaDSaDTaDUaDVaDWaCEavHaDXauQaAFaAFaDYaDZaCMaEaaEbaEcaEdaEeaEfaEgaEhaEiaEjaCMaafaBYaEkaElaEmaEnaEoaBYaafazJazOazPaEpaEqaEraEsaEtazPazQaEuayLazSazTaEvaEwaCfaExaEyaATaEzaEAaEBaEBarAaAdayPayQarEaAiaCmaCmaCmaCmaCmaEHaEIatEaEJaEKaEKaELaEMaEKaENaEOaBjaEPaEQaERaESaETaCnaDsaafaaaaafaaaaafaaaaafaaaaafaaaaafaaaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaDCaAtaAsaDCaBqaBtaBsaFdaFdaFdaFdaFeaFfaFgaFgaFgaFgaFgaFgaFgaFhaFiaFjaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaDIaDNaDJaFkaFlaFlaFmaFnaFoaFpaFqaFlaFlaFraFsaFtaDPayuaBLaFvayxaBMazCaBMaBNaCDavHaFuaDQaFxaCpaDraCJaFIaFJaFKaFLaFLaFLaFMaFLaFLaFNaFOaCMaaaaBYaFPaElaFQaEnaFRaBYaaaazJazOazPaFSaFTaFUaFTaFVazPazQaFWayLayLayLayLaFXaCfaCgazTaCfaFYaFZazTaGaarAaGbaGcaGdarEaAiaDeaDfaDtaCoaDeaDvaDuaGkaGlaGmaBjaBjaBjaBjaBjaBjaGnaGoaGpaGqaDpaGraGsaDsaDsaDsaDsaDsaDsaDsaDsaDsaFaaFbaDsaDsaFaaGtaDsaDsaaaaaaaDCaDCaDCaDCaDCaEWaEVaFdaEZaFcaDCaDCaDCaDCaDCaGDaGEaGFaGFaGFaGFaGFaGFaGGaGGaGHaGGaGGaGGaGGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaFraGIaGJaGKaFlaGLaFlaGLaFlaGLaFlaGLaFlaGMaGNaGOaDPayuaBLaGPaFAaGRaGSaGTaGUaCEaFBaFDaFCaFCaFCbazaFEaFCaHcaFLaFLaFLaFLaFLaFLaFLaFNaHdaCMaafaBYaHeaHfaHgaHhaHiaBYaafazJazOazPaHjaHkaFUaHlaHmazPaHnaHoayLaHpazTaARaHqaATaHrazTaCfaFYaHsazTaHtarAaHuaHvaHwarEaGuaDyaEUaGvaDwaDxaFyaFwatEaHCaHDaBjaHEaBjaHFaBjaHGaBjaHHaGpaHIaDpaHJaHKaHLaHMaHMaHNaHOaHKaHKaHKaHKaHKaHPaHKaHKaHKaHQaHVaDsaDsaDsaDCaGjaFzaGzaGzaGBaGAaDCaDCaIcaDCaIdaIeaIfaIgaGFaIhaGFaIiaIjaIkaIlbinaInaIoaIpaIqaIraIsbjFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIvaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaIwaFlaFlaDKaFlaGLaFlaGLaIxaGLaIyaGLaFlaGMaGNaGOaDPaFFaIAaIAaFGaICaIDaICaIAaIAaIEaIFaFCaGQaFHaGWaGVaFCaIKaILaIMaFLaFLaINaFLaIOaIPaIKaCMaaaaBYaBYaIQaIRaIQaBYaBYaaaazJazOazPaISaITaIUaFTaIVazPaIWaIXayLaIYazTaIZaEwaCfaJaaEyaATaJbaJcazTaJdaJeaJfaJgaJhaMbaECaCuaCuaCuaCuaCuaHRaGCaJlaJmaJnaBjaJoaBjaJpaBjaJqaBjaJraGpaJsaJtaGsaGsaDqaJvaDsaDsaJwaDsaDsaJxaDsaGsaJyaGsaGsaGsaJzaHZaHTaHSaHWaHUaHYaHXaIaaIaaJjaIbaIgaJIaJJaJKaJLaJMaJNaIgaJOaJPaGFaJQaJRaJSaJTbinaJUaIoaJVaJkaGGaGGaGGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaFraJXaGJaGKaFlaGLaFlaGLaFlaGLaFlaGLaFlaGMaGNaGOaDPaGYaGXaHaaGZaHbaHbaIBaIzaIHaIGaIJaIIaJZaJYaJAaKaaFCaIKaKmaKnaKoaKpaIKaKqaKraKsaKtaKuaaaaafaaaaKvaKwaKvaaaaafaaaaKuazOazPaKxaKyaKzaKAaKBazPaKCaKDayLaKEazTaARaKFaKGaHrazTaKHaKIaKJaKKaKLaJeaEDaKNaKOaKPaEEaKRaaaaaaaJlaKSaJGaJBaJlaKVaJnaJnaJnaKWaJnaJnaJnaBjaDpaKXaDpaDpaDpaDpaKYaDpaKZaLaaLbaLcaLdaLeaLfaLgaLhaLfaLfaLfaLfaLfaLiaLfaLfaLfaLfaLfaLfaLfaLfaJHaIgaLjaLkaLlaEFaLnaLoaIgaLpaJWaGFaLraLsaLtaJTaRraJUaIoaJVaIoaLvaLwaLxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaLyaLzaDJaFkaFlaFlaFlaLAaFlaFlaLBaFlaFlaFraLCaLDaDPaLEaLFaLGaLHaLGaLGaLGaLGaLGaLIaLJaFCaFCaFCaFCaFCaFCaLLaLMaLNaLOaLOaLOaLOaLPaLQaLRaKuaLSaLTaLTaLUaLVaLWaLTaLTaLXaKuaLYaKuaKuaLZaMaaLZaJeaJeaMbaMcaJeaJeaJeaJeaMdaMeaKTaKbaMhaMiaJeaJeaJeaJeaMjaKNaMkaMkaMlaMmaMnaMoaJlaMpaLqaKUaJlaJlaJlaJlaJlaJlaJlaJlaBjaBjaMsaMtaMuaMvaMwaMxaMyaMzaKZaMAaMBaMCaMCaMDaLfaMEaMFaMGaMHaMIaMJaMKaMLaMMaMNaMHaMJaMIaMHaMOaLfaJHaIgaMPaMQaMRaMSaMTaMUaIgaMVaMWaMXaMYaMZaNaaNbaGFaGGaNcaJVaIoaNdaNeaNfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaaaaaaaaaaaaaLyaDJaDKaDJaDJaDLaDMaDJaDJaDKaLzaNgaBIaNhaLEaNiaNjaNjaNkaNjaNlaIAaNmaNnaLJaNoaNpaNqaNraNsaNtaNraNuaNraNraNraNvaNraNraNwaNxaNyaNzaNAaNBaNzaNCaNzaNzaNzaNzaNDaNEaNFaNGaNraNHaNIaNJaNKaNLaNMaNLaNNaNOaNPaNQaNQaNRaNSaNTaNSaNUaNVaNWaEGaNYaNZaOaaObaOcaMkaMkaMkaOdaOeaMgaMfaOhaOiaOjaOkaOlaOmaOnaJlaOoaOpaOqaOraOsaOtaOuaOvaOwaOxaKZaOyaOzaOAaOAaOBaLfaOCaODaOEaOEaOEaOEaOFaOGaOHaOIaOJaOKaOKaOLaOMaLfaJHaIgaONaOOaOPaOQaONaONaIgaORaOSaGFaOTaOUaOVaOWaGFaIoaIoaJVaIoaGGaGGaGGaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOXaOYaOZaPaaPaaPaaPaaPbaOYaOXaaaaBIaPcaPdaPeaMraMqaPhaPhaPiaIAaPjaNnaPkaPlaPmaPnaPoaPpaPqaPqaPraPsaPsaPsaPtaPuaPuaPvaPwaNIaPqaPqaPxaPyaPzaPAaPBaPBaPCaPBaPDaPyaPyaPyaPEaPFaPGaPHaMkaPIaPJaPJaPJaPJaPJaPJaPJaPJaPKaPJaPLaPMaPNaPOaPPaPQaPRaPSaPTaPJaPUaPJaPVaPWaPXaPWaPWaPWaPWaPWaPWaPYaPZaRsaQbaQbaQbaQcaQbaQbaQdaQeaQfaQgaKZaQhaMCaQiaQjaQkaLfaQlaQmaQnaQnaQnaQnaQnaQoaQpaOfaQraQnaQnaQsaQtaLfaJHaIgaQuaONaONaQvaONaQwaIgaGFaGFaGFaGFaGFaGFaQxaGFaIoaIoaJVaIoaQyaQzaGGaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaafaBIawqaBIaQBaQCaGOaQDaQEaQFaQGaGOaQCaQHaQIaBIaQJaLEaPeaOgaQLaPhaPhaPiaIAaQMaNnaLJaQNaNpaQOaQPaNraNraQQaQRaQSaQTaNraQUaQVaQWaQVaQXaQYaQVaQVaQZaQVaQVaRaaRbaQVaRcaQVaRdaNraNraNraReaPFaPGaPHaMkaRfaMkaRgaRgaRgaRgaRgaRgaRgaRgaRhaRiaRgaRjaRgaRgaRkaRgaRgaRgaRgaRlaRmaRnaRoaRoaRoaRoaRoaRoaRoaRpaRqaRpaJlaImawOawOawOawOawOaItaRuaRvaRwaKZaKZaKZaKZaKZaRxaLfaRyaQmaQnaRzaRAaRBaPfaRDaREaRFaQraRGaRHaRIaRJaLfaJHaIgaRKaRKaRLaRMaRNaRNaROaIgaRPaRQaRRaGGaRSaRTaRUaRVaRVaRWaRXaGGaRYaGGaRZaRZaRZaSaaSbaScaaaaaaaaaaaaaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaGeaGgaGgaGiaGfaGhaSdaOYaLDaDPaHxaHxaSfaLDaOYaLDaHyaHAaHzaLEaSkaSlaSlaNkaSlaNlaIAaSmaNnaSnaIAaLKaLKaSoaLKaLKaLKaLKaLKaLKaSpaSqaLKaLKaLKaLKaLKaLKaSraSsaSraLKaStaLKaNraQPaSuaSvaSwaSxaNraSyaLKaMbaMbaMkaSzaKOaSAaMnaMnaSBaSBaSBaSBaSCaJeasfasNarVarXarXavParXarXarVasNawFaJeaSJaSKaSKaSKaSKaSLaSLaSMaSNaRqaRpaJlaSOaSPaSPaSPaSPaSPaSPaSQaSRaSSaSTaSUaSVaSWaSXaSYaKZaKZaSZaTaaTbaTcaTdaTeaTeaTeaTfaTgaTfaTeaTeaTeaTeaJHaIgaThaONaRLaRMaONaONaTiaIgaTjaTkaTlaGGaIoaTmaTnaToaTpaTqaIoaTraTsaGGaTtaTuaRZaTvaTwaTxaafaaaaaaaaaaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaKQaNXaLmaKMaQAaSgaSeaSiaShaSjaSiaTzaTyaTBaTAaTEaTCaTAaTFcozaTIaTJaTKaTLaTLaTLaTMaTLaTNaTOaIAaTPaTQaTRaTSaTTaTUaTVaTWaTXaTUaTYaTZaUaaUbaUcaUdaUeaUfaUgaUhaUeaUiaLKaLKaUjaLKaLKaLKaLKaUkaUlaLKaUmaMbaUnaSzaKOaUoaaaaaaaaaaaaaaaaaaaaaaUpaUqaUraUsaUtaUvaUuaUxaUwaUzaUyaVUaUpaaaaaaaaaaaaaaaaaaaaaaUAaSNaRqaUBaUCaUDaUEaUFaUFaUFaUFaUGaUHaUIaUFaUFaUFaUJaUKaULaUMaUNaUOaUPaUQaURaUSaUTaTfaUUaUVaUWaUXaUYaUZaVaaVbaTeaJHaIgaVcaVcaRLaRMaVdaVdaVeaIgaIgaVfaIgaGGaVgaVhaViaViaViaVjaVkaGGaGGaGGaVlaVmaVnaVoaVpaVqaafaafaaaaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaKQcmVaVrclfaDPaVsaVsaVtaVsaVsaVsaVDaVsaVsaVtaVsaVsaYEaWYaVuaVvaKdaKdaKdaKdaKdaVwaVxaVyaVzaIAaTQaTQaVAaTSaVBaTUaTUaTUaTUaTUaTYaVCaTUaTUaTUaUdaUeclraVEaVFaUeaUiaVGaVHaKeaKcaVKaUmaVLaVMaVNaVOaVPaVQaMkaSzaKOaUoaaaaaaaaaaaaaUpaUpaUpaUpaVRaVSaVTaXEaVVaVWaVXaXFaVZaWaaWbaUpaUpaUpaUpaaaaaaaaaaaaaUAaSNaRqaRpaWcaSSaWdaWeaWfaSSaWgaWhaWiaWjaWkaWlaWmaWnaQbaWoaWpaWqaWraWsaWtaWtaWuaWvaWwaPgaWyaWzaWAaWBaWCaWDaWEaTeaJHaIgaThaONaRLaRMaONaONaONaWFaWGaONaWHaGGaWIaWJaToaToaToaTqaIoaYsaGGaQaaVoaLuaWQaVoaWRaWSaWTaWTaWUaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTGaGgaTHaGiaBIaBIaBIaWVaWWaWWaWWaWWaWWaWWaWWaWXaBIaBLcpSaWZaIAaXcaXbaXbaXbaYraXdaIAaIAaIAaIAaTQaXeaXfaTSaXgaTUaTUaXhaXiaXjaXkaXhaTUaTUaTUaXlaUeaXmaXnaXoaUeaUiaVGaXpaKfaXraXsaUmaXtaVPaXuaXvaXwaXxaMkaSzaKOaMmaSCaMbaXyaUpaUpaVYaXAaXzaXCaXDaXDaXEaXFaXGaXEaXFaXDaXDaXHaXIaXJaXBaUpaUpaXyaJlaXLaXMaSNaRqaRpaJlaXNaWdaXOaWfaSSaXPaXQaSSaXRaXSaWfaSSaXTaOtaXUaXVaUQaXWaXXaXYaXZaYaaYbaYcaYdaYeaYfaYgaWBaYhaWDaYiaTeaJHaIgaYjaYjaRLaRMaYkaONaONaYlaONaYmaQqaGGaIoaYoaYpaToaYqaZkaZXaWLbaOaYGaWOaZcaVoaYvaYwaYxaYyaYzaYAaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaYVaaaaaaaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaafaYCaYDcpKaYFaWPaYHaYHaYIaYJaYKaYLaYMaYNaYOaYPaYQaYRaYSaTSaYTaTUaTUaXhaXjaYUbbTaXhaTUaTUaYWaUdaUeaUeaUeaUeaUeaUiaVGaVGaVGaVGaVGaUmaYYaXvaYZaXvaXvaXxaMkaSzaKOaNSaNSaZaaZbaWNaUpaZdaZeaZfaZgaZfaZfaZfaZfaZhaZfaZfaZfaZfaZfaZfaZiaZjaUpaWMaZbaZlaZmaZnaSNaRqaRpaWcaSSaSSaSSaSSaSSaXPaZoaSSaXRaZpaWfaSSaXTaOtaZqaXVaUQaZraZsaZtaZuaYaaZvaZwaYdaYeaYfaYgaWBaYhaZxaZyaZzaQKaZzaZzaZzaZBaZCaZDaZEaOOaZFaZGaZHaZIaGGaZJaZKaZLaToaZMaZLaIoaIoaXaaYtaVoaYuaVoaZNaZOaZPaZQaWTaZRaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaZSaZTaZUbjnaZWaSFaZYaZZbaababbacbadbaebafaYObagbahbaibajaTSbakbalbambanbaobapbaqbarbarbarbasbataTSbaubavbawbaxaKgbajbnZaKhbajbaCaUmbaDbaEbaFbaGbaHbaIaMkbaJbaKaMkbaLbaMbaNbcybaPbaQbaRbaQbaSbaTbaUbaVbaWbaXbaYbaZbbabbbbbcbaQbbdbbebbfbeobbhbbibbjbbkbblbbmbbnaJlaUDaWdbboaWfaSSbbpbbqbbrbbsaXOaWfaSSaXTbbtaULaXVbbubbvbbwaUQaUQaYabbxbbybbzbbAbbBaYgaWBbbCaWDbbDaZzaRCbbFbbFbbGbbHbbIaRLaRLaRLaRLaRLaRLaRLaGGbbJaYoaYpaToaYqaYpaIobbKaGGbbLaVoaYuaVoaZNbbMbbNbbOaafbbPaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBbbQbbRbbScqObbUaSFbaabaabaabaabaabbVbaabbWaYObbXbbYbaibbZbbZbbZbbZbcabbZbcbaTUbccbcdbcebcebcfbcgaTSaXebchbcibcjaKiaKjblcaKkbcobcobcpbcpbcpbcpbcpbcqaMbbcrbcsbctbcubcvbcwbcxbbgaUpbczbcAbcBbaBaUpaUpaUpaUpaUpbcDaUpaUpaUpbcCbcFbcGbczaUpbbgbcxbcHbcIbcJbcKbcLaRpaWcaSSaSSaSSaSSaSSaGpbcMaSSbcNaSSbcObcObcObcObcPbcQbcRbcSaUQaUQaUQbcTbcUaTeaWxbcWbcXaYgaWBaYhaWDbcYaZzaYnbdabdbbdcbddbdebddbddbddbddbddbdfbdgbdhbdibdjbdkbdlbdmbdnbdobdpbdqbdraVoaYubdsaZNaVobdtbbOaafaaaaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBbdubdvaZUbdwbdxaSFaYHbdybaababbdzbbVbaabdAaYObdBbdCbaibbZbdDbdEbdFbdGbbZbdHbdIbdJaTSbdKbdLbdMbdNaTSaXebdObdPbdPaKlbdPbdPbdPbdPbdRbdSbdSbdSbdTbdSbdUaMbbdVbdWbdXaJeaJeaJebdYbdYbdYbdZbeabdZbdYbebbebbebbebbebbecbebbebbebbedbedbeebedaUpaUpaUpaJiaJiaJibcKbcLaRpaJlbefbegaDmbehaSSbeibcMbejbekbelbcObcObembenaZzaZzaZzaSHaSGaSGaSGaZzaZzaZzbeqberbesbetaWBaYhaYhbeuaZzbevbewbexaZzbeybezbeAaZEbeBbeCbeDbeEaONaGGaIobeFbeGbeHbeFbeIaIoaIoaGGbeJaVoaYuaVoaZNbeKbeLbbOaafbeMaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBbeNbeObePbeQbeRaRtaYHbeTbeUaYHbdzbbVbeVbeWaYObeXbeYbaibbZbbZbbZbeZbfabbZbfbbdIbfcaTSbdKbdLbdMbfdaTSaXebdObdPbfebffbfgbfgbfhbdPbfibfjbfkbflbfmbfmbfmaMbaMkbcsbctaJebfnbfobfpbfqbfrbfsbftbfubdYbebbfvbfwaSEaSDbfzbfAbfBbebbedbfCbfDbfEbfFbfGbfHbfIbfJaJibfKbfLbfMaJlaZzaZzaZzaZzbfNbfObfPbfQaZzaZzbfRaZzaZzaZzaZzbfSbfTbfUbfVbfVbfVbfWbfXaZzbfYbfZbgabgbbgcbgcbgcbgdaZzbevbewbgeaZzaZzaZzaZzaZzaZzaZzaZzaZzaZzaZzbgfbggbghbgibgjbgfbggaZzaRZbgkaVoaYuaVoaZNaZObglbgmaWTaZRaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaaabgnbgobgpbgqaZUbgrbgrbgrbgrbgrbgrbgsbgtbgraYOaYOaYOaYOaYObguaYOaYOaYObgvbgvbgwbbZbdDbgxbeZbgybbZbgzbgAbgzaTSbdKbdLbdMbfdaTSaXebdObdPbgBbgCbgDbfgbgDbdPbfibgEbgFbgGbgHbgIbgJaMbbgKbgLbctaWKbgNbgObgPbgQbgQbgRbgSbgTbdYbebbgUbgVbgWbgXbfvbgYbgZbebbedbhabhbbhcbhdbhebhfbhgbhhaJibhibhjaRpbhkbhlbhmbewbewbhnbewbhobewbewbewbewbhpbewbewbewbewbhqbewbewbewbewbewbewbhmbewbewbhrbhsbhsbhtbhsbhsbhubhvbewbhqbhwbhxbhpbewbhybewbewbewbhzbhAbhBbhCbewbhDbewbhEbewbewbhFbhGbhHaVoaYuaVobhIbhJbhKbhLbhMbhNaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -7377,75 +7377,75 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaT aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaaabhObhObhObhObhObhObhObhObhObhObhOaZSaZTbjmbjnbjobgrbjpbjpbjqbjpbjpbjpbjrbajbajbajbajbaibbZbdDbjsbjtbgybbZbjubjvbjuaTSaTSaTSaTSbjwaTSbjxbdObdPbjybjzbgDbjAbjBbdPbfibfmbjCbgGbgGbgGbjDaMbbjEaSzbctcdNbjGbgObjHbjIbjJbjKbjLbjMbdYbjNbjObjPbiybjQbiybgVbjRbjSbedbjTbjUbjVbjWbjWbjWbjXbjYaJibjZbkabkbbkcbkdbkebbFbkfbkgbkhbkibkjbkkbklbkmbknbknbkobewbewbewbewbewbkpbkqbkrbewbksbktbkubkvbewbkpbkwbkxbkybhFbewbewbkzbewbewbkAbkBbewbkpbewbewbewbewbewbewbewbewbewbhqbewbewbhFbkCbkDbkEbkFbkGbkHbkIbkJaafaaaaafaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaaabhObhObhObhObhObhObhObhObhObhObhObkKbkLbkMbkNbkObgrbkPbkQbkRbkRbkSbkTbkUbkVbkWbkWbkXbkYbbZbbZbbZbeZbkZbbZbajbajbajbajblaaXeaXeblbblcbldbleblfblgblhblibljblkbdPbllbfmblmbgGblnbgGbloblpblqaSzbctaJeblrblsbltblublvblwblxblybdYbebblzblAblCblBblDblAblEbebbedbedblFblGblHblIbiCblJblKaJiblLblMblNaJiblOblOblOblOblOblOaZzaZzblPblQbZNcdMblQblPaZzaZzaZzaZzaZzaZzaZzaZzaZzaZzblTaZzaZzaZzaZzaZzaZzaVIaZzbewbewblVblWblWblOblOblOblOblOblXblYblYblZblYbewblYblZbmablYbmbblObmcbmcbmcbmdaRZbmeaRZaRZaaaaaaaaaaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaaabhObhObhObhObhObhObhObhObhObhObhObdubdvbjmbjnbmfbgrbmgbjpbmhbmibjpbjpbjpaVAbmjbmkbmkbmlbbZbdDbmmbeZbmnbbZbmobmpbmqbmrbmsbmtbmtbmubmtbmtbmvbdPbmwbmxbfgbmybmzblfbmAbfmbmBbgGbgGbmCbmDbmEblqaSzbmFbmGbmGbmGbmGbmGbmGbmGbmHbmGbdYbebbmIbmJbmKbmLbmKbmMbmNbebbedbedbmObmPbmQbmRbiCbiGbmSaJibcKaRqaRpaJibmTbmUbmVbmWbmXbmYbmZbnabnbbncbndbnebncbnfbngbnhbnibnjbnkbnlbnmbnnbnobnpbnqbnrbnsbntbntbnubYfaVJblOblObZLblObZMbZMblObnzbnAbnBblObZtbZubZtblOblXblYbmbblObZnbZBbZnblObnGbnHbnIbnJbnKbnLbnMaaaaaaaaaaaaaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaaabhObhObhObhObhObhObhObhObhObhOaaabnNbnObnPbeQbnQbgrbnRbjpcembnTbnUbnVbjpbnWbnXbnYbnZbmlbbZbbZbbZbbZbbZbbZboabobbocbodboebdPbdPbdPbdPbdPbdPbdPbWqbdPbdPbdPbogbdPbohboibojbgGbgGbgGbokblpblqaSzbolbmGbomboncenbcEbvGbotbosbotaafbebboubovbowboxboybozboAbebaafbedboBboCboDboEbiCbiGboFaJiboGboHaRpbXHboJboKboLboMboNbYwboPboQboRboRboSboTboUboUboVboWboXboYboZbpabpbbnnbpcbpdbpebpfbpgbphbpfbpibYfaVJbpjbpkbplbpmbpnbpobppbpqbprbpqbpsbptbpucpkblOaZzbpwbpxblObpybpzbpAbpBbpCbpDbnIbpEbpFbpGbnMaaaaaaaaaaacaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaaaaTDaTDaTDaTDaTDaaaaTDaTDaTDaTDaTDaaaaaaaaaaaaaaabgnbgobgpbgqbdvbpHbpHbpHbpIbpHbpJaZVbpKbpLbgrbpMbpNbpObpPbpQbpRbpSaYSaXeaXeaXebpTbkWbpUbkWbkWbkWbkWbpVbpWbpWbpXbpYbdPbpZbqabqbbqcbqdbqebqfbqgbqhbqibqjbqkbmAbqlbojbgGbgGbqmbfmaMbblqbqnbqoaJubqqbqrbqrbxqborbopbxsbotaafbebbebbebbebceebebbebbebbebaafbedbqzboCbqAbqBbqCbqDbqEaJibqFaRqaRpaJibqGbqHbqIbqJaJDbqLboPbqNboUboUboUboUboUboUbqObqPbqQboYbqRbqSbqTbnnbqUbqVbqWbpfbpgbphbpfbqXbYfaVJbpjbqYbqZbqZbrabrbbrcbrdbrdbrdbrebrdbrfbrgbrhbribrjbrkbnIbrlbpCbrmbrnbrocxlbnIbrqbpFbrrbnMaaaaaaaaaaaaaaaaaaaaaaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaaaaTDaTDaTDaTDaTDaaaaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaaaaaaaaaaaabrsbrtbrubrvbrwbrxbrxbrybrzbrAbgrcedbrCbpPbrDbjpbjpbjpbajbrEbrFbrGbrHbrGbrGbrGbrHbrGbajbajbdPbdPbdPbrIbdPbrJbrJbrJbrJbrJbrJbqfbrKbrLbrMbrNbrObrPbrQbrRbrSbrTbrUbrVbrWbrXbrYbrZaHBbsbbqvbsabsebscbotbosbotaafbsibsjbskbslbsmbsnbskbsobsiaafbedbspbsqbspbedbedbedbsraJibssaRqaRpbXHboJboKbstbsubsvbqLbswbqNbsxbsybszbsAbsBbsCbqObsDbnibsEbsFbsGbsHbnnbsIbqVbpebpfbpgbphbpfbpibYfaVJbpjbsJbsKbsLbsMbplbsNbsObsPbsQbsRbsSbsTbsUbrhbsVbsWbsXbnIbsYbsZbtabtbbtcbtdbnIbrqbpFbtebnMaaaaaaaaaaaaaafaafaafaafceoceoceoceoaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaaabhObhObhObhObhObhObhObhObhObhOaaabnNbnObnPbeQbnQbgrbnRbjpaZAbnTbnUbnVbjpbnWbnXbnYbnZbmlbbZbbZbbZbbZbbZbbZboabobbocbodboebdPbdPbdPbdPbdPbdPbdPbWqbdPbdPbdPbogbdPbohboibojbgGbgGbgGbokblpblqaSzbolbmGbombonbbEbcEbvGbotbosbotaafbebboubovbowboxboybozboAbebaafbedboBboCboDboEbiCbiGboFaJiboGboHaRpbXHboJboKboLboMboNbYwboPboQboRboRboSboTboUboUboVboWboXboYboZbpabpbbnnbpcbpdbpebpfbpgbphbpfbpibYfaVJbpjbpkbplbpmbpnbpobppbpqbprbpqbpsbptbpubcmblOaZzbpwbpxblObpybpzbpAbpBbpCbpDbnIbpEbpFbpGbnMaaaaaaaaaaacaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaaaaTDaTDaTDaTDaTDaaaaTDaTDaTDaTDaTDaaaaaaaaaaaaaaabgnbgobgpbgqbdvbpHbpHbpHbpIbpHbpJaZVbpKbpLbgrbpMbpNbpObpPbpQbpRbpSaYSaXeaXeaXebpTbkWbpUbkWbkWbkWbkWbpVbpWbpWbpXbpYbdPbpZbqabqbbqcbqdbqebqfbqgbqhbqibqjbqkbmAbqlbojbgGbgGbqmbfmaMbblqbqnbqoaJubqqbqrbqrbxqborbopbxsbotaafbebbebbebbebceebebbebbebbebaafbedbqzboCbqAbqBbqCbqDbqEaJibqFaRqaRpaJibqGbqHbqIbqJaJDbqLboPbqNboUboUboUboUboUboUbqObqPbqQboYbqRbqSbqTbnnbqUbqVbqWbpfbpgbphbpfbqXbYfaVJbpjbqYbqZbqZbrabrbbrcbrdbrdbrdbrebrdbrfbrgbrhbribrjbrkbnIbrlbpCbrmbrnbrobcVbnIbrqbpFbrrbnMaaaaaaaaaaaaaaaaaaaaaaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaaaaTDaTDaTDaTDaTDaaaaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaaaaaaaaaaaabrsbrtbrubrvbrwbrxbrxbrybrzbrAbgrcedbrCbpPbrDbjpbjpbjpbajbrEbrFbrGbrHbrGbrGbrGbrHbrGbajbajbdPbdPbdPbrIbdPbrJbrJbrJbrJbrJbrJbqfbrKbrLbrMbrNbrObrPbrQbrRbrSbrTbrUbrVbrWbrXbrYbrZaHBbsbbqvbsabsebscbotbosbotaafbsibsjbskbslbsmbsnbskbsobsiaafbedbspbsqbspbedbedbedbsraJibssaRqaRpbXHboJboKbstbsubsvbqLbswbqNbsxbsybszbsAbsBbsCbqObsDbnibsEbsFbsGbsHbnnbsIbqVbpebpfbpgbphbpfbpibYfaVJbpjbsJbsKbsLbsMbplbsNbsObsPbsQbsRbsSbsTbsUbrhbsVbsWbsXbnIbsYbsZbtabtbbtcbtdbnIbrqbpFbtebnMaaaaaaaaaaaaaafaafaafaafbcZbcZbcZbcZaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaaaaacaaaaaaaaaaaaaaaaaaaaabrsbtfbtgbthbtibtibtibtjbtibtibgrbtkbtlbtmbpPbjpaaaaaaaaaaafaafbtnbtnbtnbtnbtnbtnbtnaaaaaabtobtpbtqbtrbtsbrJbrJbrJbrJbrJbrJbttbtubtvbtwbtxbtybtzbtAbfmbfmbtBbfmbfmbtCbtDbtEbtFbmGbtHbmGbmGbmGbmGbmGbtIbmGaafbtJbtKbtLbtMbtNbtMbtLbtObtPaafbspbtQbtRbtSbtTbtUbspbtVaJlbtWbbmbtXaJibtYbmUbtZbuabubbucbudbuebufbugbuhbuibujbukbulbumbnibnnbunbuobupbnnbuqburbusbutbuubuubuvbuwbYfaXqbpjbuxbplbplbsMbuybuzbuAbuBbuCbuDbuEbuFbuGbrhbuHbuIbuJbnIbuKbuLbuMbtbbpCbuNbnIbpEbpFbuObnMaaaaaaaaaaaaaafbuPbuQbuRbuQbuRbuQbuSaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabuTbeObuUbuUbuVbpHbuWbgnbgobuXbuWbgrbuYbuZbvabvbbjpaaaaaaaaaaaaaaabtnbtnbtnbtnbtnbtnbtnaaaaaabvcbvdbrJbvebvfbvfbvfbvfbvfbvgbvhbvfbvibvjbvkbvlbvmbvnbvobfmbvpbgGbvqbvrbvsbvtbvubvvbmGbmGbmGbvxbvybvzbvAbvBbvwaafcfUbvIbvHbvJbvKbvMbvNbvOcfUaafbspbvPbvQbxnbedbvRbspbvSaJlbvTbcLbvUaJibvVbvWbvXbvYbvZbuccdTcdUbwcbwdbwebwebwfbwgcdWcdVbwjbwkbwlbwmbwkbwkbwkbwkbwnbwkbwkaXKaXKaXKaXKaVJbpjbsJbsKbsLbwobwpbwqbwrbwsbwsbwsbsSbwtbwubwvbwwbwxbwybnIbwzbwAbwBbwCbpCbwDbnIbwEbwFbnMbnMaaaaaaaaaaaaaafbwGbwHbwIbwJbwJbwKbwGaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtnbtnbtnbtnbtnbtnbtnbwMbwNbwObwPbrJbwQbrJbwRbwRbwRbwSbwTbrKbrJbrJbrLbwUbwVbwWbwXbwYbwZbxabgGbgGbxbbxcbvtbvubxdbxebxfbUbcdBbxibxjbxkbxlbvwaafbxmbqtbskbxobxpbxobskbqxbxraafbspbqwbxtcelbedbxvbspbtVaJlbxwbcLaRpaJibxxbxybxzbxAbxBbxCbxDbxEbxCbxFbxGbxHbxFbwkbxIbxJbwkbwkbxKbxLbxMbxNbxObxPbxQbxRbxSaXKbayaYXaXKaVJbpjbxXbqZbqZbxYbxZbppbyabwsbwsbwsbsSbwtbybbwwcbKbUabTQbwwbyfbygbyhbyibpCbyjbnIbrqbykbnMaaaaaaaaaaaaaaaaafbylbymbwIbwJbwIbynbuRaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtnbtnbtnbtnbtnbtnbtnbyobypbyobyqbyrbwQbrJbrJbrJbysbrJbwTbrKbytbdPbdPbyubgGbrNbwXbyvbywbyxbyybyybyzbyAbyBbyCbyDbvsbyEcbQbyGbxkbyHbyIbyJbvwaafbxrbxrbyKbtLbyLbskbyMbxrbxraafbyNbyNbyNbyNbyNbyNbyNbyOaJibyPblMblNaJibyQbyRbyRbySbyTbxCbyUbyVbyWbyXbyYbyZbzabwmbzbbzcbzdbzebzfbzgbzgbzhbzibzgbzjbzkbckbaAcekbclbdQbcnbzrbzsbztbzubzvbzwbppbzxbpqbpqbzybsSbwtbzzbzAbzBbzCbzDbzAbzEbzFbzGbzHbzIbwwbwwbzJbnMbnMbzKbzLbzLbzLbzMbzNbwGbwJbwIbwJbwJbzObwGaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaacaaaaaaaaabtnbtnbtnbtnbtnbtnbtnbzPbzQbzPbzRbrJbwQbrJbzSbzSbzSbzSbwTbrKbzTbzUbdPbzVbgGbrNbwXbzWbzXbzYbgGblnbgGbzZbAabAbbAcbAdbyEbWnbAfbxkbxkbxkbAgbvwbAhbAhbAhbxrbAibxpbAibxrbAjbAjbAjbyNbAkbAlbAmbAnbAobApbAqaJibAraRqaRpaJibAsbAtbAubAvbAwbAxbAybAzbAAbABbACbADbAEbAFbAGbAHbAIbAJbAKbAIcaJbAMbANbAObnvblUbsdbnwbsgbsfbaAbPObpjbAWbAXbAYbAZbAZbppbBabBbbBcbppbBdbBebBfbBgbBhbBibBjbBkbBlbBlbBmbBnbBobTHbBqbBrbBsbBtbTIbBvbBwbBwbBxbBybBzbuQbuRbBAbuRbuQbBBaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabuTbeObuUbuUbuVbpHbuWbgnbgobuXbuWbgrbuYbuZbvabvbbjpaaaaaaaaaaaaaaabtnbtnbtnbtnbtnbtnbtnaaaaaabvcbvdbrJbvebvfbvfbvfbvfbvfbvgbvhbvfbvibvjbvkbvlbvmbvnbvobfmbvpbgGbvqbvrbvsbvtbvubvvbmGbmGbmGbvxbvybvzbvAbvBbvwaafbnybvIbvHbvJbvKbvMbvNbvObnyaafbspbvPbvQbxnbedbvRbspbvSaJlbvTbcLbvUaJibvVbvWbvXbvYbvZbuccdTcdUbwcbwdbwebwebwfbwgcdWcdVbwjbwkbwlbwmbwkbwkbwkbwkbwnbwkbwkaXKaXKaXKaXKaVJbpjbsJbsKbsLbwobwpbwqbwrbwsbwsbwsbsSbwtbwubwvbwwbwxbwybnIbwzbwAbwBbwCbpCbwDbnIbwEbwFbnMbnMaaaaaaaaaaaaaafbwGbwHbwIbwJbwJbwKbwGaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtnbtnbtnbtnbtnbtnbtnbwMbwNbwObwPbrJbwQbrJbwRbwRbwRbwSbwTbrKbrJbrJbrLbwUbwVbwWbwXbwYbwZbxabgGbgGbxbbxcbvtbvubxdbxebxfbUbbnCbxibxjbxkbxlbvwaafbxmbqtbskbxobxpbxobskbqxbxraafbspbqwbxtbnDbedbxvbspbtVaJlbxwbcLaRpaJibxxbxybxzbxAbxBbxCbxDbxEbxCbxFbxGbxHbxFbwkbxIbxJbwkbwkbxKbxLbxMbxNbxObxPbxQbxRbxSaXKbayaYXaXKaVJbpjbxXbqZbqZbxYbxZbppbyabwsbwsbwsbsSbwtbybbwwbnSbUabTQbwwbyfbygbyhbyibpCbyjbnIbrqbykbnMaaaaaaaaaaaaaaaaafbylbymbwIbwJbwIbynbuRaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtnbtnbtnbtnbtnbtnbtnbyobypbyobyqbyrbwQbrJbrJbrJbysbrJbwTbrKbytbdPbdPbyubgGbrNbwXbyvbywbyxbyybyybyzbyAbyBbyCbyDbvsbyEboobyGbxkbyHbyIbyJbvwaafbxrbxrbyKbtLbyLbskbyMbxrbxraafbyNbyNbyNbyNbyNbyNbyNbyOaJibyPblMblNaJibyQbyRbyRbySbyTbxCbyUbyVbyWbyXbyYbyZbzabwmbzbbzcbzdbzebzfbzgbzgbzhbzibzgbzjbzkbckbaAboObclbdQbcnbzrbzsbztbzubzvbzwbppbzxbpqbpqbzybsSbwtbzzbzAbzBbzCbzDbzAbzEbzFbzGbzHbzIbwwbwwbzJbnMbnMbzKbzLbzLbzLbzMbzNbwGbwJbwIbwJbwJbzObwGaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaacaaaaaaaaabtnbtnbtnbtnbtnbtnbtnbzPbzQbzPbzRbrJbwQbrJbzSbzSbzSbzSbwTbrKbzTbzUbdPbzVbgGbrNbwXbzWbzXbzYbgGblnbgGbzZbAabAbbAcbAdbyEbpvbAfbxkbxkbxkbAgbvwbAhbAhbAhbxrbAibxpbAibxrbAjbAjbAjbyNbAkbAlbAmbAnbAobApbAqaJibAraRqaRpaJibAsbAtbAubAvbAwbAxbAybAzbAAbABbACbADbAEbAFbAGbAHbAIbAJbAKbAIbqMbAMbANbAObnvblUbsdbnwbsgbsfbaAbPObpjbAWbAXbAYbAZbAZbppbBabBbbBcbppbBdbBebBfbBgbBhbBibBjbBkbBlbBlbBmbBnbBobTHbBqbBrbBsbBtbTIbBvbBwbBwbBxbBybBzbuQbuRbBAbuRbuQbBBaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtnbtnbtnbtnbtnbtnbtnbBCbwNbBDbBEbrJbwQbrJbrJbrJbrJbrJbwTbrKbzTbBFbdPbBGbgGbBHbBIbgGbBJbgFbgGbgGbBKbvsbvtbAbbAcbAdbyEbvwbBLbBMbBNbBMbBObvwbBPbBQbBRbAhbxrbBSbxrbAjbBTbBUbBVbyNbBWbBXbBYbBZbCabCabCbbCcbAraRqaRpaJibCdbCebCebySbCfbxCbCgbChbxCbCibCjbCjbCkbwkbClbCmbwkbwkbwkbwkbwkbwkbCnbwkbwkbwmbCoaXKaXKaXKaXKbSwbpjbwwbzAbzAbzAbzAbzAbzAbzAbzAbzAbzIbCrbCsbCtbBhbCubCvbCwbCxbCxbCxbCybCzbSubCBbCCbCDbCEbTGbCGbCHbCGbCIbCJbzKbzLbzMbCKbzNbCLaaaaafaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtnbtnbtnbtnbtnbtnbtnbzPbzQbzPbCMbCNbCObrJbrJbrJbCNbrJbwTbrKbzTbCPbdPbCQbgGbrNbwXbgGbqlbCRbgGbgGbCSbxcbvtbAbbCTbxcbCUbvwbCVceSbCXbCYbxlbvwbCZbDabDbbDcbDdbvFbvEbDgbDhbDibDjbyNbDkbDlbDlbDmbDnbDobDpaJibDqbDrbDsaJibDtbCAbDvbDwbDxbDybDzbDAbyWbDBbDCbCjbDDbwmbDEbDFbwmbDGbDHbDIbDJbDKbDLbDMbCpbDNbDObDPbDQbDRbCpbVLbVMbDUbVAbDWbDXbDXbDYbDZbEabEbbEcbEdbEebEfbEabEgbEhbCvbEibEjbEkbwwbwwbwwbwwbwwcngcjDbEnbzKbzMbCJbEobEpbEqbErbEsbEtbEubEvaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtnbtnbtnbtnbtnbtnbtnbzPbzQbzPbCMbCNbCObrJbrJbrJbCNbrJbwTbrKbzTbCPbdPbCQbgGbrNbwXbgGbqlbCRbgGbgGbCSbxcbvtbAbbCTbxcbCUbvwbCVbrpbCXbCYbxlbvwbCZbDabDbbDcbDdbvFbvEbDgbDhbDibDjbyNbDkbDlbDlbDmbDnbDobDpaJibDqbDrbDsaJibDtbvDbDvbDwbDxbDybDzbDAbyWbDBbvLbCjbDDbwmbDEbDFbwmbDGbDHbDIbDJbDKbDLbDMbCpbDNbDObDPbDQbDRbCpbVLbVMbDUbVAbDWbDXbDXbDYbDZbEabEbbEcbEdbEebEfbEabEgbEhbCvbEibEjbEkbwwbwwbwwbwwbwwbxhbwbbEnbzKbzMbCJbEobEpbEqbErbEsbEtbEubEvaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtnbtnbtnbtnbtnbtnbtnbEwbExbEwbEybEzbEAbEAbEAbEAbEAbEBbECbEDbzTbEEbdPbEFbEGbEHbEIbEJbtzbEKbELbEMbfmbtCbENbAbbEObEPbyEbvwbEQbERbESbBMbETbvwbEUbEVbEWbAhbEXbvCbEYbAjbFabFbbFcbyNbFdbFebFfbFgbDnbDobFhaJibxwaRqaRpbVjbFjbFkbFlbFmbFnbFobFpbFqbxCbxFbxFbFrbxFbwkbFsbFtbFubFvbFwbFxbDJbFybDLbFzbFAbFBbDObFCbFDbFEbFFbVlbDXbVybVAbFJbDXbDXbFKbFLbFMbFLbFLbFNbFObFPbFQbFRbFSbCvbFTbFUbFVbFWbFXbFYbFZbGabGbbGcbGdaafaafbCJbGebGfbGgbGhbGibGjbGkbCJaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtnbtnbtnbtnbtnbtnbtnbGlbGmbGnbdPbdPbGobwNbwNbwNbGpbdPbdPbGqbGrbGsbdPbGtbGtbGtbGubGtbGvbGwbGxbGybGzbtCbvtbAbbGAbGBbtCbtGbtGbtGbtGbtGbGCbtGbtGbtGbtGbtGbtGbshbtGbtGbtGbtGbtGbtGbtGbtGaJiaJiaJiaJiaJiaJibxwaRqaRpbVjbGEbFkbDubGGbDTbGIbGJbGKbGLbGMbGNbCjbGObGPbGQbGRbGSbGTbGUbGVbGWbGXbGYbGZbHabHbbHcbHdbHebHfbCpbUSbUfbwwbwwbwwbwwbwwbHibwwbwwbwwbzAbHjbzAbzAbHkbBhbCubCvbFTbHlbHmbHnbHobHpbHqbGabGbbGcbHraaaaaabCJbHsbHtbCJbBybCJbCJbBybCJaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtnbtnbtnbtnbtnbtnbtnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabHuaafaaaaaaaaaaaabGtbHvbHwbHxbHybGvbHzbHAbHBbHCbtCbvtbAbbAcbAabHDbHEbHFbHGbHHbHIbHJbHKbHLbHMbHLbHNbHObqybHQbHRbAabHSbAabHTbAabzZbHUbHVbHWbHXbHYbHZbxwaRqbDsaJlbDtbFHbDtbGHbGHbxCbIbbIcbIdbIebIfbIgbIhbIibIjbIkbwmbIlbImbInbDJchqbIobIpbIqbIrbFDbIsbItbIubCpbIvbIwbIxbIybUdbIAbIBbICbIDbUcbIFbIGbIHbIIbIJbzAbIKbCubCvbILbIMbINbIObIPbIQbIRbGabGbbISbEnbEnbEnbCJbCJbCJbCJaaaaaaaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIvaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtnbtnbtnbtnbtnbtnbtnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabGtbITbIUbIVbIWbIXbIYbIZbJabJbbtCbvtbJcbJdbJebJebJfbJgbJhbJibJjbJgbJfbJebJebJebJkbJlbqsbJnbJobJebJebJebJpbJgbJhbJqbJrbJsbJtbJubJtbJvbJwbvUaJlbTMbJxbJCbGFbLabKZbDzbLdbFibDVbxFbJDbCFbDSbDEbJGbwkbJHbJIbJJbDJbJKbJLbJMbJNbJObFDbJPbItbJObCpbJQbJRbIxbJSbJTbJUbJVbJWbJXbJYbIFbJZbKabKbbKbbzAbKcbKdbKebKfbKgbKhbKibKjbKjbKkbGabGbbKlbEnbKmbKobKnbEnaafaafaafaafaafaafaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbKpbKqbKqbKrbKsbKsbKtbKtbKtbKtbKuaafaafaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtnbtnbtnbtnbtnaaaaaaaaaaaaaaaaaaaaaaaabKvbKwbKxbKwbKyaaaaaaaaabGtbGtbKzbKAbIVbKAbKBbKCbHBbKDbKEbtCbKFbvtbKGbKHbAabKIbAabzZbHHbKJbAabKKbKLbKMbKNbKObAcbAabKPbKQbHLbKRbHLbHLbKSbKTbKUbKVbKWbKXbcLbKYaRpaRpaRpaJlbMsbGFbGFbFlbMwbMtbNYbMxbFIbLgbLhbLibLjbHgbDEbIkbIabIzbHhbDJbDJbLobLobLobCpbLpbLqbLrbLsbLtbCpbLubLvbIxbLwbFGbLybLzbLAbLBbLCbIFbLDbLEbKbbKbbzAbRsbLFbCvbwwbLGbLHbLIbLJbLKbLLbGabLMbLNbLObLObLObLPbGdaaaaaaaaaaaaaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafbLQbLRbLSbLRbKsbKtbKtbLTbLUbLTbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabLVbLWbLXbLYbLVbLZbMabMbbGtbMcbMdbMebMfbMgbMhbMibMjbMjbMkbtCbtCbtCbMlbtCbtCbtCbtCbtCbtCbtCbtCbtCbtCbtCbtCbtCbMmbMnbMobtCbtCbtCbtCbtCbMpbtCaJlaJlaJlaJlbMqaJlaKSaMpbMraJlbRibMubMubGFbRmbxCbDzcIsbxCbMybMzbMAbMBbwkbMCbMDbMEbMFbMGbMHbMIbMJbMKbMLbItbJObFDbFDbMMbJObCpbMNbMObMObMObMObMObMObMObMObMObMObMPbMQbMRbMRbzAbMSbMTbMUbwwbMVbMVbMVbMWbMXbMYbMVbMVbMVbMVbMVbMZbNabNbaymaymaymaymaymaymaymaymaymaymaymaymaymaymaymaymaymaymaymaymaymaymaymbNdbLRbLRbNebKtbKtbLTbLTbNfbLTbLTbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabKxbNgbNhbNgbKxbNibNjbNkbNlbNmbNnbKAbNobNpbGvbNqbNrbNsbNtbGvbNubNvbNwbNxaaaaaaaaaaaabNybNzbNAbNBbNDbNCbNEbNFbNGbNHbNIbNFbNJbNKbNLbNMbNNbNObNPbNQbNRbNSbNTbNUbNUbNUbNUbDtbDtbPBbSnbQVbDtbxCbNZbOabObbMzbOcbOdbOebOfbOgbOhbOibOjbOkbOlbOmbOnbMKbOobFDbFDbOpbJObJObOobCpbMNbMObOqbOrbOsbOtbOubOvbOwbOxbMObOybOzbOAbOAbzAbOBbOCbCvbzIbODbOEbOFbOGbOHbOIbOJbOKbOLbOMbMVbEnbONbEnbOObOObOObOObOOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabOPbKtbNdbKtbKtbLTbLTbLTbLTbLTbLTbLTbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabLVbNgbNgbNgbOQbORbKAbOSbOTbOUbKAbKAbOVbOWbGvbGvbGvbGvbGvbGvbOXbOYbOZbPaaaabPbbPcbPcbPdbPebPfbPgbPhbPfbPibNFbPjbPkbPlbNFbPmbPnbPobPpbPqbPrbPsbPtbPtbNSbPubPvbPwbPxbPybDtbUebLbbPzbGFbUOcIkbDzbPCbxCbPDbPEbPFbPGbwkbPHbPIbwkbPJbPKbPLbPMbPNbMKbCpbCpbCpbCpbCpbCpbCpbCpbPObMObPPbQYbPRbOsbOsbOsbOsbPSbMObPTbLEbPUbPUbzAbBhbPVbPWbPXbPYbPYbPYbPYbPZbQabQabQbbQcbQdbMVbQebQfbQgbOObQhcdbbQjbQkaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbKsbKtbQlbQmbQmbLTbLTbLTbLTbLTbLTbLTbLTbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabKxbNhbNhbNhbKxbQnbQobQpbQqbQrbKAbKAbQsbQtbQubQvbQvbQvbQvbQvbQvbQwbQxbQyaaabQzbQAbQBbQCbQDbPfbQEbQGbQFbQHbNFbQIbQJbQKbNFbQLbQMbQNbQObQPbQQbQRbPtbQSbPxbQTbNUbPxbPxbQUbNVcIlbGFbTNbGFcIncImbQXbLebRCbQZbRabRbbRcbRGbDEbIkbSpbPJbPLbPLbPMbRfbMKbRgbRhbWmbRjbRkbRlbUPbRnbPObMObOsbOsbRobOsbOsbOsbOsbRpbMObRqbLEbRrbRrbzAbRsbRtbRubRvbRwbRxbRybRybRzbRAbRybRybRybRBbRebRDbREbRFbRdbRHbRIbRJbRKaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabKtbKtbRLbLTbLTbLTbLTbLTbLTbLTbLTbLTbLTbLTbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaabLVbRMbRNbRObLVbRPbMabMbbGtbGtbRQbRQbRQbGtbGtbNxbRRbRRbRSbRSbRSbRSbNwbQyaaabRTbRUbRVbRWbRXbRYbRZbSabSbbSbbScbSdbSebSfbNFbPtbPtbPtbPtbPtbSgbPtbPtbShbSibSjbNUbPxbSkbSlbDtcIobLbbTNbSmcIqcIpbSobJAbJBbSqbSrbSsbStbJzbFsbSvbIEbSxbSybSzbSAbSBbMKbSCbSDbSEbRjbSFbSGbSHbRnbPObMObMObMObRobOsbOsbOsbMObMObMObSIbSJbRrbRrbzAbSKbSLbCvbzIbSMbSNbSObSPbSQbSRbSSbQabSTbSUbMVbSVbQfbSWbOObSXbSYbSZbTaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbKtbLTbLTbLTbLTbLTbLTbTbbLTbTcbLTbLTbLTbLTbLTbKtbKtaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabTdbKwbTebKwbTfbTgaafaaaaaabGtbThbTibTjbGtaaabNxbTkbTlbTmbTnbTnbTnbTobQyaaabQzbTpbTqbTrbTsbPfbTtbTvbTubTwbNFcdabTybTzbTAbTBbTBbTBbTCbTCbTDbTEbULbPxbPxbTFbNUbNUbNUbNUbDtbDtbLfbLkbLcbDtbTJbTKbTLbJFbJEbTJbTObLlbLmbTRbTSbTJbMKbMKbMKbMKbMKbMKbTTbTUbTVbRjbTWbTXbTYbRnbPObMObTZbQWbPQbLxbLnbNWbNcbTZbUgbUhbUibIIbIJbzAbIKbSLbUjbwwbMVbMVbMVbMVbMVbUkbMVbUlbQabUmbMVbUnbUobUnbOObUpbUqbUrbOOaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabKtbUsbUsbUsbUsbUsbUsbUtbLTbUubUsbTcbLTbLTbLTbLTbKtaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbUvbNxbNxbNxbNxbRSbUwbNwbUxaaabUybPcbPcbUzbUAbPfbPfbUBbPfbUCbNFbUDbXubWibNFaLqaLqaLqaLqaLqaLqaLqaLqbUHbUIbUJbUKbUKbUMbNUbDtbUNbvLbwbbUQbURbwabUTbUUbUVbUWbUXbUTbUYbUZbVabVbbVcbVdbVebVfbVgbVhbVibxhbVkbCWbRjbvDbVmbvDbRnbPObMObVnbWhbVpbVqbVrbVsbVtbVubUgbzAbVvbzAbzAbVwbCxbSLbCxbVxaafbnxbVzbrBbVBbVCbVBbVDbVEbVFbMVbVGbVHbVIbOObVJbVKbVKbwhaaLaaLaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwibLRbLRbLRbLRbLRbLRbLRbVNbLUbLTbLTbLTbLTbVObLUbKuaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabVPbVQbVQbVRbVSbNxbVTbRSbVUbNxaaaaaaaaaaaabNybVVbVWbVXbVZbVYbPfbNFbWabWbbNIbNFaLqbXybXAbXzbXwbXvbXxaLqcaqcaqcaqcaqcaqbTFbWjbWkbWlbMvbJybWobWpbxgbWrbWsbWtbWubWtbWvbWtbWwbWxbWybWzbWAbWBbWAbWCbWDbWEbWFbWGbWHbWIbWJbWKbWLbWMbxVbMObxWbzmbzlbWSbWTbWUbWSbWSbWVbWWbWXbWYbWZbCxbCxbSLbCxbFTaafbnxbXabXbbXcbXdbXebXfbXgbXhbMVbXibVHbXjbOObOObOObOObOOaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabKtbQmbQmbQmbQmbQmbQmbXkbLTbQlbQmbXlbLTbLTbLTbLTbKtaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabXmbXnbXobXpbRSbXqbXrbRSbXsbNxaaKaaaaaaaaabNybNybNybNybNybNybNybNFbUDbUEbXtbNFaLqbcVaPgaQqaQqaPgaPfaLqbcmaRCaRCaQKcaqbXBbDtbDtbXCbXDbXEbXFbXGblRbXIbXJbXKbXLbXMbXNbXObXPbXQbXRbXSbXTbXUbznbzpbzobAPbzqbARbAQbATbASbAVbAUbYfbYgbIwbYhbVobCqbWObWNbWPbYmbYnbYobYpbYqbYrbYsbYtbYrbYubYvbILaafbnxbXablSbVBbYxbVBbALbYzbYAbMVbXjbVHbYBbYCbUnaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbKtbLTbLTbLTbLTbLTbLTbTbbLTbXlbLTbLTbLTbLTbLTbKtbKtaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYDbVQbVQbVRbYEbYFbYGbNxbYHbNxbYIbYJbYKbYIbYIbYLbYMbYNbYObYPbWfbWgbTxbQibUGbUFbWcaPgbWebWdboobnSbxubqMbDebxUbJmbHPcaqbZhbNSbZibZjbZkbZlbZlbZmbnEbZobZpbTJbTJbZqbZrbTJbTJbZsbpvboObVibZvbWQbZxbZybZzbZybZAbrpbZCbrpbZAbWRbYfbMNbIwbZEbXWbXVbElbZIbZJbZKbMObMObwwbwwbwwbwwbwwboIbnFbofbwwbMVbMVbMVbMVbMVbUkbMVbMVbMVbMVbMVbZObZPbZQbZRbUnaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabKtbKtbRLbLTbLTbLTbLTbLTbLTbLTbLTbLTbLTbLTbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaambZSaamaamaamaamaamaaaaaaaaaaaaaaaaaaaafaafaaaccBcbmcbmcbmccAcbmcbmcbkcblbYIbZYbZZbYIcbpcabcaccadcaecafcbncbocbCcbBcbAcbzcbyaPgbWecbqcbEbnScbDaLqcaqcaqcaqcaqcaqcarbNSbDtcascatcaucavcawcaxcaycazbTJcaAcaBcaCcaDcaEcaFcaGcaHcaIbZxbWQbEmbZycaKcaLbZAcaMcaNcaObZAbXXbYfbPObIwbXYbYabXZbXYbXYbIwbIwbIwcaRcaScaTcaUcaVbwwbwwcaWbwwbwwcaXcaYcaZcbabXjcbbbXjbXjcbccbdcbecbfcbgcbhbUnbUnbUnaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbKsbKtbUubUsbUsbLTbLTbLTbLTbLTbLTbLTbLTbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafccZccYbYyccXccWbYUccRccSccTbYIcbrcbsbYIbYIcbtcbucbvcbwcbxccUccVbTxbQibUGccFccDaPgaPgccEccPaPgccQaLqcbFcbGcaqcbHcaqbTFcbIcbIcbIcbIcbIcbIcbIbTJcbJbTPbTJcbLcbMcbNcbOcaEcbPbPAcbRcaIbZxbWQbZxbZycbScbTbZAcbUcbVcbWbZAbXXbYfbYbbYdbYcbYiccCbYjbYcchBbYkbYlcktbZDbZwbZFcktccrbZGbZHccqccrccscctcctcctcctccucctcctcctcctcctccvccwccxccycczbUnbUnbUnbUnaaaaafaaaaaaaaaaahaahaahaafaaaaaaaafaaaaaaaafaaaaaabOPbKtbNdbKtbKtbLTbLTbLTbLTbLTbLTbLTbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafbYebYebYybYRbYQbYUbYVbYSbYTbYIccGccHccIccJccKccLccMccNccObYWbYXbZbbZabYZbYYbZfbZebZdbZcbZVbZUbZTbZgcdccddaJEcdfcaqbTFcbIcdgcdhcdicdjcdkcdlcdmcdncdocdpcdqcdrcdscdtcaEcducdvcdwcaIbZxbWQbZxbZycdxcdybZAcdzcdAbNXbZAcaPbYfbYfcaQbYccbYcbXcbZbYcchBccacjfcdLcdLbyFbBucdLcdOcdPcdQcdRcdOcdSbBpbyebydcdScdScdScdSbAebyebydcdScdSbXjcdXcdYcdZceacebcecbxTbycbycbycbycbycbycbycbycbycbycbycbycbycbycbycbyccefcegcegcehbKtbKtbLTbLTceibLTbLTbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacejcejcejcejcejcejcejcamcanbYIbYIbYIbYIbYIbYJcaocapcapcapcbicbjbTxbQibUGcaabWccagcaicahcakcajcalaLqcezaJFboqaJFcaqbTFcbIceDceEceEceEceFceGbTJceHceIbTJcbLcbNceJcbOcaEceKceLceMcaIbZxbWQceNbZyceOcePbZAbZAbZAbZAbZAccbceRbYfcaQbYcccdcccbYcbYcchBccecjfcdLceZcfacfbcfccdOcfdcfecffcdOcfgcfhcfhcfhcfibZXcfkcflcfmcfncfocfpcdScfqcfrcfsbUnbUnbUnbUnaaaaafaaaaaaaaaaahaahaahaafaaaaaaaafaaaaaaaafaafaafcftbZWcfvbNebKsbKtbKtbLTbLUbLTbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafaafaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafcejcfwcfxcfycfzcfAcejcDncDmcDjcDgcDlcDkcCUcCUcCVcCLcCLcCKcCMccVbTxbQibUGcCJcbycCGcCHcCIcCDcCEcCFaLqaJFaJFcaqceBcaqbTFcbIcfVcfWcfWcfWcfXcbIcfYcfZcgacfYcgbcgccgdcgecaEcgfceLcggcaIcghccfcgjbZycgkcglbZycgmbLvbVicgnccgcchbYfccjcciccicckcclcclcclcclccmcdLcgxcgycgycgzcgActsctyctscgDcgEcgFcgGcgGcgHcgIcgIcgJcgKcgLcgLcgMcdScgNcgOcgPcgNaaaaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafcgQbKqbKqbKrbKsbKsbKtbKtbKtbKtbKuaafaafaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaafaafaafcfIcfIcfIcfIcfIcfIcfIcfIcfIcfIcfIcfIcfIaaaaaacgScgTcgTcgTcgUcgVcejcCxcCwcCvcCucCtcCscCrcCpcBUcBTcBScBRcBQcBPcCAcCBcCycCzaLqaLqaLqaLqaLqaLqaLqaLqbEZbGDcaqbDfcaqbTFcbIcbIctpctqctrcbIcbIchrchschtcfYcaEcaEcaEcaEcaEcaIchuchvcaIchwccnchwbZychychzbZychAchBbVichCbVichDbYfccobYfbYfccpcdCcdCcdCcdDbYfcdLchIchJchJchKchLchMchNchOchPchQchRchSchTchUchVchWcgIcgIcgIchXchYcdSchZciacCCcgNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacfIcDIcEwcDIcfIcDKcEucDKcfIcDMcEvcDMcfIaaaaaaciicgTcgTcgUcgUcijcejcEqcEpcDAcErcEtcEscElcEkcEncEmcEmcEocEmccVbTxcEfbUGcEgcEhcEicEccEjcEccItcEdcEecEeciAciAciAciAbTFciGciHciIciIciJciKciLciMciXciOciPciQciRciSciSciTciUcaIcaIcaIciVcdEckqbZybZybZybZychBchBbViciYbViciZbYfccobYfaaaaaaaaaaaaaaaaaaaaacdLcjgcjhcjhcExcjjcjkcjlcjmcjncjocjpcjqcgIcgIcjrcjscgIcjtcgIchXcjucdScjvcjwcjxcgNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacfIcDIcDJcDIcfIcDKcDLcDKcfIcDMcEbcDMcfIaaaaaaciicgTcgUcgUcgUcjBcjCcDwcDvcDAcDzcDycDxcDrcDqcDpcDocDucDtcDsccVbTxcDFcCycDEcDGcDHcDCcDCcDCcDDcDBcFccIrceCcdeceAciAbTFciGckaciIckbckcckdcubckfckgckhctQckjckkcklciSckmciUcknckockpclicdFcdHcdGcdIcdIcdJcdIcdKbVibVibVibVibYfccobYfaaaaaaaaaaaaaaaaaaaaacdLckCckDckDckDckEcdOckFcdOckGckHckIckJckJckKckLckLckMckJckJckNckOcdSckPckQckRcgNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacfIcFwcFvcFucfIcFtcFrcFscfIcFqcFlcFpcfIaaaaafciiclbcgTcgUcgUcgUcejcFScFIcDAcDAcFHcDAcDAcDAcDAcFVcEmcFTcFUccVcFAcFBcFCcFDcFxcFycFzcFzcFzcFGcFdcFdcFEciAcFFcgqclwclxciGclyciIclzclAclBclCclDclEclFclGclHclIclJciSclKciUclLclMclNclOclPclQclNclRclSclTbYfceQcdIcdIcdIcdIcdIcIwbYfaaaaaaaaaaaaaaaaaaaaacdLcmacmbcmccmdcdOcmecmfcmgcdScmhcmicmicmicmjcmkcmlcmmcmicmicmicmncdScmocmpcmqcmraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaafaafcfIcEycsWcEzcfIcsVcsWcEAcfIcsVcsWcEAcfIaaaaafcmzcgTcgTcgUcgUcmAcejcEPcEOcENcEMcEGcEEcEScEScEUcETcEScERcEQccVcEZcFacEXcEYcEhcEVcEVcEWcFdcFecIucFbcFbciAcibceVcIvcqgciGcnbciIcnccndcFjciGcnfciNcIjcfYcFfcnicnjciScnkciUclLclMclNcnlcnmcnlclNaaaaaaaaabYfbYfbYfcnnclSclSclTbYfbYfaaaaaaaaaaaacdOcdOcdOcdOcdOcdOcdOcdOcdOcnocnpcnqcdScdScnrcnscntcdScdScdScdScnucnscntcdScdScnvcnwcnvaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabZSaafaafaafaaaaafcnxaafcnxaafcKBaafcKAaafcKBaafcKAaafaafaaacejcnAcnBcgUcgUcnCcnDcGPcGOcqPcGTcGUcxpcxpcGVcxpcxocGXcGWcxocGYcpbcGJcGKcGLcmRcmRcmRcmRcyKcGMcGNcGNcGNcgscgscgscgscnSciGcnTcnUcnccnVcnWciGcnfciNcnXciUcnYcnZcnjcoacobciUclLclMclNcoccodcoeclNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaacdOcofcogcohcwlcojcokcolcomconcoocopcoqcwkaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaafcoscotcosaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaafcGvcGxcGwcGycGwcGxcGzcGycGAcGBcGzcGCcGDcGEcGIcqPcqPcqPcqPcqPcqPcqPcqPcFXcFWcGbcGacFZcFYcGecGdcGccxocGicGhcGfcxocmQcGncGmcmRcGqcGrcGocGpcmMcGtcmJcGscGscGucwscwscmJbTFciGciGcpccpdciGciGciGcpeciNcpfciUciUciUcpgcphciUciUclLcpiclNcvmcvncvmclNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaafaafcdOcplcpmcplcvlcpocppcpqcomcomcprcomcdOcdOaaaaaaaaaaafaafaaaaacaaaaaaaaaaaaaafaaacvtaaaaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaaaaaaaaaaafcoxcvjcvicvhcuBcvjcvBcvzcvAcvxcvycvvcvwcvucnzcvrcvscvpcvqcvkcvocwmcvLcwpcwocvKcuycuAcuwcvHcvGcvJcvIcvDcvCcvFcvEcmQcuncwucmRcmMcmMcmMcmMcmMcwtcmJcwqcwqcwqcwscwscmJbTFcrYciGcqhcqicqjcqkciGcqlciNcqmciUcqncqocqpcqqciUcqrclLcpiclNcqscqtcquclNaaaaaaaaaaaaaaaaaacqvcqwcqxcqycqvaafaaaaaaaaaaaacdOcplcplcplcoicqAcqBcqCcqDcqEcqFcqGcqHcdOaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaafaaacmZaaaaafaafaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaafcuecnzcuacudcuccnzcoNcnzcoPctZcoNcnzcoPctZcnzcnzcnzcnzcnzctucnzcnzcnzcuAcuzcuycuxcoNcuwcuvcuucutcuscurcuqcupcuocmQcuncumcmRculcmMcmMcukcmMcujcmJcuicufcuhcufcugcmJbTFcrqciGcrrcrscrtcrucrvcrwcrxcrycrzcrAcrBcrCcrDciUcrEcrFcrGcrHcqvcrIcqvcrHaaaaaaaafaaaaaaaaacqvcrJcrKcrLcqvaafaafaaaaaaaaacdOcomcomcomcomcrMcppcrNcrNcrNcnpcrNcrOcdOaaaaaaaaaaaaaaacrPcrPcrPbZSaafaafaafaafcnaaafaafaafaafaafaaqcrPcrPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaafaafaafcoxcnzcuxcnzcuxcnzcoNcnzcyEcoScoXcoScyFcoScoScoUcyDcnzcnzcowcnPcnPcnPcyqcyocyrcyrcyscuwcyjcyicykcxocymcylcyncxocywcyxcwzcyycyzcyAcyBcyCcmMcytcmJcyucufcwycufcyvcmJbTFcizciGcszcsAcsBcsCciGcfYcsDcfYciUcsEcsFcsGcsHciUcsIcrGcrGcqvcsJcsKcsLcqvcqvcqvcsMcqvcqvcqvcqvcsNcsOcsPcqvcqvcqvcrHaaaaaacdOcofcogcohcslcsRcqBcrNcrNcrNcnpcrNcsScdOaaaaaaaaaaaaaaacrPaaaaafaaaaafaaaaaaaaackxaaaaafaafaaaaaaaaaaaacrPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafaafaaaaaacoxcnzcuxcnzcxJcxDcxEcxFcxGcxHcoXcoScxIcoScoScoUcxBcnzcnzcxCcudcxvcxucxucxtcuxcuxcxAcxwcxrcxqcxpcxocxscxocxocxocwBcwCcwzcwAcwFcwGcwDcwEcmMcwwcmJcwvcufcwycufcwxcmJctvctwciGciGctxciGciGciGciBctzctAciUciUciUctBciUciUcsIcrGaaacqvctCctDctEctFctGctHctIctJctKctLcqvctMctDctNcqvctOctPcqvaafaafcdOcplcplcplcorcpoctRctSctTctUctVcrNctWcdOcdOcdOcdOaaaaaacrPaaactXctXctXctXctXaafckxaafctXctXctXctXctXaaacrPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacoxcnzcxJcxDcxDcxDcxEcxDcxDcxDcxEcxDcxDcxDcxDcxDczucxDcxDcxEcxDczycxDcxDcxDczwczvczxcvjcnzczBczEczDczzcpMczAcqecpMcAtcAucAvczFczGczGczHczGcAycAzcAAcAwcAxczfczfcmJcuCcuDcuEcuFcuFcuGcuHcuIcuJcuJcuJcuJcuJcuJcuJcuJcuKcrFcrGaaactFcuLcuMcuNctFcuOcuPcuQcuQcuRcuQcuScuTcuUcuVcuWcuXcuQcqvaaaaaacdOcplcplcplcslcuYcuZcvacvbcvccvdcrNcrNcvecvfcvgcdOaafaafcrPaafckVckSckSckSckSckyckxckwckvckvckvckvckUaafcrPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacoxcnzcnzcnzcnzcnzcoNcnzcnzcnzcoNcnzcnzcnzcnzcnzcoPcnzcnzcoNcnzczocnzcnzcznczmczlczkczjcztczjczscyLczrczqczpcyLcyLczecyJcyKcyIcmMcyGcyHcmMcmMczhcufcufczgczfczfcmJbPxcAscvNcvNcvNcvNcvOcvNcvNcvNcvNclMcvPcrGcrGcrGcrGcrGcrGaaactFctFcvQctFctFcvRcvScvTcvUcvVcvWcvVcvXcvYcvZcwacwbcwccqvaaaaaacdOcomcomcomcomcwdcppcvacwecwfcwgcrNcrNcwhcrNcwicdOaaaaaacrPaafcwjcwjcwjcwjcwjaaackxaaacwjcwjcwjcwjcwjaafcrPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaabZSaaaaaaaaaaaacoxcnzcnzcnzcnzcnzcoNcnzcnzcnzcoNcnzcnzcnzcnzcnzcoPcnzcnzcoNcnzcnKcnzcnzcnKcnKcBEcnzcnzcBGcBFcoCcoCcoCcoCcBHcBzcmQcBIcBJcyycBKcmMcBLcyHcmMcBMcmJcBNcufcBOcAHcAIcmJcwHcvMcvNcwIcwJcwKcwLcwMcwNcwOcvNcwPcwQcrGaaaaaaaaaaaaaaaaaacqvcwRcwScwTcwUcwVcwWcwXcwYcwZcxacvZcxbcxccxdcuWcqvcxecqvaaaaaacdOcofcogcohckXcsRcuZcxgcxhcxhcxicxjcxkcIicxmcxncdOaaaaaacrPaaaaafaaaaafaafaafaaackxaaaaafaaaaafaaaaafaaacrPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacoxcnzcnzcnzcnzcnzcoQcnzcnzcnzcoQcnzcnzcnzcnzcnzcoPcnzcnzcBDcudcAKcAScAScAKcoFcAKcBucBtcBycAScBxcBvcBCcBBcBAcBzcmQcmPcmQcABcADcmMcmMcACcmMcAFcmJcAEcAEcAJcAHcAIcmJbPxcvMcvNcxKcxLcxMcxNcxOcxNcxPcvNcxQcxRcrGaaaaaaaaaaaaaaaaaacqvcxScxTcxUcxVcxWcxXcxYcxZcuTcyacuScybcuTcyccuVcqvcqvcqvaaaaaacdOcplcpmcplctbcpocppcrNcrNcyecyfcrNcygcomcomcomcdOaaaaaacrPaaactXctXctXctXctXaafckxaafctXctXctXctXctXaafcrPaaaaaaaaaaaaaaaaaaaaaaaacyhaaaaaaaaacyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafaaaaaaaaacoxcnzcowcnPcnPcnRcovcnPcnRcnPcoucnRcnPcnPcnPcnPcnQcnPcnOcnNcnMcnKcnzcnzcnLcnGcnHcnIcnJcnycnzcnEcnFcmXcmXcnecnhcmQcmPcmScmRcmNcmMcmOcmMcmLcmKcmJcmJcmJcmJcmJcmJcmJbPxcvMcvNcyMcyNcxLcyOcxLcxNcyPcvNcyQcyRcrGaaaaaaaaaaaaaaaaaacqvcuVcySctFctFcyTcyUcyVcyWctMctDctNcyXctMctDcyYcqvaaaaaaaaaaaacdOcplcplcplckXcyZczacrNcrNcrNcyfcrNczbcrNczccrNczdaafaafcrPaafckVckSckSckSckSckyckxckwckvckvckvckvckUaafcrPaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafaaaaaaaaacoxcnzcoNcnzcnzcnzcoQcnzcnzcnzcoQcnzcnzcnzcnzcnzcoPcnzcnHcnzcoOcnKcnzcnzcoHcoFcoGcoEcoCcoDcoCcoCcnFcoAcoBcoycnhcmQcmPcmQcmRcoMcoLcoKcoJcoIcmMcmRczIczJczJczKczLczMczNczOcvNcxNczPczQcxNczRczSczTcvNczUczVcrGaaaaaaaaaaaaaaaaaacqvczWcuMczXcuVczYczZcAactFcAbcAccsPcyXczWcAdcAecqvaaaaaaaaaaaackEcdOcAfcAgcAgcIgcAicAjcAkcAlcAmcAncAocApcAqcokcAraaaaaacrPaafcwjcwjcwjcwjcwjaaackxaafcwjcwjcwjcwjcwjaaacrPaaacyhaaaaaacyhaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaacyhaaaaaacyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaacoYcnzcoNcnzcoZcoScoXcoScoWcoScoXcoScoWcoScoScoScoRcoVcoRcoUcoTcoGcpscptcpucpvcpwcpxcoCcpjcIhcoCcoCcoCcoCcoCcpncpbcpacpbcmRcmRcmRcmRcmRcmRcmRcmRcALczJczJcAMcANcAObPxcAPcvNcAQcARcpycATcAUcAVcAWcvNcAXcAYcrGaaaaaaaaaaaaaaaaaacqvcuQcAZcAectFcBacBbcBcctFcBdcBecBfcBgcBhcBicBjcqvaafaafaaaaaaaaaaaabquaaacdOcBlcBmcBncBocBpcBmcBqcBrcBpcBmcBscdOaaaaaabZSaaaaafaaaaafaaaaafaaackxaaaaafaaaaafaafaafaafcrPaaacyhcyhcyhcyhaaacyhcyhcyhcyhcyhcyhcyhcyhcyhaaacyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIvaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabZSaaaaaaaaaaaaaamaaaaaaaaacpzcnzcoNcnzcnHcnGcoNcnzcnHcnGcoNcnzcnHcnGcnzcnzcnLcnzcnHcnGcpAcpQcpTcpNcpOcpVcpWcpUcoCcpDcpFcpBcpCcpLcpMcpHcpJcpMcqbcpMcqacqecqdcqccpZcpZcpYcpXcBVcBWcBWcBXcBYcAObPxcBZcvNcvNcCacCbcCccCbcCacCdcvNcrGcCecrGaaaaaaaaaaaaaaaaaacqvctFcCfcuVctFcCgcChcCictFcCjcCkcqycgvcCmcCncCocrHaaaaaaaaaaaaaaaaaacgwaafcdOcCqcluclUcomclsclpclqcomcloclVclWcdOaaaaaacrPaaactXctXctXctXctXaafckxaafctXctXctXctXctXaafcrPaaacyhcyhcyhcyhaaacyhcyhcyhcyhcyhcyhcyhcyhcyhaaacyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaafaafaafaafaamaafaafaafcpzcrgcrjcrhcricrbcracqZcqYcqXcqWcqVcqUcrbcnzcrgcrfcrecrdcqXcrccqPcqPcqPcqPcqPcqPcqPcqPcqRcjbcpncqScqIcmQcqQcmQcmQcmPcmQcmQcqfcmQcqIcqzcqKcqJcqMciCcCNcCOcCPcCQcAObPwcCRcCScCTcCacAGcAVcBwcCacCWaafcCXcCYcCXaaaaaaaaaaaaaaaaaacqvcCZctDcuQcDacDbcuQcDccDdcDeaafaaachxchFchEclXaaaaaaaaaaacaaaaaaaaaaaaaaacdOcDhcplcplcomcDicplcplcomcDicplcplcdOaafaafcrPaafckVckSckSckSckSckyckxckwckvckvckvckvckUaafcrPaaacyhcyhcyhcyhaaacyhcyhcyhcyhcyhcyhcyhcyhcyhaaacyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPcsbaaaaaaaaaaamaaaaaaaaacsgcsccsdcsecsfcsicshcsjcsfcsicshcsjcsfcsicsmcsmcsncsjcsfcsicskcqPaaacrocrpcrmcrncrkcrlcrUcrVcgYcgYcrScrTcrQcrRcrZcsacrRcrZcrQceXcrXcrWceXcpncpncAOcDNcDOcDPcDQcAObNUcDRcDScDTcCacCbcDUcCbcCacCWaafaaaaafaaaaaaaaaaaaaaaaaaaaacqvcCZcDVcDWcDXcDXcDWcsPcDYcqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdOcDZcplcplcomcEacplcplcomcEacplcplcdOaaaaaacrPaafcwjcwjcwjcwjcwjaaackxaaacwjcwjcwjcwjcwjaaacrPaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPcClcqLcqLcqLcpEcpIcpIcpIcqLcpIcpPcpIcpGcpIcpPcpIcpGcpIcpPcpIcpGcpIcqLcpIcpRcpIcpGcpIcqNaafaaaceUcsvcexcswcsxchccrUchbcgYcsycsQcsTcgtcsUcspcsocsrcsqcgtcsscsucstceXaaaaafcAOcEBcECcEDaafaaabNUbPxbPxbSkcCaclZcEFclYcCacCWaafaafaaaaaaaaaaaaaaaaaaaaaaaacqvcEHcuXcEIcEJcEJcEIcuQcEKcqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdOcplcplcplcomcELcplcplcomcELcplcplcdOaacaaacrPaaaaaaaafaafaafaaaaaacmTaafaaaaaaaafaafaaaaaacrPaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaafaafaaaaaaaaqaaaaaaaaaaafcfIcsVcsWcsXcfIcsVcsWcsXcfIcsVcsWcsYcfIaaacfIcsZcsWcsYcfIaaaaafaaaceUceyctcchdceyctactectfcgYctdcthcticgtctgctmctlctkctjcgtcttctoctnceXaaaaaacAOcFgcFhcFiaaaaaabNUbPxbPxbNUcCacmUcmUcmUcCacFkcmWaaaaaaaaaaaaaaaaaaaaaaaaaaacqvcFmcFncuQcuQcuQcuQcuQcFocqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaackEcdOcdOcdOcdOcdOcdOcdOcdOcmYcmYcmYckEaaaaaacrPcrPcrPcrPcrPaaaaaaaaacmZaaaaaaaaacrPcrPcrPbZScrPaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaaaaafaafaaaaamaaaaaaaaaaafcfIcfJcfGcfHcfIcgicfRcfQcfIcfPcfOcfNcfIaafcfIcfMcfLcfKcfIaaaaafaaaceUceWcexceyceyceTcetceucevcewcepceqcercescfDcfCcfFcfEcfjceYcfBcfuceXaafaaacFJcDNcFKcAOcFLaaabNUcFMbPxcFNcFOaafaafaafaaacBkaafaafaaaaaaaaaaaaaaaaaaaaaaaacrHcqvcqvcFPcFQcEIcEIcEIcFRcFPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqpbqpbqpaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaafcfTaafcrPaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaamaaaaaaaafaafcfIchkchlchkcfIchichjchicfIchgchhchgcfIaaacfIchgchgchfcfIaaaaafaaaceUchecexchdceychcchachbcgYcgZcgWcgXcgtcgRcgBcgCcgBcgucgtcgrcgpcgoceXaaLcGgcGgcGgcGgcGgcGgcGgbNUciEciDcGjaafaaaaaaaafcGkcDfaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacGlcEJcEJcEJcEJcEJcGlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaaaaafaaacrPaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaafaamaaaaafaafaaacfIchkchmchkcfIchichnchicfIchgchochgcfIaafcfIchgchgchgcfIaafaafaafcidciecifcigcihcikchpchbcgYcAhchGchHcgtciccimcilciocincgtcipcirciqceXaaacGgcGgcGgcGgcGgcGgcGgcGFcGGcGHbNUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqvcCmcqxcqxcqxcCocqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPcrPcrPcrPcrPaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbZSaaaaaacfIcfIcfIcfIcfIcfIcfIcfIcfIcfIcfIcfIcfIaaaciscfIcfIcfIcfIaaaaaaaaaaaacjbcjbcjbcjbcjbciycitcitcitcitcjacitciWcivciwcivciucitcitcixcitcitcitcGgcGgcGgcGgcGgcGgcGgaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaacyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcrPaaaaaaaafaafaaaaafaafaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaafaaacGQcGRcGRcGRcGScjycjccjdcjecjicjFcjGcjHcjIcjzcjAcIfcjEcjNcjMcjPcjOcjKcjJcjJcjLcjQcitcGgcGgcGgcGgcGgcGgcGgaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafcHncjVcHpaaacHncjVcHpaaacHncjVcHpaafaafaaaaafaafaafaafaafcHqcGRcGRcGRcGScjycjXcjYcjTcjUckzckAcksckuckickrcjZckecjJcjRcjJcjJcjJcjJcjJcjJcjScitcGgcGgcGgcGgcGgcGgcGgaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaacHncjWcHpaaacHncjWcHpaaacHncjWcHpaafaafaaaaafaaaaaacHKaafcGQcGRcGRcGRcGScjycjXckTckWckYckZckAclaclccldclecjJcjJclhclgcljcjJcjJcjJcjJcjJclkcitcIbaafaaIaafaafaafaafaafaafaafaafaafckBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafcHncjWcHpaaacHncjWcHpaafcHncjWcHpaafaaaaaaaafaafcIcaaaaafcHqcGRcGRcGRcGScjycmycmBcmwcmxcmEcmFcmCcmDcmHcmIcmGcmGcmsclvcltclnclnclnclnclncmvcmucmtclmclmclmclmclmclmclmclmclmcllaaackBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaacHncjWcHpaafcHncjWcHpaaacHncjWcHpaaaaaaaaaaaaaafaafaaaaafaaaaaaaaaaaaaafcHYcIecIdcIacHZcHUcjGckecjJcHXcHWcHScHVcHPcHQcHNcHOcHScHTcHRcjJcHLcHMcmtcllcHJcllcHJcllcHJcllcHJcllcHdaafckBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaaIaafaaacHncjWcHpaafcHncjWcHpaaacHncjWcHpaafaaaaaaaaaaaaaafaafcIJcIKcIKcIKcIKcILcILcILcILcILcIMcILcitcjJcjJcHDcitcitcitcHFcHGcHHcitcitcitcHIcjJcHEcitaaacHdcHdcHdcHdcHdcHdcHdcHdcHdcHdaafckBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaafaaaaafaafczCaafaafaafczCaafaaaaafczCaafaaaaaaaaaaaaaaacIUcIVcIWcIXcIYcHCcJacJbcJcciFcJecJfcJgcJecitcHBcjJcHrcHkcHmcHycHzcHAcHxcHycHjcHkcHtcjJcHwcitaaacHdcHdcHdcHdcHdcHdcHdcHdcHdcHdaaaaanaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafcydcxzcxycxxcxxcxxcxxcxxcxxcxxcxxcxxcxxcxxczicxzcxzcxzcypcJzcJAcJBcJCcJDcJEcJFcJGcJHcJHcJHcJIcJJcJKcitcjJcjJcHrcHkcHmcHscHgcHucHvcHscHjcHkcHtcjJcjJcitaaacHdcHdcHdcHdcHdcHdcHdcHdcHdcHdaafckBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYaaactYctYctYctYctYaaactYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaafaaaaafaafcxfaafaaaaafcxfaafaaaaafcxfaafaaaaaaaaaaaaaaacIUcIVcJRcJScJTcJUcIKcJVcJWcJecJecJXcJXcJYcitcHlcjJcHocHkcHmcHfcHgcHhcHecHfcHjcHkcHicjJcjJcitaaacHdcHdcHdcHdcHdcHdcHdcHdcHdcHdaafaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYaaactYctYctYctYctYaaactYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaaIaafaafcHncwrcHpaaacHncwrcHpaaacHncwrcHpaafaaaaaaaaaaaaaafaafcKfcIKcIKcIKcIKcKgcKhcKicKicKjcKgcKgcitcitcjGcitcitcitcitcitcHccitcitcitcitcitcjGcitcitaafcHbcHacHbcHacHbcHacHbcHacHbcHaaaaaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtnbtnbtnbtnbtnbtnbtnbGlbGmbGnbdPbdPbGobwNbwNbwNbGpbdPbdPbGqbGrbGsbdPbGtbGtbGtbGubGtbGvbGwbGxbGybGzbtCbvtbAbbGAbGBbtCbtGbtGbtGbtGbtGbGCbtGbtGbtGbtGbtGbtGbshbtGbtGbtGbtGbtGbtGbtGbtGaJiaJiaJiaJiaJiaJibxwaRqaRpbVjbGEbFkbxubGGbxUbGIbGJbGKbGLbGMbGNbCjbGObGPbGQbGRbGSbGTbGUbGVbGWbGXbGYbGZbHabHbbHcbHdbHebHfbCpbUSbUfbwwbwwbwwbwwbwwbHibwwbwwbwwbzAbHjbzAbzAbHkbBhbCubCvbFTbHlbHmbHnbHobHpbHqbGabGbbGcbHraaaaaabCJbHsbHtbCJbBybCJbCJbBybCJaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtnbtnbtnbtnbtnbtnbtnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabHuaafaaaaaaaaaaaabGtbHvbHwbHxbHybGvbHzbHAbHBbHCbtCbvtbAbbAcbAabHDbHEbHFbHGbHHbHIbHJbHKbHLbHMbHLbHNbHObqybHQbHRbAabHSbAabHTbAabzZbHUbHVbHWbHXbHYbHZbxwaRqbDsaJlbDtbALbDtbCAbCAbxCbIbbIcbIdbIebIfbIgbIhbIibIjbIkbwmbIlbImbInbDJbCWbIobIpbIqbIrbFDbIsbItbIubCpbIvbIwbIxbIybUdbIAbIBbICbIDbUcbIFbIGbIHbIIbIJbzAbIKbCubCvbILbIMbINbIObIPbIQbIRbGabGbbISbEnbEnbEnbCJbCJbCJbCJaaaaaaaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIvaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtnbtnbtnbtnbtnbtnbtnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabGtbITbIUbIVbIWbIXbIYbIZbJabJbbtCbvtbJcbJdbJebJebJfbJgbJhbJibJjbJgbJfbJebJebJebJkbJlbqsbJnbJobJebJebJebJpbJgbJhbJqbJrbJsbJtbJubJtbJvbJwbvUaJlbDubDebDCbGFbElbDTbDzbEmbFibDVbxFbJDbCFbDSbDEbJGbwkbJHbJIbJJbDJbJKbJLbJMbJNbJObFDbJPbItbJObCpbJQbJRbIxbJSbJTbJUbJVbJWbJXbJYbIFbJZbKabKbbKbbzAbKcbKdbKebKfbKgbKhbKibKjbKjbKkbGabGbbKlbEnbKmbKobKnbEnaafaafaafaafaafaafaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbKpbKqbKqbKrbKsbKsbKtbKtbKtbKtbKuaafaafaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtnbtnbtnbtnbtnaaaaaaaaaaaaaaaaaaaaaaaabKvbKwbKxbKwbKyaaaaaaaaabGtbGtbKzbKAbIVbKAbKBbKCbHBbKDbKEbtCbKFbvtbKGbKHbAabKIbAabzZbHHbKJbAabKKbKLbKMbKNbKObAcbAabKPbKQbHLbKRbHLbHLbKSbKTbKUbKVbKWbKXbcLbKYaRpaRpaRpaJlbFHbGFbGFbFlbHPbGHbJxbJmbFIbLgbLhbLibLjbHgbDEbIkbIabIzbHhbDJbDJbLobLobLobCpbLpbLqbLrbLsbLtbCpbLubLvbIxbLwbFGbLybLzbLAbLBbLCbIFbLDbLEbKbbKbbzAbRsbLFbCvbwwbLGbLHbLIbLJbLKbLLbGabLMbLNbLObLObLObLPbGdaaaaaaaaaaaaaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafbLQbLRbLSbLRbKsbKtbKtbLTbLUbLTbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabLVbLWbLXbLYbLVbLZbMabMbbGtbMcbMdbMebMfbMgbMhbMibMjbMjbMkbtCbtCbtCbMlbtCbtCbtCbtCbtCbtCbtCbtCbtCbtCbtCbtCbtCbMmbMnbMobtCbtCbtCbtCbtCbMpbtCaJlaJlaJlaJlbMqaJlaKSaMpbMraJlbJCbJybJybGFbKZbxCbDzbLabxCbMybMzbMAbMBbwkbMCbMDbMEbMFbMGbMHbMIbMJbMKbMLbItbJObFDbFDbMMbJObCpbMNbMObMObMObMObMObMObMObMObMObMObMPbMQbMRbMRbzAbMSbMTbMUbwwbMVbMVbMVbMWbMXbMYbMVbMVbMVbMVbMVbMZbNabNbaymaymaymaymaymaymaymaymaymaymaymaymaymaymaymaymaymaymaymaymaymaymaymbNdbLRbLRbNebKtbKtbLTbLTbNfbLTbLTbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabKxbNgbNhbNgbKxbNibNjbNkbNlbNmbNnbKAbNobNpbGvbNqbNrbNsbNtbGvbNubNvbNwbNxaaaaaaaaaaaabNybNzbNAbNBbNDbNCbNEbNFbNGbNHbNIbNFbNJbNKbNLbNMbNNbNObNPbNQbNRbNSbNTbNUbNUbNUbNUbDtbDtbLdbMtbMsbDtbxCbNZbOabObbMzbOcbOdbOebOfbOgbOhbOibOjbOkbOlbOmbOnbMKbOobFDbFDbOpbJObJObOobCpbMNbMObOqbOrbOsbOtbOubOvbOwbOxbMObOybOzbOAbOAbzAbOBbOCbCvbzIbODbOEbOFbOGbOHbOIbOJbOKbOLbOMbMVbEnbONbEnbOObOObOObOObOOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabOPbKtbNdbKtbKtbLTbLTbLTbLTbLTbLTbLTbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabLVbNgbNgbNgbOQbORbKAbOSbOTbOUbKAbKAbOVbOWbGvbGvbGvbGvbGvbGvbOXbOYbOZbPaaaabPbbPcbPcbPdbPebPfbPgbPhbPfbPibNFbPjbPkbPlbNFbPmbPnbPobPpbPqbPrbPsbPtbPtbNSbPubPvbPwbPxbPybDtbMubLbbPzbGFbMwbMvbDzbPCbxCbPDbPEbPFbPGbwkbPHbPIbwkbPJbPKbPLbPMbPNbMKbCpbCpbCpbCpbCpbCpbCpbCpbPObMObPPbQYbPRbOsbOsbOsbOsbPSbMObPTbLEbPUbPUbzAbBhbPVbPWbPXbPYbPYbPYbPYbPZbQabQabQbbQcbQdbMVbQebQfbQgbOObQhbMxbQjbQkaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbKsbKtbQlbQmbQmbLTbLTbLTbLTbLTbLTbLTbLTbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabKxbNhbNhbNhbKxbQnbQobQpbQqbQrbKAbKAbQsbQtbQubQvbQvbQvbQvbQvbQvbQwbQxbQyaaabQzbQAbQBbQCbQDbPfbQEbQGbQFbQHbNFbQIbQJbQKbNFbQLbQMbQNbQObQPbQQbQRbPtbQSbPxbQTbNUbPxbPxbQUbNVbNXbGFbQVbGFbPAbNYbQXbLebRCbQZbRabRbbRcbRGbDEbIkbSpbPJbPLbPLbPMbRfbMKbRgbRhbPBbRjbRkbRlbQibRnbPObMObOsbOsbRobOsbOsbOsbOsbRpbMObRqbLEbRrbRrbzAbRsbRtbRubRvbRwbRxbRybRybRzbRAbRybRybRybRBbRebRDbREbRFbRdbRHbRIbRJbRKaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabKtbKtbRLbLTbLTbLTbLTbLTbLTbLTbLTbLTbLTbLTbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaabLVbRMbRNbRObLVbRPbMabMbbGtbGtbRQbRQbRQbGtbGtbNxbRRbRRbRSbRSbRSbRSbNwbQyaaabRTbRUbRVbRWbRXbRYbRZbSabSbbSbbScbSdbSebSfbNFbPtbPtbPtbPtbPtbSgbPtbPtbShbSibSjbNUbPxbSkbSlbDtbRibLbbQVbSmbSnbRmbSobJAbJBbSqbSrbSsbStbJzbFsbSvbIEbSxbSybSzbSAbSBbMKbSCbSDbSEbRjbSFbSGbSHbRnbPObMObMObMObRobOsbOsbOsbMObMObMObSIbSJbRrbRrbzAbSKbSLbCvbzIbSMbSNbSObSPbSQbSRbSSbQabSTbSUbMVbSVbQfbSWbOObSXbSYbSZbTaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbKtbLTbLTbLTbLTbLTbLTbTbbLTbTcbLTbLTbLTbLTbLTbKtbKtaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabTdbKwbTebKwbTfbTgaafaaaaaabGtbThbTibTjbGtaaabNxbTkbTlbTmbTnbTnbTnbTobQyaaabQzbTpbTqbTrbTsbPfbTtbTvbTubTwbNFbTxbTybTzbTAbTBbTBbTBbTCbTCbTDbTEbULbPxbPxbTFbNUbNUbNUbNUbDtbDtbLfbLkbLcbDtbTJbTKbTLbJFbJEbTJbTObLlbLmbTRbTSbTJbMKbMKbMKbMKbMKbMKbTTbTUbTVbRjbTWbTXbTYbRnbPObMObTZbQWbPQbLxbLnbNWbNcbTZbUgbUhbUibIIbIJbzAbIKbSLbUjbwwbMVbMVbMVbMVbMVbUkbMVbUlbQabUmbMVbUnbUobUnbOObUpbUqbUrbOOaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabKtbUsbUsbUsbUsbUsbUsbUtbLTbUubUsbTcbLTbLTbLTbLTbKtaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbUvbNxbNxbNxbNxbRSbUwbNwbUxaaabUybPcbPcbUzbUAbPfbPfbUBbPfbUCbNFbUDbTMbTNbNFbTPbTPbTPbTPbTPbTPbTPbTPbUHbUIbUJbUKbUKbUMbNUbDtbUNbUebUFbUQbURbwabUTbUUbUVbUWbUXbUTbUYbUZbVabVbbVcbVdbVebVfbVgbVhbVibUGbVkbUObRjbUPbVmbUPbRnbPObMObVnbWcbVpbVqbVrbVsbVtbVubUgbzAbVvbzAbzAbVwbCxbSLbCxbVxaafbnxbVzbrBbVBbVCbVBbVDbVEbVFbMVbVGbVHbVIbOObVJbVKbVKbwhaaLaaLaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwibLRbLRbLRbLRbLRbLRbLRbVNbLUbLTbLTbLTbLTbVObLUbKuaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabVPbVQbVQbVRbVSbNxbVTbRSbVUbNxaaaaaaaaaaaabNybVVbVWbVXbVZbVYbPfbNFbWabWbbNIbNFbTPbWdbWfbWebWhbWgbWibTPcaqcaqcaqcaqcaqbTFbWjbWkbWlbWmbWnbWobWpbxgbWrbWsbWtbWubWtbWvbWtbWwbWxbWybWzbWAbWBbWAbWCbWDbWEbWFbWGbWHbWIbWJbWKbWLbWMbxVbMObxWbzmbzlbWSbWTbWUbWSbWSbWVbWWbWXbWYbWZbCxbCxbSLbCxbFTaafbnxbXabXbbXcbXdbXebXfbXgbXhbMVbXibVHbXjbOObOObOObOObOOaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabKtbQmbQmbQmbQmbQmbQmbXkbLTbQlbQmbXlbLTbLTbLTbLTbKtaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabXmbXnbXobXpbRSbXqbXrbRSbXsbNxaaKaaaaaaaaabNybNybNybNybNybNybNybNFbUDbUEbXtbNFbTPbXubXwbXvbXvbXwbXxbTPbXzbXybXybXAcaqbXBbDtbDtbXCbXDbXEbXFbXGblRbXIbXJbXKbXLbXMbXNbXObXPbXQbXRbXSbXTbXUbznbzpbzobAPbzqbARbAQbATbASbAVbAUbYfbYgbIwbYhbVobCqbWObWNbWPbYmbYnbYobYpbYqbYrbYsbYtbYrbYubYvbILaafbnxbXablSbVBbYxbVBbYebYzbYAbMVbXjbVHbYBbYCbUnaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbKtbLTbLTbLTbLTbLTbLTbTbbLTbXlbLTbLTbLTbLTbLTbKtbKtaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYDbVQbVQbVRbYEbYFbYGbNxbYHbNxbYIbYJbYKbYIbYIbYLbYMbYNbYObYPbYQbYybYSbYRbYUbYTbYVbXwbYXbYWbYZbYYbZbbZabZdbZcbZfbZecaqbZhbNSbZibZjbZkbZlbZlbZmbnEbZobZpbTJbTJbZqbZrbTJbTJbZsbZgbZTbVibZvbWQbZxbZybZzbZybZAbZUbZCbZUbZAbWRbYfbMNbIwbZEbXWbXVbZVbZIbZJbZKbMObMObwwbwwbwwbwwbwwboIbnFbofbwwbMVbMVbMVbMVbMVbUkbMVbMVbMVbMVbMVbZObZPbZQbZRbUnaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabKtbKtbRLbLTbLTbLTbLTbLTbLTbLTbLTbLTbLTbLTbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaambZSaamaamaamaamaamaaaaaaaaaaaaaaaaaaaafaafaaabZWbZXbZXbZXcaabZXbZXcahcagbYIbZYbZZbYIcaicabcaccadcaecafcakcajcamcalcaocancapbXwbYXcaJcbibYYcbjbTPcaqcaqcaqcaqcaqcarbNSbDtcascatcaucavcawcaxcaycazbTJcaAcaBcaCcaDcaEcaFcaGcaHcaIbZxbWQcbkbZycaKcaLbZAcaMcaNcaObZAbXXbYfbPObIwbXYbYabXZbXYbXYbIwbIwbIwcaRcaScaTcaUcaVbwwbwwcaWbwwbwwcaXcaYcaZcbabXjcbbbXjbXjcbccbdcbecbfcbgcbhbUnbUnbUnaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbKsbKtbUubUsbUsbLTbLTbLTbLTbLTbLTbLTbLTbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafcblcbncbmcbpcbocbycbqcbAcbzbYIcbrcbsbYIbYIcbtcbucbvcbwcbxcbCcbBbYSbYRbYUcbDcbEbXwbXwcbKcbQbXwccAbTPcbFcbGcaqcbHcaqbTFcbIcbIcbIcbIcbIcbIcbIbTJcbJccBbTJcbLcbMcbNcbOcaEcbPccCcbRcaIbZxbWQbZxbZycbScbTbZAcbUcbVcbWbZAbXXbYfbYbbYdbYcbYiccDbYjbYcchBbYkbYlcktbZDbZwbZFcktccrbZGbZHccqccrccscctcctcctcctccucctcctcctcctcctccvccwccxccycczbUnbUnbUnbUnaaaaafaaaaaaaaaaahaahaahaafaaaaaaaafaaaaaaaafaaaaaabOPbKtbNdbKtbKtbLTbLTbLTbLTbLTbLTbLTbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafccEccEcbmccPccFcbyccQccSccRbYIccGccHccIccJccKccLccMccNccOccUccTccWccVccYccXcdaccZcdBcdbcelcekcencemcdccddaJEcdfcaqbTFcbIcdgcdhcdicdjcdkcdlcdmcdncdocdpcdqcdrcdscdtcaEcducdvcdwcaIbZxbWQbZxbZycdxcdybZAcdzcdAceobZAcaPbYfbYfcaQbYccbYcbXcbZbYcchBccacjfcdLcdLbyFbBucdLcdOcdPcdQcdRcdOcdSbBpbyebydcdScdScdScdSbAebyebydcdScdSbXjcdXcdYcdZceacebcecbxTbycbycbycbycbycbycbycbycbycbycbycbycbycbycbycbyccefcegcegcehbKtbKtbLTbLTceibLTbLTbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacejcejcejcejcejcejcejceqcepbYIbYIbYIbYIbYIbYJcescercercerceucetbYSbYRbYUcevbYVcewceycexceTceSceUbTPcezaJFboqaJFcaqbTFcbIceDceEceEceEceFceGbTJceHceIbTJcbLcbNceJcbOcaEceKceLceMcaIbZxbWQceNbZyceOcePbZAbZAbZAbZAbZAccbceRbYfcaQbYcccdcccbYcbYcchBccecjfcdLceZcfacfbcfccdOcfdcfecffcdOcfgcfhcfhcfhcficeWcfkcflcfmcfncfocfpcdScfqcfrcfsbUnbUnbUnbUnaaaaafaaaaaaaaaaahaahaahaafaaaaaaaafaaaaaaaafaafaafcftceXcfvbNebKsbKtbKtbLTbLUbLTbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafaafaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafcejcfwcfxcfycfzcfAcejcfjceYcfBcfucfDcfCcfEcfEcfGcfFcfFcfHcfIcbBbYSbYRbYUcfJcapcfKcfMcfLcfOcfNcfPbTPaJFaJFcaqceBcaqbTFcbIcfVcfWcfWcfWcfXcbIcfYcfZcgacfYcgbcgccgdcgecaEcgfceLcggcaIcghccfcgjbZycgkcglbZycgmbLvbVicgnccgcchbYfccjcciccicckcclcclcclcclccmcdLcgxcgycgycgzcgActsctyctscgDcgEcgFcgGcgGcgHcgIcgIcgJcgKcgLcgLcgMcdScgNcgOcgPcgNaaaaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafcgQbKqbKqbKrbKsbKsbKtbKtbKtbKtbKuaafaafaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaafaafaafcfQcfQcfQcfQcfQcfQcfQcfQcfQcfQcfQcfQcfQaaaaaacgScgTcgTcgTcgUcgVcejcfUcfRcgocgicgrcgpcgucgtcgCcgBcgWcgRcgYcgXchacgZchcchbbTPbTPbTPbTPbTPbTPbTPbTPbEZbGDcaqbDfcaqbTFcbIcbIctpctqctrcbIcbIchrchschtcfYcaEcaEcaEcaEcaEcaIchuchvcaIchwccnchwbZychychzbZychAchBbVichCbVichDbYfccobYfbYfccpcdCcdCcdCcdDbYfcdLchIchJchJchKchLchMchNchOchPchQchRchSchTchUchVchWcgIcgIcgIchXchYcdSchZciachdcgNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacfQchechfchecfQchgchhchgcfQchichjchicfQaaaaaaciicgTcgTcgUcgUcijcejchlchkchnchmchpchochGchqcicchHchHcidchHcbBbYSciebYUcifcihcigcilcikcilcimciocincinciAciAciAciAbTFciGciHciIciIciJciKciLciMciXciOciPciQciRciSciSciTciUcaIcaIcaIciVcdEckqbZybZybZybZychBchBbViciYbViciZbYfccobYfaaaaaaaaaaaaaaaaaaaaacdLcjgcjhcjhcipcjjcjkcjlcjmcjncjocjpcjqcgIcgIcjrcjscgIcjtcgIchXcjucdScjvcjwcjxcgNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacfQcheciqchecfQchgcirchgcfQchicischicfQaaaaaaciicgTcgUcgUcgUcjBcjCciucitchncivcixciwciWciycjbcjacjdcjccjecbBbYScjichccjycjAcjzcjDcjDcjDcjEcjGcjFcjHceCcdeceAciAbTFciGckaciIckbckcckdcubckfckgckhctQckjckkcklciSckmciUcknckockpclicdFcdHcdGcdIcdIcdJcdIcdKbVibVibVibVibYfccobYfaaaaaaaaaaaaaaaaaaaaacdLckCckDckDckDckEcdOckFcdOckGckHckIckJckJckKckLckLckMckJckJckNckOcdSckPckQckRcgNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacfQcjIcjKcjJcfQcjLcjNcjMcfQcjOcjQcjPcfQaaaaafciiclbcgTcgUcgUcgUcejcjScjRchnchncjTchnchnchnchncjUchHcjXcjYcbBckecjZckrckickucksckzckzckzckAckBckBckTciAckWcgqclwclxciGclyciIclzclAclBclCclDclEclFclGclHclIclJciSclKciUclLclMclNclOclPclQclNclRclSclTbYfceQcdIcdIcdIcdIcdIckYbYfaaaaaaaaaaaaaaaaaaaaacdLcmacmbcmccmdcdOcmecmfcmgcdScmhcmicmicmicmjcmkcmlcmmcmicmicmicmncdScmocmpcmqcmraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaafaafcfQckZclcclacfQcldclcclecfQcldclcclecfQaaaaafcmzcgTcgTcgUcgUcmAcejclhclgclkcljclmcllclnclnclvcltclncmscmtcbBcmvcmucmxcmwcihcmycmycmBckBcmCcmEcmDcmDciAcibceVcmFcqgciGcnbciIcnccndcmGciGcnfciNcmHcfYcmIcnicnjciScnkciUclLclMclNcnlcnmcnlclNaaaaaaaaabYfbYfbYfcnnclSclSclTbYfbYfaaaaaaaaaaaacdOcdOcdOcdOcdOcdOcdOcdOcdOcnocnpcnqcdScdScnrcnscntcdScdScdScdScnucnscntcdScdScnvcnwcnvaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabZSaafaafaafaaaaafcnxaafcnxaafcKBaafcKAaafcKBaafcKAaafaafaaacejcnAcnBcgUcgUcnCcnDcmKcmJcmMcmLcmOcmNcmNcmPcmNcmQcmScmRcmQcmXcngcnecnycnhcnzcnzcnzcnzcnFcnEcnGcnGcnGcgscgscgscgscnSciGcnTcnUcnccnVcnWciGcnfciNcnXciUcnYcnZcnjcoacobciUclLclMclNcoccodcoeclNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaacdOcofcogcohcwlcojcokcolcomconcoocopcoqcwkaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaafcoscotcosaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaafcnHcnJcnIcnKcnIcnJcnLcnKcnMcnNcnLcnPcnOcnRcnQcmMcmMcmMcmMcmMcmMcmMcmMcovcoucoxcowcoAcoycoCcoBcoDcmQcoFcoEcoGcmQcoIcoHcoJcnzcoLcoKcoNcoMcoPcoOcoRcoQcoQcoScoTcoTcoRbTFciGciGcpccpdciGciGciGcpeciNcpfciUciUciUcpgcphciUciUclLcpiclNcvmcvncvmclNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaafaafcdOcplcpmcplcvlcpocppcpqcomcomcprcomcdOcdOaaaaaaaaaaafaafaaaaacaaaaaaaaaaaaaafaaacvtaaaaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaaaaaaaaaaafcoUcoWcoVcoYcoXcoWcoZcpbcpacpkcpjcpscpncpucptcpwcpvcpycpxcpAcpzcpCcpBcpFcpDcpJcpHcpMcpLcpOcpNcpTcpQcpVcpUcpXcpWcoIcpYcpZcnzcoPcoPcoPcoPcoPcqacoRcqbcqbcqbcoTcoTcoRbTFcrYciGcqhcqicqjcqkciGcqlciNcqmciUcqncqocqpcqqciUcqrclLcpiclNcqscqtcquclNaaaaaaaaaaaaaaaaaacqvcqwcqxcqycqvaafaaaaaaaaaaaacdOcplcplcplcoicqAcqBcqCcqDcqEcqFcqGcqHcdOaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaafaaacmZaaaaafaafaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaafcqccptcqdcqfcqecptcqzcptcqIcqJcqzcptcqIcqJcptcptcptcptcptcqKcptcptcptcpMcqMcpHcqPcqzcpLcqRcqQcqUcqScqWcqVcqYcqXcoIcpYcqZcnzcracoPcoPcrbcoPcrccoRcrdcrfcrecrfcrgcoRbTFcrqciGcrrcrscrtcrucrvcrwcrxcrycrzcrAcrBcrCcrDciUcrEcrFcrGcrHcqvcrIcqvcrHaaaaaaaafaaaaaaaaacqvcrJcrKcrLcqvaafaafaaaaaaaaacdOcomcomcomcomcrMcppcrNcrNcrNcnpcrNcrOcdOaaaaaaaaaaaaaaacrPcrPcrPbZSaafaafaafaafcnaaafaafaafaafaafaaqcrPcrPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaafaafaafcoUcptcqPcptcqPcptcqzcptcrhcrjcricrjcrkcrjcrjcrmcrlcptcptcrocrncrncrncrQcrpcrRcrRcrScpLcrUcrTcrVcmQcrXcrWcrZcmQcsbcsacsdcsccsfcsecshcsgcoPcsicoRcsjcrfcskcrfcsmcoRbTFcizciGcszcsAcsBcsCciGcfYcsDcfYciUcsEcsFcsGcsHciUcsIcrGcrGcqvcsJcsKcsLcqvcqvcqvcsMcqvcqvcqvcqvcsNcsOcsPcqvcqvcqvcrHaaaaaacdOcofcogcohcslcsRcqBcrNcrNcrNcnpcrNcsScdOaaaaaaaaaaaaaaacrPaaaaafaaaaafaaaaaaaaackxaaaaafaafaaaaaaaaaaaacrPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafaafaaaaaacoUcptcqPcptcsncspcsocsrcsqcsscricrjcstcrjcrjcrmcsucptcptcsvcqfcsxcswcswcsycqPcqPcsTcsQcsVcsUcmNcmQcsWcmQcmQcmQcsYcsXcsdcsZctcctactectdcoPctfcoRctgcrfcskcrfcthcoRctvctwciGciGctxciGciGciGciBctzctAciUciUciUctBciUciUcsIcrGaaacqvctCctDctEctFctGctHctIctJctKctLcqvctMctDctNcqvctOctPcqvaafaafcdOcplcplcplcorcpoctRctSctTctUctVcrNctWcdOcdOcdOcdOaaaaaacrPaaactXctXctXctXctXaafckxaafctXctXctXctXctXaaacrPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacoUcptcsncspcspcspcsocspcspcspcsocspcspcspcspcspcticspcspcsocspctjcspcspcspctlctkctmcoWcptctncttctoctZctucuccuactucudcufcuecuhcugcugcuicugcujculcukcuncumcuocuocoRcuCcuDcuEcuFcuFcuGcuHcuIcuJcuJcuJcuJcuJcuJcuJcuJcuKcrFcrGaaactFcuLcuMcuNctFcuOcuPcuQcuQcuRcuQcuScuTcuUcuVcuWcuXcuQcqvaaaaaacdOcplcplcplcslcuYcuZcvacvbcvccvdcrNcrNcvecvfcvgcdOaafaafcrPaafckVckSckSckSckSckyckxckwckvckvckvckvckUaafcrPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacoUcptcptcptcptcptcqzcptcptcptcqzcptcptcptcptcptcqIcptcptcqzcptcupcptcptcuqcuscurcuucutcuvcutcuxcuwcuzcuycuAcuwcuwcuBcvhcnFcvicoPcvkcvjcoPcoPcvocrfcrfcvpcuocuocoRbPxcAscvNcvNcvNcvNcvOcvNcvNcvNcvNclMcvPcrGcrGcrGcrGcrGcrGaaactFctFcvQctFctFcvRcvScvTcvUcvVcvWcvVcvXcvYcvZcwacwbcwccqvaaaaaacdOcomcomcomcomcwdcppcvacwecwfcwgcrNcrNcwhcrNcwicdOaaaaaacrPaafcwjcwjcwjcwjcwjaaackxaaacwjcwjcwjcwjcwjaafcrPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaabZSaaaaaaaaaaaacoUcptcptcptcptcptcqzcptcptcptcqzcptcptcptcptcptcqIcptcptcqzcptcvqcptcptcvqcvqcvrcptcptcvucvscvvcvvcvvcvvcvxcvwcoIcvycvzcsccvAcoPcvBcvjcoPcvCcoRcvDcrfcvEcvGcvFcoRcwHcvMcvNcwIcwJcwKcwLcwMcwNcwOcvNcwPcwQcrGaaaaaaaaaaaaaaaaaacqvcwRcwScwTcwUcwVcwWcwXcwYcwZcxacvZcxbcxccxdcuWcqvcxecqvaaaaaacdOcofcogcohckXcsRcuZcxgcxhcxhcxicxjcxkcvHcxmcxncdOaaaaaacrPaaaaafaaaaafaafaafaaackxaaaaafaaaaafaaaaafaaacrPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacoUcptcptcptcptcptcvIcptcptcptcvIcptcptcptcptcptcqIcptcptcvJcqfcvLcvKcvKcvLcwmcvLcwpcwocwqcvKcwtcwscwvcwucwwcvwcoIcwxcoIcwycwzcoPcoPcwAcoPcwBcoRcwCcwCcwDcvGcvFcoRbPxcvMcvNcxKcxLcxMcxNcxOcxNcxPcvNcxQcxRcrGaaaaaaaaaaaaaaaaaacqvcxScxTcxUcxVcxWcxXcxYcxZcuTcyacuScybcuTcyccuVcqvcqvcqvaaaaaacdOcplcpmcplctbcpocppcrNcrNcyecyfcrNcygcomcomcomcdOaaaaaacrPaaactXctXctXctXctXaafckxaafctXctXctXctXctXaafcrPaaaaaaaaaaaaaaaaaaaaaaaacyhaaaaaaaaacyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafaaaaaaaaacoUcptcrocrncrncwFcwEcrncwFcrncwGcwFcrncrncrncrncxlcrncxocxqcxpcvqcptcptcxrcxtcxscxvcxucxwcptcxBcxAcxCcxCcxEcxDcoIcwxcxFcnzcxGcoPcxHcoPcxJcxIcoRcoRcoRcoRcoRcoRcoRbPxcvMcvNcyMcyNcxLcyOcxLcxNcyPcvNcyQcyRcrGaaaaaaaaaaaaaaaaaacqvcuVcySctFctFcyTcyUcyVcyWctMctDctNcyXctMctDcyYcqvaaaaaaaaaaaacdOcplcplcplckXcyZczacrNcrNcrNcyfcrNczbcrNczccrNczdaafaafcrPaafckVckSckSckSckSckyckxckwckvckvckvckvckUaafcrPaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafaaaaaaaaacoUcptcqzcptcptcptcvIcptcptcptcvIcptcptcptcptcptcqIcptcxscptcyicvqcptcptcyjcwmcykcylcvvcymcvvcvvcxAcyocyncyqcxDcoIcwxcoIcnzcyscyrcyucytcyvcoPcnzczIczJczJczKczLczMczNczOcvNcxNczPczQcxNczRczSczTcvNczUczVcrGaaaaaaaaaaaaaaaaaacqvczWcuMczXcuVczYczZcAactFcAbcAccsPcyXczWcAdcAecqvaaaaaaaaaaaackEcdOcAfcAgcAgcywcAicAjcAkcAlcAmcAncAocApcAqcokcAraaaaaacrPaafcwjcwjcwjcwjcwjaaackxaafcwjcwjcwjcwjcwjaaacrPaaacyhaaaaaacyhaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaacyhaaaaaacyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaacyxcptcqzcptcyycrjcricrjcyzcrjcricrjcyzcrjcrjcrjcyAcyBcyAcrmcyCcykcyDcyFcyEcyHcyGcyIcvvcyKcyJcvvcvvcvvcvvcvvcyLcngczecngcnzcnzcnzcnzcnzcnzcnzcnzcALczJczJcAMcANcAObPxcAPcvNcAQcARczfcATcAUcAVcAWcvNcAXcAYcrGaaaaaaaaaaaaaaaaaacqvcuQcAZcAectFcBacBbcBcctFcBdcBecBfcBgcBhcBicBjcqvaafaafaaaaaaaaaaaabquaaacdOcBlcBmcBncBocBpcBmcBqcBrcBpcBmcBscdOaaaaaabZSaaaaafaaaaafaaaaafaaackxaaaaafaaaaafaafaafaafcrPaaacyhcyhcyhcyhaaacyhcyhcyhcyhcyhcyhcyhcyhcyhaaacyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIvaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabZSaaaaaaaaaaaaaamaaaaaaaaaczgcptcqzcptcxscxtcqzcptcxscxtcqzcptcxscxtcptcptcxrcptcxscxtczhczkczjczmczlczocznczpcvvczrczqcztczsczuctuczwczvctuczxctuczycuaczzczBczAczAczDczEcBVcBWcBWcBXcBYcAObPxcBZcvNcvNcCacCbcCccCbcCacCdcvNcrGcCecrGaaaaaaaaaaaaaaaaaacqvctFcCfcuVctFcCgcChcCictFcCjcCkcqycgvcCmcCncCocrHaaaaaaaaaaaaaaaaaacgwaafcdOcCqcluclUcomclsclpclqcomcloclVclWcdOaaaaaacrPaaactXctXctXctXctXaafckxaafctXctXctXctXctXaafcrPaaacyhcyhcyhcyhaaacyhcyhcyhcyhcyhcyhcyhcyhcyhaaacyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaafaafaafaafaamaafaafaafczgczGczFcAhczHcAucAtcAwcAvcAycAxcAAcAzcAucptczGcABcADcACcAycAEcmMcmMcmMcmMcmMcmMcmMcmMcAHcAFcyLcAIcAJcoIcAKcoIcoIcwxcoIcoIcAScoIcAJcBtcBvcBucBxciCcCNcCOcCPcCQcAObPwcCRcCScCTcCacAGcAVcBwcCacCWaafcCXcCYcCXaaaaaaaaaaaaaaaaaacqvcCZctDcuQcDacDbcuQcDccDdcDeaafaaachxchFchEclXaaaaaaaaaaacaaaaaaaaaaaaaaacdOcDhcplcplcomcDicplcplcomcDicplcplcdOaafaafcrPaafckVckSckSckSckSckyckxckwckvckvckvckvckUaafcrPaaacyhcyhcyhcyhaaacyhcyhcyhcyhcyhcyhcyhcyhcyhaaacyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPcByaaaaaaaaaaamaaaaaaaaacBzcBBcBAcBDcBCcBFcBEcBGcBCcBFcBEcBGcBCcBFcBHcBHcBIcBGcBCcBFcBJcmMaaacBLcBKcBNcBMcBPcBOcBRcBQcBScBScBUcBTcCrcCpcCtcCscCpcCtcCrcCucCwcCvcCucyLcyLcAOcDNcDOcDPcDQcAObNUcDRcDScDTcCacCbcDUcCbcCacCWaafaaaaafaaaaaaaaaaaaaaaaaaaaacqvcCZcDVcDWcDXcDXcDWcsPcDYcqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdOcDZcplcplcomcEacplcplcomcEacplcplcdOaaaaaacrPaafcwjcwjcwjcwjcwjaaackxaaacwjcwjcwjcwjcwjaaacrPaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPcClcqLcqLcqLcpEcpIcpIcpIcqLcpIcpPcpIcpGcpIcpPcpIcpGcpIcpPcpIcpGcpIcqLcpIcpRcpIcpGcpIcqNaafaaacCycCxcCAcCzcCCcCBcBRcCDcBScCEcCGcCFcCIcCHcCKcCJcCMcCLcCIcCUcDgcCVcCuaaaaafcAOcEBcECcEDaafaaabNUbPxbPxbSkcCaclZcEFclYcCacCWaafaafaaaaaaaaaaaaaaaaaaaaaaaacqvcEHcuXcEIcEJcEJcEIcuQcEKcqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdOcplcplcplcomcELcplcplcomcELcplcplcdOaacaaacrPaaaaaaaafaafaafaaaaaacmTaafaaaaaaaafaafaaaaaacrPaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaafaafaaaaaaaaqaaaaaaaaaaafcfQcldclccDjcfQcldclccDjcfQcldclccDkcfQaaacfQcDlclccDkcfQaaaaafaaacCycDmcDocDncDmcDpcDrcDqcBScDscDucDtcCIcDvcDxcDwcDzcDycCIcDAcDCcDBcCuaaaaaacAOcFgcFhcFiaaaaaabNUbPxbPxbNUcCacmUcmUcmUcCacFkcmWaaaaaaaaaaaaaaaaaaaaaaaaaaacqvcFmcFncuQcuQcuQcuQcuQcFocqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaackEcdOcdOcdOcdOcdOcdOcdOcdOcmYcmYcmYckEaaaaaacrPcrPcrPcrPcrPaaaaaaaaacmZaaaaaaaaacrPcrPcrPbZScrPaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaaaaafaafaaaaamaaaaaaaaaaafcfQcDDcDFcDEcfQcDGcDIcDHcfQcDJcDLcDKcfQaafcfQcDMcEccEbcfQaaaaafaaacCycEdcCAcDmcDmcEecEgcEfcEicEhcEkcEjcEmcElcEocEncEqcEpcEscErcEucEtcCuaafaaacFJcDNcFKcAOcFLaaabNUcFMbPxcFNcFOaafaafaafaaacBkaafaafaaaaaaaaaaaaaaaaaaaaaaaacrHcqvcqvcFPcFQcEIcEIcEIcFRcFPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqpbqpbqpaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaafcfTaafcrPaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaamaaaaaaaafaafcfQcEvcEwcEvcfQcExcEycExcfQcEzcEAcEzcfQaaacfQcEzcEzcEEcfQaaaaafaaacCycEGcCAcDncDmcCBcEMcCDcBScENcEPcEOcCIcEQcEScERcEScETcCIcEUcEWcEVcCuaaLcGgcGgcGgcGgcGgcGgcGgbNUciEciDcGjaafaaaaaaaafcGkcDfaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacGlcEJcEJcEJcEJcEJcGlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaaaaafaaacrPaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaafaamaaaaafaafaaacfQcEvcEXcEvcfQcExcEYcExcfQcEzcEZcEzcfQaafcfQcEzcEzcEzcfQaafaafaafcFbcFacFdcFccFfcFecFjcCDcBScFlcFqcFpcCIcFrcFtcFscFvcFucCIcFwcFycFxcCuaaacGgcGgcGgcGgcGgcGgcGgcGFcGGcGHbNUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqvcCmcqxcqxcqxcCocqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPcrPcrPcrPcrPaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbZSaaaaaacfQcfQcfQcfQcfQcfQcfQcfQcfQcfQcfQcfQcfQaaacFzcfQcfQcfQcfQaaaaaaaaaaaacAFcAFcAFcAFcAFcFBcFAcFAcFAcFAcFCcFAcFDcFFcFEcFFcFGcFAcFAcFHcFAcFAcFAcGgcGgcGgcGgcGgcGgcGgaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaacyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcrPaaaaaaaafaafaaaaafaafaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaafaaacGQcGRcGRcGRcGScFIcFTcFScFVcFUcFXcFWcFZcFYcGbcGacGdcGccGfcGecGicGhcGncGmcGmcGocGpcFAcGgcGgcGgcGgcGgcGgcGgaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafcHncjVcHpaaacHncjVcHpaaacHncjVcHpaafaafaaaaafaafaafaafaafcHqcGRcGRcGRcGScFIcGrcGqcGtcGscGvcGucGxcGwcGzcGycGBcGAcGmcGCcGmcGmcGmcGmcGmcGmcGDcFAcGgcGgcGgcGgcGgcGgcGgaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaacHncjWcHpaaacHncjWcHpaaacHncjWcHpaafaafaaaaafaaaaaacHKaafcGQcGRcGRcGRcGScFIcGrcGEcGJcGIcGKcGucGMcGLcGOcGNcGmcGmcGTcGPcGUcGmcGmcGmcGmcGmcGVcFAcIbaafaaIaafaafaafaafaafaafaafaafaafcGWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafcHncjWcHpaaacHncjWcHpaafcHncjWcHpaafaaaaaaaafaafcIcaaaaafcHqcGRcGRcGRcGScFIcGYcGXcHacGZcHccHbcHecHdcHgcHfcHhcHhcHjcHicHlcHkcHkcHkcHkcHkcHocHmcHscHrcHrcHrcHrcHrcHrcHrcHrcHrcHtaaacGWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaacHncjWcHpaafcHncjWcHpaaacHncjWcHpaaaaaaaaaaaaaafaafaaaaafaaaaaaaaaaaaaafcHucHwcHvcHycHxcHzcFWcGAcGmcHBcHAcHDcHCcHFcHEcHHcHGcHDcHIcHJcGmcHMcHLcHscHtcHNcHtcHNcHtcHNcHtcHNcHtcHOaafcGWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaaIaafaaacHncjWcHpaafcHncjWcHpaaacHncjWcHpaafaaaaaaaaaaaaaafaafcIJcIKcIKcIKcIKcILcILcILcILcILcIMcILcFAcGmcGmcHPcFAcFAcFAcHRcHQcHScFAcFAcFAcHTcGmcHUcFAaaacHOcHOcHOcHOcHOcHOcHOcHOcHOcHOaafcGWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaafaaaaafaafczCaafaafaafczCaafaaaaafczCaafaaaaaaaaaaaaaaacIUcIVcIWcIXcIYcHVcJacJbcJcciFcJecJfcJgcJecFAcHWcGmcHYcHXcIacHZcIecIdcIfcHZcIgcHXcIhcGmcIicFAaaacHOcHOcHOcHOcHOcHOcHOcHOcHOcHOaaaaanaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafcydcxzcxycxxcxxcxxcxxcxxcxxcxxcxxcxxcxxcxxczicxzcxzcxzcypcJzcJAcJBcJCcJDcJEcJFcJGcJHcJHcJHcJIcJJcJKcFAcGmcGmcHYcHXcIacIjcIlcIkcImcIjcIgcHXcIhcGmcGmcFAaaacHOcHOcHOcHOcHOcHOcHOcHOcHOcHOaafcGWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYaaactYctYctYctYctYaaactYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaafaaaaafaafcxfaafaaaaafcxfaafaaaaafcxfaafaaaaaaaaaaaaaaacIUcIVcJRcJScJTcJUcIKcJVcJWcJecJecJXcJXcJYcFAcIncGmcIocHXcIacIpcIlcIqcIrcIpcIgcHXcIscGmcGmcFAaaacHOcHOcHOcHOcHOcHOcHOcHOcHOcHOaafaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYaaactYctYctYctYctYaaactYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaaIaafaafcHncwrcHpaaacHncwrcHpaaacHncwrcHpaafaaaaaaaaaaaaaafaafcKfcIKcIKcIKcIKcKgcKhcKicKicKjcKgcKgcFAcFAcFWcFAcFAcFAcFAcFAcItcFAcFAcFAcFAcFAcFWcFAcFAaafcIucIvcIucIvcIucIvcIucIvcIucIvaaaaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacHncwrcHpaafcHncwrcHpaaacHncwrcHpaaaaaaaaaaafaaaaafaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaafaaaaafaafaaaaaaaafaafaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKlcKlcKlcKlcKlcKlcKlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafcHncwrcHpaaacHncwrcHpaaacHncwrcHpaafaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaaaaLaaaaafaaaaaackBckBckBcGZckBckBaanckBckBaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKlcKlcKlcKlcKlcKlcKlcKlcKlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafcHncwrcHpaaacHncwrcHpaaacHncwrcHpaafaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaaaaLaaaaafaaaaaacGWcGWcGWcIwcGWcGWaancGWcGWaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKlcKlcKlcKlcKlcKlcKlcKlcKlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafcHncwrcHpaaacHncwrcHpaafcHncwrcHpaafaafaafaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaaIaaIbZSbZSaaIaaIaaaaaaaaaaaIaaIaaIaaIaaIaaIaaIaaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKlcKlcKlcKlcKlcKlcKlcKlcKlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqaafcHncwncHpaaacHncwncHpaaacHncwncHpaafaaIaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKlcKlcKlcKlcKlcKlcKlcKlcKlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaaaaafaaaaaaaaaaafaafaafaaaaaaaafaafaaaaaIaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKncKncKncKncKncKncKnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKlcKlcKlcKlcKlcKlcKlcKlcKlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/maps/exodus-2.dmm b/maps/exodus-2.dmm index 79dafb5423..d6701f77af 100644 --- a/maps/exodus-2.dmm +++ b/maps/exodus-2.dmm @@ -705,7 +705,7 @@ "nC" = (/obj/structure/closet/secure_closet/freezer/kitchen{req_access = null; req_access_txt = "150"},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership) "nD" = (/obj/structure/table/reinforced,/obj/item/weapon/tray{pixel_y = 5},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership) "nE" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka{pixel_x = 3; pixel_y = 12},/obj/item/weapon/reagent_containers/food/drinks/bottle/wine{pixel_x = -1; pixel_y = 8},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership) -"nF" = (/obj/structure/table/rack,/obj/item/weapon/storage/belt/security,/obj/item/weapon/storage/belt/security,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"nF" = (/obj/structure/table/rack,/obj/item/weapon/storage/belt/security,/obj/item/weapon/storage/belt/security,/obj/item/ammo_magazine/mc9mm/flash,/obj/item/weapon/gun/projectile/pistol/flash,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "nG" = (/obj/structure/table/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/syndicate/black/red,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/syndicate/black/red,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) "nH" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/syndicate_station/start) "nI" = (/obj/structure/table,/obj/machinery/recharger,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) From e5f8ac50b49120140ebc633e3fd645c24953abc8 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Sat, 14 Feb 2015 13:05:38 -0500 Subject: [PATCH 29/45] Rewrites grenade launchers --- baystation12.dme | 2 +- .../guns/launcher/grenade_launcher.dm | 82 +++++++++++++++++++ code/modules/reagents/grenade_launcher.dm | 63 -------------- maps/exodus-2.dmm | 2 +- 4 files changed, 84 insertions(+), 65 deletions(-) create mode 100644 code/modules/projectiles/guns/launcher/grenade_launcher.dm delete mode 100644 code/modules/reagents/grenade_launcher.dm diff --git a/baystation12.dme b/baystation12.dme index f71ff8f3c5..6810ce9c32 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -1329,6 +1329,7 @@ #include "code\modules\projectiles\guns\energy\stun.dm" #include "code\modules\projectiles\guns\energy\temperature.dm" #include "code\modules\projectiles\guns\launcher\crossbow.dm" +#include "code\modules\projectiles\guns\launcher\grenade_launcher.dm" #include "code\modules\projectiles\guns\launcher\pneumatic.dm" #include "code\modules\projectiles\guns\launcher\rocket.dm" #include "code\modules\projectiles\guns\launcher\syringe_gun.dm" @@ -1353,7 +1354,6 @@ #include "code\modules\reagents\Chemistry-Reagents-Antidepressants.dm" #include "code\modules\reagents\Chemistry-Reagents.dm" #include "code\modules\reagents\Chemistry-Recipes.dm" -#include "code\modules\reagents\grenade_launcher.dm" #include "code\modules\reagents\reagent_containers.dm" #include "code\modules\reagents\reagent_dispenser.dm" #include "code\modules\reagents\reagent_containers\blood_pack.dm" diff --git a/code/modules/projectiles/guns/launcher/grenade_launcher.dm b/code/modules/projectiles/guns/launcher/grenade_launcher.dm new file mode 100644 index 0000000000..514e68a6b2 --- /dev/null +++ b/code/modules/projectiles/guns/launcher/grenade_launcher.dm @@ -0,0 +1,82 @@ +/obj/item/weapon/gun/launcher/grenade + name = "grenade launcher" + desc = "A bulky pump-action grenade launcher. Holds up to 5 grenades in a revolving magazine." + icon = 'icons/obj/gun.dmi' + icon_state = "riotgun" + item_state = "riotgun" + w_class = 4 + force = 10 + + fire_sound = 'sound/weapons/empty.ogg' + fire_sound_text = "a metallic thunk" + recoil = 0 + throw_distance = 7 + release_force = 5 + + var/obj/item/weapon/grenade/chambered + var/list/grenades = new/list() + var/max_grenades = 4 //holds this + one in the chamber + matter = list("metal" = 2000) + +//revolves the magazine, allowing players to choose between multiple grenade types +/obj/item/weapon/gun/launcher/grenade/proc/pump(mob/M as mob) + playsound(M, 'sound/weapons/shotgunpump.ogg', 60, 1) + + var/obj/item/weapon/grenade/next + if(grenades.len) + next = grenades[1] //get this first, so that the chambered grenade can still be removed if the grenades list is empty + if(chambered) + grenades += chambered //rotate the revolving magazine + chambered = null + if(next) + grenades -= next //Remove grenade from loaded list. + chambered = next + M << "You pump [src], loading \a [next] into the chamber." + else + M << "You pump [src], but the magazine is empty." + update_icon() + +/obj/item/weapon/gun/launcher/grenade/examine(mob/user) + if(..(user, 2)) + var/grenade_count = grenades.len + (chambered? 1 : 0) + user << "Has [grenade_count] grenade\s remaining." + if(chambered) + user << "\A [chambered] is chambered." + +/obj/item/weapon/gun/launcher/grenade/attack_self(mob/user) + pump(user) + +/obj/item/weapon/gun/launcher/grenade/attackby(obj/item/I, mob/user) + if((istype(I, /obj/item/weapon/grenade))) + if(grenades.len >= max_grenades) + user << "[src] is full." + return + user.remove_from_mob(I) + I.loc = src + grenades.Insert(1, I) //add to the head of the list, so that it is loaded on the next pump + user.visible_message("[user] inserts \a [I] into [src].", "You insert \a [I] into [src].") + else + ..() + +/obj/item/weapon/gun/launcher/grenade/attack_hand(mob/user) + if(src in user) + if(grenades.len) + var/obj/item/weapon/grenade/G = grenades[grenades.len] + grenades.len-- + user.put_in_hands(G) + user.visible_message("[user] removes \a [G] from [src].", "You remove \a [G] from [src].") + else + user << "[src] is empty." + else + ..() + +/obj/item/weapon/gun/launcher/grenade/consume_next_projectile() + if(chambered) + chambered.det_time = 10 + chambered.activate(null) + return chambered + +/obj/item/weapon/gun/launcher/grenade/handle_post_fire(mob/user) + message_admins("[key_name_admin(user)] fired a grenade ([chambered.name]) from a grenade launcher ([src.name]).") + log_game("[key_name_admin(user)] used a grenade ([chambered.name]).") + chambered = null diff --git a/code/modules/reagents/grenade_launcher.dm b/code/modules/reagents/grenade_launcher.dm deleted file mode 100644 index b96455a178..0000000000 --- a/code/modules/reagents/grenade_launcher.dm +++ /dev/null @@ -1,63 +0,0 @@ - - -/obj/item/weapon/gun/grenadelauncher - name = "grenade launcher" - icon = 'icons/obj/gun.dmi' - icon_state = "riotgun" - item_state = "riotgun" - w_class = 4.0 - throw_speed = 2 - throw_range = 10 - force = 5.0 - var/list/grenades = new/list() - var/max_grenades = 3 - matter = list("metal" = 2000) - - examine(mob/user) - if(..(user, 2)) - user << "\blue [grenades] / [max_grenades] Grenades." - - attackby(obj/item/I as obj, mob/user as mob) - - if((istype(I, /obj/item/weapon/grenade))) - if(grenades.len < max_grenades) - user.drop_item() - I.loc = src - grenades += I - user << "\blue You put the grenade in the grenade launcher." - user << "\blue [grenades.len] / [max_grenades] Grenades." - else - usr << "\red The grenade launcher cannot hold more grenades." - - afterattack(obj/target, mob/user , flag) - - if (istype(target, /obj/item/weapon/storage/backpack )) - return - - else if (locate (/obj/structure/table, src.loc)) - return - - else if(target == user) - return - - if(grenades.len) - spawn(0) fire_grenade(target,user) - else - usr << "\red The grenade launcher is empty." - - proc - fire_grenade(atom/target, mob/user) - for(var/mob/O in viewers(world.view, user)) - O.show_message(text("\red [] fired a grenade!", user), 1) - user << "\red You fire the grenade launcher!" - var/obj/item/weapon/grenade/chem_grenade/F = grenades[1] //Now with less copypasta! - grenades -= F - F.loc = user.loc - F.throw_at(target, 30, 2, user) - message_admins("[key_name_admin(user)] fired a grenade ([F.name]) from a grenade launcher ([src.name]).") - log_game("[key_name_admin(user)] used a grenade ([src.name]).") - F.active = 1 - F.icon_state = initial(icon_state) + "_active" - playsound(user.loc, 'sound/weapons/armbomb.ogg', 75, 1, -3) - spawn(15) - F.prime() \ No newline at end of file diff --git a/maps/exodus-2.dmm b/maps/exodus-2.dmm index d6701f77af..7a50f27ee6 100644 --- a/maps/exodus-2.dmm +++ b/maps/exodus-2.dmm @@ -1046,7 +1046,7 @@ "uf" = (/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) "ug" = (/turf/unsimulated/wall,/area/centcom/test) "uh" = (/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom/specops) -"ui" = (/obj/structure/table/rack,/obj/item/weapon/gun/grenadelauncher,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom) +"ui" = (/obj/structure/table/rack,/obj/item/weapon/gun/launcher/grenade,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom) "uj" = (/obj/structure/table/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom) "uk" = (/obj/structure/table/rack,/obj/item/clothing/suit/armor/vest/ert/security,/obj/item/clothing/suit/armor/vest/ert/security,/obj/item/clothing/suit/armor/vest/ert/security,/obj/item/clothing/suit/armor/vest/ert/security,/obj/item/clothing/head/helmet/ert/security,/obj/item/clothing/head/helmet/ert/security,/obj/item/clothing/head/helmet/ert/security,/obj/item/clothing/head/helmet/ert/security,/obj/item/weapon/storage/backpack/ert/security,/obj/item/weapon/storage/backpack/ert/security,/obj/item/weapon/storage/backpack/ert/security,/obj/item/weapon/storage/backpack/ert/security,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) "ul" = (/obj/structure/table/rack,/obj/item/weapon/rig/ert/security,/obj/item/clothing/accessory/storage/black_vest,/obj/item/weapon/rig/ert/security,/obj/item/clothing/accessory/storage/black_vest,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom) From a6095a361047633da18b988994469a22b992e0b2 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Sat, 14 Feb 2015 18:03:41 -0500 Subject: [PATCH 30/45] Updates L6 SAW Also changes src in user checks, probably unnecessary. --- .../guns/launcher/grenade_launcher.dm | 2 +- .../projectiles/guns/launcher/syringe_gun.dm | 2 +- code/modules/projectiles/guns/projectile.dm | 2 +- .../projectiles/guns/projectile/automatic.dm | 28 +++++++++---------- 4 files changed, 16 insertions(+), 18 deletions(-) diff --git a/code/modules/projectiles/guns/launcher/grenade_launcher.dm b/code/modules/projectiles/guns/launcher/grenade_launcher.dm index 514e68a6b2..186e827522 100644 --- a/code/modules/projectiles/guns/launcher/grenade_launcher.dm +++ b/code/modules/projectiles/guns/launcher/grenade_launcher.dm @@ -59,7 +59,7 @@ ..() /obj/item/weapon/gun/launcher/grenade/attack_hand(mob/user) - if(src in user) + if(loc == user) if(grenades.len) var/obj/item/weapon/grenade/G = grenades[grenades.len] grenades.len-- diff --git a/code/modules/projectiles/guns/launcher/syringe_gun.dm b/code/modules/projectiles/guns/launcher/syringe_gun.dm index 59110be195..b8e1559445 100644 --- a/code/modules/projectiles/guns/launcher/syringe_gun.dm +++ b/code/modules/projectiles/guns/launcher/syringe_gun.dm @@ -100,7 +100,7 @@ next = darts[1] /obj/item/weapon/gun/launcher/syringe/attack_hand(mob/living/user as mob) - if(src in user) + if(loc == user) if(!darts.len) user << "[src] is empty." return diff --git a/code/modules/projectiles/guns/projectile.dm b/code/modules/projectiles/guns/projectile.dm index 128eddccde..e825502732 100644 --- a/code/modules/projectiles/guns/projectile.dm +++ b/code/modules/projectiles/guns/projectile.dm @@ -155,7 +155,7 @@ unload_ammo(user) /obj/item/weapon/gun/projectile/attack_hand(mob/user as mob) - if(src in user) + if(loc == user) unload_ammo(user, allow_dump=0) else return ..() diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm index 506ffcfff3..eb5cb3c105 100644 --- a/code/modules/projectiles/guns/projectile/automatic.dm +++ b/code/modules/projectiles/guns/projectile/automatic.dm @@ -74,21 +74,19 @@ /obj/item/weapon/gun/projectile/automatic/l6_saw/update_icon() icon_state = "l6[cover_open ? "open" : "closed"][ammo_magazine ? round(loaded.len, 25) : "-empty"]" -/obj/item/weapon/gun/projectile/automatic/l6_saw/afterattack(atom/target as mob|obj|turf, mob/living/user as mob|obj, flag, params) //what I tried to do here is just add a check to see if the cover is open or not and add an icon_state change because I can't figure out how c-20rs do it with overlays +/obj/item/weapon/gun/projectile/automatic/l6_saw/special_check(mob/user) if(cover_open) - user << "[src]'s cover is open! Close it before firing!" - else - ..() - update_icon() + user << "[src]'s cover is open! Close it before firing!" + return 0 + return ..() -/obj/item/weapon/gun/projectile/automatic/l6_saw/attack_hand(mob/user as mob) - if(loc != user) - ..() //let them pick it up - else if(cover_open) - unload_ammo(user) - -/obj/item/weapon/gun/projectile/automatic/l6_saw/attackby(var/obj/item/A as obj, mob/user as mob) - if(istype(A,/obj/item/ammo_magazine) && !cover_open) - user << "[src]'s cover is closed! You can't insert a new mag!" +/obj/item/weapon/gun/projectile/automatic/l6_saw/load_ammo(var/obj/item/A, mob/user) + if(!cover_open) + user << "You need to open the cover to load [src]." return - ..() + ..() + +/obj/item/weapon/gun/projectile/automatic/l6_saw/unload_ammo(mob/user) + if(!cover_open) + return + ..() \ No newline at end of file From cd81f0b70633054628d9a265986078901785d6fa Mon Sep 17 00:00:00 2001 From: mwerezak Date: Sat, 14 Feb 2015 18:06:21 -0500 Subject: [PATCH 31/45] Improves gun scope zooming --- code/game/mecha/combat/marauder.dm | 1 + code/game/objects/items.dm | 12 +--- code/modules/projectiles/gun.dm | 29 +++++++- code/modules/projectiles/guns/energy/laser.dm | 5 +- code/modules/projectiles/guns/projectile.dm | 2 +- .../projectiles/guns/projectile/sniper.dm | 68 +++++++++++++++++++ code/modules/projectiles/projectile/beams.dm | 6 +- 7 files changed, 105 insertions(+), 18 deletions(-) create mode 100644 code/modules/projectiles/guns/projectile/sniper.dm diff --git a/code/game/mecha/combat/marauder.dm b/code/game/mecha/combat/marauder.dm index cdb3645c62..d7e64c1ece 100644 --- a/code/game/mecha/combat/marauder.dm +++ b/code/game/mecha/combat/marauder.dm @@ -151,6 +151,7 @@ smoke_ready = 1 return +//TODO replace this with zoom code that doesn't increase peripherial vision /obj/mecha/combat/marauder/verb/zoom() set category = "Exosuit Interface" set name = "Zoom" diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 1e3cb7547a..f622c28e7c 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -638,8 +638,8 @@ For zooming with scope or binoculars. This is called from modules/mob/mob_movement.dm if you move you will be zoomed out modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out. */ - -/obj/item/proc/zoom(var/tileoffset = 11,var/viewsize = 12) //tileoffset is client view offset in the direction the user is facing. viewsize is how far out this thing zooms. 7 is normal view +//Looking through a scope or binoculars should /not/ improve your periphereal vision. Still, increase viewsize a tiny bit so that sniping isn't as restricted to NSEW +/obj/item/proc/zoom(var/tileoffset = 14,var/viewsize = 9) //tileoffset is client view offset in the direction the user is facing. viewsize is how far out this thing zooms. 7 is normal view var/devicename @@ -686,14 +686,6 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out. usr.visible_message("[usr] peers through the [zoomdevicename ? "[zoomdevicename] of the [src.name]" : "[src.name]"].") - /* - if(istype(usr,/mob/living/carbon/human/)) - var/mob/living/carbon/human/H = usr - usr.visible_message("[usr] holds [devicename] up to [H.get_visible_gender() == MALE ? "his" : H.get_visible_gender() == FEMALE ? "her" : "their"] eyes.") - else - usr.visible_message("[usr] holds [devicename] up to its eyes.") - */ - else usr.client.view = world.view if(!usr.hud_used.hud_shown) diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 767f9fc40d..c2d6266473 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -15,6 +15,7 @@ force = 5 origin_tech = "combat=1" attack_verb = list("struck", "hit", "bashed") + zoomdevicename = "scope" var/fire_delay = 6 var/fire_sound = 'sound/weapons/Gunshot.ogg' @@ -22,6 +23,7 @@ var/recoil = 0 //screen shake var/silenced = 0 var/accuracy = 0 //accuracy is measured in tiles. +1 accuracy means that everything is effectively one tile closer for the purpose of miss chance, -1 means the opposite. launchers are not supported, at the moment. + var/scoped_accuracy = null var/last_fired = 0 @@ -34,6 +36,11 @@ var/tmp/told_cant_shoot = 0 //So that it doesn't spam them with the fact they cannot hit them. var/tmp/lock_time = -100 +/obj/item/weapon/gun/New() + ..() + if(isnull(scoped_accuracy)) + scoped_accuracy = accuracy + //Returns 1 if the gun is able to be fired /obj/item/weapon/gun/proc/ready_to_fire() if(world.time >= last_fired + fire_delay) @@ -43,6 +50,8 @@ return 0 //Checks whether a given mob can use the gun +//Any checks that shouldn't result in handle_click_empty() being called if they fail should go here. +//Otherwise, if you want handle_click_empty() to be called, check in consume_next_projectile() and return null there. /obj/item/weapon/gun/proc/special_check(var/mob/user) if(!istype(user, /mob/living)) return 0 @@ -114,7 +123,7 @@ user << "[src] is not ready to fire again!" return - var/obj/projectile = consume_next_projectile() + var/obj/projectile = consume_next_projectile(user) if(!projectile) handle_click_empty(user) return @@ -165,7 +174,7 @@ if(recoil) spawn() - shake_camera(user, recoil + 1, recoil) + shake_camera(user, recoil+1, recoil) update_icon() //does the actual shooting @@ -236,3 +245,19 @@ handle_click_empty(user) mouthshoot = 0 return + +/obj/item/weapon/gun/proc/toggle_scope(var/zoom_amount=2.0) + //looking through a scope limits your periphereal vision + //still, increase the view size by a tiny amount so that sniping isn't too restricted to NSEW + var/zoom_offset = round(world.view * zoom_amount) + var/view_size = round(world.view + zoom_amount) + var/scoped_accuracy_mod = zoom_offset + + zoom(zoom_offset, view_size) + if(zoom) + accuracy = scoped_accuracy + scoped_accuracy_mod + if(recoil) + recoil = round(recoil*zoom_amount+1) //recoil is worse when looking through a scope + else + accuracy = (accuracy) + recoil = initial(recoil) diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm index bcbb5beddc..2dc1cb65e2 100644 --- a/code/modules/projectiles/guns/energy/laser.dm +++ b/code/modules/projectiles/guns/energy/laser.dm @@ -74,14 +74,15 @@ obj/item/weapon/gun/energy/laser/retro fire_delay = 35 force = 10 w_class = 4 - zoomdevicename = "scope" + accuracy = -3 //shooting at the hip + scoped_accuracy = 0 /obj/item/weapon/gun/energy/sniperrifle/verb/scope() set category = "Object" set name = "Use Scope" set popup_menu = 1 - zoom() + toggle_scope(2.0) ////////Laser Tag//////////////////// diff --git a/code/modules/projectiles/guns/projectile.dm b/code/modules/projectiles/guns/projectile.dm index e825502732..068d943e26 100644 --- a/code/modules/projectiles/guns/projectile.dm +++ b/code/modules/projectiles/guns/projectile.dm @@ -129,7 +129,7 @@ ammo_magazine = null else if(loaded.len) //presumably, if it can be speed-loaded, it can be speed-unloaded. - if(allow_dump && load_method & SPEEDLOADER) + if(allow_dump && (load_method & SPEEDLOADER)) var/count = 0 var/turf/T = get_turf(user) if(T) diff --git a/code/modules/projectiles/guns/projectile/sniper.dm b/code/modules/projectiles/guns/projectile/sniper.dm new file mode 100644 index 0000000000..a54e3b5867 --- /dev/null +++ b/code/modules/projectiles/guns/projectile/sniper.dm @@ -0,0 +1,68 @@ +/obj/item/weapon/gun/projectile/heavysniper + name = "\improper PTRS-7 rifle" + desc = "A portable anti-armour rifle fitted with a scope. Fires 14.5mm AP shells." + icon_state = "heavysniper" + item_state = "shotgun" + w_class = 4 + force = 10 + slot_flags = SLOT_BACK + origin_tech = "combat=8;materials=2;syndicate=8" + caliber = "14.5mm" + recoil = 2 //extra kickback + handle_casings = HOLD_CASINGS + load_method = SINGLE_CASING + max_shells = 1 + ammo_type = /obj/item/ammo_casing/a145 + accuracy = -1 //made this not as bad as the LWAP's penalty because only one shot + var/bolt_open = 0 + +/obj/item/weapon/gun/projectile/heavysniper/update_icon() + if(bolt_open) + icon_state = "heavysniper-open" + else + icon_state = "heavysniper" + +/obj/item/weapon/gun/projectile/heavysniper/attack_self(mob/user as mob) + playsound(src.loc, 'sound/weapons/flipblade.ogg', 50, 1) + bolt_open = !bolt_open + if(bolt_open) + if(chambered) + user << "You work the bolt open, ejecting [chambered]!" + chambered.loc = get_turf(src) + loaded -= chambered + chambered = null + else + user << "You work the bolt open." + else + user << "You work the bolt closed." + bolt_open = 0 + update_icon() + +/obj/item/weapon/gun/projectile/heavysniper/special_check(mob/user) + if(bolt_open) + user << "You can't fire [src] with the bolt open!" + return 0 + return ..() + +/obj/item/weapon/gun/projectile/heavysniper/load_ammo(var/obj/item/A, mob/user) + if(!bolt_open) + return + ..() + +/obj/item/weapon/gun/projectile/heavysniper/unload_ammo(mob/user, var/allow_dump=1) + if(!bolt_open) + return + ..() + +/obj/item/weapon/gun/projectile/heavysniper/verb/scope() + set category = "Object" + set name = "Use Scope" + set popup_menu = 1 + + toggle_scope(2.0) + +//need to override zoom() so that accuracy is properly reset even if we move while zoomed in. +/obj/item/weapon/gun/projectile/heavysniper/zoom() + ..() + if(zoom) + accuracy -= initial(accuracy) //remove the accuracy penalty if zoomed in \ No newline at end of file diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm index 06bf1146b4..b5ce31b168 100644 --- a/code/modules/projectiles/projectile/beams.dm +++ b/code/modules/projectiles/projectile/beams.dm @@ -164,9 +164,9 @@ var/list/beam_master = list() name = "sniper beam" icon_state = "xray" damage = 60 - stun = 5 - weaken = 5 - stutter = 5 + stun = 3 + weaken = 3 + stutter = 3 /obj/item/projectile/beam/stun name = "stun beam" From 13ca926c0fc42a0c615e58cfa139141dce7e09cd Mon Sep 17 00:00:00 2001 From: mwerezak Date: Sat, 14 Feb 2015 19:12:40 -0500 Subject: [PATCH 32/45] Fixes throwing miss chance using min instead of max Also adjusted slightly to make throwing a bit more distinct from projectile weapons. Throwing is worse with range but better up close. --- code/modules/mob/living/carbon/human/human_defense.dm | 6 +++--- code/modules/mob/living/living_defense.dm | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index ac86766bde..399eabcf04 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -315,11 +315,11 @@ emp_act zone = ran_zone("chest",75) //Hits a random part of the body, geared towards the chest //check if we hit + var/miss_chance = 15 if (O.throw_source) var/distance = get_dist(O.throw_source, loc) - zone = get_zone_with_miss_chance(zone, src, min(15*(distance-2), 0)) - else - zone = get_zone_with_miss_chance(zone, src, 15) + miss_chance = max(15*(distance-2), 0) + zone = get_zone_with_miss_chance(zone, src, miss_chance) if(!zone) visible_message("\blue \The [O] misses [src] narrowly!") diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index faafc23b2d..eb0c9ce859 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -109,7 +109,7 @@ var/miss_chance = 15 if (O.throw_source) var/distance = get_dist(O.throw_source, loc) - miss_chance = min(15*(distance-2), 0) + miss_chance = max(15*(distance-2), 0) if (prob(miss_chance)) visible_message("\blue \The [O] misses [src] narrowly!") From ad24aa8e4748fc6660f3f68f7e7d8ebbedf17804 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Sat, 14 Feb 2015 21:57:22 -0500 Subject: [PATCH 33/45] Adds mercenary sniper rifle Adds the scoped mercenary sniper rifle and ammunition defines. Does not add syndicate uplink option. --- baystation12.dme | 1 + .../objects/items/weapons/storage/boxes.dm | 14 +++++++ code/modules/projectiles/ammunition.dm | 3 +- .../modules/projectiles/ammunition/bullets.dm | 4 +- .../projectiles/guns/launcher/syringe_gun.dm | 1 + .../projectiles/guns/projectile/sniper.dm | 15 ++++--- code/modules/projectiles/projectile.dm | 4 +- .../modules/projectiles/projectile/bullets.dm | 37 ++++++++++-------- icons/obj/ammo.dmi | Bin 4999 -> 13349 bytes icons/obj/gun.dmi | Bin 44204 -> 46616 bytes sound/weapons/gunshot_smg2.ogg | Bin 0 -> 14838 bytes 11 files changed, 50 insertions(+), 29 deletions(-) create mode 100644 sound/weapons/gunshot_smg2.ogg diff --git a/baystation12.dme b/baystation12.dme index 6810ce9c32..06ddf79d43 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -1338,6 +1338,7 @@ #include "code\modules\projectiles\guns\projectile\pistol.dm" #include "code\modules\projectiles\guns\projectile\revolver.dm" #include "code\modules\projectiles\guns\projectile\shotgun.dm" +#include "code\modules\projectiles\guns\projectile\sniper.dm" #include "code\modules\projectiles\projectile\animate.dm" #include "code\modules\projectiles\projectile\beams.dm" #include "code\modules\projectiles\projectile\bullets.dm" diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm index 3d29aad51f..ef6eb1d18e 100644 --- a/code/game/objects/items/weapons/storage/boxes.dm +++ b/code/game/objects/items/weapons/storage/boxes.dm @@ -219,6 +219,20 @@ new /obj/item/ammo_casing/shotgun/stunshell(src) new /obj/item/ammo_casing/shotgun/stunshell(src) +/obj/item/weapon/storage/box/heavysniperammo + name = "box of 14.5mm AP shells" + desc = "It has a picture of a gun and several warning symbols on the front.
WARNING: Live ammunition. Misuse may result in serious injury or death." + + New() + ..() + new /obj/item/ammo_casing/a145(src) + new /obj/item/ammo_casing/a145(src) + new /obj/item/ammo_casing/a145(src) + new /obj/item/ammo_casing/a145(src) + new /obj/item/ammo_casing/a145(src) + new /obj/item/ammo_casing/a145(src) + new /obj/item/ammo_casing/a145(src) + /obj/item/weapon/storage/box/flashbangs name = "box of flashbangs (WARNING)" desc = "WARNING: These devices are extremely dangerous and can cause blindness or deafness in repeated use." diff --git a/code/modules/projectiles/ammunition.dm b/code/modules/projectiles/ammunition.dm index 02850db6e0..d31ba64814 100644 --- a/code/modules/projectiles/ammunition.dm +++ b/code/modules/projectiles/ammunition.dm @@ -18,12 +18,12 @@ BB = new projectile_type(src) pixel_x = rand(-10, 10) pixel_y = rand(-10, 10) - set_dir(pick(cardinal)) //removes the projectile from the ammo casing /obj/item/ammo_casing/proc/expend() . = BB BB = null + set_dir(pick(cardinal)) //spin spent casings update_icon() /obj/item/ammo_casing/attackby(obj/item/weapon/W as obj, mob/user as mob) @@ -118,6 +118,7 @@ user << "You empty [src]." for(var/obj/item/ammo_casing/C in stored_ammo) C.loc = user.loc + C.set_dir(pick(cardinal)) stored_ammo.Cut() update_icon() diff --git a/code/modules/projectiles/ammunition/bullets.dm b/code/modules/projectiles/ammunition/bullets.dm index 9de5fc87c0..0fb5b56d58 100644 --- a/code/modules/projectiles/ammunition/bullets.dm +++ b/code/modules/projectiles/ammunition/bullets.dm @@ -114,7 +114,9 @@ /obj/item/ammo_casing/a145 name = "\improper AP shell casing" desc = "A 14.5mm AP shell." - icon_state = "slshell" + icon_state = "lcasing" + spent_icon = "lcasing-spent" + caliber = "14.5mm" projectile_type = /obj/item/projectile/bullet/rifle/a145 /obj/item/ammo_casing/rocket diff --git a/code/modules/projectiles/guns/launcher/syringe_gun.dm b/code/modules/projectiles/guns/launcher/syringe_gun.dm index b8e1559445..a515bde758 100644 --- a/code/modules/projectiles/guns/launcher/syringe_gun.dm +++ b/code/modules/projectiles/guns/launcher/syringe_gun.dm @@ -98,6 +98,7 @@ playsound(src.loc, 'sound/weapons/flipblade.ogg', 50, 1) user.visible_message("[user] draws back the bolt on [src], clicking it into place.", "You draw back the bolt on the [src], loading the spring!") next = darts[1] + user.next_move = world.time + 4 /obj/item/weapon/gun/launcher/syringe/attack_hand(mob/living/user as mob) if(loc == user) diff --git a/code/modules/projectiles/guns/projectile/sniper.dm b/code/modules/projectiles/guns/projectile/sniper.dm index a54e3b5867..93d355df8b 100644 --- a/code/modules/projectiles/guns/projectile/sniper.dm +++ b/code/modules/projectiles/guns/projectile/sniper.dm @@ -9,11 +9,14 @@ origin_tech = "combat=8;materials=2;syndicate=8" caliber = "14.5mm" recoil = 2 //extra kickback + //fire_sound = 'sound/weapons/sniper.ogg' handle_casings = HOLD_CASINGS load_method = SINGLE_CASING max_shells = 1 ammo_type = /obj/item/ammo_casing/a145 - accuracy = -1 //made this not as bad as the LWAP's penalty because only one shot + //+2 accuracy over the LWAP because only one shot + accuracy = -1 + scoped_accuracy = 2 var/bolt_open = 0 /obj/item/weapon/gun/projectile/heavysniper/update_icon() @@ -36,11 +39,12 @@ else user << "You work the bolt closed." bolt_open = 0 + user.next_move = world.time + 4 //prevent spam, also makes having to work the bolt more of a drawback update_icon() /obj/item/weapon/gun/projectile/heavysniper/special_check(mob/user) if(bolt_open) - user << "You can't fire [src] with the bolt open!" + user << "You can't fire [src] while the bolt is open!" return 0 return ..() @@ -58,11 +62,6 @@ set category = "Object" set name = "Use Scope" set popup_menu = 1 - + toggle_scope(2.0) -//need to override zoom() so that accuracy is properly reset even if we move while zoomed in. -/obj/item/weapon/gun/projectile/heavysniper/zoom() - ..() - if(zoom) - accuracy -= initial(accuracy) //remove the accuracy penalty if zoomed in \ No newline at end of file diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 03e2489918..6176a48569 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -128,7 +128,7 @@ xo = new_x - starting_loc.x //Called when the projectile intercepts a mob. Returns 1 if the projectile hit the mob, 0 if it missed and should keep flying. -/obj/item/projectile/proc/attack_mob(var/mob/living/target_mob, var/distance, var/miss_modifier = -30) +/obj/item/projectile/proc/attack_mob(var/mob/living/target_mob, var/distance, var/miss_modifier) //accuracy bonus from aiming if (istype(shot_from, /obj/item/weapon/gun)) //If you aim at someone beforehead, it'll hit more often. var/obj/item/weapon/gun/daddy = shot_from //Kinda balanced by fact you need like 2 seconds to aim @@ -137,7 +137,7 @@ miss_modifier += -30 //roll to-hit - var/hit_zone = get_zone_with_miss_chance(def_zone, target_mob, max(miss_modifier + 15*distance, 0)) + var/hit_zone = get_zone_with_miss_chance(def_zone, target_mob, max(miss_modifier + 15*(distance-2), 0)) if(!hit_zone) visible_message("\The [src] misses [target_mob] narrowly!") return 0 diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index 6a04892ee1..cb7905d880 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -25,22 +25,23 @@ damage *= 0.7 //squishy mobs absorb KE return 1 - if(istype(A, /obj/machinery) || istype(A, /obj/structure)) - var/chance = 15 - if(istype(A, /turf/simulated/wall)) - var/turf/simulated/wall/W = A - chance = round(damage/W.damage_cap*100) - else if(istype(A, /obj/machinery/door)) - var/obj/machinery/door/D = A - chance = round(damage/D.maxhealth*100) - else if(istype(A, /obj/structure/girder) || istype(A, /obj/structure/cultgirder)) - chance = 100 - - if(prob(chance)) - if(A.opacity) - //display a message so that people on the other side aren't so confused - A.visible_message("\The [src] pierces through \the [A]!") - return 1 + var/chance = 0 + if(istype(A, /turf/simulated/wall)) + var/turf/simulated/wall/W = A + chance = round(damage/W.damage_cap*150) + else if(istype(A, /obj/machinery/door)) + var/obj/machinery/door/D = A + chance = round(damage/D.maxhealth*100) + else if(istype(A, /obj/structure/girder) || istype(A, /obj/structure/cultgirder)) + chance = 100 + else if(istype(A, /obj/machinery) || istype(A, /obj/structure)) + chance = 15 + + if(prob(chance)) + if(A.opacity) + //display a message so that people on the other side aren't so confused + A.visible_message("\The [src] pierces through \the [A]!") + return 1 return 0 @@ -125,7 +126,9 @@ penetrating = 1 /obj/item/projectile/bullet/rifle/a145 - damage = 90 + damage = 80 + stun = 3 + weaken = 3 penetrating = 5 /* Miscellaneous */ diff --git a/icons/obj/ammo.dmi b/icons/obj/ammo.dmi index e47e53e736913b7b2e3bcf9dbdfdee5939cff7e5..d84132a60c018a0d130ebe00320200ab2d801ec4 100644 GIT binary patch literal 13349 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%0A}zeJisj1Zvus+Kgn#A^mO84pAL&8 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 literal 44204 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 Date: Sun, 15 Feb 2015 22:16:36 +0800 Subject: [PATCH 34/45] Changed supermatter engine manual for thermoelectric engine. Expanded supermatter engine radiator bank. Incinerator disposals outlet moved slightly to prevent collision. Supermatter radiator circulator pump changed to a high-powered pump. Supermatter critical temperature lowered to 5000K. --- code/game/objects/items/weapons/manuals.dm | 137 ++++++++------------- code/modules/supermatter/supermatter.dm | 2 +- maps/exodus-1.dmm | 66 +++++----- 3 files changed, 86 insertions(+), 119 deletions(-) diff --git a/code/game/objects/items/weapons/manuals.dm b/code/game/objects/items/weapons/manuals.dm index f64473ba54..f026313034 100644 --- a/code/game/objects/items/weapons/manuals.dm +++ b/code/game/objects/items/weapons/manuals.dm @@ -75,10 +75,10 @@ /obj/item/weapon/book/manual/supermatter_engine - name = "Supermatter Engine User's Guide" + name = "Supermatter Engine Operating Manual" icon_state = "bookSupermatter" - author = "Waleed Asad" - title = "Supermatter Engine User's Guide" + author = "Nanotrasen Central Engineering Division" + title = "Supermatter Engine Operating Manual" /obj/item/weapon/book/manual/supermatter_engine/New() ..() @@ -94,95 +94,56 @@ +

OPERATING MANUAL FOR MK 1 PROTOTYPE THERMOELECTRIC SUPERMATTER ENGINE 'TOMBOLA'


- Engineering notes on the single-stage supermatter engine,
- -Waleed Asad

- - Station,
- Exodus

- - A word of caution, do not enter the engine room for any reason without radiation protection and meson scanners on. The status of the engine may be unpredictable even when you believe it is 'off.' This is an important level of personal protection.

- - The engine has two basic modes of functionality. It has been observed that it is capable of both a safe level of operation and a modified, high output mode.

- -

Heat-Primary Mode

- Notes on starting the basic function mode +

OPERATING PRINCIPLES

+
+
  • The supermatter crystal serves as the fundamental power source of the engine. Upon being charged, it begins to emit large amounts of heat and radiation, as well and oxygen and plasma. As oxygen accelerates the reaction, and plasma carries the risk of fire, these must be filtered out. NOTE: Supermatter radiation will not charge radiation collectors.
  • +
    +
  • Air in the reactor chamber housing the supermatter is circulated through the reactor loop, which passes through the filters and thermoelectric generators. The thermoelectric generators transfer heat from the reactor loop to the colder radiator loop, thereby generating power. Additional power is generated from internal turbines in the circulators.
  • +
    +
  • Air in the radiator loop is circulated through the radiator bank, located in space. This rapidly cools the air, preserving the temperature differential needed for power generation.
  • +
    +
  • The MK 1 Prototype Thermoelectric Supermatter Engine is designed to operate at reactor temperatures of 3000K to 4000K and generate up to 1MW of power. Beyond 1MW, the thermoelectric generators will begin to lose power through electrical discharge, reducing efficiency, but additional power generation remains feasible.
  • +
    +
  • The crystal structure of the supermatter will begin to liquefy if its temperature exceeds 5000K. This eventually results in a massive release of light, heat and radiation, disintegration of both the supermatter crystal and most of the surrounding area, and as as-of-yet poorly documented psychological effects on all animals within a 2km. Appropriate action should be taken to stabilize or eject the supermatter before such occurs.
  • +
    +

    SUPERMATTER HANDLING

    +
  • Do not expose supermatter to oxygen.
  • +
  • Do not touch supermatter without gloves without exosuit protection allow supermatter to contact any solid object apart from specially-designed supporting pallet.
  • +
  • Do not directly view supermatter without meson goggles.
  • +
  • While handles on pallet allow moving the supermatter via pulling, pushing should not be attempted.
  • +
    +

    STARTUP PROCEDURE

      -
    1. Prepare collector arrays: As is standard, begin by wrenching them down, filling six plasma tanks with a plasma canister, and inserting the tank into the collectors one by one. Finally, initialize each collector.
    2. - -
    3. Prepare gas system: Before introducing any gas into the supermatter engine room, it is important to remember the small, but vital steps to preparing this section. First, set the input gas pump and output gas flow pump to 4500 kPa, or maximum flow. Second, switch the digital switching valve into the 'up' position, so the green light is on north side of the valve, in order to circulate the gas back toward the coolers and collectors.
    4. - -
    5. Apply N2 gas: Retrieve the two N2 canisters from storage and bring them to the engine room. Attach one of them to the input section of the engine gas system located next to the collectors. Keep it attached until the N2 pressure is low enough to turn the canister light red. Replace it with the second canister to keep N2 pressure at optimal levels.
    6. - -
    7. Open supermatter shielding: This button is located in the engine room, to the left of the engine monitoring room blast doors. At this point, the supermatter chamber is mostly a gas mixture of N2 and is producing no radiation. It is considered 'safe' up until this point. Do not forget radiation shielding and meson scanners.
    8. - -
    9. Begin primary emitter burst series: Begin by firing four shots into the supermatter using the emitter. It is important to move to this step quickly. The onboard SMES units may not have enough power to run the emitters if left alone too long on-station. This engine can produce enough power on its own to run the entire station, ignoring the SMES units completely, and is wired to do so.
    10. - -
    11. Switch SMES units to primary settings: Maximize input and set the devices to automatically charge, additionally turn their outputs on if they are off unless power is to be saved (Which can be useful in case of later failures).
    12. - -
    13. Begin secondary emitter burst series: Before firing the emitter again, check the power in the line with a multimeter (Do not forget electrical gloves). The engine is running at high efficiency when the value exceeds 200,000 power units.
    14. - -
    15. Maintain engine power: When power in the lines get low, add an additional emitter burst series to bring power to normal levels.
    16. +
    17. Fill reactor loop and radiator loop with two (2) standard canisters of nitrogen gas each.
    18. +
    19. Ensure that pumps and filters are on and operating at maximum power.
    20. +
    21. Fire 5 15 2 UNKNOWN 8-12 pulses from emitter at supermatter crystal. Reactor blast doors must be open for this procedure.
    - - -

    O2-Reaction Mode

    - - The second mode for running the engine uses a gas mixture to produce a reaction within the supermatter. This mode requires the CE's or Atmospheric's help to set up. This is called 'O2-Reaction Mode.'

    - - THIS MODE CAN CAUSE A RUNAWAY REACTION, LEADING TO CATASTROPHIC FAILURE IF NOT MAINTAINED. NEVER FORGET ABOUT THE ENGINE IN THIS MODE.

    - - Additionally, this mode can be used for what is called a 'Cold Start.' If the station has no power in the SMES to run the emitters, using this mode will allow enough power output to run them, and quickly reach an acceptable level of power output.

    - +
    +

    OPERATION AND MAINTENANCE

      -
    1. Prepare collector arrays: As is standard, begin by wrenching them down, filling six plasma tanks with a plasma canister, and inserting the tank into the collectors one by one. Finally, initialize each collector.
    2. - -
    3. Prepare gas system: Before introducing any gas into the supermatter engine room, it is important to remember the small, but vital steps to preparing this section. First, set the input gas pump and output gas flow pump to 4500 kPa, or maximum flow. Second, switch the digital switching valve into the 'up' position, so the green light is on north side of the valve, in order to circulate the gas back toward the coolers and collectors.
    4. - -
    5. Modify the engine room filters: Unlike the Heat-Primary Mode, it is important to change the filters attached to the gas system to stop filtering O2, and start filtering carbon molecules. O2-Reaction Mode produces far more plasma than Heat-Primary, therefore filtering it off is essential.
    6. - -
    7. Switch SMES units to primary settings: Maximize input and set the devices to automatically charge, additionally turn their outputs on if they are off unless power is to be saved (Which can be useful in case of later failures). If you check the power in the system lines at this point, you will find that it is constantly going up. Indeed, with just the addition of O2 to the supermatter, it will begin outputting power.
    8. - -
    9. Begin primary emitter burst series: Begin by firing four shots into the supermatter using the emitter. Do not over power the supermatter. The reaction is self sustaining and propagating. As long as O2 is in the chamber, it will continue outputting MORE power.
    10. - -
    11. Maintain follow up operations: Remember to check the temperature of the core gas and switch to the Heat-Primary function, or vent the core room when problems begin if required.
    12. -

    - -

    Notes on Supermatter Reaction Function and Drawbacks

    - - After several hours of observation, an interesting phenomenon was witnessed. The supermatter undergoes a constant, self-sustaining reaction when given an extremely high O2 concentration. Anything about 80% or higher typically will cause this reaction. The supermatter will continue to react whenever this gas mixture is in the same room as the supermatter.

    - - To understand why O2-Reaction mode is dangerous, the core principle of the supermatter must be understood. The supermatter emits three things when 'not safe,' that is any time it is giving off power. These things are:
    - -
      -
    • Radiation (which is converted into power by the collectors)

    • -
    • Heat (which is removed via the gas exchange system and coolers)

    • -
    • External gas (in the form of plasma and O2)

    • -

    - - When in Heat-Primary mode, far more heat and plasma are produced than radiation. In O2-Reaction mode, very little heat and only moderate amounts of plasma are produced, however HUGE amounts of energy leaving the supermatter is in the form of radiation.

    - - The O2-Reaction engine mode has a single drawback which has been eluded to more than once so far and that is very simple. The engine room will continue to grow hotter as the constant reaction continues. Eventually, there will be what is called a 'critical gas mixture.' This is the point at which the constant adding of plasma to the mixture of air around the supermatter changes the gas concentration to below the tolerance. When this happens, two things occur. First, the supermatter switches to its primary mode of operation wherein huge amounts of heat are produced by the engine rather than low amounts with high power output. Second, an uncontrollable increase in heat within the supermatter chamber will occur. This will lead to a spark-up, igniting the plasma in the supermatter chamber, wildly increasing both pressure and temperature.

    - - While the O2-Reaction mode is dangerous, it does produce heavy amounts of energy. Consider using this mode only in short amounts to fill the SMES, and switch back later in the shift to keep things flowing normally.

    - - -

    Notes on Supermatter Containment and Emergency Procedures

    - - While a constant vigil on the supermatter is not required, regular checkups are important. Check the temperature of gas leaving the supermatter chamber for unsafe levels and ensure that the plasma in the chamber is at a safe concentration. Of course, also make sure the chamber is not on fire. A fire in the core chamber is very difficult to put out. As any toxin scientist can tell you, even low amounts of plasma can burn at very high temperatures. This burning creates a huge increase in pressure and more importantly, temperature of the crystal itself.

    - - The supermatter is strong, but not invincible. When the supermatter is heated too much, its crystal structure will attempt to liquefy. The change in atomic structure of the supermatter leads to a single reaction, a massive explosion. The computer chip attached to the supermatter core will warn the station when stability is threatened. It will then offer a second warning, when things have become dangerously close to total destruction of the core.

    - - Located both within the CE office and engine room is the engine ventilatory control button. This button allows the core vent controls to be accessed, venting the room to space. Remember however, that this process takes time. If a fire is raging, and the pressure is higher than fathomable, it will take a great deal of time to vent the room. Also located in the CE's office is the emergency core eject button. A new core can be ordered from cargo. It is often not worth the lives of the crew to hold on to it, not to mention the structural damage. However, if by some mistake the supermatter is pushed off or removed from the mass driver it sits on, manual reposition will be required. Which is very dangerous and often leads to death.

    - - The supermatter is extremely dangerous. More dangerous than people give it credit for. It can destroy you in an instant, without hesitation, reducing you to a pile of dust. When working closely with supermatter, it is suggested to get a genetic backup and do not wear any items of value to you. The supermatter core can be pulled if grabbed properly by the base, but pushing is not possible.

    - - -

    In Closing

    - - Remember that the supermatter is dangerous, and the core is dangerous still. Venting the core room is always an option if you are even remotely worried, utilizing Atmospherics to properly ready the room once more for core function. It is always a good idea to check up regularly on the temperature of gas leaving the chamber, as well as the power in the system lines. Lastly, once again remember, never touch the supermatter with anything. Ever.

    - - -Waleed Asad, Senior Engine Technician +
  • Ensure that radiation protection and meson goggles are worn at all times while working in the engine room.
  • +
  • Ensure that reactor and radiator loops are undamaged and unobstructed.
  • +
  • Ensure that plasma and oxygen gas exhaust from filters is properly contained or disposed. Do not allow exhaust pressure to exceed 4500 kPa.
  • +
  • Ensure that engine room Area Power Controller (APC) and engine Superconducting Magnetic Energy Storage unit (SMES) are properly charged.
  • +
  • Ensure that reactor temperature does not exceed 5000K. In event of reactor temperature exceeding 5000K, see EMERGENCY COOLING PROCEDURE.
  • +
  • In event of imminent and/or unavoidable delamination, see EJECTION PROCEDURE.
  • + +
    +

    EMERGENCY COOLING PROCEDURE

    +
      +
    1. Open Emergency Cooling Valve 1 and Emergency Cooling Valve 2.
    2. +
    3. When reactor temperature returns to safe operating levels, close Emergency Cooling Valve 1 and Emergency Cooling Valve 2.
    4. +
    5. If reactor temperature does not return to safe operating levels, see EJECTION PROCEDURE.
    6. +
    +
    +

    EJECTION PROCEDURE

    +
      +
    1. Press Engine Ventilatory Control button to open engine core vent to space.
    2. +
    3. Press Emergency Core Eject button to eject supermatter crystal. NOTE: Attempting crystal ejection while engine core vent is closed will result in ejection failure.
    4. +
    5. In event of ejection failure, pending
    6. +
    "} diff --git a/code/modules/supermatter/supermatter.dm b/code/modules/supermatter/supermatter.dm index 422f03c399..6cdf0c3e91 100644 --- a/code/modules/supermatter/supermatter.dm +++ b/code/modules/supermatter/supermatter.dm @@ -18,7 +18,7 @@ //Controls how much power is produced by each collector in range - this is the main parameter for tweaking SM balance, as it basically controls how the power variable relates to the rest of the game. #define POWER_FACTOR 1.0 #define DECAY_FACTOR 700 //Affects how fast the supermatter power decays -#define CRITICAL_TEMPERATURE 7000 //K +#define CRITICAL_TEMPERATURE 5000 //K #define CHARGING_FACTOR 0.05 #define DAMAGE_RATE_LIMIT 3 //damage rate cap at power = 300, scales linearly with power diff --git a/maps/exodus-1.dmm b/maps/exodus-1.dmm index 5d3bcb1d24..9c7004f1f4 100644 --- a/maps/exodus-1.dmm +++ b/maps/exodus-1.dmm @@ -5917,7 +5917,7 @@ "cjO" = (/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/engineering/engine_room) "cjP" = (/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/plating,/area/engineering/engine_room) "cjQ" = (/obj/machinery/atmospherics/portables_connector,/turf/simulated/floor/plating{icon_state = "platebotc"},/area/engineering/engine_room) -"cjR" = (/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/power/smes/buildable{charge = 2e+006; input_level = 100000; output_level = 200000; RCon_tag = "Engine - Core"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/engineering/engine_room) +"cjR" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging{tag = "icon-intact (SOUTHWEST)"; icon_state = "intact"; dir = 10},/turf/space,/area/space) "cjS" = (/obj/machinery/atmospherics/binary/pump,/turf/simulated/floor/plating,/area/engineering/engine_room) "cjT" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/turf/simulated/floor/plating,/area/engineering/engine_waste) "cjU" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engineering/engine_waste) @@ -6361,7 +6361,7 @@ "csq" = (/obj/structure/closet/radiation,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = 28},/turf/simulated/floor,/area/engineering/engine_monitoring) "csr" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/ai_status_display{layer = 4; pixel_y = 32},/turf/simulated/floor,/area/engineering/engine_monitoring) "css" = (/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor,/area/engineering/engine_airlock) -"cst" = (/obj/structure/closet/radiation,/obj/item/clothing/glasses/meson,/obj/item/clothing/glasses/meson,/obj/machinery/camera{c_tag = "Engine Room Airlock"; dir = 2; network = list("SS13","Supermatter")},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor,/area/engineering/engine_airlock) +"cst" = (/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/power/smes/buildable{charge = 2e+006; input_attempt = 1; input_level = 100000; output_level = 200000; RCon_tag = "Engine - Core"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/engineering/engine_room) "csu" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/engineering/engine_airlock) "csv" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plating,/area/engineering/drone_fabrication) "csw" = (/obj/machinery/computer/drone_control,/turf/simulated/floor/plating,/area/engineering/drone_fabrication) @@ -6820,7 +6820,7 @@ "cBh" = (/turf/simulated/floor{dir = 3; icon_state = "whitered"},/area/medical/virology) "cBi" = (/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/hidden/purple,/turf/simulated/floor{dir = 3; icon_state = "whitered"},/area/medical/virology) "cBj" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet,/obj/item/device/radio/intercom{freerange = 1; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 30},/turf/simulated/floor{dir = 3; icon_state = "whitered"},/area/medical/virology) -"cBk" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating/airless,/area/space) +"cBk" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging,/turf/space,/area/space) "cBl" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology) "cBm" = (/obj/machinery/door/window/southright{dir = 1; name = "Containment Pen"; req_access_txt = "47"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/rnd/xenobiology) "cBn" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table/reinforced,/obj/machinery/door_control{id = "xenobio4"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access_txt = "55"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/rnd/xenobiology) @@ -6910,7 +6910,7 @@ "cCT" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 8},/turf/simulated/floor/plating,/area/maintenance/engineering) "cCU" = (/obj/item/clothing/shoes/magboots,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/void/engineering,/obj/machinery/door/window/southleft{name = "Engineering Hardsuits"; req_access_txt = "11"},/obj/structure/table/rack{dir = 8; layer = 2.6},/obj/item/clothing/suit/space/void/engineering,/turf/simulated/floor,/area/engineering/engine_eva) "cCV" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/engineering/engine_eva) -"cCW" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor/plating/airless,/area/space) +"cCW" = (/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) "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) "cCZ" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/green,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) @@ -7028,7 +7028,7 @@ "cFh" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 6},/area/maintenance/engi_shuttle) "cFi" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) "cFj" = (/obj/machinery/camera{c_tag = "Medbay Operating Theatre 1"; dir = 8; network = list("SS13")},/obj/machinery/button/holosign{pixel_x = 24; pixel_y = 2},/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "whiteredcorner"},/area/medical/surgery) -"cFk" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/obj/structure/sign/securearea{desc = "A warning sign which reads 'HOT EXHAUST'."; name = "\improper HOT EXHAUST"; pixel_x = -32},/turf/simulated/floor/plating/airless,/area/space) +"cFk" = (/obj/machinery/atmospherics/binary/pump/high_power{dir = 8},/turf/simulated/floor/plating,/area/engineering/engine_room) "cFl" = (/obj/machinery/air_sensor{frequency = 1441; id_tag = "n2_sensor"},/turf/simulated/floor/engine{name = "n2 floor"; nitrogen = 100000; oxygen = 0},/area/engineering/atmos) "cFm" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/green,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cFn" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) @@ -7080,7 +7080,7 @@ "cGh" = (/obj/structure/table/reinforced,/turf/simulated/floor,/area/engineering/engineering_monitoring) "cGi" = (/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/simulated/floor,/area/engineering/engineering_monitoring) "cGj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/engineering) -"cGk" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 32; pixel_y = 0},/turf/space,/area/space) +"cGk" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating/airless,/area/space) "cGl" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/medical/virology) "cGm" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/structure/sign/directions/medical{dir = 1; icon_state = "direction_med"; pixel_x = 30; pixel_y = 4; tag = "icon-direction_med (NORTH)"},/obj/structure/sign/directions/evac{dir = 8; icon_state = "direction_evac"; pixel_x = 30; pixel_y = -4; tag = "icon-direction_evac (WEST)"},/turf/simulated/floor,/area/engineering) "cGn" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor,/area/engineering) @@ -7121,7 +7121,7 @@ "cGW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/engineering/engineering_monitoring) "cGX" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Monitoring Room"; req_access_txt = "11"},/turf/simulated/floor,/area/engineering/engineering_monitoring) "cGY" = (/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area/engineering/engineering_monitoring) -"cGZ" = (/obj/effect/landmark{name = "carpspawn"},/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/space,/area/space) +"cGZ" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating/airless,/area/space) "cHa" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/heat_exchanging{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/space,/area/space) "cHb" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/heat_exchanging{dir = 5},/turf/space,/area/space) "cHc" = (/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "EngineVent"; name = "Engine Core Vent"; p_open = 0},/turf/simulated/floor/engine,/area/engineering/engine_room) @@ -7140,7 +7140,7 @@ "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) "cHq" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging{dir = 5},/turf/space,/area/space) "cHr" = (/obj/structure/grille,/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 = "EngineRadiatorViewport"; name = "Engine Radiator Viewport Shutter"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/visible/green{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor/plating,/area/engineering/engine_room) -"cHs" = (/obj/machinery/atmospherics/binary/pump{dir = 8},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cHs" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plating/airless,/area/maintenance/medbay) "cHt" = (/obj/machinery/atmospherics/pipe/manifold/visible/green{dir = 1},/obj/machinery/meter,/turf/simulated/floor/plating,/area/engineering/engine_room) "cHu" = (/obj/machinery/power/supermatter{layer = 4},/obj/machinery/mass_driver{id = "enginecore"},/turf/simulated/floor/engine/nitrogen{icon_state = "gcircuit"; name = "floor"},/area/engineering/engine_room) "cHv" = (/turf/simulated/floor/engine/nitrogen{dir = 8; icon_state = "warnplate"; name = "plating"},/area/engineering/engine_room) @@ -7175,7 +7175,7 @@ "cHY" = (/turf/simulated/wall/r_wall,/area/engineering/engine_waste) "cHZ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplatecorner"},/area/engineering/engine_waste) "cIa" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/plating,/area/engineering/engine_waste) -"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) +"cIb" = (/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/obj/structure/sign/securearea{desc = "A warning sign which reads 'HOT EXHAUST'."; name = "\improper HOT EXHAUST"; pixel_x = -32},/turf/simulated/floor/plating/airless,/area/space) "cIc" = (/obj/item/stack/cable_coil,/turf/space,/area/space) "cId" = (/obj/machinery/light/small,/turf/simulated/floor/plating,/area/engineering/engine_waste) "cIe" = (/turf/simulated/floor/plating,/area/engineering/engine_waste) @@ -7234,6 +7234,12 @@ "cJf" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/maintenance/engi_engine) "cJg" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/engi_engine) "cJh" = (/turf/simulated/floor/plating{dir = 2; icon_state = "warnplatecorner"},/area/engineering/engine_room) +"cJi" = (/obj/structure/closet/radiation,/obj/item/clothing/glasses/meson,/obj/item/clothing/glasses/meson,/obj/machinery/camera{c_tag = "Engine Room Airlock"; dir = 2; network = list("SS13","Supermatter")},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor,/area/engineering/engine_airlock) +"cJj" = (/obj/effect/landmark{name = "carpspawn"},/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/structure/lattice,/turf/space,/area/space) +"cJk" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/space,/area/space) +"cJl" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging{dir = 5},/obj/structure/lattice,/turf/space,/area/space) +"cJm" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EJECTION/VENTING PORT'."; name = "\improper EJECTION/VENTING PORT"; pixel_y = 32},/turf/space,/area/space) +"cJn" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging,/obj/structure/lattice,/turf/space,/area/space) "cJz" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "robotics_solar_outer"; locked = 1; name = "Engineering External Access"; req_access = null; req_access_txt = "10;13"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/portsolar) "cJA" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "robotics_solar_pump"},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "robotics_solar_pump"; tag_exterior_door = "robotics_solar_outer"; frequency = 1379; id_tag = "robotics_solar_airlock"; tag_interior_door = "robotics_solar_inner"; layer = 3.3; pixel_x = 0; pixel_y = -25; req_access_txt = "13"; tag_chamber_sensor = "robotics_solar_sensor"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "robotics_solar_sensor"; layer = 3.3; pixel_x = 12; pixel_y = -25},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/warning_stripes,/turf/simulated/floor/plating,/area/maintenance/portsolar) "cJB" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "robotics_solar_inner"; locked = 1; name = "Engineering External Access"; req_access = null; req_access_txt = "13"},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/portsolar) @@ -7448,27 +7454,27 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafaaaaaaaaacoxcnzcoNcnzcnzcnzcoQcnzcnzcnzcoQcnzcnzcnzcnzcnzcoPcnzcnHcnzcoOcnKcnzcnzcoHcoFcoGcoEcoCcoDcoCcoCcnFcoAcoBcoycnhcmQcmPcmQcmRcoMcoLcoKcoJcoIcmMcmRczIczJczJczKczLczMczNczOcvNcxNczPczQcxNczRczSczTcvNczUczVcrGaaaaaaaaaaaaaaaaaacqvczWcuMczXcuVczYczZcAactFcAbcAccsPcyXczWcAdcAecqvaaaaaaaaaaaackEcdOcAfcAgcAgcIgcAicAjcAkcAlcAmcAncAocApcAqcokcAraaaaaacrPaafcwjcwjcwjcwjcwjaaackxaafcwjcwjcwjcwjcwjaaacrPaaacyhaaaaaacyhaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaacyhaaaaaacyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaacoYcnzcoNcnzcoZcoScoXcoScoWcoScoXcoScoWcoScoScoScoRcoVcoRcoUcoTcoGcpscptcpucpvcpwcpxcoCcpjcIhcoCcoCcoCcoCcoCcpncpbcpacpbcmRcmRcmRcmRcmRcmRcmRcmRcALczJczJcAMcANcAObPxcAPcvNcAQcARcpycATcAUcAVcAWcvNcAXcAYcrGaaaaaaaaaaaaaaaaaacqvcuQcAZcAectFcBacBbcBcctFcBdcBecBfcBgcBhcBicBjcqvaafaafaaaaaaaaaaaabquaaacdOcBlcBmcBncBocBpcBmcBqcBrcBpcBmcBscdOaaaaaabZSaaaaafaaaaafaaaaafaaackxaaaaafaaaaafaafaafaafcrPaaacyhcyhcyhcyhaaacyhcyhcyhcyhcyhcyhcyhcyhcyhaaacyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIvaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabZSaaaaaaaaaaaaaamaaaaaaaaacpzcnzcoNcnzcnHcnGcoNcnzcnHcnGcoNcnzcnHcnGcnzcnzcnLcnzcnHcnGcpAcpQcpTcpNcpOcpVcpWcpUcoCcpDcpFcpBcpCcpLcpMcpHcpJcpMcqbcpMcqacqecqdcqccpZcpZcpYcpXcBVcBWcBWcBXcBYcAObPxcBZcvNcvNcCacCbcCccCbcCacCdcvNcrGcCecrGaaaaaaaaaaaaaaaaaacqvctFcCfcuVctFcCgcChcCictFcCjcCkcqycgvcCmcCncCocrHaaaaaaaaaaaaaaaaaacgwaafcdOcCqcluclUcomclsclpclqcomcloclVclWcdOaaaaaacrPaaactXctXctXctXctXaafckxaafctXctXctXctXctXaafcrPaaacyhcyhcyhcyhaaacyhcyhcyhcyhcyhcyhcyhcyhcyhaaacyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaafaafaafaafaamaafaafaafcpzcrgcrjcrhcricrbcracqZcqYcqXcqWcqVcqUcrbcnzcrgcrfcrecrdcqXcrccqPcqPcqPcqPcqPcqPcqPcqPcqRcjbcpncqScqIcmQcqQcmQcmQcmPcmQcmQcqfcmQcqIcqzcqKcqJcqMciCcCNcCOcCPcCQcAObPwcCRcCScCTcCacAGcAVcBwcCacCWaafcCXcCYcCXaaaaaaaaaaaaaaaaaacqvcCZctDcuQcDacDbcuQcDccDdcDeaafaaachxchFchEclXaaaaaaaaaaacaaaaaaaaaaaaaaacdOcDhcplcplcomcDicplcplcomcDicplcplcdOaafaafcrPaafckVckSckSckSckSckyckxckwckvckvckvckvckUaafcrPaaacyhcyhcyhcyhaaacyhcyhcyhcyhcyhcyhcyhcyhcyhaaacyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPcsbaaaaaaaaaaamaaaaaaaaacsgcsccsdcsecsfcsicshcsjcsfcsicshcsjcsfcsicsmcsmcsncsjcsfcsicskcqPaaacrocrpcrmcrncrkcrlcrUcrVcgYcgYcrScrTcrQcrRcrZcsacrRcrZcrQceXcrXcrWceXcpncpncAOcDNcDOcDPcDQcAObNUcDRcDScDTcCacCbcDUcCbcCacCWaafaaaaafaaaaaaaaaaaaaaaaaaaaacqvcCZcDVcDWcDXcDXcDWcsPcDYcqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdOcDZcplcplcomcEacplcplcomcEacplcplcdOaaaaaacrPaafcwjcwjcwjcwjcwjaaackxaaacwjcwjcwjcwjcwjaaacrPaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPcClcqLcqLcqLcpEcpIcpIcpIcqLcpIcpPcpIcpGcpIcpPcpIcpGcpIcpPcpIcpGcpIcqLcpIcpRcpIcpGcpIcqNaafaaaceUcsvcexcswcsxchccrUchbcgYcsycsQcsTcgtcsUcspcsocsrcsqcgtcsscsucstceXaaaaafcAOcEBcECcEDaafaaabNUbPxbPxbSkcCaclZcEFclYcCacCWaafaafaaaaaaaaaaaaaaaaaaaaaaaacqvcEHcuXcEIcEJcEJcEIcuQcEKcqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdOcplcplcplcomcELcplcplcomcELcplcplcdOaacaaacrPaaaaaaaafaafaafaaaaaacmTaafaaaaaaaafaafaaaaaacrPaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaafaafaaaaaaaaqaaaaaaaaaaafcfIcsVcsWcsXcfIcsVcsWcsXcfIcsVcsWcsYcfIaaacfIcsZcsWcsYcfIaaaaafaaaceUceyctcchdceyctactectfcgYctdcthcticgtctgctmctlctkctjcgtcttctoctnceXaaaaaacAOcFgcFhcFiaaaaaabNUbPxbPxbNUcCacmUcmUcmUcCacFkcmWaaaaaaaaaaaaaaaaaaaaaaaaaaacqvcFmcFncuQcuQcuQcuQcuQcFocqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaackEcdOcdOcdOcdOcdOcdOcdOcdOcmYcmYcmYckEaaaaaacrPcrPcrPcrPcrPaaaaaaaaacmZaaaaaaaaacrPcrPcrPbZScrPaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaaaaafaafaaaaamaaaaaaaaaaafcfIcfJcfGcfHcfIcgicfRcfQcfIcfPcfOcfNcfIaafcfIcfMcfLcfKcfIaaaaafaaaceUceWcexceyceyceTcetceucevcewcepceqcercescfDcfCcfFcfEcfjceYcfBcfuceXaafaaacFJcDNcFKcAOcFLaaabNUcFMbPxcFNcFOaafaafaafaaacBkaafaafaaaaaaaaaaaaaaaaaaaaaaaacrHcqvcqvcFPcFQcEIcEIcEIcFRcFPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqpbqpbqpaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaafcfTaafcrPaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaamaaaaaaaafaafcfIchkchlchkcfIchichjchicfIchgchhchgcfIaaacfIchgchgchfcfIaaaaafaaaceUchecexchdceychcchachbcgYcgZcgWcgXcgtcgRcgBcgCcgBcgucgtcgrcgpcgoceXaaLcGgcGgcGgcGgcGgcGgcGgbNUciEciDcGjaafaaaaaaaafcGkcDfaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacGlcEJcEJcEJcEJcEJcGlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaaaaafaaacrPaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaafaamaaaaafaafaaacfIchkchmchkcfIchichnchicfIchgchochgcfIaafcfIchgchgchgcfIaafaafaafcidciecifcigcihcikchpchbcgYcAhchGchHcgtciccimcilciocincgtcipcirciqceXaaacGgcGgcGgcGgcGgcGgcGgcGFcGGcGHbNUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqvcCmcqxcqxcqxcCocqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPcrPcrPcrPcrPaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbZSaaaaaacfIcfIcfIcfIcfIcfIcfIcfIcfIcfIcfIcfIcfIaaaciscfIcfIcfIcfIaaaaaaaaaaaacjbcjbcjbcjbcjbciycitcitcitcitcjacitciWcivciwcivciucitcitcixcitcitcitcGgcGgcGgcGgcGgcGgcGgaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaacyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcrPaaaaaaaafaafaaaaafaafaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaafaaacGQcGRcGRcGRcGScjycjccjdcjecjicjFcjGcjHcjIcjzcjAcjRcjEcjNcjMcjPcjOcjKcjQcjJcjLcjQcitcGgcGgcGgcGgcGgcGgcGgaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafcHncjVcHpaaacHncjVcHpaaacHncjVcHpaafaafaaaaafaafaafaafaafcHqcGRcGRcGRcGScjycjXcjYcjTcjUckzckAcksckuclhcljcldclgckiclcckickickickrckicjZcjScitcGgcGgcGgcGgcGgcGgcGgaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaacHncjWcHpaaacHncjWcHpaaacHncjWcHpaafaafaaaaafaaaaaacHKaafcGQcGRcGRcGRcGScjycjXckTckWckYckZckAclacltcmscjJcjJcjJcmvcmucmIcjJcjJcltcHicHfcHjcitcitcitcIbaafaaIaafaafaafaafaafaafaafaafaafckBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafcHncjWcHpaaacHncjWcHpaafcHncjWcHpaafaaaaaaaafaafcIcaaaaafcHqcGRcGRcGRcGScjycmycmBcmwcmxcmEcmFcmCcmDcHxclnclnclncHlclvcHkclnclncHocHmclecHwcHtcHscHrcmtclmclmclmclmclmclmclmclmclmcllaaackBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaacHncjWcHpaafcHncjWcHpaaacHncjWcHpaaaaaaaaaaaaaafaafaaaaafaaaaaaaaaaaaaafcHYcIecIdcIacHZcHUcjGckecjJcjJcjJcJhcJdcIRcIScIPcIQcIZclkcHScITcHPcIOcIIcINcmtcllcHJcllcHJcllcHJcllcHJcllcHdaafckBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaaIaafaaacHncjWcHpaafcHncjWcHpaaacHncjWcHpaafaaaaaaaaaaaaaafaafcIJcIKcIKcIKcIKcILcILcILcILcILcIMcILcitcHBcjJcjJcjJcIAcitcHHcIEcHFcitcIFcIGcIHclecIBcICcIDcitaaacHdcHdcHdcHdcHdcHdcHdcHdcHdcHdaafckBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaafaaaaafaafczCaafaafaafczCaafaaaaafczCaafaaaaaaaaaaaaaaacIUcIVcIWcIXcIYcHCcJacJbcJcciFcJecJfcJgcJecitcIzcIycjJcjJcHNcIwcIxcHAcIfcIwcHRcHLcHmclecHWcHXcHVcitaaacHdcHdcHdcHdcHdcHdcHdcHdcHdcHdaaaaanaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafcydcxzcxycxxcxxcxxcxxcxxcxxcxxcxxcxxcxxcxxczicxzcxzcxzcypcJzcJAcJBcJCcJDcJEcJFcJGcJHcJHcJHcJIcJJcJKcitcHMcHMcjJcjJcHNcHOcHgcHucHvcHOcHRcjJcHScHTcHPcjJcHQcitaaacHdcHdcHdcHdcHdcHdcHdcHdcHdcHdaafckBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYaaactYctYctYctYctYaaactYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaafaaaaafaafcxfaafaaaaafcxfaafaaaaafcxfaafaaaaaaaaaaaaaaacIUcIVcJRcJScJTcJUcIKcJVcJWcJecJecJXcJXcJYcitcHMcHMcjJcjJcHNcHycHgcHhcHecHycHDcmGcmHcHzcHGcHIcHEcitaaacHdcHdcHdcHdcHdcHdcHdcHdcHdcHdaafaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYaaactYctYctYctYctYaaactYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaaIaafaafcHncwrcHpaaacHncwrcHpaaacHncwrcHpaafaaaaaaaaaaaaaafaafcKfcIKcIKcIKcIKcKgcKhcKicKicKjcKgcKgcitcitcjGcitcitcitcitcitcHccitcitcitcitcitcjGcitcitcitcitaafcHbcHacHbcHacHbcHacHbcHacHbcHaaaaaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacHncwrcHpaafcHncwrcHpaaacHncwrcHpaaaaaaaaaaafaaaaafaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaaaaaaafaaaaaaaaaaaaaafaafaaaaaaaafaafaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKlcKlcKlcKlcKlcKlcKlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafcHncwrcHpaaacHncwrcHpaaacHncwrcHpaafaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaLaaaaafaafaaaaaaaamaamckBckBckBcGZckBckBaanckBckBaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKlcKlcKlcKlcKlcKlcKlcKlcKlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafcHncwrcHpaaacHncwrcHpaafcHncwrcHpaafaafaafaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaaIaaIbZSbZSaaIaaIaaaaaaaaaaaIaaIaaIaaIaaIaaIaaIaaIaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKlcKlcKlcKlcKlcKlcKlcKlcKlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaafaafaafaafaamaafaafaafcpzcrgcrjcrhcricrbcracqZcqYcqXcqWcqVcqUcrbcnzcrgcrfcrecrdcqXcrccqPcqPcqPcqPcqPcqPcqPcqPcqRcjbcpncqScqIcmQcqQcmQcmQcmPcmQcmQcqfcmQcqIcqzcqKcqJcqMciCcCNcCOcCPcCQcAObPwcCRcCScCTcCacAGcAVcBwcCacGZcGkcHscCYcCXaaaaaaaaaaaaaaaaaacqvcCZctDcuQcDacDbcuQcDccDdcDeaafaaachxchFchEclXaaaaaaaaaaacaaaaaaaaaaaaaaacdOcDhcplcplcomcDicplcplcomcDicplcplcdOaafaafcrPaafckVckSckSckSckSckyckxckwckvckvckvckvckUaafcrPaaacyhcyhcyhcyhaaacyhcyhcyhcyhcyhcyhcyhcyhcyhaaacyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPcsbaaaaaaaaaaamaaaaaaaaacsgcsccsdcsecsfcsicshcsjcsfcsicshcsjcsfcsicsmcsmcsncsjcsfcsicskcqPaaacrocrpcrmcrncrkcrlcrUcrVcgYcgYcrScrTcrQcrRcrZcsacrRcrZcrQceXcrXcrWceXcpncpncAOcDNcDOcDPcDQcAObNUcDRcDScDTcCacCbcDUcCbcCacIbcmWcDfaafaaaaaaaaaaaaaaaaaaaaacqvcCZcDVcDWcDXcDXcDWcsPcDYcqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdOcDZcplcplcomcEacplcplcomcEacplcplcdOaaaaaacrPaafcwjcwjcwjcwjcwjaaackxaaacwjcwjcwjcwjcwjaaacrPaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPcClcqLcqLcqLcpEcpIcpIcpIcqLcpIcpPcpIcpGcpIcpPcpIcpGcpIcpPcpIcpGcpIcqLcpIcpRcpIcpGcpIcqNaafaaaceUcsvcexcswcsxchccrUchbcgYcsycsQcsTcgtcsUcspcsocsrcsqcgtcsscsucJiceXaaaaafcAOcEBcECcEDaafaaabNUbPxbPxbSkcCaclZcEFclYcCaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqvcEHcuXcEIcEJcEJcEIcuQcEKcqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdOcplcplcplcomcELcplcplcomcELcplcplcdOaacaaacrPaaaaaaaafaafaafaaaaaacmTaafaaaaaaaafaafaaaaaacrPaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaafaafaaaaaaaaqaaaaaaaaaaafcfIcsVcsWcsXcfIcsVcsWcsXcfIcsVcsWcsYcfIaaacfIcsZcsWcsYcfIaaaaafaaaceUceyctcchdceyctactectfcgYctdcthcticgtctgctmctlctkctjcgtcttctoctnceXaaaaaacAOcFgcFhcFiaaaaaabNUbPxbPxbNUcCacmUcmUcmUcCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqvcFmcFncuQcuQcuQcuQcuQcFocqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaackEcdOcdOcdOcdOcdOcdOcdOcdOcmYcmYcmYckEaaaaaacrPcrPcrPcrPcrPaaaaaaaaacmZaaaaaaaaacrPcrPcrPbZScrPaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaaaaafaafaaaaamaaaaaaaaaaafcfIcfJcfGcfHcfIcgicfRcfQcfIcfPcfOcfNcfIaafcfIcfMcfLcfKcfIaaaaafaaaceUceWcexceyceyceTcetceucevcewcepceqcercescfDcfCcfFcfEcfjceYcfBcfuceXaafaaacFJcDNcFKcAOcFLaaabNUcFMbPxcFNcFOaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrHcqvcqvcFPcFQcEIcEIcEIcFRcFPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqpbqpbqpaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaafcfTaafcrPaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaamaaaaaaaafaafcfIchkchlchkcfIchichjchicfIchgchhchgcfIaaacfIchgchgchfcfIaaaaafaaaceUchecexchdceychcchachbcgYcgZcgWcgXcgtcgRcgBcgCcgBcgucgtcgrcgpcgoceXaaLcGgcGgcGgcGgcGgcGgcGgbNUciEciDcGjaafaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacGlcEJcEJcEJcEJcEJcGlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaaaaafaaacrPaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaafaamaaaaafaafaaacfIchkchmchkcfIchichnchicfIchgchochgcfIaafcfIchgchgchgcfIaafaafaafcidciecifcigcihcikchpchbcgYcAhchGchHcgtciccimcilciocincgtcipcirciqceXaaacGgcGgcGgcGgcGgcGgcGgcGFcGGcGHbNUaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqvcCmcqxcqxcqxcCocqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPcrPcrPcrPcrPaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbZSaaaaaacfIcfIcfIcfIcfIcfIcfIcfIcfIcfIcfIcfIcfIaaaciscfIcfIcfIcfIaaaaaaaaaaaacjbcjbcjbcjbcjbciycitcitcitcitcjacitciWcivciwcivciucitcitcixcitcitcitcGgcGgcGgcGgcGgcGgcGgaafaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaacyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcrPaaaaaaaafaafaaaaafaafaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaafaaacGQcGRcGRcGRcGScjycjccjdcjecjicjFcjGcjHcjIcjzcjAcstcjEcjNcjMcjPcjOcjKcjQcjJcjLcjQcitcGgcGgcGgcGgcGgcGgcGgaafaaacGQcjRcGQcjRcGQcjRaafckBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafcHncjVcHpaaacHncjVcHpaaacHncjVcHpaafaafaaaaafaafaafaafaafcHqcGRcGRcGRcGScjycjXcjYcjTcjUckzckAcksckuclhcljcldclgckiclcckickickickrckicjZcjScitcGgcGgcGgcGgcGgcGgcGgaafaafcHdcHdcHdcHdcHdcHdaafckBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaacHncjWcHpaaacHncjWcHpaaacHncjWcHpaafaafaaaaafaaaaaacHKaafcGQcGRcGRcGRcGScjycjXckTckWckYckZckAclacltcmscjJcjJcjJcmvcmucmIcjJcjJcltcHicHfcHjcitcitcitcCWaaaaaaaaaaaaaafaaacBkcBkcBkcBkcBkcBkaafckBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafcHncjWcHpaaacHncjWcHpaafcHncjWcHpaafaaaaaaaafaafcIcaaaaafcHqcGRcGRcGRcGScjycmycmBcmwcmxcmEcmFcmCcmDcHxclnclnclncHlclvcHkclnclncHocHmclecHwcHtcFkcHrcmtclmclmclmclmclmclmcHacHbcHacHbcHacHdaafckBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaacHncjWcHpaafcHncjWcHpaaacHncjWcHpaaaaaaaaaaaaaafaafaaaaafaaaaaaaaaaaaaafcHYcIecIdcIacHZcHUcjGckecjJcjJcjJcJhcJdcIRcIScIPcIQcIZclkcHScITcHPcIOcIIcINcmtcllcHJcllcHJcllcHJcllcHJcllcHJcllcHdaafckBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaaIaafaaacHncjWcHpaafcHncjWcHpaaacHncjWcHpaafaaaaaaaaaaaaaafaafcIJcIKcIKcIKcIKcILcILcILcILcILcIMcILcitcHBcjJcjJcjJcIAcitcHHcIEcHFcitcIFcIGcIHclecIBcICcIDcitaaacBkcBkcBkcBkcJncBkcBkcBkcBkcBkcBkcBkaafckBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaafaaaaafaafczCaafaafaafczCaafaaaaafczCaafaaaaaaaaaaaaaaacIUcIVcIWcIXcIYcHCcJacJbcJcciFcJecJfcJgcJecitcIzcIycjJcjJcHNcIwcIxcHAcIfcIwcHRcHLcHmclecHWcHXcHVcitaafcHdcHdcHdcHdcHdcHdcHdcHdcHdcHdcHdcHdaafaanaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafcydcxzcxycxxcxxcxxcxxcxxcxxcxxcxxcxxcxxcxxczicxzcxzcxzcypcJzcJAcJBcJCcJDcJEcJFcJGcJHcJHcJHcJIcJJcJKcitcHMcHMcjJcjJcHNcHOcHgcHucHvcHOcHRcjJcHScHTcHPcjJcHQcitaafcHdcHdcHdcHdcHdcHdcHdcHdcHdcHdcHdcHdaafckBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYaaactYctYctYctYctYaaactYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaafaaaaafaafcxfaafaaaaafcxfaafaaaaafcxfaafaaaaaaaaaaaaaaacIUcIVcJRcJScJTcJUcIKcJVcJWcJecJecJXcJXcJYcitcHMcHMcjJcjJcHNcHycHgcHhcHecHycHDcmGcmHcHzcHGcHIcHEcitaaacBkcBkcBkcBkcJncBkcBkcBkcBkcBkcBkcBkaafaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYaaactYctYctYctYctYaaactYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaaIaafaafcHncwrcHpaaacHncwrcHpaaacHncwrcHpaafaaaaaaaaaaaaaafaafcKfcIKcIKcIKcIKcKgcKhcKicKicKjcKgcKgcitcitcjGcitcitcitcitcitcHccitcitcitcitcitcjGcitcitcitcitaafcHdcHdcHdcHdcHdcHdcHdcHdcHdcHdcHdcHdaafaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacHncwrcHpaafcHncwrcHpaaacHncwrcHpaaaaaaaaaaafaaaaafaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaafaaacJmaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaacHqcJkcHqcJkcJlcJkcHqcJkcHqcJkcHqcJkaafaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKlcKlcKlcKlcKlcKlcKlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafcHncwrcHpaaacHncwrcHpaaacHncwrcHpaafaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaLaaaaaaaaaaafaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKlcKlcKlcKlcKlcKlcKlcKlcKlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafcHncwrcHpaaacHncwrcHpaafcHncwrcHpaafaafaafaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaaIaaIbZSbZSaaIaaIaaaaaaaaaaaIaaIaaIaaIaaIaaqaaIaaIaaIaaIaaIaaIaaIaaIcJjaaIaaIaaIaaIaaqaaIaaIaaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKlcKlcKlcKlcKlcKlcKlcKlcKlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqaafcHncwncHpaaacHncwncHpaaacHncwncHpaafaaIaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKlcKlcKlcKlcKlcKlcKlcKlcKlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaaaaafaaaaaaaaaaafaafaafaaaaaaaafaafaaaaaIaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKncKncKncKncKncKncKnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKlcKlcKlcKlcKlcKlcKlcKlcKlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaaIaamaamaaqaaIaaIaaIaaIaamaaIaaIaamcKoaafaaaaaaaaaaaaaaacKpaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaacHKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKncKncKncKncKncKncKncKncKnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKlcKlcKlcKlcKlcKlcKlcKlcKlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From 512a158d858f3cacdd819a9193b60f5307a1c1cf Mon Sep 17 00:00:00 2001 From: RavingManiac Date: Mon, 16 Feb 2015 00:18:10 +0800 Subject: [PATCH 35/45] Reimplemented TEG after it was overwritten by merge. Also changed names and IDs of some of the blast doors and buttons in the engines. --- maps/exodus-1.dmm | 177 +++++++++++++++++++++++++++------------------- 1 file changed, 103 insertions(+), 74 deletions(-) diff --git a/maps/exodus-1.dmm b/maps/exodus-1.dmm index 0f5fe10507..976678d8e4 100644 --- a/maps/exodus-1.dmm +++ b/maps/exodus-1.dmm @@ -6820,7 +6820,7 @@ "cBh" = (/turf/simulated/floor{dir = 3; icon_state = "whitered"},/area/medical/virology) "cBi" = (/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/hidden/purple,/turf/simulated/floor{dir = 3; icon_state = "whitered"},/area/medical/virology) "cBj" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet,/obj/item/device/radio/intercom{freerange = 1; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 30},/turf/simulated/floor{dir = 3; icon_state = "whitered"},/area/medical/virology) -"cBk" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating/airless,/area/space) +"cBk" = (/obj/structure/table/reinforced,/obj/machinery/door_control{desc = "A remote control-switch for the engine control room blast doors."; id = "EngineBlast"; name = "Engine Monitoring Room Blast Doors"; pixel_x = 0; pixel_y = -3; req_access_txt = "10"},/obj/machinery/door_control{desc = "A remote control-switch for the engine charging port."; id = "SupermatterPort"; name = "Reactor Blast Doors"; pixel_x = -6; pixel_y = 7; req_access_txt = "10"},/obj/machinery/door_control{desc = "A remote control-switch for the engine emitter."; id = "EngineEmitter"; name = "Engine Emitter"; normaldoorcontrol = 2; pixel_x = 6; pixel_y = 7; req_access_txt = "10"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/engineering/engine_monitoring) "cBl" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology) "cBm" = (/obj/machinery/door/window/southright{dir = 1; name = "Containment Pen"; req_access_txt = "47"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/rnd/xenobiology) "cBn" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table/reinforced,/obj/machinery/door_control{id = "xenobio4"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access_txt = "55"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/rnd/xenobiology) @@ -6910,7 +6910,7 @@ "cCT" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 8},/turf/simulated/floor/plating,/area/maintenance/engineering) "cCU" = (/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor,/area/engineering/engine_airlock) "cCV" = (/obj/structure/closet/radiation,/obj/item/clothing/glasses/meson,/obj/item/clothing/glasses/meson,/obj/machinery/camera{c_tag = "Engine Room Airlock"; dir = 2; network = list("SS13","Supermatter")},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor,/area/engineering/engine_airlock) -"cCW" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor/plating/airless,/area/space) +"cCW" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging{tag = "icon-intact (SOUTHWEST)"; icon_state = "intact"; dir = 10},/turf/space,/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) "cCZ" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/green,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) @@ -7009,7 +7009,7 @@ "cEO" = (/obj/machinery/camera{c_tag = "SMES"; dir = 8; network = list("SS13","Supermatter")},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor,/area/engineering/engine_smes) "cEP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor{icon_state = "warningcorner"; dir = 1},/area/engineering/engine_smes) "cEQ" = (/obj/structure/table/reinforced,/obj/machinery/camera{c_tag = "Engine Monitoring Room"; dir = 4; network = list("SS13","Supermatter")},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor,/area/engineering/engine_monitoring) -"cER" = (/obj/structure/table/reinforced,/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 = 0; pixel_y = -3; 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 = -6; pixel_y = 7; req_access_txt = "10"},/obj/machinery/door_control{desc = "A remote control-switch for the engine emitter."; id = "EngineEmitter"; name = "Engine Emitter"; normaldoorcontrol = 2; pixel_x = 6; pixel_y = 7; req_access_txt = "10"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/engineering/engine_monitoring) +"cER" = (/obj/machinery/alarm{breach_detection = 0; dir = 2; frequency = 1439; name = "Engine Room Air Alarm"; pixel_y = 23},/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 10},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engineering/engine_room) "cES" = (/obj/structure/stool/bed/chair/office/dark,/obj/effect/landmark/start{name = "Station Engineer"},/turf/simulated/floor,/area/engineering/engine_monitoring) "cET" = (/obj/structure/table/reinforced,/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor,/area/engineering/engine_monitoring) "cEU" = (/obj/machinery/embedded_controller/radio/airlock/advanced_airlock_controller{id_tag = "engine_room_airlock"; name = "Engine Room Airlock"; pixel_x = -24; tag_airpump = "engine_airlock_pump"; tag_chamber_sensor = "eng_al_c_snsr"; tag_exterior_door = "engine_airlock_exterior"; tag_exterior_sensor = "eng_al_ext_snsr"; tag_interior_door = "engine_airlock_interior"; tag_interior_sensor = "eng_al_int_snsr"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5; icon_state = "intact"; tag = "icon-intact-f (NORTHEAST)"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/engineering/engine_airlock) @@ -7028,7 +7028,7 @@ "cFh" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 6},/area/maintenance/engi_shuttle) "cFi" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) "cFj" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/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,/turf/simulated/floor/plating,/area/engineering/drone_fabrication) -"cFk" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/obj/structure/sign/securearea{desc = "A warning sign which reads 'HOT EXHAUST'."; name = "\improper HOT EXHAUST"; pixel_x = -32},/turf/simulated/floor/plating/airless,/area/space) +"cFk" = (/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/power/smes/buildable{charge = 2e+006; input_attempt = 1; input_level = 100000; output_level = 200000; RCon_tag = "Engine - Core"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/engineering/engine_room) "cFl" = (/obj/machinery/power/smes/buildable{charge = 1e+007; cur_coils = 4; input_attempt = 1; input_level = 500000; output_level = 500000; RCon_tag = "Engine - Main"},/obj/structure/cable,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/engineering/engine_smes) "cFm" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/green,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cFn" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) @@ -7071,16 +7071,16 @@ "cFY" = (/obj/machinery/light{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/obj/machinery/atmospherics/binary/pump{dir = 8},/turf/simulated/floor/plating,/area/engineering/engine_room) "cFZ" = (/obj/machinery/door_control{desc = "A remote control-switch for the engine control room blast doors."; id = "EngineEmitterPortWest"; name = "Engine Room Blast Doors"; pixel_x = 0; pixel_y = 25; req_access_txt = "10"},/obj/machinery/atmospherics/portables_connector{dir = 4},/turf/simulated/floor/plating{icon_state = "platebot"},/area/engineering/engine_room) "cGa" = (/obj/machinery/power/terminal{dir = 4},/obj/structure/cable/yellow,/obj/machinery/power/sensor{name = "Powernet Sensor - Engine Output"; name_tag = "Engine Output"},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/engineering/engine_room) -"cGb" = (/obj/machinery/alarm{breach_detection = 0; dir = 2; frequency = 1439; name = "Engine Room Air Alarm"; pixel_y = 23},/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 10},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engineering/engine_room) +"cGb" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/engineering/engine_room) "cGc" = (/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engineering/engine_room) -"cGd" = (/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/power/smes/buildable{charge = 2e+006; RCon_tag = "Engine - Core"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/engineering/engine_room) +"cGd" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/engineering/engine_room) "cGe" = (/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/engineering/engine_room) "cGf" = (/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/plating,/area/engineering/engine_room) "cGg" = (/turf/space,/area/shuttle/constructionsite/station) "cGh" = (/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/engineering/engine_room) "cGi" = (/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/plating,/area/engineering/engine_room) "cGj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/engineering) -"cGk" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 32; pixel_y = 0},/turf/space,/area/space) +"cGk" = (/obj/machinery/atmospherics/binary/pump,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/engineering/engine_room) "cGl" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/medical/virology) "cGm" = (/turf/simulated/floor/plating,/area/engineering/engine_room) "cGn" = (/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/engineering/engine_room) @@ -7094,11 +7094,11 @@ "cGv" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/window/brigdoor{dir = 8; name = "Engine Waste"; req_access = null; req_access_txt = "0"; req_one_access_txt = "10;24"},/obj/machinery/atmospherics/portables_connector,/turf/simulated/floor/plating{icon_state = "platebot"},/area/engineering/engine_waste) "cGw" = (/obj/machinery/atmospherics/omni/filter{use_power = 0; tag_east = 1; tag_north = 0; tag_south = 4; tag_west = 2},/turf/simulated/floor/plating,/area/engineering/engine_room) "cGx" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 6},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engineering/engine_room) -"cGy" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/engineering/engine_room) -"cGz" = (/obj/machinery/atmospherics/pipe/manifold/visible/yellow{dir = 4},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplatecorner"},/area/engineering/engine_room) +"cGy" = (/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cGz" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/engineering/engine_room) "cGA" = (/turf/simulated/floor/plating{dir = 4; icon_state = "warnplatecorner"},/area/engineering/engine_room) -"cGB" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/engineering/engine_room) -"cGC" = (/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cGB" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{dir = 4; icon_state = "warnplatecorner"},/area/engineering/engine_room) +"cGC" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan{tag = "icon-map (EAST)"; icon_state = "map"; dir = 4},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplatecorner"},/area/engineering/engine_room) "cGD" = (/obj/machinery/atmospherics/binary/pump,/turf/simulated/floor/plating,/area/engineering/engine_room) "cGE" = (/obj/machinery/atmospherics/unary/heat_exchanger{dir = 8},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/engineering/engine_waste) "cGF" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_y = 0},/turf/simulated/wall,/area/maintenance/engineering) @@ -7107,16 +7107,16 @@ "cGI" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/visible/purple{dir = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engineering/engine_waste) "cGJ" = (/obj/machinery/atmospherics/unary/heat_exchanger{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 5},/area/engineering/engine_waste) "cGK" = (/obj/machinery/door/window/brigdoor{dir = 8; name = "Engine Waste"; req_access = null; req_access_txt = "0"; req_one_access_txt = "10;24"},/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 9},/turf/simulated/floor/plating{icon_state = "platebot"},/area/engineering/engine_waste) -"cGL" = (/obj/machinery/atmospherics/pipe/manifold/visible/yellow{dir = 8},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cGL" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/engineering/engine_room) "cGM" = (/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engineering/engine_room) "cGN" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/engineering/engine_room) -"cGO" = (/obj/machinery/atmospherics/pipe/manifold/visible/yellow{dir = 4},/obj/machinery/meter,/turf/simulated/floor/plating,/area/engineering/engine_room) -"cGP" = (/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/valve/digital/open{dir = 4},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/engineering/engine_room) +"cGO" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging,/turf/space,/area/space) +"cGP" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan{dir = 8},/turf/simulated/floor/plating,/area/engineering/engine_room) "cGQ" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging{dir = 6},/turf/space,/area/space) "cGR" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging{dir = 4},/turf/space,/area/space) "cGS" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction{dir = 8},/obj/structure/lattice,/obj/structure/grille,/turf/space,/area/space) -"cGT" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 6},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplatecorner"},/area/engineering/engine_room) -"cGU" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{tag = "icon-intact (SOUTHWEST)"; icon_state = "intact"; dir = 10},/turf/simulated/floor/plating{dir = 1; icon_state = "warnplatecorner"},/area/engineering/engine_room) +"cGT" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/manifold/visible/cyan{tag = "icon-map (EAST)"; icon_state = "map"; dir = 4},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cGU" = (/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact (EAST)"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/engineering/engine_room) "cGV" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/turf/simulated/floor/plating,/area/engineering/engine_room) "cGW" = (/obj/structure/grille,/obj/structure/grille,/turf/space,/area/space) "cGX" = (/obj/machinery/atmospherics/unary/heat_exchanger{dir = 8},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 10},/area/engineering/engine_waste) @@ -7127,16 +7127,16 @@ "cHc" = (/obj/machinery/door/window/brigdoor{dir = 8; name = "Engine Waste"; req_access = null; req_access_txt = "0"; req_one_access_txt = "10;24"},/obj/structure/window/reinforced,/obj/machinery/atmospherics/binary/pump{dir = 8; name = "waste pump"},/turf/simulated/floor/plating{icon_state = "platebot"},/area/engineering/engine_waste) "cHd" = (/obj/machinery/atmospherics/omni/filter{use_power = 0; tag_east = 1; tag_north = 4; tag_south = 0; tag_west = 2},/turf/simulated/floor/plating,/area/engineering/engine_room) "cHe" = (/obj/machinery/atmospherics/pipe/manifold/visible/purple,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engineering/engine_room) -"cHf" = (/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/engineering/engine_room) +"cHf" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{tag = "icon-intact (SOUTHEAST)"; icon_state = "intact"; dir = 6},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplatecorner"},/area/engineering/engine_room) "cHg" = (/obj/machinery/atmospherics/pipe/manifold/visible/yellow,/turf/simulated/floor/plating,/area/engineering/engine_room) "cHh" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/turf/simulated/floor/plating,/area/engineering/engine_room) "cHi" = (/obj/machinery/power/emitter{anchored = 1; id = "EngineEmitter"; state = 2},/obj/structure/cable/cyan,/turf/simulated/floor/plating,/area/engineering/engine_room) -"cHj" = (/obj/machinery/atmospherics/pipe/manifold/visible/yellow{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engineering/engine_room) +"cHj" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 10},/turf/simulated/floor/plating{dir = 1; icon_state = "warnplatecorner"},/area/engineering/engine_room) "cHk" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact (EAST)"},/turf/simulated/floor/plating,/area/engineering/engine_room) -"cHl" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan{dir = 8},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engineering/engine_room) -"cHm" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact (EAST)"},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "EngineRadiatorViewport"; name = "Engine Radiator Viewport Shutter"; opacity = 0},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cHl" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/visible/green{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cHm" = (/obj/machinery/atmospherics/valve/digital{dir = 4; name = "Emergency Cooling Valve 1"},/turf/simulated/floor/plating,/area/engineering/engine_room) "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) -"cHo" = (/obj/machinery/atmospherics/pipe/manifold4w/visible/cyan,/obj/machinery/meter,/turf/simulated/floor/plating,/area/engineering/engine_room) +"cHo" = (/obj/machinery/atmospherics/pipe/manifold/visible/green{tag = "icon-map (EAST)"; icon_state = "map"; dir = 4},/turf/simulated/floor/plating,/area/engineering/engine_room) "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) "cHq" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging{dir = 5},/turf/space,/area/space) "cHr" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/heat_exchanging{dir = 4},/turf/space,/area/space) @@ -7148,71 +7148,100 @@ "cHx" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplatecorner"},/area/engineering/engine_waste) "cHy" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/plating,/area/engineering/engine_waste) "cHz" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/engineering/engine_waste) -"cHA" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/engineering/engine_room) -"cHB" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplatecorner"},/area/engineering/engine_room) -"cHC" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/engineering/engine_room) -"cHD" = (/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/engineering/engine_room) -"cHE" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/engineering/engine_room) -"cHF" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/visible/yellow,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 6},/area/engineering/engine_room) -"cHG" = (/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/engineering/engine_room) -"cHH" = (/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/engineering/engine_room) -"cHI" = (/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/engineering/engine_room) -"cHJ" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating{dir = 1; icon_state = "warnplatecorner"},/area/engineering/engine_room) +"cHA" = (/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) +"cHB" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engineering/engine_room) +"cHC" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan{tag = "icon-map (EAST)"; icon_state = "map"; dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engineering/engine_room) +"cHD" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 10},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cHE" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/manifold4w/visible/cyan,/turf/simulated/floor/plating,/area/engineering/engine_room) +"cHF" = (/obj/structure/grille,/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 = "EngineRadiatorViewport"; name = "Engine Radiator Viewport Shutter"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/visible/green{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cHG" = (/obj/machinery/atmospherics/binary/pump/high_power{dir = 8},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cHH" = (/obj/machinery/atmospherics/pipe/manifold/visible/green{dir = 1},/obj/machinery/meter,/turf/simulated/floor/plating,/area/engineering/engine_room) +"cHI" = (/obj/machinery/atmospherics/pipe/manifold/visible/green{dir = 8},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cHJ" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan,/turf/simulated/floor/plating,/area/engineering/engine_room) "cHK" = (/obj/item/stack/rods{amount = 10},/turf/space,/area/space) -"cHL" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact (EAST)"},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "EngineRadiatorViewport"; name = "Engine Radiator Viewport Shutter"; opacity = 0},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/engineering/engine_room) +"cHL" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating/airless,/area/space) "cHM" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/turf/simulated/floor/plating,/area/engineering/engine_room) "cHN" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/heat_exchanging{dir = 6},/turf/space,/area/space) "cHO" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/heat_exchanging,/turf/space,/area/space) -"cHP" = (/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/engineering/engine_room) -"cHQ" = (/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},/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "EngineEmitterPort"; layer = 3.3; name = "Engine Blast Doors"},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cHP" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating/airless,/area/space) +"cHQ" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plating/airless,/area/maintenance/medbay) "cHR" = (/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/engineering/engine_room) "cHS" = (/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/engineering/engine_room) -"cHT" = (/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/engineering/engine_room) -"cHU" = (/obj/machinery/door_control{desc = "A remote control-switch for the engine radiator viewport shutters."; id = "EngineRadiatorViewport"; name = "Engine Radiator Viewport Shutters"; pixel_x = 25; pixel_y = 0; req_access_txt = "10"},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cHT" = (/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/obj/structure/sign/securearea{desc = "A warning sign which reads 'HOT EXHAUST'."; name = "\improper HOT EXHAUST"; pixel_x = -32},/turf/simulated/floor/plating/airless,/area/space) +"cHU" = (/obj/effect/landmark{name = "carpspawn"},/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/structure/lattice,/turf/space,/area/space) "cHV" = (/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/obj/machinery/power/smes/buildable{charge = 0; RCon_tag = "Solar - Aft Port"},/turf/simulated/floor/plating,/area/maintenance/portsolar) "cHW" = (/obj/machinery/light{dir = 8},/turf/simulated/floor/plating,/area/engineering/engine_room) -"cHX" = (/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "EngineRads"; layer = 3.3; name = "Engine Radiation Collector Access"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/engineering/engine_room) -"cHY" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engineering/engine_room) -"cHZ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/engineering/engine_room) -"cIa" = (/obj/machinery/power/rad_collector,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/engineering/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) +"cHX" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/space,/area/space) +"cHY" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging{dir = 5},/obj/structure/lattice,/turf/space,/area/space) +"cHZ" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EJECTION/VENTING PORT'."; name = "\improper EJECTION/VENTING PORT"; pixel_y = 32},/turf/space,/area/space) +"cIa" = (/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "EngineVent"; name = "Reactor Vent"; p_open = 0},/turf/simulated/floor/engine,/area/engineering/engine_room) +"cIb" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging,/obj/structure/lattice,/turf/space,/area/space) "cIc" = (/obj/item/stack/cable_coil,/turf/space,/area/space) "cId" = (/obj/machinery/air_sensor{frequency = 1438; id_tag = "engine_sensor"; output = 63},/turf/simulated/floor/engine/nitrogen{icon_state = "warnplate"; name = "plating"},/area/engineering/engine_room) -"cIe" = (/obj/machinery/atmospherics/unary/vent_pump/engine{dir = 1; external_pressure_bound = 100; external_pressure_bound_default = 0; frequency = 1438; icon_state = "map_vent_in"; id_tag = "cooling_out"; initialize_directions = 1; use_power = 1; pressure_checks = 1; pressure_checks_default = 1; pump_direction = 0},/turf/simulated/floor/engine/nitrogen{icon_state = "warnplatecorner"; name = "plating"},/area/engineering/engine_room) -"cIf" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 1; frequency = 1438; icon_state = "map_injector"; id = "cooling_in"; name = "Coolant Injector"; use_power = 1; pixel_y = 1; volume_rate = 700},/turf/simulated/floor/engine/nitrogen{dir = 1; icon_state = "warnplatecorner"; name = "plating"},/area/engineering/engine_room) -"cIg" = (/obj/machinery/power/rad_collector,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/engineering/engine_room) -"cIh" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engineering/engine_room) -"cIi" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/plating,/area/engineering/engine_room) -"cIj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cIe" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "SupermatterPort"; layer = 3.3; name = "Reactor Blast Door"},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cIf" = (/obj/machinery/atmospherics/valve/digital{dir = 4; name = "Emergency Cooling Valve 2"},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cIg" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engineering/engine_room) +"cIh" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 9},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cIi" = (/obj/machinery/atmospherics/pipe/manifold/visible/purple,/turf/simulated/floor/plating,/area/engineering/engine_room) +"cIj" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/turf/simulated/floor/plating,/area/engineering/engine_room) "cIk" = (/obj/machinery/power/supermatter{layer = 4},/obj/machinery/mass_driver{id = "enginecore"},/turf/simulated/floor/engine/nitrogen{icon_state = "gcircuit"; name = "floor"},/area/engineering/engine_room) "cIl" = (/turf/simulated/floor/engine/nitrogen{dir = 4; icon_state = "warnplate"; name = "plating"},/area/engineering/engine_room) "cIm" = (/turf/simulated/floor/engine/nitrogen{dir = 8; icon_state = "warnplate"; name = "plating"},/area/engineering/engine_room) -"cIn" = (/obj/machinery/door_control{id = "EngineVent"; name = "Engine Ventillatory Control"; pixel_x = -25; pixel_y = 0; req_access_txt = "10"},/turf/simulated/floor/plating,/area/engineering/engine_room) -"cIo" = (/obj/machinery/door_control{desc = "A remote control-switch for opening the engines blast doors."; id = "EngineRads"; name = "Radiation Collector Access"; pixel_x = 0; pixel_y = -25; req_access_txt = "10"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engineering/engine_room) -"cIp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/engineering/engine_room) +"cIn" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/turf/simulated/floor/plating{icon_state = "platebot"},/area/engineering/engine_room) +"cIo" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engineering/engine_room) +"cIp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "SupermatterPort"; layer = 3.3; name = "Reactor Blast Door"},/turf/simulated/floor/plating,/area/engineering/engine_room) "cIq" = (/turf/simulated/floor/engine/nitrogen,/area/engineering/engine_room) "cIr" = (/obj/machinery/camera{c_tag = "Engineering Core South"; dir = 1; network = list("SS13","Supermatter")},/turf/simulated/floor/engine/nitrogen{dir = 8; icon_state = "warnplate"; name = "plating"},/area/engineering/engine_room) -"cIs" = (/obj/machinery/door_control{desc = "A remote control-switch for opening the engines blast doors."; id = "EngineRads"; name = "Radiation Collector Access"; pixel_x = 0; pixel_y = -25; req_access_txt = "10"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engineering/engine_room) -"cIt" = (/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "EngineVent"; name = "Engine Core Vent"; p_open = 0},/turf/simulated/floor/engine,/area/engineering/engine_room) +"cIs" = (/obj/machinery/atmospherics/binary/circulator{anchored = 1},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cIt" = (/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/floor/plating,/area/engineering/engine_room) "cIu" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/heat_exchanging{dir = 5},/turf/space,/area/space) "cIv" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/heat_exchanging{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/space,/area/space) -"cIw" = (/obj/effect/landmark{name = "carpspawn"},/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/space,/area/space) +"cIw" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engineering/engine_room) "cIx" = (/obj/effect/landmark{name = "JoinLateCyborg"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engineering/drone_fabrication) +"cIy" = (/obj/machinery/atmospherics/binary/circulator{anchored = 1; dir = 1},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cIz" = (/obj/machinery/power/generator{anchored = 1; dir = 4},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/engineering/engine_room) +"cIA" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/floor/plating,/area/engineering/engine_room) +"cIB" = (/obj/machinery/atmospherics/pipe/simple/visible/green{tag = "icon-intact (SOUTHEAST)"; icon_state = "intact"; dir = 6},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cIC" = (/obj/machinery/atmospherics/pipe/simple/visible/green{dir = 9; icon_state = "intact"; tag = "icon-intact (SOUTHEAST)"},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cID" = (/obj/machinery/atmospherics/unary/vent_pump/engine{dir = 1; external_pressure_bound = 100; external_pressure_bound_default = 0; frequency = 1438; icon_state = "map_vent_in"; id_tag = "cooling_out"; initialize_directions = 1; use_power = 1; pressure_checks = 1; pressure_checks_default = 1; pump_direction = 0},/turf/simulated/floor/engine/nitrogen{dir = 1; icon_state = "warnplatecorner"; name = "plating"},/area/engineering/engine_room) +"cIE" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "SupermatterPort"; layer = 3.3; name = "Reactor Blast Door"},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cIF" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 1; frequency = 1438; icon_state = "map_injector"; id = "cooling_in"; name = "Coolant Injector"; pixel_y = 1; power_rating = 30000; use_power = 1; volume_rate = 700},/turf/simulated/floor/engine/nitrogen{icon_state = "warnplatecorner"; name = "plating"},/area/engineering/engine_room) +"cIG" = (/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/engineering/engine_room) +"cIH" = (/obj/machinery/door_control{id = "EngineVent"; name = "Reactor Ventillatory Control"; pixel_x = -25; pixel_y = 0; req_access_txt = "10"},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/engineering/engine_room) +"cII" = (/obj/machinery/camera{c_tag = "Engineering Core West"; dir = 8; network = list("SS13","Supermatter")},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engineering/engine_room) "cIJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/maintenance/portsolar) "cIK" = (/turf/simulated/wall/r_wall,/area/maintenance/portsolar) "cIL" = (/turf/simulated/wall/r_wall,/area/maintenance/engi_engine) "cIM" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/maintenance{name = "Engine Waste Handling"; req_one_access_txt = "10;24"},/turf/simulated/floor/plating,/area/maintenance/engi_engine) +"cIN" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 5},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cIO" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/green,/turf/simulated/floor/plating,/area/engineering/engine_room) +"cIP" = (/obj/machinery/door_control{desc = "A remote control-switch for the engine radiator viewport shutters."; id = "EngineRadiatorViewport"; name = "Engine Radiator Viewport Shutters"; pixel_x = 25; pixel_y = 0; req_access_txt = "10"},/obj/machinery/atmospherics/pipe/manifold/visible/purple{dir = 4},/obj/machinery/meter,/turf/simulated/floor/plating,/area/engineering/engine_room) +"cIQ" = (/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},/obj/machinery/door/blast/regular{dir = 8; icon_state = "pdoor1"; id = "SupermatterPort"; layer = 3.3; name = "Reactor Blast Door"},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cIR" = (/obj/machinery/camera{c_tag = "Engineering Core East"; dir = 4; network = list("SS13","Supermatter")},/obj/machinery/atmospherics/pipe/manifold/visible/yellow{dir = 8},/obj/machinery/meter,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engineering/engine_room) +"cIS" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/turf/simulated/floor/plating,/area/engineering/engine_room) +"cIT" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 9},/turf/simulated/floor/plating,/area/engineering/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) "cIX" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = -32; pixel_y = 0},/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/canister/air/airlock,/turf/simulated/floor/plating{dir = 1; icon_state = "warnplatecorner"},/area/maintenance/portsolar) "cIY" = (/obj/machinery/power/terminal{dir = 4},/obj/machinery/light/small{dir = 1},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/maintenance/portsolar) +"cIZ" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 6},/turf/simulated/floor/plating,/area/engineering/engine_room) "cJa" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 0},/turf/simulated/wall/r_wall,/area/maintenance/portsolar) "cJb" = (/obj/structure/closet/wardrobe/black,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating{dir = 1; icon_state = "warnplatecorner"},/area/maintenance/engi_engine) "cJc" = (/obj/structure/closet/crate,/obj/item/device/multitool,/obj/item/device/multitool,/obj/item/device/assembly/prox_sensor,/obj/item/device/flashlight,/turf/simulated/floor/plating,/area/maintenance/engi_engine) +"cJd" = (/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 = "EngineRadiatorViewport"; name = "Engine Radiator Viewport Shutter"; opacity = 0},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/visible/green{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor/plating,/area/engineering/engine_room) "cJe" = (/turf/simulated/floor/plating,/area/maintenance/engi_engine) "cJf" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/maintenance/engi_engine) "cJg" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/engi_engine) +"cJh" = (/obj/machinery/atmospherics/pipe/simple/visible/green,/turf/simulated/floor/plating,/area/engineering/engine_room) +"cJi" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 6},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 10},/area/engineering/engine_room) +"cJj" = (/obj/machinery/door_control{desc = "A remote control-switch for the engine control room blast doors."; id = "EngineBlast"; name = "Engine Monitoring 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 = "SupermatterPort"; name = "Reactor Blast Doors"; pixel_x = -5; pixel_y = -25; req_access_txt = "10"},/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/engineering/engine_room) +"cJk" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 6},/area/engineering/engine_room) +"cJl" = (/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/engineering/engine_room) +"cJm" = (/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/machinery/power/generator{anchored = 1; dir = 4},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/engineering/engine_room) +"cJn" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 10},/turf/simulated/floor/plating{dir = 1; icon_state = "warnplatecorner"},/area/engineering/engine_room) +"cJo" = (/obj/machinery/light,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/engineering/engine_room) +"cJp" = (/turf/simulated/floor/plating{dir = 2; icon_state = "warnplatecorner"},/area/engineering/engine_room) "cJz" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "robotics_solar_outer"; locked = 1; name = "Engineering External Access"; req_access = null; req_access_txt = "10;13"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/portsolar) "cJA" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "robotics_solar_pump"},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "robotics_solar_pump"; tag_exterior_door = "robotics_solar_outer"; frequency = 1379; id_tag = "robotics_solar_airlock"; tag_interior_door = "robotics_solar_inner"; layer = 3.3; pixel_x = 0; pixel_y = -25; req_access_txt = "13"; tag_chamber_sensor = "robotics_solar_sensor"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "robotics_solar_sensor"; layer = 3.3; pixel_x = 12; pixel_y = -25},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/warning_stripes,/turf/simulated/floor/plating,/area/maintenance/portsolar) "cJB" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "robotics_solar_inner"; locked = 1; name = "Engineering External Access"; req_access = null; req_access_txt = "13"},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/portsolar) @@ -7427,27 +7456,27 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafaaaaaaaaacoUcptcqzcptcptcptcvIcptcptcptcvIcptcptcptcptcptcqIcptcxscptcyicvqcptcptcyjcwmcykcylcvvcymcvvcvvcxAcyocyncyqcxDcoIcwxcoIcnzcyscyrcyucytcyvcoPcnzczIczJczJczKczLczMczNczOcvNcxNczPczQcxNczRczSczTcvNczUczVcrGaaaaaaaaaaaaaaaaaacqvczWcuMczXcuVczYczZcAactFcAbcAccsPcyXczWcAdcAecqvaaaaaaaaaaaackEcdOcAfcAgcAgcywcAicAjcAkcAlcAmcAncAocApcAqcokcAraaaaaacrPaafcwjcwjcwjcwjcwjaaackxaafcwjcwjcwjcwjcwjaaacrPaaacyhaaaaaacyhaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaacyhaaaaaacyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaacyxcptcqzcptcyycrjcricrjcyzcrjcricrjcyzcrjcrjcrjcyAcyBcyAcrmcyCcykcyDcyFcyEcyHcyGcyIcvvcyKcyJcvvcvvcvvcvvcvvcyLcngczecngcnzcnzcnzcnzcnzcnzcnzcnzcALczJczJcAMcANcAObPxcAPcvNcAQcARczfcATcAUcAVcAWcvNcAXcAYcrGaaaaaaaaaaaaaaaaaacqvcuQcAZcAectFcBacBbcBcctFcBdcBecBfcBgcBhcBicBjcqvaafaafaaaaaaaaaaaabquaaacdOcBlcBmcBncBocBpcBmcBqcBrcBpcBmcBscdOaaaaaabZSaaaaafaaaaafaaaaafaaackxaaaaafaaaaafaafaafaafcrPaaacyhcyhcyhcyhaaacyhcyhcyhcyhcyhcyhcyhcyhcyhaaacyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIvaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabZSaaaaaaaaaaaaaamaaaaaaaaaczgcptcqzcptcxscxtcqzcptcxscxtcqzcptcxscxtcptcptcxrcptcxscxtczhczkczjczmczlczocznczpcvvczrczqcztczsczuctuczwczvctuczxctuczycuaczzczBczAczAczDczEcBVcBWcBWcBXcBYcAObPxcBZcvNcvNcCacCbcCccCbcCacCdcvNcrGcCecrGaaaaaaaaaaaaaaaaaacqvctFcCfcuVctFcCgcChcCictFcCjcCkcqycgvcCmcCncCocrHaaaaaaaaaaaaaaaaaacgwaafcdOcCqcluclUcomclsclpclqcomcloclVclWcdOaaaaaacrPaaactXctXctXctXctXaafckxaafctXctXctXctXctXaafcrPaaacyhcyhcyhcyhaaacyhcyhcyhcyhcyhcyhcyhcyhcyhaaacyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaafaafaafaafaamaafaafaafczgczGczFcAhczHcAucAtcAwcAvcAycAxcAAcAzcAucptczGcABcADcACcAycAEcmMcmMcmMcmMcmMcmMcmMcmMcAHcAFcyLcAIcAJcoIcAKcoIcoIcwxcoIcoIcAScoIcAJcBtcBvcBucBxciCcCNcCOcCPcCQcAObPwcCRcCScCTcCacAGcAVcBwcCacCWaafcCXcCYcCXaaaaaaaaaaaaaaaaaacqvcCZctDcuQcDacDbcuQcDccDdcDeaafaaachxchFchEclXaaaaaaaaaaacaaaaaaaaaaaaaaacdOcDhcplcplcomcDicplcplcomcDicplcplcdOaafaafcrPaafckVckSckSckSckSckyckxckwckvckvckvckvckUaafcrPaaacyhcyhcyhcyhaaacyhcyhcyhcyhcyhcyhcyhcyhcyhaaacyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPcByaaaaaaaaaaamaaaaaaaaacBzcBBcBAcBDcBCcBFcBEcBGcBCcBFcBEcBGcBCcBFcBHcBHcBIcBGcBCcBFcBJcmMaaacBLcBKcBNcBMcBPcBOcBRcBQcBScBScBUcBTcCrcCpcCtcCscCpcCtcCrcCucCwcCvcCucyLcyLcAOcDNcDOcDPcDQcAObNUcDRcDScDTcCacCbcDUcCbcCacCWaafaaaaafaaaaaaaaaaaaaaaaaaaaacqvcCZcDVcDWcDXcDXcDWcsPcDYcqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdOcDZcplcplcomcEacplcplcomcEacplcplcdOaaaaaacrPaafcwjcwjcwjcwjcwjaaackxaaacwjcwjcwjcwjcwjaaacrPaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPcClcqLcqLcqLcpEcpIcpIcpIcqLcpIcpPcpIcpGcpIcpPcpIcpGcpIcpPcpIcpGcpIcqLcpIcpRcpIcpGcpIcqNaafaaacCycCxcCAcCzcCCcCBcBRcCDcBScCEcCGcCFcCIcCHcCKcCJcCMcCLcCIcCUcDgcCVcCuaaaaafcAOcEBcECcEDaafaaabNUbPxbPxbSkcCaclZcEFclYcCacCWaafaafaaaaaaaaaaaaaaaaaaaaaaaacqvcEHcuXcEIcEJcEJcEIcuQcEKcqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdOcplcplcplcomcELcplcplcomcELcplcplcdOaacaaacrPaaaaaaaafaafaafaaaaaacmTaafaaaaaaaafaafaaaaaacrPaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaafaafaaaaaaaaqaaaaaaaaaaafcfQcldclccDjcfQcldclccDjcfQcldclccDkcfQaaacfQcDlclccDkcfQaaaaafaaacCycEdcDocDncDmcDpcDrcDqcBScDscDucDtcCIcDvcDxcDwcDzcDycCIcDAcDCcDBcCuaaaaaacAOcFgcFhcFiaaaaaabNUbPxbPxbNUcCacmUcmUcmUcCacFkcmWaaaaaaaaaaaaaaaaaaaaaaaaaaacqvcFmcFncuQcuQcuQcuQcuQcFocqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaackEcdOcdOcdOcdOcdOcdOcdOcdOcmYcmYcmYckEaaaaaacrPcrPcrPcrPcrPaaaaaaaaacmZaaaaaaaaacrPcrPcrPbZScrPaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaaaaafaafaaaaamaaaaaaaaaaafcfQcDDcDFcDEcfQcDGcDIcDHcfQcDJcDLcDKcfQaafcfQcDMcEccEbcfQaaaaafaaacCycEGcCAcDmcDmcEecEgcEfcEicEhcEkcEjcEmcElcEocEncEqcEpcEscErcEucEtcCuaafaaacFJcDNcFKcAOcFLaaabNUcFMbPxcFNcFOaafaafaafaaacBkaafaafaaaaaaaaaaaaaaaaaaaaaaaacrHcqvcqvcFPcFQcEIcEIcEIcFRcFPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqpbqpbqpaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaafcfTaafcrPaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaamaaaaaaaafaafcfQcEvcEwcEvcfQcExcEycExcfQcEzcEAcEzcfQaaacfQcEzcEzcEEcfQaaaaafaaacCycBKcIxcDncDmcCBcEMcCDcBScENcEPcEOcCIcEQcEScERcEScETcCIcEUcEWcEVcCuaaLcGgcGgcGgcGgcGgcGgcGgbNUciEciDcGjaafaaaaaaaafcGkcDfaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacGlcEJcEJcEJcEJcEJcGlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaaaaafaaacrPaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaafaamaaaaafaafaaacfQcEvcEXcEvcfQcExcEYcExcfQcEzcEZcEzcfQaafcfQcEzcEzcEzcfQaafaafaafcFbcFacFdcFccFfcFecFjcCDcBScFlcFqcFpcCIcFrcFtcFscFvcFucCIcFwcFycFxcCuaaacGgcGgcGgcGgcGgcGgcGgcGFcGGcGHbNUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqvcCmcqxcqxcqxcCocqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPcrPcrPcrPcrPaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbZSaaaaaacfQcfQcfQcfQcfQcfQcfQcfQcfQcfQcfQcfQcfQaaacFzcfQcfQcfQcfQaaaaaaaaaaaacAFcAFcAFcAFcAFcFBcFAcFAcFAcFAcFCcFAcFDcFFcFEcFFcFGcFAcFAcFHcFAcFAcFAcGgcGgcGgcGgcGgcGgcGgaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaacyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcrPaaaaaaaafaafaaaaafaafaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaafaaacGQcGRcGRcGRcGScFIcFTcFScFVcFUcFXcFWcFZcFYcGbcGacGdcGccGfcGecGicGhcGncGmcGmcGocGpcFAcGgcGgcGgcGgcGgcGgcGgaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafcHncjVcHpaaacHncjVcHpaaacHncjVcHpaafaafaaaaafaafaafaafaafcHqcGRcGRcGRcGScFIcGrcGqcGtcGscGvcGucGxcGwcGzcGycGBcGAcGmcGCcGmcGmcGmcGmcGmcGmcGDcFAcGgcGgcGgcGgcGgcGgcGgaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaacHncjWcHpaaacHncjWcHpaaacHncjWcHpaafaafaaaaafaaaaaacHKaafcGQcGRcGRcGRcGScFIcGrcGEcGJcGIcGKcGucGMcGLcGOcGNcGmcGmcGTcGPcGUcGmcGmcGmcGmcGmcGVcFAcIbaafaaIaafaafaafaafaafaafaafaafaafcGWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafcHncjWcHpaaacHncjWcHpaafcHncjWcHpaafaaaaaaaafaafcIcaaaaafcHqcGRcGRcGRcGScFIcGYcGXcHacGZcHccHbcHecHdcHgcHfcHhcHhcHjcHicHlcHkcHkcHkcHkcHkcHocHmcHscHrcHrcHrcHrcHrcHrcHrcHrcHrcHtaaacGWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaacHncjWcHpaafcHncjWcHpaaacHncjWcHpaaaaaaaaaaaaaafaafaaaaafaaaaaaaaaaaaaafcHucHwcHvcHycHxcHzcFWcGAcGmcHBcHAcHDcHCcHFcHEcHHcHGcHDcHIcHJcGmcHMcHLcHscHtcHNcHtcHNcHtcHNcHtcHNcHtcHOaafcGWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaaIaafaaacHncjWcHpaafcHncjWcHpaaacHncjWcHpaafaaaaaaaaaaaaaafaafcIJcIKcIKcIKcIKcILcILcILcILcILcIMcILcFAcGmcGmcHPcFAcFAcFAcHRcHQcHScFAcFAcFAcHTcGmcHUcFAaaacHOcHOcHOcHOcHOcHOcHOcHOcHOcHOaafcGWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaafaaaaafaafczCaafaafaafczCaafaaaaafczCaafaaaaaaaaaaaaaaacIUcIVcIWcIXcIYcHVcJacJbcJcciFcJecJfcJgcJecFAcHWcGmcHYcHXcIacHZcIecIdcIfcHZcIgcHXcIhcGmcIicFAaaacHOcHOcHOcHOcHOcHOcHOcHOcHOcHOaaaaanaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafcydcxzcxycxxcxxcxxcxxcxxcxxcxxcxxcxxcxxcxxczicxzcxzcxzcypcJzcJAcJBcJCcJDcJEcJFcJGcJHcJHcJHcJIcJJcJKcFAcGmcGmcHYcHXcIacIjcIlcIkcImcIjcIgcHXcIhcGmcGmcFAaaacHOcHOcHOcHOcHOcHOcHOcHOcHOcHOaafcGWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYaaactYctYctYctYctYaaactYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaafaaaaafaafcxfaafaaaaafcxfaafaaaaafcxfaafaaaaaaaaaaaaaaacIUcIVcJRcJScJTcJUcIKcJVcJWcJecJecJXcJXcJYcFAcIncGmcIocHXcIacIpcIlcIqcIrcIpcIgcHXcIscGmcGmcFAaaacHOcHOcHOcHOcHOcHOcHOcHOcHOcHOaafaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYaaactYctYctYctYctYaaactYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaaIaafaafcHncwrcHpaaacHncwrcHpaaacHncwrcHpaafaaaaaaaaaaaaaafaafcKfcIKcIKcIKcIKcKgcKhcKicKicKjcKgcKgcFAcFAcFWcFAcFAcFAcFAcFAcItcFAcFAcFAcFAcFAcFWcFAcFAaafcIucIvcIucIvcIucIvcIucIvcIucIvaaaaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacHncwrcHpaafcHncwrcHpaaacHncwrcHpaaaaaaaaaaafaaaaafaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaafaaaaafaafaaaaaaaafaafaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKlcKlcKlcKlcKlcKlcKlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafcHncwrcHpaaacHncwrcHpaaacHncwrcHpaafaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaaaaLaaaaafaaaaaacGWcGWcGWcIwcGWcGWaancGWcGWaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKlcKlcKlcKlcKlcKlcKlcKlcKlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafcHncwrcHpaaacHncwrcHpaafcHncwrcHpaafaafaafaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaaIaaIbZSbZSaaIaaIaaaaaaaaaaaIaaIaaIaaIaaIaaIaaIaaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKlcKlcKlcKlcKlcKlcKlcKlcKlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaafaafaafaafaamaafaafaafczgczGczFcAhczHcAucAtcAwcAvcAycAxcAAcAzcAucptczGcABcADcACcAycAEcmMcmMcmMcmMcmMcmMcmMcmMcAHcAFcyLcAIcAJcoIcAKcoIcoIcwxcoIcoIcAScoIcAJcBtcBvcBucBxciCcCNcCOcCPcCQcAObPwcCRcCScCTcCacAGcAVcBwcCacHPcHLcHQcCYcCXaaaaaaaaaaaaaaaaaacqvcCZctDcuQcDacDbcuQcDccDdcDeaafaaachxchFchEclXaaaaaaaaaaacaaaaaaaaaaaaaaacdOcDhcplcplcomcDicplcplcomcDicplcplcdOaafaafcrPaafckVckSckSckSckSckyckxckwckvckvckvckvckUaafcrPaaacyhcyhcyhcyhaaacyhcyhcyhcyhcyhcyhcyhcyhcyhaaacyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPcByaaaaaaaaaaamaaaaaaaaacBzcBBcBAcBDcBCcBFcBEcBGcBCcBFcBEcBGcBCcBFcBHcBHcBIcBGcBCcBFcBJcmMaaacBLcBKcBNcBMcBPcBOcBRcBQcBScBScBUcBTcCrcCpcCtcCscCpcCtcCrcCucCwcCvcCucyLcyLcAOcDNcDOcDPcDQcAObNUcDRcDScDTcCacCbcDUcCbcCacHTcmWcDfaafaaaaaaaaaaaaaaaaaaaaacqvcCZcDVcDWcDXcDXcDWcsPcDYcqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdOcDZcplcplcomcEacplcplcomcEacplcplcdOaaaaaacrPaafcwjcwjcwjcwjcwjaaackxaaacwjcwjcwjcwjcwjaaacrPaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPcClcqLcqLcqLcpEcpIcpIcpIcqLcpIcpPcpIcpGcpIcpPcpIcpGcpIcpPcpIcpGcpIcqLcpIcpRcpIcpGcpIcqNaafaaacCycCxcCAcCzcCCcCBcBRcCDcBScCEcCGcCFcCIcCHcCKcCJcCMcCLcCIcCUcDgcCVcCuaaaaafcAOcEBcECcEDaafaaabNUbPxbPxbSkcCaclZcEFclYcCaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqvcEHcuXcEIcEJcEJcEIcuQcEKcqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdOcplcplcplcomcELcplcplcomcELcplcplcdOaacaaacrPaaaaaaaafaafaafaaaaaacmTaafaaaaaaaafaafaaaaaacrPaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaafaafaaaaaaaaqaaaaaaaaaaafcfQcldclccDjcfQcldclccDjcfQcldclccDkcfQaaacfQcDlclccDkcfQaaaaafaaacCycEdcDocDncDmcDpcDrcDqcBScDscDucDtcCIcDvcDxcDwcDzcDycCIcDAcDCcDBcCuaaaaaacAOcFgcFhcFiaaaaaabNUbPxbPxbNUcCacmUcmUcmUcCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqvcFmcFncuQcuQcuQcuQcuQcFocqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaackEcdOcdOcdOcdOcdOcdOcdOcdOcmYcmYcmYckEaaaaaacrPcrPcrPcrPcrPaaaaaaaaacmZaaaaaaaaacrPcrPcrPbZScrPaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaaaaafaafaaaaamaaaaaaaaaaafcfQcDDcDFcDEcfQcDGcDIcDHcfQcDJcDLcDKcfQaafcfQcDMcEccEbcfQaaaaafaaacCycEGcCAcDmcDmcEecEgcEfcEicEhcEkcEjcEmcElcEocEncEqcEpcEscErcEucEtcCuaafaaacFJcDNcFKcAOcFLaaabNUcFMbPxcFNcFOaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrHcqvcqvcFPcFQcEIcEIcEIcFRcFPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqpbqpbqpaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaafcfTaafcrPaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaamaaaaaaaafaafcfQcEvcEwcEvcfQcExcEycExcfQcEzcEAcEzcfQaaacfQcEzcEzcEEcfQaaaaafaaacCycBKcIxcDncDmcCBcEMcCDcBScENcEPcEOcCIcEQcEScBkcEScETcCIcEUcEWcEVcCuaaLcGgcGgcGgcGgcGgcGgcGgbNUciEciDcGjaafaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacGlcEJcEJcEJcEJcEJcGlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaaaaafaaacrPaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaafaamaaaaafaafaaacfQcEvcEXcEvcfQcExcEYcExcfQcEzcEZcEzcfQaafcfQcEzcEzcEzcfQaafaafaafcFbcFacFdcFccFfcFecFjcCDcBScFlcFqcFpcCIcFrcFtcFscFvcFucCIcFwcFycFxcCuaaacGgcGgcGgcGgcGgcGgcGgcGFcGGcGHbNUaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqvcCmcqxcqxcqxcCocqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPcrPcrPcrPcrPaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbZSaaaaaacfQcfQcfQcfQcfQcfQcfQcfQcfQcfQcfQcfQcfQaaacFzcfQcfQcfQcfQaaaaaaaaaaaacAFcAFcAFcAFcAFcFBcFAcFAcFAcFAcFCcFAcFDcFFcFEcFFcFGcFAcFAcFHcFAcFAcFAcGgcGgcGgcGgcGgcGgcGgaafaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaacyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcrPaaaaaaaafaafaaaaafaafaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaafaaacGQcGRcGRcGRcGScFIcFTcFScFVcFUcFXcFWcFZcFYcERcGacFkcGccGfcGecGicGhcGncGpcGmcGocGpcFAcGgcGgcGgcGgcGgcGgcGgaafaaacGQcCWcGQcCWcGQcCWaafcGWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafcHncjVcHpaaacHncjVcHpaaacHncjVcHpaafaafaaaaafaafaafaafaafcHqcGRcGRcGRcGScFIcGrcGqcGtcGscGvcGucGxcGwcGCcGLcGzcGBcGdcGycGdcGdcGdcGkcGdcGbcGDcFAcGgcGgcGgcGgcGgcGgcGgaafaafcHOcHOcHOcHOcHOcHOaafcGWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaacHncjWcHpaaacHncjWcHpaaacHncjWcHpaafaafaaaaafaaaaaacHKaafcGQcGRcGRcGRcGScFIcGrcGEcGJcGIcGKcGucGMcGPcGTcGmcGmcGmcHfcGUcHjcGmcGmcGPcHmcHlcHocFAcFAcFAcHAaaaaaaaaaaaaaafaaacGOcGOcGOcGOcGOcGOaafcGWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafcHncjWcHpaaacHncjWcHpaafcHncjWcHpaafaaaaaaaafaafcIcaaaaafcHqcGRcGRcGRcGScFIcGYcGXcHacGZcHccHbcHecHdcHJcHkcHkcHkcHCcHicHBcHkcHkcHEcHDcGNcHIcHHcHGcHFcHscHrcHrcHrcHrcHrcHrcIvcIucIvcIucIvcHOaafcGWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaacHncjWcHpaafcHncjWcHpaaacHncjWcHpaaaaaaaaaaaaaafaafaaaaafaaaaaaaaaaaaaafcHucHwcHvcHycHxcHzcFWcGAcGmcGmcGmcJpcJocJkcJlcJicJjcJncGVcIycJmcIscJhcIZcJdcHscHtcHNcHtcHNcHtcHNcHtcHNcHtcHNcHtcHOaafcGWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaaIaafaaacHncjWcHpaafcHncjWcHpaaacHncjWcHpaafaaaaaaaaaaaaaafaafcIJcIKcIKcIKcIKcILcILcILcILcILcIMcILcFAcHWcGmcGmcGmcIIcFAcHScIQcHRcFAcIRcIScITcGNcINcIOcIPcFAaaacGOcGOcGOcGOcIbcGOcGOcGOcGOcGOcGOcGOaafcGWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyhcyhcyhcyhcyhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaafaaaaafaafczCaafaafaafczCaafaaaaafczCaafaaaaaaaaaaaaaaacIUcIVcIWcIXcIYcHVcJacJbcJcciFcJecJfcJgcJecFAcIHcIGcGmcGmcIocIEcIFcIdcIDcIEcIwcHMcHDcGNcIBcICcIAcFAaafcHOcHOcHOcHOcHOcHOcHOcHOcHOcHOcHOcHOaafaanaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafcydcxzcxycxxcxxcxxcxxcxxcxxcxxcxxcxxcxxcxxczicxzcxzcxzcypcJzcJAcJBcJCcJDcJEcJFcJGcJHcJHcJHcJIcJJcJKcFAcIncIncGmcGmcIocIpcIlcIkcImcIpcIwcGmcIycIzcIscGmcItcFAaafcHOcHOcHOcHOcHOcHOcHOcHOcHOcHOcHOcHOaafcGWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYaaactYctYctYctYctYaaactYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaafaaaaafaafcxfaafaaaaafcxfaafaaaaafcxfaafaaaaaaaaaaaaaaacIUcIVcJRcJScJTcJUcIKcJVcJWcJecJecJXcJXcJYcFAcIncIncGmcGmcIocIecIlcIqcIrcIecIgcHhcHgcIfcIicIjcIhcFAaaacGOcGOcGOcGOcIbcGOcGOcGOcGOcGOcGOcGOaafaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYaaactYctYctYctYctYaaactYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaaIaafaafcHncwrcHpaaacHncwrcHpaaacHncwrcHpaafaaaaaaaaaaaaaafaafcKfcIKcIKcIKcIKcKgcKhcKicKicKjcKgcKgcFAcFAcFWcFAcFAcFAcFAcFAcIacFAcFAcFAcFAcFAcFWcFAcFAcFAcFAaafcHOcHOcHOcHOcHOcHOcHOcHOcHOcHOcHOcHOaafaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacHncwrcHpaafcHncwrcHpaaacHncwrcHpaaaaaaaaaaafaaaaafaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaafaaacHZaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaacHqcHXcHqcHXcHYcHXcHqcHXcHqcHXcHqcHXaafaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKlcKlcKlcKlcKlcKlcKlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafcHncwrcHpaaacHncwrcHpaaacHncwrcHpaafaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaLaaaaaaaaaaafaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKlcKlcKlcKlcKlcKlcKlcKlcKlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaafcHncwrcHpaaacHncwrcHpaafcHncwrcHpaafaafaafaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaaIaaIbZSbZSaaIaaIaaaaaaaaaaaIaaIaaIaaIaaIaaqaaIaaIaaIaaIaaIaaIaaIaaIcHUaaIaaIaaIaaIaaqaaIaaIaaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKlcKlcKlcKlcKlcKlcKlcKlcKlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqaafcHncwncHpaaacHncwncHpaaacHncwncHpaafaaIaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKlcKlcKlcKlcKlcKlcKlcKlcKlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaaaaafaaaaaaaaaaafaafaafaaaaaaaafaafaaaaaIaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKncKncKncKncKncKncKnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKlcKlcKlcKlcKlcKlcKlcKlcKlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamaaIaamaamaaqaaIaaIaaIaaIaamaaIaaIaamcKoaafaaaaaaaaaaaaaaacKpaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaacHKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKncKncKncKncKncKncKncKncKnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKlcKlcKlcKlcKlcKlcKlcKlcKlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From 198bfe97b99091d4f18fc5a12b150e6bfc632985 Mon Sep 17 00:00:00 2001 From: RavingManiac Date: Mon, 16 Feb 2015 00:32:50 +0800 Subject: [PATCH 36/45] Updated changelog. --- html/changelog.html | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/html/changelog.html b/html/changelog.html index 3092f99714..1dff6048af 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -56,6 +56,15 @@ should be listed in the changelog upon commit though. Thanks. --> +
    +

    16 February 2015

    +

    RavingManiac updated:

    +
      +
    • Say hello to the new Thermoelectric Supermatter Engine. Read the operating manual to get started.
    • +
    +
    + +

    12 February 2015

    Daranz updated:

    From a48545391ab87c9d4b7b380a5a902ba2a6ca104e Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Sun, 15 Feb 2015 14:36:43 +0100 Subject: [PATCH 37/45] Fixes out of memory runtime errors and excessive HTML parsing. Announcements are no longer parsed twice, avoiding messages such as "T's nice". Fixes the strip_html_properly proc, to avoid out of memory runtimes. --- code/__HELPERS/text.dm | 15 +++++++++++++-- code/defines/procs/announce.dm | 2 +- code/game/machinery/computer/communications.dm | 2 +- .../computer3/computers/communications.dm | 2 +- code/modules/mob/living/silicon/ai/ai.dm | 2 +- 5 files changed, 17 insertions(+), 6 deletions(-) diff --git a/code/__HELPERS/text.dm b/code/__HELPERS/text.dm index c14976bb78..27f5f98aa4 100644 --- a/code/__HELPERS/text.dm +++ b/code/__HELPERS/text.dm @@ -329,14 +329,25 @@ proc/TextPreview(var/string,var/len=40) //This means that it doesn't just remove < and > and call it a day. //Also limit the size of the input, if specified. /proc/strip_html_properly(var/input, var/max_length = MAX_MESSAGE_LEN) + if(!input) + return var/opentag = 1 //These store the position of < and > respectively. var/closetag = 1 while(1) opentag = findtext(input, "<") closetag = findtext(input, ">") - if(!closetag || !opentag) + if(closetag && opentag) + if(closetag < opentag) + input = copytext(input, (closetag + 1)) + else + input = copytext(input, 1, opentag) + copytext(input, (closetag + 1)) + else if(closetag || opentag) + if(opentag) + input = copytext(input, 1, opentag) + else + input = copytext(input, (closetag + 1)) + else break - input = copytext(input, 1, opentag) + copytext(input, (closetag + 1)) if(max_length) input = copytext(input,1,max_length) return sanitize(input) diff --git a/code/defines/procs/announce.dm b/code/defines/procs/announce.dm index b74f7a1c78..d3aef96c45 100644 --- a/code/defines/procs/announce.dm +++ b/code/defines/procs/announce.dm @@ -36,7 +36,7 @@ var/tmp/message_title = new_title ? new_title : title var/tmp/message_sound = new_sound ? sound(new_sound) : sound - message = html_encode(message) + message = trim_strip_html_properly(message) message_title = html_encode(message_title) Message(message, message_title) diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index f18d906383..a8403bbede 100644 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -110,7 +110,7 @@ if(message_cooldown) usr << "Please allow at least one minute to pass between announcements" return - var/input = stripped_input(usr, "Please write a message to announce to the station crew.", "Priority Announcement") + var/input = input(usr, "Please write a message to announce to the station crew.", "Priority Announcement") if(!input || !(usr in view(1,src))) return crew_announcement.Announce(input) diff --git a/code/game/machinery/computer3/computers/communications.dm b/code/game/machinery/computer3/computers/communications.dm index bb268ba0c0..527a2e2c5a 100644 --- a/code/game/machinery/computer3/computers/communications.dm +++ b/code/game/machinery/computer3/computers/communications.dm @@ -115,7 +115,7 @@ if(message_cooldown) usr << "Please allow at least one minute to pass between announcements" return - var/input = stripped_input(usr, "Please write a message to announce to the station crew.", "Priority Announcement") + var/input = input(usr, "Please write a message to announce to the station crew.", "Priority Announcement") if(!input || !interactable()) return crew_announcement.Announce(input) diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index ff948d2387..62accdb198 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -368,7 +368,7 @@ var/list/ai_verbs_default = list( if(message_cooldown) src << "Please allow one minute to pass between announcements." return - var/input = stripped_input(usr, "Please write a message to announce to the station crew.", "A.I. Announcement") + var/input = input(usr, "Please write a message to announce to the station crew.", "A.I. Announcement") if(!input) return From 03e8acd957d9dd4835597868ea10a4031435daf7 Mon Sep 17 00:00:00 2001 From: SkyMarshal Date: Sun, 15 Feb 2015 10:45:34 -0700 Subject: [PATCH 38/45] Fixes errors in energy/special.dm --- code/modules/projectiles/guns/energy/special.dm | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index 000f1dd123..7a5f81a874 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -160,7 +160,7 @@ obj/item/weapon/gun/energy/staff/focus /obj/item/weapon/gun/energy/icarus name = "rubber ducky" desc = "It's a cute rubber duck. With an evil gleam in it's eye." - projectile_type = "/obj/item/projectile/icarus/pointdefense" + projectile_type = /obj/item/projectile/icarus/pointdefense icon = 'icons/obj/watercloset.dmi' icon_state = "rubberducky" item_state = "rubberducky" @@ -168,11 +168,11 @@ obj/item/weapon/gun/energy/staff/focus silenced = 1 /obj/item/weapon/gun/energy/icarus/attack_self(mob/living/user as mob) - if(projectile_type == "/obj/item/projectile/icarus/pointdefense") - projectile_type = "/obj/item/projectile/icarus/guns" + if(projectile_type == /obj/item/projectile/icarus/pointdefense) + projectile_type = /obj/item/projectile/icarus/guns user << "You inform the Icarus to switch to the main guns." else - projectile_type = "/obj/item/projectile/icarus/pointdefense" + projectile_type = /obj/item/projectile/icarus/pointdefense user << "You inform the Icarus to switch to the point-defense lasers." . = ..() @@ -202,5 +202,5 @@ obj/item/weapon/gun/energy/staff/focus var/type = input(user,"What projectile type?","Projectile", null) as null|anything in typesof(/obj/item/projectile) if(!type) return ..() - - . = ..() \ No newline at end of file + projectile_type = type + . = ..() From 2a4d1b08cd97e30e64d06b87417a14e1692f4931 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Sun, 15 Feb 2015 20:27:45 -0500 Subject: [PATCH 39/45] Fixes beakers splashing onto the dart gun when being loaded. --- code/modules/projectiles/guns/projectile/dartgun.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/projectiles/guns/projectile/dartgun.dm b/code/modules/projectiles/guns/projectile/dartgun.dm index a4fca2f2a4..4d90a0fef3 100644 --- a/code/modules/projectiles/guns/projectile/dartgun.dm +++ b/code/modules/projectiles/guns/projectile/dartgun.dm @@ -114,6 +114,7 @@ beakers += B user << "\blue You slot [B] into [src]." src.updateUsrDialog() + return 1 ..() //fills the given dart with reagents From 3c1ec28a37edc85b40cbd067ecd40e671e0519be Mon Sep 17 00:00:00 2001 From: mwerezak Date: Sun, 15 Feb 2015 22:42:03 -0500 Subject: [PATCH 40/45] Reorganizes colt pistols, moves renaming verb --- .../crates_lockers/closets/secure/security.dm | 4 +- .../projectiles/guns/projectile/pistol.dm | 32 +++++++-- .../projectiles/guns/projectile/revolver.dm | 69 ++++--------------- 3 files changed, 41 insertions(+), 64 deletions(-) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index 0bb76d5369..672978400c 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -54,7 +54,7 @@ new /obj/item/weapon/storage/box/ids(src) new /obj/item/weapon/storage/box/ids( src ) new /obj/item/weapon/gun/energy/gun(src) - new /obj/item/weapon/gun/projectile/detective/flash(src) + new /obj/item/weapon/gun/projectile/colt/flash(src) new /obj/item/device/flash(src) return @@ -262,7 +262,7 @@ new /obj/item/ammo_magazine/c45m/rubber(src) new /obj/item/ammo_magazine/c45m/rubber(src) new /obj/item/taperoll/police(src) - new /obj/item/weapon/gun/projectile/detective(src) + new /obj/item/weapon/gun/projectile/colt/detective(src) new /obj/item/clothing/accessory/holster/armpit(src) return diff --git a/code/modules/projectiles/guns/projectile/pistol.dm b/code/modules/projectiles/guns/projectile/pistol.dm index 12f1f96601..839289e2c2 100644 --- a/code/modules/projectiles/guns/projectile/pistol.dm +++ b/code/modules/projectiles/guns/projectile/pistol.dm @@ -1,20 +1,38 @@ -/obj/item/weapon/gun/projectile/detective +/obj/item/weapon/gun/projectile/colt name = "\improper Colt M1911" - desc = "A cheap Martian knock-off of a Colt M1911. Uses less-than-lethal .45 rounds." + desc = "A cheap Martian knock-off of a Colt M1911." + magazine_type = /obj/item/ammo_magazine/c45m icon_state = "colt" caliber = ".45" origin_tech = "combat=2;materials=2" load_method = MAGAZINE - magazine_type = /obj/item/ammo_magazine/c45m/rubber -/obj/item/weapon/gun/projectile/detective/flash +/obj/item/weapon/gun/projectile/colt/flash name = "\improper Colt M1911 signal pistol" desc = "A cheap Martian knock-off of a Colt M1911. Uses .45 signal flash rounds." magazine_type = /obj/item/ammo_magazine/c45m/flash -/obj/item/weapon/gun/projectile/detective/colt - desc = "A cheap Martian knock-off of a Colt M1911." - magazine_type = /obj/item/ammo_magazine/c45m +/obj/item/weapon/gun/projectile/colt/detective + desc = "A cheap Martian knock-off of a Colt M1911. Uses less-than-lethal .45 rounds." + magazine_type = /obj/item/ammo_magazine/c45m/rubber + +/obj/item/weapon/gun/projectile/colt/detective/verb/rename_gun() + set name = "Name Gun" + set category = "Object" + set desc = "Rename your gun. If you're the detective." + + var/mob/M = usr + if(!M.mind) return 0 + if(!M.mind.assigned_role == "Detective") + M << "You don't feel cool enough to name this gun, chump." + return 0 + + var/input = stripped_input(usr,"What do you want to name the gun?", ,"", MAX_NAME_LEN) + + if(src && input && !M.stat && in_range(M,src)) + name = input + M << "You name the gun [input]. Say hello to your new friend." + return 1 /obj/item/weapon/gun/projectile/silenced name = "silenced pistol" diff --git a/code/modules/projectiles/guns/projectile/revolver.dm b/code/modules/projectiles/guns/projectile/revolver.dm index 0d23d63d7b..9bef0c40d3 100644 --- a/code/modules/projectiles/guns/projectile/revolver.dm +++ b/code/modules/projectiles/guns/projectile/revolver.dm @@ -23,61 +23,20 @@ origin_tech = "combat=2;materials=2" ammo_type = /obj/item/ammo_casing/c38 - special_check(var/mob/living/carbon/human/M) - if(caliber == initial(caliber) && prob(70 - (loaded.len * 10))) //minimum probability of 10, maximum of 60 - M << "[src] blows up in your face." - M.take_organ_damage(0,20) - M.drop_item() - del(src) - return 0 - return ..() +/obj/item/weapon/gun/projectile/revolver/detective/verb/rename_gun() + set name = "Name Gun" + set category = "Object" + set desc = "Click to rename your gun. If you're the detective." - verb/rename_gun() - set name = "Name Gun" - set category = "Object" - set desc = "Click to rename your gun. If you're the detective." + var/mob/M = usr + if(!M.mind) return 0 + if(!M.mind.assigned_role == "Detective") + M << "You don't feel cool enough to name this gun, chump." + return 0 - var/mob/M = usr - if(!M.mind) return 0 - if(!M.mind.assigned_role == "Detective") - M << "You don't feel cool enough to name this gun, chump." - return 0 + var/input = stripped_input(usr,"What do you want to name the gun?", ,"", MAX_NAME_LEN) - var/input = stripped_input(usr,"What do you want to name the gun?", ,"", MAX_NAME_LEN) - - if(src && input && !M.stat && in_range(M,src)) - name = input - M << "You name the gun [input]. Say hello to your new friend." - return 1 - - attackby(var/obj/item/A as obj, mob/user as mob) - ..() - if(istype(A, /obj/item/weapon/screwdriver)) - if(caliber == "38") - user << "You begin to reinforce the barrel of [src]." - if(loaded.len) - afterattack(user, user) //you know the drill - playsound(user, fire_sound, 50, 1) - user.visible_message("[src] goes off!", "[src] goes off in your face!") - return - if(do_after(user, 30)) - if(loaded.len) - user << "You can't modify it!" - return - caliber = "357" - desc = "The barrel and chamber assembly seems to have been modified." - user << "You reinforce the barrel of [src]! Now it will fire .357 rounds." - else if (caliber == "357") - user << "You begin to revert the modifications to [src]." - if(loaded.len) - afterattack(user, user) //and again - playsound(user, fire_sound, 50, 1) - user.visible_message("[src] goes off!", "[src] goes off in your face!") - return - if(do_after(user, 30)) - if(loaded.len) - user << "You can't modify it!" - return - caliber = "38" - desc = initial(desc) - user << "You remove the modifications on [src]! Now it will fire .38 rounds." + if(src && input && !M.stat && in_range(M,src)) + name = input + M << "You name the gun [input]. Say hello to your new friend." + return 1 From 83780ef550657694600495604369b1cce3956178 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 16 Feb 2015 00:55:23 -0500 Subject: [PATCH 41/45] Adds sts-35 automatic rifle --- code/modules/projectiles/ammunition/boxes.dm | 9 +++++++++ .../modules/projectiles/ammunition/bullets.dm | 2 +- .../projectiles/guns/projectile/automatic.dm | 18 +++++++++++++++++- .../projectiles/guns/projectile/sniper.dm | 2 +- .../modules/projectiles/projectile/bullets.dm | 2 +- icons/obj/ammo.dmi | Bin 13349 -> 13975 bytes icons/obj/gun.dmi | Bin 46616 -> 47244 bytes 7 files changed, 29 insertions(+), 4 deletions(-) diff --git a/code/modules/projectiles/ammunition/boxes.dm b/code/modules/projectiles/ammunition/boxes.dm index 14b176c048..3466f40b48 100644 --- a/code/modules/projectiles/ammunition/boxes.dm +++ b/code/modules/projectiles/ammunition/boxes.dm @@ -130,6 +130,15 @@ /obj/item/ammo_magazine/a762/empty initial_ammo = 0 +/obj/item/ammo_magazine/c762 + name = "magazine (7.62mm)" + icon_state = "c762" + mag_type = MAGAZINE + caliber = "a762" + ammo_type = /obj/item/ammo_casing/a762 + max_ammo = 20 + multiple_sprites = 1 + /obj/item/ammo_magazine/chameleon name = "magazine (.45)" icon_state = "45" diff --git a/code/modules/projectiles/ammunition/bullets.dm b/code/modules/projectiles/ammunition/bullets.dm index 0fb5b56d58..67308c50f7 100644 --- a/code/modules/projectiles/ammunition/bullets.dm +++ b/code/modules/projectiles/ammunition/bullets.dm @@ -112,7 +112,7 @@ projectile_type = /obj/item/projectile/bullet/rifle/a762 /obj/item/ammo_casing/a145 - name = "\improper AP shell casing" + name = "shell casing" desc = "A 14.5mm AP shell." icon_state = "lcasing" spent_icon = "lcasing-spent" diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm index eb5cb3c105..c518a11a57 100644 --- a/code/modules/projectiles/guns/projectile/automatic.dm +++ b/code/modules/projectiles/guns/projectile/automatic.dm @@ -25,7 +25,7 @@ /obj/item/weapon/gun/projectile/automatic/c20r name = "\improper C-20r SMG" - desc = "A lightweight, fast firing gun, for when you REALLY need someone dead. Uses 12mm rounds. Has a 'Scarborough Arms - Per falcis, per pravitas' buttstamp" + desc = "A lightweight, fast firing gun, for when you REALLY need someone dead. Uses 12mm pistol rounds. Has a 'Scarborough Arms - Per falcis, per pravitas' buttstamp" icon_state = "c20r" item_state = "c20r" w_class = 3 @@ -47,6 +47,22 @@ icon_state = "c20r" return +/obj/item/weapon/gun/projectile/automatic/sts35 + name = "\improper STS-35 Automatic Rifle" + desc = "A durable, rugged looking automatic weapon of make popular on the frontier, despite it's bulk. Uses 7.62mm rounds. It is unmarked." + icon_state = "assltrifle" + item_state = "shotgun" + w_class = 4 + force = 10 + caliber = "a762" + origin_tech = "combat=5;materials=1;syndicate=8" + slot_flags = SLOT_BACK + load_method = MAGAZINE + magazine_type = /obj/item/ammo_magazine/c762 + +/obj/item/weapon/gun/projectile/automatic/sts35/update_icon() + ..() + icon_state = (ammo_magazine)? "assltrifle" : "assltrifle-noclip" /obj/item/weapon/gun/projectile/automatic/l6_saw name = "\improper L6 SAW" diff --git a/code/modules/projectiles/guns/projectile/sniper.dm b/code/modules/projectiles/guns/projectile/sniper.dm index 93d355df8b..1cea6fdc2e 100644 --- a/code/modules/projectiles/guns/projectile/sniper.dm +++ b/code/modules/projectiles/guns/projectile/sniper.dm @@ -2,7 +2,7 @@ name = "\improper PTRS-7 rifle" desc = "A portable anti-armour rifle fitted with a scope. Fires 14.5mm AP shells." icon_state = "heavysniper" - item_state = "shotgun" + item_state = "sniper0" w_class = 4 force = 10 slot_flags = SLOT_BACK diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index cb7905d880..93f183ba7d 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -122,7 +122,7 @@ /* "Rifle" rounds */ /obj/item/projectile/bullet/rifle/a762 - damage = 25 + damage = 30 penetrating = 1 /obj/item/projectile/bullet/rifle/a145 diff --git a/icons/obj/ammo.dmi b/icons/obj/ammo.dmi index d84132a60c018a0d130ebe00320200ab2d801ec4..05f0fbaecf2417b212206ecd83176e2d23008288 100644 GIT binary patch literal 13975 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%0A}zeJisj1Zvus+Kgn#A^mO84pAL&8 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 Date: Mon, 16 Feb 2015 00:58:00 -0500 Subject: [PATCH 42/45] Fixes quoted paths --- code/modules/projectiles/guns/energy/pulse.dm | 4 ++-- code/modules/projectiles/guns/energy/special.dm | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/projectiles/guns/energy/pulse.dm b/code/modules/projectiles/guns/energy/pulse.dm index 03510d8d59..82ab47438b 100644 --- a/code/modules/projectiles/guns/energy/pulse.dm +++ b/code/modules/projectiles/guns/energy/pulse.dm @@ -40,7 +40,7 @@ /obj/item/weapon/gun/energy/pulse_rifle/destroyer name = "pulse destroyer" desc = "A heavy-duty, pulse-based energy weapon. Because of its complexity and cost, it is rarely seen in use except by specialists." - cell_type = "/obj/item/weapon/cell/infinite" + cell_type = /obj/item/weapon/cell/infinite fire_delay = 10 /obj/item/weapon/gun/energy/pulse_rifle/destroyer/attack_self(mob/living/user as mob) @@ -53,5 +53,5 @@ desc = "It's not the size of the gun, it's the size of the hole it puts through people." slot_flags = SLOT_BELT|SLOT_HOLSTER icon_state = "m1911-p" - cell_type = "/obj/item/weapon/cell/infinite" + cell_type = /obj/item/weapon/cell/infinite fire_delay = 10 diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index 7a5f81a874..112a33e387 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -72,7 +72,7 @@ w_class = 4 projectile_type = /obj/item/projectile/meteor charge_cost = 100 - cell_type = "/obj/item/weapon/cell/potato" + cell_type = /obj/item/weapon/cell/potato self_recharge = 1 recharge_time = 5 //Time it takes for shots to recharge (in ticks) charge_meter = 0 From 500ca932785b34e145173452a8f1016673323505 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 16 Feb 2015 01:47:07 -0500 Subject: [PATCH 43/45] Fixes guns being unremovable Fixes certain guns being unremovable due to unloading ammo taking precedence over picking up. Also adds on-back icon for the merc sniper which is just a copy of the LWAP's. --- .../guns/launcher/grenade_launcher.dm | 2 +- .../projectiles/guns/launcher/syringe_gun.dm | 4 ++-- code/modules/projectiles/guns/projectile.dm | 2 +- .../projectiles/guns/projectile/pistol.dm | 2 +- .../projectiles/guns/projectile/sniper.dm | 2 +- icons/mob/back.dmi | Bin 43949 -> 44626 bytes 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/code/modules/projectiles/guns/launcher/grenade_launcher.dm b/code/modules/projectiles/guns/launcher/grenade_launcher.dm index 186e827522..14e1c2e785 100644 --- a/code/modules/projectiles/guns/launcher/grenade_launcher.dm +++ b/code/modules/projectiles/guns/launcher/grenade_launcher.dm @@ -59,7 +59,7 @@ ..() /obj/item/weapon/gun/launcher/grenade/attack_hand(mob/user) - if(loc == user) + if(user.get_inactive_hand() == src) if(grenades.len) var/obj/item/weapon/grenade/G = grenades[grenades.len] grenades.len-- diff --git a/code/modules/projectiles/guns/launcher/syringe_gun.dm b/code/modules/projectiles/guns/launcher/syringe_gun.dm index a515bde758..d4d66ac1cd 100644 --- a/code/modules/projectiles/guns/launcher/syringe_gun.dm +++ b/code/modules/projectiles/guns/launcher/syringe_gun.dm @@ -98,10 +98,10 @@ playsound(src.loc, 'sound/weapons/flipblade.ogg', 50, 1) user.visible_message("[user] draws back the bolt on [src], clicking it into place.", "You draw back the bolt on the [src], loading the spring!") next = darts[1] - user.next_move = world.time + 4 + add_fingerprint(user) /obj/item/weapon/gun/launcher/syringe/attack_hand(mob/living/user as mob) - if(loc == user) + if(user.get_inactive_hand() == src) if(!darts.len) user << "[src] is empty." return diff --git a/code/modules/projectiles/guns/projectile.dm b/code/modules/projectiles/guns/projectile.dm index 068d943e26..5f197d56e6 100644 --- a/code/modules/projectiles/guns/projectile.dm +++ b/code/modules/projectiles/guns/projectile.dm @@ -155,7 +155,7 @@ unload_ammo(user) /obj/item/weapon/gun/projectile/attack_hand(mob/user as mob) - if(loc == user) + if(user.get_inactive_hand() == src) unload_ammo(user, allow_dump=0) else return ..() diff --git a/code/modules/projectiles/guns/projectile/pistol.dm b/code/modules/projectiles/guns/projectile/pistol.dm index 839289e2c2..1d6df6f859 100644 --- a/code/modules/projectiles/guns/projectile/pistol.dm +++ b/code/modules/projectiles/guns/projectile/pistol.dm @@ -106,7 +106,7 @@ magazine_type = /obj/item/ammo_magazine/mc9mm/flash /obj/item/weapon/gun/projectile/pistol/attack_hand(mob/user as mob) - if(loc == user) + if(user.get_inactive_hand() == src) if(silenced) if(user.l_hand != src && user.r_hand != src) ..() diff --git a/code/modules/projectiles/guns/projectile/sniper.dm b/code/modules/projectiles/guns/projectile/sniper.dm index 1cea6fdc2e..c27866165a 100644 --- a/code/modules/projectiles/guns/projectile/sniper.dm +++ b/code/modules/projectiles/guns/projectile/sniper.dm @@ -39,7 +39,7 @@ else user << "You work the bolt closed." bolt_open = 0 - user.next_move = world.time + 4 //prevent spam, also makes having to work the bolt more of a drawback + add_fingerprint(user) update_icon() /obj/item/weapon/gun/projectile/heavysniper/special_check(mob/user) diff --git a/icons/mob/back.dmi b/icons/mob/back.dmi index f160af9933ec3c1d1a3c2b0013e4cf3c2f37e249..893b58c6637d54df110cbf9a9fcdfa7c4c2553b9 100644 GIT binary patch literal 44626 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
    Q#&Rh(Dx*C*<=Tjy_&OZxu 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 EUkPtEF8}}l literal 43949 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 z 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 From e5d14465b06dc754266916e08f3e5364f1c5d576 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 16 Feb 2015 02:22:12 -0500 Subject: [PATCH 44/45] Adds fingerprints whenever an item is put in a human's hands. --- code/game/objects/items.dm | 1 - code/modules/mob/living/carbon/human/inventory.dm | 13 +++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 1e3cb7547a..3ed2dd9e08 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -141,7 +141,6 @@ if(isliving(src.loc)) return user.next_move = max(user.next_move+2,world.time + 2) - add_fingerprint(user) user.put_in_active_hand(src) if(src.loc == user) src.pickup(user) diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index b4c2a18c1d..5493c5d603 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -1,3 +1,16 @@ +/* +Add fingerprints to items when we put them in our hands. +This saves us from having to call add_fingerprint() any time something is put in a human's hands programmatically. + +*/ +/mob/living/carbon/human/put_in_l_hand(var/obj/item/W) + . = ..() + if(.) W.add_fingerprint(src) + +/mob/living/carbon/human/put_in_r_hand(var/obj/item/W) + . = ..() + if(.) W.add_fingerprint(src) + /mob/living/carbon/human/verb/quick_equip() set name = "quick-equip" set hidden = 1 From 7f19a8a77bff174cad5fdcedca0ee295d50bb851 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 16 Feb 2015 02:59:16 -0500 Subject: [PATCH 45/45] Tweaks bullet penetration --- code/modules/projectiles/guns/projectile/sniper.dm | 2 +- code/modules/projectiles/projectile/bullets.dm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/projectiles/guns/projectile/sniper.dm b/code/modules/projectiles/guns/projectile/sniper.dm index c27866165a..4bab0678b7 100644 --- a/code/modules/projectiles/guns/projectile/sniper.dm +++ b/code/modules/projectiles/guns/projectile/sniper.dm @@ -1,6 +1,6 @@ /obj/item/weapon/gun/projectile/heavysniper name = "\improper PTRS-7 rifle" - desc = "A portable anti-armour rifle fitted with a scope. Fires 14.5mm AP shells." + desc = "A portable anti-armour rifle fitted with a scope. Originally designed to used against lightly armoured exosuits, it is capable of punching through non-reinforced walls with ease. Fires 14.5mm AP shells." icon_state = "heavysniper" item_state = "sniper0" w_class = 4 diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index 93f183ba7d..e473a11405 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -28,7 +28,7 @@ var/chance = 0 if(istype(A, /turf/simulated/wall)) var/turf/simulated/wall/W = A - chance = round(damage/W.damage_cap*150) + chance = round(damage/W.damage_cap*180) else if(istype(A, /obj/machinery/door)) var/obj/machinery/door/D = A chance = round(damage/D.maxhealth*100)