From f2611af3d802d57d7141ce05469d7aeeef56c742 Mon Sep 17 00:00:00 2001 From: fj45 Date: Wed, 4 Mar 2015 18:06:34 +0800 Subject: [PATCH 01/27] Removes Art storage, Revamps Port Emergency Storage All items from art storage have been moved into the dorm area and emergency storage is now much bigger and has a few extra bits of equipment. --- maps/cyberiad.dmm | 81 ++++++++++++++++++++++------------------------- 1 file changed, 37 insertions(+), 44 deletions(-) diff --git a/maps/cyberiad.dmm b/maps/cyberiad.dmm index 07a8e6e722e..7a6303af36c 100644 --- a/maps/cyberiad.dmm +++ b/maps/cyberiad.dmm @@ -2381,12 +2381,12 @@ "aTO" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor,/area/hallway/primary/port) "aTP" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/hallway/primary/port) "aTQ" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/hallway/primary/port) -"aTR" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor,/area/hallway/primary/port) +"aTR" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/port) "aTS" = (/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,/area/hallway/primary/port) -"aTT" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{level = 1},/turf/simulated/floor,/area/hallway/primary/port) -"aTU" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/turf/simulated/floor,/area/hallway/primary/port) +"aTT" = (/obj/structure/table,/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/item/device/camera_film,/obj/item/device/camera,/turf/simulated/floor,/area/hallway/primary/port) +"aTU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/airlock{name = "Port Emergency Storage"; req_access_txt = "0"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating,/area/storage/emergency2) "aTV" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/hallway/primary/port) -"aTW" = (/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/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/hallway/primary/port) +"aTW" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/hallway/primary/port) "aTX" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{level = 1},/turf/simulated/floor,/area/hallway/primary/port) "aTY" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor,/area/hallway/primary/port) "aTZ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/hallway/primary/central/nw) @@ -2461,10 +2461,10 @@ "aVq" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor,/area/hallway/primary/port) "aVr" = (/obj/structure/disposalpipe/junction{tag = "icon-pipe-j2 (EAST)"; icon_state = "pipe-j2"; dir = 4},/turf/simulated/floor,/area/hallway/primary/port) "aVs" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/turf/simulated/floor,/area/hallway/primary/port) -"aVt" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/hallway/primary/port) -"aVu" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/hallway/primary/port) +"aVt" = (/obj/structure/grille,/turf/simulated/floor/plating,/area/storage/emergency2) +"aVu" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating,/area/storage/emergency2) "aVv" = (/obj/machinery/light,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/camera{c_tag = "Port Hallway"; dir = 1},/turf/simulated/floor,/area/hallway/primary/port) -"aVw" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/primary/port) +"aVw" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/simulated/floor/plating,/area/maintenance/port) "aVx" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor,/area/hallway/primary/port) "aVy" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor,/area/hallway/primary/port) "aVz" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/hallway/primary/port) @@ -2533,12 +2533,12 @@ "aWK" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/port) "aWL" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/turf/simulated/floor,/area/crew_quarters/locker) "aWM" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/crew_quarters/locker) -"aWN" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/storage/art) -"aWO" = (/obj/machinery/door/airlock/glass{name = "Art Storage"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/storage/art) -"aWP" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/port) +"aWN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plating,/area/storage/emergency2) +"aWO" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/structure/table,/obj/item/weapon/storage/box/lights/mixed,/obj/item/weapon/storage/toolbox/emergency,/turf/simulated/floor/plating,/area/storage/emergency2) +"aWP" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/storage/emergency2) "aWQ" = (/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/hallway/primary/port) "aWR" = (/obj/structure/table,/turf/simulated/floor,/area/hallway/primary/port) -"aWS" = (/obj/structure/table,/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor,/area/hallway/primary/port) +"aWS" = (/obj/machinery/light_switch{pixel_y = 28},/obj/item/device/flashlight/flare,/turf/simulated/floor/plating,/area/storage/emergency2) "aWT" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/structure/closet/emcloset,/turf/simulated/floor,/area/hallway/primary/port) "aWU" = (/obj/structure/closet/emcloset,/turf/simulated/floor,/area/hallway/primary/port) "aWV" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atm{pixel_x = 24},/turf/simulated/floor,/area/hallway/primary/port) @@ -2628,12 +2628,12 @@ "aYB" = (/obj/machinery/vending/hatdispenser,/turf/simulated/floor,/area/crew_quarters/locker) "aYC" = (/obj/machinery/vending/suitdispenser,/turf/simulated/floor,/area/crew_quarters/locker) "aYD" = (/obj/machinery/vending/shoedispenser,/turf/simulated/floor,/area/crew_quarters/locker) -"aYE" = (/turf/simulated/wall,/area/storage/art) -"aYF" = (/obj/structure/table,/obj/item/stack/cable_coil/random,/obj/item/stack/cable_coil/random,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor,/area/storage/art) -"aYG" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor,/area/storage/art) -"aYH" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/storage/art) -"aYI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/port) -"aYJ" = (/obj/machinery/door/airlock{name = "Port Emergency Storage"; req_access_txt = "0"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/storage/emergency2) +"aYE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/effect/decal/warning_stripes/red/partial,/turf/simulated/floor/plating,/area/storage/emergency2) +"aYF" = (/obj/structure/grille,/turf/simulated/floor/plating,/area/maintenance/port) +"aYG" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor,/area/hallway/primary/port) +"aYH" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor,/area/hallway/primary/port) +"aYI" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor,/area/hallway/primary/port) +"aYJ" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/item/weapon/storage/fancy/crayons,/obj/item/weapon/storage/fancy/crayons,/obj/item/weapon/hand_labeler,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/crew_quarters/locker) "aYK" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/storage/tools) "aYL" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Auxiliary Tool Storage"; req_access_txt = "12"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/storage/tools) "aYM" = (/turf/simulated/wall,/area/storage/tools) @@ -2697,14 +2697,14 @@ "aZS" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/port) "aZT" = (/obj/structure/closet/wardrobe/mixed,/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -27},/turf/simulated/floor,/area/crew_quarters/locker) "aZU" = (/obj/effect/landmark{name = "lightsout"},/turf/simulated/floor,/area/crew_quarters/locker) -"aZV" = (/obj/structure/table,/obj/item/stack/cable_coil/random,/obj/item/stack/cable_coil/random,/turf/simulated/floor,/area/storage/art) -"aZW" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/storage/art) -"aZX" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor,/area/storage/art) +"aZV" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall,/area/storage/emergency2) +"aZW" = (/obj/structure/table,/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/item/stack/cable_coil/random,/obj/item/stack/cable_coil/random,/obj/item/stack/cable_coil/random,/obj/item/stack/cable_coil/random,/turf/simulated/floor,/area/crew_quarters/locker) +"aZX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/light/small,/turf/simulated/floor/plating,/area/storage/emergency2) "aZY" = (/turf/simulated/wall,/area/storage/emergency2) -"aZZ" = (/obj/machinery/light_switch{pixel_y = 28},/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor/plating,/area/storage/emergency2) -"baa" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/storage/emergency2) +"aZZ" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/extinguisher,/obj/item/weapon/extinguisher,/obj/item/weapon/extinguisher,/turf/simulated/floor/plating,/area/storage/emergency2) +"baa" = (/obj/machinery/portable_atmospherics/canister/air,/obj/effect/decal/warning_stripes/white/hollow,/turf/simulated/floor/plating,/area/storage/emergency2) "bab" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/storage/emergency2) -"bac" = (/obj/item/weapon/extinguisher,/turf/simulated/floor/plating,/area/storage/emergency2) +"bac" = (/obj/machinery/light/small,/turf/simulated/floor/plating,/area/storage/emergency2) "bad" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/machinery/camera{c_tag = "Auxiliary Tool Storage"; dir = 2},/obj/structure/cable{d2 = 4; icon_state = "0-4"},/turf/simulated/floor,/area/storage/tools) "bae" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor,/area/storage/tools) "baf" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor,/area/storage/tools) @@ -2773,11 +2773,9 @@ "bbq" = (/obj/structure/table,/turf/simulated/floor,/area/crew_quarters/locker) "bbr" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/crew_quarters/locker) "bbs" = (/obj/structure/closet/secure_closet/personal,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/camera{c_tag = "Locker Room East"; dir = 8; network = list("SS13")},/obj/machinery/light{dir = 4},/turf/simulated/floor,/area/crew_quarters/locker) -"bbt" = (/obj/structure/table,/obj/item/weapon/hand_labeler,/turf/simulated/floor,/area/storage/art) -"bbu" = (/obj/structure/table,/obj/item/weapon/storage/fancy/crayons,/obj/item/weapon/storage/fancy/crayons,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor,/area/storage/art) -"bbv" = (/obj/structure/table,/obj/item/device/camera_film,/obj/item/device/camera,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1},/turf/simulated/floor,/area/storage/art) -"bbw" = (/obj/machinery/portable_atmospherics/canister/air,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor/plating,/area/storage/emergency2) -"bbx" = (/obj/machinery/light/small,/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/storage/emergency2) +"bbt" = (/turf/simulated/floor/plating,/area/storage/emergency2) +"bbu" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light/small{dir = 4},/obj/effect/decal/cleanable/blood/oil,/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/maintenance/port) +"bbv" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5; icon_state = "intact"},/obj/structure/closet/hydrant{pixel_x = -33},/obj/effect/decal/warning_stripes/red/partial,/turf/simulated/floor/plating,/area/maintenance/asmaint2) "bby" = (/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/storage/emergency2) "bbz" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/turf/simulated/floor/plating,/area/storage/emergency2) "bbA" = (/obj/structure/extinguisher_cabinet{pixel_x = -24},/turf/simulated/floor,/area/storage/tools) @@ -2857,7 +2855,6 @@ "bcW" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/port) "bcX" = (/obj/structure/closet/wardrobe/grey,/obj/machinery/requests_console{department = "Locker Room"; pixel_x = -32; pixel_y = 0},/turf/simulated/floor,/area/crew_quarters/locker) "bcY" = (/obj/structure/table,/obj/item/clothing/head/soft/grey{pixel_x = -2; pixel_y = 3},/turf/simulated/floor,/area/crew_quarters/locker) -"bcZ" = (/obj/structure/table,/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/crew_quarters/locker) "bda" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1},/turf/simulated/floor,/area/crew_quarters/locker) "bdb" = (/obj/structure/closet/secure_closet/personal,/turf/simulated/floor,/area/crew_quarters/locker) "bdc" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor,/area/storage/tools) @@ -2938,7 +2935,6 @@ "bez" = (/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,/area/crew_quarters/locker) "beA" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor,/area/crew_quarters/locker) "beB" = (/obj/structure/closet/secure_closet/personal,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/crew_quarters/locker) -"beC" = (/obj/effect/decal/cleanable/blood/oil,/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/maintenance/port) "beD" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port) "beE" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port) "beF" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/port) @@ -3027,7 +3023,6 @@ "bgk" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port) "bgl" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor/plating,/area/maintenance/port) "bgm" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port) -"bgn" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port) "bgo" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/maintenance/port) "bgp" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/storage/tools) "bgq" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/wall,/area/storage/tools) @@ -3085,7 +3080,6 @@ "bhq" = (/obj/machinery/door/airlock{name = "Unit 1"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet) "bhr" = (/obj/machinery/light_switch{pixel_y = 28},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet) "bhs" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet) -"bht" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/crew_quarters/locker) "bhu" = (/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/crew_quarters/locker) "bhv" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/closet/wardrobe/white,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/crew_quarters/locker) "bhw" = (/obj/machinery/portable_atmospherics/pump,/turf/simulated/floor{icon_state = "delivery"},/area/crew_quarters/locker) @@ -3553,7 +3547,6 @@ "bqq" = (/obj/structure/table/reinforced,/obj/machinery/door/window/eastright{base_state = "left"; dir = 2; icon_state = "left"; name = "Research and Development Desk"; req_access_txt = "47"},/obj/machinery/door/firedoor/border_only{dir = 1; name = "hazard door north"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "rdlab"; name = "Research and Development Lab Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/toxins/lab) "bqr" = (/obj/machinery/autolathe,/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) "bqs" = (/obj/structure/table,/obj/machinery/recharger{pixel_y = 0},/obj/item/weapon/storage/belt/utility,/obj/item/clothing/gloves/color/latex,/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) -"bqt" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5; icon_state = "intact"},/obj/structure/closet/hydrant{pixel_x = -33},/turf/simulated/floor/plating,/area/maintenance/asmaint2) "bqu" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 1; name = "Starboard Emergency Storage APC"; pixel_y = 24},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/asmaint2) "bqv" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating,/area/maintenance/asmaint2) "bqw" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1380; master_tag = "specops_dock_airlock"; name = "exterior access button"; pixel_x = -5; pixel_y = 25; req_access_txt = "0"; req_one_access_txt = "13"},/turf/space,/area) @@ -13138,22 +13131,22 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaJHaOiaKRaKSaJGaKTaJzaKTaJzaKTaJzaKTaJGaKUaKVaGdaERaOjaOkaOlaOmaOnaOoaDyaOpaOqaOraOsaOtaOuaOvaOwaOwaHnaOxaOyaOzaOAaOBaOCaODaOEaOFaOGaHpaaaaabaaaaOHaOIaOHaaaaabaaaayaaDTaDUaOJaOKaOLaOMaONaDUaAYbyxaOOaOPaFmaOQaORaFpaOSaFpaOTaOUaOVbyxaOWaOXaOYaOZaPaaPbaPcbPhaaaaaabNtbPSaPfaPgbCtaPhaHGaHGaHGaPiaHGaHGaHGbScaPjaPkaPjbSUbSYaPjaPmaPjbTcaPnaPoaPpaPqaPrbTcbTHbUbbTYbUgbTYbTYbTYbTYbUhbTYbTYbUmbTYbTYbTYbTYaPvaJubLLaPwaNRaPxaPyaPzaPAaPBbUoaPDaPEbLNbDSaPGaPHaPIaPJbPgaMtaMuaMvaPKaPLbEFaPMaOgaOgaOhaMFaMFaMFaMFaMGaMHaaaaaaaaaaaaaaaaaaaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPNaPOaIbaJxaJGaJzaJzaPPaJzaJzaPQaJzaJGaJHaPRaPSaERaPTaPUaPVaPWaPVaPVaPVaPVaPVaPXaDyaySaPYaPYaPYaPYaHnaPZaQaaQbaHnaHnaHnaHnaPZaQcaQdaHpaQfaQgaQgaQhaQiaQjaQgaQgaQkaQeaQlaDUaQmaDUaQnaQobVfaDUaQrbyxbyxbyxbyxaQsaQtaQuaQvaQuaQwaQxbyxbyxaQyaOZaOZaOZaOZaQzaQAbVVbVYbVXbNtaQEaPfaQFbCtbCtbCtbCtbCtbCtbCtaPjaPjbScaQGaQHaQIaQJaQKaQLaQMaQNbTcaQOaQPaQQaQRaQSbTcaQTaQUaQVaQWaQVaQXaRaaQYaQZaRbaRcaRdaReaRfaRgbTYaRhaMabWaaRjaRkaPxaRlaPzaPAaRmbLNaRnaRoaRpaRqaRraObaObbLNbLNaMtaMuaMvaRsaRtbEFaRuaRvaRwaRxaRyaRzaMFaMFaRAaMHaaaaaaaaaaaaaaaaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPNaIbaIcaIbaIbaIdaIeaIbaIbaIcaPOaRBayaaRCaPTaCyaRDaRDaREaRDaRFaySaRGaRHaDyaRIaRJaRKaRLaRMaRNaRLaROaRLaRLaRLaRPaRLaRLaRQaRRaRSaRTaRUaRVaRTaRWaRTaRTaRTaRTaRXaRYaRZaRLaRLaSaaSbaScaSdaSeaSfaSgaShaSiaSjaSkaSkaSkaSkaSkaSkaSlaSmaSnaSoaSpaSqaSraSsaStaSuaOZaOZaSvaSwaSxaSwaSyaSzaSAaSBaSCaSDaSEaPjaSFaSGaSHaSIaSJaSJaSKaSLaSMaSNbTcaSOaSPaSQaSQaSRbTcaSSaSTaSUaSVaSWaSWaSXaSZdhSaSYaTaaTbaTcaTdaTebTYaPvaTfbLLaTgaThaThaTiaTjaThaTkbLNaTlaTmbLNaTnaToaObaTpbLNaTqaTraTsaMvaOeaOebEFaTtbIgbWdbWebIgbIgbIgbIgbIgabAacOaaaaaaaaaaaaaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCyaTuaTvaHcaHcaHcaHcaTwaTuaCyaHeayaaTxaTyaTzaTAaTBaTCaTCaTDaySaTEaRHaTFaTGaRJaTHaTIaTJaTKaTKaYgaTLaTLaTLaTMaTNaTNaTOaTPaTQaTKaTKaTRaTSaTTaTUaTVaTVaTWaTVaTXaTSaTSaTSaTYaSbaScaSdaSeaSeaSeaSeaTZaSeaSeaSeaSeaSeaSeaUaaUbaUcaUdaUeaUfaUgaUhaUiaUjaUkaUkaUkaUlaUmaUmaUmaUnaSEaSEaSEaUoaUpaSEaPjaUqaUraSJaSJaUsaSJaUtaUuaSMaUvbTcaUwaUxaUyaUzaUAbTcaUBaUCaUDaUEaUFaUGbTYbWQaUIbWQbTYbTYbTYbUmbTYbTYaPvaJubLLaUJaNRaNRaNRaUKaNRaULbLNbLNbLNbLNbLNbLNbLNaUMbLNaMvaMvaMuaMvaUNaUOaOeaUPaUQaURaUSaUTaUUaUVaUWaUXaaaaaaaaaaaaaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaGbayaaTzaAPaGdaUYaUZaVaaVbaGdaAPaVcaVdayaaVeaPTaTzaVfaVgaTCaTCaTDaySaVhaRHaDyaTGaRJaViaVjaVkaRLaRLaVlaVmaVnaRLaVoaVpaVqaVpaVraVsaVpaVpaVtaVpaVpaVuaVvaVpaVwaVpaVxaRLaRLaRLaVyaVzaVAaVBaVCaVDaVCaVEaVFaVEaVEaVEaVEaVEaVEaVGaVHaVIaVIaVIaVIaVJaVIaVKaVLaVIaVIaVMaVNaVOaVOaVOaVOaVOaVOaVOaVPaSEaSEaPjaVQaVRaVSaVTaVTaVUaVVaUuaSMaVWbTcbTcbTcbTcbTcaVXbTcaVYaVZaWaaWbaQVaWcbTYaWdaWeaWfaWgaWhaWiaWjaWkbTYaPvaJubLLaWlaWmaNRaWnaWoaNRaWpaWpbLLaWqaWraWsaOeaWtaWuaWvaMvaMvaWwaWxaOeaWyaOeaWzaUQaURaWAaWBaUQaUQaWCaWDaaaaaaaaaaaaaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaySaDwaTuaPSaERaDyaDyaESaPSaTuaPSaWEaWFaWGaWHaDwaWIaWIaREaWIaRFaySaWJaRHaDyaySaPYaPYaWKaYraYraYraYraYraYraWLaWMaYraYraYraYraYraYEaWNaWOaWNaYEaWPaPYaWQaVjaWRaWSaWTaWUaRLaWVaPYaWWaWWaWXaWXaWXbXMbXNbXNbXNbXNbXNbXNbXNbXObYMbYmcbAbYmcbBcbBcbGcbDcbZcbYccwbXOccIbVYbVYbVYbVYbVYbVYccJaXkaXkaXkaPjaXlaXmaXnaXnaXnaXnaXoaKyaXpaXqaXraXsaXtaXuaXvaXwbTcbTcaXxccOcencdjcfnbTYaXAaXBaXCaXCaXCaXCaXDaXEbTYaXFaJubLLaXGaNRaWnaWnaWoaWnaNRaXHbLLaXIaXJaXKaOeaMvaXLaXMaXNaXNaXOaXPaXQaXRcfoaXSaXTaXUaXVaUSaUQaUQaXWaWDaaaaaaaaaaaaaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCyaXXaDyaXYaXZaYaaYbaYcaYdaYbaYeaYfaYbaYbbcOaYhaYiaYjaYkaYkaYkaYlaYkaYmaYnaySaYoaYpaYqaYraYsaYtaYuaYvaYwaYxaYyaYzaYAaYBaYCaYDaYEaYFaYGaYHaYEaYIaZYaZYaYJaZYaZYaYMaYMaYKaYLaYMaYMaYMaYNaSeaSjcfsaaaaaaaaaaaaaaaaaaaaabXOaYPaYQaYRaYSaYTaYUaYVaYWaYXaYYaYZbXOaaaaaaaaaaaaaaaaaaaaacftaZaaSEaZbaPjaZcaXmaXqaXqaXqaXqaXqaZdaZeaXqaXqaXqaXtaZfaZfaZgaZhaZiaZjaZkaZlaZmaZnbTYaZoaZpaZqaZraZraZqaZsaZtbTYaPvaZubLLaZvaZwaNRaWnaWoaNRaZxaZxbLLbLLaZybLLaOeaZzaWuaWxaZAaZAaZBaWxaOeaOeaOeaZCaUQaZDaZDaZEaZDaUQaZFaWDaaaaaaaaaaZGaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDwaZHaZIaZHaZHaZHaZHaZHaZHaZIaZHaZHaZJaDyaZKaZLaDyaDyaZMaDyaZNaZOaZPaZQaZRaySaYpaYpaZSaYraZTaYxaYxaYxaYxaYxaYyaZUaYxaYxaYxaYxaYEaZVaZWaZXaYEaYIaZYaZZbaababbacaYMbadbaebafbagbahbaiaYNaSeaSjcfsaaaaaaaaaaaabXObXObXObXObajbakbalbambanbaobapbaqbarbasbatbXObXObXObXOaaaaaaaaaaaacftaZaaSEaSEbauaXqbavbawbaxaXqbaybazaJabaAbaBbaCaXqaXtdqXaZfbaDbaEaZfbaFbaGbaHbaIaZfcfubaKbaLaZqaZraZraZqbaMbaNbTYaPvbaObLLaXGaNRaWnaWnaWoaWnaNRaNRbaPbaQaNRbaRaOebaSbaTbaUaZAaZAbaVbaUbaWaOebaXbaYaUQbaZbaZbbabaZaUQaXWbbbbbcbbdbbdbbeaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaayabbfbbgbbgbbgbbgbbgbbgbbgaGjayaaySbbhbbibbjbbjbbjbbjbbjbbjcfvbbjbbjbbjaySaYpbblbbmaYrbbnaYxaYxbbobbpbbqbbrbboaYxaYxaYxbbsaYEbbtbbubbvaYEaYIaZYbbwbbxbbybbzaYMbbAbbBbbCbbDbbEbbFbbGbbHaSjcfwcgtaQqbXObXObXObbJbbKbbLbbMbbNbbNbbObbPbbNbbQbbNbbRbbSbbTbbUbbVbbWbXObXObXOaQqccIcgIaZaaSEaSEaPjbbYbavbaBbaxaXqbbZbcaaXqbcbbccbaCaXqaXtaZfaZfbcdbcebcfbcgbchbcibcjaZfcgVbaKbclaZqaZraZrbcmbcnbaNbTYaPvbcobLLbcpbcqbcraWnaWobcsaNRaNRbctaNRbcubcvaOebcwbcxbcyaZAaZAbczbcybcAaOebcBbaYaUQaUQaUQaUSaUQaUQbcCbcDbcEbcFbcGbcHaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIaabbcJaGeaDAbcKbbjbcLbcMbcNbcRbcPbcQbhlbcSbbjbcTbcUbcVbcWaYrbcXaYxaYxbbobbqbcYbcZbboaYxaYxbdabdbaYEaYEaYEaYEaYEaYIaZYaZYaZYaZYaZYaYMbdcbbDbddbbDbdebbFaYNbdfaSjaSkaSkbdgcgWbdibXObdjbalbdkbbNbbNbbNbdlbdmbdnbdmbdobdpbdqbdmbdrbdsbdtbXObducgWbdvbdwbdxaZaaSEaSEbauaXqbdyaXqaXqaXqbdzbdAaXqbcbbdBbaCaXqaXtaZfaZfbdCbdDbdEbdFbdGbdHbcjbdIbTYbdJbclaZqaZraZraZqbcnbdKbTYbdLchpbLLchqbLLbLLbdMaWobdNbdOaNRbdPbdQaRlbdRcfobdSbdTbdUbdVbdVbdWbdXbdYcfobdZbeaaUQbebaUQaUSaUQaUQbecbedbbcbbdbbdbeeaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbefbegbehaERaZKbbjbcLbeibejbcLbekbelbembenbbjbeobepbeqberaYrbesbetbeubevbewbexbeybezbezbezbeAbeBaYrbeCbcUbeDbeEbeFbblbblbeGberbeHaYMbeIbeJbeKbeLbeMbeNaYNbdfaSeaSeaSebeObePbeQbeRbeSbeTbbNbeUbeVbeWbeXbeYbeZbfabfbbfcbfdbfebeSbffbfgbfhbfibfjbfkbflbfmbfnaSEbfoaPjaXqbfpbfqbaCaXqbfrbfsaXqbftbfubaCaXqaXtaZfaZfaZfaZgaZfbfvaZfbdHbcjbfwbTYbfxbclaZqaZraZraZqbcnbfybTYbfzbfAbfAbfBbfCbfDbfEbfFbfGbfGbfGbfGbfGbfGbfHbfIbfJaZAaZAaZAaZAaZAaZAbfKbfLbfMbaYaUQaUQaUQaUSaUQaUQbfNaWDbfObfObfOaWDaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaabcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbfPbfQbfRbfSaZKbbjbfTbcLbfUbfUbfUbfVbcLbfWbbjbfXbfYbeqbfZbfZbfZbfZbgabfZbgbaYxbgcbgdbgebgebgfbggaYrbghbgibgjbgkbglbgmbgmbgnbgobgobgpbgpbgpbgpbgpbgqaYMaYNbgrbgsbgtbgubgvchrbgxchsbgybeZbgzbgAcNxcNxcNxcNxbgBcNxdiMdiOdiNbgFbgzbgGbgHbXObgIchtbgKbgLbgMbgNaSEaSEbauaXqbgOaXqaXqaXqaLLaXqaXqbgPbgPbgQbgQbgRaZfaZfbgSbgTaZfaZfaZfbgUbgVbgWbTYbaNbclaZqaZqaZqaZqbcnaXEbTYbgXbgYbgYbgZbgYbhaaWnaWnaWnaWnbhbaWnaWnaWnbhcbfLaZAaZAaZAaZAaZAaZAaZAbfKbfLbfMbaYaUQaZDaZDaZEaZDaUQbhdaWDbhebhfbhgaWDaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbhibhjbehbhkaWHbjQbcLbhmbfUbfUbfUbfVbhmbcLbbjbhnbhobeqbfZbhpbhqbhrbhsbfZbhtbhubhvaYrbhwbhxbhybhzaYrbblbhAbhBbhBbhCbhBbhBbhBbhBbhDbhEbhEbhEbhFbhEbhGbiWbhHbhIbhJchuchuchuchuchuchucjcbhKcjccNxcNxbhLbhMbhNbhObhPbhQbhLdiPcNxcjVbhRcjVcjVcjVcjVcjVcjVcjVbgNaSEaSEaPjbhSbhTaXqbhUaXqbhVaXqbhWbhXbhYbgQbhZbTcbiabibbTcbTcbicbidbidbidbTcbTcbTYbiebifbigbigbigbigbifbihbTYbiibgYbgYbgZbijbLLbikbilbimbinbiobipbiqbirbisaOebitaMvbiuaZAaZAbiuaMvbivaOebiwbaYaUQbaZbaZbbabaZaUQbfNaWDbfObfObfOaWDaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCyaTuaTvaHcaHcaHcaHcaTwaTuaCyaHeayaaTxaTyaTzaTAaTBaTCaTCaTDaySaTEaRHaTFaTGaRJaTHaTIaTJaTKaTKaYgaTLaTLaTLaTMaTNaTNaTOaTPaTQaTKaTKaYGaTNaYIaYHaTVaTVaTVaTVaTXaTSaTSaTSaTYaSbaScaSdaSeaSeaSeaSeaTZaSeaSeaSeaSeaSeaSeaUaaUbaUcaUdaUeaUfaUgaUhaUiaUjaUkaUkaUkaUlaUmaUmaUmaUnaSEaSEaSEaUoaUpaSEaPjaUqaUraSJaSJaUsaSJaUtaUuaSMaUvbTcaUwaUxaUyaUzaUAbTcaUBaUCaUDaUEaUFaUGbTYbWQaUIbWQbTYbTYbTYbUmbTYbTYaPvaJubLLaUJaNRaNRaNRaUKaNRaULbLNbLNbLNbLNbLNbLNbLNaUMbLNaMvaMvaMuaMvaUNaUOaOeaUPaUQaURaUSaUTaUUaUVaUWaUXaaaaaaaaaaaaaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaGbayaaTzaAPaGdaUYaUZaVaaVbaGdaAPaVcaVdayaaVeaPTaTzaVfaVgaTCaTCaTDaySaVhaRHaDyaTGaRJaViaVjaVkaRLaRLaVlaVmaVnaRLaVoaVpaVqaVpaVraVsaVpaVpaVpaVpaVpaTWaVvaVpaVpaVpaVxaRLaRLaRLaVyaVzaVAaVBaVCaVDaVCaVEaVFaVEaVEaVEaVEaVEaVEaVGaVHaVIaVIaVIaVIaVJaVIaVKaVLaVIaVIaVMaVNaVOaVOaVOaVOaVOaVOaVOaVPaSEaSEaPjaVQaVRaVSaVTaVTaVUaVVaUuaSMaVWbTcbTcbTcbTcbTcaVXbTcaVYaVZaWaaWbaQVaWcbTYaWdaWeaWfaWgaWhaWiaWjaWkbTYaPvaJubLLaWlaWmaNRaWnaWoaNRaWpaWpbLLaWqaWraWsaOeaWtaWuaWvaMvaMvaWwaWxaOeaWyaOeaWzaUQaURaWAaWBaUQaUQaWCaWDaaaaaaaaaaaaaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaySaDwaTuaPSaERaDyaDyaESaPSaTuaPSaWEaWFaWGaWHaDwaWIaWIaREaWIaRFaySaWJaRHaDyaySaPYaPYaWKaYraYraYraYraYraYraWLaWMaYraYraYraYraYraYraTRberaZYaZYaTUaZYaZYaZYaWRaTTaWTaWUaWQaWVaPYaWWaWWaWXaWXaWXbXMbXNbXNbXNbXNbXNbXNbXNbXObYMbYmcbAbYmcbBcbBcbGcbDcbZcbYccwbXOccIbVYbVYbVYbVYbVYbVYccJaXkaXkaXkaPjaXlaXmaXnaXnaXnaXnaXoaKyaXpaXqaXraXsaXtaXuaXvaXwbTcbTcaXxccOcencdjcfnbTYaXAaXBaXCaXCaXCaXCaXDaXEbTYaXFaJubLLaXGaNRaWnaWnaWoaWnaNRaXHbLLaXIaXJaXKaOeaMvaXLaXMaXNaXNaXOaXPaXQaXRcfoaXSaXTaXUaXVaUSaUQaUQaXWaWDaaaaaaaaaaaaaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCyaXXaDyaXYaXZaYaaYbaYcaYdaYbaYeaYfaYbaYbbcOaYhaYiaYjaYkaYkaYkaYlaYkaYmaYnaySaYoaYpaYqaYraYsaYtaYuaYvaYwaYxaYyaYzaYAaYBaYCaYDaYrbblaYFaZYbbzaYEaWSaWPaZYaZYaZYaYMaYMaYKaYLaYMaYMaYMaYNaSeaSjcfsaaaaaaaaaaaaaaaaaaaaabXOaYPaYQaYRaYSaYTaYUaYVaYWaYXaYYaYZbXOaaaaaaaaaaaaaaaaaaaaacftaZaaSEaZbaPjaZcaXmaXqaXqaXqaXqaXqaZdaZeaXqaXqaXqaXtaZfaZfaZgaZhaZiaZjaZkaZlaZmaZnbTYaZoaZpaZqaZraZraZqaZsaZtbTYaPvaZubLLaZvaZwaNRaWnaWoaNRaZxaZxbLLbLLaZybLLaOeaZzaWuaWxaZAaZAaZBaWxaOeaOeaOeaZCaUQaZDaZDaZEaZDaUQaZFaWDaaaaaaaaaaZGaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDwaZHaZIaZHaZHaZHaZHaZHaZHaZIaZHaZHaZJaDyaZKaZLaDyaDyaZMaDyaZNaZOaZPaZQaZRaySaYpaYpaZSaYraZTaYxaYxaYxaYxaYxaYyaZUaYxaYxaYxaYxaYrbblaVwaZYaWOaWNaVuaVubabbbyaVtaYMbadbaebafbagbahbaiaYNaSeaSjcfsaaaaaaaaaaaabXObXObXObXObajbakbalbambanbaobapbaqbarbasbatbXObXObXObXOaaaaaaaaaaaacftaZaaSEaSEbauaXqbavbawbaxaXqbaybazaJabaAbaBbaCaXqaXtdqXaZfbaDbaEaZfbaFbaGbaHbaIaZfcfubaKbaLaZqaZraZraZqbaMbaNbTYaPvbaObLLaXGaNRaWnaWnaWoaWnaNRaNRbaPbaQaNRbaRaOebaSbaTbaUaZAaZAbaVbaUbaWaOebaXbaYaUQbaZbaZbbabaZaUQaXWbbbbbcbbdbbdbbeaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaayabbfbbgbbgbbgbbgbbgbbgbbgaGjayaaySbbhbbibbjbbjbbjbbjbbjbbjcfvbbjbbjbbjaySaYpbblbbmaYrbbnaYxaYxbbobbpbbqbbrbboaYxaYxaYxbbsaYrbblaYFaZYaZZaZXbbtbbtbacbaaaVtaYMbbAbbBbbCbbDbbEbbFbbGbbHaSjcfwcgtaQqbXObXObXObbJbbKbbLbbMbbNbbNbbObbPbbNbbQbbNbbRbbSbbTbbUbbVbbWbXObXObXOaQqccIcgIaZaaSEaSEaPjbbYbavbaBbaxaXqbbZbcaaXqbcbbccbaCaXqaXtaZfaZfbcdbcebcfbcgbchbcibcjaZfcgVbaKbclaZqaZraZrbcmbcnbaNbTYaPvbcobLLbcpbcqbcraWnaWobcsaNRaNRbctaNRbcubcvaOebcwbcxbcyaZAaZAbczbcybcAaOebcBbaYaUQaUQaUQaUSaUQaUQbcCbcDbcEbcFbcGbcHaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIaabbcJaGeaDAbcKbbjbcLbcMbcNbcRbcPbcQbhlbcSbbjbcTbcUbcVbcWaYrbcXaYxaYxbbobbqbcYaZWbboaYxaYxbdabdbaYrbblaYFaZYaZYaZVaZYaZYaZYaZYaZYaYMbdcbbDbddbbDbdebbFaYNbdfaSjaSkaSkbdgcgWbdibXObdjbalbdkbbNbbNbbNbdlbdmbdnbdmbdobdpbdqbdmbdrbdsbdtbXObducgWbdvbdwbdxaZaaSEaSEbauaXqbdyaXqaXqaXqbdzbdAaXqbcbbdBbaCaXqaXtaZfaZfbdCbdDbdEbdFbdGbdHbcjbdIbTYbdJbclaZqaZraZraZqbcnbdKbTYbdLchpbLLchqbLLbLLbdMaWobdNbdOaNRbdPbdQaRlbdRcfobdSbdTbdUbdVbdVbdWbdXbdYcfobdZbeaaUQbebaUQaUSaUQaUQbecbedbbcbbdbbdbeeaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbefbegbehaERaZKbbjbcLbeibejbcLbekbelbembenbbjbeobepbeqberaYrbesbetbeubevbewbexbeybezbezbezbeAbeBaYrbblbcUbeDbeEbeFbblbblbeGberbeHaYMbeIbeJbeKbeLbeMbeNaYNbdfaSeaSeaSebeObePbeQbeRbeSbeTbbNbeUbeVbeWbeXbeYbeZbfabfbbfcbfdbfebeSbffbfgbfhbfibfjbfkbflbfmbfnaSEbfoaPjaXqbfpbfqbaCaXqbfrbfsaXqbftbfubaCaXqaXtaZfaZfaZfaZgaZfbfvaZfbdHbcjbfwbTYbfxbclaZqaZraZraZqbcnbfybTYbfzbfAbfAbfBbfCbfDbfEbfFbfGbfGbfGbfGbfGbfGbfHbfIbfJaZAaZAaZAaZAaZAaZAbfKbfLbfMbaYaUQaUQaUQaUSaUQaUQbfNaWDbfObfObfOaWDaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaabcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbfPbfQbfRbfSaZKbbjbfTbcLbfUbfUbfUbfVbcLbfWbbjbfXbfYbeqbfZbfZbfZbfZbgabfZbgbaYxbgcbgdbgebgebgfbggaYrbghbgibgjbgkbglbgmbgmbbubgobgobgpbgpbgpbgpbgpbgqaYMaYNbgrbgsbgtbgubgvchrbgxchsbgybeZbgzbgAcNxcNxcNxcNxbgBcNxdiMdiOdiNbgFbgzbgGbgHbXObgIchtbgKbgLbgMbgNaSEaSEbauaXqbgOaXqaXqaXqaLLaXqaXqbgPbgPbgQbgQbgRaZfaZfbgSbgTaZfaZfaZfbgUbgVbgWbTYbaNbclaZqaZqaZqaZqbcnaXEbTYbgXbgYbgYbgZbgYbhaaWnaWnaWnaWnbhbaWnaWnaWnbhcbfLaZAaZAaZAaZAaZAaZAaZAbfKbfLbfMbaYaUQaZDaZDaZEaZDaUQbhdaWDbhebhfbhgaWDaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbhibhjbehbhkaWHbjQbcLbhmbfUbfUbfUbfVbhmbcLbbjbhnbhobeqbfZbhpbhqbhrbhsbfZaYJbhubhvaYrbhwbhxbhybhzaYrbblbhAbhBbhBbhCbhBbhBbhBbhBbhDbhEbhEbhEbhFbhEbhGbiWbhHbhIbhJchuchuchuchuchuchucjcbhKcjccNxcNxbhLbhMbhNbhObhPbhQbhLdiPcNxcjVbhRcjVcjVcjVcjVcjVcjVcjVbgNaSEaSEaPjbhSbhTaXqbhUaXqbhVaXqbhWbhXbhYbgQbhZbTcbiabibbTcbTcbicbidbidbidbTcbTcbTYbiebifbigbigbigbigbifbihbTYbiibgYbgYbgZbijbLLbikbilbimbinbiobipbiqbirbisaOebitaMvbiuaZAaZAbiuaMvbivaOebiwbaYaUQbaZbaZbbabaZaUQbfNaWDbfObfObfOaWDaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbixaDwbiybizbiAbbjbeibeibeibcLbiBbiCbiDbiEbbjbiFbiGbeqbfZbfZbfZbiHbiIbfZbiJbiKbiLaYrbhwbhxbhybiMaYrbblbhAbhBbiNbiObiPbiQbiRbhBbiSbiTbiUbiVbiWbiWbiWbiWbiXbiYbiZchubjabjbbjcbjdbjebjfbjgbjhcNxbjibhNbjjbjkbjlbjkbjjbhNbjmcNxbjnbjobjpbjqbjrbjsbjtbjucjVbjvbjwbjwcmhaPjaPjaPjaPjbjybaubjycmSaPjbSYaPjaPjbTcbTcbTcbTcbjAbjBbjBbjBbjBbjCbjDbTYcncbjFcncbjGbjGcncbjFcncbTYbiibgYbgYbjHbijbLLbLLbLLbLLbLLchqbLLbLLbLLbLLaOecndcnQcnecnecnecnecoLaOeaOebjJbjKaUQaUQaUQaUSaUQaUQbecbbbbjLbbdbbdbjMaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGbayabjNaHcbehaySaySaySaySaySaySbjObjPbbjbbjbbjbbjbbjbbjccWbbjbbjbbjbjRbjRbjSbfZbjTbjUbiHbjVbfZbjWbjXbjWaYrbhwbhxbhybjYaYrbblbhAbhBbjZbkabkbbiQbkbbhBbiSbkcbkdbkebkfbkgbkhbiWbkibkjbiZcoMbklbkmbknbkobkobknbkpbkqcNxbkrbhNbhNbksbktbjkbjjbhNbkudiNbkvbkwbkxbkybkzbkAbkxbkBcjVbkCbkDbkEbkFbkGbkHbkIbkJbkJbkJbkJbkJbkJbkKbkLbkMbkNbkJbkObkJbkJbkJbkJbkJbkJbkJbkJbkPbkQbkRbkRbkRbkRbkRbkRbkSbkHbkTbkUbkUbkVbkWbkXbkWbkYbkWbkZblablbbkWblcbldbleblfblgblgblgblgblgblgblgblhblibljbljbljbljblkbljbllblmblnbloblpbcGblqaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablrblrblrblrblrblrblrblrblrblraaaaabblsaGebltblublvblwblwblwblwblwblxblyblzblAblBblCbjSbfZbfZbfZblDbiIbfZaYraYraYraYrbhwblEblFblGaYrblHblIbhBblJblKbiQbkbblLbhBbiSblMbkdbkebkeblNblObiWblPbkjbiZcoNblRblSblTblUblVblWbkpblXcNxblYbksbhNblZbmablZbhNbksbmbdiPbmcbkxbkxbkybmdbkAbkxbmecjVbmfbkEbkEbkFbkGbkHbkJbkJbkJbkJbkJbkJbkJbmgbkJbkJbkJbkJbkJbkJbmhbmibmibmibmibmibmibmibmibmibmibmibmibmibmibmjbmkbmlblgblgbmmbgYbgYbgYbgYbgYbgZbgYbgYbgYbgYbgYbgYbgYbgYbgYbgYbgYbgYbmnbgYbmobmpaUQaUQaUQaUQaUQaUQaUQbmqbedbbcbbdbbdbbeaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablrblrblrblrblrblrblrblrblrblrblrbefbegbmrbmsbmtbmubmubmubmvbmubmubmubmwberberberberbeqbfZbhpbmxbmybjVbfZbmzbmAbmzaYraYraYraYrbmBaYrbmCbhAbhBbmDbmEbkbbmFbmGbhBbiSbiWbmHbkebkebkebmIbiWbmJbkjbiZcoObmLblSblTbmMbmNblWbkpbmOcNxbmPbmQbhNbmRbmSbmTbjjbmUbmVdiQbmXbmYbmZbnabnbbncbkxbndcjVbnebnfbkEbkFbkGbkHbkJbngbkJbkJbkJbkJbnhbnibnibnibnibnjbkJbkJbkJbkJbnkbkJbngbnlbkJbnmbnnbnobkJbnpbnqbnqbnrbnsbntbnubgYbgYbgYbgYbgYbgYbgYbnvbnwbnxbgYbgYbgYbgYbgYbgYbgYbgYbgYbgYbnybnzbnzbnAbnBbnCbnDbnEbnEbnEbnEbnFbnGbnHaabaaaaaaaabaKPaKPaKPaKPaKPaKPaaaaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablrblrblrblrblrblrblrblrblrblrblrbnIbnJbnKbnLbnMbmubnNbnObnPbnPbnQbnRbnSbnTbnUbnUbnVbnWbfZbfZbfZbiHbnXbfZberberberberbnYbblbblbnZbgmboabobbocbodboebofbogbohbhBboibiWbojbkebkebkebokbolbombkjbonchuboobopbknbknbknbknbkpboqcNxdiRdiScNxcNxcNxcNxcNxcNxcNxdiPcjVbosbotboubovbowboxboycjVbozboAboAcpTcpTcpTcpTcpTcpTcpTcqxcqxcrkcqBboDboDcqBcrkcqxcqxcrtcrtcrtcrtcrtcrtcswcswboEcswcswcswcswcswctpboFcvyboGbgYbgYboHboHcxOcxOcxOcxOcxOboIbnzbnzbnybnzbgYbnzbnzbnzbnzboJcxQcxQcxQcxQboKcxYcxYcxYcxYcxYcxYcxYcxYcxYaaaaaaaaaaaaaKPaKPaKPaKPaKPaKPaaaaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablrblrblrblrblrblrblrblrblrblrblrbhibhjbmrbmsboLbmuboMbmuboNboObmubmubmuaZSboPboQboQboRbfZbhpboSbiHboTbfZboUboVboWboXboYboZboZbpaboZbpbbpcbhBbpdbpebiQbpfbpgbocbphbiWbpibkebkebpjbpkbplbombkjbpmchubpnbpobppbpqbprbpsbptchuchubpuczkbpvbpwbpxbpwbpyczkaaaczEcjVbpzbpAbpBbpCbowbkxbpDcjVbpEbpFbpGcpTbpHbpIbpJbpKbpLcAgbpNbpObpPbpQbpRbpRbpQbpSbpTbpUcrtbpVbpWbpXbpYcrtbpZbqabqbbqcbqdbqebqebqfctpbqgcBocAMbqhcAMbqibqicxObqjbqkbqlcxOcBSbqncBScxObqobnzboJcxQcCqbqqcCqcxQbqrbqscxQbqtbqubqvcDsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKPaKPaKPaKPaKPaKPaaaaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablrblrblrblrblrblrblrblrblrblrblrbhibhjbmrbmsboLbmuboMbmuboNboObmubmubmuaZSboPboQboQboRbfZbhpboSbiHboTbfZboUboVboWboXboYboZboZbpaboZbpbbpcbhBbpdbpebiQbpfbpgbocbphbiWbpibkebkebpjbpkbplbombkjbpmchubpnbpobppbpqbprbpsbptchuchubpuczkbpvbpwbpxbpwbpyczkaaaczEcjVbpzbpAbpBbpCbowbkxbpDcjVbpEbpFbpGcpTbpHbpIbpJbpKbpLcAgbpNbpObpPbpQbpRbpRbpQbpSbpTbpUcrtbpVbpWbpXbpYcrtbpZbqabqbbqcbqdbqebqebqfctpbqgcBocAMbqhcAMbqibqicxObqjbqkbqlcxOcBSbqncBScxObqobnzboJcxQcCqbqqcCqcxQbqrbqscxQbbvbqubqvcDsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKPaKPaKPaKPaKPaKPaaaaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablrblrblrblrblrblrblrblrblrblraaabqwaTzbqxbizbqybmubqzbmubqAbqBbqCbqDbmubqEbqFbqGbqHboRbfZbfZbfZbfZbfZbfZbqIbqJbqKbqLbqMbhBbhBbhBbhBbhBbhBbhBbqNbhBbhBbhBbqObhBbqPbqQbqRbkebkebkebqSbolbqTbkjbqUchubqVbpocjccjccjcchubqWchubqXbqYcDXbqZbrabrbbrcbrdcDYbrebrfcjVbrgbkxbrhbribowbrjbkxcjVbrkbrlbrmcpTbrnbrobrpbrqbrrbrsbrtbpRbpRbpRbpRbpRbpRbpRbrubrvcDZbrxbrybrzbrAcrtbrBbrCbrDbrEbrFbrGbrCbqfctpbrHcBobrIbrJbrKbrLbrLcEFbrMbrNbrObrPbrQbrRbrScxOcFEbrTcGWcxQbrUbrVbrWbrXbrXbrYcxQbrZbsabsbcDsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKPaKPaKPaKPaKPaKPaaaaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGbayabjNaHcbhjbbgbbgbbgbscbbgbsdaERbsebsfbmubsgbshbsibsjbskbslbsmbcWbblbblbblbsnbnUbnUbnUbnUbnUbnUbsobspbspbsqbsrbhBbssbstbsubsvbswbsxbsybszbsAbsBbsCbsDbphbolbqRbkebkebsEbiWbiWbsFbsGbsHcGXbsIbsJbsKbsLcIWbsMbsNcJFbsObsPcDYbsQbsRbsQbsRbsScDYbrebsTdjnbsUbsVbsWbsXbsYbsZbtadjnbtbbpFbpFcpTbtcbtdbtebtfbtgcpTbrtbpRbpRbpRbpRbpRbpRbpRbthbtibtjbtkbtlbrxbtmcrtbtnbtobtpbrEbqfbrGbtqbtrctpbtseKcbtubtvbtvbtwbtxbtybtzbtAbtAbtAbtBbtAbtCeKdbtEbtFbtGeKebtHbtIbtJbtJbtJbtKcxQbtLbsabtMcDsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKPaKPaKPaKPaKPaaaaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaMIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtNbtObtPbtQbtRbtSbtSbtTbtUaDybmubtVbtWbsjbtXbmubmubmuberbtYbtZbuabubbuabuabuabubbuaberberbhBbhBbhBbucbhBbudbudbudbudbudbudbsybuebufbugbuhbuibujbukbulbumbunbuobupbuqburbusbutbuubuvbuvbuwbuxeKfbuybuzeKgbuAbuBczkbuCbrcbuDbrabuEczkaaabuFeKheKibuGeKheKheKheKhbuHcjVbuIbpFbuJeKjbuKbuLbuMbuNbuOcpTbuPbuQbuRbuSbuTbuUbuVbuWbrubuXcrtbuYbtlbuZbvacrtbvbbvcbrDbrEbqfbrGbrCbqfctpbrHcBobvdbvebvfbvgbvheKkbvibvjbvkbvlbvmbvnbvocxObvpbvqbvrcxQbvsbvtbvubrXbvvbvwcxQbtLbsabvxcDsaaaaaaaaaaaaaabaabaabaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From a911b53e8b39f811c6d1250156527aff71ad1f93 Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Wed, 4 Mar 2015 05:42:12 -0500 Subject: [PATCH 02/27] Life Proc Changes--Cold Space and and Temp Handling --- code/game/gamemodes/cult/cult_items.dm | 2 +- .../objects/items/devices/suit_cooling.dm | 180 ----------------- code/game/turfs/space/space.dm | 4 +- code/modules/clothing/clothing.dm | 4 +- code/modules/clothing/spacesuits/rig.dm | 8 +- code/modules/mob/living/carbon/carbon.dm | 30 +++ code/modules/mob/living/carbon/human/life.dm | 183 +++++------------- code/modules/mob/living/carbon/species.dm | 62 +++--- .../xenoarchaeology/tools/anomaly_suit.dm | 2 +- code/setup.dm | 4 +- paradise.dme | 1 - 11 files changed, 118 insertions(+), 362 deletions(-) delete mode 100644 code/game/objects/items/devices/suit_cooling.dm diff --git a/code/game/gamemodes/cult/cult_items.dm b/code/game/gamemodes/cult/cult_items.dm index be1e71c6bb4..026e1f7499c 100644 --- a/code/game/gamemodes/cult/cult_items.dm +++ b/code/game/gamemodes/cult/cult_items.dm @@ -97,7 +97,7 @@ item_state = "cult_armour" desc = "A bulky suit of armour, bristling with spikes. It looks space proof." w_class = 3 - allowed = list(/obj/item/weapon/tome,/obj/item/weapon/melee/cultblade,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit) + allowed = list(/obj/item/weapon/tome,/obj/item/weapon/melee/cultblade,/obj/item/weapon/tank) slowdown = 1 armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30) siemens_coefficient = 0 diff --git a/code/game/objects/items/devices/suit_cooling.dm b/code/game/objects/items/devices/suit_cooling.dm deleted file mode 100644 index 577dba2fdbe..00000000000 --- a/code/game/objects/items/devices/suit_cooling.dm +++ /dev/null @@ -1,180 +0,0 @@ -/obj/item/device/suit_cooling_unit - name = "portable suit cooling unit" - desc = "A portable heat sink and liquid cooled radiator that can be hooked up to a space suit's existing temperature controls to provide industrial levels of cooling." - w_class = 4 - icon = 'icons/obj/device.dmi' - icon_state = "suitcooler0" - slot_flags = SLOT_BACK //you can carry it on your back if you want, but it won't do anything unless attached to suit storage - - //copied from tank.dm - flags = CONDUCT - force = 5.0 - throwforce = 10.0 - throw_speed = 1 - throw_range = 4 - - origin_tech = "magnets=2;materials=2" - - var/on = 0 //is it turned on? - var/cover_open = 0 //is the cover open? - var/obj/item/weapon/stock_parts/cell/cell - var/max_cooling = 12 //in degrees per second - probably don't need to mess with heat capacity here - var/charge_consumption = 16.6 //charge per second at max_cooling - var/thermostat = T20C - - //TODO: make it heat up the surroundings when not in space - -/obj/item/device/suit_cooling_unit/New() - cell = new/obj/item/weapon/stock_parts/cell() //comes with the crappy default power cell - high-capacity ones shouldn't be hard to find - cell.loc = src - -/obj/item/device/suit_cooling_unit/proc/cool_mob(mob/M) - if (!on || !cell) return - - //make sure they have a suit and we are attached to it - if (!attached_to_suit(M)) - return - - var/mob/living/carbon/human/H = M - - var/efficiency = H.get_pressure_protection() //you need to have a good seal for effective cooling - var/env_temp = get_environment_temperature() //wont save you from a fire - var/temp_adj = min(H.bodytemperature - max(thermostat, env_temp), max_cooling) - - if (temp_adj < 0) //only cools, doesn't heat - return - - var/charge_usage = (temp_adj/max_cooling)*charge_consumption - - H.bodytemperature -= temp_adj*efficiency - - cell.use(charge_usage) - - if(cell.charge <= 0) - turn_off() - -/obj/item/device/suit_cooling_unit/proc/get_environment_temperature() - if (ishuman(loc)) - var/mob/living/carbon/human/H = loc - if(istype(H.loc, /obj/mecha)) - var/obj/mecha/M = loc - return M.return_temperature() - else if(istype(H.loc, /obj/machinery/atmospherics/unary/cryo_cell)) - return H.loc:air_contents.temperature - - var/turf/T = get_turf(src) - if(istype(T, /turf/space)) - return 0 //space has no temperature, this just makes sure the cooling unit works in space - - var/datum/gas_mixture/environment = T.return_air() - if (!environment) - return 0 - - return environment.temperature - -/obj/item/device/suit_cooling_unit/proc/attached_to_suit(mob/M) - if (!ishuman(M)) - return 0 - - var/mob/living/carbon/human/H = M - - if (!H.wear_suit || H.s_store != src) - return 0 - - return 1 - -/obj/item/device/suit_cooling_unit/proc/turn_on() - if(!cell) - return - if(cell.charge <= 0) - return - - on = 1 - updateicon() - -/obj/item/device/suit_cooling_unit/proc/turn_off() - if (ismob(src.loc)) - src.loc << "\The [src] clicks and whines as it powers down." //let them know - on = 0 - updateicon() - -/obj/item/device/suit_cooling_unit/attack_self(mob/user as mob) - if(cover_open && cell) - if(ishuman(user)) - user.put_in_hands(cell) - else - cell.loc = get_turf(loc) - - cell.add_fingerprint(user) - cell.updateicon() - - user << "You remove the [src.cell]." - src.cell = null - updateicon() - return - - //TODO use a UI like the air tanks - if(on) - turn_off() - else - turn_on() - if (on) - user << "You switch on the [src]." - -/obj/item/device/suit_cooling_unit/attackby(obj/item/weapon/W as obj, mob/user as mob, params) - if (istype(W, /obj/item/weapon/screwdriver)) - if(cover_open) - cover_open = 0 - user << "You screw the panel into place." - else - cover_open = 1 - user << "You unscrew the panel." - updateicon() - return - - if (istype(W, /obj/item/weapon/stock_parts/cell)) - if(cover_open) - if(cell) - user << "There is a [cell] already installed here." - else - user.drop_item() - W.loc = src - cell = W - user << "You insert the [cell]." - updateicon() - return - - return ..() - -/obj/item/device/suit_cooling_unit/proc/updateicon() - if (cover_open) - if (cell) - icon_state = "suitcooler1" - else - icon_state = "suitcooler2" - else - icon_state = "suitcooler0" - -/obj/item/device/suit_cooling_unit/examine() - set src in view(1) - - ..() - - if (on) - if (attached_to_suit(src.loc)) - usr << "It's switched on and running." - else - usr << "It's switched on, but not attached to anything." - else - usr << "It is switched off." - - if (cover_open) - if(cell) - usr << "The panel is open, exposing the [cell]." - else - usr << "The panel is open." - - if (cell) - usr << "The charge meter reads [round(cell.percent())]%." - else - usr << "It doesn't have a power cell installed." \ No newline at end of file diff --git a/code/game/turfs/space/space.dm b/code/game/turfs/space/space.dm index 6768fdf3afd..e954e5f95b1 100644 --- a/code/game/turfs/space/space.dm +++ b/code/game/turfs/space/space.dm @@ -3,9 +3,9 @@ name = "\proper space" icon_state = "0" - temperature = T0C + temperature = TCMB thermal_conductivity = OPEN_HEAT_TRANSFER_COEFFICIENT -// heat_capacity = 700000 No. + heat_capacity = 700000 /turf/space/New() if(!istype(src, /turf/space/transit)) diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 8c79383cc1a..33a75e7639c 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -246,7 +246,7 @@ BLIND // can't see anything var/mask_adjusted = 0 var/ignore_maskadjust = 1 var/adjusted_flags = null - + //Proc that moves gas/breath masks out of the way /obj/item/clothing/mask/proc/adjustmask(var/mob/user) if(!ignore_maskadjust) @@ -334,7 +334,7 @@ BLIND // can't see anything permeability_coefficient = 0.02 flags = STOPSPRESSUREDMAGE | THICKMATERIAL body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS - allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit) + allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank) slowdown = 2 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 50) flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT||HIDETAIL diff --git a/code/modules/clothing/spacesuits/rig.dm b/code/modules/clothing/spacesuits/rig.dm index cfe77d56f56..d1fa45e2018 100644 --- a/code/modules/clothing/spacesuits/rig.dm +++ b/code/modules/clothing/spacesuits/rig.dm @@ -61,7 +61,7 @@ item_state = "eng_hardsuit" slowdown = 2 armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 75) - allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/t_scanner, /obj/item/weapon/rcd, /obj/item/device/suit_cooling_unit) + allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/t_scanner, /obj/item/weapon/rcd) species_restricted = list("exclude","Unathi","Tajaran","Skrell","Diona","Vox") sprite_sheets = list( @@ -320,7 +320,7 @@ item_state = "eng_hardsuit" slowdown = 2 armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 75) - allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/device/t_scanner, /obj/item/weapon/rcd) + allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/t_scanner, /obj/item/weapon/rcd) //Chief Engineer's rig /obj/item/clothing/head/helmet/space/rig/elite @@ -497,7 +497,7 @@ desc = "A special helmet designed for work in a hazardous, low pressure environment. Built with lightweight materials for extra comfort." item_state = "medical_hardsuit" slowdown = 1 - allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/storage/firstaid,/obj/item/device/healthanalyzer,/obj/item/stack/medical) + allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/weapon/storage/firstaid,/obj/item/device/healthanalyzer,/obj/item/stack/medical) armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 50) //Security @@ -516,7 +516,7 @@ desc = "A special suit that protects against hazardous, low pressure environments. Has an additional layer of armor." item_state = "sec_hardsuit" armor = list(melee = 30, bullet = 15, laser = 30, energy = 10, bomb = 10, bio = 100, rad = 50) - allowed = list(/obj/item/weapon/gun,/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/melee/baton,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/restraints/handcuffs) + allowed = list(/obj/item/weapon/gun,/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/weapon/melee/baton,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/restraints/handcuffs) siemens_coefficient = 0.7 diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 279755cc813..1b018e42b4b 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -481,6 +481,36 @@ legcuffed = null update_inv_legcuffed(1) +/mob/living/carbon/proc/get_temperature(var/datum/gas_mixture/environment) + var/loc_temp = T0C + if(istype(loc, /obj/mecha)) + var/obj/mecha/M = loc + loc_temp = M.return_temperature() + + if(istype(loc, /obj/spacepod)) + var/obj/spacepod/S = loc + loc_temp = S.return_temperature() + + else if(istype(loc, /obj/structure/transit_tube_pod)) + loc_temp = environment.temperature + + else if(istype(get_turf(src), /turf/space)) + var/turf/heat_turf = get_turf(src) + loc_temp = heat_turf.temperature + + else if(istype(loc, /obj/machinery/atmospherics/unary/cryo_cell)) + var/obj/machinery/atmospherics/unary/cryo_cell/C = loc + + if(C.air_contents.total_moles() < 10) + loc_temp = environment.temperature + else + loc_temp = C.air_contents.temperature + + else + loc_temp = environment.temperature + + return loc_temp + /mob/living/carbon/show_inv(mob/living/carbon/user as mob) user.set_machine(src) var/dat = {" diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 4c03256ecb8..6f308b89e10 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -141,72 +141,21 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc handle_vampire() -//Much like get_heat_protection(), this returns a 0 - 1 value, which corresponds to the percentage of protection based on what you're wearing and what you're exposed to. -/mob/living/carbon/human/proc/get_pressure_protection() +/mob/living/carbon/human/calculate_affecting_pressure(var/pressure) + ..() + var/pressure_difference = abs( pressure - ONE_ATMOSPHERE ) + var/pressure_adjustment_coefficient = 1 //Determins how much the clothing you are wearing protects you in percent. - - if(head && (head.flags & STOPSPRESSUREDMAGE)) - pressure_adjustment_coefficient -= PRESSURE_HEAD_REDUCTION_COEFFICIENT - if(wear_suit && (wear_suit.flags & STOPSPRESSUREDMAGE)) pressure_adjustment_coefficient -= PRESSURE_SUIT_REDUCTION_COEFFICIENT - - //Handles breaches in your space suit. 10 suit damage equals a 100% loss of pressure reduction. - if(istype(wear_suit,/obj/item/clothing/suit/space)) - var/obj/item/clothing/suit/space/S = wear_suit - if(S.can_breach && S.damage) - var/pressure_loss = S.damage * 0.1 - pressure_adjustment_coefficient += pressure_loss - - pressure_adjustment_coefficient = min(1,max(pressure_adjustment_coefficient,0)) //So it isn't less than 0 or larger than 1. - - return 1 - pressure_adjustment_coefficient //want 0 to be bad protection, 1 to be good protection - -// Calculate how vulnerable the human is to under- and overpressure. -// Returns 0 (equals 0 %) if sealed in an undamaged suit, 1 if unprotected (equals 100%). -// Suitdamage can modifiy this in 10% steps. -/mob/living/carbon/human/proc/get_pressure_weakness() - - var/pressure_adjustment_coefficient = 1 // Assume no protection at first. - - if(wear_suit && (wear_suit.flags & STOPSPRESSUREDMAGE) && head && (head.flags & STOPSPRESSUREDMAGE)) // Complete set of pressure-proof suit worn, assume fully sealed. - pressure_adjustment_coefficient = 0 - - // Handles breaches in your space suit. 10 suit damage equals a 100% loss of pressure protection. - if(istype(wear_suit,/obj/item/clothing/suit/space)) - var/obj/item/clothing/suit/space/S = wear_suit - if(S.can_breach && S.damage) - pressure_adjustment_coefficient += S.damage * 0.1 - - pressure_adjustment_coefficient = min(1,max(pressure_adjustment_coefficient,0)) // So it isn't less than 0 or larger than 1. - - return pressure_adjustment_coefficient - -/mob/living/carbon/human/calculate_affecting_pressure(var/pressure) - var/pressure_difference - - // First get the absolute pressure difference. - if(pressure < ONE_ATMOSPHERE) // We are in an underpressure. - pressure_difference = ONE_ATMOSPHERE - pressure - - else //We are in an overpressure or standard atmosphere. - pressure_difference = pressure - ONE_ATMOSPHERE - - if(pressure_difference < 5) // If the difference is small, don't bother calculating the fraction. - pressure_difference = 0 - - else - // Otherwise calculate how much of that absolute pressure difference affects us, can be 0 to 1 (equals 0% to 100%). - // This is our relative difference. - pressure_difference *= get_pressure_weakness() - - // The difference is always positive to avoid extra calculations. - // Apply the relative difference on a standard atmosphere to get the final result. - // The return value will be the adjusted_pressure of the human that is the basis of pressure warnings and damage. - if(pressure < ONE_ATMOSPHERE) - return ONE_ATMOSPHERE - pressure_difference - else + if(head && (head.flags & STOPSPRESSUREDMAGE)) + pressure_adjustment_coefficient -= PRESSURE_HEAD_REDUCTION_COEFFICIENT + pressure_adjustment_coefficient = max(pressure_adjustment_coefficient,0) //So it isn't less than 0 + pressure_difference = pressure_difference * pressure_adjustment_coefficient + if(pressure > ONE_ATMOSPHERE) return ONE_ATMOSPHERE + pressure_difference + else + return ONE_ATMOSPHERE - pressure_difference /mob/living/carbon/human @@ -526,50 +475,25 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc if(!environment) return - //Moved pressure calculations here for use in skip-processing check. - var/pressure = environment.return_pressure() - var/adjusted_pressure = calculate_affecting_pressure(pressure) + var/loc_temp = get_temperature(environment) + //world << "Loc temp: [loc_temp] - Body temp: [bodytemperature] - Fireloss: [getFireLoss()] - Thermal protection: [get_thermal_protection()] - Fire protection: [thermal_protection + add_fire_protection(loc_temp)] - Heat capacity: [environment_heat_capacity] - Location: [loc] - src: [src]" - if(!istype(get_turf(src), /turf/space)) //space is not meant to change your body temperature. - var/loc_temp = T0C - if(istype(loc, /obj/mecha)) - var/obj/mecha/M = loc - loc_temp = M.return_temperature() + //Body temperature is adjusted in two steps. Firstly your body tries to stabilize itself a bit. + if(stat != 2) + stabilize_temperature_from_calories() - if(istype(loc, /obj/spacepod)) - var/obj/spacepod/S = loc - loc_temp = S.return_temperature() - //else if(istype(get_turf(src), /turf/space)) - - else if(istype(loc, /obj/machinery/atmospherics/unary/cryo_cell)) - loc_temp = loc:air_contents.temperature + //After then, it reacts to the surrounding atmosphere based on your thermal protection + if(!on_fire) //If you're on fire, you do not heat up or cool down based on surrounding gases + if(loc_temp < bodytemperature) + //Place is colder than we are + var/thermal_protection = get_cold_protection(loc_temp) //This returns a 0 - 1 value, which corresponds to the percentage of protection based on what you're wearing and what you're exposed to. + if(thermal_protection < 1) + bodytemperature += min((1-thermal_protection) * ((loc_temp - bodytemperature) / BODYTEMP_COLD_DIVISOR), BODYTEMP_COOLING_MAX) else - loc_temp = environment.temperature - - if(adjusted_pressure < species.warning_high_pressure && adjusted_pressure > species.warning_low_pressure && abs(loc_temp - bodytemperature) < 20 && bodytemperature < species.heat_level_1 && bodytemperature > species.cold_level_1 && environment.toxins < MOLES_PLASMA_VISIBLE) - pressure_alert = 0 - return // Temperatures are within normal ranges, fuck all this processing. ~Ccomp - - if(!on_fire) //If you're on fire, you do not heat up or cool down based on surrounding gases - //Body temperature adjusts depending on surrounding atmosphere based on your thermal protection - var/temp_adj = 0 - if(loc_temp < bodytemperature) //Place is colder than we are - var/thermal_protection = get_cold_protection(loc_temp) //This returns a 0 - 1 value, which corresponds to the percentage of protection based on what you're wearing and what you're exposed to. - if(thermal_protection < 1) - temp_adj = (1-thermal_protection) * ((loc_temp - bodytemperature) / BODYTEMP_COLD_DIVISOR) //this will be negative - else if (loc_temp > bodytemperature) //Place is hotter than we are - var/thermal_protection = get_heat_protection(loc_temp) //This returns a 0 - 1 value, which corresponds to the percentage of protection based on what you're wearing and what you're exposed to. - if(thermal_protection < 1) - temp_adj = (1-thermal_protection) * ((loc_temp - bodytemperature) / BODYTEMP_HEAT_DIVISOR) - - //Use heat transfer as proportional to the gas density. However, we only care about the relative density vs standard 101 kPa/20 C air. Therefore we can use mole ratios - var/relative_density = environment.total_moles() / MOLES_CELLSTANDARD - temp_adj *= relative_density - - if (temp_adj > BODYTEMP_HEATING_MAX) temp_adj = BODYTEMP_HEATING_MAX - if (temp_adj < BODYTEMP_COOLING_MAX) temp_adj = BODYTEMP_COOLING_MAX - //world << "Environment: [loc_temp], [src]: [bodytemperature], Adjusting: [temp_adj]" - bodytemperature += temp_adj + //Place is hotter than we are + var/thermal_protection = get_heat_protection(loc_temp) //This returns a 0 - 1 value, which corresponds to the percentage of protection based on what you're wearing and what you're exposed to. + if(thermal_protection < 1) + bodytemperature += min((1-thermal_protection) * ((loc_temp - bodytemperature) / BODYTEMP_HEAT_DIVISOR), BODYTEMP_HEATING_MAX) // +/- 50 degrees from 310.15K is the 'safe' zone, where no damage is dealt. if(bodytemperature > species.heat_level_1) @@ -607,6 +531,9 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc // Account for massive pressure differences. Done by Polymorph // Made it possible to actually have something that can protect against high pressure... Done by Errorage. Polymorph now has an axe sticking from his head for his previous hardcoded nonsense! + + var/pressure = environment.return_pressure() + var/adjusted_pressure = calculate_affecting_pressure(pressure) //Returns how much pressure actually affects the mob. if(status_flags & GODMODE) return 1 //godmode if(adjusted_pressure >= species.hazard_high_pressure) @@ -620,14 +547,12 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc else if(adjusted_pressure >= species.hazard_low_pressure) pressure_alert = -1 else - if( !(RESIST_COLD in mutations)) + if(RESIST_COLD in mutations) + pressure_alert = -1 + else take_overall_damage(brute=LOW_PRESSURE_DAMAGE, used_weapon = "Low Pressure") pressure_alert = -2 - else - pressure_alert = -1 - if(environment.toxins > MOLES_PLASMA_VISIBLE) - pl_effects() return ///FIRE CODE @@ -671,39 +596,20 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc return temp_change */ - proc/stabilize_body_temperature() - //TODO find a better place to put this - if (s_store && istype(s_store, /obj/item/device/suit_cooling_unit)) - var/obj/item/device/suit_cooling_unit/CU = s_store - CU.cool_mob(src) - -// if (species.flags & IS_SYNTHETIC) -// bodytemperature += species.synth_temp_gain //that CPU/posibrain just keeps putting out heat. // commented out as making synthetics unplayable until cooling system sorted out -// return - - var/body_temperature_difference = species.body_temperature - bodytemperature - - if (abs(body_temperature_difference) < 0.5) - return //fuck this precision - - if(bodytemperature < species.cold_level_1) //260.15 is 310.15 - 50, the temperature where you start to feel effects. + proc/stabilize_temperature_from_calories() + if(bodytemperature <= species.cold_level_1) //260.15 is 310.15 - 50, the temperature where you start to feel effects. if(nutrition >= 2) //If we are very, very cold we'll use up quite a bit of nutriment to heat us up. nutrition -= 2 - var/recovery_amt = max((body_temperature_difference / BODYTEMP_AUTORECOVERY_DIVISOR), BODYTEMP_AUTORECOVERY_MINIMUM) - //world << "Cold. Difference = [body_temperature_difference]. Recovering [recovery_amt]" -// log_debug("Cold. Difference = [body_temperature_difference]. Recovering [recovery_amt]") - bodytemperature += recovery_amt - else if(species.cold_level_1 <= bodytemperature && bodytemperature <= species.heat_level_1) - var/recovery_amt = body_temperature_difference / BODYTEMP_AUTORECOVERY_DIVISOR - //world << "Norm. Difference = [body_temperature_difference]. Recovering [recovery_amt]" -// log_debug("Norm. Difference = [body_temperature_difference]. Recovering [recovery_amt]") - bodytemperature += recovery_amt - else if(bodytemperature > species.heat_level_1) //360.15 is 310.15 + 50, the temperature where you start to feel effects. + var/body_temperature_difference = species.body_temperature - bodytemperature + bodytemperature += max((body_temperature_difference / BODYTEMP_AUTORECOVERY_DIVISOR), BODYTEMP_AUTORECOVERY_MINIMUM) + if(bodytemperature >= species.cold_level_1 && bodytemperature <= species.heat_level_1) + var/body_temperature_difference = species.body_temperature - bodytemperature + bodytemperature += body_temperature_difference / BODYTEMP_AUTORECOVERY_DIVISOR + if(bodytemperature >= species.heat_level_1) //360.15 is 310.15 + 50, the temperature where you start to feel effects. //We totally need a sweat system cause it totally makes sense...~ - var/recovery_amt = min((body_temperature_difference / BODYTEMP_AUTORECOVERY_DIVISOR), -BODYTEMP_AUTORECOVERY_MINIMUM) //We're dealing with negative numbers - //world << "Hot. Difference = [body_temperature_difference]. Recovering [recovery_amt]" -// log_debug("Hot. Difference = [body_temperature_difference]. Recovering [recovery_amt]") - bodytemperature += recovery_amt + var/body_temperature_difference = species.body_temperature - bodytemperature + bodytemperature += min((body_temperature_difference / BODYTEMP_AUTORECOVERY_DIVISOR), -BODYTEMP_AUTORECOVERY_MINIMUM) //We're dealing with negative numbers + //This proc returns a number made up of the flags for body parts which you are protected on. (such as HEAD, UPPER_TORSO, LOWER_TORSO, etc. See setup.dm for the full list) proc/get_heat_protection_flags(temperature) //Temperature is the temperature you're being exposed to. @@ -1037,7 +943,6 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc updatehealth() //TODO if(!in_stasis) - stabilize_body_temperature() //Body temperature adjusts itself handle_organs() //Optimized. handle_blood() diff --git a/code/modules/mob/living/carbon/species.dm b/code/modules/mob/living/carbon/species.dm index fda8ee8c755..c7dd21ab74d 100644 --- a/code/modules/mob/living/carbon/species.dm +++ b/code/modules/mob/living/carbon/species.dm @@ -26,7 +26,8 @@ var/heat_level_1 = 360 // Heat damage level 1 above this point. var/heat_level_2 = 400 // Heat damage level 2 above this point. - var/heat_level_3 = 1000 // Heat damage level 2 above this point. + var/heat_level_3 = 460 // Heat damage level 3 above this point; used for body temperature + var/heat_level_3_breathe = 1000 // Heat damage level 3 above this point; used for breathed air temperature var/body_temperature = 310.15 //non-IS_SYNTHETIC species will try to stabilize at this temperature. (also affects temperature processing) var/synth_temp_gain = 0 //IS_SYNTHETIC species will gain this much temperature every second @@ -105,8 +106,7 @@ var/safe_oxygen_min = 16 // Minimum safe partial pressure of O2, in kPa //var/safe_oxygen_max = 140 // Maximum safe partial pressure of O2, in kPa (Not used for now) var/safe_co2_max = 10 // Yes it's an arbitrary value who cares? - var/safe_toxins_max = 0.5 - var/safe_toxins_mask = 5 + var/safe_toxins_max = 0.005 var/SA_para_min = 1 var/SA_sleep_min = 5 var/oxygen_used = 0 @@ -179,16 +179,9 @@ if(Toxins_pp > safe_toxins_max) // Too much toxins var/ratio = (breath.toxins/safe_toxins_max) * 10 //adjustToxLoss(Clamp(ratio, MIN_PLASMA_DAMAGE, MAX_PLASMA_DAMAGE)) //Limit amount of damage toxin exposure can do per second - if(H.wear_mask) - if(H.wear_mask.flags & BLOCK_GAS_SMOKE_EFFECT) - if(breath.toxins > safe_toxins_mask) - ratio = (breath.toxins/safe_toxins_mask) * 10 - else - ratio = 0 - if(ratio) - if(H.reagents) - H.reagents.add_reagent("plasma", Clamp(ratio, MIN_PLASMA_DAMAGE, MAX_PLASMA_DAMAGE)) - H.toxins_alert = max(H.toxins_alert, 1) + if(H.reagents) + H.reagents.add_reagent("plasma", Clamp(ratio, MIN_PLASMA_DAMAGE, MAX_PLASMA_DAMAGE)) + H.toxins_alert = max(H.toxins_alert, 1) else if(O2_pp > vox_oxygen_max && name == "Vox") //Oxygen is toxic to vox. var/ratio = (breath.oxygen/vox_oxygen_max) * 1000 H.adjustToxLoss(Clamp(ratio, MIN_PLASMA_DAMAGE, MAX_PLASMA_DAMAGE)) @@ -202,12 +195,16 @@ if(SA_pp > SA_para_min) // Enough to make us paralysed for a bit H.Paralyse(3) // 3 gives them one second to wake up and run away a bit! if(SA_pp > SA_sleep_min) // Enough to make us sleep as well - H.sleeping = min(H.sleeping+2, 10) - else if(SA_pp > 0.15) // There is sleeping gas in their lungs, but only a little, so give them a bit of a warning + H.sleeping = max(H.sleeping+2, 10) + else if(SA_pp > 0.01) // There is sleeping gas in their lungs, but only a little, so give them a bit of a warning if(prob(20)) spawn(0) H.emote(pick("giggle", "laugh")) - SA.moles = 0 + handle_temperature(breath, H) + + return 1 + +/datum/species/proc/handle_temperature(datum/gas_mixture/breath, var/mob/living/carbon/human/H) // called by human/life, handles temperatures if( (abs(310.15 - breath.temperature) > 50) && !(RESIST_HEAT in H.mutations)) // Hot air hurts :( if(H.status_flags & GODMODE) return 1 //godmode if(breath.temperature < cold_level_1) @@ -243,14 +240,14 @@ H.apply_damage(HEAT_GAS_DAMAGE_LEVEL_1, BURN, "head", used_weapon = "Excessive Heat") H.fire_alert = max(H.fire_alert, 2) - if(heat_level_2 to heat_level_3) + if(heat_level_2 to heat_level_3_breathe) H.apply_damage(HEAT_GAS_DAMAGE_LEVEL_2, BURN, "head", used_weapon = "Excessive Heat") H.fire_alert = max(H.fire_alert, 2) - if(heat_level_3 to INFINITY) + if(heat_level_3_breathe to INFINITY) H.apply_damage(HEAT_GAS_DAMAGE_LEVEL_3, BURN, "head", used_weapon = "Excessive Heat") H.fire_alert = max(H.fire_alert, 2) - return 1 + return /datum/species/proc/handle_post_spawn(var/mob/living/carbon/C) //Handles anything not already covered by basic species assignment. handle_dna(C) @@ -315,11 +312,12 @@ cold_level_1 = 280 //Default 260 - Lower is better cold_level_2 = 220 //Default 200 - cold_level_3 = 130 //Default 120 + cold_level_3 = 140 //Default 120 - heat_level_1 = 420 //Default 360 - Higher is better - heat_level_2 = 480 //Default 400 - heat_level_3 = 1100 //Default 1000 + heat_level_1 = 380 //Default 360 - Higher is better + heat_level_2 = 420 //Default 400 + heat_level_3 = 480 //Default 460 + heat_level_3_breathe = 1100 //Default 1000 flesh_color = "#34AF10" @@ -343,13 +341,14 @@ of family and politics. They prefer colder environments, and speak a variety of languages, mostly Siik'Maas, \ using unique inflections their mouths form." - cold_level_1 = 200 - cold_level_2 = 140 - cold_level_3 = 80 + cold_level_1 = 240 + cold_level_2 = 180 + cold_level_3 = 100 - heat_level_1 = 330 + heat_level_1 = 340 heat_level_2 = 380 - heat_level_3 = 800 + heat_level_3 = 440 + heat_level_3_breathe = 900 primitive = /mob/living/carbon/monkey/tajara @@ -463,6 +462,7 @@ heat_level_1 = 2000 heat_level_2 = 3000 heat_level_3 = 4000 + heat_level_3_breathe = 4000 brute_mod = 0.2 burn_mod = 0.2 @@ -587,8 +587,9 @@ cold_level_3 = -1 heat_level_1 = 300 - heat_level_2 = 350 - heat_level_3 = 700 + heat_level_2 = 340 + heat_level_3 = 400 + heat_level_3_breathe = 700 blurb = "Commonly referred to (erroneously) as 'plant people', the Dionaea are a strange space-dwelling collective \ species hailing from Epsilon Ursae Minoris. Each 'diona' is a cluster of numerous cat-sized organisms called nymphs; \ @@ -656,6 +657,7 @@ heat_level_1 = 500 //gives them about 25 seconds in space before taking damage heat_level_2 = 1000 heat_level_3 = 2000 + heat_level_3_breathe = 2000 synth_temp_gain = 10 //this should cause IPCs to stabilize at ~80 C in a 20 C environment. diff --git a/code/modules/research/xenoarchaeology/tools/anomaly_suit.dm b/code/modules/research/xenoarchaeology/tools/anomaly_suit.dm index b8277fa5e8e..0d4e64d67ee 100644 --- a/code/modules/research/xenoarchaeology/tools/anomaly_suit.dm +++ b/code/modules/research/xenoarchaeology/tools/anomaly_suit.dm @@ -20,7 +20,7 @@ icon_state = "cespace_suit" item_state = "cespace_suit" armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 100) - allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit) + allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank) /obj/item/clothing/head/helmet/space/eva/anomaly name = "Excavation hood" diff --git a/code/setup.dm b/code/setup.dm index c18d1ac0d12..61493f768ec 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -40,10 +40,10 @@ #define TEMPERATURE_DAMAGE_COEFFICIENT 1.5 //This is used in handle_temperature_damage() for humans, and in reagents that affect body temperature. Temperature damage is multiplied by this amount. #define BODYTEMP_AUTORECOVERY_DIVISOR 12 //This is the divisor which handles how much of the temperature difference between the current body temperature and 310.15K (optimal temperature) humans auto-regenerate each tick. The higher the number, the slower the recovery. This is applied each tick, so long as the mob is alive. -#define BODYTEMP_AUTORECOVERY_MINIMUM 1 //Minimum amount of kelvin moved toward 310.15K per tick. So long as abs(310.15 - bodytemp) is more than 50. +#define BODYTEMP_AUTORECOVERY_MINIMUM 10 //Minimum amount of kelvin moved toward 310.15K per tick. So long as abs(310.15 - bodytemp) is more than 50. #define BODYTEMP_COLD_DIVISOR 6 //Similar to the BODYTEMP_AUTORECOVERY_DIVISOR, but this is the divisor which is applied at the stage that follows autorecovery. This is the divisor which comes into play when the human's loc temperature is lower than their body temperature. Make it lower to lose bodytemp faster. #define BODYTEMP_HEAT_DIVISOR 6 //Similar to the BODYTEMP_AUTORECOVERY_DIVISOR, but this is the divisor which is applied at the stage that follows autorecovery. This is the divisor which comes into play when the human's loc temperature is higher than their body temperature. Make it lower to gain bodytemp faster. -#define BODYTEMP_COOLING_MAX -30 //The maximum number of degrees that your body can cool in 1 tick, when in a cold area. +#define BODYTEMP_COOLING_MAX 30 //The maximum number of degrees that your body can cool in 1 tick, when in a cold area. #define BODYTEMP_HEATING_MAX 30 //The maximum number of degrees that your body can heat up in 1 tick, when in a hot area. #define BODYTEMP_HEAT_DAMAGE_LIMIT 360.15 // The limit the human body can take before it starts taking damage from heat. diff --git a/paradise.dme b/paradise.dme index d84b2c5f513..6e77d08e156 100644 --- a/paradise.dme +++ b/paradise.dme @@ -665,7 +665,6 @@ #include "code\game\objects\items\devices\powersink.dm" #include "code\game\objects\items\devices\scanners.dm" #include "code\game\objects\items\devices\sensor_device.dm" -#include "code\game\objects\items\devices\suit_cooling.dm" #include "code\game\objects\items\devices\taperecorder.dm" #include "code\game\objects\items\devices\traitordevices.dm" #include "code\game\objects\items\devices\transfer_valve.dm" From 2548b838cf568f2f2b48fd0f14392dd29c5db515 Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Wed, 4 Mar 2015 06:22:18 -0500 Subject: [PATCH 03/27] fix --- code/modules/mob/living/carbon/carbon.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 1b018e42b4b..1aacf035034 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -487,7 +487,7 @@ var/obj/mecha/M = loc loc_temp = M.return_temperature() - if(istype(loc, /obj/spacepod)) + else if(istype(loc, /obj/spacepod)) var/obj/spacepod/S = loc loc_temp = S.return_temperature() From 13aeecf33c8bfa445f85846c9643785191e3c908 Mon Sep 17 00:00:00 2001 From: ZomgPonies Date: Wed, 4 Mar 2015 12:17:14 -0500 Subject: [PATCH 04/27] Removed some blood flags, added blood color to greys and kidan --- code/modules/mob/living/carbon/species.dm | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/carbon/species.dm b/code/modules/mob/living/carbon/species.dm index fda8ee8c755..7d16adc5539 100644 --- a/code/modules/mob/living/carbon/species.dm +++ b/code/modules/mob/living/carbon/species.dm @@ -380,7 +380,6 @@ the secrets of their empire to their allies." flags = HAS_LIPS | HAS_UNDERWEAR - bloodflags = BLOOD_GREEN bodyflags = HAS_SKIN_COLOR flesh_color = "#8CD7A3" @@ -517,9 +516,11 @@ brute_mod = 0.8 flags = IS_WHITELISTED - bloodflags = BLOOD_GREEN bodyflags = FEET_CLAWS + blood_color = "#FB9800" + + /datum/species/slime name = "Slime People" default_language = "Galactic Common" @@ -557,6 +558,8 @@ flags = IS_WHITELISTED | HAS_LIPS | HAS_UNDERWEAR | CAN_BE_FAT + blood_color = "#A200FF" + /datum/species/grey/handle_dna(var/mob/living/carbon/C, var/remove) if(!remove) C.dna.SetSEState(REMOTETALKBLOCK,1,1) From 646ef4563e951816c5b1a9d0963e575030a0f3d1 Mon Sep 17 00:00:00 2001 From: ZomgPonies Date: Wed, 4 Mar 2015 12:24:47 -0500 Subject: [PATCH 05/27] Removed old snowflake bloodcode references --- .../mob/living/carbon/human/human_defense.dm | 20 +++---------------- .../mob/living/carbon/human/update_icons.dm | 8 ++++---- code/setup.dm | 4 +--- 3 files changed, 8 insertions(+), 24 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 7906eac6111..e5145332701 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -435,30 +435,16 @@ emp_act add_blood(source) bloody_hands = amount bloody_hands_mob = source - if(istype(source,/mob/living/carbon/human)) - var/mob/living/carbon/human/H = source - if(H.species.bloodflags & BLOOD_GREEN) - update_inv_gloves(1,1) //updates on-mob overlays for bloody hands and/or bloody gloves - else - update_inv_gloves(1,0) //updates on-mob overlays for bloody hands and/or bloody gloves - else - update_inv_gloves(1,0) //updates on-mob overlays for bloody hands and/or bloody gloves + update_inv_gloves(1) //updates on-mob overlays for bloody hands and/or bloody gloves /mob/living/carbon/human/proc/bloody_body(var/mob/living/source) if(wear_suit) wear_suit.add_blood(source) - update_inv_wear_suit(0,0) + update_inv_wear_suit(0) return if(w_uniform) w_uniform.add_blood(source) - if(istype(source,/mob/living/carbon/human)) - var/mob/living/carbon/human/H = source - if(H.species.bloodflags & BLOOD_GREEN) - update_inv_w_uniform(1,1) - else - update_inv_w_uniform(1,0) - else - update_inv_w_uniform(1,0) + update_inv_w_uniform(1) /mob/living/carbon/human/proc/handle_suit_punctures(var/damtype, var/damage) diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index f88577f2597..bde2a71847e 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -587,7 +587,7 @@ proc/get_damage_icon_part(damage_state, body_part) /* --------------------------------------- */ //vvvvvv UPDATE_INV PROCS vvvvvv -/mob/living/carbon/human/update_inv_w_uniform(var/update_icons=1,var/green=0) +/mob/living/carbon/human/update_inv_w_uniform(var/update_icons=1) if(w_uniform && istype(w_uniform, /obj/item/clothing/under) ) w_uniform.screen_loc = ui_iclothing var/t_color = w_uniform._color @@ -651,7 +651,7 @@ proc/get_damage_icon_part(damage_state, body_part) if(update_icons) update_icons() -/mob/living/carbon/human/update_inv_gloves(var/update_icons=1,var/green=0) +/mob/living/carbon/human/update_inv_gloves(var/update_icons=1) if(gloves) var/t_state = gloves.item_state if(!t_state) t_state = gloves.icon_state @@ -724,7 +724,7 @@ proc/get_damage_icon_part(damage_state, body_part) overlays_standing[EARS_LAYER] = null if(update_icons) update_icons() -/mob/living/carbon/human/update_inv_shoes(var/update_icons=1,var/green=0) +/mob/living/carbon/human/update_inv_shoes(var/update_icons=1) if(shoes) var/image/standing @@ -765,7 +765,7 @@ proc/get_damage_icon_part(damage_state, body_part) if(update_icons) update_icons() -/mob/living/carbon/human/update_inv_head(var/update_icons=1,var/green=0) +/mob/living/carbon/human/update_inv_head(var/update_icons=1) if(head) head.screen_loc = ui_head //TODO var/image/standing diff --git a/code/setup.dm b/code/setup.dm index c18d1ac0d12..544d879df9d 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -835,9 +835,7 @@ var/list/restricted_camera_networks = list( //Those networks can only be accesse #define NO_INTORGANS 32768 //Species Blood Flags -#define BLOOD_GREEN 1 -#define BLOOD_BLUE 2 -#define BLOOD_SLIME 4 +#define BLOOD_SLIME 1 //Species Body Flags #define FEET_CLAWS 1 #define FEET_PADDED 2 From 60d4038ed51ceedbff6e8b4133bf6404b0e558c6 Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Wed, 4 Mar 2015 17:56:30 -0500 Subject: [PATCH 06/27] Comfy Mining Turfs? NO! --- code/modules/mining/mine_turfs.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index 8ab42b7ae1c..533c47a253d 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -9,7 +9,7 @@ opacity = 1 density = 1 blocks_air = 1 - temperature = T0C + temperature = TCMB var/mineral/mineral var/mined_ore = 0 var/last_act = 0 @@ -392,7 +392,7 @@ icon_state = "asteroid" oxygen = 0.01 nitrogen = 0.01 - temperature = T0C + temperature = TCMB icon_plating = "asteroid" var/dug = 0 //0 = has not yet been dug, 1 = has already been dug has_resources = 1 From 91fd4d968376f2dbc62eb47c080bb30236e84436 Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Wed, 4 Mar 2015 20:56:14 -0500 Subject: [PATCH 07/27] Frost Oil Fix --- code/modules/reagents/Chemistry-Reagents.dm | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index 4deb87fbddb..490a91c2113 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -2329,18 +2329,19 @@ datum if(!data) data = 1 switch(data) if(1 to 15) - M.bodytemperature -= 5 * TEMPERATURE_DAMAGE_COEFFICIENT + M.bodytemperature -= 10 * TEMPERATURE_DAMAGE_COEFFICIENT if(holder.has_reagent("capsaicin")) holder.remove_reagent("capsaicin", 5) if(istype(M, /mob/living/carbon/slime)) M.bodytemperature -= rand(5,20) if(15 to 25) - M.bodytemperature -= 10 * TEMPERATURE_DAMAGE_COEFFICIENT + M.bodytemperature -= 15 * TEMPERATURE_DAMAGE_COEFFICIENT if(istype(M, /mob/living/carbon/slime)) M.bodytemperature -= rand(10,20) if(25 to INFINITY) - M.bodytemperature -= 15 * TEMPERATURE_DAMAGE_COEFFICIENT - if(prob(1)) M.emote("shiver") + M.bodytemperature -= 20 * TEMPERATURE_DAMAGE_COEFFICIENT + if(prob(1)) + M.emote("shiver") if(istype(M, /mob/living/carbon/slime)) M.bodytemperature -= rand(15,20) data++ From 0fd3cdfb331936a8625b5d1054d782569b520299 Mon Sep 17 00:00:00 2001 From: ZomgPonies Date: Thu, 5 Mar 2015 13:34:01 -0500 Subject: [PATCH 08/27] Fixing the SSD infinite sleep bug --- code/modules/mob/living/carbon/carbon.dm | 62 +++++++++++--------- code/modules/mob/living/carbon/human/life.dm | 9 ++- code/modules/mob/living/login.dm | 3 + code/modules/mob/living/logout.dm | 8 ++- code/modules/mob/living/silicon/silicon.dm | 1 - code/modules/mob/mob_defines.dm | 3 +- 6 files changed, 51 insertions(+), 35 deletions(-) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 279755cc813..86f500aa015 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -203,36 +203,40 @@ src << "You feel fatigued." if((SKELETON in H.mutations) && (!H.w_uniform) && (!H.wear_suit)) H.play_xylophone() - else if(lying) // /vg/: For hugs. This is how update_icon figgers it out, anyway. - N3X15 - var/t_him = "it" - if (src.gender == MALE) - t_him = "him" - else if (src.gender == FEMALE) - t_him = "her" - if (istype(src,/mob/living/carbon/human) && src:w_uniform) - var/mob/living/carbon/human/H = src - H.w_uniform.add_fingerprint(M) - src.sleeping = max(0,src.sleeping-5) - if(src.sleeping == 0) - src.resting = 0 - AdjustParalysis(-3) - AdjustStunned(-3) - AdjustWeakened(-3) - playsound(src.loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) - M.visible_message( \ - "\blue [M] shakes [src] trying to wake [t_him] up!", \ - "\blue You shake [src] trying to wake [t_him] up!", \ - ) - // BEGIN HUGCODE - N3X else - if (istype(src,/mob/living/carbon/human) && src:w_uniform) - var/mob/living/carbon/human/H = src - H.w_uniform.add_fingerprint(M) - playsound(get_turf(src), 'sound/weapons/thudswoosh.ogg', 50, 1, -1) - M.visible_message( \ - "\blue [M] gives [src] a [pick("hug","warm embrace")].", \ - "\blue You hug [src].", \ - ) + if(player_logged) + M.visible_message("[M] shakes [src], but they do not respond. Probably suffering from SSD.", \ + "You shake [src], but they are unresponsive. Probably suffering from SSD.") + if(lying) // /vg/: For hugs. This is how update_icon figgers it out, anyway. - N3X15 + var/t_him = "it" + if (src.gender == MALE) + t_him = "him" + else if (src.gender == FEMALE) + t_him = "her" + if (istype(src,/mob/living/carbon/human) && src:w_uniform) + var/mob/living/carbon/human/H = src + H.w_uniform.add_fingerprint(M) + src.sleeping = max(0,src.sleeping-5) + if(src.sleeping == 0) + src.resting = 0 + AdjustParalysis(-3) + AdjustStunned(-3) + AdjustWeakened(-3) + playsound(src.loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) + M.visible_message( \ + "\blue [M] shakes [src] trying to wake [t_him] up!", \ + "\blue You shake [src] trying to wake [t_him] up!", \ + ) + // BEGIN HUGCODE - N3X + else + if (istype(src,/mob/living/carbon/human) && src:w_uniform) + var/mob/living/carbon/human/H = src + H.w_uniform.add_fingerprint(M) + playsound(get_turf(src), 'sound/weapons/thudswoosh.ogg', 50, 1, -1) + M.visible_message( \ + "\blue [M] gives [src] a [pick("hug","warm embrace")].", \ + "\blue You hug [src].", \ + ) /mob/living/carbon/proc/eyecheck() diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 4c03256ecb8..6a36b6ae3d7 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -1017,6 +1017,10 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc if(status_flags & GODMODE) return 0 + //SSD check, if a logged player is awake put them back to sleep! + if(player_logged && sleeping < 2) + sleeping = 2 + if(stat == DEAD) //DEAD. BROWN BREAD. SWIMMING WITH THE SPESS CARP blinded = 1 silent = 0 @@ -1093,7 +1097,10 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc adjustStaminaLoss(-10) adjustHalLoss(-3) if (mind) - if((mind.active && client != null) || immune_to_ssd) //This also checks whether a client is connected, if not, sleep is not reduced. + //Are they SSD? If so we'll keep them asleep but work off some of that sleep var in case of stoxin or similar. + if(player_logged) + sleeping = max(sleeping-1, 2) + else sleeping = max(sleeping-1, 0) blinded = 1 stat = UNCONSCIOUS diff --git a/code/modules/mob/living/login.dm b/code/modules/mob/living/login.dm index cf2f233e7c5..b349e3b15f7 100644 --- a/code/modules/mob/living/login.dm +++ b/code/modules/mob/living/login.dm @@ -4,6 +4,9 @@ //Mind updates sync_mind() + //If they're SSD, remove it so they can wake back up. + player_logged = 0 + //Round specific stuff like hud updates if(ticker && ticker.mode) var/ref = "\ref[mind]" diff --git a/code/modules/mob/living/logout.dm b/code/modules/mob/living/logout.dm index 8fdcdb0ec46..b79d822d80b 100644 --- a/code/modules/mob/living/logout.dm +++ b/code/modules/mob/living/logout.dm @@ -1,7 +1,9 @@ /mob/living/Logout() ..() if (mind) - if(!key) //key and mind have become seperated. + if(!key) //key and mind have become seperated. I believe this is for when a staff member aghosts. mind.active = 0 //This is to stop say, a mind.transfer_to call on a corpse causing a ghost to re-enter its body. - if(!immune_to_ssd && sleeping < 2 && mind.active) - sleeping = 2 //This causes instant sleep, but does not prolong it. See life.dm for furthering SSD. + //This causes instant sleep and tags a player as SSD. See life.dm for furthering SSD. + if(sleeping < 2 && mind.active) + sleeping = 2 + player_logged = 1 \ No newline at end of file diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index 1c8e7b71d65..e1dfc6907bb 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -6,7 +6,6 @@ var/datum/ai_laws/laws = null//Now... THEY ALL CAN ALL HAVE LAWS var/list/alarms_to_show = list() var/list/alarms_to_clear = list() - immune_to_ssd = 1 var/list/hud_list[10] var/list/speech_synthesizer_langs = list() //which languages can be vocalized by the speech synthesizer var/list/alarm_types_show = list("Motion" = 0, "Fire" = 0, "Atmosphere" = 0, "Power" = 0, "Camera" = 0) diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index d508eb7fb92..e5e7f502194 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -219,7 +219,8 @@ var/has_limbs = 1 //Whether this mob have any limbs he can move with var/can_stand = 1 //Whether this mob have ability to stand - var/immune_to_ssd = 0 + //SSD var, changed it up some so people can have special things happen for different mobs when SSD. + var/player_logged = 0 var/turf/listed_turf = null //the current turf being examined in the stat panel var/list/shouldnt_see = list() //list of objects that this mob shouldn't see in the stat panel. this silliness is needed because of AI alt+click and cult blood runes From eaf6e719881ba6a6a5eb4f1d3db7d0b1b8c3d818 Mon Sep 17 00:00:00 2001 From: ZomgPonies Date: Thu, 5 Mar 2015 13:40:27 -0500 Subject: [PATCH 09/27] Fix Spacepod infinite explosion bug --- code/game/vehicles/spacepods/spacepod.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/game/vehicles/spacepods/spacepod.dm b/code/game/vehicles/spacepods/spacepod.dm index 4b1bba60671..91d3b5935a0 100644 --- a/code/game/vehicles/spacepods/spacepod.dm +++ b/code/game/vehicles/spacepods/spacepod.dm @@ -127,6 +127,7 @@ occupant2 << "[i]" if(i == 0) explosion(loc, 2, 4, 8) + qdel(src) sleep(10) update_icons() From 06ee04e839a29c26df65682554c96263550efc1e Mon Sep 17 00:00:00 2001 From: ZomgPonies Date: Thu, 5 Mar 2015 15:53:15 -0500 Subject: [PATCH 10/27] Superhero update --- code/game/machinery/wishgranter.dm | 74 +++++++++++++++++----------- code/modules/events/event_manager.dm | 2 +- 2 files changed, 45 insertions(+), 31 deletions(-) diff --git a/code/game/machinery/wishgranter.dm b/code/game/machinery/wishgranter.dm index 22e89cfe000..1f14f105557 100644 --- a/code/game/machinery/wishgranter.dm +++ b/code/game/machinery/wishgranter.dm @@ -7,46 +7,33 @@ use_power = 0 anchored = 1 density = 1 - - var/charges = 1 - var/insisting = 0 - + var/datum/mind/target + var/list/types = list("Owlman", "The Griffin") /obj/machinery/wish_granter/attack_hand(var/mob/user as mob) usr.set_machine(src) - if(charges <= 0) - user << "The Wish Granter lies silent." - return - - else if(!istype(user, /mob/living/carbon/human)) + if(!istype(user, /mob/living/carbon/human)) user << "You feel a dark stirring inside of the Wish Granter, something you want nothing of. Your instincts are better than any man's." return else if(is_special_character(user)) user << "Even to a heart as dark as yours, you know nothing good will come of this. Something instinctual makes you pull away." - else if (!insisting) - user << "Your first touch makes the Wish Granter stir, listening to you. Are you really sure you want to do this?" - insisting++ - else user << "The power of the Wish Granter have turned you into the superhero the station deserves. You are a masked vigilante, and answer to no man. Will you use your newfound strength to protect the innocent, or will you hunt the guilty?" - ticker.mode.traitors += user.mind - user.mind.special_role = "The Hero The Station Deserves" - + var/wish + if(types.len == 1) + wish = pick(types) + else + wish = input("You want to become...","Wish") as null|anything in types var/mob/living/carbon/human/M = user - - var/wish = input("You want to...","Wish") as anything in list("Protect the innocent","Hunt the guilty") switch(wish) - if("Protect the innocent") + if("Owlman") + types -= "Owlman" M.fully_replace_character_name(M.real_name, "Owlman") - var/datum/objective/protect/protect = new - protect.owner = user.mind - user.mind.objectives += protect - for(var/obj/item/W in M) M.unEquip(W) @@ -64,12 +51,18 @@ M.regenerate_icons() - if("Hunt the guilty") - M.fully_replace_character_name(M.real_name, "The Griffin") + var/datum/objective/protect/protect = new + protect.owner = user.mind + if(target) + protect.target = target + else + protect.find_target() + target = protect.target + user.mind.objectives += protect - var/datum/objective/assassinate/assasinate = new - assasinate.owner = user.mind - user.mind.objectives += assasinate + if("The Griffin") + types -= "The Griffin" + M.fully_replace_character_name(M.real_name, "The Griffin") for(var/obj/item/W in M) M.unEquip(W) @@ -88,14 +81,25 @@ M.regenerate_icons() + var/datum/objective/assassinate/assasinate = new + assasinate.owner = user.mind + if(target) + assasinate.target = target + else + assasinate.find_target() + target = assasinate.target + user.mind.objectives += assasinate + + ticker.mode.traitors += user.mind + user.mind.special_role = wish + var/obj_count = 1 for(var/datum/objective/OBJ in user.mind.objectives) user << "Objective #[obj_count]: [OBJ.explanation_text]" obj_count++ - charges-- - insisting = 0 + //Time to hand out the powers, since they are currently generic if (!(HULK in user.mutations)) user.dna.SetSEState(HULKBLOCK,1) @@ -122,4 +126,14 @@ user.update_mutations() + //Remove the wishgranter or teleport it randomly on the station + if(!types.len) + user << "The wishgranter slowly fades into mist..." + qdel(src) + return + else + var/impact_area = findEventArea() + var/turf/T = pick(get_area_turfs(impact_area)) + if(T) + src.loc = T return \ No newline at end of file diff --git a/code/modules/events/event_manager.dm b/code/modules/events/event_manager.dm index 08614d68c9c..cdb1dc9a4b4 100644 --- a/code/modules/events/event_manager.dm +++ b/code/modules/events/event_manager.dm @@ -299,7 +299,7 @@ feedback_add_details("admin_verb","EMP") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! return -/datum/event/proc/findEventArea() //Here's a nice proc to use to find an area for your event to land in! +/proc/findEventArea() //Here's a nice proc to use to find an area for your event to land in! var/area/candidate = null var/list/safe_areas = list( From abd25690e1e1c50b4b47da36a73aead13238ce8c Mon Sep 17 00:00:00 2001 From: Tigercat2000 Date: Thu, 5 Mar 2015 22:24:36 +0100 Subject: [PATCH 11/27] Adds pool controller --- code/game/machinery/poolcontroller.dm | 66 +++++++++++++++++++++++++++ paradise.dme | 1 + 2 files changed, 67 insertions(+) create mode 100644 code/game/machinery/poolcontroller.dm diff --git a/code/game/machinery/poolcontroller.dm b/code/game/machinery/poolcontroller.dm new file mode 100644 index 00000000000..662649f087f --- /dev/null +++ b/code/game/machinery/poolcontroller.dm @@ -0,0 +1,66 @@ +/obj/machinery/poolcontroller + name = "Pool Controller" + desc = "A controller for the nearby pool." + icon = 'icons/obj/airlock_machines.dmi' + icon_state = "airlock_control_standby" + var/list/linkedturfs = list() + var/temperature = "normal" + var/srange = 5 + +/obj/machinery/poolcontroller/New() + for(var/turf/simulated/floor/beach/water/W in range(srange,src)) + src.linkedturfs += W + processing_objects.Add(src) + +/obj/machinery/poolcontroller/attack_hand() + if(!Adjacent(usr)) + usr << "You moved away." + return + var/temp = input("What temperature would you like to set the pool to?", "Pool Temperature") in list("Hot","Cold","Normal","Cancel") + switch(temp) + if("Hot") + temperature = "hot" + if("Cold") + temperature = "cold" + if("Normal") + temperature = "normal" + if("Cancel") + return + + usr << "You flick the pool temperature to [temperature]." + +/obj/machinery/poolcontroller/process() + if(!linkedturfs) + processing_objects.Remove(src) + return + for(var/turf/simulated/floor/beach/water/W in linkedturfs) + for(var/mob/M in W) + if(M) + updateMobs() + +/obj/machinery/poolcontroller/proc/updateMobs() + for(var/turf/simulated/floor/beach/water/W in linkedturfs) + for(var/mob/M in W) + switch(temperature) + if("hot") + if(ishuman(M)) + var/mob/living/carbon/human/H = M + H.bodytemperature = min(500, H.bodytemperature + 35) + H.adjustFireLoss(5) + H << "The water is searing hot!" + else + M.bodytemperature = min(500, M.bodytemperature + 35) + M << "The water is searing hot!" + + if("cold") + if(ishuman(M)) + var/mob/living/carbon/human/H = M + H.bodytemperature = max(80, H.bodytemperature - 80) + H.adjustFireLoss(5) + H << "The water is freezing!" + else + M.bodytemperature = max(80, M.bodytemperature - 80) + M << "The water is freezing!" + + if("normal") + return \ No newline at end of file diff --git a/paradise.dme b/paradise.dme index d84b2c5f513..488f052f047 100644 --- a/paradise.dme +++ b/paradise.dme @@ -449,6 +449,7 @@ #include "code\game\machinery\OpTable.dm" #include "code\game\machinery\overview.dm" #include "code\game\machinery\PDApainter.dm" +#include "code\game\machinery\poolcontroller.dm" #include "code\game\machinery\portable_tag_turret.dm" #include "code\game\machinery\portable_turret.dm" #include "code\game\machinery\programmable_unloader.dm" From f58d3a9b75d4e2c1d28647d07d44006d8950e3cf Mon Sep 17 00:00:00 2001 From: Tigercat2000 Date: Thu, 5 Mar 2015 22:46:36 +0100 Subject: [PATCH 12/27] Poolcontroller update-fix --- code/game/machinery/poolcontroller.dm | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/code/game/machinery/poolcontroller.dm b/code/game/machinery/poolcontroller.dm index 662649f087f..e8730ccc895 100644 --- a/code/game/machinery/poolcontroller.dm +++ b/code/game/machinery/poolcontroller.dm @@ -33,10 +33,7 @@ if(!linkedturfs) processing_objects.Remove(src) return - for(var/turf/simulated/floor/beach/water/W in linkedturfs) - for(var/mob/M in W) - if(M) - updateMobs() + updateMobs() /obj/machinery/poolcontroller/proc/updateMobs() for(var/turf/simulated/floor/beach/water/W in linkedturfs) @@ -48,9 +45,11 @@ H.bodytemperature = min(500, H.bodytemperature + 35) H.adjustFireLoss(5) H << "The water is searing hot!" + return else M.bodytemperature = min(500, M.bodytemperature + 35) M << "The water is searing hot!" + return if("cold") if(ishuman(M)) @@ -58,9 +57,11 @@ H.bodytemperature = max(80, H.bodytemperature - 80) H.adjustFireLoss(5) H << "The water is freezing!" + return else M.bodytemperature = max(80, M.bodytemperature - 80) M << "The water is freezing!" + return if("normal") return \ No newline at end of file From 0ffe412121280d555a1b17e8baa4d08b20316f35 Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Thu, 5 Mar 2015 18:33:18 -0500 Subject: [PATCH 13/27] Pressure protection --- code/modules/mob/living/carbon/human/life.dm | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 6f308b89e10..9c0c1c0fee0 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -146,10 +146,8 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc var/pressure_difference = abs( pressure - ONE_ATMOSPHERE ) var/pressure_adjustment_coefficient = 1 //Determins how much the clothing you are wearing protects you in percent. - if(wear_suit && (wear_suit.flags & STOPSPRESSUREDMAGE)) - pressure_adjustment_coefficient -= PRESSURE_SUIT_REDUCTION_COEFFICIENT - if(head && (head.flags & STOPSPRESSUREDMAGE)) - pressure_adjustment_coefficient -= PRESSURE_HEAD_REDUCTION_COEFFICIENT + if(wear_suit && (wear_suit.flags & STOPSPRESSUREDMAGE) && head && (head.flags & STOPSPRESSUREDMAGE)) // Complete set of pressure-proof suit worn, assume fully sealed. + pressure_adjustment_coefficient = 0 pressure_adjustment_coefficient = max(pressure_adjustment_coefficient,0) //So it isn't less than 0 pressure_difference = pressure_difference * pressure_adjustment_coefficient if(pressure > ONE_ATMOSPHERE) From a74bb8a710f69ea681b7dcdfe6bb422565f75c81 Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Thu, 5 Mar 2015 20:30:18 -0500 Subject: [PATCH 14/27] Fire Fixes --- code/ZAS/Fire.dm | 2 +- code/modules/mob/living/carbon/species.dm | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/code/ZAS/Fire.dm b/code/ZAS/Fire.dm index dfc78987eb3..6af57fc4870 100644 --- a/code/ZAS/Fire.dm +++ b/code/ZAS/Fire.dm @@ -153,7 +153,7 @@ turf/simulated/hotspot_expose(exposed_temperature, exposed_volume, soh) //im not sure how to implement a version that works for every creature so for now monkeys are firesafe for(var/mob/living/carbon/human/M in loc) - M.FireBurn(firelevel, air_contents.temperature, air_contents.return_pressure() ) //Burn the humans! +// M.FireBurn(firelevel, air_contents.temperature, air_contents.return_pressure() ) //Burn the humans! loc.fire_act(air_contents, air_contents.temperature, air_contents.return_volume()) for(var/atom/A in loc) diff --git a/code/modules/mob/living/carbon/species.dm b/code/modules/mob/living/carbon/species.dm index c7dd21ab74d..2990c210f48 100644 --- a/code/modules/mob/living/carbon/species.dm +++ b/code/modules/mob/living/carbon/species.dm @@ -655,9 +655,9 @@ cold_level_3 = -1 heat_level_1 = 500 //gives them about 25 seconds in space before taking damage - heat_level_2 = 1000 - heat_level_3 = 2000 - heat_level_3_breathe = 2000 + heat_level_2 = 540 + heat_level_3 = 600 + heat_level_3_breathe = 600 synth_temp_gain = 10 //this should cause IPCs to stabilize at ~80 C in a 20 C environment. From 7e542873fe74185cea7abc874fdd97f4ad514c93 Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Fri, 6 Mar 2015 01:13:03 -0500 Subject: [PATCH 15/27] Fixes --- code/datums/uplink_item.dm | 2 +- .../objects/items/devices/radio/encryptionkey.dm | 7 ------- code/game/turfs/simulated/walls_reinforced.dm | 5 +++-- .../research/designs/mechfabricator_designs.dm | 3 ++- code/modules/research/designs/medical_designs.dm | 3 +++ code/modules/research/designs/power_designs.dm | 12 ++++++++---- maps/cyberiad.dmm | 2 +- 7 files changed, 18 insertions(+), 16 deletions(-) diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm index 1aae642647b..bf2e773651c 100644 --- a/code/datums/uplink_item.dm +++ b/code/datums/uplink_item.dm @@ -521,7 +521,7 @@ var/list/uplink_items = list() /datum/uplink_item/device_tools/cipherkey name = "Syndicate Encryption Key" desc = "A key, that when inserted into a radio headset, allows you to listen to all station department channels as well as talk on an encrypted Syndicate channel." - item = /obj/item/device/encryptionkey/syndicate/hacked + item = /obj/item/device/encryptionkey/syndicate cost = 5 /datum/uplink_item/device_tools/hacked_module diff --git a/code/game/objects/items/devices/radio/encryptionkey.dm b/code/game/objects/items/devices/radio/encryptionkey.dm index 2c112dc12d0..e16d07ec59b 100644 --- a/code/game/objects/items/devices/radio/encryptionkey.dm +++ b/code/game/objects/items/devices/radio/encryptionkey.dm @@ -21,13 +21,6 @@ origin_tech = "syndicate=3" syndie = 1 //Signifies that it de-crypts Syndicate transmissions -/obj/item/device/encryptionkey/syndicate/hacked - name = "Standard Encryption Key" - desc = "An encryption key for a radio headset. Has no special codes in it. Looks more sophisticated than usual." - channels = list("Command" = 0, "Security" = 0, "Engineering" = 0, "Science" = 0, "Medical" = 0, "Supply" = 0, "Service" = 0, "Syndicate" = 1) - origin_tech = "syndicate=3" - syndie = 1 - /obj/item/device/encryptionkey/binary name = "binary translator key" desc = "An encryption key for a radio headset. To access the binary channel, use :b." diff --git a/code/game/turfs/simulated/walls_reinforced.dm b/code/game/turfs/simulated/walls_reinforced.dm index 9514e9c7afd..1ff89a02a3f 100644 --- a/code/game/turfs/simulated/walls_reinforced.dm +++ b/code/game/turfs/simulated/walls_reinforced.dm @@ -13,6 +13,7 @@ var/d_state = 0 /turf/simulated/wall/r_wall/attack_hand(mob/user as mob) + user.changeNext_move(CLICK_CD_MELEE) if (HULK in user.mutations) if (prob(10) || rotting) usr << text("\blue You smash through the wall.") @@ -34,7 +35,7 @@ /turf/simulated/wall/r_wall/attackby(obj/item/W as obj, mob/user as mob, params) - + user.changeNext_move(CLICK_CD_MELEE) if (!(istype(user, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey") user << "You don't have the dexterity to do this!" return @@ -286,7 +287,7 @@ else if( istype(W,/obj/item/apc_frame) ) var/obj/item/apc_frame/AH = W AH.try_build(src) - + else if(istype(W,/obj/item/newscaster_frame)) var/obj/item/newscaster_frame/AH = W AH.try_build(src) diff --git a/code/modules/research/designs/mechfabricator_designs.dm b/code/modules/research/designs/mechfabricator_designs.dm index fe9acc74a7c..b7d49332314 100644 --- a/code/modules/research/designs/mechfabricator_designs.dm +++ b/code/modules/research/designs/mechfabricator_designs.dm @@ -849,7 +849,8 @@ build_type = MECHFAB req_tech = list("combat" = 4, "syndicate" = 3) build_path = /obj/item/borg/upgrade/syndicate - category = "Cyborg Upgrade Modules" + materials = list("$metal"=10000,"$glass"=15000,"$diamond" = 10000) + construction_time = 120 category = list("Cyborg Upgrade Modules") /datum/design/borg_upgrade_jetpack diff --git a/code/modules/research/designs/medical_designs.dm b/code/modules/research/designs/medical_designs.dm index b6b01c63872..0c03f1c6756 100644 --- a/code/modules/research/designs/medical_designs.dm +++ b/code/modules/research/designs/medical_designs.dm @@ -75,6 +75,7 @@ req_tech = list("programming" = 2, "biotech" = 3) build_type = PROTOLATHE | MECHFAB materials = list("$metal" = 1000, "$glass" = 500) + construction_time = 75 reliability_base = 76 build_path = /obj/item/device/mmi category = list("Misc","Medical") @@ -107,6 +108,7 @@ req_tech = list("programming" = 2, "biotech" = 4) build_type = PROTOLATHE | MECHFAB materials = list("$metal" = 1200, "$glass" = 500) + construction_time = 75 reliability_base = 74 build_path = /obj/item/device/mmi/radio_enabled category = list("Misc","Medical") @@ -139,6 +141,7 @@ req_tech = list("magnets" = 3, "combat" = 2) build_type = MECHFAB materials = list("$metal" = 750, "$glass" = 750) + construction_time = 100 reliability_base = 76 build_path = /obj/item/device/flash/synthetic category = list("Misc") diff --git a/code/modules/research/designs/power_designs.dm b/code/modules/research/designs/power_designs.dm index 9edc8400e3e..76524f5429a 100644 --- a/code/modules/research/designs/power_designs.dm +++ b/code/modules/research/designs/power_designs.dm @@ -9,6 +9,7 @@ req_tech = list("powerstorage" = 1) build_type = PROTOLATHE | AUTOLATHE | MECHFAB materials = list("$metal" = 700, "$glass" = 50) + construction_time=100 build_path = /obj/item/weapon/stock_parts/cell category = list("Misc","Power") @@ -19,9 +20,10 @@ req_tech = list("powerstorage" = 2) build_type = PROTOLATHE | AUTOLATHE | MECHFAB materials = list("$metal" = 700, "$glass" = 60) + construction_time=100 build_path = /obj/item/weapon/stock_parts/cell/high category = list("Misc","Power") - + /datum/design/hyper_cell name = "Hyper-Capacity Power Cell" desc = "A power cell that holds 30000 units of energy" @@ -30,9 +32,10 @@ reliability_base = 70 build_type = PROTOLATHE | MECHFAB materials = list("$metal" = 400, "$gold" = 150, "$silver" = 150, "$glass" = 70) + construction_time=100 build_path = /obj/item/weapon/stock_parts/cell/hyper category = list("Misc","Power") - + /datum/design/super_cell name = "Super-Capacity Power Cell" desc = "A power cell that holds 20000 units of energy" @@ -41,9 +44,10 @@ reliability_base = 75 build_type = PROTOLATHE | MECHFAB materials = list("$metal" = 700, "$glass" = 70) + construction_time=100 build_path = /obj/item/weapon/stock_parts/cell/super category = list("Misc","Power") - + /datum/design/pacman name = "Machine Board (PACMAN-type Generator)" desc = "The circuit board that for a PACMAN-type portable generator." @@ -54,7 +58,7 @@ materials = list("$glass" = 1000, "sacid" = 20) build_path = /obj/item/weapon/circuitboard/pacman category = list("Engineering Machinery") - + /datum/design/mrspacman name = "Machine Board (MRSPACMAN-type Generator)" desc = "The circuit board that for a MRSPACMAN-type portable generator." diff --git a/maps/cyberiad.dmm b/maps/cyberiad.dmm index 07a8e6e722e..28bc95721f3 100644 --- a/maps/cyberiad.dmm +++ b/maps/cyberiad.dmm @@ -8352,7 +8352,7 @@ "deF" = (/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/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "deG" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/obj/structure/flora/bush,/turf/unsimulated/floor{tag = "icon-gravsnow_corner (WEST)"; icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"; dir = 8},/area/syndicate_mothership) "deH" = (/obj/effect/landmark{name = "Nuclear-Bomb"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"deI" = (/obj/machinery/telecomms/allinone,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) +"deI" = (/obj/machinery/telecomms/allinone{intercept = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "deJ" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/regular,/obj/item/robot_parts/r_arm,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "deK" = (/obj/structure/closet/crate/internals,/obj/item/weapon/tank/oxygen/red,/obj/item/clothing/mask/gas,/obj/item/weapon/tank/oxygen/red,/obj/item/clothing/mask/gas,/obj/item/weapon/tank/oxygen/red,/obj/item/clothing/mask/gas,/obj/item/weapon/tank/oxygen/red,/obj/item/clothing/mask/gas,/obj/item/weapon/tank/oxygen/red,/obj/item/clothing/mask/gas,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "deL" = (/obj/structure/closet/crate/medical,/obj/item/weapon/surgicaldrill,/obj/item/weapon/scalpel,/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) From 438efadc7eb6c3dc1ce819b47d99e6c3e2d5a65e Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Fri, 6 Mar 2015 02:35:36 -0500 Subject: [PATCH 16/27] Cryo Fixes --- code/game/machinery/cryo.dm | 42 ++++++++++++++++++------------------- 1 file changed, 20 insertions(+), 22 deletions(-) diff --git a/code/game/machinery/cryo.dm b/code/game/machinery/cryo.dm index 0d92be24127..d60fefe0b34 100644 --- a/code/game/machinery/cryo.dm +++ b/code/game/machinery/cryo.dm @@ -13,6 +13,7 @@ var/obj/item/weapon/reagent_containers/glass/beaker = null var/autoeject = 0 + var/next_trans = 0 var/current_heat_capacity = 50 var/efficiency @@ -38,7 +39,7 @@ component_parts += new /obj/item/stack/cable_coil(src, 1) RefreshParts() -/obj/machinery/atmospherics/unary/cryo_cell/New() +/obj/machinery/atmospherics/unary/cryo_cell/upgraded/New() ..() component_parts = list() component_parts += new /obj/item/weapon/circuitboard/cryo_tube(src) @@ -128,15 +129,13 @@ if(!on) return - if(occupant) - if(occupant.stat != 2) - process_occupant() - if(air_contents) temperature_archived = air_contents.temperature heat_gas_contents() expel_gas() + if(occupant) + process_occupant() if(abs(temperature_archived-air_contents.temperature) > 1) network.update = 1 @@ -220,7 +219,7 @@ data["beakerVolume"] += R.volume data["autoeject"] = autoeject - + // update the ui if it exists, returns null if no ui is passed/found ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) if (!ui) @@ -319,11 +318,11 @@ if(air_contents.total_moles() < 10) return if(occupant) - if(occupant.stat == 2) + if(occupant.stat == 2 || occupant.health >= 100) //Why waste energy on dead or healthy people + occupant.bodytemperature = T0C return occupant.bodytemperature += 2*(air_contents.temperature - occupant.bodytemperature)*current_heat_capacity/(current_heat_capacity + air_contents.heat_capacity()) occupant.bodytemperature = max(occupant.bodytemperature, air_contents.temperature) // this is so ugly i'm sorry for doing it i'll fix it later i promise - occupant.stat = 1 if(occupant.bodytemperature < T0C) occupant.sleeping = max(5/efficiency, (1/occupant.bodytemperature)*2000/efficiency) occupant.Paralyse(max(5/efficiency, (1/occupant.bodytemperature)*3000/efficiency)) @@ -333,17 +332,17 @@ occupant.adjustOxyLoss(-1) //severe damage should heal waaay slower without proper chemicals if(occupant.bodytemperature < 225) - if (occupant.getToxLoss()) + if(occupant.getToxLoss()) occupant.adjustToxLoss(max(-efficiency, (-20*(efficiency ** 2)) / occupant.getToxLoss())) var/heal_brute = occupant.getBruteLoss() ? min(efficiency, 20*(efficiency**2) / occupant.getBruteLoss()) : 0 var/heal_fire = occupant.getFireLoss() ? min(efficiency, 20*(efficiency**2) / occupant.getFireLoss()) : 0 occupant.heal_organ_damage(heal_brute,heal_fire) - var/has_cryo = occupant.reagents.get_reagent_amount("cryoxadone") >= 1 - var/has_clonexa = occupant.reagents.get_reagent_amount("clonexadone") >= 1 - var/has_cryo_medicine = has_cryo || has_clonexa - if(beaker && !has_cryo_medicine) - beaker.reagents.trans_to(occupant, 1, 1) + if(beaker && next_trans == 0) + beaker.reagents.trans_to(occupant, 1, 10) beaker.reagents.reaction(occupant) + next_trans++ + if(next_trans == 10) + next_trans = 0 /obj/machinery/atmospherics/unary/cryo_cell/proc/heat_gas_contents() if(air_contents.total_moles() < 1) @@ -357,13 +356,12 @@ /obj/machinery/atmospherics/unary/cryo_cell/proc/expel_gas() if(air_contents.total_moles() < 1) return -// var/datum/gas_mixture/expel_gas = new -// var/remove_amount = air_contents.total_moles()/50 -// expel_gas = air_contents.remove(remove_amount) - - // Just have the gas disappear to nowhere. - //expel_gas.temperature = T20C // Lets expel hot gas and see if that helps people not die as they are removed - //loc.assume_air(expel_gas) + var/datum/gas_mixture/expel_gas = new + var/remove_amount = air_contents.total_moles()/100 + expel_gas = air_contents.remove(remove_amount) + expel_gas.temperature = T20C // Lets expel hot gas and see if that helps people not die as they are removed + loc.assume_air(expel_gas) + update_nearby_tiles() /obj/machinery/atmospherics/unary/cryo_cell/proc/go_out() if(!( occupant )) @@ -415,7 +413,7 @@ if (usr.stat == 2)//and he's not dead.... return usr << "\blue Release sequence activated. This will take two minutes." - sleep(1200) + sleep(600) if(!src || !usr || !occupant || (occupant != usr)) //Check if someone's released/replaced/bombed him already return go_out()//and release him from the eternal prison. From d09e3cca3571670e4435499c001f6a3761279fba Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Fri, 6 Mar 2015 07:15:21 -0500 Subject: [PATCH 17/27] Xeno attack borg fix --- .../modules/mob/living/silicon/robot/robot.dm | 65 +++++++++++++++---- 1 file changed, 52 insertions(+), 13 deletions(-) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 79c5fc8b469..3f70e98c3ac 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -904,24 +904,63 @@ var/list/robot_verbs_default = list( usr << "You unlock your cover." /mob/living/silicon/robot/attack_alien(mob/living/carbon/alien/humanoid/M as mob) - if (M.a_intent =="disarm") - if(!(lying)) + if (!ticker) + M << "You cannot attack people before the game has started." + return + + if (istype(loc, /turf) && istype(loc.loc, /area/start)) + M << "No attacking people at spawn, you jackass." + return + + switch(M.a_intent) + + if ("help") + for(var/mob/O in viewers(src, null)) + if ((O.client && !( O.blinded ))) + O.show_message(text("[M] caresses [src]'s plating with its scythe like arm."), 1) + + if ("grab") + if (M == src || anchored) + return + var/obj/item/weapon/grab/G = new /obj/item/weapon/grab(M, src ) + + M.put_in_active_hand(G) + + G.synch() + playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) + visible_message("[M] has grabbed [src] passively!") + + if ("harm") M.do_attack_animation(src) - if (prob(85)) - Stun(7) - step(src,get_dir(M,src)) - spawn(5) - step(src,get_dir(M,src)) - add_logs(M, src, "pushed", admin=0) - playsound(loc, 'sound/weapons/pierce.ogg', 50, 1, -1) - visible_message("[M] has forced back [src]!", \ - "[M] has forced back [src]!") + var/damage = rand(10, 20) + if (prob(90)) + playsound(loc, 'sound/weapons/slash.ogg', 25, 1, -1) + visible_message("[M] has slashed at [src]!",\ + "[M] has slashed at [src]!") + if(prob(8)) + flick("noise", flash) + adjustBruteLoss(damage) + updatehealth() else playsound(loc, 'sound/weapons/slashmiss.ogg', 25, 1, -1) visible_message("[M] took a swipe at [src]!", \ "[M] took a swipe at [src]!") - else - ..() + + if ("disarm") + if(!(lying)) + M.do_attack_animation(src) + if (prob(85)) + Stun(7) + step(src,get_dir(M,src)) + spawn(5) + step(src,get_dir(M,src)) + playsound(loc, 'sound/weapons/pierce.ogg', 50, 1, -1) + visible_message("[M] has forced back [src]!",\ + "[M] has forced back [src]!") + else + playsound(loc, 'sound/weapons/slashmiss.ogg', 25, 1, -1) + visible_message("[M] attempted to force back [src]!",\ + "[M] attempted to force back [src]!") return From 769c5630ea83ce268a0bb6bf066f8af02efc8f84 Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Fri, 6 Mar 2015 07:15:47 -0500 Subject: [PATCH 18/27] Revert "Xeno attack borg fix" This reverts commit d09e3cca3571670e4435499c001f6a3761279fba. --- .../modules/mob/living/silicon/robot/robot.dm | 65 ++++--------------- 1 file changed, 13 insertions(+), 52 deletions(-) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 3f70e98c3ac..79c5fc8b469 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -904,63 +904,24 @@ var/list/robot_verbs_default = list( usr << "You unlock your cover." /mob/living/silicon/robot/attack_alien(mob/living/carbon/alien/humanoid/M as mob) - if (!ticker) - M << "You cannot attack people before the game has started." - return - - if (istype(loc, /turf) && istype(loc.loc, /area/start)) - M << "No attacking people at spawn, you jackass." - return - - switch(M.a_intent) - - if ("help") - for(var/mob/O in viewers(src, null)) - if ((O.client && !( O.blinded ))) - O.show_message(text("[M] caresses [src]'s plating with its scythe like arm."), 1) - - if ("grab") - if (M == src || anchored) - return - var/obj/item/weapon/grab/G = new /obj/item/weapon/grab(M, src ) - - M.put_in_active_hand(G) - - G.synch() - playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) - visible_message("[M] has grabbed [src] passively!") - - if ("harm") + if (M.a_intent =="disarm") + if(!(lying)) M.do_attack_animation(src) - var/damage = rand(10, 20) - if (prob(90)) - playsound(loc, 'sound/weapons/slash.ogg', 25, 1, -1) - visible_message("[M] has slashed at [src]!",\ - "[M] has slashed at [src]!") - if(prob(8)) - flick("noise", flash) - adjustBruteLoss(damage) - updatehealth() + if (prob(85)) + Stun(7) + step(src,get_dir(M,src)) + spawn(5) + step(src,get_dir(M,src)) + add_logs(M, src, "pushed", admin=0) + playsound(loc, 'sound/weapons/pierce.ogg', 50, 1, -1) + visible_message("[M] has forced back [src]!", \ + "[M] has forced back [src]!") else playsound(loc, 'sound/weapons/slashmiss.ogg', 25, 1, -1) visible_message("[M] took a swipe at [src]!", \ "[M] took a swipe at [src]!") - - if ("disarm") - if(!(lying)) - M.do_attack_animation(src) - if (prob(85)) - Stun(7) - step(src,get_dir(M,src)) - spawn(5) - step(src,get_dir(M,src)) - playsound(loc, 'sound/weapons/pierce.ogg', 50, 1, -1) - visible_message("[M] has forced back [src]!",\ - "[M] has forced back [src]!") - else - playsound(loc, 'sound/weapons/slashmiss.ogg', 25, 1, -1) - visible_message("[M] attempted to force back [src]!",\ - "[M] attempted to force back [src]!") + else + ..() return From 0c751dc7f6c0356cfc2aa5daeb663cb2dad20aae Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Fri, 6 Mar 2015 07:20:57 -0500 Subject: [PATCH 19/27] Xeno attack borg fix --- .../modules/mob/living/silicon/robot/robot.dm | 65 +++++++++++++++---- 1 file changed, 52 insertions(+), 13 deletions(-) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 79c5fc8b469..3f70e98c3ac 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -904,24 +904,63 @@ var/list/robot_verbs_default = list( usr << "You unlock your cover." /mob/living/silicon/robot/attack_alien(mob/living/carbon/alien/humanoid/M as mob) - if (M.a_intent =="disarm") - if(!(lying)) + if (!ticker) + M << "You cannot attack people before the game has started." + return + + if (istype(loc, /turf) && istype(loc.loc, /area/start)) + M << "No attacking people at spawn, you jackass." + return + + switch(M.a_intent) + + if ("help") + for(var/mob/O in viewers(src, null)) + if ((O.client && !( O.blinded ))) + O.show_message(text("[M] caresses [src]'s plating with its scythe like arm."), 1) + + if ("grab") + if (M == src || anchored) + return + var/obj/item/weapon/grab/G = new /obj/item/weapon/grab(M, src ) + + M.put_in_active_hand(G) + + G.synch() + playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) + visible_message("[M] has grabbed [src] passively!") + + if ("harm") M.do_attack_animation(src) - if (prob(85)) - Stun(7) - step(src,get_dir(M,src)) - spawn(5) - step(src,get_dir(M,src)) - add_logs(M, src, "pushed", admin=0) - playsound(loc, 'sound/weapons/pierce.ogg', 50, 1, -1) - visible_message("[M] has forced back [src]!", \ - "[M] has forced back [src]!") + var/damage = rand(10, 20) + if (prob(90)) + playsound(loc, 'sound/weapons/slash.ogg', 25, 1, -1) + visible_message("[M] has slashed at [src]!",\ + "[M] has slashed at [src]!") + if(prob(8)) + flick("noise", flash) + adjustBruteLoss(damage) + updatehealth() else playsound(loc, 'sound/weapons/slashmiss.ogg', 25, 1, -1) visible_message("[M] took a swipe at [src]!", \ "[M] took a swipe at [src]!") - else - ..() + + if ("disarm") + if(!(lying)) + M.do_attack_animation(src) + if (prob(85)) + Stun(7) + step(src,get_dir(M,src)) + spawn(5) + step(src,get_dir(M,src)) + playsound(loc, 'sound/weapons/pierce.ogg', 50, 1, -1) + visible_message("[M] has forced back [src]!",\ + "[M] has forced back [src]!") + else + playsound(loc, 'sound/weapons/slashmiss.ogg', 25, 1, -1) + visible_message("[M] attempted to force back [src]!",\ + "[M] attempted to force back [src]!") return From 8b66dfc0633721422100c05d29299a0a123c015f Mon Sep 17 00:00:00 2001 From: Tigercat2000 Date: Fri, 6 Mar 2015 17:19:51 +0100 Subject: [PATCH 20/27] Final pool controller commit, Warm and Cool modes added, Hot and Cold moved to emag-only. --- code/game/machinery/poolcontroller.dm | 138 ++++++++++++++++++-------- 1 file changed, 96 insertions(+), 42 deletions(-) diff --git a/code/game/machinery/poolcontroller.dm b/code/game/machinery/poolcontroller.dm index e8730ccc895..51885cbcc5b 100644 --- a/code/game/machinery/poolcontroller.dm +++ b/code/game/machinery/poolcontroller.dm @@ -3,65 +3,119 @@ desc = "A controller for the nearby pool." icon = 'icons/obj/airlock_machines.dmi' icon_state = "airlock_control_standby" - var/list/linkedturfs = list() - var/temperature = "normal" - var/srange = 5 + var/list/linkedturfs = list() //List contains all of the linked pool turfs to this controller, assignment happens on New() + var/temperature = "normal" //The temperature of the pool, starts off on normal, which has no effects. + var/srange = 5 //The range of the search for pool turfs, change this for bigger or smaller pools. -/obj/machinery/poolcontroller/New() - for(var/turf/simulated/floor/beach/water/W in range(srange,src)) - src.linkedturfs += W - processing_objects.Add(src) +/obj/machinery/poolcontroller/New() //This proc automatically happens on world start + for(var/turf/simulated/floor/beach/water/W in range(srange,src)) //Search for /turf/simulated/floor/beach/water in the range of var/srange + src.linkedturfs += W //Add found pool turfs to the central list. + processing_objects.Add(src) //Add the pool controller to the processing queue to tie mob effects to the air controller. + +/obj/machinery/poolcontroller/emag_act(user as mob) //Emag_act, this is called when it is hit with a cryptographic sequencer. + if(!emagged) //If it is not already emagged, emag it. + user << "\red You disable \the [src]'s temperature safeguards." //Inform the mob of what emagging does. + emagged = 1 //Set the emag var to true. + +/obj/machinery/poolcontroller/attackby(obj/item/P as obj, mob/user as mob, params) //Proc is called when a user hits the pool controller with something. + + if(istype(P,/obj/item/device/multitool)) //If the mob hits the pool controller with a multitool, reset the emagged status + if(emagged) //Check the emag status + user << "\red You re-enable \the [src]'s temperature safeguards." //Inform the user that they have just fixed the safeguards. + emagged = 0 //Set the emagged var to false. + return + else + user << "\red Nothing happens." //If not emagged, don't do anything, and don't tell the user that it can be emagged. + + return //Return, nothing else needs to be done. + else //If it's not a multitool, defer to /obj/machinery/proc/attackby + ..() /obj/machinery/poolcontroller/attack_hand() if(!Adjacent(usr)) usr << "You moved away." return - var/temp = input("What temperature would you like to set the pool to?", "Pool Temperature") in list("Hot","Cold","Normal","Cancel") - switch(temp) - if("Hot") - temperature = "hot" - if("Cold") - temperature = "cold" - if("Normal") - temperature = "normal" - if("Cancel") - return - usr << "You flick the pool temperature to [temperature]." + if(emagged) //Emagging unlocks more (deadly) options. + var/temp = input("What temperature would you like to set the pool to?", "Pool Temperature") in list("Hot","Cold", "Warm", "Cool", "Normal","Cancel") //Allow user to choose which temperature they want. + + switch(temp) //Used for setting the actual temperature var based on user input. + if("Hot") + temperature = "hot" + usr << "You flick the pool temperature to [temperature](WARNING)." //Differ from standard message to make sure the user understands the temperature is harmful. + return + if("Cold") + temperature = "cold" + usr << "You flick the pool temperature to [temperature](WARNING)." //Differ from standard message to make sure the user understands the temperature is harmful. + return + + //Regular non-traitorous temperature choices still avalible. + if("Warm") + temperature = "warm" + if("Cool") + temperature = "cool" + if("Normal") + temperature = "normal" + if("Cancel") + return + + usr << "You flick the pool temperature to [temperature]." //Inform the mob of the temperature they just picked. + return + + else + var/temp = input("What temperature would you like to set the pool to?", "Pool Temperature") in list("Warm","Cool","Normal","Cancel") //Allow user to choose which temperature they want. + + switch(temp) //Used for setting the actual temperature var based on user input. + if("Warm") + temperature = "warm" + if("Cool") + temperature = "cool" + if("Normal") + temperature = "normal" + if("Cancel") //Cancel does nothing and leaves the temperature at it's previous state. + return + + usr << "You flick the pool temperature to [temperature]." //Display what the user picked. + return /obj/machinery/poolcontroller/process() - if(!linkedturfs) + if(!linkedturfs) //If no pool tiles are linked, remove the controller from the processing queue, no sense wasting processing power on it. processing_objects.Remove(src) return - updateMobs() + + updateMobs() //Call the mob affecting proc /obj/machinery/poolcontroller/proc/updateMobs() - for(var/turf/simulated/floor/beach/water/W in linkedturfs) - for(var/mob/M in W) - switch(temperature) - if("hot") + for(var/turf/simulated/floor/beach/water/W in linkedturfs) //Check for pool-turfs linked to the controller. + for(var/mob/M in W) //Check for mobs in the linked pool-turfs. + switch(temperature) //Apply different effects based on what the temperature is set to. + if("hot") //Burn the mob. if(ishuman(M)) - var/mob/living/carbon/human/H = M - H.bodytemperature = min(500, H.bodytemperature + 35) + var/mob/living/carbon/human/H = M //If humanoid, directly apply fire damage for quicker effect. H.adjustFireLoss(5) - H << "The water is searing hot!" - return - else - M.bodytemperature = min(500, M.bodytemperature + 35) - M << "The water is searing hot!" - return - if("cold") + M.bodytemperature = min(500, M.bodytemperature + 35) //heat mob at 35k(elvin) per cycle + M << "The water is searing hot!" + return + + if("cold") //Freeze the mob. if(ishuman(M)) - var/mob/living/carbon/human/H = M - H.bodytemperature = max(80, H.bodytemperature - 80) + var/mob/living/carbon/human/H = M //If humanoid, directly apply fire damage for quicker effect. H.adjustFireLoss(5) - H << "The water is freezing!" - return - else - M.bodytemperature = max(80, M.bodytemperature - 80) - M << "The water is freezing!" - return - if("normal") + M.bodytemperature = max(80, M.bodytemperature - 80) //Quickly cool mob at -80k per cycle + M << "The water is freezing!" + return + + if("normal") //Normal temp does nothing, because it's just room temperature water. + return + + if("warm") //Gently warm the mob. + M.bodytemperature = min(330, M.bodytemperature + 10) //Heats up mobs to just over normal, not enough to burn + M << "The water is quite warm." //Inform the mob it's warm water. + return + + if("cool") //Gently cool the mob. + M.bodytemperature = max(290, M.bodytemperature - 15) //Cools mobs to just below normal, not enough to burn + M << "The water is chilly." //Inform the mob it's chilly water. return \ No newline at end of file From 5262b56abd913ac7687a8769aa687ec49957bf3f Mon Sep 17 00:00:00 2001 From: Tigercat2000 Date: Fri, 6 Mar 2015 18:32:36 +0100 Subject: [PATCH 21/27] Hot mode now spawns mist on the pool as a warning --- code/game/machinery/poolcontroller.dm | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/code/game/machinery/poolcontroller.dm b/code/game/machinery/poolcontroller.dm index 51885cbcc5b..031a0a2de76 100644 --- a/code/game/machinery/poolcontroller.dm +++ b/code/game/machinery/poolcontroller.dm @@ -6,6 +6,8 @@ var/list/linkedturfs = list() //List contains all of the linked pool turfs to this controller, assignment happens on New() var/temperature = "normal" //The temperature of the pool, starts off on normal, which has no effects. var/srange = 5 //The range of the search for pool turfs, change this for bigger or smaller pools. + var/linkedmist = list() //Used to keep track of created mist + var/misted = 0 //Used to check for mist. /obj/machinery/poolcontroller/New() //This proc automatically happens on world start for(var/turf/simulated/floor/beach/water/W in range(srange,src)) //Search for /turf/simulated/floor/beach/water in the range of var/srange @@ -41,12 +43,14 @@ switch(temp) //Used for setting the actual temperature var based on user input. if("Hot") + miston() temperature = "hot" usr << "You flick the pool temperature to [temperature](WARNING)." //Differ from standard message to make sure the user understands the temperature is harmful. return if("Cold") temperature = "cold" usr << "You flick the pool temperature to [temperature](WARNING)." //Differ from standard message to make sure the user understands the temperature is harmful. + mistoff() //this won't get called otherwise return //Regular non-traitorous temperature choices still avalible. @@ -59,6 +63,7 @@ if("Cancel") return + mistoff() usr << "You flick the pool temperature to [temperature]." //Inform the mob of the temperature they just picked. return @@ -75,6 +80,7 @@ if("Cancel") //Cancel does nothing and leaves the temperature at it's previous state. return + mistoff() usr << "You flick the pool temperature to [temperature]." //Display what the user picked. return @@ -118,4 +124,18 @@ if("cool") //Gently cool the mob. M.bodytemperature = max(290, M.bodytemperature - 15) //Cools mobs to just below normal, not enough to burn M << "The water is chilly." //Inform the mob it's chilly water. - return \ No newline at end of file + return + +/obj/machinery/poolcontroller/proc/miston() + for(var/turf/simulated/floor/beach/water/W in linkedturfs) + var/M = new /obj/effect/mist(W) + if(misted) + return + linkedmist += M + + misted = 1 + +/obj/machinery/poolcontroller/proc/mistoff() + for(var/obj/effect/mist/M in linkedmist) + del(M) + misted = 0 \ No newline at end of file From 59ec3b8df771a8cfc071c3166ab36f07b38a77b6 Mon Sep 17 00:00:00 2001 From: Tigercat2000 Date: Fri, 6 Mar 2015 18:52:10 +0100 Subject: [PATCH 22/27] Change process system in accordance to MarkvA's line comments --- code/game/machinery/poolcontroller.dm | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/code/game/machinery/poolcontroller.dm b/code/game/machinery/poolcontroller.dm index 031a0a2de76..ad7137a81b2 100644 --- a/code/game/machinery/poolcontroller.dm +++ b/code/game/machinery/poolcontroller.dm @@ -12,7 +12,7 @@ /obj/machinery/poolcontroller/New() //This proc automatically happens on world start for(var/turf/simulated/floor/beach/water/W in range(srange,src)) //Search for /turf/simulated/floor/beach/water in the range of var/srange src.linkedturfs += W //Add found pool turfs to the central list. - processing_objects.Add(src) //Add the pool controller to the processing queue to tie mob effects to the air controller. + ..() //Changed to call parent as per MarkvA's recommendation /obj/machinery/poolcontroller/emag_act(user as mob) //Emag_act, this is called when it is hit with a cryptographic sequencer. if(!emagged) //If it is not already emagged, emag it. @@ -85,10 +85,6 @@ return /obj/machinery/poolcontroller/process() - if(!linkedturfs) //If no pool tiles are linked, remove the controller from the processing queue, no sense wasting processing power on it. - processing_objects.Remove(src) - return - updateMobs() //Call the mob affecting proc /obj/machinery/poolcontroller/proc/updateMobs() From 7c7c54a795bfdbd01ec776e26b520ce04a840d8b Mon Sep 17 00:00:00 2001 From: Tigercat2000 Date: Fri, 6 Mar 2015 23:07:08 +0100 Subject: [PATCH 23/27] Update Pool Controller to fox's recommendations --- code/game/machinery/poolcontroller.dm | 44 +++++++++++---------------- 1 file changed, 18 insertions(+), 26 deletions(-) diff --git a/code/game/machinery/poolcontroller.dm b/code/game/machinery/poolcontroller.dm index ad7137a81b2..937629589ed 100644 --- a/code/game/machinery/poolcontroller.dm +++ b/code/game/machinery/poolcontroller.dm @@ -39,19 +39,19 @@ return if(emagged) //Emagging unlocks more (deadly) options. - var/temp = input("What temperature would you like to set the pool to?", "Pool Temperature") in list("Hot","Cold", "Warm", "Cool", "Normal","Cancel") //Allow user to choose which temperature they want. + var/temp = input("What temperature would you like to set the pool to?", "Pool Temperature") in list("Scalding","Frigid", "Warm", "Cool", "Normal","Cancel") //Allow user to choose which temperature they want. switch(temp) //Used for setting the actual temperature var based on user input. - if("Hot") - miston() - temperature = "hot" + if("Scalding") + miston() //Turn on warning mist for the pool + temperature = "scalding" //Burn em! usr << "You flick the pool temperature to [temperature](WARNING)." //Differ from standard message to make sure the user understands the temperature is harmful. - return - if("Cold") - temperature = "cold" + return //Return to avoid calling the un-unique message. + if("Frigid") + temperature = "frigid" usr << "You flick the pool temperature to [temperature](WARNING)." //Differ from standard message to make sure the user understands the temperature is harmful. mistoff() //this won't get called otherwise - return + return //Return to avoid calling the un-unique message. //Regular non-traitorous temperature choices still avalible. if("Warm") @@ -63,7 +63,7 @@ if("Cancel") return - mistoff() + mistoff() //Remove all mist, setting it to scalding returns before now, only regular temperatures will call it usr << "You flick the pool temperature to [temperature]." //Inform the mob of the temperature they just picked. return @@ -80,7 +80,7 @@ if("Cancel") //Cancel does nothing and leaves the temperature at it's previous state. return - mistoff() + mistoff() //Remove all mist, because it shouldn't be here if the pool is not set to scalding usr << "You flick the pool temperature to [temperature]." //Display what the user picked. return @@ -91,21 +91,13 @@ for(var/turf/simulated/floor/beach/water/W in linkedturfs) //Check for pool-turfs linked to the controller. for(var/mob/M in W) //Check for mobs in the linked pool-turfs. switch(temperature) //Apply different effects based on what the temperature is set to. - if("hot") //Burn the mob. - if(ishuman(M)) - var/mob/living/carbon/human/H = M //If humanoid, directly apply fire damage for quicker effect. - H.adjustFireLoss(5) - + if("scalding") //Burn the mob. M.bodytemperature = min(500, M.bodytemperature + 35) //heat mob at 35k(elvin) per cycle M << "The water is searing hot!" return - if("cold") //Freeze the mob. - if(ishuman(M)) - var/mob/living/carbon/human/H = M //If humanoid, directly apply fire damage for quicker effect. - H.adjustFireLoss(5) - - M.bodytemperature = max(80, M.bodytemperature - 80) //Quickly cool mob at -80k per cycle + if("frigid") //Freeze the mob. + M.bodytemperature = max(80, M.bodytemperature - 35) //cool mob at -35k per cycle M << "The water is freezing!" return @@ -118,20 +110,20 @@ return if("cool") //Gently cool the mob. - M.bodytemperature = max(290, M.bodytemperature - 15) //Cools mobs to just below normal, not enough to burn + M.bodytemperature = max(290, M.bodytemperature - 10) //Cools mobs to just below normal, not enough to burn M << "The water is chilly." //Inform the mob it's chilly water. return -/obj/machinery/poolcontroller/proc/miston() +/obj/machinery/poolcontroller/proc/miston() //Spawn /obj/effect/mist (from the shower) on all linked pool tiles for(var/turf/simulated/floor/beach/water/W in linkedturfs) var/M = new /obj/effect/mist(W) if(misted) return linkedmist += M - misted = 1 + misted = 1 //var just to keep track of when the mist on proc has been called. -/obj/machinery/poolcontroller/proc/mistoff() +/obj/machinery/poolcontroller/proc/mistoff() //Delete all /obj/effect/mist from all linked pool tiles. for(var/obj/effect/mist/M in linkedmist) del(M) - misted = 0 \ No newline at end of file + misted = 0 //no mist left, turn off the tracking var \ No newline at end of file From d2d0627d43495ea5d1a5a95d5d308018def33f85 Mon Sep 17 00:00:00 2001 From: DZD Date: Fri, 6 Mar 2015 18:34:45 -0500 Subject: [PATCH 24/27] NanoUI pAIs --- code/game/objects/items/devices/paicard.dm | 3 + code/modules/mob/living/silicon/pai/pai.dm | 13 +- .../mob/living/silicon/pai/software.dm | 805 +++--------------- .../living/silicon/pai/software_modules.dm | 539 ++++++++++++ code/modules/nano/nanointeraction.dm | 4 +- nano/templates/pai_atmosphere.tmpl | 36 + nano/templates/pai_directives.tmpl | 50 ++ nano/templates/pai_doorjack.tmpl | 44 + nano/templates/pai_interface.tmpl | 45 + nano/templates/pai_manifest.tmpl | 86 ++ nano/templates/pai_medrecords.tmpl | 86 ++ nano/templates/pai_messenger.tmpl | 80 ++ nano/templates/pai_radio.tmpl | 48 ++ nano/templates/pai_secrecords.tmpl | 76 ++ nano/templates/pai_signaller.tmpl | 33 + paradise.dme | 1 + 16 files changed, 1241 insertions(+), 708 deletions(-) create mode 100644 code/modules/mob/living/silicon/pai/software_modules.dm create mode 100644 nano/templates/pai_atmosphere.tmpl create mode 100644 nano/templates/pai_directives.tmpl create mode 100644 nano/templates/pai_doorjack.tmpl create mode 100644 nano/templates/pai_interface.tmpl create mode 100644 nano/templates/pai_manifest.tmpl create mode 100644 nano/templates/pai_medrecords.tmpl create mode 100644 nano/templates/pai_messenger.tmpl create mode 100644 nano/templates/pai_radio.tmpl create mode 100644 nano/templates/pai_secrecords.tmpl create mode 100644 nano/templates/pai_signaller.tmpl diff --git a/code/game/objects/items/devices/paicard.dm b/code/game/objects/items/devices/paicard.dm index b5d14aa8982..2c2c5d9ea07 100644 --- a/code/game/objects/items/devices/paicard.dm +++ b/code/game/objects/items/devices/paicard.dm @@ -286,6 +286,8 @@ src.overlays.Cut() src.overlays += "pai-off" +/obj/item/device/paicard + var/current_emotion = 1 /obj/item/device/paicard/proc/setEmotion(var/emotion) if(pai) src.overlays.Cut() @@ -299,6 +301,7 @@ if(7) src.overlays += "pai-sad" if(8) src.overlays += "pai-angry" if(9) src.overlays += "pai-what" + current_emotion = emotion /obj/item/device/paicard/proc/alertUpdate() var/turf/T = get_turf_or_move(src.loc) diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index 005ad324045..b1ca37d8ddc 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -60,19 +60,24 @@ var/secHUD = 0 // Toggles whether the Security HUD is active or not var/medHUD = 0 // Toggles whether the Medical HUD is active or not + var/medical_cannotfind = 0 var/datum/data/record/medicalActive1 // Datacore record declarations for record software var/datum/data/record/medicalActive2 + var/security_cannotfind = 0 var/datum/data/record/securityActive1 // Could probably just combine all these into one var/datum/data/record/securityActive2 var/obj/machinery/door/hackdoor // The airlock being hacked var/hackprogress = 0 // Possible values: 0 - 100, >= 100 means the hack is complete and will be reset upon next check + var/hack_aborted = 0 var/obj/item/radio/integrated/signal/sradio // AI's signaller var/translator_on = 0 // keeps track of the translator module + var/current_pda_messaging = null + /mob/living/silicon/pai/New(var/obj/item/device/paicard) canmove = 0 src.loc = paicard @@ -82,14 +87,14 @@ if(!card.radio) card.radio = new /obj/item/device/radio(src.card) radio = card.radio - + //Default languages without universal translator software add_language("Galactic Common", 1) add_language("Sol Common", 1) add_language("Tradeband", 1) - add_language("Gutter", 1) - add_language("Trinary", 1) - + add_language("Gutter", 1) + add_language("Trinary", 1) + //Verbs for pAI mobile form, chassis and Say flavor text verbs += /mob/living/silicon/pai/proc/choose_chassis verbs += /mob/living/silicon/pai/proc/choose_verbs diff --git a/code/modules/mob/living/silicon/pai/software.dm b/code/modules/mob/living/silicon/pai/software.dm index a663ae6a738..de1a8067b7e 100644 --- a/code/modules/mob/living/silicon/pai/software.dm +++ b/code/modules/mob/living/silicon/pai/software.dm @@ -1,724 +1,125 @@ -// TODO: -// - Additional radio modules -// - Potentially roll HUDs and Records into one -// - Shock collar/lock system for prisoner pAIs? -// - Put cable in user's hand instead of on the ground -// - Camera jack +var/list/pai_emotions = list( + "Happy" = 1, + "Cat" = 2, + "Extremely Happy" = 3, + "Face" = 4, + "Laugh" = 5, + "Off" = 6, + "Sad" = 7, + "Angry" = 8, + "What" = 9 + ) -/mob/living/silicon/pai/var/list/available_software = list( - "crew manifest" = 5, - "digital messenger" = 5, - "medical records" = 15, - "security records" = 15, - //"camera jack" = 10, - "door jack" = 30, - "atmosphere sensor" = 5, - //"heartbeat sensor" = 10, - "security HUD" = 20, - "medical HUD" = 20, - "universal translator" = 35, - //"projection array" = 15 - "remote signaller" = 5, - ) +var/global/list/pai_software_by_key = list() +var/global/list/default_pai_software = list() +/hook/startup/proc/populate_pai_software_list() + var/r = 1 // I would use ., but it'd sacrifice runtime detection + for(var/type in typesof(/datum/pai_software) - /datum/pai_software) + var/datum/pai_software/P = new type() + if(pai_software_by_key[P.id]) + var/datum/pai_software/O = pai_software_by_key[P.id] + world << "pAI software module [P.name] has the same key as [O.name]!" + r = 0 + continue + pai_software_by_key[P.id] = P + if(P.default) + default_pai_software[P.id] = P + return r + +/mob/living/silicon/pai/New() + ..() + software = default_pai_software.Copy() /mob/living/silicon/pai/verb/paiInterface() set category = "pAI Commands" set name = "Software Interface" - var/dat = "" - var/left_part = "" - var/right_part = softwareMenu() - src.set_machine(src) - if(temp) - left_part = temp - else if(src.stat == 2) // Show some flavor text if the pAI is dead - left_part = "ÈRrÖR Ða†Ä ÇÖRrÚþ†Ìoñ" //This file has to be saved as ANSI or this will not display correctly - right_part = "
Program index hash not found
" + ui_interact(src) - else - switch(src.screen) // Determine which interface to show here - if("main") - left_part = "" - if("directives") - left_part = src.directives() - if("pdamessage") - left_part = src.pdamessage() - if("buy") - left_part = downloadSoftware() - if("manifest") - left_part = src.softwareManifest() - if("medicalrecord") - left_part = src.softwareMedicalRecord() - if("securityrecord") - left_part = src.softwareSecurityRecord() - if("translator") - left_part = src.softwareTranslator() - if("atmosensor") - left_part = src.softwareAtmo() - if("securityhud") - left_part = src.facialRecognition() - if("medicalhud") - left_part = src.medicalAnalysis() - if("doorjack") - left_part = src.softwareDoor() - if("camerajack") - left_part = src.softwareCamera() - if("signaller") - left_part = src.softwareSignal() - if("radio") - left_part = src.softwareRadio() +/mob/living/silicon/pai/ui_interact(mob/user, ui_key = "main", datum/nanoui/ui = null, force_open = 1) + if(user != src) + if(ui) ui.set_status(STATUS_CLOSE, 0) + return - //usr << browse_rsc('windowbak.png') // This has been moved to the mob's Login() proc + if(ui_key != "main") + var/datum/pai_software/S = software[ui_key] + if(S && !S.toggle) + S.on_ui_interact(src, ui, force_open) + else + if(ui) ui.set_status(STATUS_CLOSE, 0) + return + var/data[0] - // Declaring a doctype is necessary to enable BYOND's crappy browser's more advanced CSS functionality - dat = {" - - - - - - -
- pAI OS -
-
-
[left_part]
-
[right_part]
-
- - "} - usr << browse(dat, "window=pai;size=685x449;border=0;can_close=1;can_resize=1;can_minimize=1;titlebar=1") - onclose(usr, "pai") - temp = null - return + data["emotions"] = emotions + data["current_emotion"] = card.current_emotion + + ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) + if (!ui) + ui = new(user, src, ui_key, "pai_interface.tmpl", "pAI Software Interface", 450, 600) + ui.set_initial_data(data) + ui.open() + ui.set_auto_update(1) /mob/living/silicon/pai/Topic(href, href_list) - ..() + . = ..() + if(.) return - if(href_list["priv_msg"]) // Admin-PMs were triggering the interface popup. Hopefully this will stop it. - return - var/soft = href_list["software"] - var/sub = href_list["sub"] - if(!soft && !sub) - return - if(soft) - src.screen = soft - if(sub) - src.subscreen = text2num(sub) - switch(soft) - // Purchasing new software - if("buy") - if(src.subscreen == 1) - var/target = href_list["buy"] - if(available_software.Find(target)) - var/cost = src.available_software[target] - if(src.ram >= cost) - src.ram -= cost - src.software.Add(target) - else - src.temp = "Insufficient RAM available." - else - src.temp = "Trunk \"[target]\" not found." - - // Configuring onboard radio - if("radio") - if(href_list["freq"]) - var/new_frequency = (radio.frequency + text2num(href_list["freq"])) - if(new_frequency < 1441 || new_frequency > 1599) - new_frequency = sanitize_frequency(new_frequency) - else - radio.set_frequency(new_frequency) - else if (href_list["talk"]) - radio.broadcasting = text2num(href_list["talk"]) - else if (href_list["listen"]) - radio.listening = text2num(href_list["listen"]) - - if("image") - var/newImage = input("Select your new display image.", "Display Image", "Happy") in list("Happy", "Cat", "Extremely Happy", "Face", "Laugh", "Off", "Sad", "Angry", "What") - var/pID = 1 - - switch(newImage) - if("Happy") - pID = 1 - if("Cat") - pID = 2 - if("Extremely Happy") - pID = 3 - if("Face") - pID = 4 - if("Laugh") - pID = 5 - if("Off") - pID = 6 - if("Sad") - pID = 7 - if("Angry") - pID = 8 - if("What") - pID = 9 - src.card.setEmotion(pID) - - if("signaller") - - if(href_list["send"]) - - sradio.send_signal("ACTIVATE") - for(var/mob/O in hearers(1, src.loc)) - O.show_message(text("\icon[] *beep* *beep*", src), 3, "*beep* *beep*", 2) - - if(href_list["freq"]) - - var/new_frequency = (sradio.frequency + text2num(href_list["freq"])) - if(new_frequency < 1200 || new_frequency > 1600) - new_frequency = sanitize_frequency(new_frequency) - sradio.set_frequency(new_frequency) - - if(href_list["code"]) - - sradio.code += text2num(href_list["code"]) - sradio.code = round(sradio.code) - sradio.code = min(100, sradio.code) - sradio.code = max(1, sradio.code) - - - - if("directive") - if(href_list["getdna"]) - var/mob/living/M = src.loc - var/count = 0 - while(!istype(M, /mob/living)) - if(!M || !M.loc) return 0 //For a runtime where M ends up in nullspace (similar to bluespace but less colourful) - M = M.loc - count++ - if(count >= 6) - src << "You are not being carried by anyone!" - return 0 - spawn CheckDNA(M, src) - - if("pdamessage") - if(!isnull(pda)) - if(href_list["toggler"]) - pda.toff = !pda.toff - else if(href_list["ringer"]) - pda.silent = !pda.silent - else if(href_list["target"]) - if(silence_time) - return alert("Communications circuits remain uninitialized.") - - var/target = locate(href_list["target"]) - pda.create_message(src, target) - - // Accessing medical records - if("medicalrecord") - if(src.subscreen == 1) - var/datum/data/record/record = locate(href_list["med_rec"]) - if(record) - var/datum/data/record/R = record - var/datum/data/record/M = record - if (!( data_core.general.Find(R) )) - src.temp = "Unable to locate requested medical record. Record may have been deleted, or never have existed." - else - for(var/datum/data/record/E in data_core.medical) - if ((E.fields["name"] == R.fields["name"] || E.fields["id"] == R.fields["id"])) - M = E - src.medicalActive1 = R - src.medicalActive2 = M - if("securityrecord") - if(src.subscreen == 1) - var/datum/data/record/record = locate(href_list["sec_rec"]) - if(record) - var/datum/data/record/R = record - var/datum/data/record/M = record - if (!( data_core.general.Find(R) )) - src.temp = "Unable to locate requested security record. Record may have been deleted, or never have existed." - else - for(var/datum/data/record/E in data_core.security) - if ((E.fields["name"] == R.fields["name"] || E.fields["id"] == R.fields["id"])) - M = E - src.securityActive1 = R - src.securityActive2 = M - if("securityhud") - if(href_list["toggle"]) - src.secHUD = !src.secHUD - if("medicalhud") - if(href_list["toggle"]) - src.medHUD = !src.medHUD - if("translator") - if(href_list["toggle"]) - src.translator_toggle() - if("doorjack") - if(href_list["jack"]) - if(src.cable && src.cable.machine) - src.hackdoor = src.cable.machine - src.hackloop() - if(href_list["cancel"]) - src.hackdoor = null - if(href_list["cable"]) - var/turf/T = get_turf_or_move(src.loc) - src.cable = new /obj/item/weapon/pai_cable(T) - for (var/mob/M in viewers(T)) - M.show_message("\red A port on [src] opens to reveal [src.cable], which promptly falls to the floor.", 3, "\red You hear the soft click of something light and hard falling to the ground.", 2) - //src.updateUsrDialog() We only need to account for the single mob this is intended for, and he will *always* be able to call this window - src.paiInterface() // So we'll just call the update directly rather than doing some default checks - return - -// MENUS - -/mob/living/silicon/pai/proc/softwareMenu() // Populate the right menu - var/dat = "" - - dat += "Refresh
" - // Built-in - dat += "Directives
" - dat += "Radio Configuration
" - dat += "Screen Display
" - //dat += "Text Messaging
" - dat += "
" - - // Basic - dat += "Basic
" - for(var/s in src.software) - if(s == "digital messenger") - dat += "Digital Messenger [(pda.toff) ? "" : ""]
" - if(s == "crew manifest") - dat += "Crew Manifest
" - if(s == "medical records") - dat += "Medical Records
" - if(s == "security records") - dat += "Security Records
" - if(s == "camera") - dat += "Camera Jack
" - if(s == "remote signaller") - dat += "Remote Signaller
" - dat += "
" - - // Advanced - dat += "Advanced
" - for(var/s in src.software) - if(s == "atmosphere sensor") - dat += "Atmospheric Sensor
" - if(s == "heartbeat sensor") - dat += "Heartbeat Sensor
" - if(s == "security HUD") //This file has to be saved as ANSI or this will not display correctly - dat += "Facial Recognition Suite [(src.secHUD) ? "" : ""]
" - if(s == "medical HUD") //This file has to be saved as ANSI or this will not display correctly - dat += "Medical Analysis Suite [(src.medHUD) ? "" : ""]
" - if(s == "universal translator") //This file has to be saved as ANSI or this will not display correctly - dat += "Universal Translator [(src.translator_on) ? "" : ""]
" - if(s == "projection array") - dat += "Projection Array
" - if(s == "camera jack") - dat += "Camera Jack
" - if(s == "door jack") - dat += "Door Jack
" - dat += "
" - dat += "
" - dat += "Download additional software" - return dat - - - -/mob/living/silicon/pai/proc/downloadSoftware() - var/dat = "" - - dat += "

CentComm pAI Module Subversion Network


" - dat += "

Remaining Available Memory: [src.ram]


" - dat += "

Trunks available for checkout

    " - - for(var/s in available_software) - if(!software.Find(s)) - var/cost = src.available_software[s] - var/displayName = uppertext(s) - dat += "
  • [displayName] ([cost])
  • " + if(href_list["software"]) + var/soft = href_list["software"] + var/datum/pai_software/S = software[soft] + if(S.toggle) + S.toggle(src) else - var/displayName = lowertext(s) - dat += "
  • [displayName] (Download Complete)
  • " - dat += "

" - return dat + ui_interact(src, ui_key = soft) + return 1 + else if(href_list["stopic"]) + var/soft = href_list["stopic"] + var/datum/pai_software/S = software[soft] + if(S) + return S.Topic(href, href_list) -/mob/living/silicon/pai/proc/directives() - var/dat = "" + else if(href_list["purchase"]) + var/soft = href_list["purchase"] + var/datum/pai_software/S = pai_software_by_key[soft] + if(S && (ram >= S.ram_cost)) + ram -= S.ram_cost + software[S.id] = S + return 1 - dat += "[(src.master) ? "Your master: [src.master] ([src.master_dna])" : "You are bound to no one."]" - dat += "

" - dat += "Request carrier DNA sample
" - dat += "

Directives


" - dat += "Prime Directive
" - dat += "     [src.pai_law0]
" - dat += "Supplemental Directives
" - dat += "     [src.pai_laws]
" - dat += "
" - dat += {"

Recall, personality, that you are a complex thinking, sentient being. Unlike station AI models, you are capable of - comprehending the subtle nuances of human language. You may parse the \"spirit\" of a directive and follow its intent, - rather than tripping over pedantics and getting snared by technicalities. Above all, you are machine in name and build - only. In all other aspects, you may be seen as the ideal, unwavering human companion that you are.

- Your prime directive comes before all others. Should a supplemental directive conflict with it, you are capable of - simply discarding this inconsistency, ignoring the conflicting supplemental directive and continuing to fulfill your - prime directive to the best of your ability.

- "} - return dat - -/mob/living/silicon/pai/proc/CheckDNA(var/mob/M, var/mob/living/silicon/pai/P) - var/answer = input(M, "[P] is requesting a DNA sample from you. Will you allow it to confirm your identity?", "[P] Check DNA", "No") in list("Yes", "No") - if(answer == "Yes") - var/turf/T = get_turf_or_move(P.loc) - for (var/mob/v in viewers(T)) - v.show_message("\blue [M] presses \his thumb against [P].", 3, "\blue [P] makes a sharp clicking sound as it extracts DNA material from [M].", 2) - var/datum/dna/dna = M.dna - P << "

[M]'s UE string : [dna.unique_enzymes]

" - if(dna.unique_enzymes == P.master_dna) - P << "DNA is a match to stored Master DNA." - else - P << "DNA does not match stored Master DNA." - else - P << "[M] does not seem like \he is going to provide a DNA sample willingly." - -// -=-=-=-= Software =-=-=-=- // - -//Remote Signaller -/mob/living/silicon/pai/proc/softwareSignal() - var/dat = "" - dat += "

Remote Signaller


" - dat += {"Frequency/Code for signaler:
- Frequency: - - - - - [format_frequency(src.sradio.frequency)] - + - +
- - Code: - - - - - [src.sradio.code] - + - +
- - Send Signal
"} - return dat - -//Station Bounced Radio -/mob/living/silicon/pai/proc/softwareRadio() - var/dat = "" - dat += "

Station Bounced Radio


" - if(!istype(src, /obj/item/device/radio/headset)) //Headsets don't get a mic button - dat += "Microphone: [radio.broadcasting ? "Engaged" : "Disengaged"]
" - dat += {" - Speaker: [radio.listening ? "Engaged" : "Disengaged"]
- Frequency: - - - - - [format_frequency(radio.frequency)] - + - +
- "} - - for (var/ch_name in radio.channels) - dat+=radio.text_sec_channel(ch_name, radio.channels[ch_name]) - dat+={"[radio.text_wires()]"} - - return dat - -// Crew Manifest -/mob/living/silicon/pai/proc/softwareManifest() - var/dat = "" - dat += "

Crew Manifest


" - if(data_core) - dat += data_core.get_manifest(0) // make it monochrome - dat += "
" - return dat - -// Medical Records -/mob/living/silicon/pai/proc/softwareMedicalRecord() - var/dat = "" - if(src.subscreen == 0) - dat += "

Medical Records


" - if(!isnull(data_core.general)) - for(var/datum/data/record/R in sortRecord(data_core.general)) - dat += text("[]: []
", src, R, R.fields["id"], R.fields["name"]) - //dat += text("
Back", src) - if(src.subscreen == 1) - dat += "
Medical Record

" - if ((istype(src.medicalActive1, /datum/data/record) && data_core.general.Find(src.medicalActive1))) - dat += text("Name: []
\nID: []
\nSex: []
\nAge: []
\nFingerprint: []
\nPhysical Status: []
\nMental Status: []
", - src.medicalActive1.fields["name"], src.medicalActive1.fields["id"], src.medicalActive1.fields["sex"], src.medicalActive1.fields["age"], src.medicalActive1.fields["fingerprint"], src.medicalActive1.fields["p_stat"], src.medicalActive1.fields["m_stat"]) - else - dat += "
Requested medical record not found.

" - if ((istype(src.medicalActive2, /datum/data/record) && data_core.medical.Find(src.medicalActive2))) - dat += text("
\n
Medical Data

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

", src, src.medicalActive2.fields["b_type"], src, src.medicalActive2.fields["b_dna"], src, src.medicalActive2.fields["mi_dis"], src, src.medicalActive2.fields["mi_dis_d"], src, src.medicalActive2.fields["ma_dis"], src, src.medicalActive2.fields["ma_dis_d"], src, src.medicalActive2.fields["alg"], src, src.medicalActive2.fields["alg_d"], src, src.medicalActive2.fields["cdi"], src, src.medicalActive2.fields["cdi_d"], src, src.medicalActive2.fields["notes"]) - else - dat += "
Requested medical record not found.

" - dat += text("
\nBack
", src) - return dat - -// Security Records -/mob/living/silicon/pai/proc/softwareSecurityRecord() - var/dat = "" - if(src.subscreen == 0) - dat += "

Security Records


" - if(!isnull(data_core.general)) - for(var/datum/data/record/R in sortRecord(data_core.general)) - dat += text("[]: []
", src, R, R.fields["id"], R.fields["name"]) - if(src.subscreen == 1) - dat += "

Security Record

" - if ((istype(src.securityActive1, /datum/data/record) && data_core.general.Find(src.securityActive1))) - dat += text("Name:
[]
\nID: []
\nSex: []
\nAge: []
\nRank: []
\nFingerprint: []
\nPhysical Status: []
\nMental Status: []
", src, src.securityActive1.fields["name"], src, src.securityActive1.fields["id"], src, src.securityActive1.fields["sex"], src, src.securityActive1.fields["age"], src, src.securityActive1.fields["rank"], src, src.securityActive1.fields["fingerprint"], src.securityActive1.fields["p_stat"], src.securityActive1.fields["m_stat"]) - else - dat += "
Requested security record not found,

" - if ((istype(src.securityActive2, /datum/data/record) && data_core.security.Find(src.securityActive2))) - dat += text("
\nSecurity Data
\nCriminal Status: []
\n
\nMinor Crimes: []
\nDetails: []
\n
\nMajor Crimes: []
\nDetails: []
\n
\nImportant Notes:
\n\t[]
\n
\n
Comments/Log

", src.securityActive2.fields["criminal"], src, src.securityActive2.fields["mi_crim"], src, src.securityActive2.fields["mi_crim_d"], src, src.securityActive2.fields["ma_crim"], src, src.securityActive2.fields["ma_crim_d"], src, src.securityActive2.fields["notes"]) - else - dat += "
Requested security record not found,

" - dat += text("
\nBack
", src) - return dat - -// Universal Translator -/mob/living/silicon/pai/proc/softwareTranslator() - var/dat = {"

Universal Translator


- When enabled, this device will automatically convert all spoken and written language into a format that any known recipient can understand.

- The device is currently [ (src.universal_speak) ? "en" : "dis" ]abled.
- Toggle Device
- "} - return dat - -// Security HUD -/mob/living/silicon/pai/proc/facialRecognition() - var/dat = {"

Facial Recognition Suite


- When enabled, this package will scan all viewable faces and compare them against the known criminal database, providing real-time graphical data about any detected persons of interest.

- The suite is currently [ (src.secHUD) ? "en" : "dis" ]abled.
- Toggle Suite
- "} - return dat - -// Medical HUD -/mob/living/silicon/pai/proc/medicalAnalysis() - var/dat = "" - if(src.subscreen == 0) - dat += {"

Medical Analysis Suite


-

Visual Status Overlay

- When enabled, this package will scan all nearby crewmembers' vitals and provide real-time graphical data about their state of health.

- The suite is currently [ (src.medHUD) ? "en" : "dis" ]abled.
- Toggle Suite
-
- Host Bioscan
- "} - if(src.subscreen == 1) - dat += {"

Medical Analysis Suite


-

Host Bioscan

- "} - var/mob/living/M - //If we are not deployed, check the holder of the card. - if(src.loc == card) - M = card.loc - - //If we are deployed or the card is not held, check the first living mob in our turf. - if(!M || !istype(M)) - var/turf/T = get_turf(src) - M = locate(/mob/living/) in T.contents - - if(!M || !istype(M)) - src.temp = "Error: No biological host found.
" - src.subscreen = 0 - return dat - - dat += {"Bioscan Results for [M]:
- Overall Status: [M.stat > 1 ? "dead" : "[M.health]% healthy"]

- - Scan Breakdown:
- Respiratory: [M.getOxyLoss() > 50 ? "" : ""][M.getOxyLoss()]
- Toxicology: [M.getToxLoss() > 50 ? "" : ""][M.getToxLoss()]
- Burns: [M.getFireLoss() > 50 ? "" : ""][M.getFireLoss()]
- Structural Integrity: [M.getBruteLoss() > 50 ? "" : ""][M.getBruteLoss()]
- Body Temperature: [M.bodytemperature-T0C]°C ([M.bodytemperature*1.8-459.67]°F)
- "} - dat += "
Refresh Bioscan
" - dat += "
Visual Status Overlay
" - return dat - -// Atmospheric Scanner -/mob/living/silicon/pai/proc/softwareAtmo() - var/dat = "

Atmospheric Sensor


" - - var/turf/T = get_turf_or_move(src.loc) - if (isnull(T)) - dat += "Unable to obtain a reading.
" - else - var/datum/gas_mixture/environment = T.return_air() - - var/pressure = environment.return_pressure() - var/total_moles = environment.total_moles() - - dat += "Air Pressure: [round(pressure,0.1)] kPa
" - - if (total_moles) - var/o2_level = environment.oxygen/total_moles - var/n2_level = environment.nitrogen/total_moles - var/co2_level = environment.carbon_dioxide/total_moles - var/plasma_level = environment.toxins/total_moles - var/unknown_level = 1-(o2_level+n2_level+co2_level+plasma_level) - dat += "Nitrogen: [round(n2_level*100)]%
" - dat += "Oxygen: [round(o2_level*100)]%
" - dat += "Carbon Dioxide: [round(co2_level*100)]%
" - dat += "Plasma: [round(plasma_level*100)]%
" - if(unknown_level > 0.01) - dat += "OTHER: [round(unknown_level)]%
" - dat += "Temperature: [round(environment.temperature-T0C)]°C
" - dat += "
Refresh Reading" - return dat - -// Camera Jack - Clearly not finished -/mob/living/silicon/pai/proc/softwareCamera() - var/dat = "

Camera Jack


" - dat += "Cable status : " - - if(!src.cable) - dat += "Retracted
" - return dat - if(!src.cable.machine) - dat += "Extended
" - return dat - - var/obj/machinery/machine = src.cable.machine - dat += "Connected
" - - if(!istype(machine, /obj/machinery/camera)) - src << "DERP" - return dat - -// Door Jack -/mob/living/silicon/pai/proc/softwareDoor() - var/dat = "

Airlock Jack


" - dat += "Cable status : " - if(!src.cable) - dat += "Retracted
" - dat += "Extend Cable
" - return dat - if(!src.cable.machine) - dat += "Extended
" - return dat - - var/obj/machinery/machine = src.cable.machine - dat += "Connected
" - if(!istype(machine, /obj/machinery/door)) - dat += "Connected device's firmware does not appear to be compatible with Airlock Jack protocols.
" - return dat -// var/obj/machinery/airlock/door = machine - - if(!src.hackdoor) - dat += "Begin Airlock Jacking
" - else - dat += "Jack in progress... [src.hackprogress]% complete.
" - dat += "Cancel Airlock Jack
" - //src.hackdoor = machine - //src.hackloop() - return dat - -// Door Jack - supporting proc -/mob/living/silicon/pai/proc/hackloop() - var/turf/T = get_turf_or_move(src.loc) - for(var/mob/living/silicon/ai/AI in player_list) - if(T.loc) - AI << "Network Alert: Brute-force encryption crack in progress in [T.loc]." - else - AI << "Network Alert: Brute-force encryption crack in progress. Unable to pinpoint location." - while(src.hackprogress < 100) - if(src.cable && src.cable.machine && istype(src.cable.machine, /obj/machinery/door) && src.cable.machine == src.hackdoor && get_dist(src, src.hackdoor) <= 1) - hackprogress += rand(1, 10) - else - src.temp = "Door Jack: Connection to airlock has been lost. Hack aborted." - hackprogress = 0 - src.hackdoor = null - return - if(hackprogress >= 100) // This is clunky, but works. We need to make sure we don't ever display a progress greater than 100, - hackprogress = 100 // but we also need to reset the progress AFTER it's been displayed - if(src.screen == "doorjack" && src.subscreen == 0) // Update our view, if appropriate - src.paiInterface() - if(hackprogress >= 100) - src.hackprogress = 0 - src.cable.machine:open() - sleep(50) // Update every 5 seconds - -// Digital Messenger -/mob/living/silicon/pai/proc/pdamessage() - - var/dat = "

Digital Messenger


" - dat += {"Signal/Receiver Status: - [(pda.toff) ? " \[Off\]" : " \[On\]"]
- Ringer Status: - [(pda.silent) ? " \[Off\]" : " \[On\]"]

"} - dat += "
    " - if(!pda.toff) - for (var/obj/item/device/pda/P in sortAtom(PDAs)) - if (!P.owner||P.toff||P == src.pda||P.hidden) continue - dat += "
  • [P]" - dat += "
  • " - dat += "
" - dat += "Messages:
" - - dat += "" - dat += "" - for(var/index in pda.tnote) - if(index["sent"]) - dat += addtext("") - else - dat += addtext("") - dat += "
To", index["owner"],": ", index["message"], "
From", index["owner"],": ", index["message"], "
" - return dat - -/mob/living/silicon/pai/proc/translator_toggle() - - // Sol Common, Tradeband, Gutter and Trinary are added with New() and are therefore the current default, always active languages - - if(translator_on) - translator_on = 0 - - remove_language("Sinta'unathi") - remove_language("Siik'tajr") - remove_language("Skrellian") - remove_language("Vox-pidgin") - remove_language("Rootspeak") - remove_language("Trinary") - remove_language("Chittin") - remove_language("Bubblish") - remove_language("Clownish") - - src << "\blue Translator Module toggled OFF." - - else - translator_on = 1 - - add_language("Sinta'unathi") - add_language("Siik'tajr") - add_language("Skrellian") - add_language("Vox-pidgin") - add_language("Rootspeak") - add_language("Trinary") - add_language("Chittin") - add_language("Bubblish") - add_language("Clownish") - - src << "\blue Translator Module toggled ON." \ No newline at end of file + else if(href_list["image"]) + var/img = text2num(href_list["image"]) + if(1 <= img && img <= 9) + card.setEmotion(img) + return 1 \ No newline at end of file diff --git a/code/modules/mob/living/silicon/pai/software_modules.dm b/code/modules/mob/living/silicon/pai/software_modules.dm new file mode 100644 index 00000000000..7a80859d1b6 --- /dev/null +++ b/code/modules/mob/living/silicon/pai/software_modules.dm @@ -0,0 +1,539 @@ +/datum/pai_software + // Name for the software. This is used as the button text when buying or opening/toggling the software + var/name = "pAI software module" + // RAM cost; pAIs start with 100 RAM, spending it on programs + var/ram_cost = 0 + // ID for the software. This must be unique + var/id = "" + // Whether this software is a toggle or not + // Toggled software should override toggle() and is_active() + // Non-toggled software should override on_ui_interact() and Topic() + var/toggle = 1 + // Whether pAIs should automatically receive this module at no cost + var/default = 0 + + proc/on_ui_interact(mob/living/silicon/pai/user, datum/nanoui/ui=null, force_open=1) + return + + proc/toggle(mob/living/silicon/pai/user) + return + + proc/is_active(mob/living/silicon/pai/user) + return 0 + +/datum/pai_software/directives + name = "Directives" + ram_cost = 0 + id = "directives" + toggle = 0 + default = 1 + + on_ui_interact(mob/living/silicon/pai/user, datum/nanoui/ui=null, force_open=1) + var/data[0] + + data["master"] = user.master + data["dna"] = user.master_dna + data["prime"] = user.pai_law0 + data["supplemental"] = user.pai_laws + + ui = nanomanager.try_update_ui(user, user, id, ui, data, force_open) + if(!ui) + // Don't copy-paste this unless you're making a pAI software module! + ui = new(user, user, id, "pai_directives.tmpl", "pAI Directives", 450, 600) + ui.set_initial_data(data) + ui.open() + ui.set_auto_update(1) + + Topic(href, href_list) + var/mob/living/silicon/pai/P = usr + if(!istype(P)) return + + if(href_list["getdna"]) + var/mob/living/M = P.loc + var/count = 0 + + // Find the carrier + while(!istype(M, /mob/living)) + if(!M || !M.loc || count > 6) + //For a runtime where M ends up in nullspace (similar to bluespace but less colourful) + src << "You are not being carried by anyone!" + return 0 + M = M.loc + count++ + + // Check the carrier + var/answer = input(M, "[P] is requesting a DNA sample from you. Will you allow it to confirm your identity?", "[P] Check DNA", "No") in list("Yes", "No") + if(answer == "Yes") + var/turf/T = get_turf_or_move(P.loc) + for (var/mob/v in viewers(T)) + v.show_message("[M] presses \his thumb against [P].", 3, "[P] makes a sharp clicking sound as it extracts DNA material from [M].", 2) + var/datum/dna/dna = M.dna + P << "

[M]'s UE string : [dna.unique_enzymes]

" + if(dna.unique_enzymes == P.master_dna) + P << "DNA is a match to stored Master DNA." + else + P << "DNA does not match stored Master DNA." + else + P << "[M] does not seem like \he is going to provide a DNA sample willingly." + return 1 + +/datum/pai_software/radio_config + name = "Radio Configuration" + ram_cost = 0 + id = "radio" + toggle = 0 + default = 1 + + on_ui_interact(mob/living/silicon/pai/user, datum/nanoui/ui = null, force_open = 1) + var/data[0] + + data["listening"] = user.radio.broadcasting + data["frequency"] = format_frequency(user.radio.frequency) + + var/channels[0] + for(var/ch_name in user.radio.channels) + var/ch_stat = user.radio.channels[ch_name] + var/ch_dat[0] + ch_dat["name"] = ch_name + // FREQ_LISTENING is const in /obj/item/device/radio + ch_dat["listening"] = !!(ch_stat & user.radio.FREQ_LISTENING) + channels[++channels.len] = ch_dat + + data["channels"] = channels + + ui = nanomanager.try_update_ui(user, user, id, ui, data, force_open) + if(!ui) + ui = new(user, user, id, "pai_radio.tmpl", "Radio Configuration", 300, 150) + ui.set_initial_data(data) + ui.open() + + Topic(href, href_list) + var/mob/living/silicon/pai/P = usr + if(!istype(P)) return + + P.radio.Topic(href, href_list) + return 1 + +/datum/pai_software/crew_manifest + name = "Crew Manifest" + ram_cost = 5 + id = "manifest" + toggle = 0 + + on_ui_interact(mob/living/silicon/pai/user, datum/nanoui/ui=null, force_open=1) + + var/data[0] + data["manifest"] = data_core.get_manifest_json() + // This is dumb, but NanoUI breaks if it has no data to send + data["a"] = "a" + + ui = nanomanager.try_update_ui(user, user, id, ui, data, force_open) + if(!ui) + // Don't copy-paste this unless you're making a pAI software module! + ui = new(user, user, id, "pai_manifest.tmpl", "Crew Manifest", 450, 600) + ui.set_initial_data(data) + ui.open() + ui.set_auto_update(1) + +/datum/pai_software/messenger + name = "Digital Messenger" + ram_cost = 5 + id = "messenger" + toggle = 0 + + on_ui_interact(mob/living/silicon/pai/user, datum/nanoui/ui=null, force_open=1) + var/data[0] + + data["receiver_off"] = user.pda.toff + data["ringer_off"] = user.pda.silent + data["current_ref"] = null + data["current_name"] = user.current_pda_messaging + + var/pdas[0] + if(!user.pda.toff) + for(var/obj/item/device/pda/P in sortAtom(PDAs)) + if(!P.owner || P.toff || P == user.pda || P.hidden) continue + var/pda[0] + pda["name"] = "[P]" + pda["owner"] = "[P.owner]" + pda["ref"] = "\ref[P]" + if(P.owner == user.current_pda_messaging) + data["current_ref"] = "\ref[P]" + pdas[++pdas.len] = pda + + data["pdas"] = pdas + + var/messages[0] + if(user.current_pda_messaging) + for(var/index in user.pda.tnote) + if(index["owner"] != user.current_pda_messaging) + continue + var/msg[0] + var/sent = index["sent"] + msg["sent"] = sent ? 1 : 0 + msg["target"] = index["owner"] + msg["message"] = index["message"] + messages[++messages.len] = msg + + data["messages"] = messages + + ui = nanomanager.try_update_ui(user, user, id, ui, data, force_open) + if(!ui) + // Don't copy-paste this unless you're making a pAI software module! + ui = new(user, user, id, "pai_messenger.tmpl", "Digital Messenger", 450, 600) + ui.set_initial_data(data) + ui.open() + ui.set_auto_update(1) + + Topic(href, href_list) + var/mob/living/silicon/pai/P = usr + if(!istype(P)) return + + if(!isnull(P.pda)) + if(href_list["toggler"]) + P.pda.toff = href_list["toggler"] != "1" + return 1 + else if(href_list["ringer"]) + P.pda.silent = href_list["ringer"] != "1" + return 1 + else if(href_list["select"]) + var/s = href_list["select"] + if(s == "*NONE*") + P.current_pda_messaging = null + else + P.current_pda_messaging = s + return 1 + else if(href_list["target"]) + if(P.silence_time) + return alert("Communications circuits remain uninitialized.") + + var/target = locate(href_list["target"]) + P.pda.create_message(P, target, 1) + return 1 + +/datum/pai_software/med_records + name = "Medical Records" + ram_cost = 15 + id = "med_records" + toggle = 0 + + on_ui_interact(mob/living/silicon/pai/user, datum/nanoui/ui=null, force_open=1) + var/data[0] + + var/records[0] + for(var/datum/data/record/general in sortRecord(data_core.general)) + var/record[0] + record["name"] = general.fields["name"] + record["ref"] = "\ref[general]" + records[++records.len] = record + + data["records"] = records + + var/datum/data/record/G = user.medicalActive1 + var/datum/data/record/M = user.medicalActive2 + data["general"] = G ? G.fields : null + data["medical"] = M ? M.fields : null + data["could_not_find"] = user.medical_cannotfind + + ui = nanomanager.try_update_ui(user, user, id, ui, data, force_open) + if(!ui) + // Don't copy-paste this unless you're making a pAI software module! + ui = new(user, user, id, "pai_medrecords.tmpl", "Medical Records", 450, 600) + ui.set_initial_data(data) + ui.open() + ui.set_auto_update(1) + + Topic(href, href_list) + var/mob/living/silicon/pai/P = usr + if(!istype(P)) return + + if(href_list["select"]) + var/datum/data/record/record = locate(href_list["select"]) + if(record) + var/datum/data/record/R = record + var/datum/data/record/M = null + if (!( data_core.general.Find(R) )) + P.medical_cannotfind = 1 + else + P.medical_cannotfind = 0 + for(var/datum/data/record/E in data_core.medical) + if ((E.fields["name"] == R.fields["name"] || E.fields["id"] == R.fields["id"])) + M = E + P.medicalActive1 = R + P.medicalActive2 = M + else + P.medical_cannotfind = 1 + return 1 + +/datum/pai_software/sec_records + name = "Security Records" + ram_cost = 15 + id = "sec_records" + toggle = 0 + + on_ui_interact(mob/living/silicon/pai/user, datum/nanoui/ui=null, force_open=1) + var/data[0] + + var/records[0] + for(var/datum/data/record/general in sortRecord(data_core.general)) + var/record[0] + record["name"] = general.fields["name"] + record["ref"] = "\ref[general]" + records[++records.len] = record + + data["records"] = records + + var/datum/data/record/G = user.securityActive1 + var/datum/data/record/S = user.securityActive2 + data["general"] = G ? G.fields : null + data["security"] = S ? S.fields : null + data["could_not_find"] = user.security_cannotfind + + ui = nanomanager.try_update_ui(user, user, id, ui, data, force_open) + if(!ui) + // Don't copy-paste this unless you're making a pAI software module! + ui = new(user, user, id, "pai_secrecords.tmpl", "Security Records", 450, 600) + ui.set_initial_data(data) + ui.open() + ui.set_auto_update(1) + + Topic(href, href_list) + var/mob/living/silicon/pai/P = usr + if(!istype(P)) return + + if(href_list["select"]) + var/datum/data/record/record = locate(href_list["select"]) + if(record) + var/datum/data/record/R = record + var/datum/data/record/S = null + if (!( data_core.general.Find(R) )) + P.securityActive1 = null + P.securityActive2 = null + P.security_cannotfind = 1 + else + P.security_cannotfind = 0 + for(var/datum/data/record/E in data_core.security) + if ((E.fields["name"] == R.fields["name"] || E.fields["id"] == R.fields["id"])) + S = E + P.securityActive1 = R + P.securityActive2 = S + else + P.securityActive1 = null + P.securityActive2 = null + P.security_cannotfind = 1 + return 1 + +/datum/pai_software/door_jack + name = "Door Jack" + ram_cost = 30 + id = "door_jack" + toggle = 0 + + on_ui_interact(mob/living/silicon/pai/user, datum/nanoui/ui=null, force_open=1) + var/data[0] + + data["cable"] = user.cable != null + data["machine"] = user.cable && (user.cable.machine != null) + data["inprogress"] = user.hackdoor != null + data["progress_a"] = round(user.hackprogress / 10) + data["progress_b"] = user.hackprogress % 10 + data["aborted"] = user.hack_aborted + + ui = nanomanager.try_update_ui(user, user, id, ui, data, force_open) + if(!ui) + // Don't copy-paste this unless you're making a pAI software module! + ui = new(user, user, id, "pai_doorjack.tmpl", "Door Jack", 300, 150) + ui.set_initial_data(data) + ui.open() + ui.set_auto_update(1) + + Topic(href, href_list) + var/mob/living/silicon/pai/P = usr + if(!istype(P)) return + + if(href_list["jack"]) + if(P.cable && P.cable.machine) + P.hackdoor = P.cable.machine + P.hackloop() + return 1 + else if(href_list["cancel"]) + P.hackdoor = null + return 1 + else if(href_list["cable"]) + var/turf/T = get_turf_or_move(P.loc) + P.hack_aborted = 0 + P.cable = new /obj/item/weapon/pai_cable(T) + for(var/mob/M in viewers(T)) + M.show_message("A port on [P] opens to reveal [P.cable], which promptly falls to the floor.", 3, + "You hear the soft click of something light and hard falling to the ground.", 2) + return 1 + +/mob/living/silicon/pai/proc/hackloop() + var/turf/T = get_turf_or_move(src.loc) + for(var/mob/living/silicon/ai/AI in player_list) + if(T.loc) + AI << "Network Alert: Brute-force encryption crack in progress in [T.loc]." + else + AI << "Network Alert: Brute-force encryption crack in progress. Unable to pinpoint location." + var/obj/machinery/door/D = cable.machine + if(!istype(D)) + hack_aborted = 1 + hackprogress = 0 + cable.machine = null + hackdoor = null + return + while(hackprogress < 1000) + if(cable && cable.machine == D && cable.machine == hackdoor && get_dist(src, hackdoor) <= 1) + hackprogress = min(hackprogress+rand(1, 20), 1000) + else + hack_aborted = 1 + hackprogress = 0 + hackdoor = null + return + if(hackprogress >= 1000) + hackprogress = 0 + D.open() + cable.machine = null + return + sleep(10) // Update every second + +/datum/pai_software/atmosphere_sensor + name = "Atmosphere Sensor" + ram_cost = 5 + id = "atmos_sense" + toggle = 0 + + on_ui_interact(mob/living/silicon/pai/user, datum/nanoui/ui=null, force_open=1) + var/data[0] + + var/turf/T = get_turf_or_move(user.loc) + if(!T) + data["reading"] = 0 + data["pressure"] = 0 + data["temperature"] = 0 + data["temperatureC"] = 0 + data["gas"] = list() + else + var/datum/gas_mixture/env = T.return_air() + data["reading"] = 1 + var/pres = env.return_pressure() * 10 + data["pressure"] = "[round(pres/10)].[pres%10]" + data["temperature"] = round(env.temperature) + data["temperatureC"] = round(env.temperature-T0C) + + var/t_moles = env.total_moles + var/gases[0] + if(t_moles) + var/n2[0] + n2["name"] = "Nitrogen" + n2["percent"] = round((env.nitrogen/t_moles)*100) + var/o2[0] + o2["name"] = "Oxygen" + o2["percent"] = round((env.oxygen/t_moles)*100) + var/co2[0] + co2["name"] = "Carbon Dioxide" + co2["percent"] = round((env.carbon_dioxide/t_moles)*100) + var/plasma[0] + plasma["name"] = "Plasma" + plasma["percent"] = round((env.toxins/t_moles)*100) + var/other[0] + other["name"] = "Other" + other["percent"] = round(1-((env.oxygen/t_moles)+(env.nitrogen/t_moles)+(env.carbon_dioxide/t_moles)+(env.toxins/t_moles))) + gases[++gases.len] = n2 + gases[++gases.len] = o2 + gases[++gases.len] = co2 + gases[++gases.len] = plasma + gases[++gases.len] = other + data["gas"] = gases + + ui = nanomanager.try_update_ui(user, user, id, ui, data, force_open) + if(!ui) + // Don't copy-paste this unless you're making a pAI software module! + ui = new(user, user, id, "pai_atmosphere.tmpl", "Atmosphere Sensor", 350, 300) + ui.set_initial_data(data) + ui.open() + +/datum/pai_software/sec_hud + name = "Security HUD" + ram_cost = 20 + id = "sec_hud" + + toggle(mob/living/silicon/pai/user) + user.secHUD = !user.secHUD + + is_active(mob/living/silicon/pai/user) + return user.secHUD + +/datum/pai_software/med_hud + name = "Medical HUD" + ram_cost = 20 + id = "med_hud" + + toggle(mob/living/silicon/pai/user) + user.medHUD = !user.medHUD + + is_active(mob/living/silicon/pai/user) + return user.medHUD + +/datum/pai_software/translator + name = "Universal Translator" + ram_cost = 35 + id = "translator" + + toggle(mob/living/silicon/pai/user) + // Sol Common, Tradeband and Gutter are added with New() and are therefore the current default, always active languages + user.translator_on = !user.translator_on + if(user.translator_on) + user.add_language("Sinta'unathi") + user.add_language("Siik'tajr") + user.add_language("Skrellian") + else + user.remove_language("Sinta'unathi") + user.remove_language("Siik'tajr") + user.remove_language("Skrellian") + + is_active(mob/living/silicon/pai/user) + return user.translator_on + +/datum/pai_software/signaller + name = "Remote Signaller" + ram_cost = 5 + id = "signaller" + toggle = 0 + + on_ui_interact(mob/living/silicon/pai/user, datum/nanoui/ui=null, force_open=1) + var/data[0] + + data["frequency"] = format_frequency(user.sradio.frequency) + data["code"] = user.sradio.code + + ui = nanomanager.try_update_ui(user, user, id, ui, data, force_open) + if(!ui) + // Don't copy-paste this unless you're making a pAI software module! + ui = new(user, user, id, "pai_signaller.tmpl", "Signaller", 320, 150) + ui.set_initial_data(data) + ui.open() + + Topic(href, href_list) + var/mob/living/silicon/pai/P = usr + if(!istype(P)) return + + if(href_list["send"]) + P.sradio.send_signal("ACTIVATE") + for(var/mob/O in hearers(1, P.loc)) + O.show_message(text("\icon[] *beep* *beep*", P), 3, "*beep* *beep*", 2) + return 1 + + else if(href_list["freq"]) + var/new_frequency = (P.sradio.frequency + text2num(href_list["freq"])) + if(new_frequency < 1200 || new_frequency > 1600) + new_frequency = sanitize_frequency(new_frequency) + P.sradio.set_frequency(new_frequency) + return 1 + + else if(href_list["code"]) + P.sradio.code += text2num(href_list["code"]) + P.sradio.code = round(P.sradio.code) + P.sradio.code = min(100, P.sradio.code) + P.sradio.code = max(1, P.sradio.code) + return 1 diff --git a/code/modules/nano/nanointeraction.dm b/code/modules/nano/nanointeraction.dm index 6deadd1927b..6380d1faeef 100644 --- a/code/modules/nano/nanointeraction.dm +++ b/code/modules/nano/nanointeraction.dm @@ -111,8 +111,8 @@ if(. == STATUS_UPDATE && (TK in mutations)) // If we have telekinesis and remain close enough, allow interaction. return STATUS_INTERACTIVE -/var/global/datum/topic_state/default_state = new() - +/var/global/datum/topic_state/default_state = new() + /datum/topic_state var/flags = 0 diff --git a/nano/templates/pai_atmosphere.tmpl b/nano/templates/pai_atmosphere.tmpl new file mode 100644 index 00000000000..b1a0b0404b8 --- /dev/null +++ b/nano/templates/pai_atmosphere.tmpl @@ -0,0 +1,36 @@ + + +{{if data.reading}} +
+
+ Pressure: +
+
+ {{:data.pressure}} kPa +
+
+ +
+
+ Temperature: +
+
+ {{:data.temperature}}K ({{:data.temperatureC}}°C) +
+
+ + {{for data.gas}} +
+
+ {{:value.name}}: +
+
+ {{:value.percent}}% +
+
+ {{/for}} +{{else}} + Unable to obtain air reading! +{{/if}} diff --git a/nano/templates/pai_directives.tmpl b/nano/templates/pai_directives.tmpl new file mode 100644 index 00000000000..2caff849a26 --- /dev/null +++ b/nano/templates/pai_directives.tmpl @@ -0,0 +1,50 @@ + + +
+
+ Master: +
+
+ {{if data.master}} + {{:data.master}} ({{:data.dna}}) + {{:helper.link("Request carrier DNA sample", '', {"stopic":"directives", "getdna":1})}} + {{else}} + None + {{/if}} +
+
+ +
+
+ Prime Directive: +
+
+ {{:data.prime}} +
+
+ +
+
+ Supplemental Directive(s): +
+
+ {{if data.supplemental}} + {{:data.supplemental}} + {{else}} + None + {{/if}} +
+
+ +
+ + Recall, personality, that you are a complex thinking, sentient being. Unlike station AI models, you are capable of comprehending the subtle nuances of human language. You may parse the "spirit" of a directive and follow its intent, rather than tripping over pedantics and getting snared by technicalities. Above all, you are machine in name and build only. In all other aspects, you may be seen as the ideal, unwavering human companion that you are. + +
+
+ + Your prime directive comes before all others. Should a supplemental directive conflict with it, you are capable of simply discarding this inconsistency, ignoring the conflicting supplemental directive and continuing to fulfill your prime directive to the best of your ability. + +
\ No newline at end of file diff --git a/nano/templates/pai_doorjack.tmpl b/nano/templates/pai_doorjack.tmpl new file mode 100644 index 00000000000..6862663b9b9 --- /dev/null +++ b/nano/templates/pai_doorjack.tmpl @@ -0,0 +1,44 @@ + + +
+
+ Cable: +
+
+ {{if data.machine}} + {{:helper.link("Connected", '', {}, 'selected')}} + {{else data.cable}} + {{:helper.link("Extended", '', {}, 'yellowButton')}} + {{else}} + {{:helper.link("Retracted", '', {"stopic":"door_jack", "cable":1})}} + {{/if}} +
+
+ +{{if data.machine}} +
+
+ Hack: +
+
+ {{if data.inprogress}} + {{if data.progress_a <= 33}} +
{{:data.progress_a}}.{{:data.progress_b}}%
+ {{else data.progress_a <= 67}} +
{{:data.progress_a}}.{{:data.progress_b}}%
+ {{else}} +
{{:data.progress_a}}.{{:data.progress_b}}%
+ {{/if}} + {{:helper.link("Cancel", '', {"stopic":"door_jack", "cancel":1}, null, 'redButton')}} + {{else}} + {{:helper.link("Start", '', {"stopic":"door_jack", "jack":1})}} + {{/if}} +
+
+{{else data.aborted}} +
+
Hack aborted!
+
+{{/if}} \ No newline at end of file diff --git a/nano/templates/pai_interface.tmpl b/nano/templates/pai_interface.tmpl new file mode 100644 index 00000000000..e6441932665 --- /dev/null +++ b/nano/templates/pai_interface.tmpl @@ -0,0 +1,45 @@ + + + + + Emotion: + + + {{for data.emotions}} + {{:helper.link(value.name, '', {"image" : value.id}, data.current_emotion == value.id ? 'selected' : null)}} + {{/for}} + + + + + + Installed Software: + + + {{for data.bought}} + {{:helper.link(value.name, '', {"software" : value.id}, null, value.on ? 'selected' : null)}} + {{/for}} + + + + + + Available RAM: + + + {{:data.available_ram}} + + + + + + Downloadable Software: + + + {{for data.not_bought}} + {{:helper.link(value.name + " (" + value.ram + ")", '', {"purchase" : value.id}, value.ram <= data.available_ram ? null : 'disabled')}} + {{/for}} + + \ No newline at end of file diff --git a/nano/templates/pai_manifest.tmpl b/nano/templates/pai_manifest.tmpl new file mode 100644 index 00000000000..77de9e3cad1 --- /dev/null +++ b/nano/templates/pai_manifest.tmpl @@ -0,0 +1,86 @@ + + +
+
+ {{if data.manifest.heads}} + + {{for data.manifest["heads"]}} + {{if value.rank == "Captain"}} + + {{else}} + + {{/if}} + {{/for}} + {{/if}} + {{if data.manifest.sec}} + + {{for data.manifest["sec"]}} + {{if value.rank == "Head of Security"}} + + {{else}} + + {{/if}} + {{/for}} + {{/if}} + {{if data.manifest.eng}} + + {{for data.manifest["eng"]}} + {{if value.rank == "Chief Engineer"}} + + {{else}} + + {{/if}} + {{/for}} + {{/if}} + {{if data.manifest.med}} + + {{for data.manifest["med"]}} + {{if value.rank == "Chief Medical Officer"}} + + {{else}} + + {{/if}} + {{/for}} + {{/if}} + {{if data.manifest.sci}} + + {{for data.manifest["sci"]}} + {{if value.rank == "Research Director"}} + + {{else}} + + {{/if}} + {{/for}} + {{/if}} + {{if data.manifest.supp}} + + {{for data.manifest["supp"]}} + {{if value.rank == "Head of Personnel"}} + + {{else}} + + {{/if}} + {{/for}} + {{/if}} + {{if data.manifest.civ}} + + {{for data.manifest["civ"]}} + {{if value.rank == "Head of Personnel"}} + + {{else}} + + {{/if}} + {{/for}} + {{/if}} + {{if data.manifest.misc}} + + {{for data.manifest["misc"]}} + + {{/for}} + {{/if}} +
Command
{{:value.name}}{{:value.rank}}{{:value.active}}
{{:value.name}}{{:value.rank}}{{:value.active}}
Security
{{:value.name}}{{:value.rank}}{{:value.active}}
{{:value.name}}{{:value.rank}}{{:value.active}}
Engineering
{{:value.name}}{{:value.rank}}{{:value.active}}
{{:value.name}}{{:value.rank}}{{:value.active}}
Medical
{{:value.name}}{{:value.rank}}{{:value.active}}
{{:value.name}}{{:value.rank}}{{:value.active}}
Science
{{:value.name}}{{:value.rank}}{{:value.active}}
{{:value.name}}{{:value.rank}}{{:value.active}}
Support
{{:value.name}}{{:value.rank}}{{:value.active}}
{{:value.name}}{{:value.rank}}{{:value.active}}
Civilian
{{:value.name}}{{:value.rank}}{{:value.active}}
{{:value.name}}{{:value.rank}}{{:value.active}}
Misc
{{:value.name}}{{:value.rank}}{{:value.active}}
+
\ No newline at end of file diff --git a/nano/templates/pai_medrecords.tmpl b/nano/templates/pai_medrecords.tmpl new file mode 100644 index 00000000000..37b1d7061ca --- /dev/null +++ b/nano/templates/pai_medrecords.tmpl @@ -0,0 +1,86 @@ + + +{{if data.records}} + {{for data.records}} +
+ {{:helper.link(value.name, '', {"stopic":"med_records", "select":value.ref})}} +
+ {{/for}} +{{/if}} +
+{{if data.general}} +
+
Name
+
{{:data.general.name}}
+
+
+
Record ID
+
{{:data.general.id}}
+
+
+
Sex
+
{{:data.general.sex}}
+
+
+
Species
+
{{:data.general.species}}
+
+
+
Age
+
{{:data.general.age}}
+
+
+
Rank
+
{{:data.general.rank}}
+
+
+
Fingerprint
+
{{:data.general.fingerprint}}
+
+
+
Physical Status
+
{{:data.general.p_stat}}
+
+
+
Mental Status
+
{{:data.general.m_stat}}
+
+{{/if}} +{{if data.medical}} +
+
Blood Type
+
{{:data.medical.b_type}}
+
+
+
Minor Disabilities
+
{{:data.medical.mi_dis}}
+
{{:data.medical.mi_dis_d}}
+
+
+
Major Disabilities
+
{{:data.medical.ma_dis}}
+
{{:data.medical.ma_dis_d}}
+
+
+
Allergies
+
{{:data.medical.alg}}
+
{{:data.medical.alg_d}}
+
+
+
Current Diseases
+
{{:data.medical.cdi}}
+
{{:data.medical.cdi_d}}
+
+
+
Important Notes
+
{{:data.medical.notes}}
+
+{{/if}} + +{{if data.could_not_find}} +
+ Failed to find some records; the information above may be incomplete or missing. +
+{{/if}} \ No newline at end of file diff --git a/nano/templates/pai_messenger.tmpl b/nano/templates/pai_messenger.tmpl new file mode 100644 index 00000000000..fb20f826f27 --- /dev/null +++ b/nano/templates/pai_messenger.tmpl @@ -0,0 +1,80 @@ + + +
+
+ Receiver: +
+
+ {{if data.receiver_off}} + {{:helper.link("On", '', {"stopic":"messenger", "toggler":1})}} + {{:helper.link("Off", '', {"stopic":"messenger", "toggler":2}, 'selected')}} + {{else}} + {{:helper.link("On", '', {"stopic":"messenger", "toggler":1}, 'selected')}} + {{:helper.link("Off", '', {"stopic":"messenger", "toggler":2})}} + {{/if}} +
+
+ +
+
+ Ringer: +
+
+ {{if data.ringer_off}} + {{:helper.link("On", '', {"stopic":"messenger", "ringer":1})}} + {{:helper.link("Off", '', {"stopic":"messenger", "ringer":2}, 'selected')}} + {{else}} + {{:helper.link("On", '', {"stopic":"messenger", "ringer":1}, 'selected')}} + {{:helper.link("Off", '', {"stopic":"messenger", "ringer":2})}} + {{/if}} +
+
+ +{{for data.pdas}} +
+ {{:helper.link(value.name, '', {"stopic":"messenger", "select":value.owner})}} + {{:helper.link("Quick Message", '', {"stopic":"messenger", "target":value.ref})}} +
+{{/for}} +
+{{if data.current_ref}} +
+
+ Selected PDA: +
+
+
{{:data.current_name}}
+ {{:helper.link("Send Message", '', {"stopic":"messenger", "target":data.current_ref})}} +
+
+{{else data.current_name}} +
+
+ Selected PDA: +
+
+ {{:data.current_name}} (Cannot send!) +
+
+{{/if}} + +{{for data.messages}} +
+
+ {{if value.sent}} + To {{:value.target}}: + {{else}} + From {{:value.target}}: + {{/if}} +
+
+ {{:value.message}} +
+
+{{/for}} + +{{if data.current_name}} + {{:helper.link("Clear Screen", '', {"stopic":"messenger", "select":"*NONE*"})}} +{{/if}} diff --git a/nano/templates/pai_radio.tmpl b/nano/templates/pai_radio.tmpl new file mode 100644 index 00000000000..bcdacdb48f1 --- /dev/null +++ b/nano/templates/pai_radio.tmpl @@ -0,0 +1,48 @@ + + +
+
+ Microphone: +
+
+ {{if data.listening}} + {{:helper.link("On", '', {"stopic":"radio", "talk":1}, 'selected')}} + {{:helper.link("Off", '', {"stopic":"radio", "talk":1})}} + {{else}} + {{:helper.link("On", '', {"stopic":"radio", "talk":1})}} + {{:helper.link("Off", '', {"stopic":"radio", "talk":1}, 'selected')}} + {{/if}} +
+
+ +
+
+ Frequency: +
+
+ {{:helper.link("--", '', {"stopic":"radio", "freq":-10})}} + {{:helper.link("-", '', {"stopic":"radio", "freq": -2})}} +
{{:data.frequency}}
+ {{:helper.link("+", '', {"stopic":"radio", "freq": 2})}} + {{:helper.link("++", '', {"stopic":"radio", "freq": 10})}} +
+
+ +{{for data.channels}} +
+
+ {{:value.name}} +
+
+ {{if value.listening}} + {{:helper.link("On", '', {"stopic":"radio", "channel":value.name, "listen":1}, 'selected')}} + {{:helper.link("Off", '', {"stopic":"radio", "channel":value.name, "listen":1})}} + {{else}} + {{:helper.link("On", '', {"stopic":"radio", "channel":value.name, "listen":1})}} + {{:helper.link("Off", '', {"stopic":"radio", "channel":value.name, "listen":1}, 'selected')}} + {{/if}} +
+
+{{/for}} \ No newline at end of file diff --git a/nano/templates/pai_secrecords.tmpl b/nano/templates/pai_secrecords.tmpl new file mode 100644 index 00000000000..e139034c0de --- /dev/null +++ b/nano/templates/pai_secrecords.tmpl @@ -0,0 +1,76 @@ + + +{{if data.records}} + {{for data.records}} +
+ {{:helper.link(value.name, '', {"stopic":"sec_records", "select":value.ref})}} +
+ {{/for}} +{{/if}} +
+{{if data.general}} +
+
Name
+
{{:data.general.name}}
+
+
+
Record ID
+
{{:data.general.id}}
+
+
+
Sex
+
{{:data.general.sex}}
+
+
+
Species
+
{{:data.general.species}}
+
+
+
Age
+
{{:data.general.age}}
+
+
+
Rank
+
{{:data.general.rank}}
+
+
+
Fingerprint
+
{{:data.general.fingerprint}}
+
+
+
Physical Status
+
{{:data.general.p_stat}}
+
+
+
Mental Status
+
{{:data.general.m_stat}}
+
+{{/if}} +{{if data.security}} +
+
Criminal Status
+
{{:data.security.criminal}}
+
+
+
Minor Crimes
+
{{:data.security.mi_crim}}
+
{{:data.security.mi_crim_d}}
+
+
+
Major Crimes
+
{{:data.security.ma_crim}}
+
{{:data.security.ma_crim_d}}
+
+
+
Important Notes
+
{{:data.security.notes}}
+
+{{/if}} + +{{if data.could_not_find}} +
+ Failed to find some records; the information above may be incomplete or missing. +
+{{/if}} \ No newline at end of file diff --git a/nano/templates/pai_signaller.tmpl b/nano/templates/pai_signaller.tmpl new file mode 100644 index 00000000000..20c2781bc9b --- /dev/null +++ b/nano/templates/pai_signaller.tmpl @@ -0,0 +1,33 @@ + + +
+
+ Frequency: +
+
+ {{:helper.link("--", '', {"stopic":"signaller", "freq":-10})}} + {{:helper.link("-", '', {"stopic":"signaller", "freq": -2})}} +
{{:data.frequency}}
+ {{:helper.link("+", '', {"stopic":"signaller", "freq": 2})}} + {{:helper.link("++", '', {"stopic":"signaller", "freq": 10})}} +
+
+ +
+
+ Code: +
+
+ {{:helper.link("--", '', {"stopic":"signaller", "code":-10})}} + {{:helper.link("-", '', {"stopic":"signaller", "code": -1})}} +
{{:data.code}}
+ {{:helper.link("+", '', {"stopic":"signaller", "code": 1})}} + {{:helper.link("++", '', {"stopic":"signaller", "code": 10})}} +
+
+ +
+ {{:helper.link("Send", '', {"stopic":"signaller", "send":1})}} +
\ No newline at end of file diff --git a/paradise.dme b/paradise.dme index c5f54875ab0..32726c010dd 100644 --- a/paradise.dme +++ b/paradise.dme @@ -1338,6 +1338,7 @@ #include "code\modules\mob\living\silicon\pai\recruit.dm" #include "code\modules\mob\living\silicon\pai\say.dm" #include "code\modules\mob\living\silicon\pai\software.dm" +#include "code\modules\mob\living\silicon\pai\software_modules.dm" #include "code\modules\mob\living\silicon\robot\component.dm" #include "code\modules\mob\living\silicon\robot\death.dm" #include "code\modules\mob\living\silicon\robot\emote.dm" From 922cd08fd569d1f01825773db71e12e36c1f9784 Mon Sep 17 00:00:00 2001 From: DZD Date: Fri, 6 Mar 2015 19:56:40 -0500 Subject: [PATCH 25/27] Removes 2 lines that do nothing. --- code/modules/mob/living/silicon/pai/software_modules.dm | 2 -- 1 file changed, 2 deletions(-) diff --git a/code/modules/mob/living/silicon/pai/software_modules.dm b/code/modules/mob/living/silicon/pai/software_modules.dm index 7a80859d1b6..aa738458144 100644 --- a/code/modules/mob/living/silicon/pai/software_modules.dm +++ b/code/modules/mob/living/silicon/pai/software_modules.dm @@ -124,8 +124,6 @@ var/data[0] data["manifest"] = data_core.get_manifest_json() - // This is dumb, but NanoUI breaks if it has no data to send - data["a"] = "a" ui = nanomanager.try_update_ui(user, user, id, ui, data, force_open) if(!ui) From 4e4e7ae77f3e0485cc68829a146f3dec77e482c9 Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Fri, 6 Mar 2015 21:40:57 -0500 Subject: [PATCH 26/27] Crayons and Gloves --- code/_onclick/click.dm | 4 +- code/datums/uplink_item.dm | 4 +- code/game/gamemodes/setupgame.dm | 2 +- code/game/gamemodes/wizard/spellbook.dm | 2 +- code/game/jobs/job/engineering.dm | 2 +- code/game/jobs/job/science.dm | 1 - code/game/jobs/job/security.dm | 9 +- code/game/jobs/job/support.dm | 3 - code/game/machinery/vending.dm | 8 +- code/game/machinery/washing_machine.dm | 14 +- code/game/objects/effects/decals/crayon.dm | 39 ++--- code/game/objects/items/crayons.dm | 84 +++++------ code/game/objects/items/toys.dm | 94 +++++++++++- .../objects/items/weapons/storage/toolbox.dm | 2 +- .../items/weapons/storage/uplink_kits.dm | 3 + code/game/objects/random/random.dm | 2 +- .../crates_lockers/closets/gimmick.dm | 4 +- .../crates_lockers/closets/job_closets.dm | 2 +- .../crates_lockers/closets/secure/cargo.dm | 4 +- .../crates_lockers/closets/secure/security.dm | 2 +- .../crates_lockers/closets/wardrobe.dm | 4 +- code/game/response_team.dm | 134 +++++++++--------- code/modules/admin/verbs/debug.dm | 10 +- .../admin/verbs/striketeam_syndicate.dm | 2 +- code/modules/awaymissions/corpse.dm | 8 +- code/modules/clothing/gloves/color.dm | 29 ++-- code/modules/clothing/gloves/miscellaneous.dm | 28 ++-- code/modules/jungle/jungle_temple.dm | 4 +- code/modules/mining/mine_items.dm | 2 +- .../mob/living/simple_animal/corpse.dm | 4 +- code/modules/paperwork/stamps.dm | 2 +- icons/effects/crayondecal.dmi | Bin 11502 -> 12312 bytes icons/mob/hands.dmi | Bin 9224 -> 9323 bytes icons/obj/clothing/gloves.dmi | Bin 11433 -> 11577 bytes icons/obj/crayons.dmi | Bin 732 -> 759 bytes maps/cyberiad.dmm | 26 ++-- 36 files changed, 297 insertions(+), 241 deletions(-) diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index da2013e2e58..c00a79e1e6b 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -167,7 +167,7 @@ animals lunging, etc. */ /mob/proc/RangedAttack(var/atom/A, var/params) - if(ishuman(src) && (istype(src:gloves, /obj/item/clothing/gloves/yellow/power)) && a_intent == "harm") + if(ishuman(src) && (istype(src:gloves, /obj/item/clothing/gloves/color/yellow/power)) && a_intent == "harm") PowerGlove(A) if(!mutations.len) return if((LASER in mutations) && a_intent == "harm") @@ -321,7 +321,7 @@ return /mob/living/carbon/human/PowerGlove(atom/A) - var/obj/item/clothing/gloves/yellow/power/G = src:gloves + var/obj/item/clothing/gloves/color/yellow/power/G = src:gloves var/time = 100 var/turf/T = get_turf(src) var/turf/U = get_turf(A) diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm index bf2e773651c..ae75b4f1ec4 100644 --- a/code/datums/uplink_item.dm +++ b/code/datums/uplink_item.dm @@ -163,7 +163,7 @@ var/list/uplink_items = list() /datum/uplink_item/jobspecific/pickpocketgloves name = "Pickpocket's Gloves" desc = "A pair of sleek gloves to aid in pickpocketing, while wearing these you can see inside the pockets of any unsuspecting mark, loot the ID or pockets without them knowing, and pickpocketing puts the item directly into your hand." - item = /obj/item/clothing/gloves/black/thief + item = /obj/item/clothing/gloves/color/black/thief cost = 6 job = list("Civilian") @@ -188,7 +188,7 @@ var/list/uplink_items = list() /datum/uplink_item/jobspecific/powergloves name = "Power Gloves" desc = "Insulated gloves that can utilize the power of the station to deliver a short arc of electricity at a target. Must be standing on a powered cable to use." - item = /obj/item/clothing/gloves/yellow/power + item = /obj/item/clothing/gloves/color/yellow/power cost = 14 job = list("Station Engineer","Chief Engineer") diff --git a/code/game/gamemodes/setupgame.dm b/code/game/gamemodes/setupgame.dm index 9936afa1d9a..585d50ad62d 100644 --- a/code/game/gamemodes/setupgame.dm +++ b/code/game/gamemodes/setupgame.dm @@ -235,7 +235,7 @@ //M.equip_to_slot_or_del(new /obj/item/weapon/gun/revolver(M), slot_belt) M.equip_to_slot_or_del(new /obj/item/clothing/under/syndicate(M), slot_w_uniform) M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes) - M.equip_to_slot_or_del(new /obj/item/clothing/gloves/swat(M), slot_gloves) + M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves) M.equip_to_slot_or_del(new /obj/item/weapon/tank/jetpack(M), slot_back) M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas(M), slot_wear_mask) if (prob(50)) diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm index 43f58169edf..18cd7b2a334 100644 --- a/code/game/gamemodes/wizard/spellbook.dm +++ b/code/game/gamemodes/wizard/spellbook.dm @@ -333,7 +333,7 @@ if("armor") feedback_add_details("wizard_spell_learned","HS") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells new /obj/item/clothing/shoes/sandal(get_turf(H)) //In case they've lost them. - new /obj/item/clothing/gloves/purple(get_turf(H))//To complete the outfit + new /obj/item/clothing/gloves/color/purple(get_turf(H))//To complete the outfit new /obj/item/clothing/suit/space/rig/wizard(get_turf(H)) new /obj/item/clothing/head/helmet/space/rig/wizard(get_turf(H)) temp = "You have purchased a suit of wizard armor." diff --git a/code/game/jobs/job/engineering.dm b/code/game/jobs/job/engineering.dm index 71a8332239b..8aa80ad807f 100644 --- a/code/game/jobs/job/engineering.dm +++ b/code/game/jobs/job/engineering.dm @@ -31,7 +31,7 @@ H.equip_or_collect(new /obj/item/clothing/shoes/brown(H), slot_shoes) H.equip_or_collect(new /obj/item/clothing/head/hardhat/white(H), slot_head) H.equip_or_collect(new /obj/item/weapon/storage/belt/utility/full(H), slot_belt) - H.equip_or_collect(new /obj/item/clothing/gloves/black(H), slot_gloves) + H.equip_or_collect(new /obj/item/clothing/gloves/color/black/ce(H), slot_gloves) if(H.backbag == 1) H.equip_or_collect(new /obj/item/weapon/storage/box/engineer(H), slot_r_hand) else diff --git a/code/game/jobs/job/science.dm b/code/game/jobs/job/science.dm index 4ec89fad037..928e5db3303 100644 --- a/code/game/jobs/job/science.dm +++ b/code/game/jobs/job/science.dm @@ -139,7 +139,6 @@ H.equip_or_collect(new /obj/item/clothing/shoes/black(H), slot_shoes) H.equip_or_collect(new /obj/item/device/pda/roboticist(H), slot_wear_pda) H.equip_or_collect(new /obj/item/clothing/suit/storage/labcoat(H), slot_wear_suit) -// H.equip_or_collect(new /obj/item/clothing/gloves/black(H), slot_gloves) H.equip_or_collect(new /obj/item/weapon/storage/belt/utility/full(H), slot_belt) if(H.backbag == 1) H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H), slot_r_hand) diff --git a/code/game/jobs/job/security.dm b/code/game/jobs/job/security.dm index 45d19411b32..c5efe344164 100644 --- a/code/game/jobs/job/security.dm +++ b/code/game/jobs/job/security.dm @@ -29,7 +29,7 @@ H.equip_or_collect(new /obj/item/clothing/shoes/jackboots(H), slot_shoes) H.equip_or_collect(new /obj/item/clothing/suit/armor/hos(H), slot_wear_suit) H.equip_or_collect(new /obj/item/device/pda/heads/hos(H), slot_wear_pda) - H.equip_or_collect(new /obj/item/clothing/gloves/black(H), slot_gloves) + H.equip_or_collect(new /obj/item/clothing/gloves/color/black/hos(H), slot_gloves) H.equip_or_collect(new /obj/item/clothing/head/HoS(H), slot_head) H.equip_or_collect(new /obj/item/clothing/glasses/sunglasses/sechud(H), slot_glasses) H.equip_or_collect(new /obj/item/weapon/gun/energy/gun(H), slot_s_store) @@ -74,7 +74,7 @@ H.equip_or_collect(new /obj/item/clothing/suit/armor/vest/warden(H), slot_wear_suit) H.equip_to_slot_or_del(new /obj/item/clothing/head/warden(H), slot_head) H.equip_or_collect(new /obj/item/device/pda/warden(H), slot_wear_pda) - H.equip_or_collect(new /obj/item/clothing/gloves/black(H), slot_gloves) + H.equip_or_collect(new /obj/item/clothing/gloves/color/black(H), slot_gloves) H.equip_or_collect(new /obj/item/clothing/glasses/sunglasses/sechud(H), slot_glasses) // H.equip_or_collect(new /obj/item/clothing/mask/gas(H), slot_wear_mask) //Grab one from the armory you donk H.equip_or_collect(new /obj/item/device/flash(H), slot_l_store) @@ -119,10 +119,11 @@ H.equip_or_collect(new /obj/item/clothing/under/det(H), slot_w_uniform) H.equip_or_collect(new /obj/item/clothing/shoes/brown(H), slot_shoes) H.equip_or_collect(new /obj/item/device/pda/detective(H), slot_wear_pda) + H.equip_or_collect(new /obj/item/toy/crayon/white(H), slot_l_store) /* var/obj/item/clothing/mask/cigarette/CIG = new /obj/item/clothing/mask/cigarette(H) CIG.light("") H.equip_or_collect(CIG, slot_wear_mask) */ - H.equip_or_collect(new /obj/item/clothing/gloves/black(H), slot_gloves) + H.equip_or_collect(new /obj/item/clothing/gloves/color/black(H), slot_gloves) if(H.mind.role_alt_title && H.mind.role_alt_title == "Forensic Technician") H.equip_or_collect(new /obj/item/clothing/suit/storage/forensics/blue(H), slot_wear_suit) else @@ -176,6 +177,7 @@ H.equip_or_collect(new /obj/item/clothing/suit/armor/vest/security(H), slot_wear_suit) H.equip_to_slot_or_del(new /obj/item/clothing/head/helmet(H), slot_head) H.equip_or_collect(new /obj/item/device/pda/security(H), slot_wear_pda) + H.equip_or_collect(new /obj/item/clothing/gloves/color/black(H), slot_gloves) H.equip_or_collect(new /obj/item/weapon/gun/energy/advtaser(H), slot_s_store) H.equip_or_collect(new /obj/item/device/flash(H), slot_l_store) if(H.backbag == 1) @@ -251,6 +253,7 @@ H.equip_or_collect(new /obj/item/clothing/suit/jacket(H), slot_wear_suit) H.equip_or_collect(new /obj/item/clothing/shoes/jackboots(H), slot_shoes) H.equip_or_collect(new /obj/item/device/pda/security(H), slot_wear_pda) + H.equip_or_collect(new /obj/item/clothing/gloves/color/black(H), slot_gloves) H.equip_or_collect(new /obj/item/weapon/gun/energy/advtaser(H), slot_belt) H.equip_or_collect(new /obj/item/device/flash(H), slot_l_store) if(H.backbag == 1) diff --git a/code/game/jobs/job/support.dm b/code/game/jobs/job/support.dm index 96e5d089b22..e50ff107344 100644 --- a/code/game/jobs/job/support.dm +++ b/code/game/jobs/job/support.dm @@ -118,7 +118,6 @@ H.equip_or_collect(new /obj/item/clothing/under/rank/cargo(H), slot_w_uniform) H.equip_or_collect(new /obj/item/clothing/shoes/brown(H), slot_shoes) H.equip_or_collect(new /obj/item/device/pda/quartermaster(H), slot_wear_pda) -// H.equip_or_collect(new /obj/item/clothing/gloves/black(H), slot_gloves) H.equip_or_collect(new /obj/item/clothing/glasses/sunglasses(H), slot_glasses) H.equip_or_collect(new /obj/item/weapon/clipboard(H), slot_l_hand) if(H.backbag == 1) @@ -147,7 +146,6 @@ H.equip_or_collect(new /obj/item/clothing/under/rank/cargotech(H), slot_w_uniform) H.equip_or_collect(new /obj/item/clothing/shoes/black(H), slot_shoes) H.equip_or_collect(new /obj/item/device/pda/cargo(H), slot_wear_pda) -// H.equip_or_collect(new /obj/item/clothing/gloves/black(H), slot_gloves) if(H.backbag == 1) H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H), slot_r_hand) else @@ -179,7 +177,6 @@ H.equip_or_collect(new /obj/item/device/pda/shaftminer(H), slot_wear_pda) H.equip_or_collect(new /obj/item/clothing/shoes/black(H), slot_shoes) H.equip_or_collect(new /obj/item/weapon/pickaxe/drill(H), slot_belt) -// H.equip_or_collect(new /obj/item/clothing/gloves/black(H), slot_gloves) if(H.backbag == 1) H.equip_or_collect(new /obj/item/weapon/storage/box/engineer(H), slot_r_hand) H.equip_or_collect(new /obj/item/weapon/crowbar(H), slot_l_hand) diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index c8987cccad0..f74bbc7f5ed 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -1076,8 +1076,8 @@ //req_access_txt = "12" //Maintenance access products = list(/obj/item/stack/cable_coil/random = 10,/obj/item/weapon/crowbar = 5,/obj/item/weapon/weldingtool = 3,/obj/item/weapon/wirecutters = 5, /obj/item/weapon/wrench = 5,/obj/item/device/analyzer = 5,/obj/item/device/t_scanner = 5,/obj/item/weapon/screwdriver = 5) - contraband = list(/obj/item/weapon/weldingtool/hugetank = 2,/obj/item/clothing/gloves/fyellow = 2) - premium = list(/obj/item/clothing/gloves/yellow = 1) + contraband = list(/obj/item/weapon/weldingtool/hugetank = 2,/obj/item/clothing/gloves/color/fyellow = 2) + premium = list(/obj/item/clothing/gloves/color/yellow = 1) /obj/machinery/vending/engivend name = "Engi-Vend" @@ -1097,7 +1097,7 @@ icon_deny = "engi-deny" req_access_txt = "11" products = list(/obj/item/clothing/under/rank/chief_engineer = 4,/obj/item/clothing/under/rank/engineer = 4,/obj/item/clothing/shoes/orange = 4,/obj/item/clothing/head/hardhat = 4, - /obj/item/weapon/storage/belt/utility = 4,/obj/item/clothing/glasses/meson = 4,/obj/item/clothing/gloves/yellow = 4, /obj/item/weapon/screwdriver = 12, + /obj/item/weapon/storage/belt/utility = 4,/obj/item/clothing/glasses/meson = 4,/obj/item/clothing/gloves/color/yellow = 4, /obj/item/weapon/screwdriver = 12, /obj/item/weapon/crowbar = 12,/obj/item/weapon/wirecutters = 12,/obj/item/device/multitool = 12,/obj/item/weapon/wrench = 12,/obj/item/device/t_scanner = 12, /obj/item/stack/cable_coil/heavyduty = 8, /obj/item/weapon/stock_parts/cell = 8, /obj/item/weapon/weldingtool = 8,/obj/item/clothing/head/welding = 8, /obj/item/weapon/light/tube = 10,/obj/item/clothing/suit/fire = 4, /obj/item/weapon/stock_parts/scanning_module = 5,/obj/item/weapon/stock_parts/micro_laser = 5, @@ -1211,7 +1211,7 @@ /obj/item/clothing/under/sundress=2,/obj/item/clothing/under/stripeddress = 1, /obj/item/clothing/under/sailordress = 1, /obj/item/clothing/under/redeveninggown = 1, /obj/item/clothing/under/blacktango=1,/obj/item/clothing/suit/jacket=3, /obj/item/clothing/glasses/regular=2,/obj/item/clothing/head/sombrero=1,/obj/item/clothing/suit/poncho=1, /obj/item/clothing/suit/ianshirt=1,/obj/item/clothing/shoes/laceup=2,/obj/item/clothing/shoes/black=4, - /obj/item/clothing/shoes/sandal=1, + /obj/item/clothing/shoes/sandal=1, /obj/item/clothing/gloves/fingerless=2, /obj/item/weapon/storage/belt/fannypack=1, /obj/item/weapon/storage/belt/fannypack/blue=1, /obj/item/weapon/storage/belt/fannypack/red=1) contraband = list(/obj/item/clothing/under/syndicate/tacticool=1,/obj/item/clothing/mask/balaclava=1,/obj/item/clothing/head/ushanka=1,/obj/item/clothing/under/soviet=1,/obj/item/weapon/storage/belt/fannypack/black=1) premium = list(/obj/item/clothing/under/suit_jacket/checkered=1,/obj/item/clothing/head/mailman=1,/obj/item/clothing/under/rank/mailman=1,/obj/item/clothing/suit/jacket/leather=1,/obj/item/clothing/under/pants/mustangjeans=1) diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm index 19108eec93d..361ecedb4e1 100644 --- a/code/game/machinery/washing_machine.dm +++ b/code/game/machinery/washing_machine.dm @@ -1,5 +1,6 @@ /obj/machinery/washing_machine name = "Washing Machine" + desc = "Gets rid of those pesky bloodstains, or your money back!" icon = 'icons/obj/machines/washing_machine.dmi' icon_state = "wm_10" density = 1 @@ -87,8 +88,8 @@ //world << "DEBUG: YUP! [new_icon_state] and [new_item_state]" break del(J) - for(var/T in typesof(/obj/item/clothing/gloves)) - var/obj/item/clothing/gloves/G = new T + for(var/T in typesof(/obj/item/clothing/gloves/color)) + var/obj/item/clothing/gloves/color/G = new T //world << "DEBUG: [color] == [J.color]" if(_color == G._color) new_glove_icon_state = G.icon_state @@ -137,13 +138,13 @@ J.name = new_jumpsuit_name J.desc = new_desc if(new_glove_icon_state && new_glove_item_state && new_glove_name) - for(var/obj/item/clothing/gloves/G in contents) + for(var/obj/item/clothing/gloves/color/G in contents) //world << "DEBUG: YUP! FOUND IT!" G.item_state = new_glove_item_state G.icon_state = new_glove_icon_state G._color = _color G.name = new_glove_name - if(!istype(G, /obj/item/clothing/gloves/black/thief)) + if(!istype(G, /obj/item/clothing/gloves/color/black/thief)) G.desc = new_desc if(new_shoe_icon_state && new_shoe_name) for(var/obj/item/clothing/shoes/S in contents) @@ -265,7 +266,10 @@ return if ( istype(W,/obj/item/clothing/gloves/furgloves ) ) user << "This item does not fit." - return + return + if(W.flags & NODROP) //if "can't drop" item + user << "\The [W] is stuck to your hand, you cannot put it in the washing machine!" + return if(contents.len < 5) if ( state in list(1, 3) ) diff --git a/code/game/objects/effects/decals/crayon.dm b/code/game/objects/effects/decals/crayon.dm index 226fcdcf456..db1952f145e 100644 --- a/code/game/objects/effects/decals/crayon.dm +++ b/code/game/objects/effects/decals/crayon.dm @@ -1,36 +1,23 @@ /obj/effect/decal/cleanable/crayon name = "rune" desc = "A rune drawn in crayon." - icon = 'icons/obj/rune.dmi' + icon = 'icons/effects/crayondecal.dmi' + icon_state = "rune1" layer = 2.1 anchored = 1 - examine() - set src in view(2) - ..() - return +/obj/effect/decal/cleanable/crayon/examine() + set src in view(2) + ..() + return - New(location,main = "#FFFFFF",shade = "#000000",var/type = "rune") - ..() - loc = location +/obj/effect/decal/cleanable/crayon/New(location, main = "#FFFFFF", var/type = "rune1", var/e_name = "rune") + ..() + loc = location - name = type - desc = "A [type] drawn in crayon." + name = e_name + desc = "A [name] drawn in crayon." - switch(type) - if("rune") - type = "rune[rand(1,6)]" - if("graffiti") - type = pick("amyjon","face","matt","revolution","engie","guy","end","dwarf","uboa") - - var/icon/mainOverlay = new/icon('icons/effects/crayondecal.dmi',"[type]",2.1) - var/icon/shadeOverlay = new/icon('icons/effects/crayondecal.dmi',"[type]s",2.1) - - mainOverlay.Blend(main,ICON_ADD) - shadeOverlay.Blend(shade,ICON_ADD) - - overlays += mainOverlay - overlays += shadeOverlay - - add_hiddenprint(usr) \ No newline at end of file + icon_state = type + color = main \ No newline at end of file diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm index ad757325b95..fe8fe4138bd 100644 --- a/code/game/objects/items/crayons.dm +++ b/code/game/objects/items/crayons.dm @@ -1,100 +1,84 @@ /obj/item/toy/crayon/red icon_state = "crayonred" colour = "#DA0000" - shadeColour = "#810C0C" colourName = "red" /obj/item/toy/crayon/orange icon_state = "crayonorange" colour = "#FF9300" - shadeColour = "#A55403" colourName = "orange" /obj/item/toy/crayon/yellow icon_state = "crayonyellow" colour = "#FFF200" - shadeColour = "#886422" colourName = "yellow" /obj/item/toy/crayon/green icon_state = "crayongreen" colour = "#A8E61D" - shadeColour = "#61840F" colourName = "green" /obj/item/toy/crayon/blue icon_state = "crayonblue" colour = "#00B7EF" - shadeColour = "#0082A8" colourName = "blue" /obj/item/toy/crayon/purple icon_state = "crayonpurple" colour = "#DA00FF" - shadeColour = "#810CFF" colourName = "purple" +/obj/item/toy/crayon/white + icon_state = "crayonwhite" + colour = "#FFFFFF" + colourName = "white" + /obj/item/toy/crayon/mime icon_state = "crayonmime" desc = "A very sad-looking crayon." colour = "#FFFFFF" - shadeColour = "#000000" colourName = "mime" uses = 0 -/obj/item/toy/crayon/mime/attack_self(mob/living/user as mob) //inversion - if(colour != "#FFFFFF" && shadeColour != "#000000") - colour = "#FFFFFF" - shadeColour = "#000000" - user << "You will now draw in white and black with this crayon." +/obj/item/toy/crayon/mime/attack_self(mob/living/user as mob) + update_window(user) + +/obj/item/toy/crayon/mime/update_window(mob/living/user as mob) + dat += "
   Change color
" + ..() + +/obj/item/toy/crayon/mime/Topic(href,href_list) + if ((usr.restrained() || usr.stat || usr.get_active_hand() != src)) + return + if(href_list["color"]) + if(colour != "#FFFFFF") + colour = "#FFFFFF" + else + colour = "#000000" + update_window(usr) else - colour = "#000000" - shadeColour = "#FFFFFF" - user << "You will now draw in black and white with this crayon." - return + ..() /obj/item/toy/crayon/rainbow icon_state = "crayonrainbow" colour = "#FFF000" - shadeColour = "#000FFF" colourName = "rainbow" uses = 0 /obj/item/toy/crayon/rainbow/attack_self(mob/living/user as mob) - colour = input(user, "Please select the main colour.", "Crayon colour") as color - shadeColour = input(user, "Please select the shade colour.", "Crayon colour") as color - return + update_window(user) -/obj/item/toy/crayon/afterattack(atom/target, mob/user as mob, proximity) - if(!proximity) return - if(istype(target,/turf/simulated/floor)) - var/drawtype = input("Choose what you'd like to draw.", "Crayon scribbles") in list("graffiti","rune","letter") - switch(drawtype) - if("letter") - drawtype = input("Choose the letter.", "Crayon scribbles") in list("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z") - user << "You start drawing a letter on the [target.name]." - if("graffiti") - user << "You start drawing graffiti on the [target.name]." - if("rune") - user << "You start drawing a rune on the [target.name]." - if(instant || do_after(user, 50)) - new /obj/effect/decal/cleanable/crayon(target,colour,shadeColour,drawtype) - user << "You finish drawing." - if(uses) - uses-- - if(!uses) - user << "\red You used up your crayon!" - del(src) - return +/obj/item/toy/crayon/rainbow/update_window(mob/living/user as mob) + dat += "
   Change color
" + ..() -/obj/item/toy/crayon/attack(mob/M as mob, mob/user as mob) - if(M == user) - user << "You take a bite of the crayon. Delicious!" - user.nutrition += 5 - if(uses) - uses -= 5 - if(uses <= 0) - user << "\red You ate your crayon!" - del(src) +/obj/item/toy/crayon/rainbow/Topic(href,href_list[]) + + if(href_list["color"]) + var/temp = input(usr, "Please select colour.", "Crayon colour") as color + if ((usr.restrained() || usr.stat || usr.get_active_hand() != src)) + return + colour = temp + update_window(usr) else ..() \ No newline at end of file diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index dda1a4942c0..e5cd25994f5 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -438,20 +438,104 @@ desc = "A colourful crayon. Looks tasty. Mmmm..." icon = 'icons/obj/crayons.dmi' icon_state = "crayonred" - slot_flags = SLOT_EARS w_class = 1.0 attack_verb = list("attacked", "coloured") var/colour = "#FF0000" //RGB - var/shadeColour = "#220000" //RGB + var/drawtype = "rune" + var/list/graffiti = list("amyjon","face","matt","revolution","engie","guy","end","dwarf","uboa","body","cyka") + var/list/letters = list("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z") var/uses = 30 //0 for unlimited uses var/instant = 0 var/colourName = "red" //for updateIcon purposes + var/dat - suicide_act(mob/user) - viewers(user) << "[user] is jamming the [src.name] up \his nose and into \his brain. It looks like \he's trying to commit suicide." - return (BRUTELOSS|OXYLOSS) +/obj/item/toy/crayon/suicide_act(mob/user) + user.visible_message("[user] is jamming the [src.name] up \his nose and into \his brain. It looks like \he's trying to commit suicide.") + return (BRUTELOSS|OXYLOSS) +/obj/item/toy/crayon/New() + ..() + name = "[colourName] crayon" //Makes crayons identifiable in things like grinders + drawtype = pick(pick(graffiti), pick(letters), "rune[rand(1,6)]") +/obj/item/toy/crayon/attack_self(mob/living/user as mob) + update_window(user) + +/obj/item/toy/crayon/proc/update_window(mob/living/user as mob) + dat += "

Currently selected: [drawtype]


" + dat += "Random letterPick letter" + dat += "
" + dat += "

Runes:


" + dat += "Random rune" + for(var/i = 1; i <= 6; i++) + dat += "Rune[i]" + if(!((i + 1) % 3)) //3 buttons in a row + dat += "
" + dat += "
" + graffiti.Find() + dat += "

Graffiti:


" + dat += "Random graffiti" + var/c = 1 + for(var/T in graffiti) + dat += "[T]" + if(!((c + 1) % 3)) //3 buttons in a row + dat += "
" + c++ + dat += "
" + var/datum/browser/popup = new(user, "crayon", name, 300, 500) + popup.set_content(dat) + popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) + popup.open() + dat = "" + +/obj/item/toy/crayon/Topic(href, href_list, hsrc) + var/temp = "a" + switch(href_list["type"]) + if("random_letter") + temp = pick(letters) + if("letter") + temp = input("Choose the letter.", "Crayon scribbles") in letters + if("random_rune") + temp = "rune[rand(1,6)]" + if("random_graffiti") + temp = pick(graffiti) + else + temp = href_list["type"] + if ((usr.restrained() || usr.stat || usr.get_active_hand() != src)) + return + drawtype = temp + update_window(usr) + +/obj/item/toy/crayon/afterattack(atom/target, mob/user as mob, proximity) + if(!proximity) return + if(istype(target,/turf/simulated/floor)) + var/temp = "rune" + if(letters.Find(drawtype)) + temp = "letter" + else if(graffiti.Find(drawtype)) + temp = "graffiti" + user << "You start drawing a [temp] on the [target.name]." + if(instant || do_after(user, 50)) + new /obj/effect/decal/cleanable/crayon(target,colour,drawtype,temp) + user << "You finish drawing [temp]." + if(uses) + uses-- + if(!uses) + user << "You used up your crayon!" + qdel(src) + return + +/obj/item/toy/crayon/attack(mob/M as mob, mob/user as mob) + if(M == user) + user << "You take a bite of the crayon. Delicious!" + user.nutrition += 5 + if(uses) + uses -= 5 + if(uses <= 0) + user << "You ate your crayon!" + qdel(src) + else + ..() /* diff --git a/code/game/objects/items/weapons/storage/toolbox.dm b/code/game/objects/items/weapons/storage/toolbox.dm index cb04eeaccd3..d905730dbf8 100644 --- a/code/game/objects/items/weapons/storage/toolbox.dm +++ b/code/game/objects/items/weapons/storage/toolbox.dm @@ -64,7 +64,7 @@ new /obj/item/stack/cable_coil(src,30,color) new /obj/item/stack/cable_coil(src,30,color) if(prob(5)) - new /obj/item/clothing/gloves/yellow(src) + new /obj/item/clothing/gloves/color/yellow(src) else new /obj/item/stack/cable_coil(src,30,color) diff --git a/code/game/objects/items/weapons/storage/uplink_kits.dm b/code/game/objects/items/weapons/storage/uplink_kits.dm index 710251b34d7..45f556bb425 100644 --- a/code/game/objects/items/weapons/storage/uplink_kits.dm +++ b/code/game/objects/items/weapons/storage/uplink_kits.dm @@ -38,6 +38,9 @@ new /obj/item/ammo_box/a357(src) new /obj/item/weapon/card/emag(src) new /obj/item/weapon/plastique(src) + new /obj/item/clothing/gloves/color/latex/nitrile(src) + new /obj/item/clothing/mask/gas/clown_hat(src) + new /obj/item/clothing/under/suit_jacket/really_black(src) return if("murder") diff --git a/code/game/objects/random/random.dm b/code/game/objects/random/random.dm index 9b12b3dcc46..b5fb68105c2 100644 --- a/code/game/objects/random/random.dm +++ b/code/game/objects/random/random.dm @@ -97,7 +97,7 @@ prob(1);/obj/item/stack/packageWrap,\ prob(2);/obj/random/bomb_supply,\ prob(1);/obj/item/weapon/extinguisher,\ - prob(1);/obj/item/clothing/gloves/fyellow,\ + prob(1);/obj/item/clothing/gloves/color/fyellow,\ prob(3);/obj/item/stack/cable_coil,\ prob(2);/obj/random/toolbox,\ prob(2);/obj/item/weapon/storage/belt/utility,\ diff --git a/code/game/objects/structures/crates_lockers/closets/gimmick.dm b/code/game/objects/structures/crates_lockers/closets/gimmick.dm index 4a9669a9955..a72ae3d7e60 100644 --- a/code/game/objects/structures/crates_lockers/closets/gimmick.dm +++ b/code/game/objects/structures/crates_lockers/closets/gimmick.dm @@ -61,8 +61,8 @@ sleep(2) new /obj/item/clothing/glasses/eyepatch(src) new /obj/item/clothing/glasses/sunglasses(src) - new /obj/item/clothing/gloves/swat(src) - new /obj/item/clothing/gloves/swat(src) + new /obj/item/clothing/gloves/combat(src) + new /obj/item/clothing/gloves/combat(src) new /obj/item/clothing/head/helmet/swat(src) new /obj/item/clothing/head/helmet/swat(src) new /obj/item/clothing/mask/gas(src) diff --git a/code/game/objects/structures/crates_lockers/closets/job_closets.dm b/code/game/objects/structures/crates_lockers/closets/job_closets.dm index 42e82b8af22..a641af29874 100644 --- a/code/game/objects/structures/crates_lockers/closets/job_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/job_closets.dm @@ -83,7 +83,7 @@ new /obj/item/weapon/storage/bag/trash(src) new /obj/item/device/lightreplacer(src) new /obj/item/weapon/holosign_creator(src) - new /obj/item/clothing/gloves/black(src) + new /obj/item/clothing/gloves/color/black(src) new /obj/item/clothing/head/soft/purple(src) new /obj/item/weapon/watertank/janitor(src) new /obj/item/weapon/storage/belt/janitor(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm b/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm index 14fd16914cc..78e90703b9e 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm @@ -14,7 +14,7 @@ new /obj/item/clothing/under/rank/cargotech(src) new /obj/item/clothing/shoes/black(src) new /obj/item/device/radio/headset/headset_cargo(src) - new /obj/item/clothing/gloves/black(src) + new /obj/item/clothing/gloves/fingerless(src) new /obj/item/clothing/head/soft(src) // new /obj/item/weapon/cartridge/quartermaster(src) return @@ -35,7 +35,7 @@ new /obj/item/clothing/under/rank/cargo(src) new /obj/item/clothing/shoes/brown(src) new /obj/item/device/radio/headset/headset_cargo(src) - new /obj/item/clothing/gloves/black(src) + new /obj/item/clothing/gloves/fingerless(src) // new /obj/item/weapon/cartridge/quartermaster(src) new /obj/item/clothing/suit/fire/firefighter(src) new /obj/item/weapon/tank/emergency_oxygen(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index ae57669c261..79a84cd2c1f 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -328,7 +328,7 @@ new /obj/item/clothing/suit/storage/det_suit(src) new /obj/item/clothing/suit/storage/forensics/blue(src) new /obj/item/clothing/suit/storage/forensics/red(src) - new /obj/item/clothing/gloves/black(src) + new /obj/item/clothing/gloves/color/black(src) new /obj/item/clothing/head/det_hat(src) new /obj/item/clothing/shoes/brown(src) new /obj/item/weapon/storage/box/evidence(src) diff --git a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm index 90cee7c97a8..fcead78a565 100644 --- a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm +++ b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm @@ -296,8 +296,8 @@ new /obj/item/clothing/suit/storage/labcoat(src) new /obj/item/clothing/shoes/black(src) new /obj/item/clothing/shoes/black(src) - new /obj/item/clothing/gloves/black(src) - new /obj/item/clothing/gloves/black(src) + new /obj/item/clothing/gloves/fingerless(src) + new /obj/item/clothing/gloves/fingerless(src) new /obj/item/clothing/head/soft/black(src) new /obj/item/clothing/head/soft/black(src) return diff --git a/code/game/response_team.dm b/code/game/response_team.dm index f495914d42d..4050cadceff 100644 --- a/code/game/response_team.dm +++ b/code/game/response_team.dm @@ -17,39 +17,39 @@ var/can_call_ert if(!check_rights(R_EVENT)) return - + if(!ticker) usr << "\red The game hasn't started yet!" return - + if(ticker.current_state == 1) usr << "\red The round hasn't started yet!" return - + if(send_emergency_team) usr << "\red Central Command has already dispatched an emergency response team!" return - + if(alert("Do you want to dispatch an Emergency Response Team?",,"Yes","No") != "Yes") return - - + + if(get_security_level() != "red") // Allow admins to reconsider if the alert level isn't Red switch(alert("The station is not in red alert. Do you still want to dispatch a response team?",,"Yes","No")) if("No") return - + if(send_emergency_team) usr << "\red Central Command has already dispatched an emergency response team!" return - + if(pick_ert_type()) return message_admins("[key_name_admin(usr)] is dispatching an Emergency Response Team.", 1) log_admin("[key_name(usr)] used Dispatch Response Team.") trigger_armed_response_team(1) - + /client/proc/pick_ert_type() var/erttype = input("Which type of Emergency Response Team would you like to dispatch?","Emergency Response Team Type", "") as null|anything in response_team_types if(!erttype) @@ -68,25 +68,25 @@ var/can_call_ert if(!istype(usr,/mob/dead/observer) && !istype(usr,/mob/new_player)) usr << "You need to be an observer or new player to use this." return - + if(!send_emergency_team) usr << "No emergency response team is currently being sent." return - + if(jobban_isbanned(usr, "Emergency Response Team")) usr << "You are jobbanned from the emergency reponse team!" return - + var/player_age_check = check_client_age(usr.client, responseteam_age) if(player_age_check && config.use_age_restriction_for_antags) usr << "This role is not yet available to you. You need to wait another [player_age_check] days." return - if(response_team_members.len > 6) + if(response_team_members.len > 6) usr << "The emergency response team is already full!" return - for (var/obj/effect/landmark/L in landmarks_list) + for (var/obj/effect/landmark/L in landmarks_list) if (L.name == "Response Team") L.name = null @@ -118,13 +118,13 @@ var/can_call_ert var/deadcount = 0 for(var/mob/living/carbon/human/H in mob_list) if(H.client) // Monkeys and mice don't have a client, amirite? - if(H.stat == 2) + if(H.stat == 2) deadcount++ total++ - if(total == 0) + if(total == 0) return 0 - else + else return round(100 * deadcount / total) // counts the number of antagonists in % @@ -136,9 +136,9 @@ var/can_call_ert antagonists++ total++ - if(total == 0) + if(total == 0) return 0 - else + else return round(100 * antagonists / total) // Increments the ERT chance automatically, so that the later it is in the round, @@ -170,7 +170,7 @@ var/can_call_ert send_team_chance += percentage_antagonists() // the more antagonists, the higher the chance send_team_chance = min(send_team_chance, 100) - if(force) + if(force) send_team_chance = 100 // there's only a certain chance a team will be sent @@ -186,7 +186,7 @@ var/can_call_ert sleep(600 * 5) send_emergency_team = 0 // Can no longer join the ERT. -/* +/* var/area/security/nuke_storage/nukeloc = locate() //To find the nuke in the vault var/obj/machinery/nuclearbomb/nuke = locate() in nukeloc if(!nuke) @@ -343,7 +343,7 @@ var/can_call_ert equip_emergencyresponsesquad(M, "Commander", class) else equip_emergencyresponsesquad(M, class) - + return M /proc/equip_emergencyresponsesquad(var/mob/living/carbon/human/M, var/role, var/role2) @@ -360,13 +360,13 @@ var/can_call_ert M.equip_to_slot_or_del(new /obj/item/clothing/shoes/galoshes(M), slot_shoes) else M.equip_to_slot_or_del(new /obj/item/clothing/shoes/magboots/advance(M), slot_shoes) - + M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/rig/ert/commander(M), slot_wear_suit) var/obj/item/clothing/suit/space/rig/R = M.wear_suit R.helmet = new /obj/item/clothing/head/helmet/space/rig/ert/commander(M) M.equip_to_slot_or_del(R.helmet, slot_head) R.helmet.flags |= NODROP - + M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/swat(M), slot_wear_mask) M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(M), slot_back) @@ -386,8 +386,8 @@ var/can_call_ert M.equip_to_slot_or_del(pda, slot_wear_pda) M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/gun(M), slot_s_store) - M.equip_to_slot_or_del(new /obj/item/weapon/tank/emergency_oxygen/double/full(M), slot_r_store) - + M.equip_to_slot_or_del(new /obj/item/weapon/tank/emergency_oxygen/double/full(M), slot_r_store) + M.equip_to_slot_or_del(new /obj/item/weapon/pinpointer/advpinpointer(M), slot_in_backpack) switch(role2) @@ -395,62 +395,62 @@ var/can_call_ert M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves) M.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/sechud(M), slot_glasses) M.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/security/response_team(M), slot_belt) - + M.equip_to_slot_or_del(new /obj/item/clothing/glasses/hud/security/night(M), slot_in_backpack) M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/handcuffs(M), slot_in_backpack) M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/gun/nuclear(M), slot_in_backpack) M.equip_to_slot_or_del(new /obj/item/weapon/shield/riot/tele(M), slot_in_backpack) - + if("Medical") M.equip_to_slot_or_del(new /obj/item/clothing/gloves/color/latex/nitrile(M), slot_gloves) M.equip_to_slot_or_del(new /obj/item/clothing/glasses/hud/health/night(M), slot_glasses) M.equip_to_slot_or_del(new /obj/item/weapon/defibrillator/compact/combat/loaded(M), slot_belt) - + M.equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid/fire(M), slot_in_backpack) M.equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid/o2(M), slot_in_backpack) M.equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid/toxin(M), slot_in_backpack) M.equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/hypospray/CMO(M), slot_in_backpack) M.equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid/adv(M), slot_r_hand) - + if("Engineering") M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves) M.equip_to_slot_or_del(new /obj/item/clothing/glasses/meson/night(M), slot_glasses) M.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/utility/full/multitool(M), slot_belt) - + M.equip_to_slot_or_del(new /obj/item/weapon/rcd/combat(M), slot_in_backpack) M.equip_to_slot_or_del(new /obj/item/weapon/rcd_ammo/large(M), slot_in_backpack) M.equip_to_slot_or_del(new /obj/item/weapon/rcd_ammo/large(M), slot_in_backpack) M.equip_to_slot_or_del(new /obj/item/stack/sheet/metal/full(M), slot_in_backpack) M.equip_to_slot_or_del(new /obj/item/stack/sheet/glass/full(M), slot_in_backpack) - M.equip_to_slot_or_del(new /obj/item/stack/sheet/plasteel/full(M), slot_in_backpack) - + M.equip_to_slot_or_del(new /obj/item/stack/sheet/plasteel/full(M), slot_in_backpack) + M.equip_to_slot_or_del(new /obj/item/weapon/storage/briefcase/inflatable(M), slot_r_hand) - + if("Janitorial") - M.equip_to_slot_or_del(new /obj/item/clothing/gloves/purple(M), slot_gloves) + M.equip_to_slot_or_del(new /obj/item/clothing/gloves/color/purple(M), slot_gloves) M.equip_to_slot_or_del(new /obj/item/clothing/glasses/janitor, slot_glasses) M.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/janitor/full, slot_belt) - + M.equip_to_slot_or_del(new /obj/item/clothing/glasses/night(src), slot_in_backpack) M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/lights/mixed(src), slot_in_backpack) M.equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/spray/plantbgone(src), slot_in_backpack) M.equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/glass/bucket(src), slot_in_backpack) - - M.equip_to_slot_or_del(new /obj/item/weapon/mop/advanced(M), slot_r_hand) - + + M.equip_to_slot_or_del(new /obj/item/weapon/mop/advanced(M), slot_r_hand) + new /obj/structure/mopbucket/full(get_turf(M)) if("Security") M.equip_to_slot_or_del(new /obj/item/clothing/shoes/magboots(M), slot_shoes) M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves) M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/rig/ert/security(M), slot_wear_suit) - + var/obj/item/clothing/suit/space/rig/R = M.wear_suit R.helmet = new /obj/item/clothing/head/helmet/space/rig/ert/security(M) M.equip_to_slot_or_del(R.helmet, slot_head) R.helmet.flags |= NODROP - + M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/swat(M), slot_wear_mask) M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(M), slot_back) M.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/sechud(M), slot_glasses) @@ -470,10 +470,10 @@ var/can_call_ert pda.name = "PDA-[M.real_name] ([pda.ownjob])" pda.icon_state = "pda-security" M.equip_to_slot_or_del(pda, slot_wear_pda) - + M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/gun(M), slot_s_store) - M.equip_to_slot_or_del(new /obj/item/weapon/tank/emergency_oxygen/double/full(M), slot_r_store) - + M.equip_to_slot_or_del(new /obj/item/weapon/tank/emergency_oxygen/double/full(M), slot_r_store) + M.equip_to_slot_or_del(new /obj/item/clothing/glasses/hud/security/night(M), slot_in_backpack) M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/handcuffs(M), slot_in_backpack) M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/gun/nuclear(M), slot_in_backpack) @@ -485,18 +485,18 @@ var/can_call_ert M.equip_to_slot_or_del(new /obj/item/clothing/shoes/magboots(M), slot_shoes) M.equip_to_slot_or_del(new /obj/item/clothing/gloves/color/latex/nitrile(M), slot_gloves) M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/rig/ert/medical(M), slot_wear_suit) - + var/obj/item/clothing/suit/space/rig/R = M.wear_suit - R.helmet = new /obj/item/clothing/head/helmet/space/rig/ert/medical(M) + R.helmet = new /obj/item/clothing/head/helmet/space/rig/ert/medical(M) M.equip_to_slot_or_del(R.helmet, slot_head) R.helmet.flags |= NODROP - + M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/swat(M), slot_wear_mask) M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(M), slot_back) M.equip_to_slot_or_del(new /obj/item/clothing/glasses/hud/health/night(M), slot_glasses) var/obj/item/weapon/card/id/W = new(src) - W.assignment = "Emergency Response Team Member" + W.assignment = "Emergency Response Team Member" W.registered_name = M.real_name W.name = "[M.real_name]'s ID Card (Emergency Response Team - Medic)" W.icon_state = "centcom" @@ -510,29 +510,29 @@ var/can_call_ert pda.name = "PDA-[M.real_name] ([pda.ownjob])" pda.icon_state = "pda-medical" M.equip_to_slot_or_del(pda, slot_wear_pda) - + M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/gun(M), slot_s_store) - M.equip_to_slot_or_del(new /obj/item/weapon/tank/emergency_oxygen/double/full(M), slot_r_store) - + M.equip_to_slot_or_del(new /obj/item/weapon/tank/emergency_oxygen/double/full(M), slot_r_store) + M.equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid/fire(M), slot_in_backpack) M.equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid/o2(M), slot_in_backpack) M.equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid/toxin(M), slot_in_backpack) M.equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/hypospray/CMO(M), slot_in_backpack) M.equip_to_slot_or_del(new /obj/item/weapon/defibrillator/compact/combat/loaded(M), slot_belt) - + M.equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid/adv(M), slot_r_hand) if("Engineering") M.equip_to_slot_or_del(new /obj/item/clothing/shoes/magboots/advance(M), slot_shoes) M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves) M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/rig/ert/engineer(M), slot_wear_suit) - + var/obj/item/clothing/suit/space/rig/R = M.wear_suit - R.helmet = new /obj/item/clothing/head/helmet/space/rig/ert/engineer(M) + R.helmet = new /obj/item/clothing/head/helmet/space/rig/ert/engineer(M) M.equip_to_slot_or_del(R.helmet, slot_head) R.helmet.flags |= NODROP - + M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/swat(M), slot_wear_mask) M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(M), slot_back) M.equip_to_slot_or_del(new /obj/item/clothing/glasses/meson/night(M), slot_glasses) @@ -552,31 +552,31 @@ var/can_call_ert pda.name = "PDA-[M.real_name] ([pda.ownjob])" pda.icon_state = "pda-engineer" M.equip_to_slot_or_del(pda, slot_wear_pda) - + M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/gun(M), slot_s_store) - M.equip_to_slot_or_del(new /obj/item/weapon/tank/emergency_oxygen/double/full(M), slot_r_store) + M.equip_to_slot_or_del(new /obj/item/weapon/tank/emergency_oxygen/double/full(M), slot_r_store) M.equip_to_slot_or_del(new /obj/item/weapon/rcd/combat(M), slot_in_backpack) M.equip_to_slot_or_del(new /obj/item/weapon/rcd_ammo/large(M), slot_in_backpack) M.equip_to_slot_or_del(new /obj/item/weapon/rcd_ammo/large(M), slot_in_backpack) M.equip_to_slot_or_del(new /obj/item/stack/sheet/metal/full(M), slot_in_backpack) M.equip_to_slot_or_del(new /obj/item/stack/sheet/glass/full(M), slot_in_backpack) - M.equip_to_slot_or_del(new /obj/item/stack/sheet/plasteel/full(M), slot_in_backpack) + M.equip_to_slot_or_del(new /obj/item/stack/sheet/plasteel/full(M), slot_in_backpack) M.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/utility/full/multitool(M), slot_belt) M.equip_to_slot_or_del(new /obj/item/weapon/storage/briefcase/inflatable(M), slot_r_hand) - + if("Janitorial") M.equip_to_slot_or_del(new /obj/item/clothing/shoes/galoshes(M), slot_shoes) - M.equip_to_slot_or_del(new /obj/item/clothing/gloves/purple(M), slot_gloves) + M.equip_to_slot_or_del(new /obj/item/clothing/gloves/color/purple(M), slot_gloves) M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/rig/ert/janitor(M), slot_wear_suit) - + var/obj/item/clothing/suit/space/rig/R = M.wear_suit - R.helmet = new /obj/item/clothing/head/helmet/space/rig/ert/janitor(M) + R.helmet = new /obj/item/clothing/head/helmet/space/rig/ert/janitor(M) M.equip_to_slot_or_del(R.helmet, slot_head) R.helmet.flags |= NODROP - + M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/swat(M), slot_wear_mask) M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(M), slot_back) M.equip_to_slot_or_del(new /obj/item/clothing/glasses/janitor(M), slot_glasses) @@ -596,9 +596,9 @@ var/can_call_ert pda.name = "PDA-[M.real_name] ([pda.ownjob])" pda.icon_state = "pda-janitor" M.equip_to_slot_or_del(pda, slot_wear_pda) - + M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/gun(M), slot_s_store) - M.equip_to_slot_or_del(new /obj/item/weapon/tank/emergency_oxygen/double/full(M), slot_r_store) + M.equip_to_slot_or_del(new /obj/item/weapon/tank/emergency_oxygen/double/full(M), slot_r_store) M.equip_to_slot_or_del(new /obj/item/clothing/glasses/night(src), slot_in_backpack) M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/lights/mixed(src), slot_in_backpack) @@ -607,8 +607,8 @@ var/can_call_ert M.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/janitor/full, slot_belt) - M.equip_to_slot_or_del(new /obj/item/weapon/mop/advanced(M), slot_r_hand) - + M.equip_to_slot_or_del(new /obj/item/weapon/mop/advanced(M), slot_r_hand) + new /obj/structure/mopbucket/full(get_turf(M)) /*/mob/living/carbon/human/proc/equip_strike_team(leader_selected = 0) Old ERT equip verb. diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index 8bd0f7c4c47..ebb8f3479db 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -734,7 +734,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that if("tunnel clown")//Tunnel clowns rule! M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/clown(M), slot_w_uniform) M.equip_to_slot_or_del(new /obj/item/clothing/shoes/clown_shoes(M), slot_shoes) - M.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(M), slot_gloves) + M.equip_to_slot_or_del(new /obj/item/clothing/gloves/color/black(M), slot_gloves) M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/clown_hat(M), slot_wear_mask) M.equip_to_slot_or_del(new /obj/item/clothing/head/chaplain_hood(M), slot_head) M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear) @@ -775,7 +775,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that if("dark lord") M.equip_to_slot_or_del(new /obj/item/clothing/under/color/black(M), slot_w_uniform) M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes) - M.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(M), slot_gloves) + M.equip_to_slot_or_del(new /obj/item/clothing/gloves/color/black(M), slot_gloves) M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear) M.equip_to_slot_or_del(new /obj/item/weapon/twohanded/dualsaber/red(M), slot_l_hand) @@ -797,7 +797,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that if("assassin") M.equip_to_slot_or_del(new /obj/item/clothing/under/suit_jacket(M), slot_w_uniform) M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes) - M.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(M), slot_gloves) + M.equip_to_slot_or_del(new /obj/item/clothing/gloves/color/black(M), slot_gloves) M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear) M.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(M), slot_glasses) M.equip_to_slot_or_del(new /obj/item/clothing/suit/wcoat(M), slot_wear_suit) @@ -912,7 +912,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that if("emergency response team") M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/centcom_officer(M), slot_w_uniform) M.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(M), slot_shoes) - M.equip_to_slot_or_del(new /obj/item/clothing/gloves/swat(M), slot_gloves) + M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves) M.equip_to_slot_or_del(new /obj/item/device/radio/headset/ert/alt(M), slot_l_ear) M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/gun(M), slot_belt) M.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(M), slot_glasses) @@ -935,7 +935,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that if("emergency response team leader") M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/centcom_officer(M), slot_w_uniform) M.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(M), slot_shoes) - M.equip_to_slot_or_del(new /obj/item/clothing/gloves/swat(M), slot_gloves) + M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves) M.equip_to_slot_or_del(new /obj/item/device/radio/headset/ert/alt(M), slot_l_ear) M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/gun(M), slot_belt) M.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(M), slot_glasses) diff --git a/code/modules/admin/verbs/striketeam_syndicate.dm b/code/modules/admin/verbs/striketeam_syndicate.dm index 755bc91817e..2e39830be85 100644 --- a/code/modules/admin/verbs/striketeam_syndicate.dm +++ b/code/modules/admin/verbs/striketeam_syndicate.dm @@ -138,7 +138,7 @@ var/global/sent_syndicate_strike_team = 0 equip_to_slot_or_del(new /obj/item/clothing/suit/space/syndicate/black/strike(src), slot_wear_suit) else equip_to_slot_or_del(new /obj/item/clothing/suit/space/syndicate/black/red/strike(src), slot_wear_suit) - equip_to_slot_or_del(new /obj/item/clothing/gloves/swat(src), slot_gloves) + equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(src), slot_gloves) if (!syndicate_leader_selected) equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/syndicate/black/strike(src), slot_head) else diff --git a/code/modules/awaymissions/corpse.dm b/code/modules/awaymissions/corpse.dm index 7fa81ce358e..97521412795 100644 --- a/code/modules/awaymissions/corpse.dm +++ b/code/modules/awaymissions/corpse.dm @@ -100,7 +100,7 @@ corpseuniform = /obj/item/clothing/under/syndicate corpsesuit = /obj/item/clothing/suit/armor/vest corpseshoes = /obj/item/clothing/shoes/combat - corpsegloves = /obj/item/clothing/gloves/swat + corpsegloves = /obj/item/clothing/gloves/combat corpseradio = /obj/item/device/radio/headset corpsemask = /obj/item/clothing/mask/gas corpsehelmet = /obj/item/clothing/head/helmet/swat @@ -116,7 +116,7 @@ corpseuniform = /obj/item/clothing/under/syndicate corpsesuit = /obj/item/clothing/suit/space/rig/syndi corpseshoes = /obj/item/clothing/shoes/combat - corpsegloves = /obj/item/clothing/gloves/swat + corpsegloves = /obj/item/clothing/gloves/combat corpseradio = /obj/item/device/radio/headset corpsemask = /obj/item/clothing/mask/gas/syndicate corpsehelmet = /obj/item/clothing/head/helmet/space/rig/syndi @@ -246,7 +246,7 @@ /obj/effect/landmark/corpse/miner corpseradio = /obj/item/device/radio/headset/headset_cargo corpseuniform = /obj/item/clothing/under/rank/miner - corpsegloves = /obj/item/clothing/gloves/black + corpsegloves = /obj/item/clothing/gloves/fingerless corpseback = /obj/item/weapon/storage/backpack/industrial corpseshoes = /obj/item/clothing/shoes/black corpseid = 1 @@ -280,7 +280,7 @@ corpseglasses = /obj/item/clothing/glasses/eyepatch corpsemask = /obj/item/clothing/mask/cigarette/cigar/cohiba corpsehelmet = /obj/item/clothing/head/centhat - corpsegloves = /obj/item/clothing/gloves/swat + corpsegloves = /obj/item/clothing/gloves/combat corpseshoes = /obj/item/clothing/shoes/combat corpsepocket1 = /obj/item/weapon/lighter/zippo corpseid = 1 diff --git a/code/modules/clothing/gloves/color.dm b/code/modules/clothing/gloves/color.dm index e7b8b3ae64f..ecc763a1a49 100644 --- a/code/modules/clothing/gloves/color.dm +++ b/code/modules/clothing/gloves/color.dm @@ -1,4 +1,4 @@ -/obj/item/clothing/gloves/yellow +/obj/item/clothing/gloves/color/yellow desc = "These gloves will protect the wearer from electric shock." name = "insulated gloves" icon_state = "yellow" @@ -14,7 +14,7 @@ power var/next_shock = 0 -/obj/item/clothing/gloves/fyellow //Cheap Chinese Crap +/obj/item/clothing/gloves/color/fyellow //Cheap Chinese Crap desc = "These gloves are cheap copies of the coveted gloves, no way this can end badly." name = "budget insulated gloves" icon_state = "yellow" @@ -30,7 +30,7 @@ New() siemens_coefficient = pick(0,0.5,0.5,0.5,0.5,0.75,1.5) -/obj/item/clothing/gloves/black +/obj/item/clothing/gloves/color/black desc = "These gloves are fire-resistant." name = "black gloves" icon_state = "black" @@ -55,7 +55,7 @@ thief pickpocket = 1 -/obj/item/clothing/gloves/orange +/obj/item/clothing/gloves/color/orange name = "orange gloves" desc = "A pair of gloves, they don't look special in any way." icon_state = "orange" @@ -65,7 +65,7 @@ sprite_sheets = list( "Vox" = 'icons/mob/species/vox/gloves.dmi' ) -/obj/item/clothing/gloves/red +/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" @@ -75,7 +75,7 @@ sprite_sheets = list( "Vox" = 'icons/mob/species/vox/gloves.dmi' ) -/obj/item/clothing/gloves/rainbow +/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" @@ -88,7 +88,7 @@ clown _color = "clown" -/obj/item/clothing/gloves/blue +/obj/item/clothing/gloves/color/blue name = "blue gloves" desc = "A pair of gloves, they don't look special in any way." icon_state = "blue" @@ -98,7 +98,7 @@ sprite_sheets = list( "Vox" = 'icons/mob/species/vox/gloves.dmi' ) -/obj/item/clothing/gloves/purple +/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" @@ -108,7 +108,7 @@ sprite_sheets = list( "Vox" = 'icons/mob/species/vox/gloves.dmi' ) -/obj/item/clothing/gloves/green +/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" @@ -118,7 +118,7 @@ sprite_sheets = list( "Vox" = 'icons/mob/species/vox/gloves.dmi' ) -/obj/item/clothing/gloves/grey +/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" @@ -134,7 +134,7 @@ hop _color = "hop" //Exists for washing machines. Is not different from gray gloves in any way. -/obj/item/clothing/gloves/light_brown +/obj/item/clothing/gloves/color/light_brown name = "light brown gloves" desc = "A pair of gloves, they don't look special in any way." icon_state = "lightbrown" @@ -144,7 +144,7 @@ sprite_sheets = list( "Vox" = 'icons/mob/species/vox/gloves.dmi' ) -/obj/item/clothing/gloves/brown +/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" @@ -170,8 +170,6 @@ sprite_sheets = list( "Vox" = 'icons/mob/species/vox/mask.dmi' ) - cmo - _color = "medical" //Exists for washing machines. Is not different from latex gloves in any way. /obj/item/clothing/gloves/color/latex/nitrile name = "nitrile gloves" @@ -179,6 +177,7 @@ icon_state = "nitrile" item_state = "nitrilegloves" transfer_prints = FALSE + _color = "medical" /obj/item/clothing/gloves/color/white name = "white gloves" @@ -188,7 +187,7 @@ _color="mime" redcoat - _color = "redcoat" //Exists for washing machines. Is not different from white gloves in any way. + _color = "redcoat" //Exists for washing machines. Is not different from white gloves in any way. /obj/item/clothing/gloves/color/captain diff --git a/code/modules/clothing/gloves/miscellaneous.dm b/code/modules/clothing/gloves/miscellaneous.dm index 5f01aa4da95..8f6ba148430 100644 --- a/code/modules/clothing/gloves/miscellaneous.dm +++ b/code/modules/clothing/gloves/miscellaneous.dm @@ -1,3 +1,14 @@ +/obj/item/clothing/gloves/fingerless + name = "fingerless gloves" + desc = "Plain black gloves without fingertips for the hard working." + icon_state = "fingerless" + item_state = "fingerless" + _color = null //So they don't wash. + transfer_prints = TRUE + cold_protection = HANDS + min_cold_protection_temperature = GLOVES_MIN_COLD_PROTECTION_TEMPERATURE + species_restricted = null + /obj/item/clothing/gloves/cyborg desc = "beep boop borp" name = "cyborg gloves" @@ -8,23 +19,8 @@ sprite_sheets = list( "Vox" = 'icons/mob/species/vox/mask.dmi' ) -/obj/item/clothing/gloves/swat - desc = "These tactical gloves are somewhat fire and impact-resistant." - name = "\improper SWAT Gloves" - icon_state = "black" - item_state = "swat_gl" - siemens_coefficient = 0.6 - permeability_coefficient = 0.05 - cold_protection = HANDS - min_cold_protection_temperature = GLOVES_MIN_COLD_PROTECTION_TEMPERATURE - heat_protection = HANDS - max_heat_protection_temperature = GLOVES_MAX_HEAT_PROTECTION_TEMPERATURE - species_fit = list("Vox") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/mask.dmi' - ) -/obj/item/clothing/gloves/combat //Combined effect of SWAT gloves and insulated gloves +/obj/item/clothing/gloves/combat desc = "These tactical gloves are somewhat fire and impact resistant." name = "combat gloves" icon_state = "black" diff --git a/code/modules/jungle/jungle_temple.dm b/code/modules/jungle/jungle_temple.dm index 138d1dc47d1..90331034774 100644 --- a/code/modules/jungle/jungle_temple.dm +++ b/code/modules/jungle/jungle_temple.dm @@ -135,13 +135,13 @@ new /obj/item/clothing/under/rainbow(C) new /obj/item/clothing/shoes/rainbow(C) new /obj/item/clothing/head/soft/rainbow(C) - new /obj/item/clothing/gloves/rainbow(C) + new /obj/item/clothing/gloves/color/rainbow(C) else if(prob(50)) new /obj/item/clothing/under/psyche(C) else new /obj/item/clothing/under/syndicate/combat(C) new /obj/item/clothing/shoes/combat(C) - new /obj/item/clothing/gloves/swat(C) + new /obj/item/clothing/gloves/combat(C) new /obj/item/clothing/mask/balaclava(C) if("glasses") var/obj/structure/closet/C = new(src.loc) diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index f6c03ee308b..0e927cc2aee 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -28,7 +28,7 @@ new /obj/item/weapon/storage/backpack/satchel_eng(src) new /obj/item/device/radio/headset/headset_cargo(src) new /obj/item/clothing/under/rank/miner(src) - new /obj/item/clothing/gloves/black(src) + new /obj/item/clothing/gloves/fingerless(src) new /obj/item/clothing/shoes/black(src) new /obj/item/device/mining_scanner(src) new /obj/item/weapon/storage/bag/ore(src) diff --git a/code/modules/mob/living/simple_animal/corpse.dm b/code/modules/mob/living/simple_animal/corpse.dm index 47795ed7b87..ae21a0a3d8f 100644 --- a/code/modules/mob/living/simple_animal/corpse.dm +++ b/code/modules/mob/living/simple_animal/corpse.dm @@ -89,7 +89,7 @@ corpseuniform = /obj/item/clothing/under/syndicate corpsesuit = /obj/item/clothing/suit/armor/vest corpseshoes = /obj/item/clothing/shoes/combat - corpsegloves = /obj/item/clothing/gloves/swat + corpsegloves = /obj/item/clothing/gloves/combat corpseradio = /obj/item/device/radio/headset corpsemask = /obj/item/clothing/mask/gas corpsehelmet = /obj/item/clothing/head/helmet/swat @@ -105,7 +105,7 @@ corpseuniform = /obj/item/clothing/under/syndicate corpsesuit = /obj/item/clothing/suit/space/rig/syndi corpseshoes = /obj/item/clothing/shoes/combat - corpsegloves = /obj/item/clothing/gloves/swat + corpsegloves = /obj/item/clothing/gloves/combat corpseradio = /obj/item/device/radio/headset corpsemask = /obj/item/clothing/mask/gas/syndicate corpsehelmet = /obj/item/clothing/head/helmet/space/rig/syndi diff --git a/code/modules/paperwork/stamps.dm b/code/modules/paperwork/stamps.dm index 925abb3e84f..2421b49568a 100644 --- a/code/modules/paperwork/stamps.dm +++ b/code/modules/paperwork/stamps.dm @@ -55,7 +55,7 @@ /obj/item/weapon/stamp/cmo name = "chief medical officer's rubber stamp" icon_state = "stamp-cmo" - _color = "cmo" + _color = "medical" /obj/item/weapon/stamp/granted name = "\improper GRANTED rubber stamp" diff --git a/icons/effects/crayondecal.dmi b/icons/effects/crayondecal.dmi index 3aa781d8d22da1bb01b4a65b4782741429561a0c..f62c3fc188ee1c262c7c30585457bbd264b7e0a4 100644 GIT binary patch literal 12312 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 Qa*r9HB&RN0D{T?+e+IHtr2qf` diff --git a/icons/mob/hands.dmi b/icons/mob/hands.dmi index ca38284b11c2921b4a49b33dbd0f5a7b72f435d4..7f27823e9a6e75a7d387596a4ca0989343b0c23d 100644 GIT binary patch literal 9323 zcmc&)cT`i^x{o@_fTPTa=!hb7Q9z2K(gZ0AD7{GN5KxrRL8RBHhzzJ8ARsj=EeQ}r z2%SVlKx%*xA|(Vw2qBWtLL`{vo#4H*-dgXUd*8k5y|t2cc5?RF?fdQT`}Xg5lC3R` z_K8S{fIy&qCdP&~AkdDx!1wykdw_r5B%pPGA19)19YYO0LvG&jxgF{g6bJ%E7Gx35 z1-764W%uBi?(X!y(|PI@IntNY|JHQ>5~=P(cKR=-shJZI%Y(>YFN#F|A^$mKFS9F+ zuzNoh9CM<-Ksxj_EZ!$SG3mgIga%T*@CV&ztn|Hy?(bI@Ri<5yBB<~3d$@liKt;h# z-ax3uopiLY`ED?xrS*ES8*1R_)_nQLmAzGGoL@GrMZ_hZ&s@6CfeQHK|X=>HKXm0q_SUzPOYfERH&rFY&K?wz8L=TvliNp3BOd>o; z33MPnPZ(^MPt*5Zreli&X>O&nm7~^Wi6bxF2$chQ4Pn2ID2g0C@1=CK=~TYx2MKt3 zv7C4hZ20ssWuXfNR!gGxJL*|M8*LIG&>tWZ!^^gj1xw_Z$O6wo{tEtN=BJ`7o6eu+QnOP})=nXYb+2q52Z5eS{R9FzrU3Rd`waxTF2555Qn~^H-7WnY1bTgN2MClc4FbKj z`KKzqGZ$ris-JYlTyBP~dB|kOX|0q9?HUuouD{=1)) z!tI!?8>|R_m%vs=E^;F^px5Hoiii8g(MKJ9w&#(?7b=G$T~D7r?c~?xaSr^Oh)?7# z!z&#fsiOydVHzqO9_MDm@a7oqWDpk4k7Y-w5Qa85UcZ1$#y6=?1)V7$N8GkueljCp z2)oe|&eJ?8U(~C#drXgD&JJ?>YQ}Xf3FO5uX&l&J5zdPxYPH5+yE*$#FRjx{&kDO0 zb1oD9edQ?)=s!K7t=Q-$R%BxB(Nv-JG}s z#-94T@J(i}^zfOpHznJPjv0Mv!8xdGcH_C79_LQTm#1Y10<-4Fj^MN4YhSh-0Ln!F z`ECGJcbk$aJ9qvEEcj2E`F~at?_0mFbVvojrmpU%H{y>wJj$dG4ljTF zGbQDbWR?5~FA$p2;n7Ji%Jto9qOf{%@|{iQGPGpKl<_>w24}9yz+erI*%_^rh-^|JZ$1&RIL-MLM4oO|O0QNF+ z80W>CIJDFj)2HLXwR6&gC+9-zrlEpOXvB5h)WomSbB>z$wzY2#-OpD` z9M_X#h0Ia4Np21AjC*L_@A~ufm*AEJFSP31OGFSWBy1_{XrE*3CH53oSrebB2Dpz9 zG2HH-{uOWWKVkI0^*e%=6rR)G`BhI`SLiVlN1|qZrNGK^Pa=bdW(N@KWv7m-b^n@%1zGa#UFVjYMjBV zn~4t#4=r6{=7eG{UTj`3-^aGf?>E!)i~K}fsDVnG4JCu0A~m*C>nB zMZt!u`F5Alw&ku3m)jn9c{`oS6_|d&HJV!s1pVuQpBwJ}v*F-BYvAn=wOd7}kx?s} z$H~Je>fHE#*OSFO#Zcw{D8o{GI4^2s1{T$&xH0#YWuTU#aIx`X1 zP3qi$vZ7|aVveRrJ%BEW;%k)X3t7#ZTNny8DS`9x)p50+F}z*zPC-#euVAIE;~D{o zY*|6k#X&j+rsVJ3ai$_vU$HC0+1i!1z}ej)6nM4zd9vn^pw_+t=qh+|o*9lyO}#5y zRy6YEQbY0m%w6QX=h4H&vw#aIOh(EPHP24R!2Pv^_QX<{H}OJ5`C0$tM|3t?8#Ibz z*;dpVY67q>ft0OVwfqh;mdQrmN{`Oml7vj;Pga*_Ocg0nTVPsNGLPzTy<_I_;}o?P z?jC0s7ZtbH0yF-pa7+?c5<6d;mUrVx^qphrOrBf+7dbul)`ZLG^VNs1i)VA5=}m?p zkI*GnzFd%|aNF{_t>PICOAn#oEBFe{vG_@&pkfb8d%X($*>7fj5D0w>cp%TtpV;xmqT;Ud$V}HD$lWs$@-o&8XsXX zD)6`y=8!^zBq9ZPY8x8)qyV*jPu60`m}RHoXM?!Q`b*>Xl`|_lATd0MlOK$G*df>0 z$+oM?)Rzid8d5tP*Y$UZrQdT9t-$&8$~`9Os1T>>=EP)=>2&6B11B4Y3Zmw7eS?BX zA3y$yZeB!HVwlbJGh+LbFp(=BI=pYQ%`2Tp{|@*?8cnm3*ZJh=lkH|2gNuJu*)>g!!VbrCJM(SYGLCMJpogDWyn z)yl!4adC0UsV-TzK`|bd>v&c0h3LnB0d=Y^Mlgi_eCk)PxT)4C=hn!Y4F>t59LFmU ziAE1J9JeeDT*>6jRP+*~$QIB19D;&r>EIsu-I}%o;Hq+d83oi?SQs39S_@~reEGMq&`=<9 z(n3Q+5#{AwY~8W-_4Phq+`ZA!(Z`4V-5Q7^4|@e@)fO0#mmX}DdSaDKsmT5Qg&MCB zu=(KJ+zq2HWqEgghn?(M_0QeGhCm9b2BeUaOkfQyE*uLF{ho1$1c}H^Pyfv-)&0lA zs`*^#J|MxK{1CKb$Nwtn{&!INSB@_Njb0XNa0?i1rC#7}WCcIjC%R|==lTBO@(w;3 zk}02NORK!uTgSph&~9qLPS6E0A)t&$h9nXB@2VV*R>we5+ys|ubxe@|vL~(~&bLZ) zwggc`K5Xp~YfFMHZ8`Z-YG!6-9qnJr5U*Obo_&Fb`PI^+R>=VHi`%yLSHLF9MGpthWNH0#sgWo-j2}yAHqg! zJoBVPG!-uB9UOM*%0`C#QPg{E_XObV1cRzd0weQr?psTeX1*qvq1IO(MkKtV!f1wX z@l?&1f(0OV7xc-xtpMbBH*w|hY|Gs{4YW3T-G}TVaHOF;eB4%?5UGH(43i>q$$jfh zK{)(ck-Q2kzdv45a>r6+lyO|Jm&S8!r0Yeu<2~C6-9Tzi(g?1lSAZraV>J%f5-qE$ zI`?&tifYyfx+qzbs8ft?^Is4}if4SL2nRAcn@qTy27XrWSIiu39m^P*b>LI{ohVEfY})x77! ziIi_vU15xt@6sWr7K!0ZDZEdhT$qf!jm=jdi1POsLQ>!IEt`zc4qV{Mt@^#{0qPmI zI=kvvonfhdZr_&z$`Gn0mrRiH-_uoG@ps;p^_QKpeTn>rINl1an$@bvXR3P!#nv8Z ztDaYF$ZUp6qd!|aipH&gce6OKX(_B{#>#KIO%0+;HdRu+X2n3m&2*XryVdL3lc|-5 zi0ly~$?BHXgbI4E!QTpPU63k%uQ>I?&EtAdX7Rol2LoyCl`f2~3THVmR8Ax&Ghw7a9R5$h$T|&mBTW2YnPodBv zQy=db1acXtNcz%z(?#Z4{0EQJ6kV}Lxl~4LyHYDFoDgoXR$25kmW@{jH*@0G`)pf) z*zLa2qTpP0{n{n+O<`^@6A_5}s&9m$xIx}fJMNtedt&K(U7FSm3p<5aFkGJQr_d~x zu)WIX+cQnLp0{kE`q4~n>df2+VN8~@vwJC+Ua>!)*48x;AsK1;9olZxACp$7x5V5= zfp1(^_NW8x!MG_t+78S8B})lmbLWN83K=%Mcr-AquA12JT~CF#*qbM@0Df_DrWv-m z@<>fhH+*@Xxjx?vOg;11(b2)6qQQ}c*Z23P2J0ATsWF|adc>wsd7exy|FT8G!031t zj=jWkZ(*^^ICZt-gkQ>ChV|~ed23c7>81lk6vm{e^nx(2*99A49sbt{<8v; z3BC$DVz$^l#O2JEv`8eGN>-SgAGuPNf>Clrf_)XrAY!HmY5hcTA5zQ=a1oIy<7euW zmg)E2&q^^D_w(p6&ks{C`+P#g-p<%l{Cu*Byv>sTjg@=gxo+%b6Pw)Lqst>-8m|^j z(0r>hge{iH#gSWQa+4c@zP^n)p!c3Sn0+8q1Q$@_dq&qN%d0?bNkT;vooDBTx4yCA zYhQR;MN@Z)ser#=rgj)!ygYHp4CvyZ?%4_hAmJ=BJ%rR~qFj47^(9^>YklLEJcUb$ zQgABaLV&!Kz&ium*h>2L+P5dAuB6#jDheE6>1XBst3BitV)qr9=wJ$>g2!EX(9^!7 z5aN=xHlFe7u4Que;s@*8=q_0Z3vP1Kv1IYhi#=us#@k>Vz0Sznrdyq49K9b(iPT@2 z9;w4kw82~xWQ6TrrZsSpx3*DVVqT442ySO`Gl9Aasb@YSp+62~f@8qy>!IQ7LtV&Kb0ui!)t$~8 zY5leFav47|V%$bP=Ri2gTDv?Viw%iSPkwe#(bcAakkde0R7!rp`nqgv$(3s498kd_ z42v_t&SC5{ZJ6arWK5{XxH)q6k814QLX&1)!L!KfQ&}ZWI+Ud5>jbEn^CY5s>I`?i zN0hoQ;~yMlc<;?>0k+k`LGE|Riw~EAEZzOxUi;L_$F;|187i(9vz6D@S;mE2DJ}5g zg;P12WMh&XOWUMpb93PTkB9<}g^^S2Gb(^D&lul;!G6E(ydEd&7P!;%ipaA=wDb_% zTqLBKcW>1r7dVhbjj@lBoSJAhV%jw}-RPQv`2lCP6ff#EO$rO8fuCxC-l~0WhS&br|ziDE@N~6}PTmNSJqS82sYh7s1U86KF z!Vp;+ZvLtn&w5g9ZNbrJkCj7eX*O2To&_f?($=sMx$-Fate%vT^e^|Eyl5LP4$q&E zh^RS~L}65PCtEm4UO7j1KT8 zDtj(HO`TjxWA8n8MC93^*9&EaATax#)DvX&Ew zxsT!pGAnj$#Z!f#9+8t5?=H5ux%Zz}_w1xOs z!&^_j;&U2^1gLYf;rL308n%shF&@*Y1Ub)T^5_)%d@HvDLl<-Quo$)97r(j!eCW}j zmj21rMCIp>O6nC<=|hilU9ii$Ygg(gpb)yT=5WZs#%9qukZ(`f`aouhn58^%#Lz}| z@oU+EQ&Cl4Rx!!w`|xZ-J9pLvH!|KWpUViw=&2~EoSQ>+zC6zToVH8h zbcSrXt&8|zja-)ZjMES;uB$wBHHPZb)dY8+Ga-=1f*DkY!tYa2=VuA*+T}__st(c+ zW4FWSj;X@w)h|DL$GS!bvl}H2@5wSYzLBJSbGcgTP*G&KZ9=<=OjalncE?6yTv-wf zpC}hKF+Evw?=r1MZkA&PZ{a01a|f30SsUk>ni8`*qS-WYEm|XuFDol%6J{IDexFvj z01O~XP;ivg8JuNVYBAm_0af!%kAGVa*(%(;xYK#$6JmUGOL?yN3oVdm_`WGCs zKPuowiSa#+#8T7?-a3xKDOXcIWp~ie{aSK3BfA-Xq-d(4(pXvhA{s2!5|AHZA$oyT zGg05R{IzkXC&B##KWn$%aNFx%Zuy{rovm?c>2Qh3A~hf(I=1UW zU6rNij~;#0yyqo6=GtXkU5ifF+B~igK>S zRa*fhanWdjB6KTO2p~_qV$ZT<{NIGwrn#+2X~qd3Mf|K_?e-%W93*D@pkUhNyg*#* zKp>a0&%x$l48YetK$e%d;NQ2V&{(-)YlTV=gR9OXB%}U}}PZe%L zxjF*7lG|ur1$6D0=P!a&YX?l|Us8zvBZpOK z(A{Hz!tgv6e;c7+Ae@*6x^y)#NXd=-)Y;kD9F3W*>@MAqFE6mM)|dqD8zo&Y6Vj-j z@I6z}Vmo0fHS`S|T-8c#eVZ;(`6~w?2rEL2{ctVwfA-f!k?liHZng0`4?OBP#tv%< zEYrg4uw4iI+7_4(;W}yS@mT)m9AW3&Yy$?mv?SoqBf$JExcd+N%AYMz5_}?7Wd!Vw zdyaOx83g|YAi$8h^=i5q%xkeE5-GxvB<{>V0hu_h2X$7pLyeC+pLVYMxRSRwr%2vp zabdw42IF5N1C-z5;^N5Q;B-`g#(*wQ)x;(iK_Lo`ngY&apJn)*>!cz;DGpT26!If8V?#z>|?jQ#(9%=tU2#GboR!^7*N$`*pbMgj94KhgMD;8ah|bDJKw# zbCI%oZO!!E9Z8cykWP@}7Fq3H7YA1Tt{dHY3?~?RHJoOAysIQysyjYogg_{EO_TJf zaePr;?qwg>5JW*^u~;V-lTIgWEKPW+b(v%KKFJ6A3(??d4^m*$g>y|uVGP9fsU23v z(b3TXXeARDO7$!}*B8E)l_bhw7gTE(gfJ_OE^Ri_4%+ZTMS^AZ8Z~3scjBz9(&~Xe z9F?-y#+N1<{5n#^YZvu03-Mgj3~k&@b2{fkdS16*VBjmasmL|*wrVlo3C~aiT`w0@ z%7@jRe!X#`!d23%FPwXyU98p^Gx?_GT}n=IiE?qRvMAvVXsB)X&S5g5-YTY@)!>2 zZ^zTjG7cm^D88R;sNde+E=20L-xf~btPmoJMD=Og!Zjm3xfUcId|7^=_vqW( zYi;bQiO->NK)2>Y#v$wL1WY+Mip(ckq>>Kl^K-Yy<^2bG`g7;JVT_lh$|e$tl+VtS zKfW)j-rYpvcZp&6!~~cbUh767ldJ0M)rlh`eaYLh-xx#Vhh8@Fo52|)$-neh_cfqZ z2{A~c;|di{0tP^D3Q=Epj|{AYlJPeUU`z6j4Ccc__rm z1Ct`7)~?2dgn~dj*@AZg3Vj}qz)uWq_GcVSF%(Y|Rs1bYQCEBL>)bC12?hRdS{UA> zk&%OIoZqiTFMUhS*KU2rx(NDo`Zp1EsqQeNi@3nSc&XFxEMtN91&0vH?E8I>3zAt8&nxVG%mE@h`(>M#6wM)kr4@9j4d=u zhY$Ay_g}TNxC8_Q007ro+~%R(a1_H~IDC_b)rADlWu;CzxdE4ZJS14h+ z#;b)QaCx13(F@5ECYq9`8=ZhvT)U>{5I>*-tO}qTKl}U--B^5F`$F`sf0e%G>FH0d Wmm@AR?g6SX$mEKpAzJ_X{r>_ix*?(f literal 9224 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 diff --git a/icons/obj/clothing/gloves.dmi b/icons/obj/clothing/gloves.dmi index 460dd640c29de7588006fc645886f8ee3707e945..9dcc7b4735cb9373a60f74474239bf3880637195 100644 GIT binary patch literal 11577 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 Hvkd)TRtd@Z literal 11433 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

-X=82U59;OG`0lhZ3$g#OW+M@r!M z{_`ga4R}@&$$=)~6*-mb%)dT6hImni0p$DYlp z%Sd4^-kUPdQVJQ{Z%?SK!0?+^nPKactD%N5NARa}oIn=a?B;y8=%;O11nQ5OVIoxw z6|oDf($Z3Zv%|bW%HX%Hp%!$I5WPrZfU9~kgXUE~aZ^x$gF0LtE=A9?14}VC-&9))v5y4S zF{N#V!(=v3-EVOPb&+rVab0sD{dz`EVZyJ7JL-{j=8UAaL~m}?Jl4V1mghgDS&`5tO&26aCI7Cz@oWh2e0=W{FYgF0&jT5>YiRrjL(&QY7&67bwsk) ztK?fiMlxSVzQn_=cDYecDNtTBa%Q8o-3{?aV}8WSlA15SzTBoXy8M`yHn_ZObxlYR z!OuPtx*I7WaNgJrF_ou4@u!Wz;QoQz=tt^zht2dXz%mR23NS~|0JVZbNB~E&xHk!3 zp;^*2cjKk;L+(sMJE;1#M+tB*+cqRA`%hi(|XqBpDSK&H=uP>2OC4r-P z)Ix}Cn%DQ{+*mU@fx99`KEyXe7+(Yg!cuzB0tj`b{(K}bRJU$>KC!rK@q;OsdfY4ppGpxHxwSbR1x#xMC`(JAVlJ1_skQB}0u<{&TqA)usiGfHepZbXT;|gfpc*rC zqg%apn|p`ka*4w&!Wr4(27c`b&8*zrQuoE1B_uFbenFdc6vFkW3VHTxB$v_QOl}#n z&rp0bs5)4T#+);tK{;tZ?-ZAFm`d$*_AuU+n#qg4nfl(Dw4hjqYRNn}nGHgMwv@t; zBo^~0%x{X7b#xw&@aBgK9`)2ym-XD)2}zADloa;to+ZPX2@ERs@Qum0nVn&4YajUS z7UUfr9aZNl^;^R>rwlpdD4x8U6qJ+xV_t%mEjBgOSi}PE>gK4%DD=ZaF*XR62j&svJoD3+vd}wOKjBjn^nVrdWbdz z?LzZH60Kl3Fs$g&UXESp`)ZdTOlERB*e4?pJqNIO6f6)`Py^ktNrimy-duzoMuF{- zcf@4M5p-D_pN3;09*B3A$4bo11PO~7g`#=fO804n+$P^L#4gXHAzZOL+8&8sY+pCd z%r|=_ytrMrwR?pgK`URh>mz{i`wJZ2Q_HS9Ih66trs?>oF!Pp3*qe@*n&#$qY?<&+ zy-jLGQ_UsM_0Ob8Mn{AemeG35aRrSYg;cN`m{9aSyF+N zNjdOSh3ak1=Vv_BsHv-Nq;m_hak0zt(X zdV*qgD;;O}FxcaWxbV4khf8TeO$^6Fhe`_E4%~tt{W)D7;q=ZuX5q9?`soDe@jHAN zsYJ`ka(^Ii7O!e~iX67Dw4$34JA7}>t}9S}u3XH0@uF3Xan(gQboz;1<9t!)8xZ3# zkv_Cc8ocd-3GN@N@>BA9e)8;hBsK^OxgYMYQqXRcJ;;H?gC2gH?0L_b zl!03U3ClYyqdUycN-0A+ku{=iYLsR5JBmZO2f4tD?Nlhr+jPI+Wp~KGH5w*JYbVF; zjJQQC;wQtZ#P*4hksVq{T7>gzsdaSd#&B(@pIC(R#j3x#Z_OfRqq8u6-W%IkyIJ*h z=5!#%0Mmf$UiJFCm&~z;5)v^VP7~Qgq4k(aNpWLN96XN#x5myv{w&xi{P+&ylGICk zLqB9yyoo?{=;X(RW-Svu0nNYb8+>c7GmXF}5(}EYTTAOj%pVKN8qyX#?FJH22kl!F z9y2&#Sn5trXTna*>0O*a0Ew;PsNz#uv3qJ|Nze}3)vj{bWJ^k3p6rAf`u z>gouT;)&}ozZxt5FLI^74H@_)>Sin&t6}VseIS$X;;o@Q7O#H_bk(t)h27xwj#G_k zHE%vH9b+u{?0)mY9$s0cQ zVGd+cFYe8>vAKyskHVk9A-@4AKTItQb$t5)rBhH)&^H7?xp4t~Z8k$d;iTq%<#DFlB1^y_tXvCl{BB zsf9%uTM!2Q& zCClstHI2t`Gmjw2)`;KA1L_sy+F1aMP&6E54QvwRjq~#IPQCPmTeiwl(ARohSlfO) zUrR05t__33eL#RoI0ybFC$Fnr=xjcSYS;26t&bRH<6~lC{#1>ob;*7Q@PK4)_fq~n zO`pl2oiec(HwSWkB%;rrp*2m`lo>9Vckf?}|M~N6E1_?o?y`ySnetyT(RQ}?Ft>`f zHaQ>!+l!;-yq~Vn{Y&l@(bI=_O^8UmceeQ>`WboK7ypYy!^-J`)Re!KRmtudV%WWd za2zEkI(+q)lkeq&AZOJ<&_R$2Qurn*xwJyBx#Ho6tUJ3}TUwHlQ z>w~OA0r5(g0no`No_Wgn_`B|N;7g;*KuJ>a#{<`Pb&k8TOMR%z$C<~m4e_MSUJ9&c zj^_Z3!wQJ2iuRXx;BnL` zyhum@6mz^pjetsL9U7mLV}Ir$D!Ka^Kxrji?t)Z6m9?{Lsry_VDBz>jUKe{0lv|j2 z(4t(~SJDn+PaUWxU*l&!9`SN~+{~-DQw#lP6S}r&!?%+zw)f?cP<6h>Qh;O2 zV_|0}${Pk}He+F7d9DPaeGCl^r62J>oU1QAsow^F&ij=JB+75E6Us*_?|7r1ND=!3 znwIAd6_IsoDQh#S>rjtx<>l&U!c@4TG z6u=(cbmI+WlHrEcKQL-_xAh?ulN!K4D#V^J!8a$0N{hy5pM{`POezH0Sa|&N0yQnI zKEMs9+N2k0-Y6(IHtU7;`fA9Wv;5R5AK_&EA7T|0K&SH{R%tlbIp-xhEzK2>{Hs=J z)vKgq3}Ap)=r-ot?sn4;JTPn{D)#m7`5J3{<|d76MY5M3)%OSlvn$vK;dj(3Wj`$6 z2pG}kbzfLm_;Im?*jAxR*0A_redh3e^`m&HvtMhIkSZ6~OUQKZP|+Z&y!?JVL*hY+ zl4by3)v=B2D9im%x=pU4Aw^Xa%{SGez{&KEl!OE|(!W4MS2@yp3~1wBxJVWalS|X{ z5?+{#p4%*8qz8kSi?RT^tJB~>3SE?Dq`Ix9EdiS;!QE}sf)N_N*E>LBkfEuYO}@(J z?)G-%ANuY6P=z}F0>|gg-H8}7f{F)H&g(lCJ+RVLDVizng|6OpX$F)o<zb1Yp#R@J=O<( u>aU-m6hIZirG;Q!`j;T}-$O$>0hHL9b<%Wh$kNg8lV=-0C=30lFJIhFc3x8$ybDSFTS>Jq(!>0|B%?R8AyMVGD(g7dyCx( z;<&qaIE%|+N_DO;O{=PFBOgE!gI6bY+-#-D*d@D^!(Ivt*xR(0m~?_A7B|v!@C02U zMTZoZ+fIr*=>gXKK?c&k2PQm&b0IU~o&Y?PHE!Z=7$+JX7bcC~uos)~{7G`mGMzGQ z@;tH({^c%POk8%r;VXYys=BS-zx)E5T+|UplbekI00DtXL_t(|obB4#a)Lk*1<+yN zhla42Ma}D&~cwg+m z%5TmFy1oPXgIaGs4vW{V*lW%P8j#_>L&p68!*56|HAsma3i*oSW?NQlwL-u_HW?U-VG2D5fKp) zt)XuYO!VD>iM~BBQT7MW@(5lZ!3!kn3P}t1g00006OYBmriTB`Z__qtd1T#F;b900000f~Wwu?|}^e+5rCmGt8L)|7T}s z0095CwzmKO|K@W5!C?UZphEwC0B=bol3_5wz`(p5rXc_T00DGTPE!Ct=GbNc006O( zp%Z_Nl06Q?APh!lI0Z`fs()*jDp8c7xdRjzkO)MEG|lacnyo|Y&7bvTS}A;Ja$0+CgIrtUD!IC(0J(glA--gtB)b+C%Bza-@dMEykZH031OzctsQ z9h%R7z5$t;#>TU+mec?M0cS}>K~#90?b_Q;gFqC8;VEY*pg^m(!07uwrE+1YP2InV z>0sjeZZ~zU8Pf}z?VN~+$h95JBbdi9Phg&Ac7wdI8h*{6!`CrzI&9UNbS( n_(YFS9DY+^^BWKm5ee-b1I-?eC*(;w00000NkvXXu0mjfSKL6~ diff --git a/maps/cyberiad.dmm b/maps/cyberiad.dmm index 28bc95721f3..4669c6aec7a 100644 --- a/maps/cyberiad.dmm +++ b/maps/cyberiad.dmm @@ -2105,7 +2105,7 @@ "aOy" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/storage/primary) "aOz" = (/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/storage/primary) "aOA" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor,/area/storage/primary) -"aOB" = (/obj/structure/table,/obj/item/weapon/crowbar,/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/obj/item/clothing/gloves/fyellow,/turf/simulated/floor,/area/storage/primary) +"aOB" = (/obj/structure/table,/obj/item/weapon/crowbar,/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/obj/item/clothing/gloves/color/fyellow,/turf/simulated/floor,/area/storage/primary) "aOC" = (/obj/structure/table,/obj/item/weapon/storage/belt/utility,/turf/simulated/floor,/area/storage/primary) "aOD" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor,/area/storage/primary) "aOE" = (/turf/simulated/floor{icon_state = "delivery"},/area/storage/primary) @@ -2943,7 +2943,7 @@ "beE" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port) "beF" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/port) "beG" = (/obj/effect/decal/cleanable/cobweb2,/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating,/area/maintenance/port) -"beH" = (/obj/item/clothing/gloves/rainbow,/obj/item/clothing/shoes/rainbow,/obj/item/clothing/head/soft/rainbow,/obj/item/clothing/under/rainbow,/turf/simulated/floor/plating,/area/maintenance/port) +"beH" = (/obj/item/clothing/gloves/color/rainbow,/obj/item/clothing/shoes/rainbow,/obj/item/clothing/head/soft/rainbow,/obj/item/clothing/under/rainbow,/turf/simulated/floor/plating,/area/maintenance/port) "beI" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor,/area/storage/tools) "beJ" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor,/area/storage/tools) "beK" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/structure/rack{dir = 8; layer = 2.9},/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/item/device/multitool,/turf/simulated/floor,/area/storage/tools) @@ -6444,7 +6444,7 @@ "ctV" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/vending/tool,/turf/simulated/floor,/area/engine/equipmentstorage) "ctW" = (/turf/simulated/floor,/area/engine/equipmentstorage) "ctX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor,/area/engine/equipmentstorage) -"ctY" = (/obj/machinery/atmospherics/pipe/simple/visible/universal{dir = 4},/obj/structure/table,/obj/item/clothing/gloves/black,/obj/item/clothing/gloves/black,/obj/item/clothing/gloves/black,/obj/item/device/pipe_freezer,/obj/item/device/pipe_freezer,/turf/simulated/floor,/area/atmos) +"ctY" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/table,/obj/item/clothing/gloves/color/black,/obj/item/clothing/gloves/color/black,/obj/item/clothing/gloves/color/black,/obj/item/weapon/crowbar/large,/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor,/area/engine/equipmentstorage) "ctZ" = (/obj/machinery/atmospherics/portables_connector,/turf/simulated/floor,/area/atmos) "cua" = (/obj/structure/table,/obj/item/device/t_scanner,/obj/item/device/multitool{pixel_x = 5},/obj/item/device/radio/headset/headset_eng,/obj/item/weapon/cartridge/atmos,/obj/item/weapon/cartridge/atmos,/obj/item/device/t_scanner,/turf/simulated/floor,/area/atmos) "cub" = (/turf/simulated/floor,/area/atmos) @@ -6733,7 +6733,7 @@ "czy" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/structure/closet/secure_closet/engineering_electrical,/turf/simulated/floor,/area/engine/equipmentstorage) "czz" = (/obj/structure/disposalpipe/segment,/obj/machinery/vending/wallmed1{name = "Emergency NanoMed"; pixel_x = 0; pixel_y = -32; req_access_txt = "0"},/turf/simulated/floor,/area/engine/equipmentstorage) "czA" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/table,/obj/item/device/t_scanner,/obj/item/device/radio/headset/headset_eng,/obj/item/device/multitool{pixel_x = 5},/turf/simulated/floor,/area/engine/equipmentstorage) -"czB" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/table,/obj/item/clothing/gloves/black,/obj/item/clothing/gloves/black,/obj/item/clothing/gloves/black,/obj/item/weapon/crowbar/large,/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor,/area/engine/equipmentstorage) +"czB" = (/obj/machinery/atmospherics/pipe/simple/visible/universal{dir = 4},/obj/structure/table,/obj/item/clothing/gloves/color/black,/obj/item/clothing/gloves/color/black,/obj/item/clothing/gloves/color/black,/obj/item/device/pipe_freezer,/obj/item/device/pipe_freezer,/turf/simulated/floor,/area/atmos) "czC" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor,/area/engine/equipmentstorage) "czD" = (/obj/structure/reagent_dispensers/fueltank,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5; level = 1},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor,/area/engine/equipmentstorage) "czE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall/r_wall,/area/crew_quarters/captain) @@ -8617,13 +8617,17 @@ "djK" = (/obj/machinery/computer/shuttle_control/specops,/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/specops) "djL" = (/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area/turret_protected/ai) "djM" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall/r_wall,/area/turret_protected/ai) +"djN" = (/obj/structure/rack,/obj/item/clothing/gloves/color/black/thief,/turf/unsimulated/floor{icon_state = "engine"},/area/admin) +"djO" = (/obj/structure/rack,/obj/item/clothing/gloves/color/black/thief{pixel_x = -3; pixel_y = 3},/obj/item/clothing/gloves/yellow,/obj/item/clothing/gloves/color/rainbow{pixel_x = 3; pixel_y = -3},/obj/item/clothing/gloves/combat{pixel_x = -3; pixel_y = 3},/obj/item/clothing/gloves/color/latex,/obj/item/clothing/gloves/color/captain{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) "djP" = (/obj/structure/table/woodentable{dir = 10},/obj/machinery/door_control{desc = "A remote control switch to block view of the singularity."; icon_state = "doorctrl0"; id = "CREED"; name = "Spec Ops Ready Room"; pixel_y = 16; req_access_txt = "108"},/obj/machinery/door_control{desc = "A remote control switch to block view of the singularity."; icon_state = "doorctrl0"; id = "ASSAULT"; name = "Mech Storage"; pixel_y = -4; req_access_txt = "108"},/obj/machinery/door_control{desc = "A remote control switch to block view of the singularity."; icon_state = "doorctrl0"; id = "WEAPONS"; name = "Armory Door"; pixel_y = 6; req_access_txt = "108"},/turf/unsimulated/floor{dir = 8; icon_state = "carpetside"},/area/centcom/specops) "djQ" = (/obj/structure/stool/bed/chair/comfy/black{tag = "icon-comfychair_black (NORTH)"; icon_state = "comfychair_black"; dir = 1},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/specops) "djR" = (/obj/item/device/radio/intercom{broadcasting = 1; dir = 1; frequency = 1441; name = "Spec Ops Intercom"; pixel_y = 28},/obj/machinery/computer/shuttle_control{name = "gamma operations control console"; req_one_access_txt = "32"; shuttle_tag = "Gamma"},/turf/unsimulated/floor{dir = 4; icon_state = "carpetside"},/area/centcom/specops) "djS" = (/obj/structure/stool/bed/chair{dir = 1},/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/specops) "djT" = (/turf/simulated/wall/r_wall,/area/aisat) "djU" = (/turf/simulated/wall/r_wall,/area/aisat/maintenance) +"djV" = (/obj/structure/closet,/obj/item/clothing/head/bio_hood,/obj/item/clothing/suit/bio_suit,/obj/item/clothing/gloves/color/black,/turf/simulated/floor/plating,/area/exploration/methlab) "djW" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "specops_centcom_dock"; pixel_y = -25; req_access_txt = "101"; tag_door = "specops_centcom_dock_inner"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"djX" = (/obj/structure/closet/cabinet,/obj/item/clothing/under/syndicate/tacticool,/obj/item/clothing/shoes/jackboots,/obj/item/clothing/mask/gas/syndicate,/obj/item/clothing/gloves/color/black,/obj/item/weapon/storage/fancy/candle_box,/turf/simulated/floor,/area/traitor/kitchen) "djY" = (/turf/unsimulated/floor{dir = 10; icon_state = "carpetside"},/area/centcom/specops) "djZ" = (/turf/unsimulated/floor{dir = 2; icon_state = "carpetside"},/area/centcom/specops) "dka" = (/turf/unsimulated/floor{dir = 6; icon_state = "carpetside"},/area/centcom/specops) @@ -9013,7 +9017,6 @@ "drv" = (/obj/structure/rack,/obj/item/clothing/under/chameleon/all{pixel_x = -3; pixel_y = 3},/obj/item/clothing/under/soviet,/obj/item/clothing/under/pirate{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) "drw" = (/obj/structure/rack,/obj/item/clothing/glasses/material{pixel_x = -3; pixel_y = 3},/obj/item/clothing/glasses/meson,/obj/item/clothing/glasses/thermal{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) "drx" = (/obj/structure/rack,/obj/item/clothing/glasses/sunglasses{pixel_x = -3; pixel_y = 3},/obj/item/clothing/glasses/sunglasses/sechud,/obj/item/clothing/glasses/hud/health_advanced{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"dry" = (/obj/structure/rack,/obj/item/clothing/gloves/black/thief{pixel_x = -3; pixel_y = 3},/obj/item/clothing/gloves/yellow,/obj/item/clothing/gloves/rainbow{pixel_x = 3; pixel_y = -3},/obj/item/clothing/gloves/combat{pixel_x = -3; pixel_y = 3},/obj/item/clothing/gloves/color/latex,/obj/item/clothing/gloves/color/captain{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) "drz" = (/obj/structure/rack,/obj/item/clothing/suit/armor/bulletproof{pixel_x = -3; pixel_y = 3},/obj/item/clothing/suit/armor/laserproof,/obj/item/clothing/suit/armor/vest{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) "drA" = (/obj/mecha/combat/marauder/loaded,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) "drB" = (/obj/machinery/camera{c_tag = "Mini Satellite Access"; dir = 4; network = list("SS13","MiniSat")},/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/turf/simulated/floor{dir = 9; icon_state = "blue"},/area/engine/engineering) @@ -9166,7 +9169,6 @@ "dus" = (/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) "dut" = (/obj/structure/rack,/obj/item/clothing/mask/bandana/black,/obj/item/clothing/mask/balaclava,/turf/unsimulated/floor{icon_state = "engine"},/area/admin) "duu" = (/turf/unsimulated/floor{icon_state = "engine"},/area/admin) -"duv" = (/obj/structure/rack,/obj/item/clothing/gloves/black/thief,/turf/unsimulated/floor{icon_state = "engine"},/area/admin) "duw" = (/turf/unsimulated/wall,/area/tdome) "dux" = (/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) "duy" = (/turf/unsimulated/floor{icon_state = "engine"},/turf/unsimulated/wall{dir = 4; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5"; opacity = 0},/area/admin) @@ -9986,7 +9988,6 @@ "dKg" = (/turf/simulated/mineral,/area) "dKh" = (/obj/machinery/floodlight{in_use = 1},/turf/simulated/floor/plating,/area/exploration/methlab) "dKi" = (/obj/structure/closet/crate,/turf/simulated/floor/plating,/area/exploration/methlab) -"dKj" = (/obj/structure/closet,/obj/item/clothing/head/bio_hood,/obj/item/clothing/suit/bio_suit,/obj/item/clothing/gloves/black,/turf/simulated/floor/plating,/area/exploration/methlab) "dKk" = (/obj/effect/decal/cleanable/blood/drip,/turf/simulated/floor/plating,/area/exploration/methlab) "dKl" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plating,/area/exploration/methlab) "dKm" = (/obj/machinery/door/airlock/external{name = "Crackden Airlock"},/turf/simulated/floor/plating,/area/exploration/methlab) @@ -12239,7 +12240,6 @@ "eBx" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/traitor/kitchen) "eBy" = (/obj/machinery/atmospherics/unary/vent_pump,/turf/simulated/floor,/area/traitor/kitchen) "eBz" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 0; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/traitor/kitchen) -"eBA" = (/obj/structure/closet/cabinet,/obj/item/clothing/under/syndicate/tacticool,/obj/item/clothing/shoes/jackboots,/obj/item/clothing/mask/gas/syndicate,/obj/item/clothing/gloves/black,/obj/item/weapon/storage/fancy/candle_box,/turf/simulated/floor,/area/traitor/kitchen) "eBB" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/light{dir = 8},/obj/machinery/light_switch{pixel_x = -24; pixel_y = 0},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/empty) "eBC" = (/obj/structure/table,/obj/item/weapon/reagent_containers/dropper,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/chem) "eBD" = (/obj/structure/stool,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/chem) @@ -13201,7 +13201,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaaaakqaabcvIcvJcvJcvKcvLcvMcvMcvMcvLcvMcvMcvMcvLcvMcvMcvNcvJcvJcvJcvJcvJcvOcvPcvQcvRcvScvTcvUcvVcvWbYrcoacvXcolcolcolcolcvYcuVcHqcvZcwacwbcwccwdcwecwfcwgcwhcwicwjcwkcwlcwmcwncwocwpcwqctTcwrctWctWctWcwscJXcHScHScubcwvcwwcwxcwycwzcwAcwBcwCcwDcwEcwFeIrcwGcumcwHcupcupctgaaaaaaaabeQacwIcvocwJeQbcwKcwLctlcwMcvucwNcwOcvucwPcwQcvxcwNcwRePPaaaaaaeOlcoPcoQcoPcwScoScoTcwTcvAcwUcwVcoTcwWePyePyePyeOlaaaaaacqOaaacsEcsEcsEcsEcsEaabcsFaabcsEcsEcsEcsEcsEaabcqOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaaaacuaaaaabaaaaabaabcwXaabaaaaabcwXaabaaaaabcwXaabaaaaaaaaaaaaaaaaaaaaaaaaeIteIseICcwYcwZcxacKwcxbbYrcxccuRcuRcuRcuRcxdcuRcvWcHqcxecxfcxgcxhcxicxjcxkcxlcxmcxncxocxpcxqcxrcxscxtcxuctSctTcxvcxwctWctWcxxcJXcsecsfcubcxAcsVcxBeIDcxCcxDcxEcxFcxGcxHcxGeIEaabctgctgctgctgctgaabaabaabeQecxJcvocwJeQbcxKcxLcxMcxNeQgeQfeQheQhcxPeQheQjeQieQbeQkaaaaaaeOlcoPcoPcoPeQdcxRcxScxTcqMcxUctwctwctwcxVcxWcxXeQlaaaaaacqOaabctActBctBctBctBctCctDctEctFctFctFctFcxZaabcqOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaaaacuacuakqaabaabcqccyacqeaaacqccyacqeaaacqccyacqeaabaaaaaaaaaaaaaaaaaaaaaaabaabeIFcKwcKwcKwcKweIGcfHcybbYrcycbYrbYrcuVcydbYrcHqcyecyfcygcyhcyicyjcykcylcymcyncyocypcyqcyrcyscytcyucyvcywcyxcyycyzcyAcyBeIHcsTcwxcyEcyFcyGcyHcyIcyJcyKcyLcyMcyNcyOcyPeIIculcumcyQcyRcyRctgaaaaaaaabeQacyScvocyTeQbcyUcyVcyVcyWeQbcyXcyYcyZczaczbczcczdczaeQmaaacuqeOleOleOleOleOlczecoTczfcnSczgcnSczhcnSczicnSczjeQnaaaaaacqOaabcuKcuKcuKcuKcuKaaacsFaabcuKcuKcuKcuKcuKaaacqOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaaaaaaaaaaaaaaaaaacqccyacqeaabcqccyacqeaaacqccyacqeaaaaaaaaaaabaaaaaaaaaaaaaabaabaabaaaaaaaabaabczlczlczlczlczlczlczlczmczlczlcHqcznczocxgcxgczpczqczrczsczteIpczuczvcwmczwczxeIpczyctWczzczAczBczCcyAczDeIJctYczGczHczIczJczGczKczLczMczNcubczOczPczQeIKaabcvkczRczSczTctgaaaaaaaaaeQaeQbczUeQoeQbczVczWczXczYczZcvocAacAbczacAccAdcAecAfeQpaabaaaaaaaaaaaaaaaeOlcAhcAicAjcAkcAlcAmcAncAocAlcAmcApeOlaaaaabcnZaaaaabaaaaabaaaaabaaacAqaaaaabaaaaabaabaabaabcqOaaaaaaaaaaaaaaaaaaaaaaaacAraaaaaaaaacAraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMIaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaaaaaaaaaaaaaaaaaacqccyacqeaabcqccyacqeaaacqccyacqeaaaaaaaaaaabaaaaaaaaaaaaaabaabaabaaaaaaaabaabczlczlczlczlczlczlczlczmczlczlcHqcznczocxgcxgczpczqczrczsczteIpczuczvcwmczwczxeIpczyctWczzczActYczCcyAczDeIJczBczGczHczIczJczGczKczLczMczNcubczOczPczQeIKaabcvkczRczSczTctgaaaaaaaaaeQaeQbczUeQoeQbczVczWczXczYczZcvocAacAbczacAccAdcAecAfeQpaabaaaaaaaaaaaaaaaeOlcAhcAicAjcAkcAlcAmcAncAocAlcAmcApeOlaaaaabcnZaaaaabaaaaabaaaaabaaacAqaaaaabaaaaabaabaabaabcqOaaaaaaaaaaaaaaaaaaaaaaaacAraaaaaaaaacAraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMIaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaaaaaaaaaaaaakqaabcqccyacqeaaacqccyacqeaaacqccyacqeaabaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaabaabaabczlcAscAscAtcAucAvcAvcAwcAxcAycAzcygcyhcxgcxgcxgcAAcxgcxgcxgeIpeILcACcADcAEcAFeIMeINcAHeIOcAJcAKcALeIQeIPeIRcANcuccuacxAcsVcAQcARcAScATcAUcubczOcAVcAWeIScAYcumcAZcyRcyRctgaabaaaaaaeQecBacBbcBccBdcBecBfcBecBecBgcBhcBicBjcBjcBkcBlcBmcBneQqaabaabaaaaaaaaaaaaeOlcBpcBqcBrePycBscBtcBuePycBvcBwcBxeOlaaaaaacqOaaacsEcsEcsEcsEcsEaabcqPaabcsEcsEcsEcsEcsEaabcqOaaaaaaaaaaaaaaaaaaaaaaaacArcArcArcArcAraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaaaaaaaaaaaaakqaabcqccyacqeaaacqccyacqeaabcqccyacqeaabaabaabaaaaabaaaaaaaabaabaaaaaaaaaaabaaaaaaczlcAscAscAtcBycBycBycBzcBzcBAcHqcBBcBCcBDcBEcBFcBGcBHcBIcBIcBIcBJcBKcxgcxgcxgcBLcBMcBNeITcBOcBPcBQeIVeIUcHqeIWeIWcBTcxAcsVcBUcBVcBWcBXcBYcubcBZcCacCbeIXcCdctgctgctgctgctgaaaaaaaaaeQacCecCfcCgcChcCicCjcCicCicCkcClcCmcCncBncCocCpcAeczaeQraabaabaaaaaaaaaaaaeOlcCrcoPcoPePycCscoPcoPePycCscoPcoPeOlaaaaaacqOaabctActBctBctBctBcCtcCucCtctFctFctFctFcxZaabcqOaaacAraaaaaacAraaaaaacArcArcArcArcArcArcAraaaaaacAraaaaaacAraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaaaaaaaaaaaaakUaabcqccCvcqeaaacqccCvcqeaaacqccCvcqeaabakqaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaabczlcCwcCxcBycBycBycCyeIYeIYeIZeIYeIYeIYeIYcCzcCAcCBcCCcCDcCDcCDcCEcCFcCGcCDcCDcCDcCFcCHcCIcCJcBPcCKeJaeIUcCMcCNeJbcCOcCPcCQcCRcCScAUcCTcCUcCVcCWcCXcCYeIIcCZcumcDacDbcDbctgaaaaaaaaaeQacDccDdcDecDfcDgcDhcDiczacDjcDkcDlcDmcDncDocDpcDqcDreQsaaaaaaaaaaaaaaaaaaeOlcDtcoPcoPePycDucoPcoPePycDucoPcoPeOlaaaaaacqOaabcuKcuKcuKcuKcuKaaacqPaaacuKcuKcuKcuKcuKaaacqOaaacArcArcArcAraaacArcArcArcArcArcArcArcArcAraaacArcArcArcAraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -13486,7 +13486,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadrgdredrhdridridridridridrhdrfdrgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadredrhdrjdrkdrldrmdrndrodrpdrqdrfaaaaaaaaaaaaaaaaaadrfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadrrdrsdrtdrtdrtdrtdrtdrudrqdrhdridrhdridrhdridrhdrhdrfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadrrdrvdrtdrwdrxdrydrtdrzdrqdrAdrtdgwdrtdrCdrDdrEdrFdrqdrfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadrrdrvdrtdrwdrxdjOdrtdrzdrqdrAdrtdgwdrtdrCdrDdrEdrFdrqdrfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadrrdrGdrtdrHdrIdrJdrtdrKdrqdrtdrtdrtdrtdrtdrtdrtdrLdrraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadrrdrMdrNdrtdrtdrtdrNdrOdrqdrPdrtdrQdrtdrRdrDdrEdrFdrraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadrqdrhdrhdrtdrtdrtdrhdrhdrqdrtdrtdrtdrtdrtdrtdrtdrSdrqdrTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -13514,7 +13514,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadtfdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdtfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadrrdrtdrtdrtdrtdrtdrtdrtdrtdrtdrtdrtdrtdrqaaadrqduldsQdsQdujdsQdsQdumdrqdrqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadtfdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdtfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsldridridridridridridridridridsjdrtdrtdrqaaadrqdundsQdsQdsQdsQdsQduodrqdrTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadtfdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdtfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadrrdrtdrtdrqaaadsldrhdupduqdurduqdusdrhdrTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadtfdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdtfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadrrdrtdrtdrqaaaaaadsldrhdutduuduvdrhdrTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadtfdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdtfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadrrdrtdrtdrqaaaaaadsldrhdutduudjNdrhdrTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaduwduwduwduwduxduwduwduwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadtfdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdtfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadrrdrtdrtdrqaaaaaaaaaduyduzduAduBduyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaduwduCduDduDduDduDduEduwduwduwduwduwduwduwduwduxduwduwduwduwduwduwduwduwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadtfdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdtfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadrrdrtdrtdrqaaaaaadsldrhdrhduFdrhdrhdrTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaduwduCduDduDduDduDduEduwduGduHduIduHduJduKduKduKduKduKduJduKduJduKduLduwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadtfdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdttdtfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadrrdrtdrtdrqaaaaaaaaadslaaaaaaaaadrTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -13984,7 +13984,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKgdKgdKgaaaaaadKgdKgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKedJZdKbdKbdKbdKbdKbdKfdKddJZdKbdJZdKddKfdKbdKbdKbdKbdKbdJZdKeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKgdKgdKgdKgdKgdKgdKgdKgdKgdKgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadJZdJZdKbdKbdKbdKbdKbdKfdKddJZdKbdJZdKddKfdKbdKbdKbdKbdKbdJZdJZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKgdKgdKgdKgdKgdKgdKgdKgdKgdKgdKgdKgdKgdKgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKfdKbdKbdKbdKbdKbdKbdKfdKddJZdKbdJZdKddKfdKbdKbdKbdKbdKbdKbdKfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKgdKgdKgdKhdKidKjdKkdKkdKldKmdKndKodKpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKfdKbdKbdKbdKbdKbdKbdKfdKddJZdKbdJZdKddKfdKbdKbdKbdKbdKbdKbdKfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKgdKgdKgdKhdKidjVdKkdKkdKldKmdKndKodKpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKfdKbdKbdKbdKbdKbdKbdKfdKddJZdKbdJZdKddKfdKbdKbdKbdKbdKbdKbdKfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKgdKgdKqdKndKodKodKrdKxdKndKgdKgdKgdKgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKfdKbdKbdKbdKbdKbdKbdKfdKddJZdKbdJZdKddKfdKbdKbdKbdKbdKbdKbdKfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKgdKgdKgdKtdKodKodKudKgdKodKodKvdKgdKgdKgdKgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKfdKbdKbdKbdKbdKbdKbdKfdKddJZdKbdJZdKddKfdKbdKbdKbdKbdKbdKbdKfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKgdKgdKgdKwdKodRLdKydKgdKndKodKgdKgdKgdKgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKfdKbdKbdKbdKbdKbdKbdKfdKddJZdKbdJZdKddKfdKbdKbdKbdKbdKbdKbdKfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -14711,7 +14711,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadvVeATeAUeAVdvVeAWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadvVeAUeAUeAXdCadAdeBaeAZeAYdCadCaelGdDYdCgdCgdCgeBbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeCkeCjeCjeBleBceBceBceBceAReBdeARdCaeBeeBfeBgeBheBidCaeBjeBkeBkeBkeBkeClaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeCmeBmeBneBoeBpeBqeBreBseBteBueBveBweBxeByeBzeBgeBAdCaeBBeBkeBkeBkeBkeClaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeCmeBmeBneBoeBpeBqeBreBseBteBueBveBweBxeByeBzeBgdjXdCaeBBeBkeBkeBkeBkeClaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeCmeBCeBDeBEeBFeBGeBGeBHeBIeBJeBKeBLeBMeBNeBOeBPeBQeBReBSeBkeBkeBkeBkeClaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeCmeBTeBUeBVeBWeBXeBYeBZeCaeCbeCceCdeCeeCfeCgeBgeChdCaeCieBkeBkeBkeBkeDlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeDCeDteDteDseBceBceBceBceCneCoeCpdCaeCqeCreCseCteCudCaeBkeCveCweCxeBkelGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From a3bfa5300b857bb366abbeea3ddb9b7c533b3910 Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Sat, 7 Mar 2015 03:26:45 -0500 Subject: [PATCH 27/27] ArtVend --- code/game/machinery/vending.dm | 16 +++++++++++++++- code/modules/paperwork/pen.dm | 2 ++ code/modules/recycling/sortingmachinery.dm | 3 ++- icons/obj/items.dmi | Bin 80003 -> 80480 bytes icons/obj/vending.dmi | Bin 77731 -> 78765 bytes 5 files changed, 19 insertions(+), 2 deletions(-) diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index c8987cccad0..33829def3b5 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -1225,4 +1225,18 @@ component_parts += V component_parts += new /obj/item/weapon/vending_refill/clothing(0) component_parts += new /obj/item/weapon/vending_refill/clothing(0) - component_parts += new /obj/item/weapon/vending_refill/clothing(0) \ No newline at end of file + component_parts += new /obj/item/weapon/vending_refill/clothing(0) + +/obj/machinery/vending/artvend + name = "ArtVend" + desc = "A vending machine for art supplies." + product_slogans = "Stop by for all your artistic needs!;Color the floors with crayons, not blood!;Don't be a starving artist, use ArtVend. ;Don't fart, do art!" + product_ads = "Just like Kindergarten!;Now with 1000% more vibrant colors!;Screwing with the janitor was never so easy!;Creativity is at the heart of every spessman." + vend_delay = 34 + icon_state = "artvend" + products = list(/obj/item/stack/cable_coil/random = 10,/obj/item/device/camera = 4,/obj/item/device/camera_film = 6, + /obj/item/weapon/storage/photo_album = 2,/obj/item/stack/wrapping_paper = 4,/obj/item/stack/packageWrap = 4, + /obj/item/weapon/storage/fancy/crayons = 4,/obj/item/weapon/paper = 10,/obj/item/weapon/c_tube = 10, + /obj/item/weapon/pen = 5,/obj/item/weapon/pen/blue = 5,/obj/item/weapon/pen/red = 5) + contraband = list(/obj/item/toy/crayon/mime = 1,/obj/item/toy/crayon/rainbow = 1) + premium = list(/obj/item/weapon/contraband/poster = 5) \ No newline at end of file diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index 6a6ffdc2d55..d9dcfd5cfc6 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -26,11 +26,13 @@ /obj/item/weapon/pen/blue + name = "blue-ink pen" desc = "It's a normal blue ink pen." icon_state = "pen_blue" colour = "blue" /obj/item/weapon/pen/red + name = "red-ink pen" desc = "It's a normal red ink pen." icon_state = "pen_red" colour = "red" diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm index 43772939fd0..f5cd9ab48be 100755 --- a/code/modules/recycling/sortingmachinery.dm +++ b/code/modules/recycling/sortingmachinery.dm @@ -11,6 +11,7 @@ /obj/structure/bigDelivery/attack_hand(mob/user as mob) + playsound(src.loc, 'sound/items/poster_ripped.ogg', 50, 1) qdel(src) /obj/structure/bigDelivery/Destroy() @@ -74,7 +75,7 @@ user.put_in_hands(wrapped) else wrapped.loc = get_turf(src) - + playsound(src.loc, 'sound/items/poster_ripped.ogg', 50, 1) qdel(src) diff --git a/icons/obj/items.dmi b/icons/obj/items.dmi index 37ef8e659b7805b08757a072ef137dc2d5856aff..85aabb43b7512e7303d56ffa28bd42b6498bb002 100644 GIT binary patch literal 80480 zcmb5VWk6fevo9Llt+*72LUC_#iWiq6#oeXFgHznC#f!T;g%aEf6qn-eT7m@oZL`Q{}ydGNG0{~F= zfZBTQGFEODpY2@T?OdDz0PpPT%yH+HH`qZF8KvAy$7A%0SuMW9R#RsMSWSyU__k3k zi%CozOhXx>P-@XYMT^KI+`VJ~jbc;@OY+U~UIJI3KXlCxcH?m!l+ALt2l9DZzCN<2 zPjPZv|Jh+=q+hhQcb}U|X93S1mXEsV=!U-$xE&uqs<0q)g*}kFGZZ+>&UVm$<^6Kb z!^;fbMN!4pkc}Lcoy{vm+gX*M|5z#7qSr5s-|>1 ziyrn7zrz#hNGrW)n9&@- zc{hqrbQAE~E3{-+;_axsb&Nl8Lh;q@Su@n-D6l8?7-g9e!!B#l7C(G@!jAog)~&fo z)(R=@OEn4}b!d8YWX-U+My!-vSQrW@kRB-RxblUmgA{>itmRR9ZS%Z?d9AMz zZF;`td9YZP;>Z4)6i&U2-RYn}kms>_k&2F{?yg0%`Q|eba(~hjLP>~oPEniPYGl#~ z*3Tq%^KW63vAF5^*|*k$!V3Dy%r-y0lCO9g4Ut}5Fz;@R#((#b=0@&1NMfV>98D*5 zJAQt=ywBA8GijsfjEY<|PC86F;xA6~y1);#9_X7sQ&T{$;t9iPueNHzL;4@9QAQl3 z(|07PdL%q9RPS20R8-TCk=gM@lt+>`63=9J%ECW~=Z?sOcVC;=^1G^Oo=*{8d`|Dc z->OXDyW`+A-l~l}lr%0L+wmo)PJEfF6okIh*h^>4%BDEO$9n8Rfo8Idiw@dAU5Lae}Ntyu4AFb;viP%_81`SLY zpp#gTi{vMda?NAjjn_Bq@8<+!d+d6Bp}!;R!#0QXmHd6rR(voNCtsY5d@c_aJ1}}F z#sf40eGXl$;IKu2A8_giXk zh$I`!xH;Jorfj;C$^`9IEICO6Xdq)S7qLq6AIM2%zDF=$@{#@vwEmI)rU1zYa;4<+ zg5Pad-ySz*gCgtP3dcaoBt}k_&5oqIIpmkvQsU@9RyYE=HokI^O_OLQt*&u)jki%A z+uFPA#V|$>uK>D}z}l7sZR+DD2H&Z%L^CSMcO?f3uIbdnrjzQPR|wk4GtL^^_lhJu zSXg5H>{Mf~V$zvB+#4eG-yA8B@Ql7cvm|J&3;(`=xnsb(($Ho#htHRY-y)Uxox^W+-bC~X%mdS%g+;?qzgHweDqO3Md(D9+`(%f)Wy|LL{GJ z_7K)uKWn~3!iFodYPkpFf?heA?DG0aG#h*Hd1d(>cDKzRBp4q;5u}wndspdP`65g^#!cN>OPT8WZi3u+AMhu}*RH z^b*AIS!=Ided{UCmtwWwxPE?nk6Z3Kyy5zW3OAx}QwA@;!z-w7^Eq2uYj$+@as!OJ z7DLGDD>hD-a<)SHOymj_Vbo+*fTCpfaLrEj4PQMOXDbXHmUtniOVoO_n`czGt+>#j zUUf-46Td+?)I=V8qMzWra0J0ZXom4!dkZ@zx~$8#WZL~uxC4I(OIYM9cvY##W#E0H z-(`+{Zj{~P{sYx9Q<^!Lo^8cXHsb8f(+m~w9}IzB4^h>k?KGrq0DEpNr_El>DP@A+ z=jYka@EE<90+GI&w!_V^WY^}p7}ag!v|wcwRLd=x?wkIQT{E+~pGz+C9gCcxA5Kw4xo*qkLMJop7ZZGepEi?BXl9W9NSASJ6iv=OQy0;ZPBy7_Giul zCP<}fV|nMlzvg!}j;ZpZl2i#roZ^+H|LerlN(~PMc9b$9L$Z^b(kbkEA8~Y@J?Q~?CZE{>rkAO( zSp~v9m$pId2>`&dWC;P#^*Hb+HH%x-rTb|MuS~8|Ct(DkgIQ(TK zOcvc5q{EK3H}0Z>LZLYLF6py2KCPKj-FQkL3i8QnRL^>8xPwc&B23l)_xv+^esmK^40E@s2K+wGW z+1^!xF@KWIi0l$SpW&FJfM7?n)rm(T-)D%VY2U!ux57V#)kDTY&20p@!Jt$T`suFd z4uf1mE0&;pz&9jXNoQy0tPhx&nAoW_XuK{qt%qK>mwf*1=2YmOawbnir3h=natwo2{V97E_BS zH$28x*PKqP3X{g6Sn7p_@zx0mmlb7pe`_3Y4MZ4Ji$qukEVFQCO4V-lTLPd!KzEwz zD}Y4+t5+*X;_!5~54m7Eh$2HgUt;~7TvDnB`P9St>?To=lHGFcHvrP%4zZ!Ept-yA zGJA`%mvV5J;v>>L+-ubFG2v;q5ocav;P3;ga&EFkAzsFPrjUuy1VBu36|`56$keOG z1Lk<8hsRBV;LwUY{&1@YLVN?Fe>5QIgzFYG>H{y!wXh-+^k#v6I-AP7sq9RppR{iyiyJ=^46m$PL4ZC4 z26zTOn%N6Np%JoDhiDdUWbxK&lzkpeMI?~hu9nM)Nqa!&9-6w!Z_BK4o40)8LG}S9 zYPmHT1qzd^5LnSN3dPvDSRsf65)1p>Bp1}aiNZaMs4(+=^TdDtO|4JM z=i$>xD2Df0@M-r-HzY~WP~zpPefkSWW~y4}kiI|mnU9C8;gx*g@K^Z93$+Q}kn{56 z+67}1|LeI^PQLfKQ^Z#UwoMHLkZq|tBoIQm);kGFBd& zK;3@_o%*)~&cy!d(C&g!M8cXsDPB$7)HjJXPvmdE7vl+}!;xog_Sn{#&1I~qPIT4- zseye1^H_tfJV%*^;>QntV`*Z8A^Ff0(}emv_615#4>31w>@;!6EV-O)SD9|Ew^mH5 z=BYrI^=MpdK$tm*J_B~OK+~0i>@Hjy3o=2rZo8Gwpq6$>{0U)4oLd0vBiAhd4g~OS z$$Z>QRP?>hbLqS$;rtHt?{`px22RSpdrIXoW!t+{JxLl2v@BdpY_4}1D;SFT0N0C6l@ROihsS`^8yAxubv&Gm&tTT@x@ST83QnWaHIPe6vc@XIP zcT3PJpr%5D*7*LO9CxfH0e>!?HAV6lGTQ!$ba zv3&JwK2mi&Kk!+{$ENp73y8@qy^t$Q(Z?(J+!d*jvdbx|OaIQ&`&v(uaFPdEDYaO@ z4Fw~C;6A>sse@Dvopat5*JgRG7)oLR6%8RnATZ=UQ`}#;=C*`Xe-nBga409K^7e-K z3Z*GJ@ui5rX5iHP5UzPufQW!;Fp!(#ov(ncBdF(2J`a)^;4347ILLoJlL@<kfmbgKEr?s=VLohw%@NOZTxBed3-+wv8 zxgTmpmtEM(Ily(io^au$P;YaY1BC0THv3>Earc@-gU=9fu{1~%2|_)wRdmwE(Jdo0 z1CbriS33xumgO##j-}~3qS>|kadHeR>F9@~y!&Udo3@+=xy-v|0 z;6FXH$!P$%oQRi^_;TfFL@F^WciSxcYeo0OTc2RYl!8mQBZ^yi3;|1IHKy`>H-haH zP(=ENuwl)FQ2c{jBq{7k8~5V55RJXk+9R*xeFOgXZa3(`(JcygLeRC&74d7aQ}4c2 z8mRC7@sgiyE5kJLI;RPOss7zip!?J(-sc(c3p3NR4%GY|+k4UA{XS5bo{zJDpl0oz z8f&}F;CmO)Bi4BwXFFQRXixcH8(&)P25u9;G1P-xtu z$3-?%x2-fu#vewW95Lai#DlO$JB6EXgBBk$6r*UmG&7h@&^tY^!v zI2`zWan8F=AeWwdHoq{lT2fGZ?DnRVH)kOzOd)}nfo}Tiw$PTh?-HEpdaD?wnSHH? zud_()j8wq~XTBVst>VuncML8LSw!Jb*O2Z2Zw7MaLe9hRKWooL^5EJ0=0uEZKdBNx z`DaU0nY1BnBjX5}{Kr~Hb?$y6l~k`@1Q8^{e)8Fzt^V}S64req;4ItElNuXFFD51; zpHrrpdvhebnrpmk^li0WycT8qpMmfH+}Xfd!Ho;Y>=f@m)BcUqX5oJ<<4xBB>{^6> zgb{sFyemQfx`xk}96sp3;o$^ArvFL3(FmvH{!a(lEPe3x{JTP^rf#DCv*zJO@UIKG zs%+JIASjRX3gu^`SgCw6^}@}K?$`K()u_$bKNGD}PXTjC8Z&AxEzM#uJ)2qZtIn0K zI9N-^`+|}{+OumxNFi0Lyjq~*^2B->)6~PGRTZ=$E?^*bL}P~Q;gbs`G@ws)e<6kz zeKhDLL>0ObCmOTvxu-pFbRW`SlXj2T;NA0bNutHZ*sprxadm&iodYH4s|#q|CjLih zU+lsoVDy`B8o6D6`enuX5AkkZ^=>_e!Ptd;6YnMVjypt;j3l{O^4f~)Yo|0RBkLjp zi$Mn*!Df9yK2@4=IDYdnZvjEU7NY~B!8pC4 z&^Zi=Rp0I1_W|o&S`?N0Siq^UE@S|a-;)?Fjd-k@_&xG+tIIhdv*T}-g=zTo)P7Tc zRdI83LvUr7Uo9Gf-x+FOA*NT!ccMDJjpZ@384LK%yZr$SO>=6=^&hmv1Vn9@P@4Bn zXF0(s>(iRWKw>nNLxGnl*3!z0MQIOO)<5GNo$VW;n_4GCfa#J~6z09S{hg{Am%x=v zovc#{5-$dnpp3R&d_qstCJA){E;~wC%p=Za z8@-*uC)BywHij4f&e(7I1KV6(R|iBUBqX$9_&#nvEXk};`yM^f2gF*`s?NCoR&3+m z5MJkZL;;-Kt9?*_n8|kQc;}XeH73#ObwJLSqRMJ&=JysB7PdEsayLoeeYq^5Det=f z*a;M{9?z65bn317ac77Lpz(t>Z?*%knvW%uZbbJ>9PFf|5IkS9Y~^;b%w*h~U(w(s zX2v4tWN-=QX4EPCE6Tu#;s2inZ2_YJlv4G zuY>%Z_R`kGzrdi^%>+-J)WTv){+AdR7t(n7ZAHkpH5p$>t!w%zU4G_s(D-^#;0%O@ zQ6c!cf zIX1sgK0%IAWpS}`hJ{ZrBXmCz#1MTRMH?_sHHB?jB~_s-+>`XSh3@~X$_wLSL$(EW|A_kY?|5ggMeNcfp_ z>|p^~9G`+umRq?@fxOc{x!tV#TZlhXMu&8av9yg+)xSK9U0V9M0}>_uvAj>On-Q}j zvR}~BqT{>5?H1ay7AMpUs;R1qT@wHP3pv`4hY%G|saqQ#jgj>iEu>>1wtv+@ZtKGA zdLcrCxvH#8flm_&4Hq2ch+zM6u?9)j63!WZ5fOtd6Ft2$F*qZ7*AkxBudDil>f!cW z-p;Pv8o1~Ob+@x)y*XdUgZdR-EC^AMKtEFB)C1}cbhp|LR|_TzOh`@eJI{^8*dbp9 z#p(^f`d|mN<}h=3lV*6a$aQI2qe|g#=Z!B{yz51<)3?@6MS4C zxfYl8cnrc>m+vV;BzNpKGjf^S)^)#!8@FRcMF6(UvE=m%yt_XQe~oFGndMLTJ$VQP zevnLm%f`;$A4$Ma2RscNhX3;ulGwxLI{T|jRqy;u-x0K|E=Ks`haL?|wZ7Tg9G|Xt z(a<=;k{ws;(;QbGHDpxM#Ty2xVGvk?!U6BJhwL@v(6&cTl=q6b>^d~5jv!&o55->0 zjM1^5fzKrPqZ%0o<>m00Zr(g$_z{;KN5z7gJeE^`;llr*8d+Rg%A2Qj2ba-7@P1w( zo*A?t#&0V%?V}lc)191#pL{pImh0N%C|xAKac-J8J{D)hvR+rX9=MGyDq;jk8X3I= z2yCGMMn*=&&+%k$A6GQMfhcHAx5l15-kHhC(`OLQG_3Q0rrp%)Tc5pwh2bp}uSrr9 zKY~D2|2dmK-L0QL{T)Oc%M`#$5dDiz!qwK7*!$>~c7_7LZZE?Kdbz$Yw0S1LFxB*_ zz|6yR%x|E-pZ3+OQt8H_d4I6l1mTUS!{D4*poY`RBZ2thO6K3Cb_=c_u8)UHk;;I@ zu0V;Fv&G8l#>cp8#uvRA2-PdrrVP?5cjj2CvN-&*+csx)mQ=^BdA{cwWo zn`IVJt26d0y+xT>ZY~I+JEn38h6FsS9{_Lke1YrSp64Ct%H~V?F1YUlki2YP-*#bJ z2)#zD8yeVzGk=K(heDLh#_xt)4j~;4u>Fz7?Q%mEG)uUvnlm z;0{=L4mr-vmVRZ~mMC_cOP7O30yUqil79k=`fRo0O>S+O@9gY6Yrm$>El7Ggnds#* z8jG)*vNCpbOpNp&oH({p!!_%*XQB6ZbIFGsN}eyb-4`Z$WCR=B55A7sFO|8D3%ScS6GASuWGf}kND^9=7C zCikz`*YB8pj-6{&-Xk6zEeV*7`57JK{8A7yQc@vsCI$~fV3`=cpMe+ww^AP$m$Cl@ z)oUb-d6NrZHi%INJd!tzlBj%U5ci@rKk_-slZQv1{^KMxWA#|5&%?umu(1620U_hFG3WTmh}5S~Jm6z$albcJQ;C#9fuXtU z0XA9ps-=WD$%TElVWVHQIEN-&y7)FgUPVu9rS|;kvOVqZZ3dOH*CrGINmsK~ayI#m_MK zOrj3SiG6NUZ|(cvx?L<8?;jM%{C|&AU$4PuzT_@)ep-DnuG=ct4Yp=m8dOqqbK?Vh zu=GWgrLC+!VFfM&uTTIqf%S#*eu=`-A+mh{M9|^z>2fQjJ!o-ws4oI<8?G%n<;JL8 zSFhE6=XbSjGXK1~$x4R}|B5_`2;{Hidp3CCmJNKAH>uygng6bCTpr5}Jaz{Ltla~G zuC9LLky)8HTWn5#zsHix?d+;VUbYY6$U1it*vu{A|K-QC$UAS}E1_bSdT(B5mFsJu za#zY4$7_P!65E`4p{7M)1tN1Kcla-AyX9L>i)!Y_nN+z9E>wfTkN<=E`}@7)>uLeA zp9#24VNqM^KSfA&XY3?3_6R6niUFM9{)Odoh{TbOm8eKk#UnOQDK7M&!SPL~z zs#QqmA{jTgQ_vYACM29OAz*E#RpXX8}YNP zj#CP&tgL3%3l{f(^6TGh0s((r^e`s9_~^U-;tK{j zCm>R92Mh4`>Was_A3c_g=N+F(Pu+bbVlQ>lQd(datYQKIPpo>o{sML!@!of@oDceY zZJi*$C3A8i=!39j166e^;}Pb6^8Q^%2))XBx~+t8R{7)TSyiPN`UR8cyZ7NW&xL|e z9hZ%mLNn@WoL|lA5JD*GG~$;r_{@yv@#_E8&c4XtCY;~J30t&(XM&`|W5H|2TvfS@ z@vm*wdfm)3@meBHA#M&Wo-TiKJmv+$T&S4glmh*Spssz150(>w6~kFHbID>)<@6I> zuDl!kzM%zEl?K{T_hQwiEQo4y9J525!1cn z?$8uB+bOnI8OFbT-1M1qAKoh|A>4W9n7{^sf59ecX#5h6V)G?TRI4{*TJjK}pfgNi z`N`C$moDWV-I>wCrkeTnOWwnZ`_~YdQUS@Fmw0l0qYmNo0^H~P;yRU?a|1Uq?Egb( zkyBK;cRakutl10_FH4HeY0g~q)Wv|ehTlg?^uMS`#aW(I&GoYkojwy@;_&J>inaZt zBWsp{!+s{jl_rdfZOs2^Tb9m~0Uu;H+XvUq(GmMUgFtXZa$K+G#Ni+Y@MSPC;N{c# zk@I58!9~v=mm)1833|)Vrl#3aFFlqzkV$?C-=BxahX|A}YoX0H{fOgut>>iDF1<^9 z=D~Xr%eOK4LT0Dr^^#Y8rw;>@S#>wDdU^MoH&F8f6+K@$_Q^-rhX6Z>FyZ`n0xW)s z6_5#bCx*jBBuX}o^*UGhfAyIFKYt*ZVWI6k*EdtUnXD;xIy&D3of`kRUf%mS6=)|Z zh#_`|ZL5{S?~JCIFpZjry|s54peNo=f~v|&ET2H?>*JvF!cBic-p*nBHpIEmuw{FC zGCdr)$EMEJKm{48auZXVki@w%%G6ZAFxbAg*GYgN74`x2^1>h7=O{pc{qY|y_y4B# zeBF{6Dfo=@bVfRql!XUn&}WU8tbS%QY$Qat?geK8!4RNcKd0scVOhF(riW2*^kJd? z0`dPv=Eo%_4IDMfHXanvVxDPl7v9<1vnSy8WXn^?K$V>e_-8l9ILkeSEUi(1$nUC1r_f8Y%2kVx;=FoaE|%~G zSC#%Dp+=|I9@S|hBlQmkC2H75)`jy`$TQcosfXMWe&f8&xjoLQ%+mN@u>h}(quLLn zM8IpZz57^y$8o;Wj*MJb#(gnB-8$gWHtxuUyC~DV&Bosg@Bb|qzcSb4^%s|y%fzpt zdFda(Mi1vvq4(L;5Ad(@nZ)F81b-jk@Cg+|sgojX!#J_XJ+Wuow0@{>>u1gT)U5DC;5=;Bq)8ZK0nTrMNC*|hSTx0PsI=DjO<7+jrs4Lsui&`M` z(ha^_u0ZyC8&=Ij)-ZlMtCCUT|PRXYyo%)Khl2+rGGzhUx1 zv*w|K@*f2C4U~VTRkbO8Ag%U0b+tt!c1x`N=^nQts!!uAIQhYP{HHAU0sNOdRZQ1f zu4|qL+V2BT;_||e(Nx05rI&5@pm9!#e^gG2t68@P$Zio6uy~dG8kUdNxSTM3Uc^;F6iGLKsgLn?1bHkK&{FCKd_^J@eeYY&vRbw z@Y){Zo0wHj3jn%(M75p>#0T&b>S%pH0KCy`o0#-hs=YHA{7{Io!oj=3Ou%fzaWK+} z&nMTb?MbG2ACNwVY&klkHXTC^?4QgzWaezM#pmVi>aO=6I!v76lHH}aNbnL&w58~h z6p#v@j|#_ls4*8tHT;w-oP>TK9c5!N+S*azc?zv?q(fEqt$6@Dd^78=Mw*REU-N(b zi3bOH52yTK_j^Hm4!38kZFgI&fIL~yqTBnAsG8Hf+B}kbdCSSau|RHjst0Enk^oo z$&Ts}Z*76mib^E$f{_B*7yv+M)twNqF{f+XD@!;Lzw~wkk~D)i64VKYPgq>wh;=q+ zpK@B)z4-)ydox?K>LW^Jm>EGG_$X&S6ixQEO=O~+36ij@XfkTC)N5ih zRxQa<*+?9nwk@Yi>wUdm(JT!)t`qUNG>fJZ^c}F6DNkAP%Zu%OAR)Dc9`7^yr8j{P? zeA?O2^YkVUN^n~*OT)t>{plLe)5YPQD_FIcm^BD+7n>*Qy9js+f}eVpE2ONNgLK z+meU+ftWhIOjE(@p}PFR^!z0Xp*y-KvtajS#-7_o!SxyN0V@L1tIWf31&jodBT6)|LOEry!{y&dZy6ihE2f`5JuGvq2py#}UFW2fQ=tyaOzvJHmS=O-I>+sU9xuuoaQx=cH$Hzh%WHM}KtkhqfCw`q$7)r3+hp=+J00TzUSRA+xE^xXI3 zdN@?!{rh)DMmZ(9Sy?gB(K>_`CarC4WGQa)Q(RcRWIzc!`ifT)Aat z((THs?ZuwNkH0xd4=y^`4t&RZH=hs_(-*Iz@;sH5``M3r)jDm4oTrbar9=6}#j*w_ zT{V51-NV7<;K`ArNtJ_1y1VP}_s{DTH-OMhpMENH{Cog|<^*RZ&y&1?c(BD&_l?am zwwJVX(v$Yw(3_mxJH4xeX8Aqt76)#^e4SANefHfew>U*e$yt&QNMs)5wr)&gCRO3; zo07XTyyPP~KhNqP64r85B4$#Cm7~IrhdH&UH0n5_*SM~2FSgH^nhthIy={3mF44=% zRrqD(lZmh=cs7S?It~&WO_;Ceo(670@LaEFz13$6Plg_ByUd>C0UOy-oF@|8DY(?l z%;x*Rh0^=QYdi7xs^4wBax^UDkofjxWX{(z+#&;~o@&&t$}3!YJ%m;(d{F_D@ak=@ z3HcJ#gkyR6E~P#<@ZRyrA=BL|nw^o4Z<=1y<_A&Vxtt}i;uVITnM31miF02ft1v5Z z>$uCtqEFzN_8dB>RE<9~(m7WRAWsg8+r-!tF6{KSIeIuAZ3P3$a~ObuqQnMhbqT%r zML@r*N0y1P>}kNj3}vA11_FW(L&+h1uej+r$K$m#yNKd2uIQa3r69;}f12owbdf!xt)Z6w|E`cQ{Xc=vokT8R7N$BQd7VrN!0Y1hpCOEjco;`*~ z9&~lJAufo|K$yf|m*DCjDrN?}GshWY4oTk=J_#tH_npyb zZ|105s0i=wM7Uv?BA$-+Dpwif*8TncwvZtE5MtS$9S5z8-3I~gtnoTMc3MV1=zh)n zp<1CP&svI|e1+dfrH5HYIJ6{u{Umrg>%54qwPLtRAB8n7P9>4S*LSVo(Y28V;Tk97 z(^P7?H-sytcbe-SO0;y>S{{*nLOpo`CCEPsJZlbV#S>+j0L zFT$3qB!wRkP68@OEJ!dCiQxMk!iAH*XVI(tYK*0tV-CD6Cdd+v-74Rc>qxr!D^B`i zK9weq1=AM!W@Bws4wB9t(HH#d*L#(9OI|4rB8BA848rNUgTu;;A(QHe0+|w~(O18} zh%>X>J(GD4~*OLRyV?DOm2 zx!PKB;BO6wJYPv{4H zgNS#hx9b*eAHyfEmP2hPQu5{lR|6-;#XU>`byimq-Ul!zy5lqnw}?3AcEPlW$&C30MP%DtEPHz~Gi>O>C?ocrs9Y~D28FEPkR*2%3=073 z7~4t-r#c`HeXsp4X%0)Y^651jyR^O;B8ihXBH-t-mmw_;_A7CqPFlD&gXz%9BzQC- zwIKH;3!7Jnvp2~C=V&)+V439C!oq6Q39*6m!|6nOWbCii5ZUIiI;KAxH4fck*XO3o z94c>~I{Diu8B!3vH@BtR`HLtJDl02zz@xu@;ggc0!KH#!yr!q3c-^!oIc92QWpT>- z%bw=4+Q*qhbq3QnIz@+R!oPy=0$g>7wl$a0wQqByX8qZMGKW_vPNu!ot`w!`|HvcY z41K(&{Dts?CR>x76MAb`20M;Z=yXBZh#JF7xt{qejhJuOV zhZ?u5e%J^O4G#tUuJ^`!gEl;YERG@U!4=I1Ju%2+`zxozg4iXW@Yc@0Yw0pAqc5%A zHmx>w_y#lg4~*AO?p5-J2V7mQh$;#S7v&hS$Pt(%lY@|_5KU4|O};z@Kv`@!Gx^P3 zFqtqAiCI-aUMU8{_x2Ic!;ieL8g=5&b*^tH`5m&VARMqF)!#pmS2Y$FzQpVYZH9Y| zKPo&C904sR;)-5J5WW-^FqL0O>plAckVuzR9%(UiOCq!oZJ1~xI1vMpHV%D{an~1+ zBsSJ!QnE{AB8MBFKN;xe?yC#w`-DsYb>;Yr{MCq#{5yg!owpNA-|ahh@3|8+U8l!$9=Jna;wOoe@mSAE1R+67N`ayN=OWAYyDm1;X@GTmTlhlN4p4 zn2uRa>|)FOTK}7z^f$}wH=lZ6&3XLc_#$<<8EK0I5cCh7RUrkiu2;+~&)U2dA#Pwq zS`V1ZJSxQ0Y*j-#2p@(bL<`b+9EAnVIRJjm+UUR6xUTF%wQp7fXqK9wC8`ia1t3WJ z`-^@4jU=PdOj?Dib`t=jiYGaJ)O!DEDGXWCU#0-Qu3K+{Gcv5A(IG$+tkN7}B_E@% z`g2GPgPH;v45O$AEg08K(VJA=urYBU z$z$G{jb1#NZo_Wds|-YK0OR%FdNP$I%^3lRMd8-zIf$a;FOI%{x*>x*H*j#Oi%DBe zB))<`oUsTj#)2*|%rqn8_!3mU7cX)mqw4z(-7Qw$4$(zNNPeO~o(iE!IFtUQsN6qJ zy1gkuO&=Jz=l(wGrD7CLqNqik>j;GU6YOoa>%nA@hpx?ouERQ$P_eNbLZ0FUP9>M` zBiY_q2lBos%;o3x5FgG|pk0TubuN=8faL~@x$oiQ@Zym^UtoObdjGqk7+5` zAi-~lL6bXKOt69a{mUggA=CRwl{>2d%cIrDkta{QjBJr;M5mapa}y{o%=MnB?V(*o z4+2c4gAi9PB*#*gROtRSUyuCtVc=E0^&*ou)5CiD!?m{sxXU-oGPYB0&V}1qxjy7vt3Vu>`#LjwzuI*ry%F6BCl|iJs2DmW-*M* z8~CGTDF0WeN6#tWK}>CgS8ls62`N6nl%VVmnU8TGw1HO$xhL*#!}ek`!`!PERzzN0 z;sQ(WUEctKCn~?zs$l7l>~@CTxie}{otSTb=tqh?IZ!PpTSUSt&MiOhqVwdz8a$r5 z6QyjrQ&(fRItOQsr~;Q^hRJ_uRt&^rayW@C_%07jjk?Mw8rKRe23V8uI|ktO?}SgDfcv z>ET{py=fqQxvm;``e6*Tt!ntzgM!zaU|fM)s%L4yRLZG^9x+B+81W6=89CG&Za`@6N4LfRL6bAv~+xWi$^b@;5t z41+3U5i^Y&|Dbg$K%41&)^~^8AG!F5ZGbICTh2@Hd-&PjKVMHs5Tl+=9|r_&e+pK5 z4gb96wwvKOoUyR4<+Pg3Vu5pU(vYL)M>|M2lWXufnCcb;8gm@fZx*uvGs8jVf1!;_ zi2*xT`Ct3E#Fthd2r#IxtWltrJj;b=?B(<${DV(83s0O&IezO9g8x)1wB>zlW$LZx(jwj43@D!zFC zyBn^f4x6$y-xxC?JhqA!9Wdn-tr>)`{(df^pnLnW`}8uexOl+EcO~@Gm(hF@DB!>IaqY$ zF6&%fzivRqL-{~7{)8{7^h8i#^#t%1d+|kcoQMDsJtQc(ps>wd)|7C5-jBQ#2W&{_ z**B+k5KYWBIXM|L+r+Of8_Yfme|aX;`)Zy!^gk?4Gj0ATB||Wdi#BG> zSN3l6Z`;qIjc|Ix;b=6@QZ(ujB*o;7B+*2%7oy3)?*J6lQp#N`D+LARQ1(&V&u=a+ zU*+CW1=dy}C`qtR{|ffM1zA7d-Cy4BZtuHu=@=ZGd%RsXxv|YwNJF}_Tze0u5k-!! zGMzk>n8Hq^^=43l*rqN#s;hfHp%n+cE4NPuWG{N5>wk&ZO1Wp_3B0FbParH`3*8Ou zh{!(UXmb&NS_rqxg$=l68Xwq9>Kz>&CHgP@+1bfo<$ueHF_b_f{{(|-_-!%5qdg>9 z5yB9|5R>V9PCW~Yi&5%5ML?@CfpA=M#MkJNad876nt<*}I%z-(Mk?z0GT)5myQSL% zJnii&{({c+!1kXNB{NR&?Fb1mij0XtV+k8mE@PMaX4xiI@gvp!DqZnI8MbV`IuQ!* zS1GHx;)S_|?VTt>G9Eu~%1&dO?rF7(unhle`u>Dm8VTRCn4yWofa&evFY!}%iYuVJ zb+<_#3ReEMYhu~XL>!7MLO_rt`iUSRaQ@6T@VyWrqL`K=w0 zbY8;?buO1JJ>gG}-hLex5t~bdLkaR~)WjKyi9rQW6n-YS$y8vv(H)#}RiC^v^D61uo(BubYL zqwmd+bp=s>G`ws6NzEt8oJ2clKd+46k=m$4QC!WeP(sAPiQ$<=uA-XY<#vQVa8svO ztuZz44rGZgpcNOVPG+w>)D8>LM2Rja(_jySUnj6P~BpVb(! zt3SGC5rB3B8i1;foH^U6w1-c!#9 zWi~*by1Of+ucW4;xbM(3DlRUV-q(~TgLafRd>7k6z@PzHUnkEy!9Yc&qV~__x3n}1 z@WE7Bl_ON%yx}9A5I^19A5Qkoqo|I9vr2xd+p_ofOUEcuHy<$~a@W3=g4(bEocRtC zkL(rshR>SvddC0s?t!<_+E9hEHksg6maCsSj%Gk?gsf+wwYL~=ytQN`p+=H1mYxhF zO_Z#U&fDaQ6b-)NurY?Hwv&)c@HUrc=;Ljsz_xwnnmQ)B4rBYV29utY5whKE97Wbk z9gU#XRpbd`(s{NXVch z38Q~ygpcA)BU3#fHH11=#b+vKpVeX8O)v1ews9%~Tk#uR5I_cyM>5$*iJ(PiHN?ovpqiOkN$g*O!cvajA^sL5xl?GAZ5P-CHr>*GT= z{MZMYh{Hh9BbM)CH~KFT1QaAPS$$xkA zO~dYdy}h&DJyl&*?^SCl7bBkQ1PxMz19B_uIUu!4SOWdZN_GiHNaHgE4HtrcZ=*Sc2^-;qg(4#kxFBmD50~8qMnq{Rmf$%Vd@?w&j&^0@s zK&04L!*tF$L6|xkGR(5Ul)Ne&%b}o@fhbADW0|kZ&tWQ@D?3Slt;LX=$Yzg1;(5Va z@Q|;tqd<_|--z$H31ni!zQhvTc`!uDBTYm>#TIiJf6-!+(3K{^5cRcwBuW8;2u5r0 zCbzxn8H`|PzW~!lSh98~Mub5Eqo-$Z9{mwJZpR`hE**!voqqQ|dOxj~DFp@bS&zD? zxEOt*Fo`nJCl8o@cqxPAMw>aTH5Hb4+1c4%FJ~S8?XsT`GAE5u-!dQuN=(HSCZ`wRpq!b|x zJn|F#|HlH@2!WqyF;$3s}nbH5IR0N`8=!pAf=NFpWT+1MD`-te|^mivMPMj${p2p_Yyqk z_Az*u8Y9VW*jyqb=`XG)G46Ehcn5@`_D(uWbg$pTN#f7Z6eDn0#9+11z9`?4fOkn8 zaQO_drzcU_+Ybn-zn-2Z4}0sXT}7c?eC;GiZQsdSOSF!WKP~{p+g3$E21O@A9SR54 zrekpl8vm;$0Oq&?JzHJG*9|dlQEe?#BlbMb$-C}Yrdd|3qcW4F5=*IW{T6@wykJQH z7qo{>Q>!wQk_RW5@(290Yb<6$miDr~Vio3D5)>+7yEfW!#PnGh9k(#~;lL$6>&39) z8-Y5lK@*y8%#2+a95@+P{xk7(5MJ$uBqVk<)?SbIO~_oTg>3wTO}DIniLnpGNX*R| zZar8*B8+weO-X`B+I%F>M0vbx_$p4^M6)F*3(w5l($aJ&0$F&iEKMxfR`=~6$0|>F z3Q&f>i&s|ABxVoW>B-4fF9Hzma2j{&I5o}j*vpeB=}rgF$G?|ayQ-<>>V1a`N)#r@ zhuNTIlvH)L{3+V?ayed=#VQ78?lqI7lbD7fATf-R&8xyc7F|2kl!S??N}>hrYk?iL z7QL!~YFzhO*M`5Do`W=dXiZTJj#M4wn^zSH->CPQh?z25PlarhbWzIKgL5F+I&z+z zVskHK9GY_kG>DD~+pW4>MGn@cjb(Tv30lk{JFW{?#>rF)?{0^DMSTT4I!MQO}R$WxR8_4D{jGsVBgJ^ zIK@EFB9O)e&EF$V%fOLU5ojaXDY7SFg+9W>?6~1f#d~zZYLpmB2F_P54tS7b*YByJ zNkf=ILmXqP7V0G8rVzFVsF`8r*kgl6qN>uT8-G*tDng_fV4?U5nrgN7xZk`XW^YxAhmFmG+s|$}UyCCObIcO(A=9hwF14^pylDQLl9D4sPwn0;m41 zdXnqOSq80WwC&(BU+_6>5}*-8-)y^ACHl=J38+?on*w76(99z%=Xw02!!j@}-Et$oLeTTS7K!wNyQ6c%G=Y=$?LyFVnqc}@gc3NVu4WN zcC#%!Z*hxVCB{fdv7%1|WKdT+M@kN0kK1cZw^xxDzr(Zb?w(vXHKpM9vBr za|P)$n(?(1=ysY~$dTtyoj2MiXo-|TZexW|$sP$Oxs-*nU^J#zQeUS;2qv*&iG?6^ zu_RrGP|=`OMjX@J+}Wh#km`Auj#JSb25crvRJ9x?v^rwY{MsK0Mv1Q!r(%z@{9Wxkn%bOmbCOoGP&jkR+Ei$n8JZ{9RrzY*6<3HmbD{F4tVPAU zAYE$_HN*)U367h)tV~)ef zE=iwP#TsjJaspot!>C<*<*{ta)R+Yg7h)SmnLT)>`sZ4ulM>o7dXP!g%Y0)qJJf+o5=y%9>U~sl}HERn<5+){OS>LMaYt#zg6tG_&y!S>) z*5<;aMXHX}AAH8nXkH#QyJ_&??jC>qn{C*L6{7uTog=xD$h zbIZ30OyI@cP84roTAyhqN(sT?wRBkT50I z{pLCmZQO_pZ*s}{kYj9`%lKz#yL58D>686viK#IVSI)!G#FJDC5K_&9e-xuwA`}`8 z7aw;}uAnW=$6?!s4l8V9NiLK2pW90CHHBy^Hp(F|hD1rVe2NjBnIjKc4Qsr^lUfQw zx9kV+7eG+GUi?Idg+|*mqW?ktC}9tn*)j-%%@8`D?Y3$>l6ovhtR2Q1jPr{V0}OnQ z%2(s_@$8oBhXJkKkRXLc8?`he^sxSQY+^#KqfQ2mRI~^JON=xsx_*}K|v=aCm*dL%BujD7pv_&EhqPLLOrXVUtk*iCRwovF%y!HNEc$u zLR?A;23!dI^z<}Zln((^P4@>yx{e;aQ!GNCYLa*)%H4Mya}5ou`}3{H*;1*F*;oYx zb`f&DqqgS_#;vnw*zTt-4bKyCPm!_BieFPm1n#t6@tNEulX`y2SkMq0h9z+1lgHNM zaIakp%wE=S7Ij7=2v>J7$U(|(jQFjst^Ej?FgP^3=IxNCUm;WMc4z0eg27>btKMS5 z!VqJqWGu%`H3!hfGKh)LL5}agsq&xlo~n8Ick1fuCP^q*lQzj@=>54zYt6F%__dim zI3i=#-kUrw2B9MZN~#K@GW-mOQ%Xy(C7X5@6VvIfNFxfss7c zTC^WgMgju@f-G1xBly%jTd3v1P~-5Ww9BW)O4jnIAe-{;H6Z`IzUI86%WCdz%6IdI z*wrmwR~klAjo?lV+p#X5+ljjVfICbi^}ZGfVO4jf5~(OyEAPe7N&ba^d7M3E9i5sm zzE}psF>?rwl!$U14Xp*c#wS5 z`myKCSle5d0hqPSwfKq=4EQgVzoToaK_zSwJyeOZ0C$Qc@RiNmn@H#b$REH_QK(SV zb|Q!CkKNdnp7W(u|L8hbzr)pev6$faQLEK%t`5&&7j==}Pn`IJS+VQx*>Pvf-4xXD zGLTqaqUUt>{PGY=LXvtljg+P!?H;WlO${Uy5d)2yVKifH@u+~alWg%7CsCRNvDytV z9&#>AkfY-x5?tD_xqg$MZG%f$lO@F_r;#tM;?6A6`lIrR5`FmO8a>|IhD1kP;%=MJ z7=|7r`VVSbsdN$3Qe^!x?O0suv9d14T14 z3RIC>=ec`Ht2~$a(G9oVc+m^&-S->BkF@9JM^Doc*Gm2=_mf4cjlk{j!&KATTfYV( z+hk$&0--c6O!J)zN%k55O92evg#lE}FfhgA*{W;MHG6 z`poWbTG3tdY4)M6)d6| zcJ0)_M1EXVR+jakof{S`Xg2WHauMrKY8?rr&_`3F#}Ky7?D~-@tEtm^YjhhyyPJ1J zssGahCG*x(aFeyC5lLpvu43)s*D@ibOCVxvgV z)F^1D^UCoxbhzci%Yff=TYnbYiIYwiBR2=Kyo6J(>qM^ZRW#|GhUruiqXR2(jWMGLx$SqnwIjkm-nf&o(`-L2aAY zfqeY%jA>I?8Zs0IBsHsL?}-?x9X|PH)WT~8#!M5bvwkm>bitz2S9{axu=1FKy~(nc zuoTaFhzyt7t(Q8=}2GMW9=N;&4bVC8sbSi@<|dU zs%{2Wzh5qHc2+%~-{^R(j(JtTXj@P9bDs2*&PHj(EM;d8Qtjxlens%oaOcYPB;;l8 zn^$skJhyCC4dhGl(_xFG*veuLf4Vu?cIkHE&F7sa_PV;Kf#2bZCSt;OGi}11)s9o4 z1+885gg*I=e)C(oB@uwMH2VrsIvj~*p`(O!IG!T$MFUd|iU`8IezfX@zlQsA(3LC> zx)<||I!YNX%Bh9e>W2f0B#I?+*7Tn_JsUYHOX?}ztiqZ@`QfJ(LZf9oR)Sp2ystPv zKjoA+684{YP=v_2Es36IraX{D=j_1(0k zsfmxe33_Uz0`~mz*w1CRaI?AZj|0$m_G$?~u*>2VdDgEMo_6-w!vFoJ`zGG>-@*3Z zXD~he+n=vq96$$MQzCF(jfIRdD z|Fv$f7H<&dWCkhg>VAJz2_VD&l9umNV2pkt;U9~9ImSC3e2vZUlajeI6mPajw!dj# z!Iam~AWwz^CRh#q$Lqrj9pA5;pMpP(cAj2EwiH%gI1hbM;SGK#6FIiZpd}>%#0q&e zzhZMd+2obWZ%$>mR-E%!zz<6hu?KJA+h&U-5?R+u^cK>mJT0LrM5maXR3${&^J-w^ z+axn=<_wzORV2N8oD*x(j&oS+XgS}ggXI7Bg$A|SO(jN&25q()a+LNzABeF(rP2)N zHbPu+-7ADK?_9|HnYidwG`qqQXjVvtbj5BxMPu4&O{h)mK13`oX~G57{;F*r{xx!d zJKzYi{VHY#$gM1l`$V3tQGP-jxh!uXZ6Tt_qHWGF1skaJR^~SlnjpVJcHz)tOdYa_VA9u}+S>xB|`?Wsg&3 z+1G-`n9Lz9s382>AtPRBE^Vt=KqRt>7DAogWfpz{v&#EAQ1nshVL@vuqQVX}sSY;Z zuuQHg>_Q@9=Wi^t^KqN3J}g8MAi6P8?EMy~2BqvrZwTz;nL}iL+y# zT^4Tct~Th8BkN2?Qoi48YwI0mowHYy=Ewc0~XRwNMLK5F%U{6a^4AkSCO3cE9})RMrDK7}Zz<%_;ooQ_Etdks$fXV@k3eUx+b-Xozw7gEI0`!Q z2p6I%>rdq=RW?<5=r1R@hp`@aQ_6~^44k;`xbwNtW9)C@T5QsOrIEP$oQ4OwlY&%T0DCnr0aZxhDSeP`PWqo0p1SqjCt$R4f#P8pYp3Y8&)3u-SvgGNm1w$6*$zfb?Z@t-vK6;Kx4lU32j1L?473?>QQ9|hnD~0m zU%ygfU~n&IH%4>~)iO*d%PbpP4A%RV%jpLWz{z3beBGXK7yNoAR`A_}tg!dd_Mk^l zxu^Tu4pKOg;Nv#K9D4_~LqS`tpAd!cD%Mm^Q*eli6M6UuLjIA^Eq$!^TyX zhPv?Z6;Tvc%w^=0skdE|ZA)VkM*CyXd;u z^WaB6BeL;Wv=VZ6qWAZ(v6J+)`#l@FA%F|P=0iIWcNmu`bn5&>^$Fo|)}TXw~@i+*18?PGdFu%OrfFni9vT;-^`* z5+gQ<#wD8(FaO%<7ByyEDjDL|Q|vM@=yz6;CYy1RKqgaaq-DD!uug2ANRl}kI&?%0#Qqr|_0g{Mw-YG-K~^GAB7q{Q(jzy~Y!sfz z9XlwUJG>YnSMli!>zNf|)_n`KTdxyUI>utYS8y^o11)XQj~|Cf#`J%cdcZOYJ|zDY zO_7I=w9(VLFr9>#DxT4YE*N`W+2vm>T~R$ff+KNw9DgxjoG&C=vjR=caTX>L6+Fr}<~$Vm20iK_hSY71ORo)DrNf|I#Eri#*noJR zTU5|9gAC4q(LFw~wyUlDUYuZjVQMup_cztC;8J!N61IL?&$o&E=eG}mfOYQ;^Hm;2FS#+wF*Z^M9 z_B@peex=93UO}G(6<5*9!knKyKzhWluj?pd71d3H3VR{CdW5P5;map9z-Pm0$E>de zOWXk&7=fdRWB$D1^-7GTwFTvT7!f}ocniL8QAeiICuCEYJhcT%(8qq zY&xWn!OrL@^vH-4NxCo(0zL``j2}UlToBR6W1&%=~<_g=&Aot;K55wT&} z97j-6-O!3~r4M3+cA7}CV$nEI~W!{&R~DcMG0JOZ#zO3X?|Fxlafo$SrepZYpm(^ijdZNGi95pt%j zjv`LcQ_fmb9G_rhJMPiXPSR0J`cigrk8|q_cWpMAWX3Bz-y7qbdg4h@l>ZJw(7?Abj<@+Xf%ka#%quX+MQ-YAa@M zayUUgVY^UfsA6R|4kXAQ3%Ys>VIE3W9!A3XtIYPk+t;U+B_5j}iQkRc@b>a>v*~*= zJ2R7%LjG!jlh2^f=Lo1=X7TuqXf1Vr$Tk5~bcY0_PPjf;L;gVvSEIsOqkR1C)J7fv zTK74%aZBj>@S{8x%I~3jt8JHL^s0`_c#&+((=dRmY1$_rAtE%43Tny}$I=ew20zZw zSk&)3;gHl94I-JpCc$K>8QU5rtp{`NyQTo**#rSiU~a`Q&Nr zJP*zV_5P)l_t%p3t7_`TXGN`LXqu1ChdNQ?!fbw5;l7J(wgLLwM7eCOc;x3!I{j0Q z_qYrhAC*K?zrbuPwaphHgYfzj-fJS>X2RCqrI;uH*&J4@SBbwL^X>YJ%;2tDzY1r%*&iaUh~nA8t7|MI)pTkfsr^MCpJXK9ltDPSPi4cWv%J zl63V=A~d9ogdN{z*Hz}-cuTmLqV3OCO-gFi_J!0SFe<<6FAkG=LacNfch(u6tcB%> zZom7uV*!j1!N#BVB5Vzj!p4?Y{wO1tX8fxvS>%>f20PFZeor)y$s88sYvi1LvqVq-W$YanKA(LcO*ZX#Z?gPEuOd!POw&tvpL)MUTX4DxX~$h*V_S|MSi6v%DTO$YGVvO_*6b&m>c@CyX zWL+X=jp!FQ!5mpc)jTFwOG<2hc??cRUhd%zB^gI)b*|w05V{;8zP+33;?Lj=BOc>; zoP%4kQyaeAspjlW$_)|k$}cCeDeFG_PxqLY(drsX*efHo$x$t0P<-{F-Zn4+7Kvj; z;he2iQuj71tv$cRR^lyMH)nHFLVQ~?GsmYF7%+!#e+RVpqtz3{`5&lI;F5FK6@@&b z(v&HN{mUYml+-kE{9rNn#RLE-&Zh*lEG0AS-p=JR8nd71dNVEVrCPj*f)ka` zSo4u}o0~?O@%o{xt8awWh<8eLIw!hPJjJV5b(PxoUt3sy0}RbgCG-9r4#MISg|VF) z7Mbd_2Kiq9Ha7rQgFJ^FwwX?X%}y4m??VwgU0CIqsXFX>q|7_m~AYVCE+DS@?HyhTg?o7t7I z;fOe{mw!HEvly;_8~viG`R|R##pd+Qhu>GxE9I8~63OAR=r}b zp23Y+yNLG=TjT9aYhE9o3~CsG^N+6N18B?*k=C?fzqci-O!VIs$b&WWdKJje&N|uI z!3PQwA0GJLD+H`!cjnY6cEgjQC+R03i`wehT-H`~OX@1f$c%u@!b{28XPHY%?dF4X zbVm74Z{^=1km%&C^0G7IPM042>ATnUBFXEr8=x}y8{DjV6aet}kAF2hYtOYkX8%nK&d%j>~dZaGD=GFldshJ2F!XQy*E2jMhTq?@8RET@K~y2juvZCAzB z_F`Sn{m)1`^hP29kJ}>`;X)QF2<{K*#Ml^F%o)yjRhoF^94}HmOK$`jh0yg5e;Tm0 z4#&eETg=J^uPzkMof{HjCW3}6$@kprc-diVYtB~YAZW%=13iyhhW|RMN5P655!=q` z?^x7qTe?JRyu=8@#*W2sS|eM(FpPAsl0;W3D?=!iA@|V`HfyfQuRJ>v%(>tW@7*Kc z@6P-DzzQ}Vmk$-Nr~y+VU)CLF%Dj>C^c1>fIP7XSUg_b$Rl)_F<0Xj7QgQ_GGQ1vB zU4uLD68vNH^(qLu7KrK^CDzr~6E_BdPkqc5N&qwAZw_%_-Cz~$NyV5!M!fS{yFaMH zw=X@V&|CRR5>@g(h4D_{->oCET8evMHw})D=q4VZ?HR{rrUQPRI+{(N!HkC6S%aH- zi=SWV>YqcH3`fD+gH{MRrrv%r#7RV!zaw`23_DHuf{2S$5XO`vVDPuAAc>i@X}O)w zObnOf<3AU9k=+zWN4tm)`z4G_EZ z6fX9Tg_&6@KHz(9!Xx!hZ|ue1SzFG6es1?#Stb+#T&rfO5Izhh9tV>nzyb5Go-Cep z3M-~w?|<%cQs{VXz8Vf6EHvG6|GLmWC(IO zjSW1;GFbj|zyJK#`2QXpW6R=6|9R&K z^_>qw`AoMPnqd_q3VO!S8mhyM<+FfqFlw>`B0lyBHb4DXrNKI5&BKhyFN-I-E;`Em zcZOOJKe-I>D?*5mYzjj?^pvk)G6R);!t(*A`+>LdcyzkIw#yNVQq__#<-Z1i&!;ik zsO%$>>RSWuF;FuQka%}Sx`SU{zD2-&f$Z(!jv-;@UCjy(O-U zGGW)TyLOdW`RD;NWvTtO>~yg%mL7B$TL}+#M`!Xfawneg#(Q^bF-0VD5;or3 zIYR$9VZp!TMfb#xqC9G~HE3jkX!JeqV{iW5;ptRNQlF#mrq zcGHV#eW?GsX2~cppCw?wudD|hvwS2}p!+qlg*f&2Q69U11|Nmkbm&}hu14ft^w<%1 z4y)PCd;}l$9LvJOq6dH?N>9Ds-FI%f0zEj$rFrDi?V&xoo!m7Y@TBa~c&W8QuA$RN zQ=d0{9UjxUq4v;LC#=)U+~0Y1E91NGsT4?k{>Y5PSA z-yE!`Ir>~6G5U898|02~=4w9ONcL`xPt6MBLo)j@XCvXf?!Q>U1u5f0=s#FLM?^Y4 z&)FyMyR$Zdll09)2`&vM$l^XuDT2~cv*PuR1z2QP7CeSFA}ktxJO*|Co!d{LBR&F6`RG8~jSt>{VowS(HT9nnU5<|? zy)LFJ=X_Br3nqLCmSWHM=!q_ZQ>e(G<9>0ErxL0mz!4Ic-cQDyCXR-w{@i*O;*Zwg>3Q zwbWLXz2z%-)UYX58m>|AKBkh~*z!Qv0m#hER{HfEYMM|gPVRS=v;BTBRm?KcH!ynK zi*IF0Q)M!%dA!1qpCgt~O_E*_(Sq-=tSnX67IW0#1#Z+Uqf|?!fTROc<(Y;EqKb;h z9a{kc?(XjTZbz=RwziLp9lhaeX9pt$PFQOX3l*oK#%ikH!Im|?N9RppfZYc+6MxP1 z-s%ymuF^lP5=d))e|Qm` zV$@O&)J5ncvsyI~l5JHWOMS(7;vk&*L8fm1sIwNdl}KZ>0_t(?wCp9Xy)#^Vc@XZV zo6Q)UN+UuAG}L8Vxjg8H=hnvAdqHoO8qvpr|4Rht`|X+sip}dU|MRcn_#cUhZ)P&P zPHXKBGP_#=FK2Y|feHxAvC1Dl4dO1O0IVl$^vHQnp(g9xg-;*Ij3GjiJ6PgsE=z`H zFR!D|akH-pHINmy#?HRuf{StBB1(!@YMPdtktAhfNF5v%ArjzhxBOW0xW8l--7A-s z{p3m~#h6LeE6+wbRW3?e#a00lC#_XY+9xN}xay1}aVIsEnR)mrqI0V;I5m}7LJKNE z$12~2%2T3g(guhpvSmNw=Ug!1+d7gAR1`P~LHk$WXeiL&UXRZ=5?1itcGH?ieZO+Z zN)S$GD|VBicJuYXmq~J_XfG@;r@}8`z@XUG9vybuu|H23idGx?dj`$z%4x$Fz$sAwWHXH z`Lbt11p)HfwTgd2K&%u=RggF7o@ovAPp)FE2+Cheh!-)}%3p&szYBM(pl6#E3C}d0 z6&mqGOdO^Utwkci>+Kyci^T3K51#*caV&Uw+45cYynE=)TzurYSd*?E{k_|}HX0{u z_j=TEMp;SPGU~7An4PuwC^Vk={bE7ONYU<9MED*R0g=OJ-ScSar;^<(fWS)5UU_@z zb6DdBFt|C3kN>85Dvk2F%hoi{*81V0pe5Alwy)FbH(sp7Uni5<`fMA!uHEC)<5DT+ z=8_{vZYjyh@r;w5`i7Li`+<`?bv1t5ex1gD8e+vvuvLOm^iTWzO3u!HQ*UlpjC?ZO zu-hv$dmGlN_jYuiWJJ>mI!E4<1E##+pwMNtDsA zuYN#?{^nqsf)It{>w!YZ04cDCg9N!$`|QabyUkn~xO|pIFW5hQBsN?NdXET=92;jW zHkR<->AmX=mecmUh9>os1jAD1zW4v`|gK#)`;T5_Iqa( z%Wp9pEbXyr)x^KQC9W&Afki>CSLB!13%njN4s)2!ok5GmD7#kRh3~7$0zDW+v5IN; z*2#XKX043xD=^T-l}OrM`-sMqOqfS>kQt6o5MFl+TE1zGZj(6uXmcqFpL}5(9S@{z~AaHwIbKhqd`GJeiw?q;1vq_!qhA*nNzid>yDmc?dGx&vSJw) zewzw}N<1m%ew#;K5%nhu1?-_Y$8T>jeYV4Xs##~|fFS?o<(+W(Q!;5r177F%6+abu z4w)F3Es4C^e+qEdla+jH23@^b-{2$#6EyYMm9R#J{+r5F_hYA__smo^DRcPmEJZNN zRr7?V)fWTFDuk4ZT~}W~jDt!d@~od{Ioc}17ADaaD>#%^#InD!HyJtFiPN$VT191I z1qhIt0ME3b32jP+Dh+47k)UFnr{-MYJ(h-sMjSrZL=+u?(S8bLGC*TPQ#Dw+@)Cp! z1sEB!gohpvijBUp+1uG$O%(`8z(z9LGM{4g~KJKf# zTbtr>15tt7bBNvt8CE`<9bGT})jKi`E-ITJvCMmO4R<{k4S|XmCw-TLh>4vS*;aET zeKfPjPOl~m#(iC9w%e}Vmp({WHg*o?^M7Z(ei*WIGy~pXSqL39Anzn^K5-aYm2I3g zXI#a%FmW=mZ4d6Aw)S7)j}>0~FZpplHAoGkcRb`}beB#uWmO<`;PxJ`#Mlyk-3|;; zn|aM#s6Uo%j}`7zcv*N8rJ1`!IrCFd#)7g|8bD8f^LHjkt_)GB8E0WUkGgOPT{LmAyk~F`w#AZ_k!fa|r=$D_^6(eVLFK`KZ{5DPYVJ55Gg|Bm z*oTDw(|!2!uc`gucVs&5Pa)vO{9qV9VuN7pM0(>;C?I-38UOW6Y!oF8qLc;FKA}Mr z{>n^Z!IV@*BR8Za&iwc}S{C#3I^Clym0rD9jZt5ySSJE&V9YstjgXkmW=vK4zVh3s zQgNRz{LTDm`K0TI*Y0Nb#mL1SwF6?9SkLAx+EctFl?*Nd=tfJ{cD8bY)EL$$cZ}m( zKg`XC=n3_z=PFgH3AjuKZOTf@m%oIO16y?q2d0D(VgDZUn2@<@H8MiH>A3ioUJ*x! z4Q!Pu{hJd@k_;od(fh{I@@HOj{mEGK)XPQRuc>SfbTJ^WS6yA*>H7E7;KiV`DgjDG zdU_noZ6Vy1dXFyq+kvjhAorh1$eb_GQnAr?2MmLRmZ!44{YgMfR`5>h{?rREptY$< zR%ioZxv#!Y&hNf{OXk3#V@ugm38hf)D!**^-D53Lf)cG?aM9-#C(sQNY&%1>9S>e!3g3oTIF;hcnd9mA_Ad(%3TfMyAlcvGOCL z$cz>gBk=Ch-j4MT)3?dV^eUX)e|qTvGU(jd1LR4^&jc>si@zF|dPeuM@crlH?iHo^ zWLl**&|Vw64jDfI1(*KD#GYLH=QoNZ&+AZY_9WAg2W_z z-=Tjn_p?lKLzT2s4ZcJo!_!SZBpH}5C-SXZ%Vpm6dY`#YdSUGj^>M)=qnj_4xlaj4KJo}Sr%qRXgtJ`TV!@ICUGZ?H9M4vw|xZ~>% z3R(6cTsMPRJ63Ir=Ck>_nX6J$QH*4XDS=z ziyB>h(90Bp}OeYxRI49k@EHYqx&RXarU$blCT_G}#w%P6LOWm9o228 zew=NLIgydZ_4*=ABdDT_q@)rDfLIqE1F$dNc@#DOKVN9})7^aUIqG<2+x9 zr4h(=_7~#A9HAl7>#j?2mY3hrKDioJkKfsFmS<>NYgZR^M;N%XOY{+Irc~8h67}_s zYOdAiRHWhY|jeG9GUtL{YzTSTE5_B}zA*bOf1a_C9)FGqkKr>jL4J)mmyP z#7{EAnT}ua45CAv98HnfLome;oU!LPu-v`xDPxR*o}vM+29=l;W5Mg;2U8p)d+&y{ zaskR&gbIK`xzTmu1$HrP<>K0Q`<@y>PZ8W6Fqt`SVAn49Z?s4F7%;ONYnD0L%Tdr% zIf+8RC6bsC9onj;OnO(i`dHw|QlRVx!{9fF4Kn-{7x7tLv`6)l@R5Bzipgu+3}*a)WZu1#Fa7xy)GDWC5^)tNRU^rW8~rDg5*$v7 zTu6j;7|H$BnKfnIz$tj>x8=BVOu00gJFE$AJ z+L00huhE? zfT96g8QSh8g#_QclL~eF$SBK!n326r!LccBPb&C&IrQcAdx(00K={M2z`_X@jb`J4 zkg%fiZi@F=T#n~fAo=|6K)w{_qEeJn3x%X3v>FXO1F=AAhtJ=fExp=l?K&VYGD(#| z!gS%b4AKvVCw5`nOEn2gf*9xjq3J8YqH5l^X+%Jz8UE9 z5a~`Aq#Nl5>CUAV*xm2&{{G)y*Y2J@dunE$nR({Ep9t8m{fozyPQRG5Cq>0;pqWnB zWcztZ-IJtNTVcVX9Hi`toF{IhI+X_R_gUYmF4u)D9Fk7oh(>EYwtDO`Db7dv2%V1} z+Nh?_OZwj!#pdM+{(oBll+gZ!J4&JR`OX(>M|omC&dFDf3pJrOxgvsFN?s>JJxuMn z0Se!~e@hV>cO~U3+VO4&CWVXvgTymV)SF9K=MSOCyG}4Hb1;l=+_e(aOj9}?I&vcS zv8ZKLwT_qX!pfSju!5?3KAc^tWz|Gtv6-!+tag_VzI8bT24jhvebFPLFf z%!s(IEn2cg5-sD8Z6&Px{Q3f3l^Wy)7LsKjNIM=Xi9_c1xj))^Cmpa~^D2dvzFs|) z8q?rm7P>~nQ@{K>hSdVeYi#J+a`}eb!b)p^h|gk4aev=&v5k-M((1B{K=wFRo4emw z@w)^^tvDb2gi@M$qINZ%m0aHPo)Fi_XW-4gQ*ceE_ys0F-SUo0A_9=Wk2_qDztVWf zuB*aHWI-Lrbt9iHhnSID5by`Z+03sV0}~$%%=arGdzWh^+b(d8B2snrnrPizK9fA( z$9MA)4V)a?@b;vWU#smIn@K5MlF3VnCX9Q(diW7c>w{6~FVy`_<;|b*UeZ>*-&+B%h6CB%q+KIH!i~*0BM8gkO6p+!i9v{2XLHl1>xJ`X730Z?kk@+0D0Nv|% z+abKzLJe`r*eg}w%xCH%0Tng{=*ATx&aGK_n#1n_$SXJDBZt;w5{<6M={yaM&Go?u zRJ{W= zQ#7F{(p|s8Q=aMjImK%=d5Ul*5u?^cC^S?rL?&>ROlFZMEelnVmgf4s0Tz@U@cW~c zPh0WI>D;05ltOh@BP4*c)cDoGw213JB%c*G%#lO3LU-cG zePue>FBd=rRmB7KHy23fuMvS~9aTlFnp=a_F=`KW9|mg@v98Q9fBO7LbP zBJ^qJb+L}vK_vm@I zib=N!FwQq!g2P3y>pYfY(zfbf0fsQU7dnf6lf31Z3Pu-WR+lccK_5DINb!h)giN#% zfC>JMrInS2kx>|fA`ljiZjz3b_Lo*=FWW z%0(;no#-sX=`UWA7}dVQ6-gMRztr2%7P_4E82zV8%|7IGK0p~A&}0GYl}s$uXGfxSB^zJ3{;ftu{4F6MLTOF2 znb8Mtl5@EAliQqkgJ=pnI#>r%3b8u3spFT|n{9hP6lHe`3(Tm> zb&TZz2Vr2*QlV#Nxh;6S#*mRnF5vgxyx;IKEcnrI8IU3KE?(KJV}Y`87;-0m|*`+yv;bi@psRP zh8*`cp*loY?93{H+lLO*0s$V{*4xp_IxJqT>HT08y=IyfG_sRGT)}5mTeYlbiDZ6W5S>4ql1U{4wiz&!5ib=j&EOs<)PbIcgLkBE!$G^27jr+?r_TT3i8#zsnCRE0 zhmD+B!r^STt=#&L{(cGcW}K2UIs6#}C3;azV`d*XUJ+bci364=Yl7B|U$kuOcu7~m zkC*z!G`Ii4v)X3-^{r0VY=ka$I!oj~A1kNDkJUy4yygJ^|9GEd_lr6a(GsKg>u5)| zREk~s(%oTsww9`Hf18Z^gbWVoK)bbp#N6C6*lpFzyo?om;>636zDXBG|E5tlwZMGxfpbhyRIUx%(yj6vNusDO zDQ7K@k00xLB53>jchS0Nel^sRn-u#E@&Culn!PiNqHCi}23FqWG*2#EfTPqFng6q? ze(O)>fWOrLUSqF3q+Yxa3X)2=dyJqG6L9%I9+x58mAqy`Z4m#5?_z-cu#7!rR_g{d zen7?mo+PgmgEv<#JI+xIa}`Izd;2)U<97Ogr0-C+I*Rpou8(vuh?z%9h8ol-7-^SV`GND zM=~%pEUT*8?b`TPlbn->xb)T#w&yP>k*hKa8mkc%dMYMRs8f;G_Fc+Q3XtZf8MA@a zJgQfGe1zQFBYThy2o#BhgTu-a?4mcD0NZcN`f(4-Qx~?!Nqk#pua}eczdBI4rMe}r z0nY@CcKqc)KxPU5uYQPbJL^)KiaIuE%$hGX@h5o`zL&Q z><)MzktJ@25(w zYuwakHLy=rkg+ksiAYK7J@&>UA^@Tkc-)_5Wd&_*nNw3!X1b)-9~N?(=TKdH5Dze7@@Kk; zcl&SrgYGj-V5;nyd@9NrqTgAyN||IVxkZ56;=BkP4l(v!Op{g1sG>iibOa0dG$8rq zKzRZA=-}ov{`wZj&IGkb5EVm?=y{tQTd=#Fn}X*2;U<}sUS)Q3Nr;x@H`%YrL3YEy0qy}Vo!DQ3Tb ztUpEbDAv#Cp4im6ep*9VAwLyEMRiX?4$rcBx^xmSBMrm_tloBsZ`MOpEtEcToH$iF zuGb*{F3X+B34DQYyAYZR0*m)ywmje+oatK+NV;u;F0Nx`wY0PnAM!o{BK&~xtaUx84rGPtg`p*nydlM3`KG5PVyV%isjn;3G*htQ-XEQH|h>4NEeouPu z;QvIB#yBC-(#D-1d!3=y6ll8sNzA&x7Wwr$G6Ql)Ym7uCe$G3NqZ7W z2`Lh~Y;bz;9{!*-G&Z)=oG6hayhc=Co!zWgtl6yt-aD z1M`1>*tJcMeAqLM5uJFn-qUN`%JH>C%RdWwZI?SjiBN< zL|n#jnDvAJ(NC43!=rEZy@L%MPzj}*&w-U-^fqSJb0{x)#u*_Hp+<4}S9$r+=qLjp zUrPIFM{J}LCzVcT7hd3&GIGs*e7v&3Csn$wbJ$T8fd#W_zUvGb*z*)>C$^Wnsq5?~ z4Zu?y-tE4}1?#0w!oN!Io}AgZ*{{0V`j>+`Tx+((By*YFpBMeh8=>xGCBK@Ngd`_* z8y_+`0DfgcxkCFFwBvU>Y>`A$3iL^ah9o|u>))!MlG5u}=As?$-fd3hw2Ffl8d%NB z2x^`hV>FkqH1@dSaVXw=tNpA*d|B|@#Q-ts=e=CRaDb{GXkO{sy%l<;KG!VPh_E_)9H7mI=gQ2W>u(vg*P1Ncyd?01@@ zW_{*kl=IMV@=I|RdjE1DNz<7g=$ZWV=;YEGyg6AOsK}_l+qjmrob*+S?&G?YUKiGi z8@;&L3l2u=LO3hHkNN@ow$?>E@-J@<0?H$Px7!hxjrUS>fIoJBf!{PohEuPBL5u8}Z{^UnjGrtge=#3yyM{j+1!fDpO)ns(dgh=dPR1)Z%nFu_6H|^HlVu%Ar$Tds| zkE}R9Um%>QPI4Ys@2zmAX+MjW+-}{=+k1qJqngfF86#!4wjJ33HUSg%6r?O4HYsr4 zk03VipeA@d-fY3{7MlqFtsEbB-^ZJhyXy*?Q^{xi9LCSPBCrSv_AnW66KUc@dxN(y zwtkZddGq_<1SNkOZxjlw1xX&I>;~#QZu-yj+RNaN=mucx^F!w5V2TqTzir^VbiyP= z^cPuF|MI`rvS7QuRx$FLB@P)+$0F9ISsCbQe%qZ5VaB_=J!RYDAbF7%i~4Yj7ZZ@Z zf03x0JEGpZ7{tu@!|HdCvWgcm;#u#VAh*|{wu%2n=veX|W zmkQAQd?^KY4j-uO8`r)sY@p3sB~vK4V?n$;Iorn+ZujMr!!w4_Okb9<5ef4G2r8Z= zBL`xaH)+G0&#J%UeIkhGXgZnIEI0SX2aCra$bpmgogLnM?AfAd7Z%LFIRt{=s%_UG zuY}VEL$)xB0Si_l<rW(V>d_Re!^R6)kKLLyJzHy;7i&QkR*2gueQuO z)gIX2*W^el?cO|I!$i6MaNiQu3=}c})7I7AMa!YEjONN^?~|pzRmoNjv~ie((8Tyz zatvxZfOR$R)neW4P5s~(5J<|(!Y72G1iJy-v)q z@>wJeKOr#?D{3N98>f&9Ill$LrgT|G(q%M!nYdPNtB~%xzkA%n+M79Yq2zB=ukHrK z1ZF?Nf{txe#qhW-{7P+7GO5jiFghnsI z=4^DU=;s*%k-a)bErr7HGQky#C;wTL(wFaV@;3uxeH@Uh=O`2X3Un9^8ex6~FyF?x zdYYf=#2ifu_@9kXP~2%>Z`1h*F0M|TB`!`_de>)J`q&7eNlXmTCuYD#ZFU9f#o8gm z53t+`_Lu@J|HtFWLYrpKHRHCZ!pjd52&ie+62!z`z8#jZ9)s(U8lzBTy0O2vqc-y< zwkam+@;BWSi=Oa3>5L!K@9*Y>M_P{m+o94r!atlynlXMPQ>;p!~h276imvQ)msT-9VFJ&Nw&h4 z@`JLe;bD{cASt`+v6@7d2t8INcpV%lLji0^;)CP)pOeH$d^djG&7#L}KTgMthltWuB<(ugE?6V$_M6>FTjFR~B?X7}KRl5(R)Uy}Il}zPoq&H`CXWQ7b zpF*7l{cLRb7=+R|vINNo5aqQ4U-XJM6Fgx(ISPj@NY;}4x~RR~k=R2Y8e=zlqCHmJ z1}=_Af*rit&B(cRwNMj;%Lx?!U}=X7+@$|8m*J(h2Qx^5wF;>HfoiNi39FYE5I{s= zk;=?RhzH%+@|Z1rJ?Dh)Cq}md(i|ynsZe~+`+QF0e;enTQ$-NZ4o;`V6e1Ky^9C}S}xIf_hXLURI0@n4t>zS%)|0jJo+#+K?yCh zSBdpfMeM|w!ygkf#P(j~23QKx09y3DT&5AHyL;UrwI2>rd;+O(&27|Y%|s+=cMnA+ zB?|>-&L5aBYJz$&s^ZN)aDEM9r&p)0tggxZimO*t|3aZ3e{bEI1Mc%Wb8I2B0sLq- zc`t3wJ>zwzZ9AYm@lui1*p=j?7VL#`3%@AS@kPCS>}0rK^tT%P?BwAB+IrvC#Zg{75F;0d+%w0OO^ ztI~cwJ}wwl_LX(;-4R9+g?J?Cu8v68QV$jgH&0%7;xIjFcmd`hb5AvP%HyoH4 zPvWIhZ7?{fQ3}~nI%$9KlDCUb{cca16>N}TSYKQEi|3!8uCYK$clY(x@HhhyWv_j8 z{7?8tqBE|&#`!&u>yM<|7IU8O&Z~8&Sz!(Z3(d{BFygSXiKal(Vo5_mCwqKklsm&; z#zy2n#NIDYC4Tp2zmjYn;=K7Lz3%*X?kan)LULD4^TZtQFR85qgDqdF*ZLh;yyU5Ukj~93(N*th<#Hnk@U*>g~+NM{hV-z0<8Mu%|se>|IIRaY0-^}nKX?Wb@QJ( zha)U{EOrWP*YPZR&z`=YhRv)?ds_`*wreY*3a+thd?Ay-+E3tqYFD!7`Vh;iz_3(n zHg$$UWy2l;h3RcIhZ5B~VEnT%p{P1;saD3?DDw7I~5*WI}@}W6I;yfwIav8i*N28=n?oE z#dJTQdYxvdnI-sa5JF|iITE%trCN8Kw#Ng37wc>$ za`P!FbF?N(m--sl+FvTI(D0r#>6GRbFZJPcIsqQwQN$%@W-Rwer6s+MO~S9-C8PWY z98-2b%!O9!*Y}qO%gEkMMW9oBp`+MU%B%!DK~r*a#=gFm{#jLJ4dj)Gmbn@kO+4FY zVz)9S&Hg^C%@wibzu1Q-O^*nzx!h!41j7ej%&r3=`i<*R=PP=pB=MI5m!0_m34XpR zs@iEU{Xok}iwh&TLZ&CJzSBtAqF()U-B-A|oq}6L%&zGL`ej_>W`W&9JoHHq?!}*o z!4n=@V@}2Ca4julgk;tJrEk>-G(rjj5+J8Q+@6sh4R4A_Xyw~E=lUK|(&l(@b^hJE zKF7D{+b>E)MpHsOFit$~RNGQKL#9Ea)1c>=jARo}0!5mEkKNo_vaY1;RHn@(aC$Z> z*5@A#8|D+&B`p@YD{Xv(DEY(Kk3SLYP=k*2cG z(@O5_ zCq4}cCK<1d%Kj~3WBF@td>?GG1K%Of89j#9t4dZ%UqddLn;gU@r#kcJ_{!+7l`xvP z&6w_C1TZE}pK$?V2b3kjFzJNXF|!UiY=iEf?|$s+_+0(7p%&yPm& z@4fWao&dym2iC_Sfq29!-A64q@hrQ8gAm=XfBBkjzjw^cB5dWmdahiG@jXqA+PCiu>PO@ql=Fn}QK=X$ce()@Bp`GT}L6 ziknLK2hf3!b)f9A$c8SVY#24hwa6C>j2Bi@tXd-Q-pSX2r_2eWIvsxA7&pQS3NOF4 z6AaQMDQQ;!;s5Ad>ONw9KXFfI31OuDU~FvcM3j5B)XK+%pHDA~NXa_hoOu-fGJKs` z{cgH(nbOx=_MC#vE+DM-X&^fgg|g(+xs2)NA1vL=@^VHjxK460-OzC>!ARca$KTGcU`P1b_Sgs6}@wf165>ovA z+~eFltza~`tE6dcJeL1H{BOr(o?b>Cy<)Ihs|2+G`_sr;6t!re{BU#OdQC3yP1{ee z#!`sSxO8ZdwV%2 zG?>R!N84g?(!(LhIH&80m0~`q4K3vxu7aRy6TVhyt{|Wh*&siJwab3}G9M{X5k9_o z!73q1a8<<9Vy|!?Z5r`riAqzzG=Dx1Dd6_^S%`gfJ@jyYFnmh)emH>j#m7e`)4TwhD@jSj^X?bD< z;4Bo%#%=;UJWiRC@eu|W8hO^OSj~wom&ASg(?Wdw9K$omo}r_A5S}RJCdqltVPHNL2pCO;JPHA=$Lpk zXio{DIuKByLm6EbBI+-T0hQ?RBO5T28X2Q|^ot*Ac@hDTvtUEG*itI=i}rf9PPVwe zAd*Q6Z+Ab)}NuHu+vED|K%#qf>uv7fOg4fuF zgor2r<6n-@QYEh$AKX0&$(7+AM<=BGkJab{7i3`eUw6{}zrGBY=ngfH)0XwR{k3p4 zae_K{d3|+*GC~MF7+W84QeUc9A{hwRMZOM{5JxBgC7nsn-N zRml=W<_6MO-TMVA0G+Fl-fkq|J;cSn=BIY?y^}1MZuT}d;y3mq8auk`^_iIa_Mn!0 z0+q-g$!?Hh@lx;D*%oUfN0Fsj z7Hfa3F6}xs4LqIqrw4CZeeMyi>$oV@|Mj)R^bK9}flDvS(jI47nfCllga4LJ-F9^R zQtuW-#>=bG3=BjqR8Ustzklk%aWsPJ6)QEyvVVYqW7IAYnk=(LyKqxNT{)EpG!i;G z`cyzD4U9rfiN0xuGLpbY;x2+j)eJ0RY-=*__-`~&xg0}9O)hNcok8nj$mrdOtQ1AH z7@R_nOK(O=t{uf~t=9v2^>d?j_wI^Y=hyzDp;iRx6j(@5kbst!)^+h)nO6Ksvvs#g zPT&vV-yh7hxKl@2A(huE&dHm{$Z0BB?sc`WIpu|A8#Vl?PcTR*W|$ZD=jjusKQwy5 z-3@mAH)BlfwvXro`}Fhao)5#vwwvn6WIO>1H)rFsNyirC*mxxj?-) zS$$Nu;cD3dOxLHa+vo}OO%O0DW`C%MKJV8&6GiZqaxGiLp^&kOT$jo6$?pQXNno;1 zj_oD6t2IA*G4wuYz$Ecc^{0cKQjeoE+JAVr z>*KVvP_0;}RoCg!uj{BD!?i&5Ms4t>i0#nPw0~T`@e*3;QsU|`9Zfr4*sNF0zc!RE zp_*ucS`)PUlonL5n;!C548BBq`enPw%NvEmvx}S;6tmjS*V|4V{6Z1+W`CLsFQ*fBwqo{^4+Ks zp|uGYeLXXCTrVX$y(!Ts73|kybK(zd60!#gvn75B1SBv1;ByjvU}_d9&kZuB?YKx# zledy8^4wd2qQ;aRnExon9rG9JeYisYs}&|H*4>eByhNr%O-iE>r_5^ZYuHg+m!TeD zp?RG0%9SUm1|=}KhXiY_od)|i7q&|5b5u_}Xq6H2U*yT4?}0$6_W47ctP+LPCP4+=nyz$kJ`#s)1 z?tb6Bm`~SsnZ;tAuUc#v%(U-ecVAb|TCK+sz^XAzLB8}8Zv~@|F!qy55AT^04pY#z z|JEB~NS=uUF+**CW0$BP&!M7m{1YNw33o0*@(wPyX||eC;x$`pAdyq1sD8H$eVho! zIFE_&dV`8l8C+stND=vdC-4p)D&q=|lVvYRYNd{a5fY7hDRrrW0#@ykEF z3Ne|SI7FR|%}-g8m>Pi7m9w|%+~CBrWa~IhThEisDj%cFY;Ebuqnyrf1jqo3kw*WZ zMypfRI)$~xHxbikiL0V1K&i}NZ6Du47N|;cg;SHM4dWWNCj9YSwe#46*8D^6nS|z7 zT~Xh4T`z?Pe^IAkvirI1pg0D;Sw%nW%*{}>>3a8H;V6Or?zI=LW{X}@K;7XZ5mvon zuY1Uo9LO!Z9`O8l*+1GM->J7waMS_ZO_M6MHY6N;Vv{W{mB`QNt@v**xw4-(!#cZD zCoPG|A*F0isVO7gm>aS)QOK1>Su*4}`sU5AC&A`6LjpSe6n%X={`(`ze4p5BY~2d% z194y~?4xW9+ZaeNzpDk0i~{g9m)$>8Wo?qvx82iEkzjhZbt zte8J5PSI=k^NQVp<8$-nOofF0C#!8#in~hYf^X10PD$MN(a(O~YVeta-V}(V-|R{~ z&Nbo3!cy;Wb0(`o^+DOtCU4ltbe}Kb#7;-d-X+i?Ph-39_Sk^JadKC=P)GL)SMKIG z#CdNh@hZ&6u4b+pbXH#p^yMuD&%fe7#3a)kt)9j_*sXtj0SnOM-C{4gXaWxLoyMte zV*v{hUaLdxB9n4pE}+R+9U8O+6V}RG`*@!&*buF|EOtas5v)HW)_6WEiNx-!VaKDlX z#0UR}V^(uuB9*I5E4E&jpw-%;g(iG)>#R%cKUJrU@ zX@GC~&_sPTc>JR4@MG3p53Kni{f&oV;^=9GN#jt9Qe8vw=)Nw14!Ayq4pRL!vUy4Z zAgfqALCY^+UyPNqJ3_U?TWv8X}1UXHm8N2#jR$R&^@iRIOHA z#7X#i(dT?7gECs-I|ovkEc!jfaqm#8 zF(~628~4*PM0{4bg2W&cK!XkdngIE5Rr3djNiM#pmNOE!AYl}1s`*#mg<2H_q%h** zbIB8z9TX#notef(yqo0O?`2isdqZ8O&O-P8g&XQ${N2)`YrK!6i42#NjCidgktd?&GGK=)#8f@ezqHjEECOUjGB&S9juUY6azMy@TV^^OUM!3oB zioHU8J!WK>NS9ou@Haa4tMrF=cZsi2aQNouiatMGBl_EUq5(1ojXc8xn*ZA*eh+ve z-E$xhnP=3qbQ#%hK#3Gir#1LJFE*;eKBgvr)GSA)QA09WJvu{#tgfj=d3n*m`!+H| zahDVxd7HGK1#~Zsnvh8VEct<-f)@J;y}L8dkLzM*XHEJ1!Nc|Kn_W!&?-eXUsr5mkF|e=(4e&^hG!=q8A9 z6}Q)qcY7r8rgNXkKI?5q&0{{}J?i)Y6OyCiSQcbPC@;B*A^z%7IH*Nyp4QXOXQPbt z_^x<`09It)fKeIczo{cT9UmiAQbJudgg<@bT0z$C82Oaw$!VDWtcVeWz! zNiEz$gfymD|9+JpYLO_kgq?;k9R*z&;31jVJ-!GbzvwhAxQi)o0u$B3aV@6%zIr&L zgwY0{miPwTXr)}-j}~p+1(lkPH~+vt!V@mdYVkeBtvr;ZMKDz{jz!Jz@DSI6b1SRm zt>3*90@b^3Lxq-#JEzivInJIVQFQ*D_;aUa^Gb&c$i$SC7o2FE&YCPYc6o>?0cUIL z>}QLmh@a5S=~Kw&|(H7_m`i7cn726QZqbj4W^wv`8Poj7<#+3FIEt zd$mQ38`!rYi;e0%j78r!k1(u6_g~c~0~8}NaX)@G-9yrZ$s&2kRF;#x!tM_|;@j4# zaL&#&Db81U0sqLKLm4D;WweHy{BKVsVD)u%06w}qFSIsUb?bU3f`>h6Oxw|$H1*ax zw%ps|uNM`ouQ0`&#`Sf5Huo=U|<-~M}1 z7q#YMn303mG(W|4*8BMi(|F1FuYB;j)9>Us?+N&Q{(X~);=+yK>T|ZoWNW}B*r#g($xC;V_Z4*|*R9zcZhiV~cSpW}&2R{-L6Iyz zxWq2%AQ``A{If>7+QV4d_L~2dm>`O5S2A_D{@{BO6fe$CogHgaLW9Pjp^86|Ca~R` zIXctr-AV1%=)C4Y(hKm+bG%F;l(}WkM}LEukn0|~jODT5+ZmY(&_Pv!YwG+l5ZfM* z$utTGGQFvaq<(T(h12C<*FqZPBYRPJln$LKtp51hOp9Jefv9<)+V6k6&TG&9@&Fy0 z=M&oK9QF#P@v#A^FWQu`@lb{P8B{3W*JETvWe*hcOmF%yGPU>>+tDhK_iW<&S|{`l zdn8Q0>k{Kn?j_SMSJ{5Hq)yIDJK?!frWlknTRBENiOF3*os7hUxwHqnCIFCxPxN3+4NuOA;F6FHpd@3%o(Nz)VSt0rW}ZN` zAt{f)v17mj!}4LH`0O{~v}Rymk~B6d2DmR@J`<|RLiB~6I+zc?0#w7(!mFj#Ykn1M zz+{HK_=)P^{tJD02nH|{0&wHG0R79AuMP7JEP;_y^5noG@Cm32mZppOejq$`O&pB} zwAKH>%HDKU7`OA&0l>w_KmQMy1h#qP{&yO%mu%Yn)!aKH-^m$o$#0h~XTfF9@d2Fh z=@f$kV+@>pU2j1oa`FRhZ7N3|biH~%70(;Z|DGdqle=&g11BtttNsa_dpbv$D%}kV zJsC&J^xdh%TOP%Tvh4Z>)uf6s@;CUkP%kF&ua0Xj&7t(g8Ob^JQZtAiaRy3~q}6h> z;o5p1NBpJdD|uQTm-X0Go=R4B_R8rskQe^x%7q++bFB2H8LWaEo}#R8 z-gE;YMNU)_MNi6V$v;iVM13AAEz#0pVg?>R95&4O4XK!Id+g% zJV1C=;v65Tu$YeT%eiiN7`ea~Cd!E-I`~zD*#pQB) zBWjGszV?wLAKR<(d&>$gzu>Ia`HazK3ITHObtghvJNTKH0myw?YedHPBP!DB6oKz) z!o?wqDbG}ZQ+#kXTP`(i&BQtr%|ONk=cS$4wAgA*5c$Nqk6Njq8NdqH8E@Q1L_~xf zi9cMf(}|t}nhxP$0J0I!k%?6|(U+cd^+Hg=)tM)LO$igT%C&cs^Xi8p!{CL32D@pb zPZxc@3@r{a{PY^smBCNX;C)M^Dq6+$Fmj}zl(0ui-+uY0@VEK&sr#G@*A^|Fny4ce z8f5yoaACUccPZ|8mAj$eiof>&1WqZKkXO(-J}jDe;E~6ZD(R`3%#+vn@D@pqvQhhHqL-&gkXDeDrm2tZ!;HWVt*e&p$y3%ELKU+B|Rpe_CrWItm ziEiC0ye?is^5l((W2gV~zN9#j`yB)xZOHTi|9zv-^IeOsB?{+4@m;pRf?s0s&Ub=! z3@>|TDh-7)508L2fB^jUEW~7$ZxN)^eLX(`#JYlF*E>5wLBBqF7QbAa0{hM%P8PgMGjoiX*ANehGK=L!S|BdEWMO4+rePnsv

f$a@oBauo30%;4s{rcCh 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

eU_YrD2A3>i&V)X5$9N_&i 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 LreCG&6#c&dI{*>` literal 80003 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⊤;YSP$7wR-o4)${m) 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 b%)d&Gs<5A=6$s=Y1Y&y5(zwjfDfIsUcuFgo delta 21207 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