From a93adb271031ed098502e98e5a91790d2abe863f Mon Sep 17 00:00:00 2001 From: HarpyEagle Date: Mon, 13 Jul 2015 11:27:15 -0400 Subject: [PATCH 01/10] Fixes #9868 --- code/modules/mob/living/carbon/human/life.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index fed5b3dba46..855231bb411 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -581,7 +581,7 @@ // Enough to make us sleep as well if(SA_pp > SA_sleep_min) - sleeping = min(sleeping+2, 10) + Sleeping(5) // There is sleeping gas in their lungs, but only a little, so give them a bit of a warning else if(SA_pp > 0.15) From 4108aef1bdc47897a812c0e0c3d4fb1b0f2929a1 Mon Sep 17 00:00:00 2001 From: PsiOmegaDelta Date: Wed, 15 Jul 2015 10:23:41 +0200 Subject: [PATCH 02/10] Adds emergency shutters. Fixes #10185 Adds the following: * Research department access. * Mental Health Office. * Operating theater supply storages. * Vacant office. * Engineering supplies and bathroom. * Waste Disposal. --- maps/exodus-1.dmm | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/maps/exodus-1.dmm b/maps/exodus-1.dmm index e4c5c38bb30..b1752a37c80 100644 --- a/maps/exodus-1.dmm +++ b/maps/exodus-1.dmm @@ -1307,7 +1307,7 @@ "azg" = (/obj/machinery/door/airlock/maintenance{req_access = list(12)},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/secondary/entry/fore) "azh" = (/obj/machinery/light_switch{pixel_y = -25},/obj/structure/undies_wardrobe,/turf/simulated/floor{icon_state = "neutral"},/area/crew_quarters/sleep) "azi" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor,/area/crew_quarters/fitness) -"azj" = (/obj/structure/grille,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor/plating,/area/crew_quarters/fitness) +"azj" = (/obj/structure/grille,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/crew_quarters/fitness) "azk" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "solar_tool_outer"; locked = 1; name = "Engineering External Access"; req_access = list(11,13)},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/auxsolarport) "azl" = (/obj/item/weapon/stool{pixel_y = 8},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) "azm" = (/obj/item/weapon/stool{pixel_y = 8},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor/plating,/area/maintenance/auxsolarport) @@ -1359,7 +1359,7 @@ "aAg" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/carpet{tag = "icon-carpet3-0"; icon_state = "carpet3-0"},/area/crew_quarters/sleep/bedrooms) "aAh" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/sleep/bedrooms) "aAi" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/dormitory) -"aAj" = (/obj/structure/grille,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/plating,/area/crew_quarters/fitness) +"aAj" = (/obj/structure/grille,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/crew_quarters/fitness) "aAk" = (/obj/machinery/computer/HolodeckControl,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/crew_quarters/fitness) "aAl" = (/obj/machinery/light,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -27},/turf/simulated/floor{icon_state = "neutral"},/area/crew_quarters/sleep) "aAm" = (/turf/simulated/floor{icon_state = "neutral"},/area/crew_quarters/sleep) @@ -1925,7 +1925,7 @@ "aLa" = (/obj/structure/sink/kitchen{pixel_y = 28},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "aLb" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "aLc" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/maintenance{name = "Kitchen Cold Room Maintenance"; req_access = list(28)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/maintenance/bar) -"aLd" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/maintenance{name = "Bar\\Library Maintenance"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/library) +"aLd" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/maintenance{name = "Bar\\Library Maintenance"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/bar) "aLe" = (/obj/structure/bed/chair/office/dark,/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/machinery/camera/network/civilian_east{c_tag = "Library North"},/turf/simulated/floor/wood,/area/library) "aLf" = (/turf/simulated/wall,/area/hydroponics) "aLg" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=2"; freq = 1400; location = "Hydroponics"},/obj/structure/plasticflaps{opacity = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/hydroponics) @@ -2549,7 +2549,7 @@ "aXa" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/grille,/turf/simulated/floor/plating,/area/chapel/main) "aXb" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/blast/shutters{dir = 1; id = "office_shutter"; layer = 3.1; name = "Office Shutters"},/turf/simulated/floor/plating,/area/hallway/secondary/entry/starboard) "aXc" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/blast/shutters{dir = 1; id = "office_shutter"; layer = 3.1; name = "Office Shutters"},/turf/simulated/floor/plating,/area/hallway/secondary/entry/starboard) -"aXd" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Vacant Office"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/hallway/secondary/entry/starboard) +"aXd" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Vacant Office"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/security/vacantoffice) "aXe" = (/turf/simulated/floor/plating,/area/maintenance/locker) "aXf" = (/obj/effect/decal/cleanable/generic,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plating,/area/maintenance/locker) "aXg" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/closet/wardrobe/white,/turf/simulated/floor,/area/crew_quarters/locker) @@ -3129,7 +3129,7 @@ "bii" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/storage) "bij" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/storage) "bik" = (/obj/machinery/conveyor_switch/oneway{id = "packageSort1"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/quartermaster/office) -"bil" = (/obj/machinery/door/airlock/maintenance{req_access = list(12)},/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/hallway/secondary/entry/aft) +"bil" = (/obj/machinery/door/airlock/maintenance{req_access = list(12)},/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/hallway/secondary/entry/aft) "bim" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = -32; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor,/area/hallway/primary/central_one) "bin" = (/obj/structure/closet/coffin,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "chapel"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) "bio" = (/obj/item/weapon/hand_labeler,/obj/item/device/assembly/timer,/obj/item/device/eftpos{eftpos_name = "Bridge EFTPOS scanner"},/obj/structure/table/woodentable,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/wood,/area/bridge/meeting_room) @@ -3533,7 +3533,7 @@ "bpW" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/locker) "bpX" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/decal/cleanable/dirt,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/locker) "bpY" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/locker) -"bpZ" = (/obj/machinery/door/airlock/research{id_tag = "researchdoor"; name = "Research Division Access"; req_access = list(47)},/turf/simulated/floor{icon_state = "white"},/area/hallway/primary/starboard) +"bpZ" = (/obj/machinery/door/airlock/research{id_tag = "researchdoor"; name = "Research Division Access"; req_access = list(47)},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "white"},/area/hallway/primary/starboard) "bqa" = (/obj/structure/table/standard{name = "plastic table frame"},/obj/item/stack/material/glass{amount = 50; pixel_x = 3; pixel_y = 3},/obj/item/stack/material/steel{amount = 50},/obj/item/clothing/glasses/welding,/turf/simulated/floor{dir = 1; icon_state = "whitepurple"},/area/rnd/lab) "bqb" = (/obj/structure/table/standard{name = "plastic table frame"},/turf/simulated/floor{dir = 1; icon_state = "whitepurple"},/area/rnd/lab) "bqc" = (/obj/effect/landmark/start{name = "Scientist"},/obj/item/weapon/stool/padded,/turf/simulated/floor{dir = 1; icon_state = "whitepurple"},/area/rnd/lab) @@ -3566,7 +3566,7 @@ "bqD" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/wood,/area/crew_quarters/captain) "bqE" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/wood,/area/crew_quarters/captain) "bqF" = (/obj/machinery/light{dir = 8},/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central_two) -"bqG" = (/obj/machinery/door/airlock/maintenance{name = "Disposal Access"; req_access = list(12)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/sign/nosmoking_1{pixel_y = 32},/turf/simulated/floor/plating,/area/maintenance/disposal) +"bqG" = (/obj/machinery/door/airlock/maintenance{name = "Disposal Access"; req_access = list(12)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/sign/nosmoking_1{pixel_y = 32},/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/maintenance/disposal) "bqH" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/locker) "bqI" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "bqJ" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) @@ -5467,17 +5467,17 @@ "cbg" = (/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/structure/window/reinforced/polarized{dir = 1},/obj/structure/window/reinforced/polarized{dir = 8},/obj/structure/window/reinforced/polarized,/obj/structure/window/reinforced/polarized{dir = 4},/turf/simulated/floor/plating,/area/crew_quarters/heads/chief) "cbh" = (/obj/effect/decal/cleanable/spiderling_remains,/obj/machinery/atmospherics/valve,/turf/simulated/floor/plating,/area/maintenance/research_starboard) "cbi" = (/obj/structure/bed/chair/comfy/beige{dir = 4; icon_state = "comfychair_preview"; tag = "icon-comfychair (EAST)"},/obj/effect/landmark/start{name = "Station Engineer"},/turf/simulated/floor/carpet,/area/engineering/break_room) -"cbj" = (/obj/machinery/door/airlock/engineering{name = "Engineering Supplies"; req_one_access = list(11,24)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "yellowfull"; dir = 8},/area/engineering/break_room) +"cbj" = (/obj/machinery/door/airlock/engineering{name = "Engineering Supplies"; req_one_access = list(11,24)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "yellowfull"; dir = 8},/area/engineering/break_room) "cbk" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{name = "Medbay Diagnostics Maintenance Access"; req_access = list(5)},/turf/simulated/floor/plating,/area/medical/sleeper) "cbl" = (/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "eng_eva_sensor"; pixel_x = 0; pixel_y = 25},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "eng_eva_pump"},/turf/simulated/floor{dir = 9; icon_state = "floorgrimecaution"},/area/maintenance/atmos_control) "cbm" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{name = "Patient Ward"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay4) -"cbn" = (/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "psych"; name = "Mental Health Privacy Shutters"; opacity = 0},/obj/structure/window/reinforced/polarized,/obj/structure/window/reinforced/polarized{dir = 8},/obj/structure/window/reinforced/polarized{dir = 1},/turf/simulated/floor/plating,/area/medical/psych) +"cbn" = (/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "psych"; name = "Mental Health Privacy Shutters"; opacity = 0},/obj/structure/window/reinforced/polarized,/obj/structure/window/reinforced/polarized{dir = 8},/obj/structure/window/reinforced/polarized{dir = 1},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/medical/psych) "cbo" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/atmos_control) "cbp" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/atmos_control) "cbq" = (/turf/simulated/floor{dir = 8; icon_state = "yellowcorner"},/area/engineering/foyer) "cbr" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{id_tag = "mentaldoor"; name = "Mental Health"; req_access = list(64)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/psych) "cbs" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/crew_quarters/heads/chief) -"cbt" = (/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "psych"; name = "Mental Health Privacy Shutters"; opacity = 0},/obj/structure/window/reinforced/polarized,/obj/structure/window/reinforced/polarized{dir = 1},/obj/structure/window/reinforced/polarized{dir = 4},/turf/simulated/floor/plating,/area/medical/psych) +"cbt" = (/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "psych"; name = "Mental Health Privacy Shutters"; opacity = 0},/obj/structure/window/reinforced/polarized,/obj/structure/window/reinforced/polarized{dir = 1},/obj/structure/window/reinforced/polarized{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/medical/psych) "cbu" = (/obj/structure/table/reinforced,/obj/machinery/photocopier/faxmachine{department = "Chief Engineer's Office"},/turf/simulated/floor,/area/crew_quarters/heads/chief) "cbv" = (/obj/structure/table/reinforced,/obj/item/weapon/clipboard,/obj/item/clothing/glasses/meson{pixel_y = 4},/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/item/clothing/glasses/welding/superior,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/book/manual/supermatter_engine,/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/crew_quarters/heads/chief) "cbw" = (/obj/machinery/hologram/holopad,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/crew_quarters/heads/chief) @@ -6045,7 +6045,7 @@ "cmm" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/engineering/atmos) "cmn" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/reagent_dispensers/watertank,/obj/item/weapon/reagent_containers/glass/bucket,/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/rnd/xenobiology/xenoflora) "cmo" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) -"cmp" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/engineering{name = "Construction Area"; req_access = list(32)},/turf/simulated/floor/plating,/area/construction) +"cmp" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/engineering{name = "Construction Area"; req_access = list(32)},/turf/simulated/floor/plating,/area/construction) "cmq" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "cmr" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "cms" = (/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/item/weapon/storage/briefcase/inflatable{pixel_x = 3; pixel_y = 6},/obj/item/weapon/storage/briefcase/inflatable{pixel_y = 3},/obj/item/weapon/storage/briefcase/inflatable{pixel_x = -3; pixel_y = 0},/obj/structure/table/steel_reinforced,/turf/simulated/floor,/area/engineering/engine_eva) @@ -6402,9 +6402,9 @@ "ctf" = (/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/simulated/floor,/area/engineering/atmos) "ctg" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/engineering/atmos/monitoring) "cth" = (/obj/structure/disposalpipe/segment,/obj/machinery/pipedispenser/disposal,/obj/structure/window/reinforced,/turf/simulated/floor,/area/engineering/atmos) -"cti" = (/obj/machinery/door/airlock/medical{name = "Operating Theatre 1 Storage"; req_access = list(45)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/surgeryprep) +"cti" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "surgeryobs2"; name = "Operating Theatre Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/surgery2) "ctj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/engineering/atmos/monitoring) -"ctk" = (/obj/machinery/door/airlock/medical{name = "Operating Theatre 2 Storage"; req_access = list(45)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/surgeryprep) +"ctk" = (/obj/machinery/door/airlock/medical{name = "Operating Theatre 1 Storage"; req_access = list(45)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/surgeryprep) "ctl" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor,/area/engineering) "ctm" = (/obj/machinery/door/airlock/medical{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "virology_airlock_exterior"; locked = 1; name = "Virology Exterior Airlock"; req_access = list(39)},/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "virology_airlock_control"; name = "Virology Access Button"; pixel_x = -24; pixel_y = 0; req_access = list(39)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/purple,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "ctn" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/engineering/workshop) @@ -6436,7 +6436,7 @@ "ctN" = (/obj/item/roller,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "ctO" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/visible/blue,/obj/machinery/atmospherics/pipe/simple/visible/red{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor,/area/engineering/atmos) "ctP" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) -"ctQ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "surgeryobs2"; name = "Operating Theatre Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/surgeryprep) +"ctQ" = (/obj/machinery/door/airlock/medical{name = "Operating Theatre 2 Storage"; req_access = list(45)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/surgeryprep) "ctR" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology) "ctS" = (/obj/machinery/atmospherics/pipe/manifold/visible/red,/turf/simulated/floor,/area/engineering/atmos) "ctT" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/cyan,/obj/machinery/atmospherics/pipe/simple/visible/red{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor,/area/engineering/atmos) @@ -7487,8 +7487,8 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaBzatSaBAawHaBBaBCaBDaDcaBFaBBawHaBGaBHaBIaBJaBKaBLavHavHavHavHavHavHavHavHaDiaBPaAFazmaBRaBSaAFaBTaBUayCayCayCayCayCaBVaBWaBXazJaafaBYaBYaBYaBYaBYaBYaBYaafazJazOazPaBZaCaaCbaCcaBZazPazQaCdayLayLayLayLaDnaCfaCgaChaCfaDoaCjazTaCkarAaAdayPaClarEaJCasZaDtaAYaDxatCaxWavqatEaBjaBjaBjaBjaBjaCqaCraCsaBjatPatPatPatPaDyatPatPaAfaAkaAjatRatRatRatRatRatRatRatRatRatRaumaafaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaCvaEXaEYaDQaCvaaaaaaaaaaafaafaaaaaaaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazqaAxaCzaCAaCAaCAaCAaCBaAxazqaaaaBIaCCaxzaBLaCEaCEaCEaCEaCEaCEaCEavHaCFaCGaAFaDYaCIaAsaAFaCKaEcaCKaCKaCKaCKaCKaCKaCKaCKaCMaaaaBYaCNaCOaCPaCQaCRaBYaaaazJazOazPaBZaCSaCTaCUaBZazPazQanXayLaCVaCWaARaCXaCYaCZaDaaDbaEdayLayLayLarAaAdayPayQarEaAiasZaEfaEeawgatCaDgavqatEaDhaEgaDjaDkaBjaCqaDlaCsaBjaDmaEhaEvaDpaDqaGwaDsatPatPatPaAZatjatjatjatjaEzatjatjatjatjaBfaafaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaCvaCvaECaGyaCvaDCaDDaDEaDCaDCaDCaDCaDCaDCaDCaDFaDGaDGaDGaDHaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaaaaaaaaaaaaaDIaDJaDKaDJaDJaDLaDMaDJaDJaDKaDNaDOaBIaDPaEMaBLaDRaDSaDTaDUaDVaDWaCEavHaDXauQaAFaAFaESaDZaCMaEaaEbaEVaFhaFfaFqaFnaFyaEiaEjaCMaafaBYaEkaElaEmaEnaEoaBYaafazJazOazPaEpaEqaEraEsaEtazPazQaEuayLazSazTaFEaEwaCfaExaEyaATaFGaEAaEBaEBarAaAdayPayQarEaAiaCmaCmaCmaCmaCmaEHaEIatEaEJaEKaEKaELaFIaEKaENaEOaBjaEPaEQaERaFSaETaCnaDsaaaaafaafaafaaaaaaaafaafaafaafaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaaaaDCaBsaBqaDCaBtaCpaFZaFdaFdaFdaFdaFeaGfaFgaFgaFgaFgaFgaFgaFgaGkaFiaFjaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaDIaDNaDJaFkaGqaFlaFmaGraFoaFpaGxaFlaGHaFraFsaFtaDPayuaBLaFvayxaBMaCxaBMaBNaGPavHaFuaGVaFxaHcaFzaDfaHdaFJaFKaFLaFLaFLaDraFLaFLaFNaFOaCMaaaaBYaHIaElaFQaEnaFRaBYaaaazJazOazPaHJaFTaFUaFTaFVazPazQaFWayLayLayLayLaFXaCfaCgazTaCfaFYaHYazTaGaarAaGbaGcaGdarEaAiaDeaDvaDuaCoaDeaIcaDzaIhaGlaGmaBjaBjaBjaBjaBjaBjaGnaGoaGpaIkaDpaInaIlaDsaDsaDsaDsaDsaDsaDsaDsaDsaFaaFbaDsaDsaFaaGtaDsaDsaaaaaaaDCaDCaDCaDCaDCaEZaEWaFdaFcaFwaDCaDCaDCaDCaDCaGDaGEaGFaGFaGFaGFaGFaGFaGGaGGaIzaGGaGGaGGaGGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaFraGIaIDaGKaFlaFMaFlaFMaFlaFMaFlaFMaFlaGMaGNaGOaDPayuaBLaIIaFAaGRaGSaGTaGUaCEaFBaFDaFCaFCaFCbazaIKaFCaISaFLaFLaFLaFLaFLaFLaFLaFNaIVaCMaafaBYaHeaHfaHgaHhaHiaBYaafazJazOazPaHjaFPaFUaHlaHmazPaHnaHoayLaHpazTaARaHqaATaHrazTaCfaFYaHsazTaHtarAaHuaHvaHwarEaGuaIZaEUaGvaDwaJjaGzaGjatEaHCaHDaBjaHEaBjaHFaBjaHGaBjaHHaGpaJsaDpaJBaJwaHLaHMaHMaHNaHOaHKaHKaHKaHKaHKaHPaHKaHKaHKaHQaHVaDsaDsaDsaDCaGBaGAaGCaGCaGLaGJaDCaDCaJDaDCaIdaIeaIfaIgaGFaJEaGFaIiaIjaJHaKjbinaKlaIoaIpaIqaKpaIsbjFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIvaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaDIaDNaDJaFkaGqaFlaFmaGraFoaFpaGxaFlaGHaFraFsaFtaDPayuaBLaFvayxaBMaCxaBMaBNaGPavHaFuaGVaFxaHcaFzaDfaHdaFJaFKaFLaFLaFLaDraFLaFLaFNaFOaCMaaaaBYaHIaElaFQaEnaFRaBYaaaazJazOazPaHJaFTaFUaFTaFVazPazQaFWayLayLayLayLaFXaCfaCgazTaCfaFYaHYazTaGaarAaGbaGcaGdarEaAiaDeaDvaDuaCoaDeaIcaDzaIhaGlaGmaBjaBjaBjaBjaBjaBjaGnaGoaGpaIkaDpaInaIlaDsaDsaDsaDsaDsaDsaDsaDsaDsaFaaFbaDsaDsaFaaGtaDsaDsaaaaaaaDsaDCaDCaDCaDCaEZaEWaFdaFcaFwaDCaDCaDCaDCaDCaGDaGEaGFaGFaGFaGFaGFaGFaGGaGGaIzaGGaGGaGGaGGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaFraGIaIDaGKaFlaFMaFlaFMaFlaFMaFlaFMaFlaGMaGNaGOaDPayuaBLaIIaFAaGRaGSaGTaGUaCEaFBaFDaFCaFCaFCbazaIKaFCaISaFLaFLaFLaFLaFLaFLaFLaFNaIVaCMaafaBYaHeaHfaHgaHhaHiaBYaafazJazOazPaHjaFPaFUaHlaHmazPaHnaHoayLaHpazTaARaHqaATaHrazTaCfaFYaHsazTaHtarAaHuaHvaHwarEaGuaIZaEUaGvaDwaJjaGzaGjatEaHCaHDaBjaHEaBjaHFaBjaHGaBjaHHaGpaJsaDpaJBaJwaHLaHMaHMaHNaHOaHKaHKaHKaHKaHKaHPaHKaHKaHKaHQaHVaDsaDsaDsaDsaGBaGAaGCaGCaGLaGJaDCaDCaJDaDCaIdaIeaIfaIgaGFaJEaGFaIiaIjaJHaKjbinaKlaIoaIpaIqaKpaIsbjFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIvaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaIwaFlaFlaDKaFlaFMaFlaFMaIxaFMaIyaFMaFlaGMaGNaGOaDPaFFaIAaIAaKxaICaKHaICaIAaIAaIEaIFaFCaGQaFHaGWaHkaFCaKMaILaIMaFLaFLaHRaFLaIOaIPaKMaCMaaaaBYaBYaIQaHSaIQaBYaBYaaaazJazOazPaKPaITaIUaFTaFTaKQaIWaIXayLaIYazTaKVaEwaCfaJaaEyaATaJbaJcazTaJdaJeaJfaJgaJhaMbaKXaCuaCuaCuaCuaCuaHUaHTaJlaJmaJnaBjaJoaBjaJpaBjaJqaBjaJraGpaKYaJtaGsaGsaDqaJvaDsaDsaLcaDsaDsaJxaDsaGsaJyaGsaGsaGsaJzaHZaHXaHWaIaaLdaIraIbaIbaIbaIRaINaIgaJIaJJaLeaJkaJMaJNaIgaJOaJPaGFaJQaJAaJSaJTbinaJUaIoaJVaLiaGGaGGaGGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaFraJXaIDaGKaFlaFMaFlaFMaFlaFMaFlaFMaFlaGMaGNaGOaDPaGYaGXaHaaGZaHbaHbaIBaLkaIHaIGaIJaLmaJZaJYaJGaKaaFCaKMaKmaKnaKoaLwaKMaKqaKraKsaKtaKuaaaaafaaaaKvaKwaKvaaaaafaaaaKuazOazPaLAaKyaKzaKAaKBazPaKCaKDayLaKEazTaARaKFaKGaHrazTaLBaKIaKJaKKaKLaJeaEDaKNaKOaLYaEEaKRaaaaaaaJlaKSaJKaMcaJlaJLaJnaJnaJnaKWaJnaJnaJnaBjaDpaMvaDpaDpaDpaDpaMwaDpaKZaLaaLbaMEaMVaMFaLfaLgaLhaLfaLfaLfaLfaLfaMXaLfaLfaLfaLfaLfaLfaLfaLfaJRaIgaLjaJWaLlaEFaKbaLoaIgaLpaKTaGFaLraLsaLtaJTaNcaJUaIoaJVaIoaKUaNeaLxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaLyaLzaDJaFkaGqaFlaFlaNAaFlaFlaNGaFlaGHaFraLCaLDaDPaLEaLFaLGaLHaLGaLGaLGaLGaLGaLIaLJaFCaFCaFCaFCaFCaFCaLLaLMaLNaLOaLOaLOaLOaLPaLQaLRaKuaLSaLTaLTaLUaLVaLWaLTaLTaLXaKuaNPaKuaKuaLZaMaaLZaJeaJeaMbaNXaJeaJeaJeaJeaMdaMeaOoaOiaMhaMiaJeaJeaJeaJeaMjaKNaMkaMkaMlaMmaMnaMoaJlaMpaLqaLnaJlaJlaJlaJlaJlaJlaJlaJlaBjaBjaMsaMtaMuaOpaOqaLvaMyaMfaKZaMAaMBaMCaMCaMDaLfaOsaOCaMGaMHaMIaMJaMKaMLaMMaMNaMHaMJaMIaMHaMOaLfaJRaIgaMPaMgaMRaMSaMqaMUaIgaOHaMWaOMaMYaMraNaaNbaGFaGGaOQaJVaIoaMxaPiaNfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -7541,13 +7541,13 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafaafaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafcejchnchmchqchpchrcejcfDcfCcfFcfEcfHchuchvchvcfKcfJcfJchychzcbqbXzbXybYecfNcaicfOcfQcfPchFchEcggbSUaJFaJFcaqceBcaqbTFcbIcfVcfWcfWcfWcfXcbIcfYchLcgacfYcgbcgccgdchPcaEchSceLcgicaIcghccfchVbZycgkcglbZychYbLvbVicgnccgcchbYfccjcciccicckcclcclcclcclccmcdLcifcgycgycgzcgActscgrcgpcgucgtcgGcgGcgGcgxcgIcgIcgJcijcgLcgDcgMcdScgNcipcgPcgNaaaaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafcgQbKqbKqbKrbKsbKsbKtbKtbKtbKtbKuaafaafaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaafaafaafcgEcgEcgEcgEcgEcgEcgEcgEcgEcgEcgEcgEcgEaaaaaacgSciycgTcgTcgUciCcejcgHcgFciKcgKciPciLciVciQcjaciWcjichcchfchechhchgchjcjlbSUbSUbSUbSUbSUbSUbSUbSUcjqcjpcaqcjrcaqbTFcbIcbIctpctqctrcbIcbIcjschschtcfYcaEcaEcaEcaEcaEcaIchkchlcaIchwcjtchwbZycjvcjubZychAchBbVichCbVichDbYfccobYfbYfccpcdCcdCcdCcdDbYfcdLchIchJchJchKcjCchMchochOcjIchQckLckLckLckLckdckackLckfckLckjckmcdSchZciachGcgNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacgEchHcknchHcgEchNckochNcgEchRckpchRcgEaaaaaaciiciycgTcgUcgUckCcejchUchTchWckFckNchXcidcicckQcieciecigciecbqbXzcihbYecikcimcilciocincioclfcirciqciqciAciAciAciAbTFciGciHciIciIciJclgclpciMciXciOcluclrciRciSciSciTciUcaIcaIcaIclycdEckqbZybZybZybZychBchBbViciYbViciZbYfccobYfaaaaaaaaaaaaaaaaaaaaacdLcjgcisciucitcjjcjkcivcjmcjncjociwcjocjocixclGclCcgIclKcgIclVcmgcdScmkcjwcjxcgNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacgEchHcjbchHcgEchNcjcchNcgEchRcjdchRcgEaaaaaaciicgTcgUcgUcgUcjBcmpcjhcjechWcmscmBcmwcmOcmGcjzcjycjDcjAcjEcbqbXzcjFchjcjGcmPcjHcjJcjJcjJcjKcjMcjLcjNcmQcjOceAciAbTFciGcmRciIckbckccmXcubcnbckgckhctQcneckkcklciScnfciUcngcnkcnhcjQcjPcdHcnucdIcdIcnwcdIcdKbVibVibVibVibYfccobYfaaaaaaaaaaaaaaaaaaaaacdLcnEcjRcjTcjSckEcdOcnFcdOckGckHcjXcjUcjUcjYcgIcgIckecjZcjUckickOcdSckPcnIckRcgNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacgEchHcjbchHcgEchNcjcchNcgEchRcjdchRcgEaaaaaaciicgTcgUcgUcgUcjBcmpcjhcjechWcmscmBcmwcmOcmGcjzcjycjDcjAcjEcbqbXzcjFchjcjGcmPcjHcjJcjJcjJcjKcjMcjLcjNcmQcjOceAciAbTFciGcmRciIckbckccmXcubcnbckgckhcticneckkcklciScnfciUcngcnkcnhcjQcjPcdHcnucdIcdIcnwcdIcdKbVibVibVibVibYfccobYfaaaaaaaaaaaaaaaaaaaaacdLcnEcjRcjTcjSckEcdOcnFcdOckGckHcjXcjUcjUcjYcgIcgIckecjZcjUckickOcdSckPcnIckRcgNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacgEckrckuckscgEckzckBckAcgEckDckJckIcgEaaaaafciiclbcgTcgUcgUcgUcejckMckKchWchWcnKchWchWchWchWckTcieckWckYcbqclackZcldclccnLcleclhclhclhclicljcljclkciAcllcgqclwclxciGcnNciIclzclAclBcnPclDclEclFcnQclHclIclJciScnTciUcnUcnVclNclnclmclQclNclRclSclTbYfceQcdIcdIcdIcdIcdIcltbYfaaaaaaaaaaaaaaaaaaaaacdLcmacmbcmccmdcdOcmecmfcnXcdScmhcmicmicmiclvcnZcmlclPclOcmicmicmncdScmocoacmqcmraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaafaafcgEclXcmmcmjcgEcmtcmmcEgcgEcmtcmmcEgcgEaaaaafcmzcgTcgTcgUcgUcmAcejcmvcmucmxcobcolcmycmCcmCcmEcmDcmCcmFconcbqcmIcmHcmKcmJcimcmLcmLcmMcljcmNcorcoqcoqciAcibceVcotcqgciGcoyciIcnccndcoAciGcmSciNcmWcfYcoBcnicnjciScoCciUclLclMclNcnlcoFcnlclNaaaaaaaaabYfbYfbYfcnnclSclSclTbYfbYfaaaaaaaaaaaacdOcdOcdOcdOcdOcdOcdOcdOcdOcnocnpcnqcdScdScnrcnscntcdScdScdScdScoJcnscntcdScdScnvcoLcnvaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaafaafcgEclXcmmcmjcgEcmtcmmcEgcgEcmtcmmcEgcgEaaaaafcmzcgTcgTcgUcgUcmAcejcmvcmucmxcobcolcmycmCcmCcmEcmDcmCcmFconcbqcmIcmHcmKcmJcimcmLcmLcmMcljcmNcorcoqcoqciAcibceVcotcqgciGcoyciIcnccndcoAciGcmSciNcmWciUcoBcnicnjciScoCciUclLclMclNcnlcoFcnlclNaaaaaaaaabYfbYfbYfcnnclSclSclTbYfbYfaaaaaaaaaaaacdOcdOcdOcdOcdOcdOcdOcdOcdOcnocnpcnqcdScdScnrcnscntcdScdScdScdScoJcnscntcdScdScnvcoLcnvaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbKaafaafaafaaaaafcnxaafcnxaafcKAaafcpdaafcKAaafcpdaafaafaaacejcnAcnBcgUcgUcnCcnDcpgcpfcnycnmcpocnzcnzcprcnzcnGcpycnHcnGcnJcpBcpAcpCcnMcnOcnOcnOcnOcpHcpGcnRcnRcnRcgscgscgscgscnSciGcpIcpMcnccpNcnWciGcmSciNcpOciUcnYcpPcnjcpRcpQciUclLclMclNcoccodcoeclNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaacdOcofcogcohcwlcojcokcpUcomcqecopcoocdOaaLaafaafaafaafaaaaaaaaacqmaaaaaaaaaaafcoscqrcosaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaafcoucqtcqscoxcovcowcqAcoxcqDcqIcqAcoDcqLcqNcoEcnycnycnycnycnycnycnycnycoHcoGcqOcoIcqWcoKcoNcoMcoOcnGcoQcoPcoRcnGcoTcoScoUcnOcoWcoVcoYcoXcpacoZcpjcpbcpbcpkcpncpncpjcraciGciGcpccrvciGciGciGcpeciNcrzciUciUciUcrQcphciUciUclLcpiclNcvmcpscvmclNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaafaafcdOcplcpmcplcrUcrScppcpqcomcomcrVcomcdOcdOaaaaaaaaaaafaafaaaaacaaaaaaaaaaaaaafaaacrXaaaaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaaaaaaaaaaafcptcrZcpucpxcpwcpFcsacsbcpzcsdcsccpEcpDcsecpFcpLcpJcsgcsfcsncsicsDcpTcpWcpVcpYcpXcqacpZcqccqbcsKcqdcsLcqfcsMcqzcoTcqJcqKcnOcpacpacpacpacpacqMcpjcqPcqPcqPcpncpncpjbTFcrYciGcqhcqicqjcqkciGcqlciNcsQciUcqncqocqpcqqciUcsWclLcpiclNcsXcqQcquclNaaaaaaaaaaaaaaaaaacqvcqwcqxcqycqvaafaaaaaaaaaaaacdOcplcplcplcoicsYcqBcqCcsZcqEcqFcqGcqHcdOaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaafaaacmZaaaaafaafaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaafcqRcqYcqScqVcqUcpFcqXcpFcvWcqYcqXcpFcvWcqYcpFcpFcpFcpFcpFcqZcpFcpFcpFcrbctbcrdcrcctccpZcrfcrecrhcrgcrjcricrlcrkcoTcqJcrmcnOcrncpacpacrocpacrpcpjcrIcrKcrJcrKcrLcpjbTFcrqciGcrrcrscrtcructicrwcrxcryctkcrAcrBcrCcrDciUcrEcrFcrGcrHcqvctmcqvcrHaaaaaaaafaaaaaaaaacqvcrRcrTctocqvaafaafaaaaaaaaacdOcomcomcomcomcrMcppcrNcrNcrNcnpcrNcrOcdOaaaaaaaaaaaaaaacrPcrPcrPcbKaafaafaafaafcnaaafaafaafaafaafaaqcrPcrPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaafcqRcqYcqScqVcqUcpFcqXcpFcvWcqYcqXcpFcvWcqYcpFcpFcpFcpFcpFcqZcpFcpFcpFcrbctbcrdcrcctccpZcrfcrecrhcrgcrjcricrlcrkcoTcqJcrmcnOcrncpacpacrocpacrpcpjcrIcrKcrJcrKcrLcpjbTFcrqciGcrrcrscrtcructkcrwcrxcryctQcrAcrBcrCcrDciUcrEcrFcrGcrHcqvctmcqvcrHaaaaaaaafaaaaaaaaacqvcrRcrTctocqvaafaafaaaaaaaaacdOcomcomcomcomcrMcppcrNcrNcrNcnpcrNcrOcdOaaaaaaaaaaaaaaacrPcrPcrPcbKaafaafaafaafcnaaafaafaafaafaafaaqcrPcrPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaafaafaafcptcpFcrccpFcrccpFcqXcpFcttcxactucxactxcxacxactBctycpFcpFctIctGctGctGctSctOctTctTctUcpZctVcshcsjcnGcsmcskcuacnGcspcsocsrcsqcstcsscsvcsucpacswcpjcsxcrKcsycrKcuecpjbTFcizciGcszcsAcsBcsCciGcfYcufcfYciUcsEcsFcsGcsHciUcsIcrGcrGcqvcsJcsNculcqvcqvcqvcqvcqvcqvcqvcqvctMctDctNcqvcqvcqvcrHaaaaaacdOcofcogcohcslcsRcqBcrNcrNcrNcnpcrNcsScdOaaaaaaaaaaaaaaacrPaaaaafaaaaafaaaaaaaaackxaaaaafaafaaaaaaaaaaaacrPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafaafaaaaaacptcpFcrccpFcsOcsTcurcsVcsUcuxctucxacuycxacxacuLcuEcuUcuOcuYctacvccvbcvbcvkcrccrccthctgctjcvlcnzcnGcvncnGcnGcnGcvsctlcsrctncvvcvtcvFcvEcpacvGcpjcvOcrKcsycrKcvRcpjctvctwciGciGcvXciGciGciGciBctzctAciUciUciUcwaciUciUcsIcrGaaacqvctCctZctEctFcwectHcwfctJctKctLcqvcuVcwmcuVcqvcwuctPcqvaafaafcdOcplcplcplcwvcrSctRcuccwDcwzcudcrNctWcdOcdOcdOcdOaaaaaacrPaaactXctXctXctXctXaafckxaafctXctXctXctXctXaaacrPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacptcpFcsOcsTcsTcsTcurcsTcsTcsTcurcsTcsTcsTcsTcsTcwEcwGcsTcwHcsTcwIcsTcsTcsTcuhcugcuicpvcpFcujcwJcukcuncumcupcuocumcuqcuscwOcuucutcutcuvcutcuwcwWcwUcuAcuzcuBcuBcpjcuCcuDcwXcuFcuFcuGcuHcuIcuJcuJcuJcuJcuJcuJcuJcuJcuKcrFcrGaaactFcwYcuPcuNctFcwZcuRcuQcuQcvdcvacuQcuQcvhcuQcuVcuXcuQcqvaaaaaacdOcplcplcplcslcxdcuZcvicxncxecvjcrNcrNcvecvfcvgcdOaafaafcrPaafckVckSckSckSckSckyckxckwckvckvckvckvckUaafcrPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From 7e8622b76a7521465ca079420782aef566a20ee1 Mon Sep 17 00:00:00 2001 From: Kelenius Date: Thu, 16 Jul 2015 16:18:54 +0300 Subject: [PATCH 03/10] Fixes #8210 Medicine stacks will now give one message per item category. For example: You clean and seal an ugly ripped cut and a ripped cut on Kelenius's right arm. You clean and seal an ugly ripped cut and a cut on Kelenius's left arm. You clean and seal a cut, a cut, and a cut on Kelenius's left arm. Code cleanup, spanclasses, spacing, stuff. --- code/game/objects/items/stacks/medical.dm | 139 +++++++++++----------- 1 file changed, 71 insertions(+), 68 deletions(-) diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index 5a071ae8180..d7f2ada6c57 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -11,14 +11,8 @@ var/heal_burn = 0 /obj/item/stack/medical/attack(mob/living/carbon/M as mob, mob/user as mob) - if (!istype(M)) - user << "\red \The [src] cannot be applied to [M]!" - return 1 - - if ( ! (istype(user, /mob/living/carbon/human) || \ - istype(user, /mob/living/silicon) || \ - istype(user, /mob/living/carbon/monkey)) ) - user << "\red You don't have the dexterity to do this!" + if(!istype(M)) + user << "\The [src] cannot be applied to [M]." return 1 if (istype(M, /mob/living/carbon/human)) @@ -27,29 +21,25 @@ if(affecting.display_name == "head") if(H.head && istype(H.head,/obj/item/clothing/head/helmet/space)) - user << "\red You can't apply [src] through [H.head]!" + user << "You can't apply [src] through [H.head]." return 1 else if(H.wear_suit && istype(H.wear_suit,/obj/item/clothing/suit/space)) - user << "\red You can't apply [src] through [H.wear_suit]!" + user << "You can't apply [src] through [H.wear_suit]." return 1 if(affecting.status & ORGAN_ROBOT) - user << "\red This isn't useful at all on a robotic limb.." + user << "This isn't useful at all on a robotic limb." return 1 - H.UpdateDamageIcon() - else - - M.heal_organ_damage((src.heal_brute/2), (src.heal_burn/2)) - user.visible_message( \ - "\blue [M] has been applied with [src] by [user].", \ - "\blue You apply \the [src] to [M]." \ - ) + M.heal_organ_damage((heal_brute / 2), (heal_burn / 2)) + user.visible_message("[M] has been applied with [src] by [user].", "You apply \the [src] to [M].") use(1) + return 1 + + return 0 - M.updatehealth() /obj/item/stack/medical/bruise_pack name = "roll of gauze" singular_name = "gauze length" @@ -67,29 +57,37 @@ if(affecting.open == 0) if(!affecting.bandage()) - user << "\red The wounds on [M]'s [affecting.display_name] have already been bandaged." + user << "The wounds on [M]'s [affecting.display_name] have already been bandaged." return 1 else - for (var/datum/wound/W in affecting.wounds) - if (W.internal) + var/list/bleed = list() + var/list/bruise = list() + var/list/scratch = list() + for(var/datum/wound/W in affecting.wounds) + if(W.internal) continue - if (W.current_stage <= W.max_bleeding_stage) - user.visible_message( "\blue [user] bandages [W.desc] on [M]'s [affecting.display_name].", \ - "\blue You bandage [W.desc] on [M]'s [affecting.display_name]." ) - //H.add_side_effect("Itch") - else if (istype(W,/datum/wound/bruise)) - user.visible_message( "\blue [user] places bruise patch over [W.desc] on [M]'s [affecting.display_name].", \ - "\blue You place bruise patch over [W.desc] on [M]'s [affecting.display_name]." ) + if(W.current_stage <= W.max_bleeding_stage) + bleed += "\a [W.desc]" + else if(istype(W, /datum/wound/bruise)) + bruise += "\a [W.desc]" else - user.visible_message( "\blue [user] places bandaid over [W.desc] on [M]'s [affecting.display_name].", \ - "\blue You place bandaid over [W.desc] on [M]'s [affecting.display_name]." ) + scratch += "\a [W.desc]" + if(bleed.len) + var/mes = "[bleed.len == 1 ? "a bandage" : "bandages"] over [english_list(bleed)] on [M]'s [affecting.display_name]" + user.visible_message("[user] places [mes].", "You place [mes].") + if(bruise.len) + var/mes = "[bruise.len == 1 ? "a bruise patch" : "bruise patches"] over [english_list(bruise)] on [M]'s [affecting.display_name]" + user.visible_message("[user] places [mes].", "You place [mes].") + if(scratch.len) + var/mes = "[scratch.len == 1 ? "a bandaid" : "bandaids"] over [english_list(scratch)] on [M]'s [affecting.display_name]" + user.visible_message("[user] places [mes].", "You place [mes].") use(1) else if (can_operate(H)) //Checks if mob is lying down on table for surgery if (do_surgery(H,user,src)) return else - user << "The [affecting.display_name] is cut open, you'll need more than a bandage!" + user << "The [affecting.display_name] is cut open, you'll need more than a bandage." /obj/item/stack/medical/ointment name = "ointment" @@ -110,18 +108,17 @@ if(affecting.open == 0) if(!affecting.salve()) - user << "\red The wounds on [M]'s [affecting.display_name] have already been salved." + user << "The wounds on [M]'s [affecting.display_name] have already been salved." return 1 else - user.visible_message( "\blue [user] salves wounds on [M]'s [affecting.display_name].", \ - "\blue You salve wounds on [M]'s [affecting.display_name]." ) + user.visible_message("[user] salves wounds on [M]'s [affecting.display_name].", "You salve wounds on [M]'s [affecting.display_name]." ) use(1) else if (can_operate(H)) //Checks if mob is lying down on table for surgery if (do_surgery(H,user,src)) return else - user << "The [affecting.display_name] is cut open, you'll need more than a bandage!" + user << "The [affecting.display_name] is cut open, you'll need more than a bandage." /obj/item/stack/medical/advanced/bruise_pack name = "advanced trauma kit" @@ -144,31 +141,39 @@ var/disinfected = affecting.disinfect() if(!(bandaged || disinfected)) - user << "\red The wounds on [M]'s [affecting.display_name] have already been treated." + user << "The wounds on [M]'s [affecting.display_name] have already been treated." return 1 else - for (var/datum/wound/W in affecting.wounds) - if (W.internal) + var/list/bleed = list() + var/list/bruise = list() + var/list/scratch = list() + for(var/datum/wound/W in affecting.wounds) + if(W.internal) continue - if (W.current_stage <= W.max_bleeding_stage) - user.visible_message( "\blue [user] cleans [W.desc] on [M]'s [affecting.display_name] and seals edges with bioglue.", \ - "\blue You clean and seal [W.desc] on [M]'s [affecting.display_name]." ) - //H.add_side_effect("Itch") - else if (istype(W,/datum/wound/bruise)) - user.visible_message( "\blue [user] places medicine patch over [W.desc] on [M]'s [affecting.display_name].", \ - "\blue You place medicine patch over [W.desc] on [M]'s [affecting.display_name]." ) + if(W.current_stage <= W.max_bleeding_stage) + bleed += "\a [W.desc]" + else if(istype(W, /datum/wound/bruise)) + bruise += "\a [W.desc]" else - user.visible_message( "\blue [user] smears some bioglue over [W.desc] on [M]'s [affecting.display_name].", \ - "\blue You smear some bioglue over [W.desc] on [M]'s [affecting.display_name]." ) - if (bandaged) - affecting.heal_damage(heal_brute,0) + scratch += "\a [W.desc]" + if(bleed.len) + var/mes = "[english_list(bleed)] on [M]'s [affecting.display_name]" + user.visible_message("[user] cleans [mes] and seals edges with bioglue.", "You clean and seal [mes].") + if(bruise.len) + var/mes = "[bruise.len == 1 ? "a medicine patch" : "medicine patches"] over [english_list(bruise)] on [M]'s [affecting.display_name]" + user.visible_message("[user] places [mes].", "You place [mes].") + if(scratch.len) + var/mes = "some bioglue over [english_list(scratch)] on [M]'s [affecting.display_name]" + user.visible_message("[user] smears [mes].", "You smear [mes].") + if(bandaged) + affecting.heal_damage(heal_brute, 0) use(1) else if (can_operate(H)) //Checks if mob is lying down on table for surgery if (do_surgery(H,user,src)) return else - user << "The [affecting.display_name] is cut open, you'll need more than a bandage!" + user << "The [affecting.display_name] is cut open, you'll need more than a bandage." /obj/item/stack/medical/advanced/ointment name = "advanced burn kit" @@ -178,7 +183,6 @@ heal_burn = 12 origin_tech = "biotech=1" - /obj/item/stack/medical/advanced/ointment/attack(mob/living/carbon/M as mob, mob/user as mob) if(..()) return 1 @@ -189,12 +193,11 @@ if(affecting.open == 0) if(!affecting.salve()) - user << "\red The wounds on [M]'s [affecting.display_name] have already been salved." + user << "The wounds on [M]'s [affecting.display_name] have already been salved." return 1 else - user.visible_message( "\blue [user] covers wounds on [M]'s [affecting.display_name] with regenerative membrane.", \ - "\blue You cover wounds on [M]'s [affecting.display_name] with regenerative membrane." ) - affecting.heal_damage(0,heal_burn) + user.visible_message("[user] covers wounds on [M]'s [affecting.display_name] with regenerative membrane.", "You cover wounds on [M]'s [affecting.display_name] with regenerative membrane." ) + affecting.heal_damage(0, heal_burn) use(1) else if (can_operate(H)) //Checks if mob is lying down on table for surgery @@ -218,27 +221,27 @@ var/mob/living/carbon/human/H = M var/datum/organ/external/affecting = H.get_organ(user.zone_sel.selecting) var/limb = affecting.display_name - if(!((affecting.name == "l_arm") || (affecting.name == "r_arm") || (affecting.name == "l_leg") || (affecting.name == "r_leg"))) - user << "\red You can't apply a splint there!" + if(!(affecting.name == "l_arm" || affecting.name == "r_arm" || affecting.name == "l_leg" || affecting.name == "r_leg")) + user << "You can't apply a splint there." return if(affecting.status & ORGAN_SPLINTED) - user << "\red [M]'s [limb] is already splinted!" + user << "[M]'s [limb] is already splinted." return - if (M != user) - user.visible_message("\red [user] starts to apply \the [src] to [M]'s [limb].", "\red You start to apply \the [src] to [M]'s [limb].", "\red You hear something being wrapped.") + if(M != user) + user.visible_message("[user] starts to apply \the [src] to [M]'s [limb].", "You start to apply \the [src] to [M]'s [limb]...", "You hear something being wrapped.") else if((!user.hand && affecting.name == "r_arm") || (user.hand && affecting.name == "l_arm")) - user << "\red You can't apply a splint to the arm you're using!" + user << "You can't apply a splint to the arm you're using!" return - user.visible_message("\red [user] starts to apply \the [src] to their [limb].", "\red You start to apply \the [src] to your [limb].", "\red You hear something being wrapped.") + user.visible_message("[user] starts to apply \the [src] to their [limb].", "You start to apply \the [src] to your [limb]...", "You hear something being wrapped.") if(do_after(user, 50)) - if (M != user) - user.visible_message("\red [user] finishes applying \the [src] to [M]'s [limb].", "\red You finish applying \the [src] to [M]'s [limb].", "\red You hear something being wrapped.") + if(M != user) + user.visible_message("[user] finishes applying \the [src] to [M]'s [limb].", "You finish applying \the [src] to [M]'s [limb].", "You hear something being wrapped.") else if(prob(25)) - user.visible_message("\red [user] successfully applies \the [src] to their [limb].", "\red You successfully apply \the [src] to your [limb].", "\red You hear something being wrapped.") + user.visible_message("[user] successfully applies \the [src] to their [limb].", "You successfully apply \the [src] to your [limb].", "You hear something being wrapped.") else - user.visible_message("\red [user] fumbles \the [src].", "\red You fumble \the [src].", "\red You hear something being wrapped.") + user.visible_message("[user] fumbles \the [src].", "You fumble \the [src].", "You hear something being wrapped.") return affecting.status |= ORGAN_SPLINTED use(1) From b308e343883180934ab8bbf8f9f595db37b1a969 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Sat, 18 Jul 2015 22:51:20 +0200 Subject: [PATCH 04/10] Fixes #10170. Removes the bunsen burner completely. Was after the chem rework basically never referenced anyway. --- baystation12.dme | 1 - .../reagents/reagent_containers/glass.dm | 1 - .../xenoarchaeology/tools/bunsen_burner.dm | 59 ------------------- maps/exodus-5.dmm | 2 +- 4 files changed, 1 insertion(+), 62 deletions(-) delete mode 100644 code/modules/research/xenoarchaeology/tools/bunsen_burner.dm diff --git a/baystation12.dme b/baystation12.dme index 42d0eb645e2..e77618705e7 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -1562,7 +1562,6 @@ #include "code\modules\research\xenoarchaeology\machinery\geosample_scanner.dm" #include "code\modules\research\xenoarchaeology\tools\ano_device_battery.dm" #include "code\modules\research\xenoarchaeology\tools\anomaly_suit.dm" -#include "code\modules\research\xenoarchaeology\tools\bunsen_burner.dm" #include "code\modules\research\xenoarchaeology\tools\gearbelt.dm" #include "code\modules\research\xenoarchaeology\tools\suspension_generator.dm" #include "code\modules\research\xenoarchaeology\tools\tools.dm" diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm index 26f58fb4712..123bbc9d1fa 100644 --- a/code/modules/reagents/reagent_containers/glass.dm +++ b/code/modules/reagents/reagent_containers/glass.dm @@ -42,7 +42,6 @@ /obj/machinery/smartfridge/, /obj/machinery/biogenerator, /obj/machinery/constructable_frame, - /obj/machinery/bunsen_burner, /obj/machinery/radiocarbon_spectrometer ) diff --git a/code/modules/research/xenoarchaeology/tools/bunsen_burner.dm b/code/modules/research/xenoarchaeology/tools/bunsen_burner.dm deleted file mode 100644 index ce2a982d101..00000000000 --- a/code/modules/research/xenoarchaeology/tools/bunsen_burner.dm +++ /dev/null @@ -1,59 +0,0 @@ - -/obj/machinery/bunsen_burner - name = "bunsen burner" - desc = "A flat, self-heating device designed for bringing chemical mixtures to boil." - icon = 'icons/obj/device.dmi' - icon_state = "bunsen0" - var/heating = 0 //whether the bunsen is turned on - var/heated = 0 //whether the bunsen has been on long enough to let stuff react - var/obj/item/weapon/reagent_containers/held_container - var/heat_time = 50 - -/obj/machinery/bunsen_burner/attackby(obj/item/weapon/W as obj, mob/user as mob) - if(istype(W, /obj/item/weapon/reagent_containers)) - if(held_container) - user << "\red You must remove the [held_container] first." - else - held_container = W - user.drop_from_inventory(held_container, src) - user << "\blue You put the [held_container] onto the [src]." - var/image/I = image("icon"=W, "layer"=FLOAT_LAYER) - underlays += I - if(heating) - spawn(heat_time) - try_heating() - else - user << "\red You can't put the [W] onto the [src]." - -/obj/machinery/bunsen_burner/attack_ai() - return - -/obj/machinery/bunsen_burner/attack_hand(mob/user as mob) - if(held_container) - underlays = null - user << "\blue You remove the [held_container] from the [src]." - held_container.loc = src.loc - held_container.attack_hand(user) - held_container = null - else - user << "\red There is nothing on the [src]." - -/obj/machinery/bunsen_burner/proc/try_heating() - src.visible_message("\blue \icon[src] [src] hisses.") - if(held_container && heating) - heated = 1 - held_container.reagents.handle_reactions() - heated = 0 - spawn(heat_time) - try_heating() - -/obj/machinery/bunsen_burner/verb/toggle() - set src in view(1) - set name = "Toggle bunsen burner" - set category = "IC" - - heating = !heating - icon_state = "bunsen[heating]" - if(heating) - spawn(heat_time) - try_heating() diff --git a/maps/exodus-5.dmm b/maps/exodus-5.dmm index 2618c3a4b22..7dbbc20f53c 100644 --- a/maps/exodus-5.dmm +++ b/maps/exodus-5.dmm @@ -89,7 +89,7 @@ "bK" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/beakers{pixel_x = 2; pixel_y = 2},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/chemistry) "bL" = (/obj/item/weapon/stool/padded,/turf/simulated/floor{icon_state = "white"},/area/outpost/research/chemistry) "bM" = (/turf/simulated/floor{icon_state = "white"},/area/outpost/research/chemistry) -"bN" = (/obj/machinery/bunsen_burner,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/table/glass,/turf/simulated/floor{icon_state = "white"},/area/outpost/research/chemistry) +"bN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/table/glass,/turf/simulated/floor{icon_state = "white"},/area/outpost/research/chemistry) "bO" = (/obj/structure/disposaloutlet{dir = 8},/obj/structure/disposalpipe/trunk{dir = 2},/turf/simulated/wall/r_wall,/area/outpost/research/chemistry) "bP" = (/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/outpost/research/chemistry) "bQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/outpost/research/chemistry) From 428138af87a6b01b0a687c4f2970d1534fa5de0c Mon Sep 17 00:00:00 2001 From: mwerezak Date: Sat, 18 Jul 2015 22:35:17 -0400 Subject: [PATCH 05/10] Fixes #10215 Robot custom sprite config entries are now split at the first dash, instead of at every dash. The config is parsed once at startup. --- baystation12.dme | 1 + .../living/silicon/robot/custom_sprites.dm | 29 +++++++++++++++++++ .../modules/mob/living/silicon/robot/robot.dm | 18 +----------- 3 files changed, 31 insertions(+), 17 deletions(-) create mode 100644 code/modules/mob/living/silicon/robot/custom_sprites.dm diff --git a/baystation12.dme b/baystation12.dme index 42d0eb645e2..cb78331d90a 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -1259,6 +1259,7 @@ #include "code\modules\mob\living\silicon\pai\software_modules.dm" #include "code\modules\mob\living\silicon\robot\analyzer.dm" #include "code\modules\mob\living\silicon\robot\component.dm" +#include "code\modules\mob\living\silicon\robot\custom_sprites.dm" #include "code\modules\mob\living\silicon\robot\death.dm" #include "code\modules\mob\living\silicon\robot\emote.dm" #include "code\modules\mob\living\silicon\robot\examine.dm" diff --git a/code/modules/mob/living/silicon/robot/custom_sprites.dm b/code/modules/mob/living/silicon/robot/custom_sprites.dm new file mode 100644 index 00000000000..b738787d007 --- /dev/null +++ b/code/modules/mob/living/silicon/robot/custom_sprites.dm @@ -0,0 +1,29 @@ + +//list(ckey = real_name,) +//Since the ckey is used as the icon_state, the current system will only permit a single custom robot sprite per ckey. +//While it might be possible for a ckey to use that custom sprite for several real_names, it seems rather pointless to support it. +var/list/robot_custom_icons + +/hook/startup/proc/load_robot_custom_sprites() + var/config_file = file2text("config/custom_sprites.txt") + var/list/lines = text2list(config_file, "\n") + + robot_custom_icons = list() + for(var/line in lines) + //split entry into ckey and real_name + var/split_idx = findtext(line, "-") //this works if ckey cannot contain dashes, and findtext starts from the beginning + if(!split_idx || split_idx == length(line)) + continue //bad entry + + var/ckey = copytext(line, 1, split_idx) + var/real_name = copytext(line, split_idx+1) + + robot_custom_icons[ckey] = real_name + +/mob/living/silicon/robot/proc/set_custom_sprite() + var/rname = robot_custom_icons[ckey] + if(rname && rname == real_name) + custom_sprite = 1 + icon = 'icons/mob/custom-synthetic.dmi' + if(icon_state == "robot") + icon_state = "[ckey]-Standard" diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index bffda0fa98d..0820e94cc10 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -302,23 +302,7 @@ camera.c_tag = changed_name if(!custom_sprite) //Check for custom sprite - var/file = file2text("config/custom_sprites.txt") - var/lines = text2list(file, "\n") - - for(var/line in lines) - // split & clean up - var/list/Entry = text2list(line, "-") - for(var/i = 1 to Entry.len) - Entry[i] = trim(Entry[i]) - - if(Entry.len < 2) - continue; - - if(Entry[1] == src.ckey && Entry[2] == src.real_name) //They're in the list? Custom sprite time, var and icon change required - custom_sprite = 1 - icon = 'icons/mob/custom-synthetic.dmi' - if(icon_state == "robot") - icon_state = "[src.ckey]-Standard" + set_custom_sprite() //Flavour text. if(client) From 4ea1379b331488831b929ea569a74811e30a61ab Mon Sep 17 00:00:00 2001 From: mwerezak Date: Sat, 18 Jul 2015 23:27:09 -0400 Subject: [PATCH 06/10] Fixes #10230 Moves throw mode procs up to /mob level, clicking on a non-turf or an atom that is not in a turf cancels throw mode. --- code/_onclick/click.dm | 6 ++++-- code/modules/mob/living/carbon/carbon.dm | 16 ---------------- code/modules/mob/mob.dm | 18 ++++++++++++++++++ 3 files changed, 22 insertions(+), 18 deletions(-) diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index b8caa45399d..56af5949f73 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -80,8 +80,10 @@ return if(in_throw_mode) - throw_item(A) - return + if(isturf(A) || isturf(A.loc)) + throw_item(A) + return + throw_mode_off() if(!istype(A,/obj/item/weapon/gun) && !isturf(A) && !istype(A,/obj/screen)) last_target_click = world.time diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index ab97fb12c05..ac0093ad457 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -315,22 +315,6 @@ //Throwing stuff -/mob/living/carbon/proc/toggle_throw_mode() - if (src.in_throw_mode) - throw_mode_off() - else - throw_mode_on() - -/mob/living/carbon/proc/throw_mode_off() - src.in_throw_mode = 0 - if(src.throw_icon) //in case we don't have the HUD and we use the hotkey - src.throw_icon.icon_state = "act_throw_off" - -/mob/living/carbon/proc/throw_mode_on() - src.in_throw_mode = 1 - if(src.throw_icon) - src.throw_icon.icon_state = "act_throw_on" - /mob/proc/throw_item(atom/target) return diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 49e02b6e795..6c601c419e6 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -1009,3 +1009,21 @@ mob/proc/yank_out_object() /mob/verb/westfaceperm() set hidden = 1 set_face_dir(WEST) + +//Throwing stuff + +/mob/proc/toggle_throw_mode() + if (src.in_throw_mode) + throw_mode_off() + else + throw_mode_on() + +/mob/proc/throw_mode_off() + src.in_throw_mode = 0 + if(src.throw_icon) //in case we don't have the HUD and we use the hotkey + src.throw_icon.icon_state = "act_throw_off" + +/mob/proc/throw_mode_on() + src.in_throw_mode = 1 + if(src.throw_icon) + src.throw_icon.icon_state = "act_throw_on" \ No newline at end of file From ac2dd5f3ca44cce513f15a8499eb899927383f4e Mon Sep 17 00:00:00 2001 From: mwerezak Date: Sun, 19 Jul 2015 00:25:09 -0400 Subject: [PATCH 07/10] Fixes #10210 --- code/modules/power/lighting.dm | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 37133f7ff3d..7975f046559 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -189,9 +189,7 @@ ..() spawn(2) - var/area/A = get_area(src) - if(A && !A.requires_power) - on = 1 + on = has_power() switch(fitting) if("tube") @@ -398,7 +396,7 @@ // true if area has power and lightswitch is on /obj/machinery/light/proc/has_power() var/area/A = src.loc.loc - return A.lightswitch && A.power_light + return A.lightswitch && (!A.requires_power || A.power_light) /obj/machinery/light/proc/flicker(var/amount = rand(10, 20)) if(flickering) return @@ -570,8 +568,7 @@ // called when area power state changes /obj/machinery/light/power_change() spawn(10) - var/area/A = src.loc.loc - seton(A.lightswitch && A.power_light) + seton(has_power()) // called when on fire From d3717a23a013699c7ea97ec48b9665afcdf7b72b Mon Sep 17 00:00:00 2001 From: mwerezak Date: Sun, 19 Jul 2015 00:28:49 -0400 Subject: [PATCH 08/10] Removes unlimited_power var Redundant and only used in one place. --- code/game/area/Space Station 13 areas.dm | 4 ---- code/game/machinery/recharger.dm | 3 +-- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/code/game/area/Space Station 13 areas.dm b/code/game/area/Space Station 13 areas.dm index e7a9c127901..effb7ad0826 100755 --- a/code/game/area/Space Station 13 areas.dm +++ b/code/game/area/Space Station 13 areas.dm @@ -34,7 +34,6 @@ NOTE: there are two lists of areas in the end of this file: centcom and station var/debug = 0 var/requires_power = 1 - var/unlimited_power = 0 var/always_unpowered = 0 //this gets overriden to 1 for space in area/New() var/power_equip = 1 @@ -349,7 +348,6 @@ area/space/atmosalert() name = "\improper Centcom" icon_state = "centcom" requires_power = 0 - unlimited_power = 1 lighting_use_dynamic = 0 /area/centcom/control @@ -388,7 +386,6 @@ area/space/atmosalert() name = "\improper Mercenary Base" icon_state = "syndie-ship" requires_power = 0 - unlimited_power = 1 lighting_use_dynamic = 0 /area/syndicate_mothership/control @@ -463,7 +460,6 @@ area/space/atmosalert() name = "\improper Independant Station" icon_state = "yellow" requires_power = 0 - unlimited_power = 1 flags = RAD_SHIELDED /area/syndicate_station/start diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm index b533015c669..85c3a1374ce 100644 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -28,8 +28,7 @@ obj/machinery/recharger/attackby(obj/item/weapon/G as obj, mob/user as mob) user << "\red \A [charging] is already charging here." return // Checks to make sure he's not in space doing it, and that the area got proper power. - var/area/a = get_area(src) - if(!isarea(a) || (a.power_equip == 0 && !a.unlimited_power)) + if(!powered()) user << "\red The [name] blinks red as you try to insert the item!" return if (istype(G, /obj/item/weapon/gun/energy/gun/nuclear) || istype(G, /obj/item/weapon/gun/energy/crossbow)) From b5ed18e980cb6047cf9b64343f3369b6905d534b Mon Sep 17 00:00:00 2001 From: mwerezak Date: Sun, 19 Jul 2015 00:36:18 -0400 Subject: [PATCH 09/10] Fixes #10218 --- code/game/machinery/constructable_frame.dm | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm index 9ebe4a6ec2c..56c2493ba0f 100644 --- a/code/game/machinery/constructable_frame.dm +++ b/code/game/machinery/constructable_frame.dm @@ -109,18 +109,26 @@ if(component_check) playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) var/obj/machinery/new_machine = new src.circuit.build_path(src.loc, src.dir) - new_machine.component_parts.Cut() + + if(new_machine.component_parts) + new_machine.component_parts.Cut() + else + new_machine.component_parts = list() + src.circuit.construct(new_machine) + for(var/obj/O in src) if(circuit.contain_parts) // things like disposal don't want their parts in them O.loc = new_machine else O.loc = null new_machine.component_parts += O + if(circuit.contain_parts) circuit.loc = new_machine else circuit.loc = null + new_machine.RefreshParts() qdel(src) else From 1b7ab38e7965477ebf9ce703fcbcb81cff1008c8 Mon Sep 17 00:00:00 2001 From: PsiOmegaDelta Date: Mon, 20 Jul 2015 08:35:43 +0200 Subject: [PATCH 10/10] There was a DMI name change evidently. --- code/modules/mob/living/silicon/robot/custom_sprites.dm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/modules/mob/living/silicon/robot/custom_sprites.dm b/code/modules/mob/living/silicon/robot/custom_sprites.dm index b738787d007..eef371b582d 100644 --- a/code/modules/mob/living/silicon/robot/custom_sprites.dm +++ b/code/modules/mob/living/silicon/robot/custom_sprites.dm @@ -1,5 +1,5 @@ -//list(ckey = real_name,) +//list(ckey = real_name,) //Since the ckey is used as the icon_state, the current system will only permit a single custom robot sprite per ckey. //While it might be possible for a ckey to use that custom sprite for several real_names, it seems rather pointless to support it. var/list/robot_custom_icons @@ -14,16 +14,16 @@ var/list/robot_custom_icons var/split_idx = findtext(line, "-") //this works if ckey cannot contain dashes, and findtext starts from the beginning if(!split_idx || split_idx == length(line)) continue //bad entry - + var/ckey = copytext(line, 1, split_idx) var/real_name = copytext(line, split_idx+1) - + robot_custom_icons[ckey] = real_name /mob/living/silicon/robot/proc/set_custom_sprite() var/rname = robot_custom_icons[ckey] if(rname && rname == real_name) custom_sprite = 1 - icon = 'icons/mob/custom-synthetic.dmi' + icon = 'icons/mob/custom_synthetic.dmi' if(icon_state == "robot") icon_state = "[ckey]-Standard"