diff --git a/_maps/map_files/cyberiad/cyberiad.dmm b/_maps/map_files/cyberiad/cyberiad.dmm index a6961205eeb..915a9cd2b3a 100644 --- a/_maps/map_files/cyberiad/cyberiad.dmm +++ b/_maps/map_files/cyberiad/cyberiad.dmm @@ -204,7 +204,7 @@ "adV" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{dir = 8; name = "Head of Security APC"; pixel_x = -24},/turf/simulated/floor{icon_state = "dark"},/area/security/hos) "adW" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/carpet,/area/security/hos) "adX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/carpet,/area/security/hos) -"adY" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/carpet,/area/security/hos) +"adY" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/mob/living/simple_animal/hostile/retaliate/araneus,/turf/simulated/floor/carpet,/area/security/hos) "adZ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{icon_state = "dark"},/area/security/hos) "aea" = (/obj/structure/table/woodentable,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/item/device/radio,/turf/simulated/floor{icon_state = "dark"},/area/security/hos) "aeb" = (/obj/machinery/space_heater,/obj/machinery/light_switch{pixel_x = -25},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor,/area/security/podbay) @@ -3477,7 +3477,7 @@ "boS" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor,/area/hallway/secondary/entry) "boT" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable{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/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port) "boU" = (/obj/effect/landmark{name = "blobstart"},/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},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/port) -"boV" = (/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/port) +"boV" = (/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/junction{dir = 1; icon_state = "pipe-j2"; tag = "icon-pipe-j2"},/turf/simulated/floor/plating,/area/maintenance/port) "boW" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/remains/robot,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/port) "boX" = (/obj/structure/closet/emcloset,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port) "boY" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/wall,/area/maintenance/port) @@ -3531,7 +3531,7 @@ "bpU" = (/obj/effect/decal/cleanable/fungus,/turf/simulated/wall,/area/maintenance/disposal) "bpV" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall,/area/maintenance/port) "bpW" = (/obj/effect/decal/cleanable/fungus,/turf/simulated/wall,/area/maintenance/port) -"bpX" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/sign/poster{pixel_x = -32},/turf/simulated/floor/plating,/area/maintenance/port) +"bpX" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/sign/poster{pixel_x = -32},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/port) "bpY" = (/obj/machinery/door/airlock{name = "Unit 3"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet) "bpZ" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet) "bqa" = (/obj/item/latexballon,/turf/simulated/floor/plating,/area/maintenance/port) @@ -3609,7 +3609,7 @@ "bru" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port) "brv" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port) "brw" = (/obj/machinery/light/small{dir = 1},/obj/machinery/conveyor{dir = 8; id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal) -"brx" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor/plating,/area/maintenance/port) +"brx" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/obj/structure/disposalpipe/sortjunction{dir = 1; icon_state = "pipe-j2s"; sortdir = 0; sortType = 1},/turf/simulated/floor/plating,/area/maintenance/port) "bry" = (/obj/machinery/camera{c_tag = "Locker Room Toilets"; dir = 8; network = list("SS13")},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet) "brz" = (/mob/living/simple_animal/mouse,/turf/simulated/floor/plating,/area/maintenance/port) "brA" = (/obj/machinery/conveyor{dir = 9; id = "garbage"; verted = -1},/turf/simulated/floor/plating,/area/maintenance/disposal) diff --git a/_maps/map_files/cyberiad/z2.dmm b/_maps/map_files/cyberiad/z2.dmm index 8ffe65bf82c..01765fad4b5 100644 --- a/_maps/map_files/cyberiad/z2.dmm +++ b/_maps/map_files/cyberiad/z2.dmm @@ -1147,7 +1147,7 @@ "wc" = (/turf/unsimulated/floor{tag = "icon-warning (NORTHWEST)"; icon_state = "warning"; dir = 9},/area/centcom/specops) "wd" = (/turf/unsimulated/floor{dir = 5; icon_state = "warning"},/area/centcom/specops) "we" = (/turf/space,/area/centcom/specops) -"wf" = (/obj/item/weapon/gun/projectile/automatic/m2411,/obj/item/ammo_box/magazine/m45,/obj/item/ammo_box/magazine/m45,/obj/item/ammo_box/magazine/m45,/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/clothing/head/helmet/space/deathsquad/beret,/obj/item/clothing/shoes/combat,/obj/item/clothing/under/syndicate/combat,/obj/item/clothing/gloves/combat,/obj/item/clothing/suit/space/deathsquad/officer,/obj/item/clothing/under/rank/centcom/captain,/obj/item/weapon/storage/box/handcuffs,/obj/item/weapon/storage/box/flashbangs,/obj/item/clothing/mask/gas,/obj/item/weapon/tank/emergency_oxygen/double,/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/specops) +"wf" = (/obj/item/weapon/gun/projectile/automatic/pistol/m2411,/obj/item/ammo_box/magazine/m45,/obj/item/ammo_box/magazine/m45,/obj/item/ammo_box/magazine/m45,/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/clothing/head/helmet/space/deathsquad/beret,/obj/item/clothing/shoes/combat,/obj/item/clothing/under/syndicate/combat,/obj/item/clothing/gloves/combat,/obj/item/clothing/suit/space/deathsquad/officer,/obj/item/clothing/under/rank/centcom/captain,/obj/item/weapon/storage/box/handcuffs,/obj/item/weapon/storage/box/flashbangs,/obj/item/clothing/mask/gas,/obj/item/weapon/tank/emergency_oxygen/double,/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/specops) "wg" = (/obj/machinery/telecomms/relay/preset/centcom,/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/specops) "wh" = (/obj/machinery/recharge_station/upgraded,/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/specops) "wi" = (/turf/unsimulated/wall{icon = 'icons/obj/library.dmi'; icon_state = "book-5"; name = "bookcase (Tactics)"},/area/centcom/specops) @@ -1598,221 +1598,222 @@ "EL" = (/obj/item/weapon/storage/box/syringes,/obj/item/device/assembly/igniter,/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,/obj/item/device/assembly/timer,/obj/item/weapon/grenade/chem_grenade/large,/obj/item/weapon/grenade/chem_grenade/large,/obj/item/weapon/grenade/chem_grenade/large,/obj/item/weapon/grenade/chem_grenade/large,/obj/item/weapon/gun/syringe/rapidsyringe,/obj/item/weapon/reagent_containers/spray/chemsprayer,/obj/structure/closet,/obj/item/weapon/gun/projectile/shotgun/sc_pump,/obj/item/ammo_casing/shotgun/dart,/obj/item/ammo_casing/shotgun/dart,/obj/item/ammo_casing/shotgun/dart,/obj/item/ammo_casing/shotgun/dart,/obj/item/ammo_casing/shotgun/dart,/obj/item/ammo_casing/shotgun/dart,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin) "EM" = (/turf/space,/turf/unsimulated/wall{dir = 2; icon = 'icons/turf/shuttle.dmi'; icon_state = "diagonalWall3"},/area/admin) "EN" = (/obj/structure/rack,/obj/item/ammo_box/magazine/m10mm,/obj/item/ammo_box/magazine/m10mm,/obj/item/ammo_box/magazine/m10mm,/obj/item/ammo_box/magazine/m10mm,/obj/item/ammo_box/magazine/m10mm,/obj/item/ammo_box/magazine/m10mm,/obj/item/weapon/gun/projectile/automatic/pistol,/obj/item/weapon/gun/projectile/automatic/pistol{pixel_x = 3; pixel_y = -3},/obj/item/weapon/suppressor,/obj/item/weapon/suppressor{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"EO" = (/obj/structure/rack,/obj/item/ammo_box/magazine/m12g,/obj/item/ammo_box/magazine/m12g,/obj/item/ammo_box/magazine/m12g/stun,/obj/item/ammo_box/magazine/m12g/stun,/obj/item/ammo_box/magazine/m12g/dragon,/obj/item/ammo_box/magazine/m12g/dragon,/obj/item/weapon/gun/projectile/automatic/bulldog,/obj/item/weapon/gun/projectile/automatic/bulldog{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"EO" = (/obj/structure/rack,/obj/item/ammo_box/magazine/m12g,/obj/item/ammo_box/magazine/m12g,/obj/item/ammo_box/magazine/m12g/stun,/obj/item/ammo_box/magazine/m12g/stun,/obj/item/ammo_box/magazine/m12g/dragon,/obj/item/ammo_box/magazine/m12g/dragon,/obj/item/weapon/gun/projectile/automatic/shotgun/bulldog,/obj/item/weapon/gun/projectile/automatic/shotgun/bulldog{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) "EP" = (/obj/structure/rack,/obj/item/ammo_box/magazine/smgm45,/obj/item/ammo_box/magazine/smgm45,/obj/item/ammo_box/magazine/smgm45,/obj/item/ammo_box/magazine/smgm45,/obj/item/ammo_box/magazine/smgm45,/obj/item/ammo_box/magazine/smgm45,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/item/weapon/gun/projectile/automatic/c20r{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"EQ" = (/obj/structure/rack,/obj/item/ammo_box/magazine/m75,/obj/item/ammo_box/magazine/m75,/obj/item/ammo_box/magazine/m75,/obj/item/ammo_box/magazine/m75,/obj/item/ammo_box/magazine/m75,/obj/item/ammo_box/magazine/m75,/obj/item/weapon/gun/projectile/automatic/gyropistol,/obj/item/weapon/gun/projectile/automatic/gyropistol{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"ER" = (/obj/structure/rack,/obj/item/ammo_box/magazine/m50,/obj/item/ammo_box/magazine/m50,/obj/item/ammo_box/magazine/m50,/obj/item/ammo_box/magazine/m50,/obj/item/ammo_box/magazine/m50,/obj/item/ammo_box/magazine/m50,/obj/item/weapon/gun/projectile/automatic/deagle,/obj/item/weapon/gun/projectile/automatic/deagle{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"ES" = (/obj/structure/rack,/obj/item/ammo_box/a357,/obj/item/ammo_box/a357,/obj/item/weapon/gun/projectile/revolver/mateba,/obj/item/weapon/gun/projectile/revolver/mateba{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"ET" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/snacks/grown/lemon,/obj/item/weapon/reagent_containers/food/snacks/grown/berries,/obj/item/weapon/reagent_containers/food/snacks/grown/banana,/obj/item/weapon/reagent_containers/food/snacks/grown/cherries,/obj/item/weapon/reagent_containers/food/snacks/grown/orange,/obj/item/weapon/reagent_containers/food/snacks/grown/corn,/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/amanita,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin) -"EU" = (/obj/structure/table,/obj/item/weapon/storage/box/beakers,/obj/item/weapon/reagent_containers/glass/beaker/bluespace,/obj/item/weapon/reagent_containers/glass/beaker/bluespace,/obj/item/weapon/reagent_containers/glass/beaker/bluespace,/obj/item/weapon/reagent_containers/glass/beaker/bluespace,/obj/item/weapon/storage/box/autoinjectors,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin) -"EV" = (/obj/structure/table,/obj/item/weapon/storage/box/syringes,/obj/item/device/assembly/igniter,/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,/obj/item/device/assembly/timer,/obj/item/weapon/grenade/chem_grenade/large,/obj/item/weapon/grenade/chem_grenade/large,/obj/item/weapon/grenade/chem_grenade/large,/obj/item/weapon/grenade/chem_grenade/large,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin) -"EW" = (/obj/structure/table,/obj/item/device/assembly/signaler,/obj/item/device/assembly/signaler,/obj/item/device/assembly/signaler,/obj/item/device/assembly/signaler,/obj/item/device/assembly/signaler,/obj/item/device/assembly/infra,/obj/item/device/assembly/infra,/obj/item/device/assembly/infra,/obj/item/device/assembly/infra,/obj/item/device/assembly/infra,/obj/item/device/assembly/prox_sensor,/obj/item/device/assembly/prox_sensor,/obj/item/device/assembly/prox_sensor,/obj/item/device/assembly/prox_sensor,/obj/item/device/assembly/prox_sensor,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin) -"EX" = (/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/turf/unsimulated/wall{dir = 4; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5"; name = "window"; opacity = 0; tag = "icon-window5 (EAST)"},/area/admin) -"EY" = (/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/turf/unsimulated/wall{dir = 2; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5"; name = "window"; opacity = 0; tag = "icon-window5"},/area/admin) -"EZ" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "ADMINCHEMLOCKDOWN"; name = "Security Doors"; opacity = 0},/obj/machinery/door/airlock/hatch{name = "Chem Lab"; req_access_txt = "0"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin) -"Fa" = (/obj/structure/rack,/obj/item/ammo_box/magazine/m762,/obj/item/ammo_box/magazine/m762,/obj/item/ammo_box/magazine/m762,/obj/item/ammo_box/magazine/m762,/obj/item/weapon/gun/projectile/automatic/l6_saw,/obj/item/weapon/gun/projectile/automatic/l6_saw{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"Fb" = (/obj/structure/rack,/obj/item/weapon/gun/projectile/automatic,/obj/item/weapon/gun/projectile/automatic{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"Fc" = (/obj/structure/rack,/obj/item/ammo_box/magazine/m545,/obj/item/ammo_box/magazine/m545,/obj/item/ammo_box/magazine/m545,/obj/item/ammo_box/magazine/m545,/obj/item/ammo_box/magazine/m545,/obj/item/ammo_box/magazine/m545,/obj/item/ammo_box/a40mm,/obj/item/ammo_box/a40mm,/obj/item/ammo_box/a40mm,/obj/item/ammo_box/a40mm,/obj/item/weapon/gun/projectile/automatic/c90gl,/obj/item/weapon/gun/projectile/automatic/c90gl{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"Fd" = (/obj/structure/mirror{dir = 4; pixel_x = 0; pixel_y = -32},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"Fe" = (/obj/machinery/optable,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin) -"Ff" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/syndicate,/obj/item/weapon/shard,/obj/item/weapon/kitchenknife,/obj/item/weapon/storage/firstaid/tactical,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin) -"Fg" = (/obj/structure/table,/obj/item/weapon/gun/energy/pulse_rifle/pistol,/obj/machinery/door_control{desc = "A remote control switch to lock down the admin lab."; icon_state = "doorctrl0"; id = "ADMINCHEMLOCKDOWN"; name = "Lockdown"; pixel_y = 24; req_access_txt = "0"},/turf/unsimulated/floor{dir = 9; icon_state = "carpetside"},/area/admin) -"Fh" = (/turf/unsimulated/floor{dir = 1; icon_state = "carpetside"},/area/admin) -"Fi" = (/obj/machinery/computer/secure_data,/obj/item/weapon/paper/sop,/turf/unsimulated/floor{dir = 5; icon_state = "carpetside"},/area/admin) -"Fj" = (/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/turf/unsimulated/wall{dir = 8; icon = 'icons/turf/shuttle.dmi'; icon_state = "diagonalWall3"},/area/admin) -"Fk" = (/obj/effect/decal/cleanable/blood,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin) -"Fl" = (/obj/structure/table,/obj/item/stack/cable_coil,/obj/item/stack/rods,/obj/item/weapon/pen,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin) -"Fm" = (/obj/machinery/computer/communications,/turf/unsimulated/floor{dir = 8; icon_state = "carpetside"},/area/admin) -"Fn" = (/obj/structure/stool/bed/chair/office/dark,/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/admin) -"Fo" = (/obj/machinery/computer/med_data,/turf/unsimulated/floor{dir = 4; icon_state = "carpetside"},/area/admin) -"Fp" = (/obj/structure/rack,/obj/item/weapon/shield/energy,/obj/item/weapon/shield/energy{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"Fq" = (/obj/structure/rack,/obj/item/weapon/katana{pixel_x = 3; pixel_y = -3},/obj/item/weapon/katana,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"Fr" = (/obj/structure/rack,/obj/item/weapon/melee/energy/sword,/obj/item/weapon/melee/energy/sword{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"Fs" = (/obj/structure/rack,/obj/machinery/recharger/wallcharger{pixel_x = 30},/obj/item/weapon/gun/energy/xray,/obj/item/weapon/gun/energy/xray{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"Ft" = (/obj/structure/table,/obj/random/toolbox,/obj/random/bomb_supply,/obj/machinery/syndicatebomb/badmin/clown,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"Fu" = (/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"Fv" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/syndicate,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"Fw" = (/obj/structure/table,/obj/item/weapon/rcd,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/storage/pill_bottle/random_drug_bottle,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"Fx" = (/obj/structure/table,/obj/item/weapon/scalpel,/obj/item/weapon/bonesetter,/obj/item/weapon/bonegel,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin) -"Fy" = (/obj/structure/table,/obj/item/weapon/kitchen/utensil/fork,/obj/item/weapon/lighter,/obj/item/weapon/restraints/handcuffs/cable/red,/obj/item/weapon/storage/box/mousetraps,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/pen,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin) -"Fz" = (/obj/structure/table,/obj/structure/window/reinforced,/obj/item/weapon/paper_bin,/obj/item/weapon/pen,/turf/unsimulated/floor{dir = 10; icon_state = "carpetside"},/area/admin) -"FA" = (/obj/structure/table,/obj/machinery/door/window/southleft{name = "security checkpoint"; req_access_txt = "0"},/turf/unsimulated/floor{dir = 2; icon_state = "carpetside"},/area/admin) -"FB" = (/obj/structure/table,/obj/structure/window/reinforced,/obj/machinery/recharger,/turf/unsimulated/floor{dir = 6; icon_state = "carpetside"},/area/admin) -"FC" = (/obj/machinery/recharger/wallcharger{pixel_x = 30},/obj/structure/rack,/obj/item/weapon/gun/energy/pulse_rifle/pistol/m1911,/obj/item/weapon/gun/energy/pulse_rifle/pistol/m1911{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"FD" = (/obj/structure/table,/obj/item/weapon/tank/oxygen/yellow,/obj/random/bomb_supply,/obj/item/clothing/under/rebeloutfit,/obj/item/clothing/suit/poncho/ponchoshame,/obj/item/clothing/head/sombrero/shamebrero,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"FE" = (/obj/machinery/door/airlock/hatch{name = "Tool Storage"; req_access_txt = "0"},/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"FF" = (/obj/structure/table,/obj/item/weapon/FixOVein,/obj/item/weapon/retractor,/obj/item/weapon/cautery,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin) -"FG" = (/obj/structure/kitchenspike,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin) -"FH" = (/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/turf/unsimulated/wall{dir = 2; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5_end"; name = "window"; opacity = 0; tag = "icon-window5_end"},/area/admin) -"FI" = (/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/turf/unsimulated/wall{dir = 2; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5_mid"; name = "window"; opacity = 0; tag = "icon-window5_mid"},/area/admin) -"FJ" = (/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/turf/unsimulated/wall{dir = 1; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5_end"; name = "window"; opacity = 0; tag = "icon-window5_end (NORTH)"},/area/admin) -"FK" = (/turf/simulated/wall/r_wall,/area/adminconstruction) -"FL" = (/obj/structure/rack,/obj/item/weapon/gun/energy/meteorgun,/obj/item/weapon/gun/energy/meteorgun{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"FM" = (/obj/structure/rack,/obj/item/weapon/twohanded/knighthammer{pixel_x = -3; pixel_y = 3},/obj/item/weapon/twohanded/mjollnir,/obj/item/weapon/twohanded/singularityhammer{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"FN" = (/obj/structure/rack,/obj/item/weapon/gun/energy/crossbow,/obj/item/weapon/gun/energy/crossbow{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"FO" = (/obj/machinery/recharger/wallcharger{pixel_x = 30},/obj/structure/rack,/obj/item/weapon/gun/energy/pulse_rifle,/obj/item/weapon/gun/energy/pulse_rifle{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"FP" = (/obj/structure/table,/obj/random/tool,/obj/item/clothing/gloves/color/yellow,/obj/item/weapon/pinpointer/advpinpointer,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"FQ" = (/obj/structure/table,/obj/item/weapon/grenade/syndieminibomb{pixel_x = 4; pixel_y = 2; pixel_z = 0},/obj/item/weapon/grenade/syndieminibomb{pixel_x = -1},/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"FR" = (/obj/structure/table,/obj/machinery/recharger{pixel_y = 0},/obj/item/toy/cards/deck/syndicate/black,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"FS" = (/obj/structure/table,/obj/item/weapon/surgicaldrill,/obj/item/stack/medical/advanced/bruise_pack,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin) -"FT" = (/obj/structure/table,/obj/item/weapon/hemostat,/obj/item/weapon/circular_saw,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin) -"FU" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "ADMINCHEMLOCKDOWN"; name = "Security Doors"; opacity = 0},/obj/machinery/door/airlock/hatch{desc = "Uh oh."; name = "Operating Theater"; req_access_txt = "0"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin) -"FV" = (/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/turf/unsimulated/wall{dir = 4; icon = 'icons/turf/shuttle.dmi'; icon_state = "diagonalWall3"},/area/admin) -"FW" = (/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/admin) -"FX" = (/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/turf/unsimulated/wall{dir = 2; icon = 'icons/turf/shuttle.dmi'; icon_state = "diagonalWall3"},/area/admin) -"FY" = (/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/adminconstruction) -"FZ" = (/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/turf/unsimulated/wall{dir = 4; icon = 'icons/turf/shuttle.dmi'; icon_state = "diagonalWall3"},/area/admin) -"Ga" = (/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/turf/unsimulated/wall{dir = 2; icon = 'icons/turf/shuttle.dmi'; icon_state = "diagonalWall3"},/area/admin) -"Gb" = (/obj/machinery/door/airlock/hatch{desc = "You've heard rumors of the horrors that go on within this lab."; name = "Laboratory (DANGER!)"; req_access_txt = "0"},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"Gc" = (/obj/machinery/computer/ordercomp,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"Gd" = (/obj/machinery/computer/crew,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"Ge" = (/obj/machinery/computer/security{network = list("SS13","Telecomms","Research Outpost","Mining Outpost","ERT","CentCom","Thunderdome")},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"Gf" = (/obj/machinery/computer/rdservercontrol{badmin = 1; name = "Master R&D Server Controller"},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"Gg" = (/obj/machinery/r_n_d/server/centcom,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"Gh" = (/obj/structure/table,/obj/item/weapon/card/id/silver{pixel_x = -3; pixel_y = -3},/obj/item/weapon/card/id/captains_spare,/obj/item/weapon/card/id/fluff/lifetime{pixel_x = 3; pixel_y = 3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"Gi" = (/obj/structure/table,/obj/item/weapon/card/id/centcom{pixel_x = -3; pixel_y = -3},/obj/item/weapon/card/id{pixel_x = 0; pixel_y = 0},/obj/item/weapon/card/id/admin{pixel_x = 3; pixel_y = 3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"Gj" = (/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/turf/unsimulated/wall{dir = 2; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5"; name = "window"; opacity = 0; tag = "icon-window5"},/area/admin) -"Gk" = (/obj/structure/stool/bed/chair/comfy/black,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/admin) -"Gl" = (/obj/machinery/computer/card,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"Gm" = (/obj/structure/stool/bed/chair{dir = 1},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"Gn" = (/obj/machinery/door/airlock/glass{name = "Computer Hub"; req_access_txt = "0"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "ADMINLOCKDOWN"; name = "Security Doors"; opacity = 0},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"Go" = (/obj/effect/landmark{name = "aroomwarp"; tag = ""},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"Gp" = (/obj/machinery/door/airlock/hatch{desc = "For all your shady business needs"; name = "Gambling Den"; req_access_txt = "0"},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/admin) -"Gq" = (/obj/structure/table/woodentable,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/admin) -"Gr" = (/obj/structure/table/woodentable,/obj/item/toy/cards/deck/syndicate,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/admin) -"Gs" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/devilskiss,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/admin) -"Gt" = (/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/turf/unsimulated/wall{desc = "This window appears to be reinforced, it looks nearly impossible to break."; dir = 8; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5_end"; name = "window"; opacity = 0; tag = "icon-window5_end (WEST)"},/area/admin) -"Gu" = (/obj/machinery/computer/artillerycontrol{luminosity = 255},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"Gv" = (/obj/structure/stool/bed/chair{dir = 8},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"Gw" = (/obj/item/weapon/stool,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/admin) -"Gx" = (/obj/structure/table/woodentable,/obj/item/weapon/lighter/zippo/fluff/naples_1,/obj/item/weapon/storage/fancy/cigarettes/dromedaryco,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/admin) -"Gy" = (/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/turf/unsimulated/wall{desc = "This window appears to be reinforced, it looks nearly impossible to break."; dir = 4; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5_end"; name = "window"; opacity = 0; tag = "icon-window5 (EAST)"},/area/admin) -"Gz" = (/obj/machinery/computer/communications,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"GA" = (/obj/structure/stool/bed/chair,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"GB" = (/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/turf/unsimulated/wall{dir = 1; icon = 'icons/turf/shuttle.dmi'; icon_state = "diagonalWall3"},/area/admin) -"GC" = (/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/turf/unsimulated/wall{dir = 8; icon = 'icons/turf/shuttle.dmi'; icon_state = "diagonalWall3"},/area/admin) -"GD" = (/obj/machinery/computer/message_monitor,/obj/item/weapon/paper/monitorkey,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"GE" = (/obj/machinery/computer/atmos_alert,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"GF" = (/obj/machinery/computer/secure_data,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"GG" = (/obj/machinery/computer/account_database{name = "Admin Accounts Database"},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"GH" = (/obj/structure/table,/obj/item/weapon/gun/projectile/automatic/pistol,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"GI" = (/obj/structure/table,/obj/machinery/door_control{desc = "A remote control switch to lock down external access to the admin room."; icon_state = "doorctrl0"; id = "ADMINLOCKDOWN"; name = "Lockdown"; pixel_y = 0; req_access_txt = "0"},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"GJ" = (/obj/structure/table,/obj/item/weapon/storage/fancy/cigarettes/syndicate,/obj/item/weapon/reagent_containers/food/drinks/cans/adminbooze,/obj/item/weapon/reagent_containers/food/drinks/cans/badminbrew,/obj/item/weapon/reagent_containers/food/drinks/cans/madminmalt,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"GK" = (/obj/machinery/door/airlock/hatch{desc = "Danger: May contain robustness"; name = "Dojo"; req_access_txt = "0"},/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"GL" = (/obj/machinery/door/airlock/glass{name = "Shuttle Bay"; req_access_txt = "0"},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"GM" = (/obj/structure/showcase,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"GN" = (/obj/item/weapon/storage/toolbox/syndicate{desc = "A powerful relic many men worked long and hard to keep safe and away from the forces of evil."; force = 1e+008; name = "toolbox of robustness"},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/table/woodentable,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"GO" = (/turf/unsimulated/floor{icon_state = "gcircuit"},/area/admin) -"GP" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/item/weapon/grenade/clusterbuster/smoke,/obj/structure/table/woodentable,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"GQ" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/table/woodentable,/obj/item/weapon/sleeping_carp_scroll,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"GR" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/table/woodentable,/obj/item/weapon/twohanded/bostaff,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"GS" = (/obj/structure/ninjatele{pixel_x = -28},/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"GT" = (/obj/structure/ninjatele{pixel_x = 28},/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"GU" = (/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/turf/unsimulated/wall{dir = 1; icon = 'icons/turf/shuttle.dmi'; icon_state = "diagonalWall3"},/area/admin) -"GV" = (/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/turf/unsimulated/wall{dir = 8; icon = 'icons/turf/shuttle.dmi'; icon_state = "diagonalWall3"},/area/admin) -"GW" = (/obj/structure/stool/bed,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"GX" = (/obj/effect/decal/cleanable/blood,/obj/structure/toilet{dir = 8},/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"GY" = (/obj/effect/decal/cleanable/fungus,/turf/unsimulated/wall{tag = "icon-wall3 (EAST)"; icon = 'icons/turf/shuttle.dmi'; icon_state = "wall3"; dir = 4},/area/admin) -"GZ" = (/turf/unsimulated/floor{icon_state = "engine"},/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/wall{dir = 1; icon = 'icons/turf/shuttle.dmi'; icon_state = "diagonalWall3"},/area/admin) -"Ha" = (/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "engine"},/area/admin) -"Hb" = (/obj/machinery/door/window{dir = 1; name = "Suit Storage"; req_access_txt = "0"},/turf/unsimulated/floor{icon_state = "engine"},/area/admin) -"Hc" = (/turf/unsimulated/floor{icon_state = "engine"},/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/wall{dir = 8; icon = 'icons/turf/shuttle.dmi'; icon_state = "diagonalWall3"},/area/admin) -"Hd" = (/obj/structure/window/reinforced,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"He" = (/obj/machinery/door/window/southleft{name = "Cell B"; req_access_txt = "101"},/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"Hf" = (/obj/structure/rack,/obj/item/clothing/suit/space/space_ninja,/turf/unsimulated/floor{icon_state = "engine"},/area/admin) -"Hg" = (/turf/unsimulated/floor{icon_state = "engine"},/area/admin) -"Hh" = (/obj/structure/rack,/obj/item/clothing/head/helmet/space/space_ninja,/turf/unsimulated/floor{icon_state = "engine"},/area/admin) -"Hi" = (/turf/unsimulated/wall,/area/tdome) -"Hj" = (/turf/unsimulated/wall{desc = "The door appears to be locked tightly."; icon = 'icons/obj/doors/Doorhatchele.dmi'; icon_state = "door_closed"; name = "Locked Door"},/area/tdome) -"Hk" = (/obj/machinery/iv_drip,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"Hl" = (/obj/structure/stool/bed/chair,/obj/effect/decal/cleanable/blood,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"Hm" = (/obj/machinery/vending/medical,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"Hn" = (/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/turf/unsimulated/wall{dir = 4; icon = 'icons/turf/shuttle.dmi'; icon_state = "diagonalWall3"},/area/admin) -"Ho" = (/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/turf/unsimulated/wall{dir = 2; icon = 'icons/turf/shuttle.dmi'; icon_state = "diagonalWall3"},/area/admin) -"Hp" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/handcuffs,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"Hq" = (/obj/structure/table/reinforced,/obj/item/clothing/suit/straight_jacket,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"Hr" = (/obj/structure/table/reinforced,/obj/item/clothing/glasses/sunglasses/blindfold,/obj/item/clothing/mask/muzzle,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"Hs" = (/turf/unsimulated/floor{icon_state = "engine"},/turf/unsimulated/wall{dir = 4; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5"; name = "window"; opacity = 0; tag = "icon-window5 (EAST)"},/area/admin) -"Ht" = (/obj/structure/rack,/obj/item/clothing/gloves/space_ninja,/turf/unsimulated/floor{icon_state = "engine"},/area/admin) -"Hu" = (/obj/structure/rack,/obj/item/weapon/katana/energy,/obj/item/clothing/mask/gas/voice/space_ninja,/turf/unsimulated/floor{icon_state = "engine"},/area/admin) -"Hv" = (/obj/structure/rack,/obj/item/clothing/shoes/space_ninja,/turf/unsimulated/floor{icon_state = "engine"},/area/admin) -"Hw" = (/obj/structure/closet/secure_closet/bar{req_access = null; req_access_txt = "112"},/turf/unsimulated/floor{icon_state = "white"},/area/tdome) -"Hx" = (/turf/unsimulated/floor{icon_state = "white"},/area/tdome) -"Hy" = (/obj/machinery/gibber,/turf/unsimulated/floor{icon_state = "white"},/area/tdome) -"Hz" = (/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/turf/unsimulated/wall{dir = 4; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5"; name = "window"; opacity = 0; tag = "icon-window5 (EAST)"},/area/admin) -"HA" = (/obj/machinery/door/airlock/hatch{desc = "Uh oh. You'd better hope you aren't going in here!"; name = "Prisoner Treatment"},/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"HB" = (/obj/machinery/door/airlock/hatch{desc = "Uh oh. You'd better hope you aren't going in here!"; name = "Detainment"},/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"HC" = (/turf/unsimulated/floor{icon_state = "engine"},/turf/unsimulated/wall{dir = 2; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5"; name = "window"; opacity = 0; tag = "icon-window5"},/area/admin) -"HD" = (/obj/machinery/vending/cigarette,/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/tdome/tdomeobserve) -"HE" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/cans/beer,/obj/item/weapon/reagent_containers/food/drinks/cans/beer,/obj/item/weapon/reagent_containers/food/drinks/cans/beer,/obj/item/weapon/lighter/zippo,/obj/item/weapon/storage/fancy/cigarettes,/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/tdome/tdomeobserve) -"HF" = (/obj/structure/table{icon_state = "tabledir"; dir = 2},/obj/item/weapon/reagent_containers/food/drinks/cans/cola,/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/tdome/tdomeobserve) -"HG" = (/obj/structure/reagent_dispensers/beerkeg,/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/tdome/tdomeobserve) -"HH" = (/obj/machinery/computer/security/telescreen{desc = "Used for watching the Thunderdome."; name = "Thunderdome Telescreen"; network = list("Thunderdome"); pixel_y = 30},/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/tdome/tdomeobserve) -"HI" = (/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/tdome/tdomeobserve) -"HJ" = (/obj/machinery/vending/coffee,/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/tdome/tdomeobserve) -"HK" = (/obj/structure/table/reinforced,/obj/item/weapon/melee/classic_baton/telescopic,/obj/item/weapon/paper/Court,/obj/item/weapon/pen,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"HL" = (/obj/structure/table/reinforced,/obj/item/weapon/scalpel,/obj/item/weapon/storage/box/syndie_kit/mindslave,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"HM" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/mousetraps,/obj/item/weapon/storage/box/trackimp,/obj/item/weapon/storage/box/syndie_kit/imp_explosive,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"HN" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/flashbangs,/obj/item/weapon/storage/box/flashes,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"HO" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/grenades,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"HP" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/teargas,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"HQ" = (/obj/structure/closet/secure_closet/freezer/meat{req_access_txt = "112"},/turf/unsimulated/floor{icon_state = "white"},/area/tdome) -"HR" = (/obj/structure/closet/secure_closet/freezer/fridge{req_access_txt = "112"},/turf/unsimulated/floor{icon_state = "white"},/area/tdome) -"HS" = (/obj/structure/stool/bed/chair,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/tdome/tdomeobserve) -"HT" = (/obj/machinery/vending/snack,/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/tdome/tdomeobserve) -"HU" = (/obj/structure/window/reinforced{dir = 1; layer = 2.9},/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"HV" = (/obj/machinery/door/window{dir = 1; name = "Cell A"; req_access_txt = "101"},/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"HW" = (/obj/structure/table{icon_state = "tabledir"; dir = 9},/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/turf/unsimulated/floor{icon_state = "white"},/area/tdome) -"HX" = (/obj/structure/table,/obj/machinery/kitchen_machine/microwave/upgraded,/turf/unsimulated/floor{icon_state = "white"},/area/tdome) -"HY" = (/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "white"},/area/tdome) -"HZ" = (/obj/item/device/camera,/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/tdome/tdomeobserve) -"Ia" = (/obj/structure/toilet{dir = 8},/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) -"Ib" = (/obj/structure/rack,/obj/item/clothing/under/color/red,/obj/item/clothing/shoes/brown,/obj/item/weapon/grenade/smokebomb,/obj/item/weapon/legcuffs/beartrap,/obj/item/weapon/sleeping_carp_scroll,/obj/item/weapon/twohanded/bostaff,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena) -"Ic" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (WEST)"; icon_state = "fakewindows"; dir = 8},/area/tdome) -"Id" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows2 (WEST)"; icon_state = "fakewindows2"; dir = 8},/area/tdome) -"Ie" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (EAST)"; icon_state = "fakewindows"; dir = 4},/area/tdome) -"If" = (/obj/structure/rack,/obj/item/clothing/under/color/green,/obj/item/clothing/shoes/brown,/obj/item/weapon/grenade/smokebomb,/obj/item/weapon/legcuffs/beartrap,/obj/item/weapon/sleeping_carp_scroll,/obj/item/weapon/twohanded/bostaff,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena) -"Ig" = (/obj/machinery/door/poddoor{id_tag = "thunderdomeaxe"; name = "Axe Supply"},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena) -"Ih" = (/obj/structure/rack,/obj/item/clothing/under/color/red,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/tdome/red,/obj/item/clothing/head/helmet/thunderdome,/obj/item/weapon/melee/energy/sword/red,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena) -"Ii" = (/obj/machinery/door/poddoor{id_tag = "thunderdomegen"; name = "General Supply"},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena) -"Ij" = (/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome2) -"Ik" = (/obj/machinery/door/poddoor{id_tag = "thunderdome"; name = "Thunderdome Blast Door"},/turf/unsimulated/floor{name = "plating"},/area/tdome/arena) -"Il" = (/turf/simulated/floor{icon_state = "red"; dir = 8},/area/tdome/arena) -"Im" = (/turf/simulated/floor{icon_state = "green"; dir = 4},/area/tdome/arena) -"In" = (/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome1) -"Io" = (/obj/structure/rack,/obj/item/clothing/under/color/green,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/tdome/green,/obj/item/clothing/head/helmet/thunderdome,/obj/item/weapon/melee/energy/sword/green,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena) -"Ip" = (/obj/machinery/door/airlock/hatch{name = "Teleporter Access"; req_access_txt = "0"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "ADMINLOCKDOWN"; name = "Security Doors"; opacity = 0},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"Iq" = (/obj/effect/landmark{name = "tdome2"},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome2) -"Ir" = (/obj/effect/landmark{name = "tdome1"},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome1) -"Is" = (/obj/structure/rack,/obj/item/weapon/tank/jetpack/oxygen,/obj/item/weapon/tank/jetpack/oxygen,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"It" = (/obj/structure/rack,/obj/item/clothing/suit/space,/obj/item/clothing/suit/space,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space,/obj/item/clothing/head/helmet/space,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"Iu" = (/obj/machinery/camera{pixel_x = 11; pixel_y = -9; network = list("Thunderdome"); c_tag = "Thunderdome Red Team"},/obj/effect/landmark{name = "tdome2"},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome2) -"Iv" = (/turf/simulated/floor/bluegrid,/area/tdome/arena) -"Iw" = (/obj/machinery/flasher{id = "flash"; name = "Thunderdome Flash"},/turf/simulated/floor/bluegrid,/area/tdome/arena) -"Ix" = (/obj/machinery/camera{pixel_x = 12; pixel_y = -10; network = list("Thunderdome"); c_tag = "Thunderdome Green Team"},/obj/effect/landmark{name = "tdome1"},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome1) -"Iy" = (/obj/machinery/camera{pixel_x = 10; network = list("Thunderdome"); c_tag = "Thunderdome Arena"},/turf/simulated/floor/bluegrid,/area/tdome/arena) -"Iz" = (/obj/structure/table,/obj/random/powercell,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"IA" = (/obj/structure/table,/obj/random/tool,/obj/random/bomb_supply,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"IB" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"IC" = (/obj/structure/table,/obj/random/technology_scanner,/obj/random/tech_supply,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"ID" = (/obj/machinery/door/poddoor{id_tag = "thunderdomehea"; name = "Heavy Supply"},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena) -"IE" = (/obj/structure/table,/obj/item/clothing/gloves/color/yellow,/obj/random/bomb_supply,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"IF" = (/obj/machinery/computer/teleporter,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"IG" = (/obj/machinery/teleport/station,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"IH" = (/obj/machinery/teleport/hub/upgraded,/turf/unsimulated/floor{tag = "icon-delivery"; icon_state = "delivery"},/area/admin) -"II" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/electrical,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"IJ" = (/obj/structure/rack,/obj/item/clothing/under/color/red,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/vest,/obj/item/clothing/head/helmet/swat,/obj/item/weapon/gun/energy/laser,/obj/item/weapon/shield/energy,/obj/machinery/recharger/wallcharger{pixel_x = 3; pixel_y = -30},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena) -"IK" = (/obj/structure/rack,/obj/item/clothing/under/color/green,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/vest,/obj/item/clothing/head/helmet/swat,/obj/item/weapon/gun/energy/laser,/obj/item/weapon/shield/energy,/obj/machinery/recharger/wallcharger{pixel_x = 3; pixel_y = -30},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena) -"IL" = (/turf/unsimulated/floor{tag = "icon-redyellowfull (NORTHEAST)"; icon_state = "redyellowfull"; dir = 5},/area/tdome/tdomeadmin) -"IM" = (/obj/structure/stool/bed/chair{dir = 1},/obj/effect/landmark{name = "tdomeadmin"},/turf/unsimulated/floor{tag = "icon-redyellowfull (NORTHEAST)"; icon_state = "redyellowfull"; dir = 5},/area/tdome/tdomeadmin) -"IN" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/devilskiss,/turf/unsimulated/floor{tag = "icon-redyellowfull (NORTHEAST)"; icon_state = "redyellowfull"; dir = 5},/area/tdome/tdomeadmin) -"IO" = (/obj/structure/stool/bed/chair/comfy/black{dir = 1},/turf/unsimulated/floor{tag = "icon-redyellowfull (NORTHEAST)"; icon_state = "redyellowfull"; dir = 5},/area/tdome/tdomeadmin) -"IP" = (/obj/structure/table,/obj/machinery/door_control{desc = "A remote control switch for port-side blast doors."; icon_state = "doorctrl0"; id = "thunderdome"; name = "Main Blast Doors"; pixel_x = -3; pixel_y = 0; req_access_txt = "104"},/turf/unsimulated/floor{tag = "icon-redyellowfull (NORTHEAST)"; icon_state = "redyellowfull"; dir = 5},/area/tdome/tdomeadmin) -"IQ" = (/obj/machinery/computer/security/telescreen{desc = "Used for watching the Thunderdome."; name = "Thunderdome Telescreen"; network = list("Thunderdome"); pixel_y = -30},/turf/unsimulated/floor{tag = "icon-redyellowfull (NORTHEAST)"; icon_state = "redyellowfull"; dir = 5},/area/tdome/tdomeadmin) -"IR" = (/turf/unsimulated/floor{icon_state = "floor"},/area/tdome/tdomeadmin) -"IS" = (/obj/structure/table,/obj/machinery/door_control{desc = "A remote control switch for port-side blast doors."; icon_state = "doorctrl0"; id = "thunderdomehea"; name = "Ranged Gear"; pixel_x = 0; pixel_y = 5; req_access_txt = "104"},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome/tdomeadmin) -"IT" = (/obj/structure/table,/obj/machinery/door_control{desc = "A remote control switch for port-side blast doors."; icon_state = "doorctrl0"; id = "thunderdomegen"; name = "General Equiptment"; pixel_x = 0; pixel_y = 5; req_access_txt = "104"},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome/tdomeadmin) -"IU" = (/obj/structure/table,/obj/machinery/door_control{desc = "A remote control switch for port-side blast doors."; icon_state = "doorctrl0"; id = "thunderdomeaxe"; name = "Specialist Supply"; pixel_x = 0; pixel_y = 5; req_access_txt = "104"},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome/tdomeadmin) +"EQ" = (/obj/machinery/vending/liberationstation,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"ER" = (/obj/structure/rack,/obj/item/ammo_box/magazine/m75,/obj/item/ammo_box/magazine/m75,/obj/item/ammo_box/magazine/m75,/obj/item/ammo_box/magazine/m75,/obj/item/ammo_box/magazine/m75,/obj/item/ammo_box/magazine/m75,/obj/item/weapon/gun/projectile/automatic/gyropistol,/obj/item/weapon/gun/projectile/automatic/gyropistol{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"ES" = (/obj/structure/rack,/obj/item/ammo_box/magazine/m50,/obj/item/ammo_box/magazine/m50,/obj/item/ammo_box/magazine/m50,/obj/item/ammo_box/magazine/m50,/obj/item/ammo_box/magazine/m50,/obj/item/ammo_box/magazine/m50,/obj/item/weapon/gun/projectile/automatic/pistol/deagle,/obj/item/weapon/gun/projectile/automatic/pistol/deagle{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"ET" = (/obj/structure/rack,/obj/item/ammo_box/a357,/obj/item/ammo_box/a357,/obj/item/weapon/gun/projectile/revolver/mateba,/obj/item/weapon/gun/projectile/revolver/mateba{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"EU" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/snacks/grown/lemon,/obj/item/weapon/reagent_containers/food/snacks/grown/berries,/obj/item/weapon/reagent_containers/food/snacks/grown/banana,/obj/item/weapon/reagent_containers/food/snacks/grown/cherries,/obj/item/weapon/reagent_containers/food/snacks/grown/orange,/obj/item/weapon/reagent_containers/food/snacks/grown/corn,/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/amanita,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin) +"EV" = (/obj/structure/table,/obj/item/weapon/storage/box/beakers,/obj/item/weapon/reagent_containers/glass/beaker/bluespace,/obj/item/weapon/reagent_containers/glass/beaker/bluespace,/obj/item/weapon/reagent_containers/glass/beaker/bluespace,/obj/item/weapon/reagent_containers/glass/beaker/bluespace,/obj/item/weapon/storage/box/autoinjectors,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin) +"EW" = (/obj/structure/table,/obj/item/weapon/storage/box/syringes,/obj/item/device/assembly/igniter,/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,/obj/item/device/assembly/timer,/obj/item/weapon/grenade/chem_grenade/large,/obj/item/weapon/grenade/chem_grenade/large,/obj/item/weapon/grenade/chem_grenade/large,/obj/item/weapon/grenade/chem_grenade/large,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin) +"EX" = (/obj/structure/table,/obj/item/device/assembly/signaler,/obj/item/device/assembly/signaler,/obj/item/device/assembly/signaler,/obj/item/device/assembly/signaler,/obj/item/device/assembly/signaler,/obj/item/device/assembly/infra,/obj/item/device/assembly/infra,/obj/item/device/assembly/infra,/obj/item/device/assembly/infra,/obj/item/device/assembly/infra,/obj/item/device/assembly/prox_sensor,/obj/item/device/assembly/prox_sensor,/obj/item/device/assembly/prox_sensor,/obj/item/device/assembly/prox_sensor,/obj/item/device/assembly/prox_sensor,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin) +"EY" = (/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/turf/unsimulated/wall{dir = 4; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5"; name = "window"; opacity = 0; tag = "icon-window5 (EAST)"},/area/admin) +"EZ" = (/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/turf/unsimulated/wall{dir = 2; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5"; name = "window"; opacity = 0; tag = "icon-window5"},/area/admin) +"Fa" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "ADMINCHEMLOCKDOWN"; name = "Security Doors"; opacity = 0},/obj/machinery/door/airlock/hatch{name = "Chem Lab"; req_access_txt = "0"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin) +"Fb" = (/obj/structure/rack,/obj/item/ammo_box/magazine/m762,/obj/item/ammo_box/magazine/m762,/obj/item/ammo_box/magazine/m762,/obj/item/ammo_box/magazine/m762,/obj/item/weapon/gun/projectile/automatic/l6_saw,/obj/item/weapon/gun/projectile/automatic/l6_saw{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"Fc" = (/obj/structure/rack,/obj/item/weapon/gun/projectile/automatic/proto,/obj/item/weapon/gun/projectile/automatic/proto{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"Fd" = (/obj/structure/rack,/obj/item/ammo_box/magazine/m556,/obj/item/ammo_box/magazine/m556,/obj/item/ammo_box/magazine/m556,/obj/item/ammo_box/magazine/m556,/obj/item/ammo_box/magazine/m556,/obj/item/ammo_box/magazine/m556,/obj/item/ammo_box/a40mm,/obj/item/ammo_box/a40mm,/obj/item/ammo_box/a40mm,/obj/item/ammo_box/a40mm,/obj/item/weapon/gun/projectile/automatic/m90,/obj/item/weapon/gun/projectile/automatic/m90{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"Fe" = (/obj/structure/mirror{dir = 4; pixel_x = 0; pixel_y = -32},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"Ff" = (/obj/machinery/optable,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin) +"Fg" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/syndicate,/obj/item/weapon/shard,/obj/item/weapon/kitchenknife,/obj/item/weapon/storage/firstaid/tactical,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin) +"Fh" = (/obj/structure/table,/obj/item/weapon/gun/energy/pulse_rifle/pistol,/obj/machinery/door_control{desc = "A remote control switch to lock down the admin lab."; icon_state = "doorctrl0"; id = "ADMINCHEMLOCKDOWN"; name = "Lockdown"; pixel_y = 24; req_access_txt = "0"},/turf/unsimulated/floor{dir = 9; icon_state = "carpetside"},/area/admin) +"Fi" = (/turf/unsimulated/floor{dir = 1; icon_state = "carpetside"},/area/admin) +"Fj" = (/obj/machinery/computer/secure_data,/obj/item/weapon/paper/sop,/turf/unsimulated/floor{dir = 5; icon_state = "carpetside"},/area/admin) +"Fk" = (/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/turf/unsimulated/wall{dir = 8; icon = 'icons/turf/shuttle.dmi'; icon_state = "diagonalWall3"},/area/admin) +"Fl" = (/obj/effect/decal/cleanable/blood,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin) +"Fm" = (/obj/structure/table,/obj/item/stack/cable_coil,/obj/item/stack/rods,/obj/item/weapon/pen,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin) +"Fn" = (/obj/machinery/computer/communications,/turf/unsimulated/floor{dir = 8; icon_state = "carpetside"},/area/admin) +"Fo" = (/obj/structure/stool/bed/chair/office/dark,/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/admin) +"Fp" = (/obj/machinery/computer/med_data,/turf/unsimulated/floor{dir = 4; icon_state = "carpetside"},/area/admin) +"Fq" = (/obj/structure/rack,/obj/item/weapon/shield/energy,/obj/item/weapon/shield/energy{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"Fr" = (/obj/structure/rack,/obj/item/weapon/katana{pixel_x = 3; pixel_y = -3},/obj/item/weapon/katana,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"Fs" = (/obj/structure/rack,/obj/item/weapon/melee/energy/sword,/obj/item/weapon/melee/energy/sword{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"Ft" = (/obj/structure/rack,/obj/machinery/recharger/wallcharger{pixel_x = 30},/obj/item/weapon/gun/energy/xray,/obj/item/weapon/gun/energy/xray{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"Fu" = (/obj/structure/table,/obj/random/toolbox,/obj/random/bomb_supply,/obj/machinery/syndicatebomb/badmin/clown,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) +"Fv" = (/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) +"Fw" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/syndicate,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) +"Fx" = (/obj/structure/table,/obj/item/weapon/rcd,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/storage/pill_bottle/random_drug_bottle,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) +"Fy" = (/obj/structure/table,/obj/item/weapon/scalpel,/obj/item/weapon/bonesetter,/obj/item/weapon/bonegel,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin) +"Fz" = (/obj/structure/table,/obj/item/weapon/kitchen/utensil/fork,/obj/item/weapon/lighter,/obj/item/weapon/restraints/handcuffs/cable/red,/obj/item/weapon/storage/box/mousetraps,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/pen,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin) +"FA" = (/obj/structure/table,/obj/structure/window/reinforced,/obj/item/weapon/paper_bin,/obj/item/weapon/pen,/turf/unsimulated/floor{dir = 10; icon_state = "carpetside"},/area/admin) +"FB" = (/obj/structure/table,/obj/machinery/door/window/southleft{name = "security checkpoint"; req_access_txt = "0"},/turf/unsimulated/floor{dir = 2; icon_state = "carpetside"},/area/admin) +"FC" = (/obj/structure/table,/obj/structure/window/reinforced,/obj/machinery/recharger,/turf/unsimulated/floor{dir = 6; icon_state = "carpetside"},/area/admin) +"FD" = (/obj/machinery/recharger/wallcharger{pixel_x = 30},/obj/structure/rack,/obj/item/weapon/gun/energy/pulse_rifle/pistol/m1911,/obj/item/weapon/gun/energy/pulse_rifle/pistol/m1911{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"FE" = (/obj/structure/table,/obj/item/weapon/tank/oxygen/yellow,/obj/random/bomb_supply,/obj/item/clothing/under/rebeloutfit,/obj/item/clothing/suit/poncho/ponchoshame,/obj/item/clothing/head/sombrero/shamebrero,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) +"FF" = (/obj/machinery/door/airlock/hatch{name = "Tool Storage"; req_access_txt = "0"},/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) +"FG" = (/obj/structure/table,/obj/item/weapon/FixOVein,/obj/item/weapon/retractor,/obj/item/weapon/cautery,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin) +"FH" = (/obj/structure/kitchenspike,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin) +"FI" = (/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/turf/unsimulated/wall{dir = 2; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5_end"; name = "window"; opacity = 0; tag = "icon-window5_end"},/area/admin) +"FJ" = (/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/turf/unsimulated/wall{dir = 2; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5_mid"; name = "window"; opacity = 0; tag = "icon-window5_mid"},/area/admin) +"FK" = (/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/turf/unsimulated/wall{dir = 1; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5_end"; name = "window"; opacity = 0; tag = "icon-window5_end (NORTH)"},/area/admin) +"FL" = (/turf/simulated/wall/r_wall,/area/adminconstruction) +"FM" = (/obj/structure/rack,/obj/item/weapon/gun/energy/meteorgun,/obj/item/weapon/gun/energy/meteorgun{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"FN" = (/obj/structure/rack,/obj/item/weapon/twohanded/knighthammer{pixel_x = -3; pixel_y = 3},/obj/item/weapon/twohanded/mjollnir,/obj/item/weapon/twohanded/singularityhammer{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"FO" = (/obj/structure/rack,/obj/item/weapon/gun/energy/crossbow,/obj/item/weapon/gun/energy/crossbow{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"FP" = (/obj/machinery/recharger/wallcharger{pixel_x = 30},/obj/structure/rack,/obj/item/weapon/gun/energy/pulse_rifle,/obj/item/weapon/gun/energy/pulse_rifle{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"FQ" = (/obj/structure/table,/obj/random/tool,/obj/item/clothing/gloves/color/yellow,/obj/item/weapon/pinpointer/advpinpointer,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) +"FR" = (/obj/structure/table,/obj/item/weapon/grenade/syndieminibomb{pixel_x = 4; pixel_y = 2; pixel_z = 0},/obj/item/weapon/grenade/syndieminibomb{pixel_x = -1},/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) +"FS" = (/obj/structure/table,/obj/machinery/recharger{pixel_y = 0},/obj/item/toy/cards/deck/syndicate/black,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) +"FT" = (/obj/structure/table,/obj/item/weapon/surgicaldrill,/obj/item/stack/medical/advanced/bruise_pack,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin) +"FU" = (/obj/structure/table,/obj/item/weapon/hemostat,/obj/item/weapon/circular_saw,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin) +"FV" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "ADMINCHEMLOCKDOWN"; name = "Security Doors"; opacity = 0},/obj/machinery/door/airlock/hatch{desc = "Uh oh."; name = "Operating Theater"; req_access_txt = "0"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/admin) +"FW" = (/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/turf/unsimulated/wall{dir = 4; icon = 'icons/turf/shuttle.dmi'; icon_state = "diagonalWall3"},/area/admin) +"FX" = (/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/admin) +"FY" = (/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/turf/unsimulated/wall{dir = 2; icon = 'icons/turf/shuttle.dmi'; icon_state = "diagonalWall3"},/area/admin) +"FZ" = (/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/adminconstruction) +"Ga" = (/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/turf/unsimulated/wall{dir = 4; icon = 'icons/turf/shuttle.dmi'; icon_state = "diagonalWall3"},/area/admin) +"Gb" = (/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/turf/unsimulated/wall{dir = 2; icon = 'icons/turf/shuttle.dmi'; icon_state = "diagonalWall3"},/area/admin) +"Gc" = (/obj/machinery/door/airlock/hatch{desc = "You've heard rumors of the horrors that go on within this lab."; name = "Laboratory (DANGER!)"; req_access_txt = "0"},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"Gd" = (/obj/machinery/computer/ordercomp,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"Ge" = (/obj/machinery/computer/crew,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"Gf" = (/obj/machinery/computer/security{network = list("SS13","Telecomms","Research Outpost","Mining Outpost","ERT","CentCom","Thunderdome")},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"Gg" = (/obj/machinery/computer/rdservercontrol{badmin = 1; name = "Master R&D Server Controller"},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"Gh" = (/obj/machinery/r_n_d/server/centcom,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"Gi" = (/obj/structure/table,/obj/item/weapon/card/id/silver{pixel_x = -3; pixel_y = -3},/obj/item/weapon/card/id/captains_spare,/obj/item/weapon/card/id/fluff/lifetime{pixel_x = 3; pixel_y = 3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"Gj" = (/obj/structure/table,/obj/item/weapon/card/id/centcom{pixel_x = -3; pixel_y = -3},/obj/item/weapon/card/id{pixel_x = 0; pixel_y = 0},/obj/item/weapon/card/id/admin{pixel_x = 3; pixel_y = 3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"Gk" = (/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/turf/unsimulated/wall{dir = 2; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5"; name = "window"; opacity = 0; tag = "icon-window5"},/area/admin) +"Gl" = (/obj/structure/stool/bed/chair/comfy/black,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/admin) +"Gm" = (/obj/machinery/computer/card,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"Gn" = (/obj/structure/stool/bed/chair{dir = 1},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"Go" = (/obj/machinery/door/airlock/glass{name = "Computer Hub"; req_access_txt = "0"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "ADMINLOCKDOWN"; name = "Security Doors"; opacity = 0},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"Gp" = (/obj/effect/landmark{name = "aroomwarp"; tag = ""},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"Gq" = (/obj/machinery/door/airlock/hatch{desc = "For all your shady business needs"; name = "Gambling Den"; req_access_txt = "0"},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/admin) +"Gr" = (/obj/structure/table/woodentable,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/admin) +"Gs" = (/obj/structure/table/woodentable,/obj/item/toy/cards/deck/syndicate,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/admin) +"Gt" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/devilskiss,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/admin) +"Gu" = (/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/turf/unsimulated/wall{desc = "This window appears to be reinforced, it looks nearly impossible to break."; dir = 8; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5_end"; name = "window"; opacity = 0; tag = "icon-window5_end (WEST)"},/area/admin) +"Gv" = (/obj/machinery/computer/artillerycontrol{luminosity = 255},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"Gw" = (/obj/structure/stool/bed/chair{dir = 8},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"Gx" = (/obj/item/weapon/stool,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/admin) +"Gy" = (/obj/structure/table/woodentable,/obj/item/weapon/lighter/zippo/fluff/naples_1,/obj/item/weapon/storage/fancy/cigarettes/dromedaryco,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/admin) +"Gz" = (/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/turf/unsimulated/wall{desc = "This window appears to be reinforced, it looks nearly impossible to break."; dir = 4; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5_end"; name = "window"; opacity = 0; tag = "icon-window5 (EAST)"},/area/admin) +"GA" = (/obj/machinery/computer/communications,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"GB" = (/obj/structure/stool/bed/chair,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"GC" = (/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/turf/unsimulated/wall{dir = 1; icon = 'icons/turf/shuttle.dmi'; icon_state = "diagonalWall3"},/area/admin) +"GD" = (/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/turf/unsimulated/wall{dir = 8; icon = 'icons/turf/shuttle.dmi'; icon_state = "diagonalWall3"},/area/admin) +"GE" = (/obj/machinery/computer/message_monitor,/obj/item/weapon/paper/monitorkey,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"GF" = (/obj/machinery/computer/atmos_alert,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"GG" = (/obj/machinery/computer/secure_data,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"GH" = (/obj/machinery/computer/account_database{name = "Admin Accounts Database"},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"GI" = (/obj/structure/table,/obj/item/weapon/gun/projectile/automatic/pistol,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"GJ" = (/obj/structure/table,/obj/machinery/door_control{desc = "A remote control switch to lock down external access to the admin room."; icon_state = "doorctrl0"; id = "ADMINLOCKDOWN"; name = "Lockdown"; pixel_y = 0; req_access_txt = "0"},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"GK" = (/obj/structure/table,/obj/item/weapon/storage/fancy/cigarettes/syndicate,/obj/item/weapon/reagent_containers/food/drinks/cans/adminbooze,/obj/item/weapon/reagent_containers/food/drinks/cans/badminbrew,/obj/item/weapon/reagent_containers/food/drinks/cans/madminmalt,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"GL" = (/obj/machinery/door/airlock/hatch{desc = "Danger: May contain robustness"; name = "Dojo"; req_access_txt = "0"},/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) +"GM" = (/obj/machinery/door/airlock/glass{name = "Shuttle Bay"; req_access_txt = "0"},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"GN" = (/obj/structure/showcase,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) +"GO" = (/obj/item/weapon/storage/toolbox/syndicate{desc = "A powerful relic many men worked long and hard to keep safe and away from the forces of evil."; force = 1e+008; name = "toolbox of robustness"},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/table/woodentable,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) +"GP" = (/turf/unsimulated/floor{icon_state = "gcircuit"},/area/admin) +"GQ" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/item/weapon/grenade/clusterbuster/smoke,/obj/structure/table/woodentable,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) +"GR" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/table/woodentable,/obj/item/weapon/sleeping_carp_scroll,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) +"GS" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/table/woodentable,/obj/item/weapon/twohanded/bostaff,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) +"GT" = (/obj/structure/ninjatele{pixel_x = -28},/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) +"GU" = (/obj/structure/ninjatele{pixel_x = 28},/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) +"GV" = (/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/turf/unsimulated/wall{dir = 1; icon = 'icons/turf/shuttle.dmi'; icon_state = "diagonalWall3"},/area/admin) +"GW" = (/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/turf/unsimulated/wall{dir = 8; icon = 'icons/turf/shuttle.dmi'; icon_state = "diagonalWall3"},/area/admin) +"GX" = (/obj/structure/stool/bed,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) +"GY" = (/obj/effect/decal/cleanable/blood,/obj/structure/toilet{dir = 8},/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) +"GZ" = (/obj/effect/decal/cleanable/fungus,/turf/unsimulated/wall{tag = "icon-wall3 (EAST)"; icon = 'icons/turf/shuttle.dmi'; icon_state = "wall3"; dir = 4},/area/admin) +"Ha" = (/turf/unsimulated/floor{icon_state = "engine"},/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/wall{dir = 1; icon = 'icons/turf/shuttle.dmi'; icon_state = "diagonalWall3"},/area/admin) +"Hb" = (/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "engine"},/area/admin) +"Hc" = (/obj/machinery/door/window{dir = 1; name = "Suit Storage"; req_access_txt = "0"},/turf/unsimulated/floor{icon_state = "engine"},/area/admin) +"Hd" = (/turf/unsimulated/floor{icon_state = "engine"},/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/wall{dir = 8; icon = 'icons/turf/shuttle.dmi'; icon_state = "diagonalWall3"},/area/admin) +"He" = (/obj/structure/window/reinforced,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) +"Hf" = (/obj/machinery/door/window/southleft{name = "Cell B"; req_access_txt = "101"},/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) +"Hg" = (/obj/structure/rack,/obj/item/clothing/suit/space/space_ninja,/turf/unsimulated/floor{icon_state = "engine"},/area/admin) +"Hh" = (/turf/unsimulated/floor{icon_state = "engine"},/area/admin) +"Hi" = (/obj/structure/rack,/obj/item/clothing/head/helmet/space/space_ninja,/turf/unsimulated/floor{icon_state = "engine"},/area/admin) +"Hj" = (/turf/unsimulated/wall,/area/tdome) +"Hk" = (/turf/unsimulated/wall{desc = "The door appears to be locked tightly."; icon = 'icons/obj/doors/Doorhatchele.dmi'; icon_state = "door_closed"; name = "Locked Door"},/area/tdome) +"Hl" = (/obj/machinery/iv_drip,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) +"Hm" = (/obj/structure/stool/bed/chair,/obj/effect/decal/cleanable/blood,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) +"Hn" = (/obj/machinery/vending/medical,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) +"Ho" = (/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/turf/unsimulated/wall{dir = 4; icon = 'icons/turf/shuttle.dmi'; icon_state = "diagonalWall3"},/area/admin) +"Hp" = (/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/turf/unsimulated/wall{dir = 2; icon = 'icons/turf/shuttle.dmi'; icon_state = "diagonalWall3"},/area/admin) +"Hq" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/handcuffs,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) +"Hr" = (/obj/structure/table/reinforced,/obj/item/clothing/suit/straight_jacket,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) +"Hs" = (/obj/structure/table/reinforced,/obj/item/clothing/glasses/sunglasses/blindfold,/obj/item/clothing/mask/muzzle,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) +"Ht" = (/turf/unsimulated/floor{icon_state = "engine"},/turf/unsimulated/wall{dir = 4; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5"; name = "window"; opacity = 0; tag = "icon-window5 (EAST)"},/area/admin) +"Hu" = (/obj/structure/rack,/obj/item/clothing/gloves/space_ninja,/turf/unsimulated/floor{icon_state = "engine"},/area/admin) +"Hv" = (/obj/structure/rack,/obj/item/weapon/katana/energy,/obj/item/clothing/mask/gas/voice/space_ninja,/turf/unsimulated/floor{icon_state = "engine"},/area/admin) +"Hw" = (/obj/structure/rack,/obj/item/clothing/shoes/space_ninja,/turf/unsimulated/floor{icon_state = "engine"},/area/admin) +"Hx" = (/obj/structure/closet/secure_closet/bar{req_access = null; req_access_txt = "112"},/turf/unsimulated/floor{icon_state = "white"},/area/tdome) +"Hy" = (/turf/unsimulated/floor{icon_state = "white"},/area/tdome) +"Hz" = (/obj/machinery/gibber,/turf/unsimulated/floor{icon_state = "white"},/area/tdome) +"HA" = (/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/turf/unsimulated/wall{dir = 4; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5"; name = "window"; opacity = 0; tag = "icon-window5 (EAST)"},/area/admin) +"HB" = (/obj/machinery/door/airlock/hatch{desc = "Uh oh. You'd better hope you aren't going in here!"; name = "Prisoner Treatment"},/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) +"HC" = (/obj/machinery/door/airlock/hatch{desc = "Uh oh. You'd better hope you aren't going in here!"; name = "Detainment"},/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) +"HD" = (/turf/unsimulated/floor{icon_state = "engine"},/turf/unsimulated/wall{dir = 2; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5"; name = "window"; opacity = 0; tag = "icon-window5"},/area/admin) +"HE" = (/obj/machinery/vending/cigarette,/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/tdome/tdomeobserve) +"HF" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/cans/beer,/obj/item/weapon/reagent_containers/food/drinks/cans/beer,/obj/item/weapon/reagent_containers/food/drinks/cans/beer,/obj/item/weapon/lighter/zippo,/obj/item/weapon/storage/fancy/cigarettes,/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/tdome/tdomeobserve) +"HG" = (/obj/structure/table{icon_state = "tabledir"; dir = 2},/obj/item/weapon/reagent_containers/food/drinks/cans/cola,/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/tdome/tdomeobserve) +"HH" = (/obj/structure/reagent_dispensers/beerkeg,/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/tdome/tdomeobserve) +"HI" = (/obj/machinery/computer/security/telescreen{desc = "Used for watching the Thunderdome."; name = "Thunderdome Telescreen"; network = list("Thunderdome"); pixel_y = 30},/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/tdome/tdomeobserve) +"HJ" = (/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/tdome/tdomeobserve) +"HK" = (/obj/machinery/vending/coffee,/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/tdome/tdomeobserve) +"HL" = (/obj/structure/table/reinforced,/obj/item/weapon/melee/classic_baton/telescopic,/obj/item/weapon/paper/Court,/obj/item/weapon/pen,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) +"HM" = (/obj/structure/table/reinforced,/obj/item/weapon/scalpel,/obj/item/weapon/storage/box/syndie_kit/mindslave,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) +"HN" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/mousetraps,/obj/item/weapon/storage/box/trackimp,/obj/item/weapon/storage/box/syndie_kit/imp_explosive,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) +"HO" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/flashbangs,/obj/item/weapon/storage/box/flashes,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) +"HP" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/grenades,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) +"HQ" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/teargas,/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) +"HR" = (/obj/structure/closet/secure_closet/freezer/meat{req_access_txt = "112"},/turf/unsimulated/floor{icon_state = "white"},/area/tdome) +"HS" = (/obj/structure/closet/secure_closet/freezer/fridge{req_access_txt = "112"},/turf/unsimulated/floor{icon_state = "white"},/area/tdome) +"HT" = (/obj/structure/stool/bed/chair,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/tdome/tdomeobserve) +"HU" = (/obj/machinery/vending/snack,/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/tdome/tdomeobserve) +"HV" = (/obj/structure/window/reinforced{dir = 1; layer = 2.9},/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) +"HW" = (/obj/machinery/door/window{dir = 1; name = "Cell A"; req_access_txt = "101"},/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) +"HX" = (/obj/structure/table{icon_state = "tabledir"; dir = 9},/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/turf/unsimulated/floor{icon_state = "white"},/area/tdome) +"HY" = (/obj/structure/table,/obj/machinery/kitchen_machine/microwave/upgraded,/turf/unsimulated/floor{icon_state = "white"},/area/tdome) +"HZ" = (/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "white"},/area/tdome) +"Ia" = (/obj/item/device/camera,/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/tdome/tdomeobserve) +"Ib" = (/obj/structure/toilet{dir = 8},/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) +"Ic" = (/obj/structure/rack,/obj/item/clothing/under/color/red,/obj/item/clothing/shoes/brown,/obj/item/weapon/grenade/smokebomb,/obj/item/weapon/legcuffs/beartrap,/obj/item/weapon/sleeping_carp_scroll,/obj/item/weapon/twohanded/bostaff,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena) +"Id" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (WEST)"; icon_state = "fakewindows"; dir = 8},/area/tdome) +"Ie" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows2 (WEST)"; icon_state = "fakewindows2"; dir = 8},/area/tdome) +"If" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (EAST)"; icon_state = "fakewindows"; dir = 4},/area/tdome) +"Ig" = (/obj/structure/rack,/obj/item/clothing/under/color/green,/obj/item/clothing/shoes/brown,/obj/item/weapon/grenade/smokebomb,/obj/item/weapon/legcuffs/beartrap,/obj/item/weapon/sleeping_carp_scroll,/obj/item/weapon/twohanded/bostaff,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena) +"Ih" = (/obj/machinery/door/poddoor{id_tag = "thunderdomeaxe"; name = "Axe Supply"},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena) +"Ii" = (/obj/structure/rack,/obj/item/clothing/under/color/red,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/tdome/red,/obj/item/clothing/head/helmet/thunderdome,/obj/item/weapon/melee/energy/sword/red,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena) +"Ij" = (/obj/machinery/door/poddoor{id_tag = "thunderdomegen"; name = "General Supply"},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena) +"Ik" = (/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome2) +"Il" = (/obj/machinery/door/poddoor{id_tag = "thunderdome"; name = "Thunderdome Blast Door"},/turf/unsimulated/floor{name = "plating"},/area/tdome/arena) +"Im" = (/turf/simulated/floor{icon_state = "red"; dir = 8},/area/tdome/arena) +"In" = (/turf/simulated/floor{icon_state = "green"; dir = 4},/area/tdome/arena) +"Io" = (/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome1) +"Ip" = (/obj/structure/rack,/obj/item/clothing/under/color/green,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/tdome/green,/obj/item/clothing/head/helmet/thunderdome,/obj/item/weapon/melee/energy/sword/green,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena) +"Iq" = (/obj/machinery/door/airlock/hatch{name = "Teleporter Access"; req_access_txt = "0"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "ADMINLOCKDOWN"; name = "Security Doors"; opacity = 0},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"Ir" = (/obj/effect/landmark{name = "tdome2"},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome2) +"Is" = (/obj/effect/landmark{name = "tdome1"},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome1) +"It" = (/obj/structure/rack,/obj/item/weapon/tank/jetpack/oxygen,/obj/item/weapon/tank/jetpack/oxygen,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"Iu" = (/obj/structure/rack,/obj/item/clothing/suit/space,/obj/item/clothing/suit/space,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space,/obj/item/clothing/head/helmet/space,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"Iv" = (/obj/machinery/camera{pixel_x = 11; pixel_y = -9; network = list("Thunderdome"); c_tag = "Thunderdome Red Team"},/obj/effect/landmark{name = "tdome2"},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome2) +"Iw" = (/turf/simulated/floor/bluegrid,/area/tdome/arena) +"Ix" = (/obj/machinery/flasher{id = "flash"; name = "Thunderdome Flash"},/turf/simulated/floor/bluegrid,/area/tdome/arena) +"Iy" = (/obj/machinery/camera{pixel_x = 12; pixel_y = -10; network = list("Thunderdome"); c_tag = "Thunderdome Green Team"},/obj/effect/landmark{name = "tdome1"},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome1) +"Iz" = (/obj/machinery/camera{pixel_x = 10; network = list("Thunderdome"); c_tag = "Thunderdome Arena"},/turf/simulated/floor/bluegrid,/area/tdome/arena) +"IA" = (/obj/structure/table,/obj/random/powercell,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"IB" = (/obj/structure/table,/obj/random/tool,/obj/random/bomb_supply,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"IC" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"ID" = (/obj/structure/table,/obj/random/technology_scanner,/obj/random/tech_supply,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"IE" = (/obj/machinery/door/poddoor{id_tag = "thunderdomehea"; name = "Heavy Supply"},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena) +"IF" = (/obj/structure/table,/obj/item/clothing/gloves/color/yellow,/obj/random/bomb_supply,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"IG" = (/obj/machinery/computer/teleporter,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"IH" = (/obj/machinery/teleport/station,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"II" = (/obj/machinery/teleport/hub/upgraded,/turf/unsimulated/floor{tag = "icon-delivery"; icon_state = "delivery"},/area/admin) +"IJ" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/electrical,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"IK" = (/obj/structure/rack,/obj/item/clothing/under/color/red,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/vest,/obj/item/clothing/head/helmet/swat,/obj/item/weapon/gun/energy/laser,/obj/item/weapon/shield/energy,/obj/machinery/recharger/wallcharger{pixel_x = 3; pixel_y = -30},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena) +"IL" = (/obj/structure/rack,/obj/item/clothing/under/color/green,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/vest,/obj/item/clothing/head/helmet/swat,/obj/item/weapon/gun/energy/laser,/obj/item/weapon/shield/energy,/obj/machinery/recharger/wallcharger{pixel_x = 3; pixel_y = -30},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome/arena) +"IM" = (/turf/unsimulated/floor{tag = "icon-redyellowfull (NORTHEAST)"; icon_state = "redyellowfull"; dir = 5},/area/tdome/tdomeadmin) +"IN" = (/obj/structure/stool/bed/chair{dir = 1},/obj/effect/landmark{name = "tdomeadmin"},/turf/unsimulated/floor{tag = "icon-redyellowfull (NORTHEAST)"; icon_state = "redyellowfull"; dir = 5},/area/tdome/tdomeadmin) +"IO" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/devilskiss,/turf/unsimulated/floor{tag = "icon-redyellowfull (NORTHEAST)"; icon_state = "redyellowfull"; dir = 5},/area/tdome/tdomeadmin) +"IP" = (/obj/structure/stool/bed/chair/comfy/black{dir = 1},/turf/unsimulated/floor{tag = "icon-redyellowfull (NORTHEAST)"; icon_state = "redyellowfull"; dir = 5},/area/tdome/tdomeadmin) +"IQ" = (/obj/structure/table,/obj/machinery/door_control{desc = "A remote control switch for port-side blast doors."; icon_state = "doorctrl0"; id = "thunderdome"; name = "Main Blast Doors"; pixel_x = -3; pixel_y = 0; req_access_txt = "104"},/turf/unsimulated/floor{tag = "icon-redyellowfull (NORTHEAST)"; icon_state = "redyellowfull"; dir = 5},/area/tdome/tdomeadmin) +"IR" = (/obj/machinery/computer/security/telescreen{desc = "Used for watching the Thunderdome."; name = "Thunderdome Telescreen"; network = list("Thunderdome"); pixel_y = -30},/turf/unsimulated/floor{tag = "icon-redyellowfull (NORTHEAST)"; icon_state = "redyellowfull"; dir = 5},/area/tdome/tdomeadmin) +"IS" = (/turf/unsimulated/floor{icon_state = "floor"},/area/tdome/tdomeadmin) +"IT" = (/obj/structure/table,/obj/machinery/door_control{desc = "A remote control switch for port-side blast doors."; icon_state = "doorctrl0"; id = "thunderdomehea"; name = "Ranged Gear"; pixel_x = 0; pixel_y = 5; req_access_txt = "104"},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome/tdomeadmin) +"IU" = (/obj/structure/table,/obj/machinery/door_control{desc = "A remote control switch for port-side blast doors."; icon_state = "doorctrl0"; id = "thunderdomegen"; name = "General Equiptment"; pixel_x = 0; pixel_y = 5; req_access_txt = "104"},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome/tdomeadmin) +"IV" = (/obj/structure/table,/obj/machinery/door_control{desc = "A remote control switch for port-side blast doors."; icon_state = "doorctrl0"; id = "thunderdomeaxe"; name = "Specialist Supply"; pixel_x = 0; pixel_y = 5; req_access_txt = "104"},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome/tdomeadmin) (1,1,1) = {" aaabacadaeafagahaaaiajakalamanaoagafajacadahakaeamaiaoapaqarasatauavawaxayazaAaBaCaDaEaFaGaHaIaJaKawaxayazaAaBaCaDaEaFaLaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaOaPaPaPaPaPaQaPaPaPaPaPaQaPaPaPaPaPaQaPaPaPaPaPaQaPaPaPaPaPaQaPaPaPaPaPaQaPaPaPaPaPaR @@ -2027,48 +2028,47 @@ aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDADwDwEtDKDKDKDKDKDKDKDKDKDKDKDKEuDAEnaNDtDwEvEwExEyEwEzDwEAaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEBDKECDKDKDKDKDKDKDKDKDKDKDKDKDKDKDAaNaNaNEDEEEFEwEwEwEGEDaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDADwDwDwDwDwDMEHDMDwDwDwDwDwEIDKDKDAaNaNaNEJEKEwEwEwEwELEJaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEnaNEMDAENEOEPDKDKDKEQERESEuDADKDKDAaNaNDtDAETEwEUEVEwEWDAaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEXDKDKDKDKDKDKDKDKDKDKEXDKDKDADwEYDwDwDwEZDwDwEZDwDAaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDAFaFbFcDKDKDKFdFdFdDKEHDKDKDAFeEwEwFfDADKDAFgFhFiDAaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEXDKDKDKDKDKFjDwDwDwDwDADKDKDAEwEwFkFlDADKDAFmFnFoDIaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDAFpFqFrDKFsDAFtFuFvFwDADKDKDAFxEwEwFyDADKDAFzFAFBDNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEXDKDKDKDKFCDAFDFuFuFuFEDKDKDAFFEwEwFGDADKDKDKDKDKEfaNaNaNaNDtDwFHFIFJDwDuaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDAFLFMFNDKFODAFPFuFQFRDADKDKDAFSFTEwEwFUDKDKDKDKDKDAaNaNaNDtDwFVFWFWFWFXDwDuaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFKFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDtDwDwDwDwDwDwDwDwDwDwDwFZDKDKGaDwDwDwDwDwDwDwDwGbDwDADuaNDtDwFVFWFWFWFWFWFXDADuaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFKFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDtDAGcGdGeGfGgGhGiGaDAFZDKDKDKDKDKDKGaDwDwDwDwDwFZDKGaDwDwGjDwFVFWFWFWGkFWFWFWFXDAaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFKFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDIGlDKDKGmDKDKDKDKDKGnDKDKGoGoGoGoDKDKDKDKDKDKDKDKDKDKGpFWFWFWFWFWFWGqGrGsFWFWFWGtaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFKFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDNGuGvDKDKDKDKDKDKDKGnDKDKGoGoGoGoDKDKDKDKDKDKDKDKDKDKGpFWFWFWFWFWGwGxGqGqGwFWFWGyaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFKFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEfGzDKDKGADKDKDKDKDKGnDKDKGoGoGoGoDKDKDKDKDKDKDKDKDKFjDwDwGjDwGBFWFWGwGwGwFWFWGCDAaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFKFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEMDAGDGEGFGGGHGIGJFjDAEIDKDKDKDKDKDKFjDwDwEIDKFjDwDwDwDAEnaNEMDwGBFWFWFWFWFWGCDAEnaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFKFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEMDwDwDwDwDwDwDwDwDwDwDwEIDKDKFjDwDwDwDwDwGKDwDwDwDADAaNaNaNEMDwGBFWFWFWGCDwEnaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFKFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEMaNaNaNaNaNaNaNaNaNDvDAGLGLDAaNDAFuGMFuFuFuGMFuDADAaNaNaNaNEMDwFHFIFJDwEnaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFKFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDtDwDwDwDwFZDKDKDAaNDAGNFuFuGOFuFuGPDADAaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFKFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDIDKDKDKDKDKDKDKDAaNDAGQGOFuFuFuGOGRDADAaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFKFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEfDKDKDKDKDKDKDKDAaNDAGSFuFuGOFuFuGTDADAaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFKFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDtDwDwDuaNEMDxDyDyDzEIDKDKDAaNDAGUFuFuFuFuFuGVDAEnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFKFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDtaNaNDtDAGWGXGYDuaNaNaNaNaNDIDKDKDAaNEMDwGZHaHbHaHcDwEnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFKFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDtDwDwDwDwDAHdHeDADwDwDwDwDuaNEfDKDKDAaNaNEMDwHfHgHhDwEnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNHiHiHiHiHjHiHiHiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFKFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDtDAHkHlHmDAHnFuFuHoDAHpHqHrHoDwFZDKDKDAaNaNaNHsHtHuHvHsaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNHiHwHxHxHxHxHyHiHiHiHiHiHiHiHiHjHiHiHiHiHiHiHiHiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFKFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNHzFuFuFuHAFuFuFuFuHBFuFuFuFuHBDKDKDKDAaNaNEMDwDwHCDwDwEnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNHiHwHxHxHxHxHyHiHDHEHFHEHGHHHIHIHIHHHGHIHGHIHJHiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFKFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEMDAHKHLHMDAGUFuFuGVDAHNHOHPGVDwEIDKDKDAaNaNaNEMaNaNaNEnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNHiHQHxHxHxHxHRHiHIHSHSHSHSHSHIHIHIHSHSHSHSHSHTHiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFKFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEMDwDwDwDwGYHUHVDADwDwDwDwEnaNDIDKDKDAaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNHiHQHWHXHXHxHxHYHIHIHIHZHIHIHIHIHIHIHIHZHIHIHIHiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFKFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEMaNaNEMDAGWIaDAEnaNaNaNaNaNEfDKDKDAaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNHiHiHiHiHiHiHiHiHIHSHSHSHSHSHIHIHIHSHSHSHSHSHIHiHiHiHiHiHiHiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFKFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEMDwDwEnaNDtDxDyDyDzFZDKDKDAaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNHiIbIbIbIbIbHiIcIdIdIdIdIdIdIdIdIdIdIdIdIdIeHiIfIfIfIfIfHiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFKFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDIDKDKDKDKDKDKDKDAaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNHiHiHiIgIgIgIgIgjajbjcjcjcjcjcjcjcjcjcjcjcjcjcjbjaIgIgIgIgIgHiHiHiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFKFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEfDKDKDKDKDKDKFjDAEnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNHiIhIiIjIjIjIjIjIkIljcjcjcjcjcjcjcjcjcjcjcjcjcImIkInInInInInIiIoHiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFKFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEMDwDwDMIpDMDwDwEnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNHiIhIiIjIqIjIqIjIkIljcjcjcjcjcjcjcjcjcjcjcjcjcImIkInIrInIrInIiIoHiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFKFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDAIsDKDKDKItDAaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNHiIhIiIjIjIuIjIjIkIljcjcjcjcjcIvIwIvjcjcjcjcjcImIkInInIxInInIiIoHiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFKFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDIDKDKDKDKDKDIaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNHiIhIiIjIqIjIqIjIkIljcjcjcjcjcIvIyIvjcjcjcjcjcImIkInIrInIrInIiIoHiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFKFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDNIzDKDKDKIADNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNHiIhIiIjIjIjIjIjIkIljcjcjcjcjcjcjcjcjcjcjcjcjcImIkInInInInInIiIoHiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFKFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEfIBDKDKDKICEfaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNHiHiHiIDIDIDIDIDjajbjcjcjcjcjcjcjcjcjcjcjcjcjcjbjaIDIDIDIDIDHiHiHiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFKFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFYFKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEMDwIEIFIGIHIIDwEnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNHiIJIJIJIJIJHiIcIdIdIdIdIdIdIdIdIdIdIdIdIdIeHiIKIKIKIKIKHiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEMDwDxDyDzDwEnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNHiHiHiHiHiHiHiILIMIMIMIMIMINIOIPIMIMIMIMIMILHiHiHiHiHiHiHiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEMaNaNaNEnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNHiILILILIQILIRIRIRIRIRILIQILILILHiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNHiHiHjHiHiHiHiISITIUHiHiHiHiHjHiHiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNHiHiHiHiHiaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEnaNEMDAENEOEPDKDKEQERESETEuDADKDKDAaNaNDtDAEUEwEVEWEwEXDAaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEYDKDKDKDKDKDKDKDKDKDKEYDKDKDADwEZDwDwDwFaDwDwFaDwDAaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDAFbFcFdDKDKDKFeFeFeDKEHDKDKDAFfEwEwFgDADKDAFhFiFjDAaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEYDKDKDKDKDKFkDwDwDwDwDADKDKDAEwEwFlFmDADKDAFnFoFpDIaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDAFqFrFsDKFtDAFuFvFwFxDADKDKDAFyEwEwFzDADKDAFAFBFCDNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEYDKDKDKDKFDDAFEFvFvFvFFDKDKDAFGEwEwFHDADKDKDKDKDKEfaNaNaNaNDtDwFIFJFKDwDuaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDAFMFNFODKFPDAFQFvFRFSDADKDKDAFTFUEwEwFVDKDKDKDKDKDAaNaNaNDtDwFWFXFXFXFYDwDuaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDtDwDwDwDwDwDwDwDwDwDwDwGaDKDKGbDwDwDwDwDwDwDwDwGcDwDADuaNDtDwFWFXFXFXFXFXFYDADuaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDtDAGdGeGfGgGhGiGjGbDAGaDKDKDKDKDKDKGbDwDwDwDwDwGaDKGbDwDwGkDwFWFXFXFXGlFXFXFXFYDAaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDIGmDKDKGnDKDKDKDKDKGoDKDKGpGpGpGpDKDKDKDKDKDKDKDKDKDKGqFXFXFXFXFXFXGrGsGtFXFXFXGuaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDNGvGwDKDKDKDKDKDKDKGoDKDKGpGpGpGpDKDKDKDKDKDKDKDKDKDKGqFXFXFXFXFXGxGyGrGrGxFXFXGzaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEfGADKDKGBDKDKDKDKDKGoDKDKGpGpGpGpDKDKDKDKDKDKDKDKDKFkDwDwGkDwGCFXFXGxGxGxFXFXGDDAaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEMDAGEGFGGGHGIGJGKFkDAEIDKDKDKDKDKDKFkDwDwEIDKFkDwDwDwDAEnaNEMDwGCFXFXFXFXFXGDDAEnaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEMDwDwDwDwDwDwDwDwDwDwDwEIDKDKFkDwDwDwDwDwGLDwDwDwDADAaNaNaNEMDwGCFXFXFXGDDwEnaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEMaNaNaNaNaNaNaNaNaNDvDAGMGMDAaNDAFvGNFvFvFvGNFvDADAaNaNaNaNEMDwFIFJFKDwEnaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDtDwDwDwDwGaDKDKDAaNDAGOFvFvGPFvFvGQDADAaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDIDKDKDKDKDKDKDKDAaNDAGRGPFvFvFvGPGSDADAaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEfDKDKDKDKDKDKDKDAaNDAGTFvFvGPFvFvGUDADAaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDtDwDwDuaNEMDxDyDyDzEIDKDKDAaNDAGVFvFvFvFvFvGWDAEnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDtaNaNDtDAGXGYGZDuaNaNaNaNaNDIDKDKDAaNEMDwHaHbHcHbHdDwEnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDtDwDwDwDwDAHeHfDADwDwDwDwDuaNEfDKDKDAaNaNEMDwHgHhHiDwEnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNHjHjHjHjHkHjHjHjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDtDAHlHmHnDAHoFvFvHpDAHqHrHsHpDwGaDKDKDAaNaNaNHtHuHvHwHtaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNHjHxHyHyHyHyHzHjHjHjHjHjHjHjHjHkHjHjHjHjHjHjHjHjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNHAFvFvFvHBFvFvFvFvHCFvFvFvFvHCDKDKDKDAaNaNEMDwDwHDDwDwEnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNHjHxHyHyHyHyHzHjHEHFHGHFHHHIHJHJHJHIHHHJHHHJHKHjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEMDAHLHMHNDAGVFvFvGWDAHOHPHQGWDwEIDKDKDAaNaNaNEMaNaNaNEnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNHjHRHyHyHyHyHSHjHJHTHTHTHTHTHJHJHJHTHTHTHTHTHUHjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEMDwDwDwDwGZHVHWDADwDwDwDwEnaNDIDKDKDAaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNHjHRHXHYHYHyHyHZHJHJHJIaHJHJHJHJHJHJHJIaHJHJHJHjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEMaNaNEMDAGXIbDAEnaNaNaNaNaNEfDKDKDAaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNHjHjHjHjHjHjHjHjHJHTHTHTHTHTHJHJHJHTHTHTHTHTHJHjHjHjHjHjHjHjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEMDwDwEnaNDtDxDyDyDzGaDKDKDAaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNHjIcIcIcIcIcHjIdIeIeIeIeIeIeIeIeIeIeIeIeIeIfHjIgIgIgIgIgHjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDIDKDKDKDKDKDKDKDAaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNHjHjHjIhIhIhIhIhjajbjcjcjcjcjcjcjcjcjcjcjcjcjcjbjaIhIhIhIhIhHjHjHjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEfDKDKDKDKDKDKFkDAEnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNHjIiIjIkIkIkIkIkIlImjcjcjcjcjcjcjcjcjcjcjcjcjcInIlIoIoIoIoIoIjIpHjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEMDwDwDMIqDMDwDwEnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNHjIiIjIkIrIkIrIkIlImjcjcjcjcjcjcjcjcjcjcjcjcjcInIlIoIsIoIsIoIjIpHjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDAItDKDKDKIuDAaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNHjIiIjIkIkIvIkIkIlImjcjcjcjcjcIwIxIwjcjcjcjcjcInIlIoIoIyIoIoIjIpHjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDIDKDKDKDKDKDIaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNHjIiIjIkIrIkIrIkIlImjcjcjcjcjcIwIzIwjcjcjcjcjcInIlIoIsIoIsIoIjIpHjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNDNIADKDKDKIBDNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNHjIiIjIkIkIkIkIkIlImjcjcjcjcjcjcjcjcjcjcjcjcjcInIlIoIoIoIoIoIjIpHjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEfICDKDKDKIDEfaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNHjHjHjIEIEIEIEIEjajbjcjcjcjcjcjcjcjcjcjcjcjcjcjbjaIEIEIEIEIEHjHjHjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEMDwIFIGIHIIIJDwEnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNHjIKIKIKIKIKHjIdIeIeIeIeIeIeIeIeIeIeIeIeIeIfHjILILILILILHjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEMDwDxDyDzDwEnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNHjHjHjHjHjHjHjIMINININININIOIPIQINININININIMHjHjHjHjHjHjHjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNEMaNaNaNEnaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNHjIMIMIMIRIMISISISISISIMIRIMIMIMHjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNHjHjHkHjHjHjHjITIUIVHjHjHjHjHkHjHjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNHjHjHjHjHjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN "} - diff --git a/_maps/map_files/cyberiad/z5.dmm b/_maps/map_files/cyberiad/z5.dmm index 560dc3ac26b..06ee178d2b3 100644 --- a/_maps/map_files/cyberiad/z5.dmm +++ b/_maps/map_files/cyberiad/z5.dmm @@ -1160,7 +1160,7 @@ "wp" = (/obj/machinery/camera{c_tag = "Mining Outpost West Outpost Mech Recharge Station"; dir = 1; network = list("Mining Outpost")},/turf/simulated/floor/mech_bay_recharge_floor{icon_state = "recharge_floor_asteroid"},/area/mine/west_outpost) "wq" = (/obj/machinery/computer/mech_bay_power_console,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"; tag = "icon-asteroidfloor"},/area/mine/west_outpost) "wr" = (/obj/structure/disposalpipe/segment,/obj/structure/sign/deathsposal,/turf/simulated/wall,/area/mine/living_quarters) -"ws" = (/obj/structure/table/reinforced,/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 8},/area/mine/explored) +"ws" = (/obj/structure/table/reinforced,/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 8},/area/mine/explored) "wt" = (/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/mine/explored) "wu" = (/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 4},/area/mine/explored) "wv" = (/turf/simulated/wall,/area/mine/west_outpost) @@ -1235,8 +1235,8 @@ "xM" = (/obj/machinery/camera{c_tag = "Mining Outpost Storage Room"; dir = 1; network = list("Mining Outpost")},/turf/simulated/floor,/area/mine/living_quarters) "xN" = (/obj/machinery/light_switch{pixel_y = -25},/turf/simulated/floor,/area/mine/living_quarters) "xO" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor,/area/mine/living_quarters) -"xP" = (/turf/simulated/wall,/area/mine/production) -"xQ" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/production) +"xP" = (/turf/simulated/wall,/area/mine/lobby) +"xQ" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/lobby) "xR" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/obj/machinery/camera{c_tag = "Mining Outpost EVA"; dir = 4; network = list("Mining Outpost")},/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/mine/eva) "xS" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/simulated/floor,/area/mine/eva) "xT" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor,/area/mine/eva) @@ -1252,9 +1252,9 @@ "yd" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plating,/area/mine/living_quarters) "ye" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/glass{name = "Crew Area"; req_access_txt = "48"},/turf/simulated/floor,/area/mine/living_quarters) "yf" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/door/firedoor{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/mining{name = "Mining Station Storage"; req_access_txt = "48"},/turf/simulated/floor,/area/mine/living_quarters) -"yg" = (/obj/machinery/alarm{pixel_y = 24},/obj/machinery/portable_atmospherics/scrubber,/obj/machinery/camera{c_tag = "Mining Outpost Starboard Connector"; network = list("Mining Outpost")},/turf/simulated/floor,/area/mine/production) -"yh" = (/turf/simulated/floor,/area/mine/production) -"yi" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/simulated/floor,/area/mine/production) +"yg" = (/obj/machinery/alarm{pixel_y = 24},/obj/machinery/portable_atmospherics/scrubber,/obj/machinery/camera{c_tag = "Mining Outpost Starboard Connector"; network = list("Mining Outpost")},/turf/simulated/floor,/area/mine/lobby) +"yh" = (/turf/simulated/floor,/area/mine/lobby) +"yi" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/simulated/floor,/area/mine/lobby) "yj" = (/obj/effect/spawner/window/reinforced,/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/simulated/floor/plating,/area/mine/eva) "yk" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"},/obj/item/device/gps/mining{gpstag = "MINE2"},/obj/item/device/gps/mining{gpstag = "MINE1"},/obj/item/device/gps/mining,/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -3},/turf/simulated/floor,/area/mine/eva) "yl" = (/turf/simulated/floor,/area/mine/eva) @@ -1285,188 +1285,236 @@ "yK" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor,/area/mine/living_quarters) "yL" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor,/area/mine/living_quarters) "yM" = (/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/mine/living_quarters) -"yN" = (/obj/structure/window/reinforced,/obj/structure/lattice,/turf/space,/area/mine/living_quarters) -"yO" = (/obj/structure/window/reinforced,/obj/structure/lattice,/turf/space,/area/mine/production) -"yP" = (/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/mine/production) -"yQ" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor,/area/mine/production) -"yR" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor,/area/mine/production) -"yS" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/door/firedoor{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/glass_mining{name = "Mining Station EVA"; req_access_txt = "54"},/turf/simulated/floor,/area/mine/eva) -"yT" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor,/area/mine/eva) -"yU" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "mining_east_airlock"; name = "interior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = null},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5; icon_state = "intact"},/turf/simulated/floor,/area/mine/eva) -"yV" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "mining_east_inner"; locked = 1; name = "Mining External Access"; req_access = null; req_access_txt = null},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor,/area/mine/eva) -"yW" = (/obj/machinery/atmospherics/pipe/manifold4w/hidden,/turf/simulated/floor,/area/mine/eva) -"yX" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/mine/eva) -"yY" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "mining_east_outer"; locked = 1; name = "Mining External Access"; req_access = null; req_access_txt = null},/turf/simulated/floor/plating,/area/mine/eva) -"yZ" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "mining_east_airlock"; name = "exterior access button"; pixel_x = -25; pixel_y = -25; req_access_txt = null},/turf/simulated/floor/airless{tag = "icon-asteroidwarning (EAST)"; icon_state = "asteroidwarning"; dir = 4},/area/mine/explored) -"za" = (/obj/machinery/atmospherics/pipe/simple/visible/universal,/turf/simulated/wall,/area/mine/west_outpost) -"zb" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/simulated/wall,/area/mine/west_outpost) -"zc" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/door/firedoor{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/maintenance{name = "Mining Station Maintenance"; req_access_txt = "54"},/turf/simulated/floor/plating,/area/mine/west_outpost) -"zd" = (/obj/machinery/conveyor{backwards = 2; dir = 2; forwards = 1; id = "mining_west"},/obj/structure/plasticflaps/mining,/turf/simulated/floor,/area/mine/west_outpost) -"ze" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor,/area/mine/living_quarters) -"zf" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/mine/living_quarters) -"zg" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor,/area/mine/living_quarters) -"zh" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/mine/living_quarters) -"zi" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor,/area/mine/living_quarters) -"zj" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor,/area/mine/living_quarters) -"zk" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor,/area/mine/living_quarters) -"zl" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/mine/living_quarters) -"zm" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/door/firedoor{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/glass_mining{name = "Mining Station Bridge"; req_access_txt = "48"},/turf/simulated/floor,/area/mine/living_quarters) -"zn" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor,/area/mine/living_quarters) -"zo" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor,/area/mine/production) -"zp" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/door/firedoor{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/glass_mining{name = "Mining Station Bridge"; req_access_txt = "48"},/turf/simulated/floor,/area/mine/production) -"zq" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor,/area/mine/production) -"zr" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/mine/production) -"zs" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor,/area/mine/production) -"zt" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor,/area/mine/production) -"zu" = (/obj/effect/spawner/window/reinforced,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/mine/eva) -"zv" = (/obj/machinery/power/apc{dir = 2; name = "Mining EVA APC"; pixel_x = 1; pixel_y = -23},/obj/structure/cable,/obj/machinery/vending/eva,/turf/simulated/floor,/area/mine/eva) -"zw" = (/obj/machinery/mech_bay_recharge_port,/obj/machinery/light/small,/turf/simulated/floor/plating,/area/mine/eva) -"zx" = (/turf/simulated/floor/mech_bay_recharge_floor,/area/mine/eva) -"zy" = (/obj/machinery/computer/mech_bay_power_console,/turf/simulated/floor,/area/mine/eva) -"zz" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "mining_east_pump"; tag_exterior_door = "mining_east_outer"; frequency = 1379; id_tag = "mining_east_airlock"; tag_interior_door = "mining_east_inner"; pixel_x = 0; pixel_y = -25; req_access_txt = null; tag_chamber_sensor = "mining_east_sensor"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1379; id_tag = "mining_east_pump"},/turf/simulated/floor,/area/mine/eva) -"zA" = (/obj/machinery/camera{c_tag = "Mining Outpost Starboard External Airlock"; dir = 1; network = list("Mining Outpost")},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "mining_east_sensor"; pixel_x = 0; pixel_y = -25},/obj/structure/ore_box,/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1379; id_tag = "mining_east_pump"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/mine/eva) -"zB" = (/obj/machinery/meter,/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor/plating,/area/mine/west_outpost) -"zC" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plating,/area/mine/west_outpost) -"zD" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plating,/area/mine/west_outpost) -"zE" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/item/weapon/storage/box/lights/bulbs,/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/obj/machinery/light_switch{pixel_x = 6; pixel_y = 23},/turf/simulated/floor/plating,/area/mine/west_outpost) -"zF" = (/turf/simulated/floor/airless{tag = "icon-asteroidwarning (NORTH)"; icon_state = "asteroidwarning"; dir = 1},/area/mine/explored) -"zG" = (/obj/machinery/conveyor_switch{id = "mining_west"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/airless{tag = "icon-asteroidwarning (NORTH)"; icon_state = "asteroidwarning"; dir = 1},/area/mine/explored) -"zH" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8},/turf/simulated/floor,/area/mine/living_quarters) -"zI" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/simulated/floor,/area/mine/living_quarters) -"zJ" = (/obj/machinery/atmospherics/pipe/manifold/hidden,/turf/simulated/floor,/area/mine/living_quarters) -"zK" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/simulated/floor,/area/mine/living_quarters) -"zL" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 1},/turf/simulated/floor,/area/mine/living_quarters) -"zM" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/machinery/light,/turf/simulated/floor,/area/mine/living_quarters) -"zN" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "mining_west_airlock"; name = "interior access button"; pixel_x = -25; pixel_y = -25; req_access_txt = null},/turf/simulated/floor,/area/mine/living_quarters) -"zO" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/machinery/camera{c_tag = "Mining Outpost Port Connector"; dir = 1; network = list("Mining Outpost")},/obj/machinery/light_switch{pixel_y = -25},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/mine/living_quarters) -"zP" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/living_quarters) -"zQ" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/space,/area/mine/living_quarters) -"zR" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/space,/area/mine/production) -"zS" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/machinery/light{dir = 4},/turf/space,/area/mine/production) -"zT" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/production) -"zU" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/mine/production) -"zV" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/simulated/floor,/area/mine/production) -"zW" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/simulated/floor,/area/mine/production) -"zX" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4},/turf/simulated/floor,/area/mine/production) -"zY" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall,/area/mine/production) -"zZ" = (/obj/machinery/camera{c_tag = "Mining Outpost Production Line External"; dir = 4; network = list("Mining Outpost")},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/airless{tag = "icon-asteroidwarning"; icon_state = "asteroidwarning"; dir = 2},/area/mine/explored) -"Aa" = (/turf/simulated/floor/airless{tag = "icon-asteroidwarning"; icon_state = "asteroidwarning"; dir = 2},/area/mine/explored) -"Ab" = (/obj/machinery/conveyor_switch{id = "mining_external"},/turf/simulated/floor/airless{tag = "icon-asteroidwarning"; icon_state = "asteroidwarning"; dir = 2},/area/mine/production) -"Ac" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 1; initialize_directions = 0; level = 1},/turf/simulated/floor/plating,/area/mine/west_outpost) -"Ad" = (/obj/machinery/power/port_gen/pacman{anchored = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/plating,/area/mine/west_outpost) -"Ae" = (/obj/machinery/power/terminal{dir = 4},/obj/machinery/light/small,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/mine/west_outpost) -"Af" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable,/turf/simulated/floor/plating,/area/mine/west_outpost) -"Ag" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/door/firedoor{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Infirmary"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "white"},/area/mine/living_quarters) -"Ah" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/simulated/wall,/area/mine/living_quarters) -"Ai" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/door/firedoor{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/maintenance{name = "Mining Station Maintenance"; req_access_txt = "48"},/turf/simulated/floor/plating,/area/mine/living_quarters) -"Aj" = (/obj/machinery/atmospherics/pipe/simple/visible/universal,/turf/simulated/wall,/area/mine/living_quarters) -"Ak" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "mining_west_inner"; locked = 1; name = "Mining External Access"; req_access = null; req_access_txt = null},/turf/simulated/floor,/area/mine/living_quarters) -"Al" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor,/area/mine/production) -"Am" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor,/area/mine/production) -"An" = (/obj/structure/disposalpipe/junction{tag = "icon-pipe-j2 (EAST)"; icon_state = "pipe-j2"; dir = 4},/turf/simulated/wall,/area/mine/production) -"Ao" = (/obj/structure/disposaloutlet{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/production) -"Ap" = (/obj/machinery/conveyor{dir = 4; id = "mining_internal"},/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/production) -"Aq" = (/obj/machinery/conveyor{dir = 9; id = "mining_internal"},/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/production) -"Ar" = (/obj/machinery/mineral/unloading_machine{icon_state = "unloader-corner"; input_dir = 4; output_dir = 2},/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/production) -"As" = (/obj/machinery/conveyor{dir = 4; id = "mining_external"},/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/production) -"At" = (/obj/machinery/conveyor{dir = 4; id = "mining_external"},/obj/structure/plasticflaps/mining,/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/production) -"Au" = (/obj/machinery/conveyor{dir = 4; id = "mining_external"},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/mine/production) -"Av" = (/obj/machinery/light/small{dir = 8},/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor{icon_state = "white"},/area/mine/living_quarters) -"Aw" = (/turf/simulated/floor{icon_state = "white"},/area/mine/living_quarters) -"Ax" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor{icon_state = "white"},/area/mine/living_quarters) -"Ay" = (/obj/machinery/light_switch{pixel_x = 23; pixel_y = 0},/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "white"},/area/mine/living_quarters) -"Az" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/mine/living_quarters) -"AA" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/light/small{dir = 1},/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor/plating,/area/mine/living_quarters) -"AB" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plating,/area/mine/living_quarters) -"AC" = (/obj/machinery/light_switch{pixel_y = 23},/obj/machinery/atmospherics/pipe/manifold/visible{dir = 8},/turf/simulated/floor/plating,/area/mine/living_quarters) -"AD" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 8},/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor/plating,/area/mine/living_quarters) -"AE" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "mining_west_pump"},/obj/structure/closet/emcloset,/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/living_quarters) -"AF" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 1},/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/living_quarters) -"AG" = (/obj/machinery/light/small{dir = 4},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "mining_west_sensor"; pixel_x = 25; pixel_y = -5},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "mining_west_pump"; tag_exterior_door = "mining_west_outer"; frequency = 1379; id_tag = "mining_west_airlock"; tag_interior_door = "mining_west_inner"; pixel_x = 25; pixel_y = 5; req_access_txt = null; tag_chamber_sensor = "mining_west_sensor"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1379; id_tag = "mining_west_pump"},/turf/simulated/floor,/area/mine/living_quarters) -"AH" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor,/area/mine/production) -"AI" = (/obj/machinery/conveyor{dir = 2; id = "mining_internal"},/obj/structure/plasticflaps/mining,/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/production) -"AJ" = (/obj/machinery/sleeper{dir = 8},/turf/simulated/floor{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/mine/living_quarters) -"AK" = (/obj/machinery/sleep_console{dir = 8},/turf/simulated/floor{tag = "icon-warnwhite (NORTHEAST)"; icon_state = "warnwhite"; dir = 5},/area/mine/living_quarters) -"AL" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/camera{c_tag = "Mining Outpost Sleeper Room"; dir = 1; network = list("Mining Outpost")},/turf/simulated/floor{icon_state = "white"},/area/mine/living_quarters) -"AM" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/o2{pixel_x = 2; pixel_y = 2},/obj/item/weapon/storage/firstaid/regular,/obj/item/weapon/storage/firstaid/brute,/turf/simulated/floor{icon_state = "white"},/area/mine/living_quarters) -"AN" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating,/area/mine/living_quarters) -"AO" = (/turf/simulated/floor/plating,/area/mine/living_quarters) -"AP" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/manifold/visible{dir = 8},/turf/simulated/floor/plating,/area/mine/living_quarters) -"AQ" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 8},/turf/simulated/floor/plating,/area/mine/living_quarters) -"AR" = (/obj/machinery/camera{c_tag = "Mining Outpost Port Exterior Airlock"; dir = 4; network = list("Mining Outpost")},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "mining_west_pump"},/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/living_quarters) -"AS" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden,/turf/simulated/floor{icon_state = "warning"},/area/mine/living_quarters) -"AT" = (/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/portable_atmospherics/canister/air,/obj/machinery/atmospherics/portables_connector{dir = 8},/turf/simulated/floor{icon_state = "warning"},/area/mine/living_quarters) -"AU" = (/turf/space,/area/shuttle/mining/outpost) -"AV" = (/obj/machinery/power/apc{dir = 8; name = "Mining Station Starboard Wing APC"; pixel_x = -27; pixel_y = 2},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor,/area/mine/production) -"AW" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor,/area/mine/production) -"AX" = (/turf/simulated/floor{dir = 4; icon_state = "loadingarea"; tag = "loading"},/area/mine/production) -"AY" = (/obj/machinery/mineral/unloading_machine,/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/production) -"AZ" = (/obj/machinery/conveyor{dir = 4; id = "mining_internal"},/obj/structure/plasticflaps/mining,/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/production) -"Ba" = (/obj/structure/cable,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/machinery/power/port_gen/pacman{anchored = 1},/turf/simulated/floor/plating,/area/mine/living_quarters) -"Bb" = (/obj/machinery/power/port_gen/pacman{anchored = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/plating,/area/mine/living_quarters) -"Bc" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating,/area/mine/living_quarters) -"Bd" = (/obj/structure/reagent_dispensers/fueltank,/obj/machinery/atmospherics/pipe/manifold/visible,/turf/simulated/floor/plating,/area/mine/living_quarters) -"Be" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "mining_west_outer"; locked = 1; name = "Mining External Access"; req_access = null; req_access_txt = null},/turf/simulated/floor/plating,/area/mine/living_quarters) -"Bf" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/simulated/floor,/area/mine/production) -"Bg" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/simulated/floor,/area/mine/production) -"Bh" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4},/obj/machinery/camera{c_tag = "Mining Outpost Shuttle Airlock"; dir = 8; network = list("Mining Outpost")},/obj/machinery/conveyor_switch/oneway{id = "mining_internal"; name = "mining conveyor"},/obj/machinery/light{dir = 4},/turf/simulated/floor,/area/mine/production) -"Bi" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/mine/production) -"Bj" = (/obj/machinery/conveyor{dir = 2; id = "mining_internal"},/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/production) -"Bk" = (/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"; tag = "icon-asteroidfloor"},/area/mine/explored) -"Bl" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "mining_west_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = null},/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"; tag = "icon-asteroidfloor"},/area/mine/explored) -"Bm" = (/turf/simulated/floor/airless{tag = "icon-asteroidwarning (EAST)"; icon_state = "asteroidwarning"; dir = 4},/area/mine/explored) -"Bn" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) -"Bo" = (/obj/effect/spawner/window/reinforced,/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_y = 0},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/production) -"Bp" = (/obj/effect/spawner/window/reinforced,/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/production) -"Bq" = (/obj/structure/closet/emcloset,/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/mine/production) -"Br" = (/obj/item/device/radio/beacon,/turf/simulated/floor,/area/mine/production) -"Bs" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/mine/production) -"Bt" = (/obj/structure/closet/crate,/obj/structure/noticeboard{pixel_y = 27},/turf/simulated/floor,/area/mine/production) -"Bu" = (/obj/structure/closet/crate,/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/turf/simulated/floor,/area/mine/production) -"Bv" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/alarm{pixel_y = 24},/turf/simulated/floor,/area/mine/production) -"Bw" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor,/area/mine/production) -"Bx" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/light/small{dir = 1},/obj/item/weapon/rcs,/turf/simulated/floor,/area/mine/production) -"By" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor,/area/mine/production) -"Bz" = (/obj/machinery/power/apc{dir = 1; name = "Mining Station External APC"; pixel_x = 1; pixel_y = 25},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/airless{tag = "icon-asteroidwarning"; icon_state = "asteroidwarning"; dir = 2},/area/mine/explored) -"BA" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/airless{tag = "icon-asteroidwarning"; icon_state = "asteroidwarning"; dir = 2},/area/mine/explored) -"BB" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/airless{tag = "icon-asteroidwarning"; icon_state = "asteroidwarning"; dir = 2},/area/mine/explored) -"BC" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "mining_outpost_outer"; locked = 1; name = "Mining Dock Airlock"; req_access = null; req_access_txt = "13"},/turf/simulated/floor/plating,/area/mine/production) -"BD" = (/obj/machinery/embedded_controller/radio/airlock/docking_port{frequency = 1380; id_tag = "mining_outpost_airlock"; pixel_x = 0; pixel_y = 30; req_access_txt = "0"; req_one_access_txt = "13;48"; tag_airpump = "mining_outpost_pump"; tag_chamber_sensor = "mining_outpost_sensor"; tag_exterior_door = "mining_outpost_outer"; tag_interior_door = "mining_outpost_inner"},/obj/machinery/airlock_sensor{frequency = 1380; id_tag = "mining_outpost_sensor"; pixel_x = 0; pixel_y = -25},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1380; id_tag = "mining_outpost_pump"},/turf/simulated/floor,/area/mine/production) -"BE" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "mining_outpost_inner"; locked = 1; name = "Mining Dock Airlock"; req_access = null; req_access_txt = "13"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor,/area/mine/production) -"BF" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1380; master_tag = "mining_outpost_airlock"; name = "interior access button"; pixel_x = -30; pixel_y = -25; req_access_txt = "0"; req_one_access_txt = "13;48"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; initialize_directions = 10},/turf/simulated/floor,/area/mine/production) -"BG" = (/obj/machinery/door/window/westright{name = "Production Area"; req_access_txt = "48"},/turf/simulated/floor,/area/mine/production) -"BH" = (/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/mine/production) -"BI" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/camera{c_tag = "Mining Outpost Production Room"; dir = 8; network = list("Mining Outpost")},/turf/simulated/floor,/area/mine/production) -"BJ" = (/turf/simulated/floor{icon_state = "loadingarea"; tag = "loading"},/area/mine/production) -"BK" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/mine/production) -"BL" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8},/obj/machinery/telepad_cargo,/turf/simulated/floor,/area/mine/production) -"BM" = (/obj/machinery/door/window/westleft{name = "Production Area"; req_access_txt = "48"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/simulated/floor{dir = 1; icon_state = "loadingarea"; tag = "loading"},/area/mine/production) -"BN" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"},/turf/simulated/floor,/area/mine/production) -"BO" = (/obj/machinery/mineral/processing_unit_console,/turf/simulated/wall/r_wall,/area/mine/production) -"BP" = (/obj/machinery/mineral/processing_unit,/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/production) -"BQ" = (/obj/structure/lattice,/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1380; master_tag = "mining_outpost_airlock"; name = "exterior access button"; pixel_x = -8; pixel_y = 25; req_access_txt = "0"; req_one_access_txt = "13;48"},/turf/space,/area/space) -"BR" = (/obj/machinery/computer/shuttle_control/mining{req_access_txt = "48"},/turf/simulated/floor,/area/mine/production) -"BS" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/mineral/mint{input_dir = 4; output_dir = 1},/turf/simulated/floor,/area/mine/production) -"BT" = (/turf/simulated/floor{dir = 8; icon_state = "loadingarea"; tag = "loading"},/area/mine/production) -"BU" = (/turf/simulated/wall/r_wall,/area/mine/production) -"BV" = (/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/turf/simulated/floor,/area/mine/production) -"BW" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5; icon_state = "intact"},/turf/simulated/floor,/area/mine/production) -"BX" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor,/area/mine/production) -"BY" = (/obj/machinery/mineral/stacking_unit_console,/turf/simulated/wall/r_wall,/area/mine/production) -"BZ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/turf/simulated/floor/plating,/area/mine/explored) -"Ca" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall/r_wall,/area/mine/explored) -"Cb" = (/obj/structure/lattice,/obj/structure/disposalpipe/segment{dir = 4},/turf/space,/area/space) -"Cc" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/mine/production) -"Cd" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor,/area/mine/production) -"Ce" = (/obj/machinery/conveyor{dir = 8; id = "mining_internal"},/obj/structure/plasticflaps,/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/production) -"Cf" = (/obj/machinery/conveyor{dir = 8; id = "mining_internal"},/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/production) -"Cg" = (/obj/machinery/mineral/stacking_machine,/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/production) -"Ch" = (/obj/machinery/conveyor{tag = "icon-conveyor0 (SOUTHWEST)"; icon_state = "conveyor0"; dir = 10; id = "mining_internal"},/turf/simulated/floor{dir = 8; icon_state = "loadingarea"; tag = "loading"},/area/mine/production) -"Ci" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor,/area/mine/production) -"Cj" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor,/area/mine/production) -"Ck" = (/obj/machinery/mineral/equipment_vendor,/turf/simulated/floor,/area/mine/production) -"Cl" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor,/area/mine/production) -"Cm" = (/turf/space,/area/vox_station/mining) +"yN" = (/obj/structure/window/reinforced,/obj/structure/lattice,/obj/machinery/light{dir = 8},/turf/space,/area/mine/living_quarters) +"yO" = (/obj/structure/window/reinforced,/obj/structure/lattice,/turf/space,/area/mine/living_quarters) +"yP" = (/obj/structure/window/reinforced,/obj/structure/lattice,/turf/space,/area/mine/lobby) +"yQ" = (/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/mine/lobby) +"yR" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor,/area/mine/lobby) +"yS" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor,/area/mine/lobby) +"yT" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/door/firedoor{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/glass_mining{name = "Mining Station EVA"; req_access_txt = "54"},/turf/simulated/floor,/area/mine/eva) +"yU" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor,/area/mine/eva) +"yV" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "mining_east_airlock"; name = "interior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = null},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5; icon_state = "intact"},/turf/simulated/floor,/area/mine/eva) +"yW" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "mining_east_inner"; locked = 1; name = "Mining External Access"; req_access = null; req_access_txt = null},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor,/area/mine/eva) +"yX" = (/obj/machinery/atmospherics/pipe/manifold4w/hidden,/turf/simulated/floor,/area/mine/eva) +"yY" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/mine/eva) +"yZ" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "mining_east_outer"; locked = 1; name = "Mining External Access"; req_access = null; req_access_txt = null},/turf/simulated/floor/plating,/area/mine/eva) +"za" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "mining_east_airlock"; name = "exterior access button"; pixel_x = -25; pixel_y = -25; req_access_txt = null},/turf/simulated/floor/airless{tag = "icon-asteroidwarning (EAST)"; icon_state = "asteroidwarning"; dir = 4},/area/mine/explored) +"zb" = (/obj/machinery/atmospherics/pipe/simple/visible/universal,/turf/simulated/wall,/area/mine/west_outpost) +"zc" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/simulated/wall,/area/mine/west_outpost) +"zd" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/door/firedoor{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/maintenance{name = "Mining Station Maintenance"; req_access_txt = "54"},/turf/simulated/floor/plating,/area/mine/west_outpost) +"ze" = (/obj/machinery/conveyor{backwards = 2; dir = 2; forwards = 1; id = "mining_west"},/obj/structure/plasticflaps/mining,/turf/simulated/floor,/area/mine/west_outpost) +"zf" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor,/area/mine/living_quarters) +"zg" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/mine/living_quarters) +"zh" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor,/area/mine/living_quarters) +"zi" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/mine/living_quarters) +"zj" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor,/area/mine/living_quarters) +"zk" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor,/area/mine/living_quarters) +"zl" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor,/area/mine/living_quarters) +"zm" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/mine/living_quarters) +"zn" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/door/firedoor{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/glass_mining{name = "Mining Station Bridge"; req_access_txt = "48"},/turf/simulated/floor,/area/mine/living_quarters) +"zo" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor,/area/mine/living_quarters) +"zp" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor,/area/mine/lobby) +"zq" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/door/firedoor{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/glass_mining{name = "Mining Station Bridge"; req_access_txt = "48"},/turf/simulated/floor,/area/mine/lobby) +"zr" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor,/area/mine/lobby) +"zs" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/mine/lobby) +"zt" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor,/area/mine/lobby) +"zu" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor,/area/mine/lobby) +"zv" = (/obj/effect/spawner/window/reinforced,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/mine/eva) +"zw" = (/obj/machinery/power/apc{dir = 2; name = "Mining EVA APC"; pixel_x = 1; pixel_y = -23},/obj/structure/cable,/obj/machinery/vending/eva,/turf/simulated/floor,/area/mine/eva) +"zx" = (/obj/machinery/mineral/equipment_vendor,/turf/simulated/floor,/area/mine/eva) +"zy" = (/obj/machinery/light/small,/turf/simulated/floor,/area/mine/eva) +"zz" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor{icon_state = "bot"},/area/mine/eva) +"zA" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "mining_east_pump"; tag_exterior_door = "mining_east_outer"; frequency = 1379; id_tag = "mining_east_airlock"; tag_interior_door = "mining_east_inner"; pixel_x = 0; pixel_y = -25; req_access_txt = null; tag_chamber_sensor = "mining_east_sensor"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1379; id_tag = "mining_east_pump"},/turf/simulated/floor,/area/mine/eva) +"zB" = (/obj/machinery/camera{c_tag = "Mining Outpost Starboard External Airlock"; dir = 1; network = list("Mining Outpost")},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "mining_east_sensor"; pixel_x = 0; pixel_y = -25},/obj/structure/ore_box,/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1379; id_tag = "mining_east_pump"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/mine/eva) +"zC" = (/obj/machinery/meter,/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor/plating,/area/mine/west_outpost) +"zD" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plating,/area/mine/west_outpost) +"zE" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plating,/area/mine/west_outpost) +"zF" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/item/weapon/storage/box/lights/bulbs,/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/obj/machinery/light_switch{pixel_x = 6; pixel_y = 23},/turf/simulated/floor/plating,/area/mine/west_outpost) +"zG" = (/turf/simulated/floor/airless{tag = "icon-asteroidwarning (NORTH)"; icon_state = "asteroidwarning"; dir = 1},/area/mine/explored) +"zH" = (/obj/machinery/conveyor_switch{id = "mining_west"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/airless{tag = "icon-asteroidwarning (NORTH)"; icon_state = "asteroidwarning"; dir = 1},/area/mine/explored) +"zI" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8},/turf/simulated/floor,/area/mine/living_quarters) +"zJ" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/simulated/floor,/area/mine/living_quarters) +"zK" = (/obj/machinery/atmospherics/pipe/manifold/hidden,/turf/simulated/floor,/area/mine/living_quarters) +"zL" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/simulated/floor,/area/mine/living_quarters) +"zM" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 1},/turf/simulated/floor,/area/mine/living_quarters) +"zN" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/machinery/light,/turf/simulated/floor,/area/mine/living_quarters) +"zO" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "mining_west_airlock"; name = "interior access button"; pixel_x = -25; pixel_y = -25; req_access_txt = null},/turf/simulated/floor,/area/mine/living_quarters) +"zP" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/machinery/camera{c_tag = "Mining Outpost Port Connector"; dir = 1; network = list("Mining Outpost")},/obj/machinery/light_switch{pixel_y = -25},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/mine/living_quarters) +"zQ" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/living_quarters) +"zR" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/space,/area/mine/living_quarters) +"zS" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/space,/area/mine/lobby) +"zT" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/machinery/light{dir = 4},/turf/space,/area/mine/lobby) +"zU" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/lobby) +"zV" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/mine/lobby) +"zW" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/simulated/floor,/area/mine/lobby) +"zX" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/simulated/floor,/area/mine/lobby) +"zY" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4},/turf/simulated/floor,/area/mine/lobby) +"zZ" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall,/area/mine/production{name = "Mining Station Mech Bay"}) +"Aa" = (/turf/simulated/wall,/area/mine/production{name = "Mining Station Mech Bay"}) +"Ab" = (/obj/structure/extinguisher_cabinet,/turf/simulated/wall,/area/mine/production{name = "Mining Station Mech Bay"}) +"Ac" = (/obj/machinery/camera{c_tag = "Mining Outpost Production Line External"; dir = 4; network = list("Mining Outpost")},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) +"Ad" = (/turf/simulated/floor/plating/airless/asteroid,/area/mine/production) +"Ae" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 1; initialize_directions = 0; level = 1},/turf/simulated/floor/plating,/area/mine/west_outpost) +"Af" = (/obj/machinery/power/port_gen/pacman{anchored = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/plating,/area/mine/west_outpost) +"Ag" = (/obj/machinery/power/terminal{dir = 4},/obj/machinery/light/small,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/mine/west_outpost) +"Ah" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable,/turf/simulated/floor/plating,/area/mine/west_outpost) +"Ai" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/door/firedoor{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Infirmary"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "white"},/area/mine/living_quarters) +"Aj" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/simulated/wall,/area/mine/living_quarters) +"Ak" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/door/firedoor{dir = 4; name = "Firelock"},/obj/machinery/door/airlock/maintenance{name = "Mining Station Maintenance"; req_access_txt = "48"},/turf/simulated/floor/plating,/area/mine/living_quarters) +"Al" = (/obj/machinery/atmospherics/pipe/simple/visible/universal,/turf/simulated/wall,/area/mine/living_quarters) +"Am" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "mining_west_inner"; locked = 1; name = "Mining External Access"; req_access = null; req_access_txt = null},/turf/simulated/floor,/area/mine/living_quarters) +"An" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor,/area/mine/lobby) +"Ao" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor,/area/mine/lobby) +"Ap" = (/obj/structure/disposalpipe/junction,/turf/simulated/wall,/area/mine/production{name = "Mining Station Mech Bay"}) +"Aq" = (/obj/structure/table/reinforced,/obj/machinery/cell_charger,/obj/machinery/alarm{pixel_y = 25},/turf/simulated/floor,/area/mine/production{name = "Mining Station Mech Bay"}) +"Ar" = (/obj/structure/table/reinforced,/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor,/area/mine/production{name = "Mining Station Mech Bay"}) +"As" = (/obj/structure/table/reinforced,/obj/item/weapon/wrench,/obj/item/weapon/screwdriver,/obj/item/weapon/crowbar,/obj/machinery/power/apc{dir = 1; name = "Mining Station Mech Bay APC"; pixel_x = 1; pixel_y = 25},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor,/area/mine/production{name = "Mining Station Mech Bay"}) +"At" = (/obj/machinery/mech_bay_recharge_port,/turf/simulated/floor/plating,/area/mine/production) +"Au" = (/turf/simulated/floor/mech_bay_recharge_floor,/area/mine/production{name = "Mining Station Mech Bay"}) +"Av" = (/obj/machinery/computer/mech_bay_power_console,/turf/simulated/floor,/area/mine/production{name = "Mining Station Mech Bay"}) +"Aw" = (/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/production) +"Ax" = (/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 5},/area/mine/production) +"Ay" = (/obj/machinery/light/small{dir = 8},/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor{icon_state = "white"},/area/mine/living_quarters) +"Az" = (/turf/simulated/floor{icon_state = "white"},/area/mine/living_quarters) +"AA" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor{icon_state = "white"},/area/mine/living_quarters) +"AB" = (/obj/machinery/light_switch{pixel_x = 23; pixel_y = 0},/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "white"},/area/mine/living_quarters) +"AC" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/mine/living_quarters) +"AD" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/light/small{dir = 1},/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor/plating,/area/mine/living_quarters) +"AE" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plating,/area/mine/living_quarters) +"AF" = (/obj/machinery/light_switch{pixel_y = 23},/obj/machinery/atmospherics/pipe/manifold/visible{dir = 8},/turf/simulated/floor/plating,/area/mine/living_quarters) +"AG" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 8},/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor/plating,/area/mine/living_quarters) +"AH" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "mining_west_pump"},/obj/structure/closet/emcloset,/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/living_quarters) +"AI" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 1},/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/living_quarters) +"AJ" = (/obj/machinery/light/small{dir = 4},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "mining_west_sensor"; pixel_x = 25; pixel_y = -5},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "mining_west_pump"; tag_exterior_door = "mining_west_outer"; frequency = 1379; id_tag = "mining_west_airlock"; tag_interior_door = "mining_west_inner"; pixel_x = 25; pixel_y = 5; req_access_txt = null; tag_chamber_sensor = "mining_west_sensor"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1379; id_tag = "mining_west_pump"},/turf/simulated/floor,/area/mine/living_quarters) +"AK" = (/obj/machinery/status_display{dir = 4; layer = 4; pixel_x = -32; pixel_y = 0},/turf/simulated/floor,/area/mine/lobby) +"AL" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/mine/lobby) +"AM" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/mine/lobby) +"AN" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_mining{name = "Mining Station Mech Bay"; req_access_txt = "54"},/turf/simulated/floor,/area/mine/production{name = "Mining Station Mech Bay"}) +"AO" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor,/area/mine/production{name = "Mining Station Mech Bay"}) +"AP" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor,/area/mine/production{name = "Mining Station Mech Bay"}) +"AQ" = (/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/mine/production{name = "Mining Station Mech Bay"}) +"AR" = (/turf/simulated/floor{dir = 4; icon_state = "loadingarea"; tag = "loading"},/area/mine/production{name = "Mining Station Mech Bay"}) +"AS" = (/obj/structure/plasticflaps/mining,/turf/simulated/floor{dir = 4; icon_state = "loadingarea"; tag = "loading"},/area/mine/production{name = "Mining Station Mech Bay"}) +"AT" = (/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"; tag = "icon-asteroidfloor"},/area/mine/production) +"AU" = (/obj/machinery/sleeper{dir = 8},/turf/simulated/floor{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/mine/living_quarters) +"AV" = (/obj/machinery/sleep_console{dir = 8},/turf/simulated/floor{tag = "icon-warnwhite (NORTHEAST)"; icon_state = "warnwhite"; dir = 5},/area/mine/living_quarters) +"AW" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/camera{c_tag = "Mining Outpost Sleeper Room"; dir = 1; network = list("Mining Outpost")},/turf/simulated/floor{icon_state = "white"},/area/mine/living_quarters) +"AX" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/o2{pixel_x = 2; pixel_y = 2},/obj/item/weapon/storage/firstaid/regular,/obj/item/weapon/storage/firstaid/brute,/turf/simulated/floor{icon_state = "white"},/area/mine/living_quarters) +"AY" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating,/area/mine/living_quarters) +"AZ" = (/turf/simulated/floor/plating,/area/mine/living_quarters) +"Ba" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/manifold/visible{dir = 8},/turf/simulated/floor/plating,/area/mine/living_quarters) +"Bb" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 8},/turf/simulated/floor/plating,/area/mine/living_quarters) +"Bc" = (/obj/machinery/camera{c_tag = "Mining Outpost Port Exterior Airlock"; dir = 4; network = list("Mining Outpost")},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "mining_west_pump"},/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/living_quarters) +"Bd" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden,/turf/simulated/floor{icon_state = "warning"},/area/mine/living_quarters) +"Be" = (/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/portable_atmospherics/canister/air,/obj/machinery/atmospherics/portables_connector{dir = 8},/turf/simulated/floor{icon_state = "warning"},/area/mine/living_quarters) +"Bf" = (/turf/space,/area/shuttle/mining/outpost) +"Bg" = (/obj/machinery/power/apc{dir = 8; name = "Mining Station Starboard Wing APC"; pixel_x = -27; pixel_y = 2},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor,/area/mine/lobby) +"Bh" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/mine/lobby) +"Bi" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/mine/lobby) +"Bj" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_mining{name = "Mining Station Mech Bay"; req_access_txt = "54"},/turf/simulated/floor,/area/mine/production{name = "Mining Station Mech Bay"}) +"Bk" = (/turf/simulated/floor,/area/mine/production{name = "Mining Station Mech Bay"}) +"Bl" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor,/area/mine/production{name = "Mining Station Mech Bay"}) +"Bm" = (/turf/simulated/floor,/area/mine/production) +"Bn" = (/obj/structure/cable,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/machinery/power/port_gen/pacman{anchored = 1},/turf/simulated/floor/plating,/area/mine/living_quarters) +"Bo" = (/obj/machinery/power/port_gen/pacman{anchored = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/plating,/area/mine/living_quarters) +"Bp" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating,/area/mine/living_quarters) +"Bq" = (/obj/structure/reagent_dispensers/fueltank,/obj/machinery/atmospherics/pipe/manifold/visible,/turf/simulated/floor/plating,/area/mine/living_quarters) +"Br" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "mining_west_outer"; locked = 1; name = "Mining External Access"; req_access = null; req_access_txt = null},/turf/simulated/floor/plating,/area/mine/living_quarters) +"Bs" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/simulated/floor,/area/mine/lobby) +"Bt" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/mine/lobby) +"Bu" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/mine/lobby) +"Bv" = (/obj/machinery/mineral/equipment_vendor,/turf/simulated/floor,/area/mine/production{name = "Mining Station Mech Bay"}) +"Bw" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/light,/turf/simulated/floor,/area/mine/production{name = "Mining Station Mech Bay"}) +"Bx" = (/obj/structure/ore_box,/obj/machinery/camera{c_tag = "Mining Outpost Mech Bay"; dir = 1; network = list("Mining Outpost")},/obj/machinery/light_switch{pixel_y = -25},/turf/simulated/floor{icon_state = "bot"},/area/mine/production{name = "Mining Station Mech Bay"}) +"By" = (/obj/machinery/mech_bay_recharge_port,/obj/machinery/light/small,/turf/simulated/floor/plating,/area/mine/production{name = "Mining Station Mech Bay"}) +"Bz" = (/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/production) +"BA" = (/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"; tag = "icon-asteroidfloor"},/area/mine/explored) +"BB" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "mining_west_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = null},/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"; tag = "icon-asteroidfloor"},/area/mine/explored) +"BC" = (/turf/simulated/floor/airless{tag = "icon-asteroidwarning (EAST)"; icon_state = "asteroidwarning"; dir = 4},/area/mine/explored) +"BD" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) +"BE" = (/obj/effect/spawner/window/reinforced,/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_y = 0},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/lobby) +"BF" = (/obj/effect/spawner/window/reinforced,/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/lobby) +"BG" = (/obj/machinery/computer/shuttle_control/mining{req_access_txt = "48"},/turf/simulated/floor,/area/mine/lobby) +"BH" = (/obj/item/device/radio/beacon,/turf/simulated/floor,/area/mine/lobby) +"BI" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/mine/lobby) +"BJ" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/disposalpipe/segment,/obj/machinery/light{dir = 4},/turf/simulated/floor,/area/mine/lobby) +"BK" = (/turf/simulated/wall,/area/mine/living_quarters{name = "Mining Station Break Room"}) +"BL" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/wall,/area/mine/living_quarters{name = "Mining Station Break Room"}) +"BM" = (/obj/machinery/power/apc{dir = 1; name = "Mining Station External APC"; pixel_x = 1; pixel_y = 25},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/airless{tag = "icon-asteroidwarning"; icon_state = "asteroidwarning"; dir = 2},/area/mine/explored) +"BN" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/airless{tag = "icon-asteroidwarning"; icon_state = "asteroidwarning"; dir = 2},/area/mine/explored) +"BO" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/airless{tag = "icon-asteroidwarning"; icon_state = "asteroidwarning"; dir = 2},/area/mine/explored) +"BP" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "mining_outpost_outer"; locked = 1; name = "Mining Dock Airlock"; req_access = null; req_access_txt = "13"},/turf/simulated/floor/plating,/area/mine/lobby) +"BQ" = (/obj/machinery/embedded_controller/radio/airlock/docking_port{frequency = 1380; id_tag = "mining_outpost_airlock"; pixel_x = 0; pixel_y = 30; req_access_txt = "0"; req_one_access_txt = "13;48"; tag_airpump = "mining_outpost_pump"; tag_chamber_sensor = "mining_outpost_sensor"; tag_exterior_door = "mining_outpost_outer"; tag_interior_door = "mining_outpost_inner"},/obj/machinery/airlock_sensor{frequency = 1380; id_tag = "mining_outpost_sensor"; pixel_x = 0; pixel_y = -25},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1380; id_tag = "mining_outpost_pump"},/turf/simulated/floor,/area/mine/lobby) +"BR" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "mining_outpost_inner"; locked = 1; name = "Mining Dock Airlock"; req_access = null; req_access_txt = "13"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor,/area/mine/production) +"BS" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1380; master_tag = "mining_outpost_airlock"; name = "interior access button"; pixel_x = -30; pixel_y = -25; req_access_txt = "0"; req_one_access_txt = "13;48"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; initialize_directions = 10},/turf/simulated/floor,/area/mine/lobby) +"BT" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/disposalpipe/segment,/obj/machinery/camera{c_tag = "Mining Shuttle Airlock"; dir = 8; network = list("Mining Outpost")},/turf/simulated/floor,/area/mine/lobby) +"BU" = (/obj/machinery/vending/snack,/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) +"BV" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/vending/cola,/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) +"BW" = (/obj/machinery/light{dir = 1; on = 1},/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) +"BX" = (/obj/machinery/hologram/holopad,/obj/machinery/firealarm{pixel_y = 25},/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) +"BY" = (/obj/machinery/power/apc{dir = 1; name = "Mining Station Break Room APC"; pixel_x = 1; pixel_y = 25},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) +"BZ" = (/obj/machinery/alarm{pixel_y = 25},/obj/structure/closet/crate/bin{name = "Garbage bin"},/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) +"Ca" = (/obj/structure/flora/kirbyplants,/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) +"Cb" = (/obj/machinery/door/firedoor,/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/mine/living_quarters{name = "Mining Station Break Room"}) +"Cc" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/mine/lobby) +"Cd" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/mine/lobby) +"Ce" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8},/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/mine/lobby) +"Cf" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Mining Break Room"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor{icon_state = "bar"},/area/mine/lobby) +"Cg" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) +"Ch" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) +"Ci" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) +"Cj" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) +"Ck" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) +"Cl" = (/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) +"Cm" = (/obj/structure/lattice,/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1380; master_tag = "mining_outpost_airlock"; name = "exterior access button"; pixel_x = -8; pixel_y = 25; req_access_txt = "0"; req_one_access_txt = "13;48"},/turf/space,/area/space) +"Cn" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/mine/lobby) +"Co" = (/obj/machinery/door/firedoor,/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/plating,/area/mine/lobby) +"Cp" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) +"Cq" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) +"Cr" = (/obj/structure/stool/bed/chair,/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) +"Cs" = (/obj/machinery/camera{c_tag = "Mining Outpost Break Room"; dir = 8; network = list("Mining Outpost")},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) +"Ct" = (/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/turf/simulated/floor,/area/mine/lobby) +"Cu" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Mining Break Room"},/turf/simulated/floor{icon_state = "bar"},/area/mine/lobby) +"Cv" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) +"Cw" = (/obj/structure/table,/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) +"Cx" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) +"Cy" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/turf/simulated/floor/plating,/area/mine/explored) +"Cz" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/mine/explored) +"CA" = (/obj/structure/lattice,/obj/structure/disposalpipe/segment{dir = 4},/turf/space,/area/space) +"CB" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/mine/lobby) +"CC" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/closet/emcloset,/turf/simulated/floor,/area/mine/lobby) +"CD" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/mine/lobby) +"CE" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/disposalpipe/segment,/obj/machinery/light/small,/turf/simulated/floor,/area/mine/lobby) +"CF" = (/obj/machinery/vending/cigarette,/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) +"CG" = (/obj/machinery/vending/coffee,/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) +"CH" = (/obj/machinery/light/small,/obj/machinery/light_switch{pixel_y = -25},/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) +"CI" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters{name = "Mining Station Break Room"}) +"CJ" = (/turf/simulated/wall,/area/mine/production) +"CK" = (/obj/machinery/door/firedoor,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/airlock/glass_mining{name = "Mining Station Loading Bay"; req_access_txt = "54"},/turf/simulated/floor,/area/mine/production) +"CL" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/wall,/area/mine/production) +"CM" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/light/small{dir = 1},/turf/simulated/floor,/area/mine/production) +"CN" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/mine/production) +"CO" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/disposalpipe/segment,/obj/machinery/light_switch{pixel_y = 25},/turf/simulated/floor,/area/mine/production) +"CP" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/apc{dir = 1; name = "Mining Station Loading Bay APC"; pixel_x = 1; pixel_y = 25},/turf/simulated/floor{dir = 4; icon_state = "loadingarea"; tag = "loading"},/area/mine/production) +"CQ" = (/obj/machinery/mineral/mint{input_dir = 8; output_dir = 4},/turf/simulated/floor,/area/mine/production) +"CR" = (/obj/machinery/alarm{pixel_y = 25; target_temperature = 283.15},/turf/simulated/floor{dir = 4; icon_state = "loadingarea"; tag = "loading"},/area/mine/production) +"CS" = (/obj/machinery/camera{c_tag = "Mining Outpost Production Room"; dir = 4; network = list("Mining Outpost")},/obj/machinery/conveyor_switch/oneway{id = "mining_internal"; name = "mining conveyor"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor,/area/mine/production) +"CT" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/mine/production) +"CU" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/mine/production) +"CV" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor,/area/mine/production) +"CW" = (/obj/machinery/light/small{dir = 4; pixel_y = 8},/turf/simulated/floor,/area/mine/production) +"CX" = (/obj/structure/window/reinforced,/obj/structure/table/reinforced,/obj/item/weapon/rcs,/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/mine/production) +"CY" = (/obj/structure/window/reinforced,/obj/structure/closet/crate,/turf/simulated/floor,/area/mine/production) +"CZ" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5; icon_state = "intact"},/obj/structure/window/reinforced,/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/turf/simulated/floor,/area/mine/production) +"Da" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/window/reinforced,/obj/structure/closet/crate,/turf/simulated/floor,/area/mine/production) +"Db" = (/obj/structure/closet/walllocker/emerglocker/east,/turf/simulated/floor,/area/mine/production) +"Dc" = (/obj/structure/disposaloutlet{dir = 4},/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/light/small{dir = 8},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/mine/production) +"Dd" = (/obj/machinery/conveyor{dir = 4; id = "mining_internal"},/turf/simulated/floor/plating{dir = 1; icon_state = "warnplate"; nitrogen = 0.01; oxygen = 0.01},/area/mine/production) +"De" = (/obj/machinery/conveyor{dir = 4; id = "mining_internal"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 5},/area/mine/production) +"Df" = (/obj/machinery/telepad_cargo,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/mine/production) +"Dg" = (/turf/simulated/floor,/area/mine/unexplored) +"Dh" = (/turf/simulated/floor{icon_state = "bar"},/area/mine/unexplored) +"Di" = (/turf/space,/area/vox_station/mining) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -1648,56 +1696,56 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacaaaaaaaaaaaaaaaaacacacaaaaacafaeaeaewvxdxexfwJxexgxexexhxixjwRxkxlaeaeaeaeaeafafafacacacacacacacbkbkbkbkbkbkbkbkbkbkbkbkacacafafntaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafacacacacacacvPxmwTxnxoxpxqvPvPvPvPvVvPwXxrxrxrxswgaeaeaeaeaeaeaeaaaaaaaaaaaaaaaaaaaeaeaeaeaeaeaeaeaeaeaexaxtxuxuxvxbaexwaeaeaeofntafafafpepepepepepepepepepeafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacaaaaaaaaaaaaaaaaaaaaaaaaaaacafaeaeaewvxxxexexyxexgxzxexewJxAxBwJqAaeaeaeaeaeaeaeafafafafacacacacacacbkbkbkbkbkbkbkbkbkacacafafaewhaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafacacacvPxCxDxEwTxFxGxHxsxIxJxKvPxLxrxMxNxOwgaeaeaeaeaeaeaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeaeaexPxPxQxQxaxRxSxTxUxbxbxbxbaeaeaeaeafafafafpepepepepepepepepeafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacafafaeaewvxVxexWwPxXxYxZxewvwvwvwvwvwxseqDaeaeaeaeaeaeaeaeafafafacacacacacbkbkbkbkbkbkbkacacacafaeaeaeaeaeaeaeaeaeaeaeseqDaeaeaeaeaeaeaeaeaeafafacacyavPvPvPybvPvPycydyeycydvPvPvPvPvPyfvPvPwgwgaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaexQxQygyhyiyjykylylymynyoypyqqDaeaeaenuafafafpepepepepepepeafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacafaeaewvyrysytwJyuyvywyxyyyzyAyByCyDulumrBrBrBrBrBqUaeaeaeaeafafafacacacacacbkbkbkacacacacafafaeaeujrBrBrBrBrBrBrBrBulumrBrBrBrBqUaeaeaeaeaeafacacacacacybyEyFyGxrxOyHxsxOxHyIyJyKxsxOxryLyMwgwgwgyNyNyNyNyNyNyNyNyOyOyOyOyOyOyOxQxQxQyPyhyQyRySyTylylyUyVyWyXyYyZaeaeaenuafafafpepepepepepeafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacafaeaewvwvwvwvwvzazbzcwvwvzdwvwvwvwvqyqAaeaeaeaeaeqLaeaeaeaeafaeafafacacacacacacacacacacafafaeaeaeqLaeaeaeaeaeaeaeaeqyqAaeaeaeaeqLaeaeaeaeaeafafntafafacvPvPvPvPxrxOzezfzgxJzhzizizjzjzkzizlzmzizmznznznznznznznznzozozozozozozozpzqzpzrzqzsztzuzvzwzxzyyqzzzAyqqAaeaeaeaeafafafafpepepepepeafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacafafaeaeaeaeaewvzBzCzDzEwvzFzGonaeaeaeaeaeqNaeaeaeqTrBrBqUaeaeaeaeafacacacacacacacacacacafaeaeujrBukaeaeaeaeafaeaeqNaeaeaeaeaeaeqLaeaeaeaeaeaeaewhaeafafafafafvPxrzHzIzJzJzIzKzLzMzJzJzNzIzOzPzPzPzQzQzQzQzQzQzQzQzRzRzRzRzRzRzSzTzTzTzUzVzWzXzYxPxPxPxPxPxPxPxPzZAaAbAaonnuafafafpepepepeafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacafafaeaeaeaewvAcAdAeAfwvaeaeaeaeaeaeafafntafaeaeaeaeaeqLaeaeaeaeaeafacacacacacafafafafafaeujukaeaeaeafafafafafafntaeaeaeaeaeaeqLaeaeaeaeaeaeaeaeaeaeaeafafvPvPycAgycvPvPAhAiAjvPvPvPAkycvPwgaeaeaeaaaaaaaaagaaaaaaagaaaaaaaaaaagaaxQxQyhAlAmAnAoApApAqxPArAsAtAuAuAuAuonaeafafafpepepepeafafafpeafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacafafaeaeaewvwvwvwvwvwvaeaeafafafafafacacafafaeaeaeaeqLaeaeaeaeaeaeafafafafafafaeaeaeaeaeqLaeaeafafafacacacacacafaeaeaeaeaeaeqLaeaeaeseqDaeaeaeaeaeaeaeafvPAvAwAxAyvPAzAAABACADvPAEAFAGvPaeaeaeaeaeaeaaaaagaaaaaaagagagagagagagagagxPyhAHztxPxPxPxPAIxPAIxPxPonononononaeafafafpepepeafafpepepeafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacafaeaeaeaeaeaeaeaeaeaeaeafacacacacacacacafafaeaeaeqTrBrBrBqUaeaeaeaeaeaeaeaeaeaeaeaeaeqLaeafafacacacacacacacafafaeaeaeaeaeqTrBrBrBulumrBrBrBqUaeaeaeaevPAJAKALAMvPANAOAOAPAQvPARASATvPaeaeaeaeaeaeagagagagagagagAUAUAUAUAUagaaaaxPAVAWztAXAYApApApAZApAqxPaeaeaeaeaeafafafafpepeafafafpepepeafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacafaeaeaeaeaeaeaeaeaeafafafacacacacacacacacafafafaeaeaeaeaeqTqUaeaeseqDaeaeujrBrBrBrBrBukaeafacacacacbkbkbkacacafafafaeaeaeaeaeaeaeqyqAaeaeaeqLaeaeaeaeyavPvPvPvPvPBaBbBcBdAQvPvPBeycyaaeaeaeaeaeaeaaaaagaaaaaaagAUAUAUAUAUagaaxQxQBfBgBhxPxPxPxPxPxPBiBjxPaeaeaeaeaeafafafpepepeafafafafpepeafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacafafafafaeaeaeaeafafafacacacacacacacacacacacacafafafaeqNaeaeqTrBrBulumrBrBukaeaeaeaeaeaeaeafacacacbkbkbkbkbkacacacafafafafaeaeaeaeaeaeaeaeaeqTrBrBqUaeaeaeaeaeaeyavPvPvPvPvPyaBkBlBmBnaeaeaeaeaeaaaaaaagaaaaaaagAUAUAUAUAUBoxQBpBqBrBsztBtBuBvBwBxByBiBjxPaeaeaeaeafafafafpepeafafafafpepepeafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacafafafafafafacacacacacacacacacacacacacacacacafafntafaeaeaeaeqyqAaeaeaeaeqNaeafafafafafacacbkbkbkbkbkbkbkacacacacacafafafafafafafafaeaeaeaeaeqLaeaeaeaeaeaeaeaeqyBzBABABABABBqAaeaeaeaeaeaeagagagagagagagagAUAUAUAUAUBCBDBEBFyhBsztyhyhBGyhBHBIBiBJxPaeaeaeaeafafafafpepeafafafpepepeafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacbkbkbkbkbkbkacacacacacacafafaeaeaeaeaeaeaeaeaentafafacacacacacbkbkbkbkbkbkbkbkacacacacacacacacacacacacafafaeaeaeaeqLaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaaaaaaaaaaaaagAUAUAUAUAUxQxQxQBKyhBsBLzVzVBMzVzVBNBOBPxPaeaeaerLntafafafpeafafafafpepepeafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacbkbkbkbkbkbkbkbkbkbkbkacacacacacacafafafaeaeaeafafafafafacacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacacacafaeaeaeaeqTrBrBrBrBrBrBrBrBrBrBrBrBrBrBrBrBrBqUaeaeaeaeaeaeaaaaaaaaaaagAUAUAUAUAUBQaaxQxQBRBsztyhyhBSBTyhyhBiBjxPaeaeaeaeafafafafafafafafpepepeafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacbkacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacacacacafafafafafacacacacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacacacafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeqLaeseqDaeaeaepMpMaaaaaaagAUAUAUAUAUagaaaaBUBVBsBWzVBXBiBiBiBYBiBjxPaeaeaeaeafafafafafpeafafpepepeafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacacacacacacacacacacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacacacacafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeqTrBulumrBrBrBBZCaCbCbCbCbCbCbCbCbCbCbCbCbxQCcCdyhyhyhBTCeCfCfCgChxPaeaeafafafafafpepepeafpepepeafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacacacacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacacacacafafafaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeqyqAaeaeaepMpMagaaaaaaaaaaaaaaaaaaaaaaBUBUyhyhyhyhCixPxPxPxPxPxPaeaeafafafafpepepepepepepeafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacacacacacafafafafafafafafafafntufaeaeaeaeaeaeaeaeaeaeaeaeaeaeagaaaaaaaaaaaaaaaaaaaaaaaaBUCjyhyhyhyhxQaeaeaeaeaeaeaeafafafafpepepepepepepeafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacacacacacacacacacacacafaeaeaeaeaeaeaeaeaeaeaeaeaeqNaeaeaaaaaaaaaaaaaaaaaaaaaaaaBUBUCkCkClyhxQaeaeaeaeaeaeafafafafpepepepepepepeafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkctbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacacacacacacacacacacafaeaeaeaeaeaeaeaeaeaeaeaeafntafafaaaaaaaaaaaaaaaaaaaaaaaaaaBUxPxPxPxPxPaeaeaeaeofntafafafpepepepepepepeafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacacacafafaeaeaeaeaeaeaeaeaeafacacafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeaeaeaeaeaeaeaeaeafafafpepepepepepepeafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacbkbkbkbkbkbkbkbkbkbkbkbkctbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacacafafafafafafafafafafafacacacafafafaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeaeaeaeaeaeaeaeafafafpepepepepepepeafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaeaeaevpaeaeaeafafafafafafpepepepepeafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkctbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacacacacacacacacacacbkbkbkbkbkacacaaaaaaaaaaaaaaaaaaaaaaaeaeafntafafafafafafafafpepepepepepeafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacaaaaaaaaaaaaaaaaaaaaaaafafafafafafafafafafpepepepepepeafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkctbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkctbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacaaaaaaaaaaaaaaaaaaaaaaaaafafafafafafpepepepepepepeafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacaaaaaaaaaaaaaaaaaaaaaaaaaaafafafafpepepepepepepeafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafpepepepepeafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafafpepepeafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkctbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacafaeaewvyrysytwJyuyvywyxyyyzyAyByCyDulumrBrBrBrBrBqUaeaeaeaeafafafacacacacacbkbkbkacacacacafafaeaeujrBrBrBrBrBrBrBrBulumrBrBrBrBqUaeaeaeaeaeafacacacacacybyEyFyGxrxOyHxsxOxHyIyJyKxsxOxryLyMwgwgwgyNyOyOyOyOyOyOyOyPyPyPyPyPyPyPxQxQxQyQyhyRySyTyUylylyVyWyXyYyZzaaeaeaenuafafafpepepepepepeafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacafaeaewvwvwvwvwvzbzczdwvwvzewvwvwvwvqyqAaeaeaeaeaeqLaeaeaeaeafaeafafacacacacacacacacacacafafaeaeaeqLaeaeaeaeaeaeaeaeqyqAaeaeaeaeqLaeaeaeaeaeafafntafafacvPvPvPvPxrxOzfzgzhxJzizjzjzkzkzlzjzmznzjznzozozozozozozozozpzpzpzpzpzpzpzqzrzqzszrztzuzvzwzxzyzzyqzAzByqqAaeaeaeaeafafafafpepepepepeafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacafafaeaeaeaeaewvzCzDzEzFwvzGzHonaeaeaeaeaeqNaeaeaeqTrBrBqUaeaeaeaeafacacacacacacacacacacafaeaeujrBukaeaeaeaeafaeaeqNaeaeaeaeaeaeqLaeaeaeaeaeaeaewhaeafafafafafvPxrzIzJzKzKzJzLzMzNzKzKzOzJzPzQzQzQzRzRzRzRzRzRzRzRzSzSzSzSzSzSzTzUzUzUzVzWzXzYzZAaAbAaAaAaAaAaAaAcaeAdaeaenuafafafpepepepeafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacafafaeaeaeaewvAeAfAgAhwvaeaeaeaeaeaeafafntafaeaeaeaeaeqLaeaeaeaeaeafacacacacacafafafafafaeujukaeaeaeafafafafafafntaeaeaeaeaeaeqLaeaeaeaeaeaeaeaeaeaeaeafafvPvPycAiycvPvPAjAkAlvPvPvPAmycvPwgaeaeaeaaaaaaaaagaaaaaaagaaaaaaaaaaagaaxQxQyhAnAoApAqArAsAtAuAvAaAwAxAdAdAdaeaeafafafpepepepeafafafpeafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacafafaeaeaewvwvwvwvwvwvaeaeafafafafafacacafafaeaeaeaeqLaeaeaeaeaeaeafafafafafafaeaeaeaeaeqLaeaeafafafacacacacacafaeaeaeaeaeaeqLaeaeaeseqDaeaeaeaeaeaeaeafvPAyAzAAABvPACADAEAFAGvPAHAIAJvPaeaeaeaeaeaeaaaaagaaaaaaagagagagagagagagagxPAKALAMANAOAOAPAQAQARASATwuaeaeaeaeaeafafafpepepeafafpepepeafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacafaeaeaeaeaeaeaeaeaeaeaeafacacacacacacacafafaeaeaeqTrBrBrBqUaeaeaeaeaeaeaeaeaeaeaeaeaeqLaeafafacacacacacacacafafaeaeaeaeaeqTrBrBrBulumrBrBrBqUaeaeaeaevPAUAVAWAXvPAYAZAZBaBbvPBcBdBevPaeaeaeaeaeaeagagagagagagagBfBfBfBfBfagaaaaxPBgBhBiBjBkBlBmAQAQARASATwuaeaeaeaeafafafafpepeafafafpepepeafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacafaeaeaeaeaeaeaeaeaeafafafacacacacacacacacafafafaeaeaeaeaeqTqUaeaeseqDaeaeujrBrBrBrBrBukaeafacacacacbkbkbkacacafafafaeaeaeaeaeaeaeqyqAaeaeaeqLaeaeaeaeyavPvPvPvPvPBnBoBpBqBbvPvPBrycyaaeaeaeaeaeaeaaaaagaaaaaaagBfBfBfBfBfagaaxQxQBsBtBuAaBvBwBxByAuAvAaBzwFaeaeaeaeafafafpepepeafafafafpepeafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacafafafafaeaeaeaeafafafacacacacacacacacacacacacafafafaeqNaeaeqTrBrBulumrBrBukaeaeaeaeaeaeaeafacacacbkbkbkbkbkacacacafafafafaeaeaeaeaeaeaeaeaeqTrBrBqUaeaeaeaeaeaeyavPvPvPvPvPyaBABBBCBDaeaeaeaeaeaaaaaaagaaaaaaagBfBfBfBfBfBExQBFBGBHBIBJxPBKBLBKBKBKBKBKBKufaeaeaeafafafafpepeafafafafpepepeafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacafafafafafafacacacacacacacacacacacacacacacacafafntafaeaeaeaeqyqAaeaeaeaeqNaeafafafafafacacbkbkbkbkbkbkbkacacacacacafafafafafafafafaeaeaeaeaeqLaeaeaeaeaeaeaeaeqyBMBNBNBNBNBOqAaeaeaeaeaeaeagagagagagagagagBfBfBfBfBfBPBQBRBSyhBIBTxPBUBVBWBXBYBZCaCbaeaeaeaeafafafafpepeafafafpepepeafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacbkbkbkbkbkbkacacacacacacafafaeaeaeaeaeaeaeaeaentafafacacacacacbkbkbkbkbkbkbkbkacacacacacacacacacacacacafafaeaeaeaeqLaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaaaaaaaaaaaaagBfBfBfBfBfxQxQxQCcyhCdCeCfCgChCiCjCkClClCbaeaeaerLntafafafpeafafafafpepepeafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacbkbkbkbkbkbkbkbkbkbkbkacacacacacacafafafaeaeaeafafafafafacacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacacacafaeaeaeaeqTrBrBrBrBrBrBrBrBrBrBrBrBrBrBrBrBrBqUaeaeaeaeaeaeaaaaaaaaaaagBfBfBfBfBfCmaaxQxQyhBICnCoCpCqClClCrCrCsBKaeaeaeaeafafafafafafafafpepepeafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacbkacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacacacacafafafafafacacacacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacacacafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeqLaeseqDaeaeaentntaaaaaaagBfBfBfBfBfagaaaaxPCtBIBiCuClClClCvCwCwCxCbaeaeaeaeafafafafafpeafafpepepeafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacacacacacacacacacacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacacacacafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeqTrBulumrBrBrBCyCzCACACACACACACACACACACACACBCCCDCExPCFCGCHClCICIClCbaeaeafafafafafpepepeafpepepeafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacacacacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacacacacafafafaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeqyqAaeaeaentntagaaaaaaaaaaaaaaaaaaaaaaCJCJCKCLCJBKBKBKCbCbCbCbBKaeaeafafafafpepepepepepepeafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacacacacacafafafafafafafafafafntufaeaeaeaeaeaeaeaeaeaeaeaeaeaeagaaaaaaaaaaaaaaaaaaaaaaCJCMCNCOCPCQCRCJaeaeaeaeaeaeaeafafafafpepepepepepepeafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacacacacacacacacacacacafaeaeaeaeaeaeaeaeaeaeaeaeaeqNaeaeaaaaaaaaaaaaaaaaaaaaaaCJCSCTCUCVBmCWCJaeaeaeaeaeaeafafafafpepepepepepepeafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkctbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacacacacacacacacacacafaeaeaeaeaeaeaeaeaeaeaeaeafntafafaaaaaaaaaaaaaaaaaaaaaaCJCXCYCZDaBmDbCJaeaeaeaeofntafafafpepepepepepepeafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacacacafafaeaeaeaeaeaeaeaeaeafacacafafafaaaaaaaaaaaaaaaaaaaaaaCJDcDdDdDdDeDfCJaeaeaeaeaeafafafpepepepepepepeafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacbkbkbkbkbkbkbkbkbkbkbkbkctbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacacafafafafafafafafafafafacacacafafafaaaaaaaaaaaaaaaaaaaaCJCJCJCJCJCJCJCJaeaeaeaeafafafpepepepepepepeafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaeaeaeaeaevpaeaeaeafafafafafafpepepepepeafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkctbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacacacacacacacacacacbkbkbkbkbkacacaaaaaaaaaaaaaaaaaaaaaeaeaeafntafafafafafafafafpepepepepepeafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacaaaaaaaaaaaaaaaaaaaeaeafafafafafafafafafafpepepepepepeafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkctbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkctbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkDgbkbkbkbkacacacaaaaaaaaaaaaaaaaaaaaaeaeafafafafafafpepepepepepepeafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacaaaaaaaaaaaaaaaaaaaaaaaeaeafafafafpepepepepepepeafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacaaaaaaaaaaaaaaaaaaaaaaaaaeaeafafafpepepepepeafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkDhbkbkbkbkacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeafafafafpepepeafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkctbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeaeafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkctbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacaaaaaaaaacacacacacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkctbkbkbkbkbkbkbkbkbkbkbkbkbkacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacacacacaaaaaaaaaaaaaaaaaaaaaaCmaaaaaaCmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkctbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacacaaaaaaaaaaaaaaaaaaaaaaCmCmCmCmCmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacaaaaaaaaCmaaaaCmaaaaCmCmCmCmCmCmCmaaaaCmaaaaCmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacacaaaaaaaaCmCmCmCmaaCmCmCmCmCmCmCmCmCmaaCmCmCmCmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacacacaaaaaaaaaaCmCmCmCmaaCmCmCmCmCmCmCmCmCmaaCmCmCmCmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkctbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacacacaaaaaaaaaaCmCmCmCmaaCmCmCmCmCmCmCmCmCmaaCmCmCmCmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacacacaaaaaaaaaaaaCmCmCmCmCmCmCmCmCmCmCmCmCmCmCmCmCmCmCmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacacaaaaaaaaaaaaaaaaaaCmCmCmCmCmCmCmCmCmCmCmCmCmCmCmCmCmCmCmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacacacacacacacacacacacacacacacbkbkbkbkbkbkacacacacacacacacaaaaaaaaaaaaaaaaaaCmCmCmCmCmCmCmCmCmCmCmCmCmCmCmCmCmCmCmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaCmCmCmCmCmCmCmCmCmCmCmCmCmCmCmCmCmCmCmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkacacacacacacacacacacacacaaaaaaaaacacacacacacacacacacacacacacaaacacacaaaaaaaaaaaaaaaaaaaaaaCmCmCmCmCmCmCmCmCmCmCmCmCmCmCmCmCmCmCmCmCmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaacacacaaaaaaaaacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCmCmCmCmCmCmCmCmCmCmCmCmCmCmCmCmCmCmCmCmCmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCmCmCmCmaaaaCmCmCmCmCmCmCmaaaaCmCmCmCmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCmCmCmCmCmCmCmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCmCmCmCmCmCmCmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCmCmCmCmCmCmCmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCmCmCmCmCmCmCmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCmCmCmCmCmCmCmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCmCmCmCmCmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacacacacaaaaaaaaaaaaaaaaaaaaaaDiaaaaaaDiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkctbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacacaaaaaaaaaaaaaaaaaaaaaaDiDiDiDiDiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacaaaaaaaaDiaaaaDiaaaaDiDiDiDiDiDiDiaaaaDiaaaaDiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacacaaaaaaaaDiDiDiDiaaDiDiDiDiDiDiDiDiDiaaDiDiDiDiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacacacaaaaaaaaaaDiDiDiDiaaDiDiDiDiDiDiDiDiDiaaDiDiDiDiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkctbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacacacaaaaaaaaaaDiDiDiDiaaDiDiDiDiDiDiDiDiDiaaDiDiDiDiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacacacaaaaaaaaaaaaDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacacaaaaaaaaaaaaaaaaaaDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacacacacacacacacacacacacacacacbkbkbkbkbkbkacacacacacacacacaaaaaaaaaaaaaaaaaaDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkbkacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacbkbkbkbkbkbkbkbkbkbkbkbkbkacacacacacacacacacacacacaaaaaaaaacacacacacacacacacacacacacacaaacacacaaaaaaaaaaaaaaaaaaaaaaDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaacacacaaaaaaaaacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDiDiDiDiaaaaDiDiDiDiDiDiDiaaaaDiDiDiDiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDiDiDiDiDiDiDiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDiDiDiDiDiDiDiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDiDiDiDiDiDiDiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDiDiDiDiDiDiDiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDiDiDiDiDiDiDiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDiDiDiDiDiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/_maps/map_files/cyberiad/z6.dmm b/_maps/map_files/cyberiad/z6.dmm index 2a236529f0f..f62ef2a1b9f 100644 --- a/_maps/map_files/cyberiad/z6.dmm +++ b/_maps/map_files/cyberiad/z6.dmm @@ -648,7 +648,7 @@ "mx" = (/obj/structure/table,/turf/simulated/floor{icon_state = "dark"},/area/syndicate_depot) "my" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/engine,/area/syndicate_depot) "mz" = (/turf/simulated/floor/engine,/area/syndicate_depot) -"mA" = (/obj/structure/closet/crate{name = "munitions crate"},/obj/item/weapon/storage/box/donkpockets,/obj/item/ammo_box/magazine/m762,/obj/item/weapon/gun/projectile/automatic/c90gl,/turf/simulated/floor{icon_state = "dark"},/area/syndicate_depot) +"mA" = (/obj/structure/closet/crate{name = "munitions crate"},/obj/item/weapon/storage/box/donkpockets,/obj/item/ammo_box/magazine/m762,/obj/item/weapon/gun/projectile/automatic/m90,/turf/simulated/floor{icon_state = "dark"},/area/syndicate_depot) "mB" = (/obj/machinery/door/window{base_state = "right"; dir = 8; icon_state = "right"; name = "Telepad"; req_access_txt = "0"},/turf/simulated/floor/engine,/area/syndicate_depot) "mC" = (/obj/machinery/telepad,/turf/simulated/floor/engine,/area/syndicate_depot) "mD" = (/obj/structure/closet/crate{name = "munitions crate"},/obj/item/ammo_box/magazine/m12g/dragon,/obj/item/ammo_box/magazine/m12g/dragon,/obj/item/weapon/storage/fancy/cigarettes/cigpack_syndicate,/obj/item/weapon/storage/firstaid/tactical,/turf/simulated/floor{icon_state = "dark"},/area/syndicate_depot) diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index 4ce8554bb4c..b0312b6a475 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -42,13 +42,17 @@ #define NO_PAIN 32 #define REQUIRE_LIGHT 64 #define IS_WHITELISTED 128 -#define HAS_LIPS 512 -#define HAS_UNDERWEAR 1024 -#define IS_PLANT 2048 -#define CAN_BE_FAT 4096 -#define IS_RESTRICTED 8192 -#define NO_INTORGANS 16384 -#define NO_POISON 32768 +#define HAS_LIPS 256 +#define IS_PLANT 512 +#define CAN_BE_FAT 1024 +#define IS_RESTRICTED 2048 +#define NO_INTORGANS 4096 +#define NO_POISON 8192 + +//Species clothing flags +#define HAS_UNDERWEAR 1 +#define HAS_UNDERSHIRT 2 +#define HAS_SOCKS 4 //Species Blood Flags #define BLOOD_SLIME 1 diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index 031c8a12f60..ced91ac0287 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -58,10 +58,6 @@ #define MAX_STACK_AMOUNT_GLASS 50 #define MAX_STACK_AMOUNT_RODS 60 -#define CC_PER_SHEET_METAL 3750 -#define CC_PER_SHEET_GLASS 3750 -#define CC_PER_SHEET_MISC 2000 - //some colors #define COLOR_RED "#FF0000" #define COLOR_GREEN "#00FF00" diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 4d733de8320..9b8980b693f 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -322,8 +322,8 @@ Turf and target are seperate in case you want to teleport some distance from a t //Ensure the frequency is within bounds of what it should be sending/recieving at /proc/sanitize_frequency(var/f, var/low = PUBLIC_LOW_FREQ, var/high = PUBLIC_HIGH_FREQ) f = round(f) - f = max(low, f) - f = min(high, f) + f = max(low, f) + f = min(high, f) if ((f % 2) == 0) //Ensure the last digit is an odd number f += 1 return f @@ -779,7 +779,7 @@ proc/anim(turf/location as turf,target as mob|obj,a_icon,a_icon_state as text,fl else return get_step(ref, base_dir) -/proc/do_mob(var/mob/user , var/mob/target, var/time = 30, numticks = 5, var/stealth = 0) //This is quite an ugly solution but i refuse to use the old request system. +/proc/do_mob(var/mob/user , var/mob/target, var/time = 30, numticks = 5, var/uninterruptible = 0) //This is quite an ugly solution but i refuse to use the old request system. if(!user || !target) return 0 if(numticks == 0) @@ -798,7 +798,7 @@ proc/anim(turf/location as turf,target as mob|obj,a_icon,a_icon_state as text,fl if(user && user.client) user.client.images -= progbar return 0 - if ( user.loc != user_loc || target.loc != target_loc || user.get_active_hand() != holding || user.stat || user.stunned || user.weakened || user.paralysis || user.lying) + if (!uninterruptible && (user.loc != user_loc || target.loc != target_loc || user.get_active_hand() != holding || user.stat || user.stunned || user.weakened || user.paralysis || user.lying)) if(user && user.client) user.client.images -= progbar return 0 diff --git a/code/datums/material_container.dm b/code/datums/material_container.dm index 56750520095..8f84812e49e 100644 --- a/code/datums/material_container.dm +++ b/code/datums/material_container.dm @@ -48,10 +48,10 @@ if(amt > 0 && has_space(amt)) var/total_amount_saved = total_amount if(material_type) - for(var/datum/material/M in materials) - if(M.material_type == material_type) - M.amount += amt - total_amount += amt + var/datum/material/M = materials[material_type] + if(M) + M.amount += amt + total_amount += amt else for(var/datum/material/M in materials) M.amount += amt @@ -60,9 +60,14 @@ return 0 /datum/material_container/proc/insert_stack(obj/item/stack/S, amt = 0) - if(!amt) + if(amt <= 0) + return 0 + if(amt > S.amount) amt = S.amount var/material_amt = get_item_material_amount(S) + if(!material_amt) + return 0 + amt = min(amt, round(((max_amount - total_amount) / material_amt))) if(!amt) return 0 @@ -75,7 +80,8 @@ if(!I) return 0 if(istype(I,/obj/item/stack)) - return insert_stack(I) + var/obj/item/stack/S = I + return insert_stack(I, S.amount) var/material_amount = get_item_material_amount(I) if(!material_amount || !has_space(material_amount)) @@ -93,21 +99,21 @@ //For consuming material //mats is a list of types of material to use and the corresponding amounts, example: list(MAT_METAL=100, MAT_GLASS=200) -/datum/material_container/proc/use_amount(list/mats) +/datum/material_container/proc/use_amount(list/mats, multiplier=1) if(!mats || !mats.len) return 0 var/datum/material/M for(var/MAT in materials) M = materials[MAT] - if(M.amount < mats[MAT]) + if(M.amount < (mats[MAT] * multiplier)) return 0 var/total_amount_save = total_amount for(var/MAT in materials) M = materials[MAT] - M.amount -= mats[MAT] - total_amount -= mats[MAT] + M.amount -= mats[MAT] * multiplier + total_amount -= mats[MAT] * multiplier return total_amount_save - total_amount @@ -124,7 +130,9 @@ //For spawning mineral sheets; internal use only /datum/material_container/proc/retrieve(sheet_amt, datum/material/M) - if(sheet_amt > 0 && M.amount >= (sheet_amt * MINERAL_MATERIAL_AMOUNT)) + if(sheet_amt > 0) + if(M.amount < (sheet_amt * MINERAL_MATERIAL_AMOUNT)) + sheet_amt = round(M.amount / MINERAL_MATERIAL_AMOUNT) var/count = 0 while(sheet_amt > MAX_STACK_SIZE) @@ -159,6 +167,17 @@ /datum/material_container/proc/has_space(amt = 0) return (total_amount + amt) <= max_amount +/datum/material_container/proc/has_materials(list/mats, multiplier=1) + if(!mats || !mats.len) + return 0 + + var/datum/material/M + for(var/MAT in mats) + M = materials[MAT] + if(M.amount < (mats[MAT] * multiplier)) + return 0 + return 1 + /datum/material_container/proc/amount2sheet(amt) if(amt >= MINERAL_MATERIAL_AMOUNT) return round(amt / MINERAL_MATERIAL_AMOUNT) @@ -173,9 +192,6 @@ var/datum/material/M = materials[material_type] return M ? M.amount : 0 -/datum/material_container/proc/can_insert(obj/item/I) - return get_item_material_amount(I) - //returns the amount of material relevant to this container; //if this container does not support glass, any glass in 'I' will not be taken into account /datum/material_container/proc/get_item_material_amount(obj/item/I) diff --git a/code/datums/spells/lightning.dm b/code/datums/spells/lightning.dm index ee2431f0f64..af331645970 100644 --- a/code/datums/spells/lightning.dm +++ b/code/datums/spells/lightning.dm @@ -10,7 +10,7 @@ cooldown_min = 30 selection_type = "view" random_target = 1 - var/energy = 0 + var/start_time = 0 var/ready = 0 var/image/halo = null action_icon_state = "lightning" @@ -20,11 +20,11 @@ invocation_type = "none" /obj/effect/proc_holder/spell/targeted/lightning/Click() - if(!ready) + if(!ready && start_time==0) if(cast_check()) StartChargeup() else - if(cast_check(skipcharge=1)) + if(ready && cast_check(skipcharge=1)) choose_targets() return 1 @@ -33,16 +33,14 @@ user << "You start gathering the power." halo = image("icon"='icons/effects/effects.dmi',"icon_state" ="electricity","layer" = EFFECTS_LAYER) user.overlays.Add(halo) - spawn(0) - while(ready) - sleep(1) - energy++ - if(energy >= 100 && ready) - Discharge() + start_time = world.time + if(do_mob(user,user,100,uninterruptible=1)) + if(ready) + Discharge() obj/effect/proc_holder/spell/targeted/lightning/proc/Reset(mob/user = usr) ready = 0 - energy = 0 + start_time = 0 if(halo) user.overlays.Remove(halo) @@ -53,16 +51,14 @@ obj/effect/proc_holder/spell/targeted/lightning/proc/Reset(mob/user = usr) /obj/effect/proc_holder/spell/targeted/lightning/proc/Discharge(mob/user = usr) var/mob/living/M = user - //M.electrocute_act(25,"Lightning Bolt") M << "You lose control over the spell." Reset(user) start_recharge() /obj/effect/proc_holder/spell/targeted/lightning/cast(list/targets, mob/user = usr) - + ready = 0 var/mob/living/carbon/target = targets[1] - if(get_dist(user,target)>range) user << "They are too far away!" Reset(user) @@ -70,6 +66,7 @@ obj/effect/proc_holder/spell/targeted/lightning/proc/Reset(mob/user = usr) user.Beam(target,icon_state="lightning",icon='icons/effects/effects.dmi',time=5) + var/energy = min(world.time - start_time,100) Bolt(user,target,max(15,energy/2),5,user) //5 bounces for energy/2 burn Reset(user) diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm index f6101b6dcd2..98a131b9070 100644 --- a/code/datums/uplink_item.dm +++ b/code/datums/uplink_item.dm @@ -217,7 +217,6 @@ var/list/uplink_items = list() cost = 12 job = list("Research Director") - //Stimulants /datum/uplink_item/jobspecific/stims @@ -245,14 +244,14 @@ var/list/uplink_items = list() /datum/uplink_item/dangerous/pistol - name = "Syndicate Pistol" + name = "FK-69 Pistol" reference = "SPI" desc = "A small, easily concealable handgun that uses 10mm auto rounds in 8-round magazines and is compatible with suppressors." item = /obj/item/weapon/gun/projectile/automatic/pistol cost = 9 /datum/uplink_item/dangerous/revolver - name = "Syndicate Revolver" + name = "Syndicate .357 Revolver" reference = "SR" desc = "A brutally simple syndicate revolver that fires .357 Magnum cartridges and has 7 chambers." item = /obj/item/weapon/gun/projectile/revolver @@ -260,7 +259,7 @@ var/list/uplink_items = list() surplus = 50 /datum/uplink_item/dangerous/smg - name = "Syndicate SMG" + name = "C-20r Submachine Gun" reference = "SMG" desc = "A fully-loaded Scarborough Arms bullpup submachine gun that fires .45 rounds with a 20-round magazine and is compatible with suppressors." item = /obj/item/weapon/gun/projectile/automatic/c20r @@ -268,17 +267,17 @@ var/list/uplink_items = list() gamemodes = list("nuclear emergency") surplus = 40 -/datum/uplink_item/dangerous/car - name = "C-90gl Compact Assault Rifle" - desc = "A fully-loaded Zashchita Industriya toploading bullpup assault rifle that uses 30-round 5.45x39mm magazines with a toggleable underslung 40mm grenade launcher." +/datum/uplink_item/dangerous/carbine + name = "M-90gl Carbine" + desc = "A fully-loaded three-round burst carbine that uses 30-round 5.56mm magazines with a togglable underslung 40mm grenade launcher." reference = "AR" - item = /obj/item/weapon/gun/projectile/automatic/c90gl + item = /obj/item/weapon/gun/projectile/automatic/m90 cost = 18 gamemodes = list("nuclear emergency") surplus = 50 /datum/uplink_item/dangerous/machinegun - name = "Syndicate LMG" + name = "L6 Squad Automatic Weapon" desc = "A fully-loaded Aussec Armoury belt-fed machine gun. This deadly weapon has a massive 50-round magazine of devastating 7.62x51mm ammunition." reference = "LMG" item = /obj/item/weapon/gun/projectile/automatic/l6_saw @@ -399,7 +398,7 @@ var/list/uplink_items = list() surplus = 40 /datum/uplink_item/ammo/pistol - name = "Ammo-10mm" + name = "Magazine - 10mm" desc = "An additional 8-round 10mm magazine for use in the syndicate pistol. These subsonic rounds are dirt cheap but are half as effective as .357 rounds." reference = "10MM" item = /obj/item/ammo_box/magazine/m10mm @@ -460,11 +459,11 @@ var/list/uplink_items = list() cost = 2 gamemodes = list("nuclear emergency") -/datum/uplink_item/ammo/car - name = "Box Magazine - 5.45x39mm" - desc = "An additional 30-round 5.45x39mm magazine for use in the C-90gl assault rifle. These bullets don't have the punch to knock most targets down, but dish out higher overall damage." - reference = "545" - item = /obj/item/ammo_box/magazine/m545 +/datum/uplink_item/ammo/carbine + name = "Toploader Magazine - 5.56" + desc = "An additional 30-round 5.56 magazine for use in the M-90gl carbine. These bullets don't have the punch to knock most targets down, but dish out higher overall damage." + reference = "556" + item = /obj/item/ammo_box/magazine/m556 cost = 2 gamemodes = list("nuclear emergency") diff --git a/code/game/dna/dna.dm b/code/game/dna/dna.dm deleted file mode 100644 index 716d563a6e7..00000000000 --- a/code/game/dna/dna.dm +++ /dev/null @@ -1,128 +0,0 @@ -/////////////////////////// DNA DATUM -/datum/dna - var/unique_enzymes = null - var/struc_enzymes = null - var/uni_identity = null - var/b_type = "A+" - var/mutantrace = null //The type of mutant race the player is if applicable (i.e. potato-man) - var/real_name //Stores the real name of the person who originally got this dna datum. Used primarely for changelings, - -/datum/dna/proc/check_integrity(var/mob/living/carbon/human/character) - if(character) - if(length(uni_identity) != 39) - //Lazy. - var/temp - - //Hair - var/hair = 0 - if(!character.h_style) - character.h_style = "Skinhead" - - var/hrange = round(4095 / hair_styles_list.len) - var/index = hair_styles_list.Find(character.h_style) - if(index) - hair = index * hrange - rand(1,hrange-1) - - //Facial Hair - var/beard = 0 - if(!character.f_style) - character.f_style = "Shaved" - - var/f_hrange = round(4095 / facial_hair_styles_list.len) - index = facial_hair_styles_list.Find(character.f_style) - if(index) - beard = index * f_hrange - rand(1,f_hrange-1) - - temp = add_zero2(num2hex((character.r_hair),1), 3) - temp += add_zero2(num2hex((character.b_hair),1), 3) - temp += add_zero2(num2hex((character.g_hair),1), 3) - temp += add_zero2(num2hex((character.r_facial),1), 3) - temp += add_zero2(num2hex((character.b_facial),1), 3) - temp += add_zero2(num2hex((character.g_facial),1), 3) - temp += add_zero2(num2hex(((character.s_tone + 220) * 16),1), 3) - temp += add_zero2(num2hex((character.r_eyes),1), 3) - temp += add_zero2(num2hex((character.g_eyes),1), 3) - temp += add_zero2(num2hex((character.b_eyes),1), 3) - - var/gender - - if (character.gender == MALE) - gender = add_zero2(num2hex((rand(1,(2050+BLOCKADD))),1), 3) - else - gender = add_zero2(num2hex((rand((2051+BLOCKADD),4094)),1), 3) - - temp += gender - temp += add_zero2(num2hex((beard),1), 3) - temp += add_zero2(num2hex((hair),1), 3) - - uni_identity = temp - if(length(struc_enzymes)!= 3*STRUCDNASIZE) - var/mutstring = "" - for(var/i = 1, i <= STRUCDNASIZE, i++) - mutstring += add_zero2(num2hex(rand(1,1024)),3) - - struc_enzymes = mutstring - if(length(unique_enzymes) != 32) - unique_enzymes = md5(character.real_name) - else - if(length(uni_identity) != 39) uni_identity = "00600200A00E0110148FC01300B0095BD7FD3F4" - if(length(struc_enzymes)!= 3*STRUCDNASIZE) struc_enzymes = "43359156756131E13763334D1C369012032164D4FE4CD61544B6C03F251B6C60A42821D26BA3B0FD6" - -/datum/dna/proc/ready_dna(mob/living/carbon/human/character) - var/temp - - //Hair - var/hair = 0 - if(!character.h_style) - character.h_style = random_hair_style(character.gender) - - var/hrange = round(4095 / hair_styles_list.len) - var/index = hair_styles_list.Find(character.h_style) - if(index) - hair = index * hrange - rand(1,hrange-1) - - //Facial Hair - var/beard = 0 - if(!character.f_style) - character.f_style = random_facial_hair_style(character.gender) - - var/f_hrange = round(4095 / facial_hair_styles_list.len) - index = facial_hair_styles_list.Find(character.f_style) - if(index) - beard = index * f_hrange - rand(1,f_hrange-1) - - temp = add_zero2(num2hex((character.r_hair),1), 3) - temp += add_zero2(num2hex((character.b_hair),1), 3) - temp += add_zero2(num2hex((character.g_hair),1), 3) - temp += add_zero2(num2hex((character.r_facial),1), 3) - temp += add_zero2(num2hex((character.b_facial),1), 3) - temp += add_zero2(num2hex((character.g_facial),1), 3) - temp += add_zero2(num2hex(((character.s_tone + 220) * 16),1), 3) - temp += add_zero2(num2hex((character.r_eyes),1), 3) - temp += add_zero2(num2hex((character.g_eyes),1), 3) - temp += add_zero2(num2hex((character.b_eyes),1), 3) - - var/gender - - if (character.gender == MALE) - gender = add_zero2(num2hex((rand(1,(2050+BLOCKADD))),1), 3) - else - gender = add_zero2(num2hex((rand((2051+BLOCKADD),4094)),1), 3) - - temp += gender - temp += add_zero2(num2hex((beard),1), 3) - temp += add_zero2(num2hex((hair),1), 3) - - uni_identity = temp - - var/mutstring = "" - for(var/i = 1, i <= STRUCDNASIZE, i++) - mutstring += add_zero2(num2hex(rand(1,1024)),3) - - - struc_enzymes = mutstring - - unique_enzymes = md5(character.real_name) - reg_dna[unique_enzymes] = character.real_name - -/////////////////////////// DNA DATUM \ No newline at end of file diff --git a/code/game/dna/dna_misc.dm b/code/game/dna/dna_misc.dm deleted file mode 100644 index b4c8bda8b9f..00000000000 --- a/code/game/dna/dna_misc.dm +++ /dev/null @@ -1,575 +0,0 @@ -/////////////////////////// DNA HELPER-PROCS -/proc/getleftblocks(input,blocknumber,blocksize) - var/string - - if (blocknumber > 1) - string = copytext(input,1,((blocksize*blocknumber)-(blocksize-1))) - return string - else - return null - -/proc/getrightblocks(input,blocknumber,blocksize) - var/string - if (blocknumber < (length(input)/blocksize)) - string = copytext(input,blocksize*blocknumber+1,length(input)+1) - return string - else - return null - -/proc/getblockstring(input,block,subblock,blocksize,src,ui) // src is probably used here just for urls; ui is 1 when requesting for the unique identifier screen, 0 for structural enzymes screen - var/string - var/subpos = 1 // keeps track of the current sub block - var/blockpos = 1 // keeps track of the current block - - - for(var/i = 1, i <= length(input), i++) // loop through each letter - - var/pushstring - - if(subpos == subblock && blockpos == block) // if the current block/subblock is selected, mark it - pushstring = "[copytext(input, i, i+1)]" - else - if(ui) //This is for allowing block clicks to be differentiated - pushstring = "[copytext(input, i, i+1)]" - else - pushstring = "[copytext(input, i, i+1)]" - - string += pushstring // push the string to the return string - - if(subpos >= blocksize) // add a line break for every block - string += " | " - subpos = 0 - blockpos++ - - subpos++ - - return string - - -/proc/getblock(input,blocknumber,blocksize) - var/result - result = copytext(input ,(blocksize*blocknumber)-(blocksize-1),(blocksize*blocknumber)+1) - return result - -/proc/getblockbuffer(input,blocknumber,blocksize) - var/result[3] - var/block = copytext(input ,(blocksize*blocknumber)-(blocksize-1),(blocksize*blocknumber)+1) - for(var/i = 1, i <= 3, i++) - result[i] = copytext(block, i, i+1) - return result - -/proc/setblock(istring, blocknumber, replacement, blocksize) - if(!blocknumber) - return istring - if(!istring || !replacement || !blocksize) return 0 - var/result = getleftblocks(istring, blocknumber, blocksize) + replacement + getrightblocks(istring, blocknumber, blocksize) - return result - -/proc/add_zero2(t, u) - var/temp1 - while (length(t) < u) - t = "0[t]" - temp1 = t - if (length(t) > u) - temp1 = copytext(t,2,u+1) - return temp1 - -/proc/miniscramble(input,rs,rd) - var/output - output = null - if (input == "C" || input == "D" || input == "E" || input == "F") - output = pick(prob((rs*10));"4",prob((rs*10));"5",prob((rs*10));"6",prob((rs*10));"7",prob((rs*5)+(rd));"0",prob((rs*5)+(rd));"1",prob((rs*10)-(rd));"2",prob((rs*10)-(rd));"3") - if (input == "8" || input == "9" || input == "A" || input == "B") - output = pick(prob((rs*10));"4",prob((rs*10));"5",prob((rs*10));"A",prob((rs*10));"B",prob((rs*5)+(rd));"C",prob((rs*5)+(rd));"D",prob((rs*5)+(rd));"2",prob((rs*5)+(rd));"3") - if (input == "4" || input == "5" || input == "6" || input == "7") - output = pick(prob((rs*10));"4",prob((rs*10));"5",prob((rs*10));"A",prob((rs*10));"B",prob((rs*5)+(rd));"C",prob((rs*5)+(rd));"D",prob((rs*5)+(rd));"2",prob((rs*5)+(rd));"3") - if (input == "0" || input == "1" || input == "2" || input == "3") - output = pick(prob((rs*10));"8",prob((rs*10));"9",prob((rs*10));"A",prob((rs*10));"B",prob((rs*10)-(rd));"C",prob((rs*10)-(rd));"D",prob((rs*5)+(rd));"E",prob((rs*5)+(rd));"F") - if (!output) output = "5" - return output - -//Instead of picking a value far from the input, this will pick values closer to it. -//Sorry for the block of code, but it's more efficient then calling text2hex -> loop -> hex2text -/proc/miniscrambletarget(input,rs,rd) - var/output = null - switch(input) - if("0") - output = pick(prob((rs*10)+(rd));"0",prob((rs*10)+(rd));"1",prob((rs*10));"2",prob((rs*10)-(rd));"3") - if("1") - output = pick(prob((rs*10)+(rd));"0",prob((rs*10)+(rd));"1",prob((rs*10)+(rd));"2",prob((rs*10));"3",prob((rs*10)-(rd));"4") - if("2") - output = pick(prob((rs*10));"0",prob((rs*10)+(rd));"1",prob((rs*10)+(rd));"2",prob((rs*10)+(rd));"3",prob((rs*10));"4",prob((rs*10)-(rd));"5") - if("3") - output = pick(prob((rs*10)-(rd));"0",prob((rs*10));"1",prob((rs*10)+(rd));"2",prob((rs*10)+(rd));"3",prob((rs*10)+(rd));"4",prob((rs*10));"5",prob((rs*10)-(rd));"6") - if("4") - output = pick(prob((rs*10)-(rd));"1",prob((rs*10));"2",prob((rs*10)+(rd));"3",prob((rs*10)+(rd));"4",prob((rs*10)+(rd));"5",prob((rs*10));"6",prob((rs*10)-(rd));"7") - if("5") - output = pick(prob((rs*10)-(rd));"2",prob((rs*10));"3",prob((rs*10)+(rd));"4",prob((rs*10)+(rd));"5",prob((rs*10)+(rd));"6",prob((rs*10));"7",prob((rs*10)-(rd));"8") - if("6") - output = pick(prob((rs*10)-(rd));"3",prob((rs*10));"4",prob((rs*10)+(rd));"5",prob((rs*10)+(rd));"6",prob((rs*10)+(rd));"7",prob((rs*10));"8",prob((rs*10)-(rd));"9") - if("7") - output = pick(prob((rs*10)-(rd));"4",prob((rs*10));"5",prob((rs*10)+(rd));"6",prob((rs*10)+(rd));"7",prob((rs*10)+(rd));"8",prob((rs*10));"9",prob((rs*10)-(rd));"A") - if("8") - output = pick(prob((rs*10)-(rd));"5",prob((rs*10));"6",prob((rs*10)+(rd));"7",prob((rs*10)+(rd));"8",prob((rs*10)+(rd));"9",prob((rs*10));"A",prob((rs*10)-(rd));"B") - if("9") - output = pick(prob((rs*10)-(rd));"6",prob((rs*10));"7",prob((rs*10)+(rd));"8",prob((rs*10)+(rd));"9",prob((rs*10)+(rd));"A",prob((rs*10));"B",prob((rs*10)-(rd));"C") - if("10")//A - output = pick(prob((rs*10)-(rd));"7",prob((rs*10));"8",prob((rs*10)+(rd));"9",prob((rs*10)+(rd));"A",prob((rs*10)+(rd));"B",prob((rs*10));"C",prob((rs*10)-(rd));"D") - if("11")//B - output = pick(prob((rs*10)-(rd));"8",prob((rs*10));"9",prob((rs*10)+(rd));"A",prob((rs*10)+(rd));"B",prob((rs*10)+(rd));"C",prob((rs*10));"D",prob((rs*10)-(rd));"E") - if("12")//C - output = pick(prob((rs*10)-(rd));"9",prob((rs*10));"A",prob((rs*10)+(rd));"B",prob((rs*10)+(rd));"C",prob((rs*10)+(rd));"D",prob((rs*10));"E",prob((rs*10)-(rd));"F") - if("13")//D - output = pick(prob((rs*10)-(rd));"A",prob((rs*10));"B",prob((rs*10)+(rd));"C",prob((rs*10)+(rd));"D",prob((rs*10)+(rd));"E",prob((rs*10));"F") - if("14")//E - output = pick(prob((rs*10)-(rd));"B",prob((rs*10));"C",prob((rs*10)+(rd));"D",prob((rs*10)+(rd));"E",prob((rs*10)+(rd));"F") - if("15")//F - output = pick(prob((rs*10)-(rd));"C",prob((rs*10));"D",prob((rs*10)+(rd));"E",prob((rs*10)+(rd));"F") - - if(!input || !output) //How did this happen? - output = "8" - - return output - -/proc/isblockon(hnumber, bnumber , var/UI = 0) - - var/temp2 - temp2 = hex2num(hnumber) - - if(UI) - if(temp2 >= 2050) - return 1 - else - return 0 - - if (bnumber == HULKBLOCK || bnumber == TELEBLOCK || bnumber == NOBREATHBLOCK || bnumber == NOPRINTSBLOCK || bnumber == SMALLSIZEBLOCK || bnumber == SHOCKIMMUNITYBLOCK) - if (temp2 >= 3500 + BLOCKADD) - return 1 - else - return 0 - if (bnumber == XRAYBLOCK || bnumber == FIREBLOCK || bnumber == REMOTEVIEWBLOCK || bnumber == REGENERATEBLOCK || bnumber == INCREASERUNBLOCK || bnumber == REMOTETALKBLOCK || bnumber == MORPHBLOCK) - if (temp2 >= 3050 + BLOCKADD) - return 1 - else - return 0 - - - if (temp2 >= 2050 + BLOCKADD) - return 1 - else - return 0 - -/proc/ismuton(var/block,var/mob/M) - return isblockon(getblock(M.dna.struc_enzymes, block,3),block) - -/proc/randmutb(mob/M as mob) - if(!M) return - var/num - var/newdna - num = pick(GLASSESBLOCK,COUGHBLOCK,FAKEBLOCK,NERVOUSBLOCK,CLUMSYBLOCK,TWITCHBLOCK,HEADACHEBLOCK,BLINDBLOCK,DEAFBLOCK,HALLUCINATIONBLOCK) - M.dna.check_integrity() - newdna = setblock(M.dna.struc_enzymes,num,toggledblock(getblock(M.dna.struc_enzymes,num,3)),3) - M.dna.struc_enzymes = newdna - return - -/proc/randmutg(mob/M as mob) - if(!M) return - var/num - var/newdna - num = pick(HULKBLOCK,XRAYBLOCK,FIREBLOCK,TELEBLOCK,NOBREATHBLOCK,REMOTEVIEWBLOCK,REGENERATEBLOCK,INCREASERUNBLOCK,REMOTETALKBLOCK,MORPHBLOCK,BLENDBLOCK,NOPRINTSBLOCK,SHOCKIMMUNITYBLOCK,SMALLSIZEBLOCK) - M.dna.check_integrity() - newdna = setblock(M.dna.struc_enzymes,num,toggledblock(getblock(M.dna.struc_enzymes,num,3)),3) - M.dna.struc_enzymes = newdna - return - -/proc/scramble(var/type, mob/M as mob, var/p) - if(!M) return - M.dna.check_integrity() - if(type) - for(var/i = 1, i <= STRUCDNASIZE-1, i++) - if(prob(p)) - M.dna.uni_identity = setblock(M.dna.uni_identity, i, add_zero2(num2hex(rand(1,4095), 1), 3), 3) - updateappearance(M, M.dna.uni_identity) - - else - for(var/i = 1, i <= STRUCDNASIZE-1, i++) - if(prob(p)) - M.dna.struc_enzymes = setblock(M.dna.struc_enzymes, i, add_zero2(num2hex(rand(1,4095), 1), 3), 3) - domutcheck(M, null) - return - -/proc/randmuti(mob/M as mob) - if(!M) return - var/num - var/newdna - num = rand(1,UNIDNASIZE) - M.dna.check_integrity() - newdna = setblock(M.dna.uni_identity,num,add_zero2(num2hex(rand(1,4095),1),3),3) - M.dna.uni_identity = newdna - return - -/proc/toggledblock(hnumber) //unused - var/temp3 - var/chtemp - temp3 = hex2num(hnumber) - if (temp3 < 2050) - chtemp = rand(2050,4095) - return add_zero2(num2hex(chtemp,1),3) - else - chtemp = rand(1,2049) - return add_zero2(num2hex(chtemp,1),3) -/////////////////////////// DNA HELPER-PROCS - -/////////////////////////// DNA MISC-PROCS -/proc/updateappearance(mob/M as mob , structure) - if(istype(M, /mob/living/carbon/human)) - M.dna.check_integrity() - var/mob/living/carbon/human/H = M - H.r_hair = hex2num(getblock(structure,1,3)) - H.b_hair = hex2num(getblock(structure,2,3)) - H.g_hair = hex2num(getblock(structure,3,3)) - H.r_facial = hex2num(getblock(structure,4,3)) - H.b_facial = hex2num(getblock(structure,5,3)) - H.g_facial = hex2num(getblock(structure,6,3)) - H.s_tone = round(((hex2num(getblock(structure,7,3)) / 16) - 220)) - H.r_eyes = hex2num(getblock(structure,8,3)) - H.g_eyes = hex2num(getblock(structure,9,3)) - H.b_eyes = hex2num(getblock(structure,10,3)) - if(H.internal_organs_by_name["eyes"]) - H.update_eyes() - - if (isblockon(getblock(structure, 11,3),11 , 1)) - H.gender = FEMALE - else - H.gender = MALE - - //Hair - var/hairnum = hex2num(getblock(structure,13,3)) - var/index = round(1 +(hairnum / 4096)*hair_styles_list.len) - if((0 < index) && (index <= hair_styles_list.len)) - H.h_style = hair_styles_list[index] - - //Facial Hair - var/beardnum = hex2num(getblock(structure,12,3)) - index = round(1 +(beardnum / 4096)*facial_hair_styles_list.len) - if((0 < index) && (index <= facial_hair_styles_list.len)) - H.f_style = facial_hair_styles_list[index] - - H.update_body(0) - H.update_hair() - - return 1 - else - return 0 - -/proc/probinj(var/pr, var/inj) - return prob(pr+inj*pr) - -/proc/domutcheck(mob/living/M as mob, connected, inj) - if (!M) return - - M.dna.check_integrity() - - M.disabilities = 0 - M.sdisabilities = 0 - var/old_mutations = M.mutations - M.mutations = list() - M.pass_flags = 0 -// M.see_in_dark = 2 -// M.see_invisible = 0 - - if(PLANT in old_mutations) - M.mutations.Add(PLANT) - if(SKELETON in old_mutations) - M.mutations.Add(SKELETON) - if(FAT in old_mutations) - M.mutations.Add(FAT) - if(HUSK in old_mutations) - M.mutations.Add(HUSK) - - if(ismuton(NOBREATHBLOCK,M)) - if(probinj(45,inj) || (mNobreath in old_mutations)) - M << "\blue You feel no need to breathe." - M.mutations.Add(mNobreath) - if(ismuton(REMOTEVIEWBLOCK,M)) - if(probinj(45,inj) || (mRemote in old_mutations)) - M << "\blue Your mind expands" - M.mutations.Add(mRemote) - M.verbs += /mob/living/carbon/human/proc/remoteobserve - if(ismuton(REGENERATEBLOCK,M)) - if(probinj(45,inj) || (mRegen in old_mutations)) - M << "\blue Your body pulses with energy" - M.mutations.Add(mRegen) - if(ismuton(INCREASERUNBLOCK,M)) - if(probinj(45,inj) || (mRun in old_mutations)) - M << "\blue You feel quick" - M.mutations.Add(mRun) - if(ismuton(REMOTETALKBLOCK,M)) - if(probinj(45,inj) || (mRemotetalk in old_mutations)) - M << "\blue You expand your mind outwards" - M.mutations.Add(mRemotetalk) - M.verbs += /mob/living/carbon/human/proc/remotesay - if(ismuton(MORPHBLOCK,M)) - if(probinj(45,inj) || (mMorph in old_mutations)) - M.mutations.Add(mMorph) - M << "\blue Your skin feels strange" - M.verbs += /mob/living/carbon/human/proc/morph - if(ismuton(BLENDBLOCK,M)) - if(probinj(45,inj) || (mBlend in old_mutations)) - M.mutations.Add(mBlend) - M << "\blue You feel alone" - if(ismuton(HALLUCINATIONBLOCK,M)) - if(probinj(45,inj) || (mHallucination in old_mutations)) - M.mutations.Add(mHallucination) - M << "\red Your mind says 'Hello'" - if(ismuton(NOPRINTSBLOCK,M)) - if(probinj(45,inj) || (mFingerprints in old_mutations)) - M.mutations.Add(mFingerprints) - M << "\blue Your fingers feel numb" - if(ismuton(SHOCKIMMUNITYBLOCK,M)) - if(probinj(45,inj) || (mShock in old_mutations)) - M.mutations.Add(mShock) - M << "\blue Your skin feels dry" - if(ismuton(SMALLSIZEBLOCK,M)) - if(probinj(45,inj) || (mSmallsize in old_mutations)) - M << "\blue Your skin feels rubbery" - M.mutations.Add(mSmallsize) - M.pass_flags |= 1 - - - - if (isblockon(getblock(M.dna.struc_enzymes, HULKBLOCK,3),HULKBLOCK)) - if(probinj(5,inj) || (HULK in old_mutations)) - M << "\blue Your muscles hurt." - M.mutations.Add(HULK) - if (isblockon(getblock(M.dna.struc_enzymes, HEADACHEBLOCK,3),HEADACHEBLOCK)) - M.disabilities |= EPILEPSY - M << "\red You get a headache." - if (isblockon(getblock(M.dna.struc_enzymes, FAKEBLOCK,3),FAKEBLOCK)) - M << "\red You feel strange." - if (prob(95)) - if(prob(50)) - randmutb(M) - else - randmuti(M) - else - randmutg(M) - if (isblockon(getblock(M.dna.struc_enzymes, COUGHBLOCK,3),COUGHBLOCK)) - M.disabilities |= COUGHING - M << "\red You start coughing." - if (isblockon(getblock(M.dna.struc_enzymes, CLUMSYBLOCK,3),CLUMSYBLOCK)) - M << "\red You feel lightheaded." - M.mutations.Add(CLUMSY) - if (isblockon(getblock(M.dna.struc_enzymes, TWITCHBLOCK,3),TWITCHBLOCK)) - M.disabilities |= TOURETTES - M << "\red You twitch." - if (isblockon(getblock(M.dna.struc_enzymes, XRAYBLOCK,3),XRAYBLOCK)) - if(probinj(30,inj) || (XRAY in old_mutations)) - M << "\blue The walls suddenly disappear." -// M.sight |= (SEE_MOBS|SEE_OBJS|SEE_TURFS) -// M.see_in_dark = 8 -// M.see_invisible = 2 - M.mutations.Add(XRAY) - if (isblockon(getblock(M.dna.struc_enzymes, NERVOUSBLOCK,3),NERVOUSBLOCK)) - M.disabilities |= NERVOUS - M << "\red You feel nervous." - if (isblockon(getblock(M.dna.struc_enzymes, FIREBLOCK,3),FIREBLOCK)) - if(probinj(30,inj) || (COLD_RESISTANCE in old_mutations)) - M << "\blue Your body feels warm." - M.mutations.Add(COLD_RESISTANCE) - if (isblockon(getblock(M.dna.struc_enzymes, BLINDBLOCK,3),BLINDBLOCK)) - M.sdisabilities |= BLIND - M << "\red You can't seem to see anything." - if (isblockon(getblock(M.dna.struc_enzymes, TELEBLOCK,3),TELEBLOCK)) - if(probinj(15,inj) || (TK in old_mutations)) - M << "\blue You feel smarter." - M.mutations.Add(TK) - if (isblockon(getblock(M.dna.struc_enzymes, DEAFBLOCK,3),DEAFBLOCK)) - M.sdisabilities |= DEAF - M.ear_deaf = 1 - M << "\red Its kinda quiet.." - if (isblockon(getblock(M.dna.struc_enzymes, GLASSESBLOCK,3),GLASSESBLOCK)) - M.disabilities |= NEARSIGHTED - M << "Your eyes feel weird..." - - /* If you want the new mutations to work, UNCOMMENT THIS. - if(istype(M, /mob/living/carbon)) - for (var/datum/mutations/mut in global_mutations) - mut.check_mutation(M) - */ - -//////////////////////////////////////////////////////////// Monkey Block - if (isblockon(getblock(M.dna.struc_enzymes, MONKEYBLOCK,3),MONKEYBLOCK) && istype(M, /mob/living/carbon/human)) - // human > monkey - var/mob/living/carbon/human/H = M - H.notransform = 1 - var/list/implants = list() //Try to preserve implants. - for(var/obj/item/weapon/implant/W in H) - implants += W - W.loc = null - - if(!connected) - for(var/obj/item/W in (H.contents-implants)) - if (W==H.w_uniform) // will be teared - continue - H.unEquip(W) - M.notransform = 1 - M.canmove = 0 - M.icon = null - M.invisibility = 101 - var/atom/movable/overlay/animation = new( M.loc ) - animation.icon_state = "blank" - animation.icon = 'icons/mob/mob.dmi' - animation.master = src - flick("h2monkey", animation) - sleep(48) - del(animation) - - - var/mob/living/carbon/monkey/O = null - if(H.species.primitive) - O = new H.species.primitive(src) - else - H.gib() //Trying to change the species of a creature with no primitive var set is messy. - return - - if(M) - if (M.dna) - O.dna = M.dna - M.dna = null - - if (M.suiciding) - O.suiciding = M.suiciding - M.suiciding = null - - - for(var/datum/disease/D in M.viruses) - O.viruses += D - D.affected_mob = O - M.viruses -= D - - - for(var/obj/T in (M.contents-implants)) - del(T) - - O.loc = M.loc - - if(M.mind) - M.mind.transfer_to(O) //transfer our mind to the cute little monkey - - if (connected) //inside dna thing - var/obj/machinery/dna_scannernew/C = connected - O.loc = C - C.occupant = O - connected = null - O.real_name = text("monkey ([])",copytext(md5(M.real_name), 2, 6)) - O.take_overall_damage(M.getBruteLoss() + 40, M.getFireLoss()) - O.adjustToxLoss(M.getToxLoss() + 20) - O.adjustOxyLoss(M.getOxyLoss()) - O.stat = M.stat - O.a_intent = I_HARM - for (var/obj/item/weapon/implant/I in implants) - I.loc = O - I.implanted = O -// O.update_icon = 1 //queue a full icon update at next life() call - del(M) - return - - if (!isblockon(getblock(M.dna.struc_enzymes, MONKEYBLOCK,3),MONKEYBLOCK) && !istype(M, /mob/living/carbon/human)) - // monkey > human, - var/mob/living/carbon/monkey/Mo = M - Mo.notransform = 1 - var/list/implants = list() //Still preserving implants - for(var/obj/item/weapon/implant/W in Mo) - implants += W - W.loc = null - if(!connected) - for(var/obj/item/W in (Mo.contents-implants)) - Mo.unEquip(W) - M.notransform = 1 - M.canmove = 0 - M.icon = null - M.invisibility = 101 - var/atom/movable/overlay/animation = new( M.loc ) - animation.icon_state = "blank" - animation.icon = 'icons/mob/mob.dmi' - animation.master = src - flick("monkey2h", animation) - sleep(48) - del(animation) - - var/mob/living/carbon/human/human/O = new( src ) - if(Mo.greaterform) - O.set_species(Mo.greaterform) - - if (isblockon(getblock(M.dna.uni_identity, 11,3),11)) - O.gender = FEMALE - else - O.gender = MALE - - if (M) - if (M.dna) - O.dna = M.dna - M.dna = null - - if (M.suiciding) - O.suiciding = M.suiciding - M.suiciding = null - - for(var/datum/disease/D in M.viruses) - O.viruses += D - D.affected_mob = O - M.viruses -= D - - //for(var/obj/T in M) - // del(T) - - O.loc = M.loc - - if(M.mind) - M.mind.transfer_to(O) //transfer our mind to the human - - if (connected) //inside dna thing - var/obj/machinery/dna_scannernew/C = connected - O.loc = C - C.occupant = O - connected = null - - var/i - while (!i) - var/randomname - if (O.gender == MALE) - randomname = capitalize(pick(first_names_male) + " " + capitalize(pick(last_names))) - else - randomname = capitalize(pick(first_names_female) + " " + capitalize(pick(last_names))) - if (findname(randomname)) - continue - else - O.real_name = randomname - i++ - updateappearance(O,O.dna.uni_identity) - O.take_overall_damage(M.getBruteLoss(), M.getFireLoss()) - O.adjustToxLoss(M.getToxLoss()) - O.adjustOxyLoss(M.getOxyLoss()) - O.stat = M.stat - for (var/obj/item/weapon/implant/I in implants) - I.loc = O - I.implanted = O -// O.update_icon = 1 //queue a full icon update at next life() call - del(M) - return -//////////////////////////////////////////////////////////// Monkey Block - if(M) - M.update_icon = 1 //queue a full icon update at next life() call - return null - - -/proc/togglemut(mob/M as mob, var/block) - if(!M) return - var/newdna - M.dna.check_integrity() - newdna = setblock(M.dna.struc_enzymes,block,toggledblock(getblock(M.dna.struc_enzymes,block,3)),3) - M.dna.struc_enzymes = newdna - return - -/////////////////////////// DNA MISC-PROCS \ No newline at end of file diff --git a/code/game/dna/genes/monkey.dm b/code/game/dna/genes/monkey.dm index d260575a89b..474c034f21c 100644 --- a/code/game/dna/genes/monkey.dm +++ b/code/game/dna/genes/monkey.dm @@ -5,31 +5,34 @@ block=MONKEYBLOCK /datum/dna/gene/monkey/can_activate(var/mob/M,var/flags) - return istype(M, /mob/living/carbon/human) + return ishuman(M) /datum/dna/gene/monkey/activate(var/mob/living/carbon/human/H, var/connected, var/flags) if(!istype(H,/mob/living/carbon/human)) -// testing("Cannot monkey-ify [M], type is [M.type].") return - if(issmall(H)) // Already a monkey + if(issmall(H)) return for(var/obj/item/W in H) if(istype(W,/obj/item/organ)) continue + if(istype(W,/obj/item/weapon/implant)) + continue H.unEquip(W) + H.regenerate_icons() H.canmove = 0 H.stunned = 1 H.icon = null H.invisibility = 101 - var/atom/movable/overlay/animation = new /atom/movable/overlay( H.loc ) + + var/atom/movable/overlay/animation = new /atom/movable/overlay(H.loc) animation.icon_state = "blank" animation.icon = 'icons/mob/mob.dmi' animation.master = H flick("h2monkey", animation) - sleep(48) - //animation = null - + sleep(22) + qdel(animation) + H.stunned = 0 H.update_canmove() H.invisibility = initial(H.invisibility) @@ -43,33 +46,34 @@ if(H.hud_used) H.hud_used.instantiate() - H << "You are now a [H.species.name]. " - qdel(animation) + H << "You are now a [H.species.name]." return H /datum/dna/gene/monkey/deactivate(var/mob/living/carbon/human/H, var/connected, var/flags) if(!istype(H,/mob/living/carbon/human)) -// testing("Cannot monkey-ify [M], type is [M.type].") return for(var/obj/item/W in H) - if (W==H.w_uniform) // will be torn + if (W == H.w_uniform) // will be torn continue if(istype(W,/obj/item/organ)) continue + if(istype(W,/obj/item/weapon/implant)) + continue H.unEquip(W) H.regenerate_icons() H.canmove = 0 H.stunned = 1 H.icon = null H.invisibility = 101 - var/atom/movable/overlay/animation = new /atom/movable/overlay( H.loc ) + + var/atom/movable/overlay/animation = new /atom/movable/overlay(H.loc) animation.icon_state = "blank" animation.icon = 'icons/mob/mob.dmi' animation.master = H flick("monkey2h", animation) - sleep(48) - //animation = null + sleep(22) + qdel(animation) H.stunned = 0 H.update_canmove() @@ -84,7 +88,6 @@ if(H.hud_used) H.hud_used.instantiate() - H << "You are now a [H.species.name]. " - qdel(animation) + H << "You are now a [H.species.name]." return H \ No newline at end of file diff --git a/code/game/gamemodes/blob/blobs/blob_mobs.dm b/code/game/gamemodes/blob/blobs/blob_mobs.dm index c482f9749b5..abcaba4cf18 100644 --- a/code/game/gamemodes/blob/blobs/blob_mobs.dm +++ b/code/game/gamemodes/blob/blobs/blob_mobs.dm @@ -101,12 +101,12 @@ var/turf/location = get_turf(src) // Create the reagents to put into the air - create_reagents(25) + create_reagents(8) if(overmind && overmind.blob_reagent_datum) - reagents.add_reagent(overmind.blob_reagent_datum.id, 25) + reagents.add_reagent(overmind.blob_reagent_datum.id, 8) else - reagents.add_reagent("spores", 25) + reagents.add_reagent("spores", 8) // Attach the smoke spreader and setup/start it. S.attach(location) diff --git a/code/game/gamemodes/blob/powers.dm b/code/game/gamemodes/blob/powers.dm index 52245bde71d..4a3f9bbdf57 100644 --- a/code/game/gamemodes/blob/powers.dm +++ b/code/game/gamemodes/blob/powers.dm @@ -276,7 +276,10 @@ last_attack = world.time OB.expand(T, 0, blob_reagent_datum.color) for(var/mob/living/L in T) - blob_reagent_datum.reaction_mob(L, TOUCH, 25) + if("blob" in L.faction) //no friendly fire + continue + var/mob_protection = L.get_permeability_protection() + blob_reagent_datum.reaction_mob(L, TOUCH, 25, 1, mob_protection) blob_reagent_datum.send_message(L) OB.color = blob_reagent_datum.color return diff --git a/code/game/gamemodes/changeling/powers/swap_form.dm b/code/game/gamemodes/changeling/powers/swap_form.dm index ffbadfab21c..be5df7d9a67 100644 --- a/code/game/gamemodes/changeling/powers/swap_form.dm +++ b/code/game/gamemodes/changeling/powers/swap_form.dm @@ -50,4 +50,6 @@ user.key = ghost.key user.Paralyse(2) + user.remove_language("Changeling") + target.add_language("Changeling") target << "Our genes cry out as we swap our [user] form for [target]." \ No newline at end of file diff --git a/code/game/gamemodes/shadowling/special_shadowling_abilities.dm b/code/game/gamemodes/shadowling/special_shadowling_abilities.dm index 1566e3b254b..bb4fc80c7d6 100644 --- a/code/game/gamemodes/shadowling/special_shadowling_abilities.dm +++ b/code/game/gamemodes/shadowling/special_shadowling_abilities.dm @@ -77,6 +77,7 @@ var/list/possibleShadowlingNames = list("U'ruan", "Y`shej", "Nex", "Hel-uae", "N H.underwear = "None" H.undershirt = "None" + H.socks = "None" H.faction |= "faithless" H.equip_to_slot_or_del(new /obj/item/clothing/under/shadowling(usr), slot_w_uniform) diff --git a/code/game/gamemodes/wizard/rightandwrong.dm b/code/game/gamemodes/wizard/rightandwrong.dm index c8f683406e2..e98517688d8 100644 --- a/code/game/gamemodes/wizard/rightandwrong.dm +++ b/code/game/gamemodes/wizard/rightandwrong.dm @@ -1,7 +1,7 @@ /mob/proc/rightandwrong(var/summon_type) //0 = Summon Guns, 1 = Summon Magic - var/list/gunslist = list("taser","egun","laser","revolver","detective","c20r","nuclear","deagle","gyrojet","pulse","silenced","cannon","doublebarrel","shotgun","combatshotgun","bulldog","mateba","sabr","crossbow","saw","car","boltaction") + var/list/gunslist = list("taser","egun","laser","revolver","detective","c20r","nuclear","deagle","gyrojet","pulse","silenced","cannon","doublebarrel","shotgun","combatshotgun","bulldog","mateba","sabr","crossbow","saw","car","boltaction","arg") var/list/magiclist = list("fireball","smoke","blind","mindswap","forcewall","knock","horsemask","charge", "summonitem", "wandnothing", "wanddeath", "wandresurrection", "wandpolymorph", "wandteleport", "wanddoor", "wandfireball", "staffhealing", "armor", "scrying", "staffdoor", "special") var/list/magicspeciallist = list("staffchange","staffanimation", "wandbelt", "contract", "staffchaos") usr << "You summoned [summon_type ? "magic" : "guns"]!" @@ -30,7 +30,7 @@ if("nuclear") new /obj/item/weapon/gun/energy/gun/nuclear(get_turf(H)) if("deagle") - new /obj/item/weapon/gun/projectile/automatic/deagle/camo(get_turf(H)) + new /obj/item/weapon/gun/projectile/automatic/pistol/deagle/camo(get_turf(H)) if("gyrojet") new /obj/item/weapon/gun/projectile/automatic/gyropistol(get_turf(H)) if("pulse") @@ -47,17 +47,19 @@ if("combatshotgun") new /obj/item/weapon/gun/projectile/shotgun/combat(get_turf(H)) if("bulldog") - new /obj/item/weapon/gun/projectile/automatic/bulldog(get_turf(H)) + new /obj/item/weapon/gun/projectile/automatic/shotgun/bulldog(get_turf(H)) + if("arg") + new /obj/item/weapon/gun/projectile/automatic/ar(get_turf(H)) if("mateba") new /obj/item/weapon/gun/projectile/revolver/mateba(get_turf(H)) if("sabr") - new /obj/item/weapon/gun/projectile/automatic(get_turf(H)) + new /obj/item/weapon/gun/projectile/automatic/proto(get_turf(H)) if("crossbow") new /obj/item/weapon/gun/energy/kinetic_accelerator/crossbow(get_turf(H)) if("saw") new /obj/item/weapon/gun/projectile/automatic/l6_saw(get_turf(H)) if("car") - new /obj/item/weapon/gun/projectile/automatic/c90gl(get_turf(H)) + new /obj/item/weapon/gun/projectile/automatic/m90(get_turf(H)) if("boltaction") new /obj/item/weapon/gun/projectile/shotgun/boltaction(get_turf(H)) else diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index 69d6df5bb50..9b4e2723185 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -121,7 +121,7 @@ if (stat) return 1 - var/material_amount = materials.can_insert(O) + var/material_amount = materials.get_item_material_amount(O) if(!material_amount) user << "This object does not contain sufficient amounts of metal or glass to be accepted by the autolathe." return 1 diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index ca86c4ba839..bca87a8bad8 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -381,7 +381,7 @@ Class Procs: for(var/obj/item/I in component_parts) if(I.reliability != 100 && crit_fail) I.crit_fail = 1 - I.loc = src.loc + I.forceMove(loc) qdel(src) /obj/machinery/proc/default_deconstruction_screwdriver(var/mob/user, var/icon_state_open, var/icon_state_closed, var/obj/item/weapon/screwdriver/S) diff --git a/code/game/machinery/recycler.dm b/code/game/machinery/recycler.dm index 72f4d0bc0d7..0fc00e068c4 100644 --- a/code/game/machinery/recycler.dm +++ b/code/game/machinery/recycler.dm @@ -126,7 +126,7 @@ var/const/SAFETY_COOLDOWN = 100 if(sound) playsound(src.loc, 'sound/items/Welder.ogg', 50, 1) - var/material_amount = materials.can_insert(I) + var/material_amount = materials.get_item_material_amount(I) if(!material_amount) qdel(I) return diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index 1b3f89af28a..78b78c26e27 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -842,6 +842,22 @@ /obj/item/weapon/cartridge/atmos = 75,/obj/item/weapon/cartridge/janitor = 100,/obj/item/weapon/cartridge/signal/toxins = 150, /obj/item/weapon/cartridge/signal = 75,/obj/item/weapon/cartridge = 50) + +/obj/machinery/vending/liberationstation + name = "\improper Liberation Station" + desc = "An overwhelming amount of ancient patriotism washes over you just by looking at the machine." + icon_state = "liberationstation" + req_access_txt = "1" + product_slogans = "Liberation Station: Your one-stop shop for all things second amendment!;Be a patriot today, pick up a gun!;Quality weapons for cheap prices!;Better dead than red!" + product_ads = "Float like an astronaut, sting like a bullet!;Express your second amendment today!;Guns don't kill people, but you can!;Who needs responsibilities when you have guns?" + vend_reply = "Remember the name: Liberation Station!" + products = list(/obj/item/weapon/gun/projectile/automatic/pistol/deagle/gold = 2,/obj/item/weapon/gun/projectile/automatic/pistol/deagle/camo = 2, + /obj/item/weapon/gun/projectile/automatic/pistol/m2411 = 2,/obj/item/weapon/gun/projectile/automatic/proto = 2, + /obj/item/weapon/gun/projectile/shotgun/combat = 2,/obj/item/weapon/gun/projectile/automatic/gyropistol = 1, + /obj/item/weapon/gun/projectile/shotgun = 2,/obj/item/weapon/gun/projectile/automatic/ar = 2) + premium = list(/obj/item/ammo_box/magazine/smgm9mm = 2,/obj/item/ammo_box/magazine/m50 = 4,/obj/item/ammo_box/magazine/m45 = 2,/obj/item/ammo_box/magazine/m75 = 2) + contraband = list(/obj/item/clothing/under/patriotsuit = 1,/obj/item/weapon/bedsheet/patriot = 3) + /obj/machinery/vending/cigarette name = "Cigarette machine" //OCD had to be uppercase to look nice with the new formating desc = "If you want to get cancer, might as well do it in style" diff --git a/code/game/mecha/combat/honker.dm b/code/game/mecha/combat/honker.dm index 9f68e36ba7b..d8ef8c8b9fe 100644 --- a/code/game/mecha/combat/honker.dm +++ b/code/game/mecha/combat/honker.dm @@ -3,7 +3,7 @@ name = "H.O.N.K" icon_state = "honker" initial_icon = "honker" - step_in = 2 + step_in = 3 health = 140 deflect_chance = 60 internal_damage_threshold = 60 diff --git a/code/game/mecha/mecha_construction_paths.dm b/code/game/mecha/mecha_construction_paths.dm index b201b83993d..5e684b9ddef 100644 --- a/code/game/mecha/mecha_construction_paths.dm +++ b/code/game/mecha/mecha_construction_paths.dm @@ -1167,95 +1167,99 @@ /datum/construction/reversible/mecha/phazon result = "/obj/mecha/combat/phazon" steps = list( - //1 + //1 + list("key"=/obj/item/device/assembly/signaler/anomaly, + "backkey"=null, //Cannot remove the anomaly core once it's in + "desc"="Anomaly core socket is open and awaiting connection."), + //2 list("key"=/obj/item/weapon/weldingtool, "backkey"=/obj/item/weapon/wrench, "desc"="External armor is wrenched."), - //2 + //3 list("key"=/obj/item/weapon/wrench, "backkey"=/obj/item/weapon/crowbar, "desc"="External armor is installed."), - //3 + //4 list("key"=/obj/item/mecha_parts/part/phazon_armor, "backkey"=/obj/item/weapon/weldingtool, "desc"="Phase armor is welded."), - //4 + //5 list("key"=/obj/item/weapon/weldingtool, "backkey"=/obj/item/weapon/wrench, "desc"="Phase armor is wrenched."), - //5 + //6 list("key"=/obj/item/weapon/wrench, "backkey"=/obj/item/weapon/crowbar, "desc"="Phase armor is installed."), - //6 + //7 list("key"=/obj/item/stack/sheet/plasteel, "backkey"=/obj/item/weapon/screwdriver, "desc"="The bluespace crystal is engaged."), - //7 + //8 list("key"=/obj/item/weapon/screwdriver, "backkey"=/obj/item/weapon/wirecutters, "desc"="The bluespace crystal is connected."), - //8 + //9 list("key"=/obj/item/stack/cable_coil, "backkey"=/obj/item/weapon/crowbar, "desc"="The bluespace crystal is installed."), - //9 + //10 list("key"=/obj/item/bluespace_crystal, "backkey"=/obj/item/weapon/screwdriver, "desc"="Super capacitor is secured."), - //10 + //11 list("key"=/obj/item/weapon/screwdriver, "backkey"=/obj/item/weapon/crowbar, "desc"="Super capacitor is installed."), - //11 + //12 list("key"=/obj/item/weapon/stock_parts/capacitor/super, "backkey"=/obj/item/weapon/screwdriver, "desc"="Phasic scanner module is secured."), - //12 + //13 list("key"=/obj/item/weapon/screwdriver, "backkey"=/obj/item/weapon/crowbar, "desc"="Phasic scanner module is installed."), - //13 + //14 list("key"=/obj/item/weapon/stock_parts/scanning_module/phasic, "backkey"=/obj/item/weapon/screwdriver, "desc"="Scanning module is secured."), - //14 + //15 list("key"=/obj/item/weapon/screwdriver, "backkey"=/obj/item/weapon/crowbar, "desc"="Scanning module is installed."), - //15 + //16 list("key"=/obj/item/weapon/circuitboard/mecha/phazon/targeting, "backkey"=/obj/item/weapon/screwdriver, "desc"="Peripherals control module is secured."), - //16 + //17 list("key"=/obj/item/weapon/screwdriver, "backkey"=/obj/item/weapon/crowbar, "desc"="Peripherals control module is installed"), - //17 + //18 list("key"=/obj/item/weapon/circuitboard/mecha/phazon/peripherals, "backkey"=/obj/item/weapon/screwdriver, "desc"="Central control module is secured."), - //18 + //19 list("key"=/obj/item/weapon/screwdriver, "backkey"=/obj/item/weapon/crowbar, "desc"="Central control module is installed."), - //19 + //20 list("key"=/obj/item/weapon/circuitboard/mecha/phazon/main, "backkey"=/obj/item/weapon/screwdriver, "desc"="The wiring is adjusted."), - //20 + //21 list("key"=/obj/item/weapon/wirecutters, "backkey"=/obj/item/weapon/screwdriver, "desc"="The wiring is added."), - //21 + //22 list("key"=/obj/item/stack/cable_coil, "backkey"=/obj/item/weapon/screwdriver, "desc"="The hydraulic systems are active."), - //22 + //23 list("key"=/obj/item/weapon/screwdriver, "backkey"=/obj/item/weapon/wrench, "desc"="The hydraulic systems are connected."), - //23 + //24 list("key"=/obj/item/weapon/wrench, "desc"="The hydraulic systems are disconnected.") ) @@ -1270,24 +1274,24 @@ //TODO: better messages. switch(index) - if(23) + if(24) user.visible_message("[user] connects the [holder] hydraulic systems", "You connect the [holder] hydraulic systems.") holder.icon_state = "phazon1" - if(22) + if(23) if(diff==FORWARD) user.visible_message("[user] activates the [holder] hydraulic systems.", "You activate the [holder] hydraulic systems.") holder.icon_state = "phazon2" else user.visible_message("[user] disconnects the [holder] hydraulic systems", "You disconnect the [holder] hydraulic systems.") holder.icon_state = "phazon0" - if(21) + if(22) if(diff==FORWARD) user.visible_message("[user] adds the wiring to the [holder].", "You add the wiring to the [holder].") holder.icon_state = "phazon3" else user.visible_message("[user] deactivates the [holder] hydraulic systems.", "You deactivate the [holder] hydraulic systems.") holder.icon_state = "phazon1" - if(20) + if(21) if(diff==FORWARD) user.visible_message("[user] adjusts the wiring of the [holder].", "You adjust the wiring of the [holder].") holder.icon_state = "phazon4" @@ -1296,7 +1300,7 @@ var/obj/item/stack/cable_coil/coil = new /obj/item/stack/cable_coil(get_turf(holder)) coil.amount = 4 holder.icon_state = "phazon2" - if(19) + if(20) if(diff==FORWARD) user.visible_message("[user] installs the central control module into the [holder].", "You install the central computer mainboard into the [holder].") qdel(used_atom) @@ -1304,7 +1308,7 @@ else user.visible_message("[user] disconnects the wiring of the [holder].", "You disconnect the wiring of the [holder].") holder.icon_state = "phazon3" - if(18) + if(19) if(diff==FORWARD) user.visible_message("[user] secures the mainboard.", "You secure the mainboard.") holder.icon_state = "phazon6" @@ -1312,7 +1316,7 @@ user.visible_message("[user] removes the central control module from the [holder].", "You remove the central computer mainboard from the [holder].") new /obj/item/weapon/circuitboard/mecha/phazon/main(get_turf(holder)) holder.icon_state = "phazon4" - if(17) + if(18) if(diff==FORWARD) user.visible_message("[user] installs the peripherals control module into the [holder].", "You install the peripherals control module into the [holder].") qdel(used_atom) @@ -1320,7 +1324,7 @@ else user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.") holder.icon_state = "phazon5" - if(16) + if(17) if(diff==FORWARD) user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.") holder.icon_state = "phazon8" @@ -1328,7 +1332,7 @@ user.visible_message("[user] removes the peripherals control module from the [holder].", "You remove the peripherals control module from the [holder].") new /obj/item/weapon/circuitboard/mecha/phazon/peripherals(get_turf(holder)) holder.icon_state = "phazon6" - if(15) + if(16) if(diff==FORWARD) user.visible_message("[user] installs the weapon control module into the [holder].", "You install the weapon control module into the [holder].") qdel(used_atom) @@ -1336,7 +1340,7 @@ else user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.") holder.icon_state = "phazon7" - if(14) + if(15) if(diff==FORWARD) user.visible_message("[user] secures the weapon control module.", "You secure the weapon control module.") holder.icon_state = "phazon10" @@ -1344,7 +1348,7 @@ user.visible_message("[user] removes the weapon control module from the [holder].", "You remove the weapon control module from the [holder].") new /obj/item/weapon/circuitboard/mecha/phazon/targeting(get_turf(holder)) holder.icon_state = "phazon8" - if(13) + if(14) if(diff==FORWARD) user.visible_message("[user] installs phasic scanner module to the [holder].", "You install phasic scanner module to the [holder].") qdel(used_atom) @@ -1352,7 +1356,7 @@ else user.visible_message("[user] unfastens the weapon control module.", "You unfasten the weapon control module.") holder.icon_state = "phazon9" - if(12) + if(13) if(diff==FORWARD) user.visible_message("[user] secures the phasic scanner module.", "You secure the phasic scanner module.") holder.icon_state = "phazon12" @@ -1360,7 +1364,7 @@ user.visible_message("[user] removes the phasic scanner module from the [holder].", "You remove the phasic scanner module from the [holder].") new /obj/item/weapon/stock_parts/scanning_module/phasic(get_turf(holder)) holder.icon_state = "phazon10" - if(11) + if(12) if(diff==FORWARD) user.visible_message("[user] installs super capacitor to the [holder].", "You install super capacitor to the [holder].") qdel(used_atom) @@ -1368,7 +1372,7 @@ else user.visible_message("[user] unfastens the phasic scanner module.", "You unfasten the phasic scanner module.") holder.icon_state = "phazon11" - if(10) + if(11) if(diff==FORWARD) user.visible_message("[user] secures the super capacitor.", "You secure the super capacitor.") holder.icon_state = "phazon14" @@ -1376,7 +1380,7 @@ user.visible_message("[user] removes the super capacitor from the [holder].", "You remove the super capacitor from the [holder].") new /obj/item/weapon/stock_parts/capacitor/super(get_turf(holder)) holder.icon_state = "phazon12" - if(9) + if(10) if(diff==FORWARD) user.visible_message("[user] installs the bluespace crystal.", "You install the bluespace crystal.") qdel(used_atom) @@ -1384,7 +1388,7 @@ else user.visible_message("[user] unsecures the super capacitor from the [holder].", "You unsecure the super capacitor from the [holder].") holder.icon_state = "phazon13" - if(8) + if(9) if(diff==FORWARD) user.visible_message("[user] connects the bluespace crystal.", "You connect the bluespace crystal.") holder.icon_state = "phazon16" @@ -1392,21 +1396,21 @@ user.visible_message("[user] removes the bluespace crystal from the [holder].", "You remove the bluespace crystal from the [holder].") new /obj/item/bluespace_crystal(get_turf(holder)) holder.icon_state = "phazon14" - if(7) + if(8) if(diff==FORWARD) user.visible_message("[user] engages the bluespace crystal.", "You engage the bluespace crystal.") holder.icon_state = "phazon17" else user.visible_message("[user] disconnects the bluespace crystal from the [holder].", "You disconnect the bluespace crystal from the [holder].") holder.icon_state = "phazon15" - if(6) + if(7) if(diff==FORWARD) user.visible_message("[user] installs the phase armor layer to the [holder].", "You install the phase armor layer to the [holder].") holder.icon_state = "phazon18" else user.visible_message("[user] disengages the bluespace crystal.", "You disengage the bluespace crystal.") holder.icon_state = "phazon16" - if(5) + if(6) if(diff==FORWARD) user.visible_message("[user] secures the phase armor layer.", "You secure the phase armor layer.") holder.icon_state = "phazon19" @@ -1415,14 +1419,14 @@ var/obj/item/stack/sheet/plasteel/MS = new /obj/item/stack/sheet/plasteel(get_turf(holder)) MS.amount = 5 holder.icon_state = "phazon17" - if(4) + if(5) if(diff==FORWARD) user.visible_message("[user] welds the phase armor layer to the [holder].", "You weld the phase armor layer to the [holder].") holder.icon_state = "phazon20" else user.visible_message("[user] unfastens the phase armor layer.", "You unfasten the phase armor layer.") holder.icon_state = "phazon18" - if(3) + if(4) if(diff==FORWARD) user.visible_message("[user] installs Phazon Armor Plates to the [holder].", "You install Phazon Armor Plates to the [holder].") qdel(used_atom) @@ -1430,7 +1434,7 @@ else user.visible_message("[user] cuts phase armor layer from the [holder].", "You cut the phase armor layer from the [holder].") holder.icon_state = "phazon19" - if(2) + if(3) if(diff==FORWARD) user.visible_message("[user] secures Phazon Armor Plates.", "You secure Phazon Armor Plates.") holder.icon_state = "phazon22" @@ -1438,12 +1442,16 @@ user.visible_message("[user] pries Phazon Armor Plates from the [holder].", "You pry Phazon Armor Plates from the [holder].") new /obj/item/mecha_parts/part/phazon_armor(get_turf(holder)) holder.icon_state = "phazon20" - if(1) + if(2) if(diff==FORWARD) user.visible_message("[user] welds Phazon Armor Plates to the [holder].", "You weld Phazon Armor Plates to the [holder].") else user.visible_message("[user] unfastens Phazon Armor Plates.", "You unfasten Phazon Armor Plates.") holder.icon_state = "phazon21" + if(1) + if(diff==FORWARD) + user.visible_message("[user] carefully inserts the anomaly core into \the [holder] and secures it.", "You slowly place the anomaly core into its socket and close its chamber.") + qdel(used_atom) return 1 /datum/construction/reversible/mecha/phazon/spawn_result() diff --git a/code/game/mecha/medical/odysseus.dm b/code/game/mecha/medical/odysseus.dm index e6c169e843d..5bbcb367291 100644 --- a/code/game/mecha/medical/odysseus.dm +++ b/code/game/mecha/medical/odysseus.dm @@ -3,7 +3,7 @@ name = "Odysseus" icon_state = "odysseus" initial_icon = "odysseus" - step_in = 2 + step_in = 3 max_temperature = 15000 health = 120 wreckage = /obj/effect/decal/mecha_wreckage/odysseus diff --git a/code/game/mecha/working/ripley.dm b/code/game/mecha/working/ripley.dm index a50b3e5d225..576442ac902 100644 --- a/code/game/mecha/working/ripley.dm +++ b/code/game/mecha/working/ripley.dm @@ -8,7 +8,8 @@ health = 200 lights_power = 7 deflect_chance = 15 - damage_absorption = list("brute"=0.6,"bomb"=0.2) + damage_absorption = list("brute"=0.6,"fire"=1,"bullet"=0.8,"laser"=0.9,"energy"=1,"bomb"=0.6) + max_equip = 6 wreckage = /obj/effect/decal/mecha_wreckage/ripley var/list/cargo = new var/cargo_capacity = 15 @@ -64,7 +65,8 @@ max_temperature = 65000 health = 250 lights_power = 7 - damage_absorption = list("fire"=0.5,"bullet"=0.8,"bomb"=0.5) + damage_absorption = list("brute"=0.6,"fire"=0.5,"bullet"=0.7,"laser"=0.7,"energy"=1,"bomb"=0.4) + max_equip = 5 // More armor, less tools wreckage = /obj/effect/decal/mecha_wreckage/ripley/firefighter /obj/mecha/working/ripley/deathripley @@ -73,7 +75,10 @@ icon_state = "deathripley" step_in = 2 opacity=0 + max_temperature = 65000 + health = 300 lights_power = 7 + damage_absorption = list("brute"=0.6,"fire"=0.4,"bullet"=0.6,"laser"=0.6,"energy"=1,"bomb"=0.3) wreckage = /obj/effect/decal/mecha_wreckage/ripley/deathripley step_energy_drain = 0 @@ -97,12 +102,23 @@ var/obj/item/mecha_parts/mecha_equipment/tool/drill/D = new /obj/item/mecha_parts/mecha_equipment/tool/drill D.attach(src) + //Add possible plasma cutter + if(prob(25)) + var/obj/item/mecha_parts/mecha_equipment/M = new /obj/item/mecha_parts/mecha_equipment/weapon/energy/plasma + M.attach(src) + + //Add ore box to cargo + cargo.Add(new /obj/structure/ore_box(src)) + //Attach hydrolic clamp var/obj/item/mecha_parts/mecha_equipment/tool/hydraulic_clamp/HC = new /obj/item/mecha_parts/mecha_equipment/tool/hydraulic_clamp HC.attach(src) for(var/obj/item/mecha_parts/mecha_tracking/B in src.contents)//Deletes the beacon so it can't be found easily qdel(B) + var/obj/item/mecha_parts/mecha_equipment/tool/mining_scanner/scanner = new /obj/item/mecha_parts/mecha_equipment/tool/mining_scanner + scanner.attach(src) + /obj/mecha/working/ripley/Exit(atom/movable/O) if(O in cargo) return 0 diff --git a/code/game/objects/effects/spawners/lootdrop.dm b/code/game/objects/effects/spawners/lootdrop.dm index c41f55fb7c0..778d3b74dc6 100644 --- a/code/game/objects/effects/spawners/lootdrop.dm +++ b/code/game/objects/effects/spawners/lootdrop.dm @@ -26,7 +26,7 @@ /obj/item/weapon/gun/projectile/automatic/pistol = 8, /obj/item/weapon/gun/projectile/shotgun/combat = 5, /obj/item/weapon/gun/projectile/revolver/mateba, - /obj/item/weapon/gun/projectile/automatic/deagle + /obj/item/weapon/gun/projectile/automatic/pistol/deagle ) /obj/effect/spawner/lootdrop/maintenance diff --git a/code/game/objects/items/stacks/tiles/plasteel.dm b/code/game/objects/items/stacks/tiles/plasteel.dm index 5565067505b..d40434a1d6e 100644 --- a/code/game/objects/items/stacks/tiles/plasteel.dm +++ b/code/game/objects/items/stacks/tiles/plasteel.dm @@ -6,7 +6,7 @@ icon_state = "tile" w_class = 3.0 force = 6.0 - materials = list(MAT_METAL=937.5) + materials = list(MAT_METAL=500) throwforce = 10.0 throw_speed = 3 throw_range = 7 diff --git a/code/game/objects/items/weapons/table_rack_parts.dm b/code/game/objects/items/weapons/table_rack_parts.dm index eed1f37ef55..0d26649dbaa 100644 --- a/code/game/objects/items/weapons/table_rack_parts.dm +++ b/code/game/objects/items/weapons/table_rack_parts.dm @@ -12,7 +12,7 @@ gender = PLURAL icon = 'icons/obj/items.dmi' icon_state = "table_parts" - materials = list(MAT_METAL=3750) + materials = list(MAT_METAL=4000) flags = CONDUCT attack_verb = list("slammed", "bashed", "battered", "bludgeoned", "thrashed", "whacked") @@ -21,7 +21,7 @@ desc = "Hard table parts. Well...harder..." icon = 'icons/obj/items.dmi' icon_state = "reinf_tableparts" - materials = list(MAT_METAL=7500) + materials = list(MAT_METAL=8000) flags = CONDUCT /obj/item/weapon/table_parts/wood @@ -42,7 +42,7 @@ icon = 'icons/obj/items.dmi' icon_state = "rack_parts" flags = CONDUCT - materials = list(MAT_METAL=3750) + materials = list(MAT_METAL=2000) /* * Table Parts diff --git a/code/game/objects/items/weapons/weaponry.dm b/code/game/objects/items/weapons/weaponry.dm index 2440e4d05fb..e80dd1d04a1 100644 --- a/code/game/objects/items/weapons/weaponry.dm +++ b/code/game/objects/items/weapons/weaponry.dm @@ -152,7 +152,7 @@ obj/item/weapon/wirerod force = 9 throwforce = 10 w_class = 3 - materials = list(MAT_METAL=1875) + materials = list(MAT_METAL=1000) attack_verb = list("hit", "bludgeoned", "whacked", "bonked") obj/item/weapon/wirerod/attackby(var/obj/item/I, mob/user as mob, params) diff --git a/code/game/objects/structures/bedsheet_bin.dm b/code/game/objects/structures/bedsheet_bin.dm index 1c4936112a2..dfb56842ac1 100644 --- a/code/game/objects/structures/bedsheet_bin.dm +++ b/code/game/objects/structures/bedsheet_bin.dm @@ -45,6 +45,12 @@ LINEN BINS icon_state = "sheetpurple" _color = "purple" +/obj/item/weapon/bedsheet/patriot + name = "patriotic bedsheet" + desc = "You've never felt more free than when sleeping on this." + icon_state = "sheetUSA" + _color = "sheetUSA" + /obj/item/weapon/bedsheet/rainbow name = "rainbow bedsheet" desc = "A multi_colored blanket. It's actually several different sheets cut up and sewn together." diff --git a/code/game/objects/structures/crates_lockers/closets/syndicate.dm b/code/game/objects/structures/crates_lockers/closets/syndicate.dm index 5f21f2d0c84..52c789f9c43 100644 --- a/code/game/objects/structures/crates_lockers/closets/syndicate.dm +++ b/code/game/objects/structures/crates_lockers/closets/syndicate.dm @@ -44,11 +44,11 @@ new /obj/item/weapon/storage/box/teargas(src) new /obj/item/weapon/storage/box/flashbangs(src) new /obj/item/weapon/storage/backpack/duffel/syndie/med(src) - new /obj/item/weapon/gun/projectile/automatic/bulldog(src) - new /obj/item/weapon/gun/projectile/automatic/bulldog(src) - new /obj/item/weapon/gun/projectile/automatic/bulldog(src) - new /obj/item/weapon/gun/projectile/automatic/bulldog(src) - new /obj/item/weapon/gun/projectile/automatic/bulldog(src) + new /obj/item/weapon/gun/projectile/automatic/shotgun/bulldog(src) + new /obj/item/weapon/gun/projectile/automatic/shotgun/bulldog(src) + new /obj/item/weapon/gun/projectile/automatic/shotgun/bulldog(src) + new /obj/item/weapon/gun/projectile/automatic/shotgun/bulldog(src) + new /obj/item/weapon/gun/projectile/automatic/shotgun/bulldog(src) new /obj/item/weapon/pinpointer/nukeop(src) new /obj/item/weapon/pinpointer/nukeop(src) new /obj/item/weapon/pinpointer/nukeop(src) diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 7c973eed7ec..0f10a583e06 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -848,6 +848,7 @@ anchored = 1.0 throwpass = 1 //You can throw objects over this, despite it's density. var/parts = /obj/item/weapon/rack_parts + var/health = 5 /obj/structure/rack/proc/destroy() new parts(loc) @@ -914,6 +915,14 @@ visible_message("[user] smashes [src] apart!") user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" )) destroy() + else + user.changeNext_move(CLICK_CD_MELEE) + user.do_attack_animation(src) + playsound(loc, 'sound/items/dodgeball.ogg', 80, 1) + user.visible_message("[user] kicks [src].", \ + "You kick [src].") + health -= rand(1,2) + healthcheck() /obj/structure/rack/mech_melee_attack(obj/mecha/M) visible_message("[M] smashes [src] apart!") @@ -933,3 +942,7 @@ /obj/structure/rack/attack_tk() // no telehulk sorry return + +/obj/structure/rack/proc/healthcheck() + if(health <= 0) + destroy() \ No newline at end of file diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index a4a836db6a6..ca079ba8139 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -606,7 +606,7 @@ var/global/nologevent = 0 return if(confirm == "Yes") var/delay = input("What delay should the restart have (in seconds)?", "Restart Delay", 5) as num - if(!delay) + if(isnull(delay)) delay = 50 else delay = delay * 10 diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index c1f20ae4d53..cdc89d056ad 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -704,7 +704,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/automatic(M), slot_r_hand) + M.equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/automatic/proto(M), slot_r_hand) M.equip_to_slot_or_del(new /obj/item/ammo_box/a357(M), slot_l_store) if ("tournament chef") //Steven Seagal FTW diff --git a/code/modules/admin/verbs/pray.dm b/code/modules/admin/verbs/pray.dm index 2985f05aab8..8d41f49a918 100644 --- a/code/modules/admin/verbs/pray.dm +++ b/code/modules/admin/verbs/pray.dm @@ -16,7 +16,7 @@ msg = "\blue \icon[cross] PRAY: [key_name(src, 1)] (?) (PP) (VV) (SM) ([admin_jump_link(src, "holder")]) (CA) (SC): [msg]" for(var/client/X in admins) - if(R_EVENT & X.holder.rights) + if(check_rights(R_EVENT,0,X.mob)) X << msg usr << "Your prayers have been received by the gods." @@ -37,7 +37,7 @@ msg = "\blue SYNDICATE: [key_name(Sender, 1)] (PP) (VV) (SM) ([admin_jump_link(Sender, "holder")]) (CA) (BSA) (REPLY): [msg]" for(var/client/X in admins) - if(R_EVENT & X.holder.rights) + if(check_rights(R_EVENT,0,X.mob)) X << msg /proc/HONK_announce(var/text , var/mob/Sender) @@ -53,12 +53,16 @@ msg = "\blue ERT REQUEST: [key_name(Sender, 1)] (PP) (VV) (SM) ([admin_jump_link(Sender, "holder")]) (CA) (BSA) (REPLY): [msg]" for(var/client/X in admins) - if(R_EVENT & X.holder.rights) + if(check_rights(R_EVENT,0,X.mob)) X << msg /proc/Nuke_request(text , mob/Sender) var/nuke_code = get_nuke_code() var/msg = sanitize(copytext(text, 1, MAX_MESSAGE_LEN)) msg = "NUKE CODE REQUEST: [key_name(Sender)] (PP) (VV) (SM) ([admin_jump_link(Sender, "holder")]) (CA) (BSA) (RPLY): [msg]" - admins << msg - admins << "The nuke code is [nuke_code]." \ No newline at end of file + + for(var/client/X in admins) + if(check_rights(R_EVENT,0,X.mob)) + X << msg + X << "The nuke code is [nuke_code]." + \ No newline at end of file diff --git a/code/modules/admin/verbs/striketeam_syndicate.dm b/code/modules/admin/verbs/striketeam_syndicate.dm index 6729f81a27c..0fff922d086 100644 --- a/code/modules/admin/verbs/striketeam_syndicate.dm +++ b/code/modules/admin/verbs/striketeam_syndicate.dm @@ -160,7 +160,7 @@ var/global/sent_syndicate_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/empgrenade(src), slot_r_store) equip_to_slot_or_del(new /obj/item/weapon/tank/emergency_oxygen/double/full(src), slot_s_store) - equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/automatic/m2411(src), slot_belt) + equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/automatic/pistol/m2411(src), slot_belt) equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/automatic/l6_saw(src), slot_r_hand) diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 92412711754..fb8e1745106 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -165,6 +165,10 @@ BLIND // can't see anything var/pickpocket = 0 //Master pickpocket? var/clipped = 0 species_restricted = list("exclude","Unathi","Tajaran","Wryn") + species_fit = list("Vox") + sprite_sheets = list( + "Vox" = 'icons/mob/species/vox/gloves.dmi' + ) /obj/item/clothing/gloves/attackby(obj/item/weapon/W, mob/user, params) if(istype(W, /obj/item/weapon/wirecutters)) @@ -305,9 +309,15 @@ BLIND // can't see anything body_parts_covered = FEET slot_flags = SLOT_FEET + permeability_coefficient = 0.50 slowdown = SHOES_SLOWDOWN species_restricted = list("exclude","Unathi","Tajaran","Wryn") + species_fit = list("Vox") + sprite_sheets = list( + "Vox" = 'icons/mob/species/vox/shoes.dmi' + ) + /obj/item/proc/negates_gravity() return 0 diff --git a/code/modules/clothing/gloves/boxing.dm b/code/modules/clothing/gloves/boxing.dm index ee3e0849d80..cbb355ecab9 100644 --- a/code/modules/clothing/gloves/boxing.dm +++ b/code/modules/clothing/gloves/boxing.dm @@ -4,22 +4,15 @@ icon_state = "boxing" item_state = "boxing" species_restricted = null - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/gloves.dmi' - ) /obj/item/clothing/gloves/boxing/green icon_state = "boxinggreen" item_state = "boxinggreen" - species_fit = list("Vox") /obj/item/clothing/gloves/boxing/blue icon_state = "boxingblue" item_state = "boxingblue" - species_fit = list("Vox") /obj/item/clothing/gloves/boxing/yellow icon_state = "boxingyellow" - item_state = "boxingyellow" - species_fit = list("Vox") \ No newline at end of file + item_state = "boxingyellow" \ No newline at end of file diff --git a/code/modules/clothing/gloves/color.dm b/code/modules/clothing/gloves/color.dm index f33a56c9a0a..9c364775343 100644 --- a/code/modules/clothing/gloves/color.dm +++ b/code/modules/clothing/gloves/color.dm @@ -6,11 +6,6 @@ siemens_coefficient = 0 permeability_coefficient = 0.05 _color="yellow" - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/gloves.dmi' - ) - power var/next_shock = 0 @@ -25,10 +20,6 @@ item_state = "ygloves" siemens_coefficient = 1 //Set to a default of 1, gets overridden in New() permeability_coefficient = 0.05 - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/gloves.dmi' - ) _color="yellow" New() @@ -40,10 +31,6 @@ icon_state = "black" item_state = "bgloves" _color="brown" - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/gloves.dmi' - ) cold_protection = HANDS min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT heat_protection = HANDS @@ -65,37 +52,26 @@ icon_state = "orange" item_state = "orangegloves" _color="orange" - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/gloves.dmi' - ) + /obj/item/clothing/gloves/color/red name = "red gloves" desc = "A pair of gloves, they don't look special in any way." icon_state = "red" item_state = "redgloves" _color = "red" - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/gloves.dmi' - ) - + /obj/item/clothing/gloves/color/red/insulated name = "insulated gloves" desc = "These gloves will protect the wearer from electric shock." siemens_coefficient = 0 permeability_coefficient = 0.05 - + /obj/item/clothing/gloves/color/rainbow name = "rainbow gloves" desc = "A pair of gloves, they don't look special in any way." icon_state = "rainbow" item_state = "rainbowgloves" _color = "rainbow" - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/gloves.dmi' - ) clown _color = "clown" @@ -105,40 +81,28 @@ icon_state = "blue" item_state = "bluegloves" _color="blue" - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/gloves.dmi' - ) + /obj/item/clothing/gloves/color/purple name = "purple gloves" desc = "A pair of gloves, they don't look special in any way." icon_state = "purple" item_state = "purplegloves" _color="purple" - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/gloves.dmi' - ) + /obj/item/clothing/gloves/color/green name = "green gloves" desc = "A pair of gloves, they don't look special in any way." icon_state = "green" item_state = "greengloves" _color="green" - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/gloves.dmi' - ) + /obj/item/clothing/gloves/color/grey name = "grey gloves" desc = "A pair of gloves, they don't look special in any way." icon_state = "gray" item_state = "graygloves" _color="grey" - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/gloves.dmi' - ) + rd _color = "director" //Exists for washing machines. Is not different from gray gloves in any way. @@ -151,20 +115,14 @@ icon_state = "lightbrown" item_state = "lightbrowngloves" _color="light brown" - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/gloves.dmi' - ) + /obj/item/clothing/gloves/color/brown name = "brown gloves" desc = "A pair of gloves, they don't look special in any way." icon_state = "brown" item_state = "browngloves" _color="brown" - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/gloves.dmi' - ) + cargo _color = "cargo" //Exists for washing machines. Is not different from brown gloves in any way. @@ -177,10 +135,6 @@ permeability_coefficient = 0.01 _color="white" transfer_prints = TRUE - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/mask.dmi' - ) /obj/item/clothing/gloves/color/latex/nitrile name = "nitrile gloves" @@ -212,8 +166,4 @@ cold_protection = HANDS min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT heat_protection = HANDS - max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/mask.dmi' - ) \ No newline at end of file + max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT \ No newline at end of file diff --git a/code/modules/clothing/gloves/miscellaneous.dm b/code/modules/clothing/gloves/miscellaneous.dm index 70cbced27ac..79871b9afdc 100644 --- a/code/modules/clothing/gloves/miscellaneous.dm +++ b/code/modules/clothing/gloves/miscellaneous.dm @@ -15,10 +15,6 @@ icon_state = "black" item_state = "r_hands" siemens_coefficient = 1.0 - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/mask.dmi' - ) /obj/item/clothing/gloves/combat desc = "These tactical gloves are somewhat fire and impact resistant." @@ -31,10 +27,6 @@ min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT heat_protection = HANDS max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/mask.dmi' - ) /obj/item/clothing/gloves/botanic_leather desc = "These leather gloves protect against thorns, barbs, prickles, spikes and other harmful objects of floral origin." @@ -46,17 +38,10 @@ min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT heat_protection = HANDS max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/mask.dmi' - ) + /obj/item/clothing/gloves/batmangloves desc = "Used for handling all things bat related." name = "batgloves" icon_state = "bmgloves" item_state = "bmgloves" - _color="bmgloves" - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/mask.dmi' - ) + _color="bmgloves" \ No newline at end of file diff --git a/code/modules/clothing/shoes/colour.dm b/code/modules/clothing/shoes/colour.dm index eac5aa33530..f2a89c662dd 100644 --- a/code/modules/clothing/shoes/colour.dm +++ b/code/modules/clothing/shoes/colour.dm @@ -3,7 +3,6 @@ icon_state = "black" _color = "black" desc = "A pair of black shoes." - species_fit = list("Vox") cold_protection = FEET min_cold_protection_temperature = SHOES_MIN_TEMP_PROTECT @@ -20,8 +19,6 @@ name = "brown shoes" desc = "A pair of brown shoes." icon_state = "brown" - _color = "brown" - species_fit = list("Vox") captain _color = "captain" //Exists for washing machines. Is not different from brown shoes in any way. @@ -72,7 +69,6 @@ icon_state = "white" permeability_coefficient = 0.01 _color = "white" - species_fit = list("Vox") /obj/item/clothing/shoes/leather name = "leather shoes" @@ -90,7 +86,6 @@ name = "orange shoes" icon_state = "orange" _color = "orange" - species_fit = list("Vox") /obj/item/clothing/shoes/orange/attack_self(mob/user as mob) if (src.chained) diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm index 53a322f1eee..7221e0c069e 100644 --- a/code/modules/clothing/shoes/miscellaneous.dm +++ b/code/modules/clothing/shoes/miscellaneous.dm @@ -9,17 +9,12 @@ var/list/clothing_choices = list() siemens_coefficient = 0.8 species_restricted = null - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/shoes.dmi' - ) /obj/item/clothing/shoes/mime name = "mime shoes" icon_state = "mime" _color = "mime" - /obj/item/clothing/shoes/combat //basic syndicate combat boots for nuke ops and mob corpses name = "combat boots" desc = "High speed, low drag combat boots." @@ -55,10 +50,6 @@ flags = NOSLIP slowdown = SHOES_SLOWDOWN+1 species_restricted = null - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/shoes.dmi' - ) /obj/item/clothing/shoes/clown_shoes desc = "The prankster's standard-issue clowning shoes. Damn they're huge!" @@ -83,6 +74,7 @@ name = "jacksandals" desc = "Nanotrasen-issue Security combat sandals for combat scenarios. They're jacksandals, however that works." icon_state = "jacksandal" + _color = "jacksandal" species_restricted = null /obj/item/clothing/shoes/cult @@ -121,10 +113,7 @@ name = "laceup shoes" desc = "The height of fashion, and they're pre-polished!" icon_state = "laceups" - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/shoes.dmi' - ) + /obj/item/clothing/shoes/roman name = "roman sandals" desc = "Sandals with buckled leather straps on it." diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm index 489886d697f..8c2527dffa0 100644 --- a/code/modules/clothing/spacesuits/miscellaneous.dm +++ b/code/modules/clothing/spacesuits/miscellaneous.dm @@ -174,3 +174,23 @@ desc = "An EVA suit specifically designed for the clown. SPESSHONK!" icon_state = "spaceclown_suit" item_state = "spaceclown_items" + +/obj/item/clothing/head/helmet/space/freedom + name = "eagle helmet" + desc = "An advanced, space-proof helmet. It appears to be modeled after an old-world eagle." + icon_state = "griffinhat" + item_state = "griffinhat" + armor = list(melee = 40, bullet = 40, laser = 30, energy = 25, bomb = 100, bio = 100, rad = 100) + max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT + unacidable = 1 + +/obj/item/clothing/suit/space/freedom + name = "eagle suit" + desc = "An advanced, light suit, fabricated from a mixture of synthetic feathers and space-resistant material. A gun holster appears to be integrated into the suit and the wings appear to be stuck in 'freedom' mode." + icon_state = "freedom" + item_state = "freedom" + allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank) + armor = list(melee = 40, bullet = 40, laser = 30,energy = 25, bomb = 100, bio = 100, rad = 100) + slowdown = 1 + max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT + unacidable = 1 diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm index ffd38f192a8..39aeeced2be 100644 --- a/code/modules/clothing/under/miscellaneous.dm +++ b/code/modules/clothing/under/miscellaneous.dm @@ -11,6 +11,13 @@ icon_state = "blue_pyjamas" _color = "blue_pyjamas" item_state = "w_suit" + +/obj/item/clothing/under/patriotsuit + name = "Patriotic Suit" + desc = "Motorcycle not included." + icon_state = "ek" + item_state = "ek" + _color = "ek" /obj/item/clothing/under/captain_fly name = "rogue captains uniform" diff --git a/code/modules/economy/Accounts.dm b/code/modules/economy/Accounts.dm index 9dbfb8c2d51..493bfdd1e8a 100644 --- a/code/modules/economy/Accounts.dm +++ b/code/modules/economy/Accounts.dm @@ -92,8 +92,9 @@ var/global/list/all_money_accounts = list() P.wrapped = R R.name = "Account information: [M.owner_name]" - // AUTOFIXED BY fix_string_idiocy.py - // C:\Users\Rob\Documents\Projects\vgstation13\code\WorkInProgress\Cael_Aislinn\Economy\Accounts.dm:94: R.info = "Account details (confidential)


" + var/overseer = "Unknown" + if(source_db.held_card) + overseer = source_db.held_card.registered_name R.info = {"Account details (confidential)


Account holder: [M.owner_name]
Account number: [M.account_number]
@@ -101,7 +102,7 @@ var/global/list/all_money_accounts = list() Starting balance: $[M.money]
Date and time: [worldtime2text()], [current_date_string]

Creation terminal ID: [source_db.machine_id]
- Authorised NT officer overseeing creation: [source_db.held_card.registered_name]
"} + Authorised NT officer overseeing creation: [overseer]
"} // END AUTOFIX //stamp the paper var/image/stampoverlay = image('icons/obj/bureaucracy.dmi') diff --git a/code/modules/economy/Accounts_DB.dm b/code/modules/economy/Accounts_DB.dm index a4a27209d3b..1168a3f4bb6 100644 --- a/code/modules/economy/Accounts_DB.dm +++ b/code/modules/economy/Accounts_DB.dm @@ -131,9 +131,9 @@ if(..()) return 1 - if("insert_card") + if(href_list["insert_card"]) if(held_card) - held_card.loc = src.loc + held_card.forceMove(loc) if(ishuman(usr) && !usr.get_active_hand()) usr.put_in_hands(held_card) @@ -144,7 +144,7 @@ if (istype(I, /obj/item/weapon/card/id)) var/obj/item/weapon/card/id/C = I usr.drop_item() - C.loc = src + C.forceMove(src) held_card = C if(!get_access_level(usr)) diff --git a/code/modules/hydroponics/seed_controller.dm b/code/modules/hydroponics/seed_controller.dm index c8bbcc632bb..b7a6b31cb7c 100644 --- a/code/modules/hydroponics/seed_controller.dm +++ b/code/modules/hydroponics/seed_controller.dm @@ -148,3 +148,10 @@ var/global/datum/controller/plants/plant_controller // Set in New(). /datum/controller/plants/proc/remove_plant(var/obj/effect/plant/plant) plant_queue -= plant + +/client/proc/list_plant_sprites() + if(!plant_controller || !plant_controller.plant_sprites || !plant_controller.plant_sprites.len) + world << "Cannot list plant sprites, plant controller or plant sprites list may not be initialized." + + for(var/base in plant_controller.plant_sprites) + world << "[base] : [plant_controller.plant_sprites[base]] growth states" \ No newline at end of file diff --git a/code/modules/hydroponics/seed_datums.dm b/code/modules/hydroponics/seed_datums.dm index ff24279989b..dd744858635 100644 --- a/code/modules/hydroponics/seed_datums.dm +++ b/code/modules/hydroponics/seed_datums.dm @@ -43,10 +43,11 @@ kitchen_tag = "ghostchili" preset_icon = "ghostchilipepper" -/datum/seed/chili/ice/New() +/datum/seed/chili/ghost/New() ..() - set_trait(TRAIT_MATURATION,4) - set_trait(TRAIT_PRODUCTION,4) + set_trait(TRAIT_MATURATION,10) + set_trait(TRAIT_PRODUCTION,10) + set_trait(TRAIT_YIELD,3) set_trait(TRAIT_PRODUCT_COLOUR,"#00EDC6") // Berry plants/variants. diff --git a/code/modules/hydroponics/trays/tray.dm b/code/modules/hydroponics/trays/tray.dm index 76ede0d9d2d..2ac101eb759 100644 --- a/code/modules/hydroponics/trays/tray.dm +++ b/code/modules/hydroponics/trays/tray.dm @@ -133,6 +133,8 @@ ) //--FalseIncarnate + var/last_plant_ikey //This is for debugging reference, and is otherwise useless. --FalseIncarnate + /obj/machinery/portable_atmospherics/hydroponics/AltClick() if(mechanical && !usr.stat && !usr.lying && Adjacent(usr)) close_lid(usr) diff --git a/code/modules/hydroponics/trays/tray_update_icons.dm b/code/modules/hydroponics/trays/tray_update_icons.dm index 45454c0d286..ceab49c8e2f 100644 --- a/code/modules/hydroponics/trays/tray_update_icons.dm +++ b/code/modules/hydroponics/trays/tray_update_icons.dm @@ -36,7 +36,9 @@ if(age >= seed.get_trait(TRAIT_MATURATION)) overlay_stage = seed.growth_stages else - var/maturation = round(seed.get_trait(TRAIT_MATURATION)/seed.growth_stages) + var/maturation = seed.get_trait(TRAIT_MATURATION)/seed.growth_stages + if(maturation < 1) + maturation = 1 overlay_stage = maturation ? max(1,round(age/maturation)) : 1 var/ikey = "[seed.get_trait(TRAIT_PLANT_ICON)]-[overlay_stage]" var/image/plant_overlay = plant_controller.plant_icon_cache["[ikey]-[seed.get_trait(TRAIT_PLANT_COLOUR)]"] @@ -45,6 +47,7 @@ plant_overlay.color = seed.get_trait(TRAIT_PLANT_COLOUR) plant_controller.plant_icon_cache["[ikey]-[seed.get_trait(TRAIT_PLANT_COLOUR)]"] = plant_overlay overlays |= plant_overlay + last_plant_ikey = ikey if(harvest && overlay_stage == seed.growth_stages) ikey = "[seed.get_trait(TRAIT_PRODUCT_ICON)]" diff --git a/code/modules/jungle/jungle_temple.dm b/code/modules/jungle/jungle_temple.dm index 320b0fbe9f7..1ecdab55973 100644 --- a/code/modules/jungle/jungle_temple.dm +++ b/code/modules/jungle/jungle_temple.dm @@ -159,7 +159,7 @@ var/new_type = pick( 200; /obj/item/weapon/hatchet, \ /obj/item/weapon/gun/projectile/automatic/pistol, \ - /obj/item/weapon/gun/projectile/automatic/deagle, \ + /obj/item/weapon/gun/projectile/automatic/pistol/deagle, \ /obj/item/weapon/gun/projectile/revolver/russian, \ ) new new_type(C) diff --git a/code/modules/lighting/light_source.dm b/code/modules/lighting/light_source.dm index ae9df7bb702..808f4d1dc3a 100644 --- a/code/modules/lighting/light_source.dm +++ b/code/modules/lighting/light_source.dm @@ -11,9 +11,9 @@ var/lum_g var/lum_b - var/tmp/old_lum_r - var/tmp/old_lum_g - var/tmp/old_lum_b + var/tmp/applied_lum_r + var/tmp/applied_lum_g + var/tmp/applied_lum_b var/list/effect_str var/list/effect_turf @@ -107,11 +107,6 @@ if(light_range && light_power && !applied) . = 1 - if(. || source_atom.light_color != light_color)//Save the old lumcounts if we need to update, if the colour changed DO IT BEFORE we parse the colour and LOSE the old lumcounts! - old_lum_r = lum_r - old_lum_g = lum_g - old_lum_b = lum_b - if(source_atom.light_color != light_color) light_color = source_atom.light_color parse_light_color() @@ -149,6 +144,12 @@ /datum/light_source/proc/apply_lum() applied = 1 + + // Cache the applied lum counts. + applied_lum_r = lum_r + applied_lum_g = lum_g + applied_lum_b = lum_b + if(istype(source_turf)) FOR_DVIEW(var/turf/T, light_range, source_turf, INVISIBILITY_LIGHTING) if(T.lighting_overlay) @@ -188,7 +189,7 @@ if(T.lighting_overlay) var/str = effect_str[i] - T.lighting_overlay.update_lumcount(-str * old_lum_r, -str * old_lum_g, -str * old_lum_b) + T.lighting_overlay.update_lumcount(-str * applied_lum_r, -str * applied_lum_g, -str * applied_lum_b) i++ diff --git a/code/modules/mining/coins.dm b/code/modules/mining/coins.dm index 16643f8842a..e8103eebba6 100644 --- a/code/modules/mining/coins.dm +++ b/code/modules/mining/coins.dm @@ -25,43 +25,43 @@ /obj/item/weapon/coin/gold cmineral = "gold" icon_state = "coin_gold_heads" - materials = list(MAT_GOLD = 200) + materials = list(MAT_GOLD = 400) credits = 160 /obj/item/weapon/coin/silver cmineral = "silver" icon_state = "coin_silver_heads" - materials = list(MAT_SILVER = 200) + materials = list(MAT_SILVER = 400) credits = 40 /obj/item/weapon/coin/diamond cmineral = "diamond" icon_state = "coin_diamond_heads" - materials = list(MAT_DIAMOND = 200) + materials = list(MAT_DIAMOND = 400) credits = 120 /obj/item/weapon/coin/iron cmineral = "iron" icon_state = "coin_iron_heads" - materials = list(MAT_METAL = 200) + materials = list(MAT_METAL = 400) credits = 20 /obj/item/weapon/coin/plasma cmineral = "plasma" icon_state = "coin_plasma_heads" - materials = list(MAT_PLASMA = 200) + materials = list(MAT_PLASMA = 400) credits = 80 /obj/item/weapon/coin/uranium cmineral = "uranium" icon_state = "coin_uranium_heads" - materials = list(MAT_URANIUM = 200) + materials = list(MAT_URANIUM = 400) credits = 160 /obj/item/weapon/coin/clown cmineral = "bananium" icon_state = "coin_bananium_heads" - materials = list(MAT_BANANIUM = 200) + materials = list(MAT_BANANIUM = 400) credits = 600 //makes the clown cri /obj/item/weapon/coin/adamantine diff --git a/code/modules/mining/equipment_locker.dm b/code/modules/mining/equipment_locker.dm index 15c60eb0655..b5d6f479ad3 100644 --- a/code/modules/mining/equipment_locker.dm +++ b/code/modules/mining/equipment_locker.dm @@ -101,22 +101,23 @@ inserted_id = I interact(user) return + if(exchange_parts(user, W)) return - if(default_deconstruction_crowbar(W)) - return - - if(default_unfasten_wrench(user, W)) - return - if(default_deconstruction_screwdriver(user, "ore_redemption-open", "ore_redemption", W)) - updateUsrDialog() - return if(panel_open) if(istype(W, /obj/item/weapon/crowbar)) empty_content() default_deconstruction_crowbar(W) - return 1 + return + + if(default_unfasten_wrench(user, W)) + return + + if(default_deconstruction_screwdriver(user, "ore_redemption-open", "ore_redemption", W)) + updateUsrDialog() + return + ..() /obj/machinery/mineral/ore_redemption/proc/SmeltMineral(var/obj/item/weapon/ore/O) @@ -253,7 +254,7 @@ while(s.amount > s.max_amount) new s.type(loc,s.max_amount) s.use(s.max_amount) - s.loc = loc + s.forceMove(loc) s.layer = initial(s.layer) /**********************Mining Equipment Locker**************************/ diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index 1c6aa5a4500..377c66c1b89 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -58,7 +58,7 @@ throwforce = 10.0 item_state = "pickaxe" w_class = 4.0 - materials = list(MAT_METAL=3750) //one sheet, but where can you make them? + materials = list(MAT_METAL=2000) //one sheet, but where can you make them? var/digspeed = 40 //moving the delay to an item var so R&D can make improved picks. --NEO origin_tech = "materials=1;engineering=1" attack_verb = list("hit", "pierced", "sliced", "attacked") diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm index 5e3302042f6..19b3c07c8c6 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm @@ -355,4 +355,7 @@ In all, this is a lot like the monkey code. /N else if(custom_pixel_x_offset) return custom_pixel_x_offset else - return initial(pixel_x) \ No newline at end of file + return initial(pixel_x) + +/mob/living/carbon/alien/humanoid/get_permeability_protection() + return 0.8 \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 7d464ff0f22..149273f6351 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1759,4 +1759,24 @@ return 1 if(!silent) src << "You don't have the dexterity to use that!" - return 0 \ No newline at end of file + return 0 + +/mob/living/carbon/human/get_permeability_protection() + var/list/prot = list("hands"=0, "chest"=0, "groin"=0, "legs"=0, "feet"=0, "arms"=0, "head"=0) + for(var/obj/item/I in get_equipped_items()) + if(I.body_parts_covered & HANDS) + prot["hands"] = max(1 - I.permeability_coefficient, prot["hands"]) + if(I.body_parts_covered & UPPER_TORSO) + prot["chest"] = max(1 - I.permeability_coefficient, prot["chest"]) + if(I.body_parts_covered & LOWER_TORSO) + prot["groin"] = max(1 - I.permeability_coefficient, prot["groin"]) + if(I.body_parts_covered & LEGS) + prot["legs"] = max(1 - I.permeability_coefficient, prot["legs"]) + if(I.body_parts_covered & FEET) + prot["feet"] = max(1 - I.permeability_coefficient, prot["feet"]) + if(I.body_parts_covered & ARMS) + prot["arms"] = max(1 - I.permeability_coefficient, prot["arms"]) + if(I.body_parts_covered & HEAD) + prot["head"] = max(1 - I.permeability_coefficient, prot["head"]) + var/protection = (prot["head"] + prot["arms"] + prot["feet"] + prot["legs"] + prot["groin"] + prot["chest"] + prot["hands"])/7 + return protection \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/species/apollo.dm b/code/modules/mob/living/carbon/human/species/apollo.dm index f5445b80543..8d0e64d44af 100644 --- a/code/modules/mob/living/carbon/human/species/apollo.dm +++ b/code/modules/mob/living/carbon/human/species/apollo.dm @@ -35,7 +35,8 @@ "antennae" = /obj/item/organ/wryn/hivenode ) - flags = IS_WHITELISTED | HAS_LIPS | HAS_UNDERWEAR | NO_BREATHE | HAS_SKIN_COLOR | NO_SCAN | NO_SCAN | HIVEMIND + flags = IS_WHITELISTED | HAS_LIPS | NO_BREATHE | HAS_SKIN_COLOR | NO_SCAN | NO_SCAN | HIVEMIND + clothing_flags = HAS_UNDERWEAR | HAS_UNDERSHIRT | HAS_SOCKS dietflags = DIET_HERB //bees feed off nectar, so bee people feed off plants too reagent_tag = PROCESS_ORG diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index 58b5968ebf8..09bd76f00eb 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -61,6 +61,7 @@ var/has_fine_manipulation = 1 // Can use small items. var/flags = 0 // Various specific features. + var/clothing_flags = 0 // Underwear and socks. var/bloodflags = 0 var/bodyflags = 0 var/dietflags = 0 // Make sure you set this, otherwise it won't be able to digest a lot of foods diff --git a/code/modules/mob/living/carbon/human/species/station.dm b/code/modules/mob/living/carbon/human/species/station.dm index b59efdda468..1604c5baea4 100644 --- a/code/modules/mob/living/carbon/human/species/station.dm +++ b/code/modules/mob/living/carbon/human/species/station.dm @@ -6,7 +6,8 @@ primitive_form = "Monkey" path = /mob/living/carbon/human/human language = "Sol Common" - flags = HAS_LIPS | HAS_UNDERWEAR | CAN_BE_FAT + flags = HAS_LIPS | CAN_BE_FAT + clothing_flags = HAS_UNDERWEAR | HAS_UNDERSHIRT | HAS_SOCKS bodyflags = HAS_SKIN_TONE dietflags = DIET_OMNI unarmed_type = /datum/unarmed_attack/punch @@ -37,7 +38,8 @@ else, frequently even their own lives. They prefer warmer temperatures than most species and \ their native tongue is a heavy hissing laungage called Sinta'Unathi." - flags = HAS_LIPS | HAS_UNDERWEAR + flags = HAS_LIPS + clothing_flags = HAS_UNDERWEAR | HAS_UNDERSHIRT | HAS_SOCKS bodyflags = FEET_CLAWS | HAS_TAIL | HAS_SKIN_COLOR | TAIL_WAGGING dietflags = DIET_CARN @@ -88,7 +90,8 @@ primitive_form = "Farwa" - flags = HAS_LIPS | HAS_UNDERWEAR | CAN_BE_FAT + flags = HAS_LIPS | CAN_BE_FAT + clothing_flags = HAS_UNDERWEAR | HAS_UNDERSHIRT | HAS_SOCKS bodyflags = FEET_PADDED | HAS_TAIL | HAS_SKIN_COLOR | TAIL_WAGGING dietflags = DIET_OMNI @@ -119,7 +122,8 @@ to the degree it can cause conflict with more rigorous and strict authorities. They speak a guttural language known as 'Canilunzt' \ which has a heavy emphasis on utilizing tail positioning and ear twitches to communicate intent." - flags = HAS_LIPS | HAS_UNDERWEAR + flags = HAS_LIPS + clothing_flags = HAS_UNDERWEAR | HAS_UNDERSHIRT | HAS_SOCKS bodyflags = FEET_PADDED | HAS_TAIL | HAS_SKIN_COLOR | TAIL_WAGGING dietflags = DIET_OMNI @@ -148,7 +152,8 @@ herbivores on the whole and tend to be co-operative with the other species of the galaxy, although they rarely reveal \ the secrets of their empire to their allies." - flags = HAS_LIPS | HAS_UNDERWEAR + flags = HAS_LIPS + clothing_flags = HAS_UNDERWEAR | HAS_UNDERSHIRT | HAS_SOCKS bodyflags = HAS_SKIN_COLOR dietflags = DIET_HERB @@ -190,6 +195,7 @@ poison_type = "oxygen" flags = NO_SCAN | IS_WHITELISTED + clothing_flags = HAS_SOCKS dietflags = DIET_OMNI blood_color = "#2299FC" @@ -278,6 +284,7 @@ brute_mod = 0.8 flags = IS_WHITELISTED + clothing_flags = HAS_SOCKS bodyflags = FEET_CLAWS dietflags = DIET_HERB @@ -295,6 +302,7 @@ unarmed_type = /datum/unarmed_attack/punch flags = IS_WHITELISTED | NO_BREATHE | HAS_LIPS | NO_INTORGANS | NO_SCAN + clothing_flags = HAS_SOCKS bodyflags = HAS_SKIN_COLOR bloodflags = BLOOD_SLIME dietflags = DIET_CARN @@ -322,7 +330,8 @@ default_genes = list(REMOTE_TALK) - flags = IS_WHITELISTED | HAS_LIPS | HAS_UNDERWEAR | CAN_BE_FAT + flags = IS_WHITELISTED | HAS_LIPS | CAN_BE_FAT + clothing_flags = HAS_UNDERWEAR | HAS_UNDERSHIRT | HAS_SOCKS dietflags = DIET_HERB reagent_tag = PROCESS_ORG @@ -373,6 +382,7 @@ water and other radiation." flags = NO_BREATHE | REQUIRE_LIGHT | IS_PLANT | RAD_ABSORB | NO_BLOOD | NO_PAIN + clothing_flags = HAS_SOCKS dietflags = 0 //Diona regenerate nutrition in light, no diet necessary body_temperature = T0C + 15 //make the plant people have a bit lower body temperature, why not @@ -467,6 +477,7 @@ passive_temp_gain = 10 //this should cause IPCs to stabilize at ~80 C in a 20 C environment. flags = IS_WHITELISTED | NO_BREATHE | NO_SCAN | NO_BLOOD | NO_PAIN | NO_DNA_RAD + clothing_flags = HAS_SOCKS dietflags = 0 //IPCs can't eat, so no diet blood_color = "#1F181F" flesh_color = "#AAAAAA" diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 67bb8731129..1590db1c214 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -317,18 +317,18 @@ var/global/list/damage_icon_parts = list() stand_icon.Blend(base_icon,ICON_OVERLAY) //Underwear - if(underwear && species.flags & HAS_UNDERWEAR) + if(underwear && species.clothing_flags & HAS_UNDERWEAR) var/datum/sprite_accessory/underwear/U = underwear_list[underwear] if(U) stand_icon.Blend(new /icon(U.icon, "uw_[U.icon_state]_s"), ICON_OVERLAY) - if(undershirt && species.flags & HAS_UNDERWEAR) + if(undershirt && species.clothing_flags & HAS_UNDERSHIRT) var/datum/sprite_accessory/undershirt/U2 = undershirt_list[undershirt] if(U2) stand_icon.Blend(new /icon(U2.icon, "us_[U2.icon_state]_s"), ICON_OVERLAY) - if(socks) + if(socks && species.clothing_flags & HAS_SOCKS) var/datum/sprite_accessory/socks/U3 = socks_list[socks] if(U3) stand_icon.Blend(new /icon(U3.icon, "sk_[U3.icon_state]_s"), ICON_OVERLAY) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index f6113e61694..ddc46419e7f 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -937,3 +937,7 @@ /mob/living/proc/spawn_dust() new /obj/effect/decal/cleanable/ash(loc) + +//used in datum/reagents/reaction() proc +/mob/living/proc/get_permeability_protection() + return 0 diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index cef8e246665..25e4b7c4a6d 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -551,13 +551,22 @@ return H /mob/living/silicon/pai/MouseDrop(atom/over_object) - var/mob/living/carbon/H = over_object - if(!istype(H) || !Adjacent(H)) return ..() - if(H.a_intent == I_HELP) - get_scooped(H) - //return + var/mob/living/carbon/human/H = over_object //changed to human to avoid stupid issues like xenos holding pAIs. + if(!istype(H) || !Adjacent(H)) return ..() + if(usr == src) + switch(alert(H, "[src] wants you to pick them up. Do it?",,"Yes","No")) + if("Yes") + if(Adjacent(H)) + get_scooped(H) + else + src << "You need to stay in reaching distance to be picked up." + if("No") + src << "[H] decided not to pick you up." else - return ..() + if(Adjacent(H)) + get_scooped(H) + else + return ..() /mob/living/silicon/pai/on_forcemove(atom/newloc) if(card) diff --git a/code/modules/mob/living/simple_animal/hostile/mimic.dm b/code/modules/mob/living/simple_animal/hostile/mimic.dm index 78b669e2047..dd42262bdcd 100644 --- a/code/modules/mob/living/simple_animal/hostile/mimic.dm +++ b/code/modules/mob/living/simple_animal/hostile/mimic.dm @@ -36,6 +36,8 @@ faction = list("mimic") move_to_delay = 9 + var/is_electronic = 0 + /mob/living/simple_animal/hostile/mimic/FindTarget() . = ..() if(.) @@ -47,7 +49,14 @@ ghostize() qdel(src) - +/mob/living/simple_animal/hostile/mimic/emp_act(severity) + if(is_electronic) + switch(severity) + if(1) + Die() + if(2) + adjustBruteLoss(50) + ..(severity) // // Crate Mimic @@ -188,12 +197,16 @@ var/global/list/protected_objects = list(/obj/structure/table, /obj/structure/ca knockdown_people = 1 melee_damage_lower *= 2 melee_damage_upper *= 2 + if(istype(O, /obj/machinery)) + is_electronic = 1 else if(istype(O, /obj/item)) var/obj/item/I = O health = 15 * I.w_class melee_damage_lower = 2 + I.force melee_damage_upper = 2 + I.force move_to_delay = 2 * I.w_class + 1 + if(istype(O, /obj/item/device)) + is_electronic = 1 maxHealth = health if(creator) diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/pet.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/pet.dm new file mode 100644 index 00000000000..17d764b9c1d --- /dev/null +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/pet.dm @@ -0,0 +1,23 @@ +/mob/living/simple_animal/hostile/retaliate/araneus + name = "Sergeant Araneus" + real_name = "Sergeant Araneus" + voice_name = "unidentifiable voice" + desc = "A fierce companion for any person of power, this spider has been carefully trained by Nanotrasen specialists. Its beady, staring eyes send shivers down your spine." + faction = list("spiders") + icon_state = "guard" + icon_living = "guard" + icon_dead = "guard_dead" + icon_gib = "guard_dead" + turns_per_move = 8 + response_help = "pets" + emote_hear = list("chitters") + maxHealth = 250 + health = 200 + harm_intent_damage = 3 + melee_damage_lower = 15 + melee_damage_upper = 20 + + min_oxy = 5 + max_tox = 2 + max_co2 = 5 + diff --git a/code/modules/mob/new_player/preferences_setup.dm b/code/modules/mob/new_player/preferences_setup.dm index 79d156f9cb7..8c837864706 100644 --- a/code/modules/mob/new_player/preferences_setup.dm +++ b/code/modules/mob/new_player/preferences_setup.dm @@ -254,19 +254,19 @@ datum/preferences var/icon/underwear_s = null - if(underwear && current_species.flags & HAS_UNDERWEAR) + if(underwear && current_species.clothing_flags & HAS_UNDERWEAR) var/datum/sprite_accessory/underwear/U = underwear_list[underwear] if(U) underwear_s = new/icon(U.icon, "[U.icon_state]_s", ICON_OVERLAY) var/icon/undershirt_s = null - if(undershirt && current_species.flags & HAS_UNDERWEAR) + if(undershirt && current_species.clothing_flags & HAS_UNDERSHIRT) var/datum/sprite_accessory/undershirt/U2 = undershirt_list[undershirt] if(U2) undershirt_s = new/icon(U2.icon, "[U2.icon_state]_s", ICON_OVERLAY) var/icon/socks_s = null - if(socks) + if(socks && current_species.clothing_flags & HAS_SOCKS) var/datum/sprite_accessory/socks/U3 = socks_list[socks] if(U3) socks_s = new/icon(U3.icon, "[U3.icon_state]_s", ICON_OVERLAY) diff --git a/code/modules/mob/new_player/sprite_accessories.dm b/code/modules/mob/new_player/sprite_accessories.dm index 5a27db7e008..febe62ba4e8 100644 --- a/code/modules/mob/new_player/sprite_accessories.dm +++ b/code/modules/mob/new_player/sprite_accessories.dm @@ -1272,118 +1272,118 @@ name = "Nude" icon_state = null gender = NEUTER - species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington","Vox") + species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpkanin","Slime People","Skellington","Vox") /datum/sprite_accessory/socks/white_norm name = "Normal White" icon_state = "white_norm" gender = NEUTER - species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington") + species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpkanin","Slime People","Skellington") /datum/sprite_accessory/socks/black_norm name = "Normal Black" icon_state = "black_norm" gender = NEUTER - species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington") + species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpkanin","Slime People","Skellington") /datum/sprite_accessory/socks/white_short name = "Short White" icon_state = "white_short" gender = NEUTER - species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington") + species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpkanin","Slime People","Skellington") /datum/sprite_accessory/socks/black_short name = "Short Black" icon_state = "black_short" gender = NEUTER - species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington") + species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpkanin","Slime People","Skellington") /datum/sprite_accessory/socks/white_knee name = "Knee-high White" icon_state = "white_knee" gender = NEUTER - species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington") + species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpkanin","Slime People","Skellington") /datum/sprite_accessory/socks/black_knee name = "Knee-high Black" icon_state = "black_knee" gender = NEUTER - species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington") + species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpkanin","Slime People","Skellington") /datum/sprite_accessory/socks/thin_knee name = "Knee-high Thin" icon_state = "thin_knee" gender = FEMALE - species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington") + species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpkanin","Slime People","Skellington") /datum/sprite_accessory/socks/striped_knee name = "Knee-high Striped" icon_state = "striped_knee" gender = NEUTER - species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington") + species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpkanin","Slime People","Skellington") /datum/sprite_accessory/socks/rainbow_knee name = "Knee-high Rainbow" icon_state = "rainbow_knee" gender = NEUTER - species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington") + species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpkanin","Slime People","Skellington") /datum/sprite_accessory/socks/white_thigh name = "Thigh-high White" icon_state = "white_thigh" gender = NEUTER - species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington") + species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpkanin","Slime People","Skellington") /datum/sprite_accessory/socks/black_thigh name = "Thigh-high Black" icon_state = "black_thigh" gender = NEUTER - species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington") + species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpkanin","Slime People","Skellington") /datum/sprite_accessory/socks/thin_thigh name = "Thigh-high Thin" icon_state = "thin_thigh" gender = FEMALE - species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington") + species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpkanin","Slime People","Skellington") /datum/sprite_accessory/socks/striped_thigh name = "Thigh-high Striped" icon_state = "striped_thigh" gender = NEUTER - species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington") + species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpkanin","Slime People","Skellington") /datum/sprite_accessory/socks/rainbow_thigh name = "Thigh-high Rainbow" icon_state = "rainbow_thigh" gender = NEUTER - species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington") + species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpkanin","Slime People","Skellington") /datum/sprite_accessory/socks/pantyhose name = "Pantyhose" icon_state = "pantyhose" gender = FEMALE - species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington") + species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpkanin","Slime People","Skellington") /datum/sprite_accessory/socks/black_fishnet name = "Black Fishnet" icon_state = "black_fishnet" gender = NEUTER - species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington") + species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpkanin","Slime People","Skellington") /datum/sprite_accessory/socks/vox_white name = "Vox White" diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index 73870334d37..4fabdc6510e 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -3,60 +3,6 @@ H.dna.SetSEState(MONKEYBLOCK,1) domutcheck(H, null) -/* -/mob/living/carbon/human/proc/monkeyize() - if (notransform) - return - for(var/obj/item/W in src) - if (W==w_uniform) // will be torn - continue - unEquip(W) - regenerate_icons() - notransform = 1 - canmove = 0 - stunned = 1 - icon = null - invisibility = 101 - for(var/t in organs) - del(t) - var/atom/movable/overlay/animation = new /atom/movable/overlay( loc ) - animation.icon_state = "blank" - animation.icon = 'icons/mob/mob.dmi' - animation.master = src - flick("h2monkey", animation) - sleep(48) - //animation = null - - if(!species.primitive) //If the creature in question has no primitive set, this is going to be messy. - gib() - return - - var/mob/living/carbon/monkey/O = null - - O = new species.primitive(loc) - - O.dna = dna.Clone() - O.dna.SetSEState(MONKEYBLOCK,1) - O.dna.SetSEValueRange(MONKEYBLOCK,0xDAC, 0xFFF) - O.loc = loc - O.viruses = viruses - O.a_intent = I_HARM - - - if (client) - client.mob = O - if(mind) - mind.transfer_to(O) - - O << "You are now [O]. " - - spawn(0)//To prevent the proc from returning null. - del(src) - del(animation) - - return O -*/ - /mob/new_player/AIize() spawning = 1 return ..() diff --git a/code/modules/nano/modules/human_appearance.dm b/code/modules/nano/modules/human_appearance.dm index bf5e03a924f..606dcade9c9 100644 --- a/code/modules/nano/modules/human_appearance.dm +++ b/code/modules/nano/modules/human_appearance.dm @@ -140,10 +140,10 @@ return owner && (flags & flag) /datum/nano_module/appearance_changer/proc/can_change_skin_tone() - return owner && (flags & APPEARANCE_SKIN) && owner.species.flags & HAS_SKIN_TONE + return owner && (flags & APPEARANCE_SKIN) && (owner.species.bodyflags & HAS_SKIN_TONE) /datum/nano_module/appearance_changer/proc/can_change_skin_color() - return owner && (flags & APPEARANCE_SKIN) && owner.species.flags & HAS_SKIN_COLOR + return owner && (flags & APPEARANCE_SKIN) && (owner.species.bodyflags & HAS_SKIN_COLOR) /datum/nano_module/appearance_changer/proc/cut_and_generate_data() // Making the assumption that the available species remain constant diff --git a/code/modules/power/powernet.dm b/code/modules/power/powernet.dm index 0c65a49b251..1fe2737d31b 100644 --- a/code/modules/power/powernet.dm +++ b/code/modules/power/powernet.dm @@ -11,7 +11,7 @@ var/perapc = 0 // per-apc avilability var/perapc_excess = 0 var/netexcess = 0 // excess power on the powernet (typically avail-load) - + var/problem = 0 // If either of these is set to 1 there is some sort of issue at the powernet. @@ -20,6 +20,14 @@ ..() /datum/powernet/Destroy() + //Go away references, you suck! + for(var/obj/structure/cable/C in cables) + cables -= C + C.powernet = null + for(var/obj/machinery/power/M in nodes) + nodes -= M + M.powernet = null + powernets -= src return ..() @@ -76,7 +84,7 @@ M.disconnect_from_network()//..remove it M.powernet = src nodes[M] = M - + // Triggers warning for certain amount of ticks /datum/powernet/proc/trigger_warning(var/duration_ticks = 20) problem = max(duration_ticks, problem) @@ -85,7 +93,7 @@ //called every ticks by the powernet controller /datum/powernet/proc/reset() var/numapc = 0 - + if(problem > 0) problem = max(problem - 1, 0) diff --git a/code/modules/projectiles/ammunition/ammo_casings.dm b/code/modules/projectiles/ammunition/ammo_casings.dm index 18cd36a7fc9..647ac2b105b 100644 --- a/code/modules/projectiles/ammunition/ammo_casings.dm +++ b/code/modules/projectiles/ammunition/ammo_casings.dm @@ -183,9 +183,9 @@ caliber = "a762" projectile_type = "/obj/item/projectile/bullet" -/obj/item/ammo_casing/a545 - desc = "A 5.45mm bullet casing." - caliber = "a545" +/obj/item/ammo_casing/a556 + desc = "A 5.56mm bullet casing." + caliber = "a556" projectile_type = "/obj/item/projectile/bullet/heavybullet" /obj/item/ammo_casing/rocket diff --git a/code/modules/projectiles/ammunition/magazines.dm b/code/modules/projectiles/ammunition/magazines.dm index 7fa2224cbcd..e47acf7521e 100644 --- a/code/modules/projectiles/ammunition/magazines.dm +++ b/code/modules/projectiles/ammunition/magazines.dm @@ -116,6 +116,17 @@ ..() icon_state = "[initial(icon_state)]-[ammo_count() ? "8" : "0"]" +/obj/item/ammo_box/magazine/uzim9mm + name = "uzi magazine (9mm)" + icon_state = "uzi9mm-32" + ammo_type = /obj/item/ammo_casing/c9mm + caliber = "9mm" + max_ammo = 32 + +/obj/item/ammo_box/magazine/uzim9mm/update_icon() + ..() + icon_state = "uzi9mm-[round(ammo_count(),4)]" + /obj/item/ammo_box/magazine/smgm9mm name = "SMG magazine (9mm)" icon_state = "smg9mm" @@ -163,17 +174,14 @@ multiple_sprites = 2 max_ammo = 8 -/obj/item/ammo_box/magazine/m545 - name = "box magazine (5.45mm)" - icon_state = "5.45m" +/obj/item/ammo_box/magazine/m556 + name = "toploader magazine (5.56mm)" + icon_state = "5.56m" origin_tech = "combat=5;syndicate=1" - ammo_type = "/obj/item/ammo_casing/a545" - caliber = "a545" + ammo_type = /obj/item/ammo_casing/a556 + caliber = "a556" max_ammo = 30 - -/obj/item/ammo_box/magazine/m545/update_icon() - ..() - icon_state = "[initial(icon_state)]-[round(ammo_count(),10)]" + multiple_sprites = 2 /obj/item/ammo_box/magazine/m762 name = "box magazine (7.62mm)" diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 2238fdba653..65dbae52644 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -45,6 +45,8 @@ var/can_flashlight = 0 var/heavy_weapon = 0 var/randomspread = 0 + + var/burst_size = 1 proc/ready_to_fire() if(world.time >= last_fired + fire_delay) @@ -126,9 +128,6 @@ user << "[src] is not ready to fire again!" return - if(!process_chambered()) //CHECK - return click_empty(user) - if(heavy_weapon) if(user.get_inactive_hand()) recoil = 4 //one-handed kick @@ -144,48 +143,55 @@ var/spread = 0 var/turf/targloc = get_turf(target) - if(chambered) - for (var/i = max(1, chambered.pellets), i > 0, i--) //Previous way of doing it fucked up math for spreading. This way, even the first projectile is part of the spread code. - if(i != max(1, chambered.pellets)) //Have we fired the initial chambered bullet yet? - in_chamber = new chambered.projectile_type() + for(var/f = 1 to burst_size) + if(!process_chambered()) //CHECK + return click_empty(user) + + if(chambered) + for (var/i = max(1, chambered.pellets), i > 0, i--) //Previous way of doing it fucked up math for spreading. This way, even the first projectile is part of the spread code. + if(i != max(1, chambered.pellets)) //Have we fired the initial chambered bullet yet? + in_chamber = new chambered.projectile_type() + ready_projectile(target, user) + prepare_shot(in_chamber) + if(chambered.deviation) + if(randomspread) //Random spread + spread = (rand() - 0.5) * chambered.deviation + else //Smart spread + spread = (i / chambered.pellets - 0.5) * chambered.deviation + if(!process_projectile(targloc, user, params, spread)) + return 0 + else ready_projectile(target, user) prepare_shot(in_chamber) - if(chambered.deviation) - if(randomspread) //Random spread - spread = (rand() - 0.5) * chambered.deviation - else //Smart spread - spread = (i / chambered.pellets - 0.5) * chambered.deviation if(!process_projectile(targloc, user, params, spread)) return 0 - else - ready_projectile(target, user) - prepare_shot(in_chamber) - if(!process_projectile(targloc, user, params, spread)) - return 0 - if(recoil) - spawn() - shake_camera(user, recoil + 1, recoil) + if(recoil) + spawn() + shake_camera(user, recoil + 1, recoil) - 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"]!") + if(silenced) + playsound(user, fire_sound, 10, 1) + else + playsound(user, fire_sound, 50, 1) + if(f == 1) // Only print this once + 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"]!") - if(heavy_weapon) - if(user.get_inactive_hand()) - if(prob(15)) - user.visible_message("[src] flies out of [user]'s hands!", "[src] kicks out of your grip!") - user.drop_item() + if(heavy_weapon) + if(user.get_inactive_hand()) + if(prob(15)) + user.visible_message("[src] flies out of [user]'s hands!", "[src] kicks out of your grip!") + user.drop_item() + break - update_icon() - if(user.hand) - user.update_inv_l_hand() - else - user.update_inv_r_hand() + update_icon() + if(user.hand) + user.update_inv_l_hand() + else + user.update_inv_r_hand() + sleep(fire_delay) /obj/item/weapon/gun/proc/ready_projectile(atom/target as mob|obj|turf, mob/living/user) in_chamber.firer = user diff --git a/code/modules/projectiles/guns/energy/hos.dm b/code/modules/projectiles/guns/energy/hos.dm index c48a7ee3398..aaf1896caa4 100644 --- a/code/modules/projectiles/guns/energy/hos.dm +++ b/code/modules/projectiles/guns/energy/hos.dm @@ -1,5 +1,5 @@ /obj/item/weapon/gun/energy/hos - name = "head of security's energy gun" + name = "\improper X-01 MultiPhase Energy Gun" desc = "This is a modern recreation of the captain's antique laser gun. This gun has several unique fire modes, but lacks the ability to recharge over time." icon_state = "hoslaser" item_state = null //so the human update icon uses the icon_state instead. diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm index 7f37895e7ab..5355e339ac8 100644 --- a/code/modules/projectiles/guns/energy/laser.dm +++ b/code/modules/projectiles/guns/energy/laser.dm @@ -17,12 +17,13 @@ clumsy_check = 0 obj/item/weapon/gun/energy/laser/retro - name ="retro laser" + name ="retro laser gun" 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 = "\improper QSJ-01 premium laser pistol" icon_state = "caplaser" item_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." diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index 07dc18181e9..df459e5a9e3 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -133,7 +133,7 @@ /obj/item/weapon/gun/energy/mindflayer - name = "mind flayer" + name = "\improper Mind Flayer" desc = "A prototype weapon recovered from the ruins of Research-Station Epsilon." icon_state = "xray" projectile_type = "/obj/item/projectile/beam/mindflayer" diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm index 615dfcf2ba2..de58dbb90e8 100644 --- a/code/modules/projectiles/guns/projectile/automatic.dm +++ b/code/modules/projectiles/guns/projectile/automatic.dm @@ -1,25 +1,73 @@ -/obj/item/weapon/gun/projectile/automatic //Hopefully someone will find a way to make these fire in bursts or something. --Superxpdude - name = "prototype SMG" - desc = "A lightweight, prototype 9mm submachine gun, designated 'SABR'. Has a threaded barrel for suppressors." - icon_state = "saber" +/obj/item/weapon/gun/projectile/automatic w_class = 3.0 - origin_tech = "combat=4;materials=2" automatic = 1 - mag_type = "/obj/item/ammo_box/magazine/smgm9mm" var/alarmed = 0 + var/select = 1 can_suppress = 1 - fire_delay = 0 - isHandgun() - return 0 + burst_size = 3 + fire_delay = 2 + action_button_name = "Toggle Firemode" + +/obj/item/weapon/gun/projectile/automatic/isHandgun() + return 0 + +/obj/item/weapon/gun/projectile/automatic/proto + name = "\improper Nanotrasen Saber SMG" + desc = "A prototype three-round burst 9mm submachine gun, designated 'SABR'. Has a threaded barrel for suppressors." + icon_state = "saber" + mag_type = "/obj/item/ammo_box/magazine/smgm9mm" + origin_tech = "combat=4;materials=2" /obj/item/weapon/gun/projectile/automatic/update_icon() ..() + overlays.Cut() + if(!select) + overlays += "[initial(icon_state)]semi" + if(select == 1) + overlays += "[initial(icon_state)]burst" icon_state = "[initial(icon_state)][magazine ? "-[magazine.max_ammo]" : ""][chambered ? "" : "-e"][silenced ? "-suppressed" : ""]" return /obj/item/weapon/gun/projectile/automatic/attackby(var/obj/item/A as obj, mob/user as mob, params) - if(..() && chambered) - alarmed = 0 + . = ..() + if(.) + return + if(istype(A, /obj/item/ammo_box/magazine)) + var/obj/item/ammo_box/magazine/AM = A + if(istype(AM, text2path(mag_type))) + if(magazine) + user << "You perform a tactical reload on \the [src], replacing the magazine." + magazine.forceMove(get_turf(src.loc)) + magazine.update_icon() + magazine = null + else + user << "You insert the magazine into \the [src]." + user.remove_from_mob(AM) + magazine = AM + magazine.forceMove(src) + chamber_round() + A.update_icon() + update_icon() + return 1 + +/obj/item/weapon/gun/projectile/automatic/ui_action_click() + burst_select() + +/obj/item/weapon/gun/projectile/automatic/verb/burst_select() + var/mob/living/carbon/human/user = usr + select = !select + if(!select) + burst_size = 1 + fire_delay = 0 + user << "You switch to semi-automatic." + else + burst_size = initial(burst_size) + fire_delay = initial(fire_delay) + user << "You switch to [burst_size] round burst." + + playsound(user, 'sound/weapons/empty.ogg', 100, 1) + update_icon() + return /obj/item/weapon/gun/projectile/automatic/proc/empty_alarm() if(!chambered && !get_ammo() && !alarmed) @@ -29,13 +77,15 @@ return /obj/item/weapon/gun/projectile/automatic/c20r - name = "syndicate SMG" - desc = "A lightweight, bullpup .45 SMG, designated 'C-20r'. Has a 'Scarborough Arms - Per falcis, per pravitas' buttstamp." + name = "\improper C-20r SMG" + desc = "A two-round burst .45 SMG, designated 'C-20r'. Has a 'Scarborough Arms - Per falcis, per pravitas' buttstamp." icon_state = "c20r" item_state = "c20r" origin_tech = "combat=5;materials=2;syndicate=8" mag_type = "/obj/item/ammo_box/magazine/smgm45" fire_sound = 'sound/weapons/Gunshot_smg.ogg' + fire_delay = 2 + burst_size = 2 /obj/item/weapon/gun/projectile/automatic/c20r/New() ..() @@ -52,9 +102,16 @@ icon_state = "c20r[magazine ? "-[Ceiling(get_ammo(0)/4)*4]" : ""][chambered ? "" : "-e"][silenced ? "-suppressed" : ""]" return - +/obj/item/weapon/gun/projectile/automatic/mini_uzi + name = "\improper 'Type U3' Uzi" + desc = "A lightweight, burst-fire submachine gun, for when you really want someone dead. Uses 9mm rounds." + icon_state = "mini-uzi" + origin_tech = "combat=5;materials=2;syndicate=8" + mag_type = "/obj/item/ammo_box/magazine/uzim9mm" + burst_size = 2 + /obj/item/weapon/gun/projectile/automatic/l6_saw - name = "syndicate LMG" + name = "\improper L6 SAW LMG" desc = "A heavily modified 7.62 light machine gun, designated 'L6 SAW'. Has 'Aussec Armoury - 2531' engraved on the reciever below the designation." icon_state = "l6closed100" item_state = "l6closedmag" @@ -66,19 +123,17 @@ var/cover_open = 0 can_suppress = 0 - - - + burst_size = 5 + fire_delay = 3 + /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"][magazine ? round(magazine.ammo_count() * 2, 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) user << "[src]'s cover is open! Close it before firing!" @@ -86,7 +141,6 @@ ..() update_icon() - /obj/item/weapon/gun/projectile/automatic/l6_saw/attack_hand(mob/user as mob) if(loc != user) ..() @@ -109,111 +163,78 @@ return ..() - -/obj/item/weapon/gun/projectile/automatic/bulldog - name = "syndicate shotgun" - desc = "A compact, mag-fed semi-automatic shotgun for combat in narrow corridors, nicknamed 'Bulldog' by boarding parties. Compatible only with specialized 8-round drum magazines." - icon_state = "bulldog" - item_state = "bulldog" - w_class = 3.0 - origin_tech = "combat=5;materials=4;syndicate=6" - mag_type = "/obj/item/ammo_box/magazine/m12g" - fire_sound = 'sound/weapons/Gunshot4.ogg' - can_suppress = 0 - -/obj/item/weapon/gun/projectile/automatic/bulldog/New() - ..() - update_icon() - return - -/obj/item/weapon/gun/projectile/automatic/bulldog/proc/update_magazine() - if(magazine) - src.overlays = 0 - overlays += "[magazine.icon_state]" - return - -/obj/item/weapon/gun/projectile/automatic/bulldog/update_icon() - src.overlays = 0 - update_magazine() - icon_state = "bulldog[chambered ? "" : "-e"]" - return - -/obj/item/weapon/gun/projectile/automatic/bulldog/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, flag) - ..() - empty_alarm() - return - - -/obj/item/weapon/gun/projectile/automatic/c90gl - name = "syndicate assault rifle" - desc = "A bullpup and compact 5.45x39 assault rifle with a unique toploading design, designated 'C-90gl'. Has an attached underbarrel grenade launcher which can be toggled on and off." - icon_state = "c90gl" - item_state = "c90gl" +/obj/item/weapon/gun/projectile/automatic/m90 + name = "\improper M-90gl Carbine" + desc = "A three-round burst 5.56 toploading carbine, designated 'M-90gl'. Has an attached underbarrel grenade launcher which can be toggled on and off." + icon_state = "m90" + item_state = "m90" + icon_override = 'icons/mob/in-hand/guns.dmi' origin_tech = "combat=5;materials=2;syndicate=8" - mag_type = "/obj/item/ammo_box/magazine/m545" + mag_type = "/obj/item/ammo_box/magazine/m556" fire_sound = 'sound/weapons/Gunshot_smg.ogg' action_button_name = "Toggle Grenade Launcher" can_suppress = 0 - var/select = 1 //1 for boolets, 0 for explosions. var/obj/item/weapon/gun/projectile/revolver/grenadelauncher/underbarrel + burst_size = 3 + fire_delay = 2 -/obj/item/weapon/gun/projectile/automatic/c90gl/New() +/obj/item/weapon/gun/projectile/automatic/m90/New() ..() underbarrel = new /obj/item/weapon/gun/projectile/revolver/grenadelauncher(src) update_icon() return -/obj/item/weapon/gun/projectile/automatic/c90gl/afterattack(var/atom/target, var/mob/living/user, flag, params) - if(select) +/obj/item/weapon/gun/projectile/automatic/m90/afterattack(var/atom/target, var/mob/living/user, flag, params) + if(select == 2) + underbarrel.afterattack(target, user, flag, params) + else ..() empty_alarm() return + +/obj/item/weapon/gun/projectile/automatic/m90/attackby(var/obj/item/A, mob/user, params) + if(istype(A, /obj/item/ammo_casing)) + if(istype(A, text2path(underbarrel.magazine.ammo_type))) + underbarrel.attack_self() + underbarrel.attackby(A, user, params) else - underbarrel.afterattack(target, user, flag, params) - -/obj/item/weapon/gun/projectile/automatic/c90gl/attackby(var/obj/item/A, mob/user, params) - if(select) ..() - else - underbarrel.attackby(A, user, params) -/obj/item/weapon/gun/projectile/automatic/c90gl/attack_self(var/mob/living/user) - if(select) - ..() - else - underbarrel.attack_self(user) - - - -/obj/item/weapon/gun/projectile/automatic/c90gl/update_icon() +/obj/item/weapon/gun/projectile/automatic/m90/update_icon() ..() overlays.Cut() - if(select) - overlays += "c90prim" - else - overlays += "c90gren" - icon_state = "c90gl[magazine ? "-[Ceiling(get_ammo(0)/6)*6]" : ""][chambered ? "" : "-e"]" + switch(select) + if(0) + overlays += "[initial(icon_state)]semi" + if(1) + overlays += "[initial(icon_state)]burst" + if(2) + overlays += "[initial(icon_state)]gren" + icon_state = "[initial(icon_state)][magazine ? "" : "-e"]" return -/obj/item/weapon/gun/projectile/automatic/c90gl/proc/underbarrel_swap() +/obj/item/weapon/gun/projectile/automatic/m90/burst_select() var/mob/living/carbon/human/user = usr - if(select) - select = 0 - user << "You switch to grenades." - else - select = 1 - user << "You switch to bullets." - + switch(select) + if(0) + select = 1 + burst_size = initial(burst_size) + fire_delay = initial(fire_delay) + user << "You switch to [burst_size] round burst." + if(1) + select = 2 + user << "You switch to grenades." + if(2) + select = 0 + burst_size = 1 + fire_delay = 0 + user << "You switch to semi-auto." + playsound(user, 'sound/weapons/empty.ogg', 100, 1) update_icon() return -/obj/item/weapon/gun/projectile/automatic/c90gl/ui_action_click() - underbarrel_swap() - - - /obj/item/weapon/gun/projectile/automatic/tommygun - name = "tommy gun" + name = "\improper Thompson SMG" desc = "A genuine 'Chicago Typewriter'." icon_state = "tommygun" item_state = "tommygun" @@ -221,4 +242,20 @@ origin_tech = "combat=5;materials=1;syndicate=2" mag_type = "/obj/item/ammo_box/magazine/tommygunm45" fire_sound = 'sound/weapons/Gunshot_smg.ogg' - can_suppress = 0 \ No newline at end of file + can_suppress = 0 + fire_delay = 1 + burst_size = 4 + +/obj/item/weapon/gun/projectile/automatic/ar + name = "ARG" + desc = "A robust assault rile used by Nanotrasen fighting forces." + icon_state = "arg" + item_state = "arg" + slot_flags = 0 + origin_tech = "combat=5;materials=1" + mag_type = "/obj/item/ammo_box/magazine/m556" + fire_sound = 'sound/weapons/Gunshot_smg.ogg' + can_suppress = 0 + burst_size = 3 + fire_delay = 1 + \ No newline at end of file diff --git a/code/modules/projectiles/guns/projectile/launchers.dm b/code/modules/projectiles/guns/projectile/launchers.dm index 3ada1e716b4..a494fde8051 100644 --- a/code/modules/projectiles/guns/projectile/launchers.dm +++ b/code/modules/projectiles/guns/projectile/launchers.dm @@ -3,14 +3,17 @@ /obj/item/weapon/gun/projectile/automatic/gyropistol - name = "gyrojet pistol" + name = "\improper Gyrojet rocket pistol" desc = "A prototype pistol designed to fire self propelled rockets." icon_state = "gyropistol" fire_sound = 'sound/effects/Explosion1.ogg' origin_tech = "combat=3" mag_type = "/obj/item/ammo_box/magazine/m75" - isHandgun() - return 1 + burst_size = 1 + fire_delay = 0 + +/obj/item/weapon/gun/projectile/automatic/gyropistol/isHandgun() + return 1 /obj/item/weapon/gun/projectile/automatic/gyropistol/New() ..() @@ -36,6 +39,7 @@ icon_state = "dshotgun-sawn" item_state = "gun" mag_type = "/obj/item/ammo_box/magazine/internal/cylinder/grenadelauncher" + fire_sound = 'sound/weapons/grenadelaunch.ogg' w_class = 3 /obj/item/weapon/gun/projectile/revolver/grenadelauncher/attackby(var/obj/item/A, mob/user, params) diff --git a/code/modules/projectiles/guns/projectile/pistol.dm b/code/modules/projectiles/guns/projectile/pistol.dm index 108e6977e11..c5ab2fa7c73 100644 --- a/code/modules/projectiles/guns/projectile/pistol.dm +++ b/code/modules/projectiles/guns/projectile/pistol.dm @@ -1,56 +1,50 @@ /obj/item/weapon/gun/projectile/automatic/pistol - name = "syndicate pistol" + name = "\improper FK-69 pistol" desc = "A small, easily concealable 10mm handgun. Has a threaded barrel for suppressors." icon_state = "pistol" w_class = 2 origin_tech = "combat=2;materials=2;syndicate=2" mag_type = "/obj/item/ammo_box/magazine/m10mm" can_suppress = 1 - isHandgun() - return 1 + burst_size = 1 + fire_delay = 0 + action_button_name = null + +/obj/item/weapon/gun/projectile/automatic/pistol/isHandgun() + return 1 /obj/item/weapon/gun/projectile/automatic/pistol/update_icon() ..() icon_state = "[initial(icon_state)][chambered ? "" : "-e"][silenced ? "-suppressed" : ""]" return -/obj/item/weapon/gun/projectile/automatic/m2411 - name = "M2411" +/obj/item/weapon/gun/projectile/automatic/pistol/m2411 + name = "\improper M2411 pistol" desc = "John Browning's classic updated for the modern day. Uses .45 rounds." icon_state = "m2411" w_class = 3.0 origin_tech = "combat=3;materials=2" mag_type = "/obj/item/ammo_box/magazine/m45" - isHandgun() - return 1 + can_suppress = 0 - -/obj/item/weapon/gun/projectile/automatic/m2411/update_icon() - ..() - icon_state = "[initial(icon_state)][chambered ? "" : "-e"]" - return - -/obj/item/weapon/gun/projectile/automatic/deagle - name = "desert eagle" +/obj/item/weapon/gun/projectile/automatic/pistol/deagle + name = "\improper Desert Eagle pistol" desc = "A robust .50 AE handgun." icon_state = "deagle" force = 14.0 mag_type = "/obj/item/ammo_box/magazine/m50" - isHandgun() - return 1 + can_suppress = 0 -/obj/item/weapon/gun/projectile/automatic/deagle/update_icon() +/obj/item/weapon/gun/projectile/automatic/pistol/deagle/update_icon() ..() icon_state = "[initial(icon_state)][magazine ? "" : "-e"]" -/obj/item/weapon/gun/projectile/automatic/deagle/gold +/obj/item/weapon/gun/projectile/automatic/pistol/deagle/gold desc = "A gold plated desert eagle folded over a million times by superior martian gunsmiths. Uses .50 AE ammo." icon_state = "deagleg" item_state = "deagleg" - - -/obj/item/weapon/gun/projectile/automatic/deagle/camo +/obj/item/weapon/gun/projectile/automatic/pistol/deagle/camo desc = "A Deagle brand Deagle for operators operating operationally. Uses .50 AE ammo." icon_state = "deaglecamo" item_state = "deagleg" \ No newline at end of file diff --git a/code/modules/projectiles/guns/projectile/revolver.dm b/code/modules/projectiles/guns/projectile/revolver.dm index 68007f5bd26..1e92c89e1d2 100644 --- a/code/modules/projectiles/guns/projectile/revolver.dm +++ b/code/modules/projectiles/guns/projectile/revolver.dm @@ -1,6 +1,6 @@ /obj/item/weapon/gun/projectile/revolver + name = "\improper .357 revolver" desc = "A suspicious revolver. Uses .357 ammo." - name = "revolver" icon_state = "revolver" mag_type = "/obj/item/ammo_box/magazine/internal/cylinder" @@ -65,6 +65,7 @@ usr << "[get_ammo(0,0)] of those are live rounds." /obj/item/weapon/gun/projectile/revolver/detective + name = "\improper .38 Mars Special" desc = "A cheap Martian knock-off of a classic law enforcement firearm. Uses .38-special rounds." name = "revolver" icon_state = "detective" @@ -154,8 +155,8 @@ /obj/item/weapon/gun/projectile/revolver/mateba - name = "autorevolver" - desc = "A retro high-powered mateba autorevolver typically used by officers of the New Russia military. Uses .357 ammo." //>10mm hole >.357 + name = "\improper Unica 6 auto-revolver" + desc = "A retro high-powered autorevolver typically used by officers of the New Russia military. Uses .357 ammo." //>10mm hole >.357 icon_state = "mateba" origin_tech = "combat=2;materials=2" @@ -163,7 +164,7 @@ // You can spin the chamber to randomize the position of the bullet. /obj/item/weapon/gun/projectile/revolver/russian - name = "Russian Revolver" + name = "\improper Russian Revolver" desc = "A Russian-made revolver for drinking games. Uses .357 ammo, and has a mechanism that spins the chamber before each trigger pull." origin_tech = "combat=2;materials=2" mag_type = "/obj/item/ammo_box/magazine/internal/cylinder/rus357" diff --git a/code/modules/projectiles/guns/projectile/shotgun.dm b/code/modules/projectiles/guns/projectile/shotgun.dm index 72a5a613121..1724f42f518 100644 --- a/code/modules/projectiles/guns/projectile/shotgun.dm +++ b/code/modules/projectiles/guns/projectile/shotgun.dm @@ -104,7 +104,7 @@ /////////////////////// /obj/item/weapon/gun/projectile/shotgun/boltaction - name = "bolt action rifle" + name = "\improper Mosin Nagant rifle" desc = "This piece of junk looks like something that could have been used 700 years ago." icon_state = "moistnugget" item_state = "moistnugget" @@ -237,3 +237,40 @@ return else sawn_state = SAWN_INTACT + +/obj/item/weapon/gun/projectile/automatic/shotgun/bulldog + name = "\improper MLG-12 'Bulldog' Shotgun" + desc = "A compact, mag-fed semi-automatic shotgun for combat in narrow corridors, nicknamed 'Bulldog' by boarding parties. Compatible only with specialized 8-round drum magazines." + icon_state = "bulldog" + item_state = "bulldog" + icon_override = 'icons/mob/in-hand/guns.dmi' + w_class = 3.0 + origin_tech = "combat=5;materials=4;syndicate=6" + mag_type = "/obj/item/ammo_box/magazine/m12g" + fire_sound = 'sound/weapons/Gunshot4.ogg' + can_suppress = 0 + burst_size = 1 + fire_delay = 0 + action_button_name = null + +/obj/item/weapon/gun/projectile/automatic/shotgun/bulldog/New() + ..() + update_icon() + return + +/obj/item/weapon/gun/projectile/automatic/shotgun/bulldog/proc/update_magazine() + if(magazine) + overlays.Cut() + overlays += "[magazine.icon_state]" + return + +/obj/item/weapon/gun/projectile/automatic/shotgun/bulldog/update_icon() + overlays.Cut() + update_magazine() + icon_state = "bulldog[chambered ? "" : "-e"]" + return + +/obj/item/weapon/gun/projectile/automatic/shotgun/bulldog/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, flag) + ..() + empty_alarm() + return diff --git a/code/modules/reagents/Chemistry-Holder.dm b/code/modules/reagents/Chemistry-Holder.dm index 29a67ffe492..c5d2ba86fbf 100644 --- a/code/modules/reagents/Chemistry-Holder.dm +++ b/code/modules/reagents/Chemistry-Holder.dm @@ -628,6 +628,7 @@ atom/proc/create_reagents(var/max_vol) reagents.my_atom = src /datum/reagents/Destroy() + ..() processing_objects.Remove(src) for(var/datum/reagent/R in reagent_list) qdel(R) @@ -635,4 +636,4 @@ atom/proc/create_reagents(var/max_vol) reagent_list = null if(my_atom && my_atom.reagents == src) my_atom.reagents = null - return ..() \ No newline at end of file + return QDEL_HINT_QUEUE \ No newline at end of file diff --git a/code/modules/reagents/newchem/Blob-Reagents.dm b/code/modules/reagents/newchem/Blob-Reagents.dm index f3b65c9d1b5..80c36713bbe 100644 --- a/code/modules/reagents/newchem/Blob-Reagents.dm +++ b/code/modules/reagents/newchem/Blob-Reagents.dm @@ -1,188 +1,149 @@ // These can only be applied by blobs. They are what blobs are made out of. // The 4 damage /datum/reagent/blob + description = "" var/message = "The blob strikes you" //message sent to any mob hit by the blob var/message_living = null //extension to first mob sent to only living mobs i.e. silicons have no skin to be burnt -/datum/reagent/blob/boiling_oil +/datum/reagent/blob/reaction_mob(mob/living/M, method=TOUCH, volume, show_message, touch_protection) + return round(volume * min(1.5 - touch_protection, 1), 0.1) //full touch protection means 50% volume, any prot below 0.5 means 100% volume. + +/datum/reagent/blob/ripping_tendrils //does brute and a little stamina damage + name = "Ripping Tendrils" + id = "ripping_tendrils" + color = "#7F0000" + message_living = ", and you feel your skin ripping and tearing off" + +/datum/reagent/blob/ripping_tendrils/reaction_mob(mob/living/M, method=TOUCH, volume) + if(method == TOUCH) + volume = ..() + M.apply_damage(0.6*volume, BRUTE) + M.adjustStaminaLoss(0.4*volume) + if(iscarbon(M)) + M.emote("scream") + +/datum/reagent/blob/boiling_oil //sets you on fire, does burn damage name = "Boiling Oil" id = "boiling_oil" - description = "" color = "#B68D00" message = "The blob splashes you with burning oil" + message_living = ", and you feel your skin char and melt" /datum/reagent/blob/boiling_oil/reaction_mob(var/mob/living/M as mob, var/method=TOUCH, var/volume) if(method == TOUCH) - var/ratio = volume/25 - M.apply_damage(15*ratio, BURN) - M.adjust_fire_stacks(2*ratio) + M.adjust_fire_stacks(round(volume/12)) + volume = ..() + M.apply_damage(0.6*volume, BURN) M.IgniteMob() if(isliving(M)) M.emote("scream") -/datum/reagent/blob/toxic_goop - name = "Toxic Goop" - id = "toxic_goop" - description = "" - color = "#008000" +/datum/reagent/blob/envenomed_filaments //toxin, hallucination, and some bonus spore toxin + name = "Envenomed Filaments" + id = "envenomed_filaments" + color = "#9ACD32" message_living = ", and you feel sick and nauseated" -/datum/reagent/blob/toxic_goop/reaction_mob(var/mob/living/M as mob, var/method=TOUCH, var/volume) +/datum/reagent/blob/envenomed_filaments/reaction_mob(mob/living/M, method=TOUCH, volume) if(method == TOUCH) - var/ratio = volume/25 - M.apply_damage(20*ratio, TOX) + volume = ..() + M.apply_damage(0.6*volume, TOX) + M.hallucination += 0.6*volume + M.reagents.add_reagent("spores", 0.4*volume) -/datum/reagent/blob/skin_ripper - name = "Skin Ripper" - id = "skin_ripper" - description = "" - color = "#FF4C4C" - message_living = ", and you feel your skin ripping and tearing off" - -/datum/reagent/blob/skin_ripper/reaction_mob(var/mob/living/M as mob, var/method=TOUCH, var/volume) - if(method == TOUCH) - var/ratio = volume/25 - M.apply_damage(20*ratio, BRUTE) - if(iscarbon(M)) - M.emote("scream") - -// Combo Reagents - -/datum/reagent/blob/skin_melter - name = "Skin Melter" - id = "skin_melter" - description = "" - color = "#7F0000" - message_living = ", and you feel your skin char and melt" - -/datum/reagent/blob/skin_melter/reaction_mob(var/mob/living/M as mob, var/method=TOUCH, var/volume) - if(method == TOUCH) - var/ratio = volume/25 - M.apply_damage(10*ratio, BRUTE) - M.apply_damage(10*ratio, BURN) - M.adjust_fire_stacks(2*ratio) - M.IgniteMob() - if(iscarbon(M)) - M.emote("scream") - -/datum/reagent/blob/lung_destroying_toxin - name = "Lung Destroying Toxin" - id = "lung_destroying_toxin" - description = "" +/datum/reagent/blob/lexorin_jelly //does tons of oxygen damage and a little brute + name = "Lexorin Jelly" + id = "lexorin_jelly" color = "#00FFC5" message_living = ", and your lungs feel heavy and weak" -/datum/reagent/blob/lung_destroying_toxin/reaction_mob(var/mob/living/M as mob, var/method=TOUCH, var/volume) +/datum/reagent/blob/lexorin_jelly/reaction_mob(mob/living/M, method=TOUCH, volume) if(method == TOUCH) - var/ratio = volume/25 - M.apply_damage(20* ratio, OXY) - M.losebreath += 15*ratio - M.apply_damage(20*ratio, TOX) + volume = ..() + M.apply_damage(0.4*volume, BRUTE) + M.apply_damage(1*volume, OXY) + M.losebreath += round(0.3*volume) -// Special Reagents -/datum/reagent/blob/radioactive_liquid - name = "Radioactive Liquid" - id = "radioactive_liquid" - description = "" - color = "#00EE00" - message_living = ", and your skin feels papery and everything hurts" +/datum/reagent/blob/kinetic //does semi-random brute damage + name = "Kinetic Gelatin" + id = "kinetic" + color = "#FFA500" + message = "The blob pummels you" -/datum/reagent/blob/radioactive_liquid/reaction_mob(var/mob/living/M as mob, var/method=TOUCH, var/volume) +/datum/reagent/blob/kinetic/reaction_mob(mob/living/M, method=TOUCH, volume) if(method == TOUCH) - var/ratio = volume/25 - M.apply_damage(10*ratio, BRUTE) - if(istype(M, /mob/living/carbon/human)) - M.apply_effect(40*ratio,IRRADIATE,0) - if(prob(33*ratio)) - randmuti(M) - if(prob(98)) - randmutb(M) - domutcheck(M, null) - M.UpdateAppearance() + volume = ..() + var/damage = rand(5, 35)/25 + M.apply_damage(damage*volume, BRUTE) + +/datum/reagent/blob/cryogenic_liquid //does low burn damage and stamina damage and cools targets down + name = "Cryogenic Liquid" + id = "cryogenic_liquid" + color = "#8BA6E9" + message = "The blob splashes you with an icy liquid" + message_living = ", and you feel cold and tired" + +/datum/reagent/blob/cryogenic_liquid/reaction_mob(mob/living/M, method=TOUCH, volume) + if(method == TOUCH) + volume = ..() + M.apply_damage(0.4*volume, BURN) + M.adjustStaminaLoss(0.4*volume) + M.reagents.add_reagent("frostoil", 0.4*volume) /datum/reagent/blob/dark_matter name = "Dark Matter" id = "dark_matter" - description = "" color = "#61407E" message = "You feel a thrum as the blob strikes you, and everything flies at you" /datum/reagent/blob/dark_matter/reaction_mob(var/mob/living/M as mob, var/method=TOUCH, var/volume) if(method == TOUCH) - var/ratio = volume/25 - M.apply_damage(15*ratio, BRUTE) - reagent_vortex(M, 0) + reagent_vortex(M, 0, volume) + volume = ..() + M.apply_damage(0.6*volume, BRUTE) /datum/reagent/blob/b_sorium name = "Sorium" id = "b_sorium" - description = "" color = "#808000" message = "The blob slams into you, and sends you flying" /datum/reagent/blob/b_sorium/reaction_mob(var/mob/living/M as mob, var/method=TOUCH, var/volume) if(method == TOUCH) - var/ratio = volume/25 - M.apply_damage(15*ratio, BRUTE) - reagent_vortex(M, 1) + reagent_vortex(M, 1, volume) + volume = ..() + M.apply_damage(0.6*volume, BRUTE) - -/datum/reagent/blob/explosive // I'm gonna burn in hell for this one - name = "Explosive Gelatin" - id = "explosive" - description = "" - color = "#FFA500" - message = "The blob strikes you, and its tendrils explode" - -/datum/reagent/blob/explosive/reaction_mob(var/mob/living/M as mob, var/method=TOUCH, var/volume) - if(method == TOUCH) - var/ratio = volume/25 - if(prob(75*ratio)) - explosion(M.loc, 0, 0, 1, 0, 0) - -/datum/reagent/blob/omnizine - name = "Omnizine" - id = "b_omnizine" - description = "" - color = "#C8A5DC" - message = "The blob squirts something at you" - message_living = ", and you feel great" - -/datum/reagent/blob/omnizine/reaction_mob(var/mob/living/M as mob, var/method=TOUCH, var/volume) - if(method == TOUCH) - var/ratio = volume/25 - M.reagents.add_reagent("omnizine", 11*ratio) - -/datum/reagent/blob/spacedrugs - name = "Space drugs" - id = "b_space_drugs" - description = "" - color = "#60A584" - message = "The blob squirts something at you" - message_living = ", and you feel funny" - -/datum/reagent/blob/spacedrugs/reaction_mob(var/mob/living/M as mob, var/method=TOUCH, var/volume) - if(method == TOUCH) - var/ratio = volume/25 - M.hallucination += 20*ratio - M.reagents.add_reagent("space_drugs", 15*ratio) - M.apply_damage(10*ratio, TOX) - - -/datum/reagent/blob/proc/reagent_vortex(var/mob/living/M as mob, var/setting_type) +/datum/reagent/blob/proc/reagent_vortex(mob/living/M, setting_type, volume) var/turf/pull = get_turf(M) - for(var/atom/movable/X in range(4,pull)) - if(istype(X, /atom/movable)) - if((X) && !X.anchored) - if(setting_type) - step_away(X,pull) - step_away(X,pull) - step_away(X,pull) - step_away(X,pull) + var/range_power = Clamp(round(volume/5, 1), 1, 5) + for(var/atom/movable/X in range(range_power,pull)) + if(istype(X, /obj/effect)) + continue + if(!X.anchored) + var/distance = get_dist(X, pull) + var/moving_power = max(range_power - distance, 1) + spawn(0) + if(moving_power > 2) //if the vortex is powerful and we're close, we get thrown + if(setting_type) + var/atom/throw_target = get_edge_target_turf(X, get_dir(X, get_step_away(X, pull))) + var/throw_range = 5 - distance + X.throw_at(throw_target, throw_range, 1) + else + X.throw_at(pull, distance, 1) else - X.throw_at(pull) + if(setting_type) + for(var/i = 0, i < moving_power, i++) + sleep(2) + if(!step_away(X, pull)) + break + else + for(var/i = 0, i < moving_power, i++) + sleep(2) + if(!step_towards(X, pull)) + break /datum/reagent/blob/proc/send_message(var/mob/living/M as mob) var/totalmessage = message diff --git a/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_slime.dm b/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_slime.dm index a1d8b033672..9d38b1ad599 100644 --- a/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_slime.dm +++ b/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_slime.dm @@ -214,11 +214,12 @@ on_reaction(var/datum/reagents/holder) for(var/mob/O in viewers(get_turf(holder.my_atom), null)) O.show_message(text("\red The slime extract begins to vibrate violently !"), 1) - sleep(50) - playsound(get_turf(holder.my_atom), 'sound/effects/phasein.ogg', 100, 1) - for(var/mob/living/M in range (get_turf(holder.my_atom), 7)) - M.bodytemperature -= 140 - M << "\blue You feel a chill!" + spawn(50) + if(holder && holder.my_atom) + playsound(get_turf(holder.my_atom), 'sound/effects/phasein.ogg', 100, 1) + for(var/mob/living/M in range (get_turf(holder.my_atom), 7)) + M.bodytemperature -= 140 + M << "\blue You feel a chill!" //Orange slimecasp @@ -242,10 +243,11 @@ feedback_add_details("slime_cores_used","[replacetext(name," ","_")]") for(var/mob/O in viewers(get_turf(holder.my_atom), null)) O.show_message(text("\red The slime extract begins to vibrate violently !"), 1) - sleep(50) - var/turf/simulated/T = get_turf(holder.my_atom) - if(istype(T)) - T.atmos_spawn_air(SPAWN_HEAT | SPAWN_TOXINS, 50) + spawn(50) + if(holder && holder.my_atom) + var/turf/simulated/T = get_turf(holder.my_atom) + if(istype(T)) + T.atmos_spawn_air(SPAWN_HEAT | SPAWN_TOXINS, 50) //Yellow slimeoverload @@ -387,8 +389,9 @@ on_reaction(var/datum/reagents/holder) for(var/mob/O in viewers(get_turf(holder.my_atom), null)) O.show_message(text("\red The slime extract begins to vibrate violently !"), 1) - sleep(50) - explosion(get_turf(holder.my_atom), 1 ,3, 6) + spawn(50) + if(holder && holder.my_atom) + explosion(get_turf(holder.my_atom), 1 ,3, 6) //Light Pink slimepotion2 name = "Slime Potion 2" diff --git a/code/modules/reagents/oldchem/reagents/_reagent_base.dm b/code/modules/reagents/oldchem/reagents/_reagent_base.dm index 2b2a94ee149..782f25d36cc 100644 --- a/code/modules/reagents/oldchem/reagents/_reagent_base.dm +++ b/code/modules/reagents/oldchem/reagents/_reagent_base.dm @@ -78,5 +78,6 @@ return /datum/reagent/Destroy() + ..() holder = null - return ..() \ No newline at end of file + return QDEL_HINT_QUEUE \ No newline at end of file diff --git a/code/modules/reagents/oldchem/reagents/reagents_toxin.dm b/code/modules/reagents/oldchem/reagents/reagents_toxin.dm index e338766553f..8e56b431ad1 100644 --- a/code/modules/reagents/oldchem/reagents/reagents_toxin.dm +++ b/code/modules/reagents/oldchem/reagents/reagents_toxin.dm @@ -405,7 +405,7 @@ color = "#9ACD32" /datum/reagent/spores/on_mob_life(var/mob/living/M as mob) - M.adjustToxLoss(0.5) + M.adjustToxLoss(1) M.damageoverlaytemp = 60 M.eye_blurry = max(M.eye_blurry, 3) ..() @@ -564,7 +564,7 @@ id = "frostoil" description = "A special oil that noticably chills the body. Extraced from Icepeppers." reagent_state = LIQUID - color = "#B31008" // rgb: 139, 166, 233 + color = "#8BA6E9" // rgb: 139, 166, 233 process_flags = ORGANIC | SYNTHETIC /datum/reagent/frostoil/on_mob_life(var/mob/living/M as mob) diff --git a/code/modules/reagents/reagent_containers/food/drinks.dm b/code/modules/reagents/reagent_containers/food/drinks.dm index 97c2693e439..375b30faeae 100644 --- a/code/modules/reagents/reagent_containers/food/drinks.dm +++ b/code/modules/reagents/reagent_containers/food/drinks.dm @@ -175,7 +175,7 @@ force = 14 throwforce = 10 amount_per_transfer_from_this = 20 - materials = list(MAT_GOLD=800) + materials = list(MAT_GOLD=1000) possible_transfer_amounts = null volume = 150 flags = CONDUCT | OPENCONTAINER @@ -358,14 +358,14 @@ name = "Captain's Flask" desc = "A metal flask belonging to the captain" icon_state = "flask" - materials = list(MAT_SILVER=300) + materials = list(MAT_SILVER=500) volume = 60 /obj/item/weapon/reagent_containers/food/drinks/flask/detflask name = "Detective's Flask" desc = "A metal flask with a leather band and golden badge belonging to the detective." icon_state = "detflask" - materials = list(MAT_METAL=200) + materials = list(MAT_METAL=250) volume = 60 /obj/item/weapon/reagent_containers/food/drinks/flask/barflask diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index 3ce13d94677..febd1a02a1d 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -26,7 +26,7 @@ Design Guidlines reliability_mod (starts at 0, gets improved through experimentation). Example: PACMAN generator. 79 base reliablity + 6 tech (3 plasmatech, 3 powerstorage) + 0 (since it's completely new) = 85% reliability. Reliability is the chance it works CORRECTLY. - When adding new designs, check rdreadme.dm to see what kind of things have already been made and where new stuff is needed. -- A single sheet of anything is 3750 units of material. Materials besides metal/glass require help from other jobs (mining for +- A single sheet of anything is 2000 units of material. Materials besides metal/glass require help from other jobs (mining for other types of metals and chemistry for reagents). - Add the AUTOLATHE tag to @@ -45,7 +45,7 @@ other types of metals and chemistry for reagents). var/build_path = "" //The file path of the object that gets created var/locked = 0 //If true it will spawn inside a lockbox with currently sec access var/category = null //Primarily used for Mech Fabricators, but can be used for anything - + var/reagents //A proc to calculate the reliability of a design based on tech levels and innate modifiers. //Input: A list of /datum/tech; Output: The new reliabilty. diff --git a/code/modules/research/designs/mechfabricator_designs.dm b/code/modules/research/designs/mechfabricator_designs.dm index 62acc4f884b..c3d48fdb88e 100644 --- a/code/modules/research/designs/mechfabricator_designs.dm +++ b/code/modules/research/designs/mechfabricator_designs.dm @@ -947,7 +947,7 @@ build_type = MECHFAB build_path = /obj/item/borg/upgrade/ddrill req_tech = list("engineering" = 5, "materials" = 5) - materials = list(MAT_METAL=10000, MAT_DIAMOND=3750) + materials = list(MAT_METAL=10000, MAT_DIAMOND=2000) construction_time = 120 category = list("Cyborg Upgrade Modules") diff --git a/code/modules/research/designs/mining_designs.dm b/code/modules/research/designs/mining_designs.dm index 1fc7a9075b6..9bf221cb5d5 100644 --- a/code/modules/research/designs/mining_designs.dm +++ b/code/modules/research/designs/mining_designs.dm @@ -7,7 +7,7 @@ id = "drill_diamond" req_tech = list("materials" = 6, "powerstorage" = 4, "engineering" = 4) build_type = PROTOLATHE - materials = list(MAT_METAL = 3000, MAT_GLASS = 1000, MAT_DIAMOND = 3750) //Yes, a whole diamond is needed. + materials = list(MAT_METAL = 3000, MAT_GLASS = 1000, MAT_DIAMOND = 2000) //Yes, a whole diamond is needed. reliability = 79 build_path = /obj/item/weapon/pickaxe/drill/diamonddrill category = list("Mining") diff --git a/code/modules/research/designs/weapon_designs.dm b/code/modules/research/designs/weapon_designs.dm index 55070af9374..c066808cecd 100644 --- a/code/modules/research/designs/weapon_designs.dm +++ b/code/modules/research/designs/weapon_designs.dm @@ -112,19 +112,19 @@ category = list("Weapons") /datum/design/smg - name = "Prototype Submachine Gun" + name = "Nanotrasen Saber SMG" desc = "A prototype weapon made using lightweight materials on a traditional frame, designed to fire standard 9mm rounds." id = "smg" req_tech = list("combat" = 4, "materials" = 3) build_type = PROTOLATHE materials = list(MAT_METAL = 8000, MAT_SILVER = 2000, MAT_DIAMOND = 1000) - build_path = /obj/item/weapon/gun/projectile/automatic + build_path = /obj/item/weapon/gun/projectile/automatic/proto locked = 1 category = list("Weapons") /datum/design/mag_smg - name = "Prototype Submachine Gun Magazine (9mm)" - desc = "A 20-round magazine for the prototype submachine gun." + name = "Saber Submachine Gun Magazine (9mm)" + desc = "A 20-round magazine for the Saber submachine gun." id = "mag_smg" req_tech = list("combat" = 4, "materials" = 3) build_type = PROTOLATHE diff --git a/code/modules/research/protolathe.dm b/code/modules/research/protolathe.dm index 4d07d25704d..d4348ffb505 100644 --- a/code/modules/research/protolathe.dm +++ b/code/modules/research/protolathe.dm @@ -13,15 +13,7 @@ Note: Must be placed west/left of and R&D console to function. icon_state = "protolathe" flags = OPENCONTAINER - var/max_material_storage = 100000 //All this could probably be done better with a list but meh. - var/m_amount = 0.0 - var/g_amount = 0.0 - var/gold_amount = 0.0 - var/silver_amount = 0.0 - var/plasma_amount = 0.0 - var/uranium_amount = 0.0 - var/diamond_amount = 0.0 - var/clown_amount = 0.0 + var/datum/material_container/materials var/efficiency_coeff var/list/categories = list( @@ -49,6 +41,7 @@ Note: Must be placed west/left of and R&D console to function. component_parts += new /obj/item/weapon/stock_parts/manipulator(null) component_parts += new /obj/item/weapon/reagent_containers/glass/beaker/large(null) component_parts += new /obj/item/weapon/reagent_containers/glass/beaker/large(null) + materials = new(src, list(MAT_METAL=1, MAT_GLASS=1, MAT_SILVER=1, MAT_GOLD=1, MAT_DIAMOND=1, MAT_PLASMA=1, MAT_URANIUM=1, MAT_BANANIUM=1)) RefreshParts() reagents.my_atom = src @@ -67,8 +60,9 @@ Note: Must be placed west/left of and R&D console to function. reagents.my_atom = src -/obj/machinery/r_n_d/protolathe/proc/TotalMaterials() //returns the total of all the stored materials. Makes code neater. - return m_amount + g_amount + gold_amount + silver_amount + plasma_amount + uranium_amount + diamond_amount + clown_amount +/obj/machinery/r_n_d/protolathe/Destroy() + qdel(materials) + return ..() /obj/machinery/r_n_d/protolathe/RefreshParts() var/T = 0 @@ -76,33 +70,16 @@ Note: Must be placed west/left of and R&D console to function. G.reagents.trans_to(src, G.reagents.total_volume) for(var/obj/item/weapon/stock_parts/matter_bin/M in component_parts) T += M.rating - max_material_storage = T * 75000 + materials.max_amount = T * 75000 T = 0 for(var/obj/item/weapon/stock_parts/manipulator/M in component_parts) T += (M.rating/3) efficiency_coeff = max(T, 1) /obj/machinery/r_n_d/protolathe/proc/check_mat(datum/design/being_built, var/M) // now returns how many times the item can be built with the material - var/A = 0 - switch(M) - if(MAT_METAL) - A = m_amount - if(MAT_GLASS) - A = g_amount - if(MAT_GOLD) - A = gold_amount - if(MAT_SILVER) - A = silver_amount - if(MAT_PLASMA) - A = plasma_amount - if(MAT_URANIUM) - A = uranium_amount - if(MAT_DIAMOND) - A = diamond_amount - if(MAT_BANANIUM) - A = clown_amount - else - A = reagents.get_reagent_amount(M) + var/A = materials.amount(M) + if(!A) + A = reagents.get_reagent_amount(M) A = A / max(1, (being_built.materials[M]/efficiency_coeff)) return A @@ -128,30 +105,7 @@ Note: Must be placed west/left of and R&D console to function. I.loc = src.loc for(var/obj/item/weapon/reagent_containers/glass/G in component_parts) reagents.trans_to(G, G.reagents.maximum_volume) - if(m_amount >= MINERAL_MATERIAL_AMOUNT) - var/obj/item/stack/sheet/metal/G = new /obj/item/stack/sheet/metal(src.loc) - G.amount = round(m_amount / G.perunit) - if(g_amount >= MINERAL_MATERIAL_AMOUNT) - var/obj/item/stack/sheet/glass/G = new /obj/item/stack/sheet/glass(src.loc) - G.amount = round(g_amount / G.perunit) - if(plasma_amount >= MINERAL_MATERIAL_AMOUNT) - var/obj/item/stack/sheet/mineral/plasma/G = new /obj/item/stack/sheet/mineral/plasma(src.loc) - G.amount = round(plasma_amount / G.perunit) - if(silver_amount >= MINERAL_MATERIAL_AMOUNT) - var/obj/item/stack/sheet/mineral/silver/G = new /obj/item/stack/sheet/mineral/silver(src.loc) - G.amount = round(silver_amount / G.perunit) - if(gold_amount >= MINERAL_MATERIAL_AMOUNT) - var/obj/item/stack/sheet/mineral/gold/G = new /obj/item/stack/sheet/mineral/gold(src.loc) - G.amount = round(gold_amount / G.perunit) - if(uranium_amount >= MINERAL_MATERIAL_AMOUNT) - var/obj/item/stack/sheet/mineral/uranium/G = new /obj/item/stack/sheet/mineral/uranium(src.loc) - G.amount = round(uranium_amount / G.perunit) - if(diamond_amount >= MINERAL_MATERIAL_AMOUNT) - var/obj/item/stack/sheet/mineral/diamond/G = new /obj/item/stack/sheet/mineral/diamond(src.loc) - G.amount = round(diamond_amount / G.perunit) - if(clown_amount >= MINERAL_MATERIAL_AMOUNT) - var/obj/item/stack/sheet/mineral/bananium/G = new /obj/item/stack/sheet/mineral/bananium(src.loc) - G.amount = round(clown_amount / G.perunit) + materials.retrieve_all() default_deconstruction_crowbar(O) return 1 else @@ -167,55 +121,29 @@ Note: Must be placed west/left of and R&D console to function. return 1 if (O.is_open_container()) return - if (!istype(O, /obj/item/stack/sheet) || istype(O, /obj/item/stack/sheet/wood)) - user << "You cannot insert this item into the [src.name]!" - return 1 if (stat) return 1 - if(istype(O,/obj/item/stack/sheet)) - var/obj/item/stack/sheet/S = O - if (TotalMaterials() + S.perunit > max_material_storage) - user << "The [src.name]'s material bin is full. Please remove material before adding more." - return 1 + if(!istype(O,/obj/item/stack/sheet)) + return 1 + + if(!materials.has_space( materials.get_item_material_amount(O) )) + user << "The [src.name]'s material bin is full! Please remove material before adding more." + return 1 var/obj/item/stack/sheet/stack = O var/amount = round(input("How many sheets do you want to add?") as num)//No decimals - if(!stack || stack.amount <= 0 || amount <= 0) + if(!in_range(src, stack) || !user.Adjacent(src)) return - if(amount > stack.amount) - amount = stack.amount - if(max_material_storage - TotalMaterials() < (amount*stack.perunit))//Can't overfill - amount = min(stack.amount, round((max_material_storage-TotalMaterials())/stack.perunit)) - - icon_state = "protolathe" - busy = 1 - use_power(max(1000, (MINERAL_MATERIAL_AMOUNT*amount/10))) - user << "You add [amount] sheets to the [src.name]." - icon_state = "protolathe" - if(istype(stack, /obj/item/stack/sheet/metal)) - m_amount += amount * MINERAL_MATERIAL_AMOUNT - else if(istype(stack, /obj/item/stack/sheet/glass)) - g_amount += amount * MINERAL_MATERIAL_AMOUNT - else if(istype(stack, /obj/item/stack/sheet/mineral/gold)) - gold_amount += amount * MINERAL_MATERIAL_AMOUNT - else if(istype(stack, /obj/item/stack/sheet/mineral/silver)) - silver_amount += amount * MINERAL_MATERIAL_AMOUNT - else if(istype(stack, /obj/item/stack/sheet/mineral/plasma)) - plasma_amount += amount * MINERAL_MATERIAL_AMOUNT - else if(istype(stack, /obj/item/stack/sheet/mineral/uranium)) - uranium_amount += amount * MINERAL_MATERIAL_AMOUNT - else if(istype(stack, /obj/item/stack/sheet/mineral/diamond)) - diamond_amount += amount * MINERAL_MATERIAL_AMOUNT - else if(istype(stack, /obj/item/stack/sheet/mineral/bananium)) - clown_amount += amount * MINERAL_MATERIAL_AMOUNT - stack.use(amount) - busy = 0 - src.updateUsrDialog() - - if(stack) + var/amount_inserted = materials.insert_stack(O,amount) + if(!amount_inserted) + return 1 + else + busy = 1 + use_power(max(1000, (MINERAL_MATERIAL_AMOUNT*amount_inserted/10))) + user << "You add [amount_inserted] sheets to the [src.name]." var/stackname = stack.name src.overlays += "protolathe_[stackname]" sleep(10) src.overlays -= "protolathe_[stackname]" - - return + busy = 0 + updateUsrDialog() \ No newline at end of file diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index ff498b9f511..db5790d643c 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -297,8 +297,8 @@ won't update every console in existence) but it's more of a hassle to do. Also, else //Same design always gain quality screen = 2.3 //Crit fail gives the same design a lot of reliability, like really a lot if(linked_lathe) //Also sends salvaged materials to a linked protolathe, if any. - linked_lathe.m_amount += min((linked_lathe.max_material_storage - linked_lathe.TotalMaterials()), (linked_destroy.loaded_item.materials[MAT_METAL]*(linked_destroy.decon_mod/10))) - linked_lathe.g_amount += min((linked_lathe.max_material_storage - linked_lathe.TotalMaterials()), (linked_destroy.loaded_item.materials[MAT_GLASS]*(linked_destroy.decon_mod/10))) + for(var/material in linked_destroy.loaded_item.materials) + linked_lathe.materials.insert_amount(min((linked_lathe.materials.max_amount - linked_lathe.materials.total_amount), (linked_destroy.loaded_item.materials[material]*(linked_destroy.decon_mod/10))), material) linked_destroy.loaded_item = null else screen = 1.0 @@ -397,33 +397,17 @@ won't update every console in existence) but it's more of a hassle to do. Also, flick("protolathe_n",linked_lathe) use_power(power) - for(var/M in being_built.materials) - if(linked_lathe.check_mat(being_built, M) < amount) - src.visible_message("The [src.name] beeps, \"Not enough materials to complete prototype.\"") - enough_materials = 0 - g2g = 0 - break + var/list/efficient_mats = list() + for(var/MAT in being_built.materials) + efficient_mats[MAT] = being_built.materials[MAT] / coeff + + if(!linked_lathe.materials.has_materials(efficient_mats, amount)) + src.visible_message("The [src.name] beeps, \"Not enough materials to complete prototype.\"") + enough_materials = 0 + g2g = 0 + if(enough_materials) - for(var/M in being_built.materials) - switch(M) - if(MAT_METAL) - linked_lathe.m_amount = max(0, (linked_lathe.m_amount-(being_built.materials[M]/coeff * amount))) - if(MAT_GLASS) - linked_lathe.g_amount = max(0, (linked_lathe.g_amount-(being_built.materials[M]/coeff * amount))) - if(MAT_GOLD) - linked_lathe.gold_amount = max(0, (linked_lathe.gold_amount-(being_built.materials[M]/coeff * amount))) - if(MAT_SILVER) - linked_lathe.silver_amount = max(0, (linked_lathe.silver_amount-(being_built.materials[M]/coeff * amount))) - if(MAT_PLASMA) - linked_lathe.plasma_amount = max(0, (linked_lathe.plasma_amount-(being_built.materials[M]/coeff * amount))) - if(MAT_URANIUM) - linked_lathe.uranium_amount = max(0, (linked_lathe.uranium_amount-(being_built.materials[M]/coeff * amount))) - if(MAT_DIAMOND) - linked_lathe.diamond_amount = max(0, (linked_lathe.diamond_amount-(being_built.materials[M]/coeff * amount))) - if(MAT_BANANIUM) - linked_lathe.clown_amount = max(0, (linked_lathe.clown_amount-(being_built.materials[M]/coeff * amount))) - else - linked_lathe.reagents.remove_reagent(M, being_built.materials[M]/coeff * amount) + linked_lathe.materials.use_amount(efficient_mats, amount) var/P = being_built.build_path //lets save these values before the spawn() just in case. Nobody likes runtimes. var/O = being_built.locked @@ -513,40 +497,26 @@ won't update every console in existence) but it's more of a hassle to do. Also, else if(href_list["lathe_ejectsheet"] && linked_lathe) //Causes the protolathe to eject a sheet of material var/desired_num_sheets = text2num(href_list["lathe_ejectsheet_amt"]) - var/res_amount, type + var/MAT switch(href_list["lathe_ejectsheet"]) if("metal") - type = /obj/item/stack/sheet/metal - res_amount = "m_amount" + MAT = MAT_METAL if("glass") - type = /obj/item/stack/sheet/glass - res_amount = "g_amount" + MAT = MAT_GLASS if("gold") - type = /obj/item/stack/sheet/mineral/gold - res_amount = "gold_amount" + MAT = MAT_GOLD if("silver") - type = /obj/item/stack/sheet/mineral/silver - res_amount = "silver_amount" + MAT = MAT_SILVER if("plasma") - type = /obj/item/stack/sheet/mineral/plasma - res_amount = "plasma_amount" + MAT = MAT_PLASMA if("uranium") - type = /obj/item/stack/sheet/mineral/uranium - res_amount = "uranium_amount" + MAT = MAT_URANIUM if("diamond") - type = /obj/item/stack/sheet/mineral/diamond - res_amount = "diamond_amount" + MAT = MAT_DIAMOND if("clown") - type = /obj/item/stack/sheet/mineral/bananium - res_amount = "clown_amount" - if(ispath(type) && hasvar(linked_lathe, res_amount)) - var/obj/item/stack/sheet/sheet = new type(linked_lathe.loc) - var/available_num_sheets = round(linked_lathe.vars[res_amount]/sheet.perunit) - if(available_num_sheets>0) - sheet.amount = min(available_num_sheets, desired_num_sheets) - linked_lathe.vars[res_amount] = max(0, (linked_lathe.vars[res_amount]-sheet.amount * sheet.perunit)) - else - qdel(sheet) + MAT = MAT_BANANIUM + linked_lathe.materials.retrieve_sheets(desired_num_sheets, MAT) + else if(href_list["imprinter_ejectsheet"] && linked_imprinter) //Causes the protolathe to eject a sheet of material var/desired_num_sheets = text2num(href_list["imprinter_ejectsheet_amt"]) var/res_amount, type @@ -836,7 +806,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, dat += "Material Storage" dat += "Chemical Storage
" dat += "

Protolathe Menu:


" - dat += "Material Amount: [linked_lathe.TotalMaterials()] / [linked_lathe.max_material_storage]
" + dat += "Material Amount: [linked_lathe.materials.total_amount] / [linked_lathe.materials.max_amount]
" dat += "Chemical Volume: [linked_lathe.reagents.total_volume] / [linked_lathe.reagents.maximum_volume]
" dat += "
\ @@ -854,7 +824,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, dat += "Main Menu" dat += "Protolathe Menu" dat += "

Browsing [selected_category]:


" - dat += "Material Amount: [linked_lathe.TotalMaterials()] / [linked_lathe.max_material_storage]
" + dat += "Material Amount: [linked_lathe.materials.total_amount] / [linked_lathe.materials.max_amount]
" dat += "Chemical Volume: [linked_lathe.reagents.total_volume] / [linked_lathe.reagents.maximum_volume]
" var/coeff = linked_lathe.efficiency_coeff @@ -891,7 +861,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, dat += "Main Menu" dat += "Protolathe Menu" dat += "

Search results:


" - dat += "Material Amount: [linked_lathe.TotalMaterials()] / [linked_lathe.max_material_storage]
" + dat += "Material Amount: [linked_lathe.materials.total_amount] / [linked_lathe.materials.max_amount]
" dat += "Chemical Volume: [linked_lathe.reagents.total_volume] / [linked_lathe.reagents.maximum_volume]
" var/coeff = linked_lathe.efficiency_coeff @@ -925,52 +895,60 @@ won't update every console in existence) but it's more of a hassle to do. Also, dat += "Protolathe Menu
" dat += "

Material Storage:



" //Metal - dat += "* [linked_lathe.m_amount] of Metal: " - if(linked_lathe.m_amount >= 3750) dat += "Eject " - if(linked_lathe.m_amount >= 18750) dat += "5x " - if(linked_lathe.m_amount >= 3750) dat += "All" + var/m_amount = linked_lathe.materials.amount(MAT_METAL) + dat += "* [m_amount] of Metal: " + if(m_amount >= MINERAL_MATERIAL_AMOUNT) dat += "Eject " + if(m_amount >= MINERAL_MATERIAL_AMOUNT*5) dat += "5x " + if(m_amount >= MINERAL_MATERIAL_AMOUNT) dat += "All" dat += "
" //Glass - dat += "* [linked_lathe.g_amount] of Glass: " - if(linked_lathe.g_amount >= 3750) dat += "Eject " - if(linked_lathe.g_amount >= 18750) dat += "5x " - if(linked_lathe.g_amount >= 3750) dat += "All" + var/g_amount = linked_lathe.materials.amount(MAT_GLASS) + dat += "* [g_amount] of Glass: " + if(g_amount >= MINERAL_MATERIAL_AMOUNT) dat += "Eject " + if(g_amount >= MINERAL_MATERIAL_AMOUNT*5) dat += "5x " + if(g_amount >= MINERAL_MATERIAL_AMOUNT) dat += "All" dat += "
" //Gold - dat += "* [linked_lathe.gold_amount] of Gold: " - if(linked_lathe.gold_amount >= 2000) dat += "Eject " - if(linked_lathe.gold_amount >= 10000) dat += "5x " - if(linked_lathe.gold_amount >= 2000) dat += "All" + var/gold_amount = linked_lathe.materials.amount(MAT_GOLD) + dat += "* [gold_amount] of Gold: " + if(gold_amount >= MINERAL_MATERIAL_AMOUNT) dat += "Eject " + if(gold_amount >= MINERAL_MATERIAL_AMOUNT*5) dat += "5x " + if(gold_amount >= MINERAL_MATERIAL_AMOUNT) dat += "All" dat += "
" //Silver - dat += "* [linked_lathe.silver_amount] of Silver: " - if(linked_lathe.silver_amount >= 2000) dat += "Eject " - if(linked_lathe.silver_amount >= 10000) dat += "5x " - if(linked_lathe.silver_amount >= 2000) dat += "All" + var/silver_amount = linked_lathe.materials.amount(MAT_SILVER) + dat += "* [silver_amount] of Silver: " + if(silver_amount >= MINERAL_MATERIAL_AMOUNT) dat += "Eject " + if(silver_amount >= MINERAL_MATERIAL_AMOUNT*5) dat += "5x " + if(silver_amount >= MINERAL_MATERIAL_AMOUNT) dat += "All" dat += "
" //Plasma - dat += "* [linked_lathe.plasma_amount] of Solid Plasma: " - if(linked_lathe.plasma_amount >= 2000) dat += "Eject " - if(linked_lathe.plasma_amount >= 10000) dat += "5x " - if(linked_lathe.plasma_amount >= 2000) dat += "All" + var/plasma_amount = linked_lathe.materials.amount(MAT_PLASMA) + dat += "* [plasma_amount] of Solid Plasma: " + if(plasma_amount >= MINERAL_MATERIAL_AMOUNT) dat += "Eject " + if(plasma_amount >= MINERAL_MATERIAL_AMOUNT*5) dat += "5x " + if(plasma_amount >= MINERAL_MATERIAL_AMOUNT) dat += "All" dat += "
" //Uranium - dat += "* [linked_lathe.uranium_amount] of Uranium: " - if(linked_lathe.uranium_amount >= 2000) dat += "Eject " - if(linked_lathe.uranium_amount >= 10000) dat += "5x " - if(linked_lathe.uranium_amount >= 2000) dat += "All" + var/uranium_amount = linked_lathe.materials.amount(MAT_URANIUM) + dat += "* [uranium_amount] of Uranium: " + if(uranium_amount >= MINERAL_MATERIAL_AMOUNT) dat += "Eject " + if(uranium_amount >= MINERAL_MATERIAL_AMOUNT*5) dat += "5x " + if(uranium_amount >= MINERAL_MATERIAL_AMOUNT) dat += "All" dat += "
" //Diamond - dat += "* [linked_lathe.diamond_amount] of Diamond: " - if(linked_lathe.diamond_amount >= 2000) dat += "Eject " - if(linked_lathe.diamond_amount >= 10000) dat += "5x " - if(linked_lathe.diamond_amount >= 2000) dat += "All" + var/diamond_amount = linked_lathe.materials.amount(MAT_DIAMOND) + dat += "* [diamond_amount] of Diamond: " + if(diamond_amount >= MINERAL_MATERIAL_AMOUNT) dat += "Eject " + if(diamond_amount >= MINERAL_MATERIAL_AMOUNT*5) dat += "5x " + if(diamond_amount >= MINERAL_MATERIAL_AMOUNT) dat += "All" dat += "
" //Bananium - dat += "* [linked_lathe.clown_amount] of Bananium: " - if(linked_lathe.clown_amount >= 2000) dat += "Eject " - if(linked_lathe.clown_amount >= 10000) dat += "5x " - if(linked_lathe.clown_amount >= 2000) dat += "All" + var/bananium_amount = linked_lathe.materials.amount(MAT_BANANIUM) + dat += "* [bananium_amount] of Bananium: " + if(bananium_amount >= MINERAL_MATERIAL_AMOUNT) dat += "Eject " + if(bananium_amount >= MINERAL_MATERIAL_AMOUNT*5) dat += "5x " + if(bananium_amount >= MINERAL_MATERIAL_AMOUNT) dat += "All" dat += "
" if(3.3) @@ -1072,21 +1050,21 @@ won't update every console in existence) but it's more of a hassle to do. Also, dat += "

Material Storage:



" //Glass dat += "* [linked_imprinter.g_amount] glass: " - if(linked_imprinter.g_amount >= 3750) dat += "Eject " - if(linked_imprinter.g_amount >= 18750) dat += "5x " - if(linked_imprinter.g_amount >= 3750) dat += "All" + if(linked_imprinter.g_amount >= MINERAL_MATERIAL_AMOUNT) dat += "Eject " + if(linked_imprinter.g_amount >= MINERAL_MATERIAL_AMOUNT*5) dat += "5x " + if(linked_imprinter.g_amount >= MINERAL_MATERIAL_AMOUNT) dat += "All" dat += "
" //Gold dat += "* [linked_imprinter.gold_amount] gold: " - if(linked_imprinter.gold_amount >= 2000) dat += "Eject " - if(linked_imprinter.gold_amount >= 10000) dat += "5x " - if(linked_imprinter.gold_amount >= 2000) dat += "All" + if(linked_imprinter.gold_amount >= MINERAL_MATERIAL_AMOUNT) dat += "Eject " + if(linked_imprinter.gold_amount >= MINERAL_MATERIAL_AMOUNT*5) dat += "5x " + if(linked_imprinter.gold_amount >= MINERAL_MATERIAL_AMOUNT) dat += "All" dat += "
" //Diamond dat += "* [linked_imprinter.diamond_amount] diamond: " - if(linked_imprinter.diamond_amount >= 2000) dat += "Eject " - if(linked_imprinter.diamond_amount >= 10000) dat += "5x " - if(linked_imprinter.diamond_amount >= 2000) dat += "All" + if(linked_imprinter.diamond_amount >= MINERAL_MATERIAL_AMOUNT) dat += "Eject " + if(linked_imprinter.diamond_amount >= MINERAL_MATERIAL_AMOUNT*5) dat += "5x " + if(linked_imprinter.diamond_amount >= MINERAL_MATERIAL_AMOUNT) dat += "All" dat += "
" var/datum/browser/popup = new(user, "rndconsole", name, 700, 550) diff --git a/icons/mob/back.dmi b/icons/mob/back.dmi index a5931466e9a..d94b0af256f 100644 Binary files a/icons/mob/back.dmi and b/icons/mob/back.dmi differ diff --git a/icons/mob/hands.dmi b/icons/mob/hands.dmi index 7f27823e9a6..ca38284b11c 100644 Binary files a/icons/mob/hands.dmi and b/icons/mob/hands.dmi differ diff --git a/icons/mob/species/vox/gloves.dmi b/icons/mob/species/vox/gloves.dmi index c3d1b6a5603..c12466ee543 100644 Binary files a/icons/mob/species/vox/gloves.dmi and b/icons/mob/species/vox/gloves.dmi differ diff --git a/icons/mob/species/vox/shoes.dmi b/icons/mob/species/vox/shoes.dmi index 8aaf18114b2..76984ed3ffc 100644 Binary files a/icons/mob/species/vox/shoes.dmi and b/icons/mob/species/vox/shoes.dmi differ diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi index bdc4de8da2b..7aa0bd96a1b 100644 Binary files a/icons/mob/suit.dmi and b/icons/mob/suit.dmi differ diff --git a/icons/mob/uniform.dmi b/icons/mob/uniform.dmi index 7d3c63af612..b74fd8ffb13 100644 Binary files a/icons/mob/uniform.dmi and b/icons/mob/uniform.dmi differ diff --git a/icons/obj/ammo.dmi b/icons/obj/ammo.dmi index 8a7c4b5d8bb..5f1b810bff1 100644 Binary files a/icons/obj/ammo.dmi and b/icons/obj/ammo.dmi differ diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi index 42b7407d87f..8db68ca02cf 100644 Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ diff --git a/icons/obj/clothing/uniforms.dmi b/icons/obj/clothing/uniforms.dmi index bcaca6e730c..3469a6e7e92 100644 Binary files a/icons/obj/clothing/uniforms.dmi and b/icons/obj/clothing/uniforms.dmi differ diff --git a/icons/obj/gun.dmi b/icons/obj/gun.dmi index b4c71af21d6..1d696cf70e7 100644 Binary files a/icons/obj/gun.dmi and b/icons/obj/gun.dmi differ diff --git a/icons/obj/items.dmi b/icons/obj/items.dmi index 819ce7883e4..09ae246998e 100644 Binary files a/icons/obj/items.dmi and b/icons/obj/items.dmi differ diff --git a/icons/obj/vending.dmi b/icons/obj/vending.dmi index 15427f2a183..430f54c44d9 100755 Binary files a/icons/obj/vending.dmi and b/icons/obj/vending.dmi differ diff --git a/nano/templates/accounts_terminal.tmpl b/nano/templates/accounts_terminal.tmpl index 7397eda8ad5..5722383aa84 100644 --- a/nano/templates/accounts_terminal.tmpl +++ b/nano/templates/accounts_terminal.tmpl @@ -23,9 +23,35 @@ {{:helper.link('New Account', 'gear', {'choice' : 'create_account'}, data.creating_new_account ? 'disabled' : null, 'fixedLeft')}} {{:helper.link('Print', 'print', {'choice' : 'print'}, data.creating_new_account ? 'disabled' : null, 'fixedLeft')}} + {{if data.creating_new_account}} +
+

Create Account

+
- - {{if data.detailed_account_view}} + + + +
+
+ Account Holder: +
+
+ +
+
+
+
+ Initial Deposit: +
+
+ +
+
+
+ +
+ + {{else data.detailed_account_view}}

Account Details

@@ -100,7 +126,6 @@ {{/if}}
{{else}} -

Nanotrasen Accounts

diff --git a/paradise.dme b/paradise.dme index 12deff3c44e..1100195b20e 100644 --- a/paradise.dme +++ b/paradise.dme @@ -1462,6 +1462,7 @@ #include "code\modules\mob\living\simple_animal\hostile\tree.dm" #include "code\modules\mob\living\simple_animal\hostile\retaliate\clown.dm" #include "code\modules\mob\living\simple_animal\hostile\retaliate\drone.dm" +#include "code\modules\mob\living\simple_animal\hostile\retaliate\pet.dm" #include "code\modules\mob\living\simple_animal\hostile\retaliate\retaliate.dm" #include "code\modules\mob\living\simple_animal\hostile\retaliate\undead.dm" #include "code\modules\mob\living\simple_animal\revenant\revenant.dm"