From 78a6dc4f95468c9f03766d4a0e97f67cc866ba04 Mon Sep 17 00:00:00 2001 From: Kyep Date: Mon, 13 Mar 2017 23:59:44 -0700 Subject: [PATCH 1/9] Creates Demotion Terminal --- _maps/map_files/cyberiad/cyberiad.dmm | 17 ++++--- code/game/machinery/computer/id_demoter.dm | 58 ++++++++++++++++++++++ paradise.dme | 1 + 3 files changed, 68 insertions(+), 8 deletions(-) create mode 100644 code/game/machinery/computer/id_demoter.dm diff --git a/_maps/map_files/cyberiad/cyberiad.dmm b/_maps/map_files/cyberiad/cyberiad.dmm index 37976a9e749..5d21466ff34 100644 --- a/_maps/map_files/cyberiad/cyberiad.dmm +++ b/_maps/map_files/cyberiad/cyberiad.dmm @@ -539,7 +539,7 @@ "aks" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/camera{c_tag = "Brig Prison Hallway"; dir = 4; network = list("Prison","SS13")},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/security/permabrig) "akt" = (/obj/structure/rack,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/item/weapon/gun/energy/gun/advtaser{pixel_x = -3; pixel_y = 3},/obj/item/weapon/gun/energy/gun/advtaser{pixel_x = 0; pixel_y = 0},/obj/item/weapon/gun/energy/gun/advtaser{pixel_x = 3; pixel_y = -3},/turf/simulated/floor/plasteel{dir = 8; icon_state = "vault"; tag = "icon-vault (WEST)"},/area/security/securearmoury) "aku" = (/obj/structure/rack,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/shield/riot,/obj/item/weapon/shield/riot,/obj/item/weapon/shield/riot,/turf/simulated/floor/plasteel{dir = 8; icon_state = "vault"; tag = "icon-vault (WEST)"},/area/security/securearmoury) -"akv" = (/obj/structure/table/woodentable,/obj/machinery/photocopier/faxmachine{department = "Head of Security's Office"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/hos) +"akv" = (/obj/structure/table/woodentable,/obj/machinery/photocopier/faxmachine{department = "Head of Security's Office"},/obj/machinery/computer/id_demoter{pixel_x = -28},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/hos) "akw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/carpet,/area/security/hos) "akx" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/hos) "aky" = (/obj/machinery/portable_atmospherics/canister/oxygen,/obj/effect/decal/warning_stripes/blue/hollow,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/security/podbay) @@ -2528,6 +2528,7 @@ "aWF" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva) "aWG" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ai_monitored/storage/eva) "aWH" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva) +"aWI" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/computer/id_demoter{pixel_x = 28},/turf/simulated/floor/plasteel,/area/crew_quarters/heads) "aWJ" = (/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 32},/turf/simulated/floor/plasteel{icon_state = "bluecorner"},/area/hallway/primary/fore) "aWK" = (/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutral"},/area/crew_quarters/fitness) "aWL" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 32},/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 4},/area/crew_quarters/fitness) @@ -2602,6 +2603,7 @@ "aYc" = (/obj/structure/table/reinforced,/obj/machinery/cell_charger,/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = -7},/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = -7},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva) "aYd" = (/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 = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ai_monitored/storage/eva) "aYe" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/table/reinforced,/obj/item/weapon/book/manual/evaguide,/obj/item/stack/tape_roll,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva) +"aYf" = (/obj/item/weapon/cartridge/signal/toxins,/obj/item/weapon/cartridge/signal/toxins{pixel_x = -4; pixel_y = 2},/obj/item/weapon/cartridge/signal/toxins{pixel_x = 4; pixel_y = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/camera{c_tag = "Research Director's Office"; dir = 1; network = list("Research","SS13")},/obj/item/clothing/glasses/welding/superior,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/table/glass,/obj/machinery/computer/id_demoter{pixel_y = -28},/turf/simulated/floor/plasteel{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/hor) "aYg" = (/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/fore) "aYh" = (/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{icon_state = "bluecorner"},/area/hallway/primary/fore) "aYi" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall,/area/crew_quarters/sleep) @@ -5071,7 +5073,7 @@ "bTC" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel,/area/crew_quarters/heads) "bTD" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/pdapainter,/turf/simulated/floor/carpet,/area/crew_quarters/heads) "bTE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/carpet,/area/crew_quarters/heads) -"bTF" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plasteel,/area/crew_quarters/heads) +"bTF" = (/obj/structure/disposalpipe/segment,/obj/machinery/computer/id_demoter{pixel_x = -28},/turf/simulated/floor/plasteel{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/medical/cmo) "bTG" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/wall/r_wall,/area/crew_quarters/heads) "bTH" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/wall/r_wall,/area/server) "bTI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = "0"},/turf/simulated/wall/r_wall,/area/server) @@ -5730,7 +5732,7 @@ "cgl" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall/r_wall,/area/crew_quarters/hor) "cgm" = (/obj/structure/cable,/obj/machinery/light_switch{pixel_y = -23},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/item/weapon/twohanded/required/kirbyplants,/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24; shock_proof = 0},/turf/simulated/floor/plasteel{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/hor) "cgn" = (/obj/machinery/keycard_auth{pixel_x = 0; pixel_y = -24},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/light,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/photocopier/faxmachine{department = "Research Director's Office"},/obj/structure/table/glass,/turf/simulated/floor/plasteel{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/hor) -"cgo" = (/obj/item/weapon/cartridge/signal/toxins,/obj/item/weapon/cartridge/signal/toxins{pixel_x = -4; pixel_y = 2},/obj/item/weapon/cartridge/signal/toxins{pixel_x = 4; pixel_y = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/camera{c_tag = "Research Director's Office"; dir = 1; network = list("Research","SS13")},/obj/item/clothing/glasses/welding/superior,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/table/glass,/turf/simulated/floor/plasteel{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/hor) +"cgo" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/computer/id_demoter{layer = 4; pixel_y = -28},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office) "cgp" = (/obj/structure/closet/secure_closet/RD,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/plasteel{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/hor) "cgq" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plasteel{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/hor) "cgr" = (/obj/machinery/photocopier,/turf/simulated/floor/plasteel{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/hor) @@ -7979,7 +7981,6 @@ "cXy" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/engine/hardsuitstorage) "cXz" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_engineering{name = "Storage"; req_access_txt = "11"; req_one_access_txt = null},/turf/simulated/floor/plasteel,/area/engine/hardsuitstorage) "cXA" = (/obj/machinery/camera{c_tag = "Engineering Chief Engineer's Office"; dir = 4; network = list("SS13")},/obj/item/device/radio/intercom{name = "station intercom (General)"; pixel_x = -28; pixel_y = 0},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office) -"cXB" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office) "cXC" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/stool/bed/chair{dir = 1},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office) "cXD" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 4; name = "east bump Engineering"; pixel_x = 24; shock_proof = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office) "cXE" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/structure/closet/secure_closet/engineering_electrical,/turf/simulated/floor/plasteel,/area/engine/equipmentstorage) @@ -9202,18 +9203,18 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdbKpbKpbKEaSdaSdaUlaLdaSdaSdbCfbOabIBbIBbIBbCfbCfbCfaaaaaaaaabObbOcbOcbOdbOcbOcbObaaaaaabKBbOebKzbOfbOgbOgbOgbOgbOgbOhbOibOgbOjbKLbOlbOmbOnbOobOpbzJbOqbBnbOrbOsbDXbOtbOubOvbMEbMEbMGbOwbOxbOybOzbOAbMGbFBbKYbFCbOBbOCbMmbOEbOFbFCaaabOGbLdbOHbOIbOJbOKbOLbOKbOMbONbOObFObOPbEobOQbOQbORbOSbOTbOUbOVbOWbOXbOYbOZbOZbPabPbbPcbPdbEtbNobPebPfbEtbEtbEubPgbPhbPibEubEubEubEubPjbPkbGqbPlbLEbLFbPmbNBbNEbPnbPobPobPpbIdbPqbPrbPsbPtbIjbPubEDbPvbPwbIpbPxbPybPzbEDbKkbPAbGHbGHaaaaaaaaaaaaaabbPBbPCbPDbPEbPFbPGbPBaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPHbPIbPIbPIbPIbPJbPKbPIbPIbPIbPIbPLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabObbOcbOcbOcbOcbOcbObbMtbKBbKBbPNbPObPPbPQbPQbPQbPObKzbIUbKAbKzbKzbKBbPRbPSbPTbPUbPVbMybPXbBnbBnbPYbDXbOtbOubPZbNXbQbbQcbQdbQebQfbQgbQhbMGbQibQjbHmbQkbQlbQmbQnbQobHsbHtbQpbLdbQqbQrbQsbOKbQtbOKbQubONbQvbFObQwbEobQxbQybQzbQAbQBbQCbQDbQEbQFbQFbQGbQHbQFbQFbQIbQJbQKbQLbQMbQNbQObQPbQQbQRbQSbQTbQUbQVbQWbQXbQYbQZbGqbRabRbbRcbRdbRebIabRfbPobPobRgbRhbPqbRibEAbRjbRjbRkbEDbRlbRmbRnbRobIpbRpbEDbKkbRqbGHaaaaaaaaaaaaaaaaabbRrbRsbPDbPFbPDbRtbNVaabaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPHbRubRvbRwbRxbRybRzbRAbRybRBbRCbRDbPIbPIbPLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabObbOcbOcbOcbOcbOcbREbRFbRGbRFbRHbRIbRJbRIbRIbRIbRIbRKbIUbKAbRLbxbbxbbRMbBnbzFbPUbRNbDXbRObRPbRPbRQbNYbRSbRTbRUbRVbRWbRXbRYbRZbSabSbbScbMGbMKbKYbFCbSdbSebSfbSgbShbFCaaabOGbSibSjbSibSibSibSibSibSkbSibSlbFObQwbEobSmbSnbSnbSobSpbOUbSqbSrbSsbStbSubSvbSwbSsbSxbSybSzbSAbSBbSCbSDbSDbSEbSFbSGbSHbSIbSJbSKbSLbSMbSNbSObSPbSPbSQbSRbSSbIabSTbIdbIdbSUbSVbPqbSWbNZbSYbSZbTabTbbOkbTdbTebODbTebEDbEDbTgbPtbThbTibTibTibTibTibThbPBbPFbPDbPFbPFbPGbPBaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPHbPIbRAbRAbRAbTjbRybTkbTkbRybTlbRAbRAbTmbTnbPIbPLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabObbOcbOcbOcbOcbOcbTobPMbTqbPMbTrbKzbPPbPQbPQbPQbKzbKzbIUbKAbTsbTtbxbbTubBnbzFbPUbTvbDXbTwbBnbBobBnbPWbOtbTybTzbRVbRWbTAbTBbTCbTDbTEbTFbTGbTHbTIbTJbTJbTKbTLbTMbFCbFCaaabOGbSibTNbTObTPbTQbTRbTSbTTbTUbTVbFObQwbNcbTWbTXbTYbTZbUabOUbUbbUcbUdbUebUfbUgbUhbUibUjbUkbUlbUmbUnbUobUpbUqbUrbUsbUtbUubUvbQVbUwbQXbUxbUybGrbUzbUAbUBbUCbUCbIabUDbUEbUFbIabUGbPqbUHbIabUIbUJbUKbULbUMbUNbUObUPbUQbURbUSbUTbUUbUVbUWbUWbUXbUYbUZbQabVbbNUbNVbVcbNVbNUbVdaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPHbPIbRAbRAbRAbTjbRybTkbTkbRybTlbRAbRAbTmbTnbPIbPLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabObbOcbOcbOcbOcbOcbTobPMbTqbPMbTrbKzbPPbPQbPQbPQbKzbKzbIUbKAbTsbTtbxbbTubBnbzFbPUbTvbDXbTwbBnbBobBnbPWbOtbTybTzbRVbRWbTAbTBbTCbTDbTEaWIbTGbTHbTIbTJbTJbTKbTLbTMbFCbFCaaabOGbSibTNbTObTPbTQbTRbTSbTTbTUbTVbFObQwbNcbTWbTXbTYbTZbUabOUbUbbUcbUdbUebUfbUgbUhbUibUjbUkbUlbUmbUnbUobUpbUqbUrbUsbUtbUubUvbQVbUwbQXbUxbUybGrbUzbUAbUBbUCbUCbIabUDbUEbUFbIabUGbPqbUHbIabUIbUJbUKbULbUMbUNbUObUPbUQbURbUSbUTbUUbUVbUWbUWbUXbUYbUZbQabVbbNUbNVbVcbNVbNUbVdaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPHbPIbVebVfbVgbVhbVibRybVjbRAbVkbRAbRAbRAbRAbRAbTjbRyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabObbVlbOcbOcbOcbVmbObbMtbKBbKBbVnbKzbPPbKzbKzbKzbKzbKzbIUbKAbTsbVobxbbVpbBnbVqbVrbBnbRRbzEbBnbBnbVtbDXbOtbTybTzbRVbRWbMGbVubVvbVwbVxbVybMHbVzbVAbVBbVCbHsbSXbVEbHsbHtbHtbVFbSibVGbVHbVIbVJbVKbVKbVLbTcbVNbFObVObEobOUbVPbOQbVQbVRbOUbUbbVSbVTbVUbVVbVWbVXbVTbUbbVYbVZbWabWbbWabWcbWabWdbWdbWebWfbWgbWgbWgbWhbWgbWgbWibWibWjbWkbWjbWjbIabIabIabIabIabWlbTfbLIbIabWnbWobWpbWqbWqbWrbWsbWtbWubWvbWwbWxbWybWzbWAbWAbWBbWCbWDbThbQabQabQabWEbThaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWFbWGbRAbRAbWHbWHbWHbRybRAbRAbRybWIbWJbWKbWLbWMbWNbRyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabObbOcbOcbOcbOcbOcbWObPMbTqbPMbPNbWPbWQbKzbKzbKzbWPbKzbIUbKAbTsbWRbxbbWSbBnbzFbPUbBnbzJbWTbBnbBnbWUbDXbOtbTybWVbRVbWWbMGbWXbWYbWZbXabXbbMHbXcbXdbXebTpbXgbXhbXibFCaaaaaaaaabSibXjbXkbXlbXlbXmbXnbXobSibXpbXqbQwbXrbXsbXtbXubXvbXwbXxbXybUcbXzbXAbXBbXCbXDbXzbUbbVYbXEbXFbXGbXHbXIbXJbWdbXKbXLbXMbXNbXObXPbXQbXRbXSbXTbXUbURbXVbWqbWqbXWbXXbWqbXYbXZbYabYbbYcbWqbYdbYebYfbYgbYhbYibYjbYkbYjbYjbYjbTgbPtbThbTibTibThbYlbYmbYnbYobYpbYqbYrbQaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYsbWGbRAbRAbRAbRAbRAbYtbRAbRAbRybPIbPIbPIbPIbPIbPIbYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabObbOcbOcbOcbOcbOcbYvbYwbYxbYwbYybYzbYAbYAbYAbYAbYAbYBbYCbYDbTsbYEbxbbYFbYGbYHbYIbYJbYKbYLbYLbYLbYMbYMbYNbTybYObTxbRWbMGbYQbYRbYSbVvbYTbMHbYUbYVbYWbTJbYXbQmbYYbFCaaaaaaaaabSibYZbZabZbbZcbXmbXnbXobSibZdbZebZfbZgbZhbZibZjbZkbZlbZmbZnbZobVTbVTbZpbZqbVTbVTbUbbVYbZrbZsbZtbZubZvbZwbWdbZxbZybZzbZAbZBbZCbZDbZDbZEbZFbZGbZHbZIbUMbUMbZJbUMbZKbUMbZLbUMbZMbZNbZNbZObZPbZQbZRbZSbZTbZUbZVbZWbZXbYjbZYbZZaaaaaaaaabThcaabUYcabbYobQacaccadbThaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaebPIcafcagcahcaibRAbRybRAbRAbRybRAcajcakcalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabObbOcbOcbOcbOcbOcbObbMtbKBbKBbxbbxbbKBbKBbKBbKBbKBbxbbxbbKBbKBbKBbxbcamcamcambVacambYMcaocapcaqcarbYMbOtbTycasbMEbMEbMGbMGbMGbMGbMGbMJbMHbTJbTIcaubTJcavbVsbFCbFCbFCbFCbFCbSibSjbSibSibSibSibSibSibSicaxbFOcaycazcaAcaBcaCcaAcaAcaDcaEcaFcaGcaHcaIcaJcaKcaLbXycaMcaNcaOcaPcaQcaRcaScaTcaUcaVcaWcaXcaYcaZcbacbbcbcbWgbWicbdcbecbdcbfbVDcbfcbfcbfcbhbVMcbjcbjcbkcblcbmcbnbZRcbocbpcbqcbrcbscbtbYjbZYbZZaaaaaaaaabThbWmcbvbThbQabThbThbQabThaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPIbPIbPIbPIbPIbPIbRybTlbRAcbwbRAcbxcbycbzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbAcbBbOccbCbOccbDcbEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbFaabaaaaaaaaaaaacamcbGcbHcbIcbJbYMcbKcbLcbMcbNbYMbOtbTycbOcbPcbQcbRcbScbTcbUcbVcbWcbXcbYcbZccaccbcccccdcceccfccgcchcciccjcckcclccmbEnccnbFOccoccpccqbFOccrcaAccscctccuccvccwbUbccxccycczccAccBccCccDccEccFccGccHbWaccIbZuccJccKccLccMccNccObXNccPbXQbXQbXQccQbWgcbdccRccSccTccUccVccWccXcbfccYccZcdacbjcbjcdbcbmcdccddcdecdfcdgcdhcdicdjbYjcdkbGHaaaaaaaaabThbThbThbThaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPHbPIcdlcdmcdncdlcdobRybRAbRAbRybRAcdpcdqcdraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdscdtcducducducdtcdvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacamcdwcdxcdycdzbYLcdAcdBcdCcdDbYMbOtcdEcdFbTybTycdGcdHcdIcdJcclcdKcdLcdKcdMcdNcdNcdOcdPcdQcdNcdNcdRcdNcdScdNcclccmbEncdTcdUcdVcdWcdXcdYbFOcaAcdZcctceaccucebbUbceccedceecefcegcehceicejbUbcekcelbWacemcencenceocepceqcercesbXNcetceubXQcevcewbWgcbdcexceycezbXfceBceCceDcbfceEccZceFceFcbjceGceHceIceJceKceLceMceNceOcePbYjbZYbGHceQaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWFbWGceRceRceRceRceRceSbRAbRAbRybPIbPIbPIbPIbPIbPIbPLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaceTceUceUceUceVaaaaaaaaaaaaaaaaaaaaaceWceXceYceXceZaaaaaaaaacamcamcamcfacfbcdycfcbYLcfdcbMcfecffbYMbOtcfgcfhcficfjcfkcflcfmcfncfocfpcfqcfrcfscftcftcfucfvcfvcfvcfvcfvcfvcfwcfxcfycfzcfAcfBcfCcfDcfEcfFcfGcfHcaAcfIcctccucfJcebbUbceccedcfKcfLcfMcfNcfOcfPbUjcfQcfRbWabWacfScfSbWacepbWdcfTcfUbWgcfVcfWcfXcfYcfZbWgcbdcgacgbcgccgdcgecgfcggcbfcghccZceFceFcbjcgicgjcgkcglcgmcgncgocgpcgqcgrbYjbZYcgscgtcgscgucgvcgucgucguaaaaaaaaaaaaaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaaaaaaaaaaaaaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWFbWGceRceRceRceRceRceSbRAbRAbRybPIbPIbPIbPIbPIbPIbPLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaceTceUceUceUceVaaaaaaaaaaaaaaaaaaaaaceWceXceYceXceZaaaaaaaaacamcamcamcfacfbcdycfcbYLcfdcbMcfecffbYMbOtcfgcfhcficfjcfkcflcfmcfncfocfpcfqcfrcfscftcftcfucfvcfvcfvcfvcfvcfvcfwcfxcfycfzcfAcfBcfCcfDcfEcfFcfGcfHcaAcfIcctccucfJcebbUbceccedcfKcfLcfMcfNcfOcfPbUjcfQcfRbWabWacfScfSbWacepbWdcfTcfUbWgcfVcfWcfXcfYcfZbWgcbdcgacgbcgccgdcgecgfcggcbfcghccZceFceFcbjcgicgjcgkcglcgmcgnaYfcgpcgqcgrbYjbZYcgscgtcgscgucgvcgucgucguaaaaaaaaaaaaaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaaaaaaaaaaaaaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYsbWGceRceRceRcgwcgxbRybRAbRAbRybRAbRAbRAcgybRAcgzbRyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacgAcgBcgCcgDcgAbYPbYPbYPcamcgFcgGcgHcgIcgJcgKcgLcgMcgNcgNcgObYMcgPcgQcgRcgScgScgTcancgVcgScgWcgWcgXcatcgZcgWcgWchacclcclchbchcchcchcchdchechcchcchfchgchhchhchichhchjchkchhchlchmchncaAchochpcecchqchrchschtchuchvchrbUbcekchwchxchychzchAchBchCchDchEchFchGchHchIchJchKchLbWicbdcbdchMchNchOchPchOchQcbfchRchSchTchTcbjcawcbicbgbYjbYjbYjbYjbYjbYjbYjbYjbZYcgschXchYchZciaciacibcguaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcicciccicciccidcidcieciecieciecifaabaabaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaebPIcigceRceRcihciibRybRAbRAcijbRAbRAbRAcikbRAcilbRyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaceYcimcincimceYbYPciocipcamciqcfbcirciscitciubYMcivciwcixciybYMcgQcgQcizcgSciAciBciCciDciEcgWciFciGciHciIciJcgWciKciLciMchcciNciOciPciQciRciSciTciUciVciWciXciYciZcjacjbcjccjdcjecjfcjgcjhcjicjjcedcjkcjlcjmcjncjocjpbUjcjqcjrcjscjtchAcjucjucjvcjwbWgcjxcjycjzcjAcjBcjCcjDbWicjEcjFcjGcjHcjGcjGcjIcjJcjKcjLcjMcjNcjOcbjcjPcjQcbnbPtbGGcjRcjScjTcjTcjScjTcjUcgscjVcjWchZciacjXcjYcguaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciccjZckacjZcidciecieckbckcckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaebPIckdceRceRckebRybRAbRAbRyckfbRAbRAckgckhbPIbYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacgAckicimcimckjckkcfbcfbcklckmcfbcfbciscknckobYMbYMbYMbYMbYMbYMckpcgQckqckrckscktcktcktckucgWckvckwckwckwckxckyckzckAckBckCckDckEckFckGckHckIchcchfckJchhckKckLckMckNckOchhcdZccuceaccuckPckQckRckSckTckUckVckWckXchrckYckZclaclbclccldcleclfclgclhbWgbWgbWgbWgbWgclicljclkbWicllcjGcjGclmclncjGcloclpcbjclqccZclrclrcbjcblclscbnbPtcgscltcgscgscgscgscgscgscgscluclvcguclwclxclycguafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOclzcjZcjZclAciecieckbckbclBckbckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaebPIclCclDclEbRybRAclFbRyclGclHbRAbPIbPIbYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaceYcincincinceYbYPclIclJclKckmcfbcfbclLclMclNclOclPclPclPclQcgQcgQcgQcizcgSclRcktclScktclTcgWckvckwclUckwclVcgWclWclXclYchcclZcmacmbcmccmdcmecmfcmgcmhcmicmjcmkcmlcmmcmnchhcfIccuccucmockPckQcmpcmqcmrcjlcmscmtcmucmvcmwcmxcmycmzcmAcmBcmCcmDcjucmEchxcmFcmGcmHcmIcmJcmKcmLclpcllcmMcjGcjGcjGcmNcmOclpcbjcmPccZclrclrcbjcmQcmRcbnbPtcmScmTcmUcgscmVcmWcmXcmYcmZcnacnbcgucnccndcnecgucgscgscgscgEcgEcgEcgEcgEaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaacnfcieclzciecieckbckbckbckbckbckbckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaebPIclCclDclEbRybRAclFbRyclGclHbRAbPIbPIbYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaceYcincincinceYbYPclIclJclKckmcfbcfbclLclMclNclOclPclPclPclQcgQcgQcgQcizcgSclRcktclScktclTcgWckvckwclUckwclVcgWclWclXclYchcclZcmacmbcmccmdcmecmfcmgcmhcmicmjcmkcmlcmmcmnchhcfIccuccucmockPckQcmpcmqcmrbTFcmscmtcmucmvcmwcmxcmycmzcmAcmBcmCcmDcjucmEchxcmFcmGcmHcmIcmJcmKcmLclpcllcmMcjGcjGcjGcmNcmOclpcbjcmPccZclrclrcbjcmQcmRcbnbPtcmScmTcmUcgscmVcmWcmXcmYcmZcnacnbcgucnccndcnecgucgscgscgscgEcgEcgEcgEcgEaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaacnfcieclzciecieckbckbckbckbckbckbckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaebPIbPIbPIbPIbPIbPIbPIbPIbPIbPIbYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabafOcgQcngcngcgQcngcngcgQaaaaaacgAcnhcnicnjcgAbYPbYPbYPcamcnkcnlcnmcnmcnmcamcamcgQcnncnocnpcnqcgQcnrcnscgSclRcktcktcktcntcgWckvckwckwcnucnvcnwcnxcnycnzchcchcchcchcchccnAchcchccnBcnCchhchhcnDchhchkchhchhcaAcnEcnEcaAcnFcnGcnHcnIcnJcnKcnLcnMcnNcnObQVcnPcmycmzcnQcnRcnScnTcnUcnVchxcnWcnXcnYcnZcoacobcoccodcoecodcofcofcofcodcogcodcodcohcoiclrclrcbjcojclscbncbucolcomconceAcopcoqcoqcorcoscotcoucovcowcoxcoycozcoAcoBcoCcoEcoDcoGcoFcoHaabaabaabaabaabaabaabaabaaaaaaaaaaaaaaacidciecoIcoJcoJckbckbckbckbckbckbckbckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaacgQcoKcoLcgQcoKcoLcgQaaaaaacoMceXcoNceXcoOaaaaabaaacamcamcamcamcamcamcamcoPcgQcoQcoRcoScoTclPcoUcoVcgScoWcoXcoYcktcoZcpacpbcpccpdcpecpfcgWcpgcphcpicpjcpkcpkcpkcpkcplcpmcpncpocpocppcppcpqcprcpschfcaAcptcpucpvcpwcpxckQcpycnIcpzcpAcpBcpCceicpDcpEcpFcpGcpHcpHcpIcpHcpHcpHcpJchxcpKcpLcpMcpNcpOcpPcpQcpRcpScpRcpTcpUcpVcpRcpWcpXcodcpYcpZcdacbjcbjcqacqbcqccqdcqecqfcqgcqhcqicqjcqkcqlcqmcqncqocqpcqqcqrcqqcqscqrcqrcqucqwcqvcrYcqxcrZaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaacieciecqyckbckbckbckbckbckbckbckbckbckbckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafOaaaafOcgQcqzcoLcgQcqzcoLcgQaaaaaaaabaabaabaabaabaabaabaabaabcgQcoLcqAcqBcgQcqCcqDcgQcqEcgQcgQcqFcgQcgQcqGcgScqHcqIcqJcqKcqLcqMcqNcqOcqPcqQcqRcpacqScqTcqUcqVcqWcqWcqWcqWcqXcqYcqZcracrbcracrccrdcrecrfcrgcrhcricrjcrkcrlcrmcrncrocrpcrqcrrcrscrtcrucrvcrwcrxcrybXubXucrzcrAcrBcrtcrCcrDcrDcrEcrDcrFcrGcrHcrIcpRcrJcrKcrLcrMcrLcrNcrOcrPcodcbjcgUcbjcbjcrRcrSclsbLRbPtcgscrTcgscgscrUcrVcrWcrXcsacsdcsbcsfcsecsgcsecsgctGcsgctHcgEctIcvdcvccveaabaabaabaabaabaabaabaabaaaaaaaaaaaaaaacieckbckbckbckbckbckbcshckbcsickbckbckbckbckbciecieaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -9242,7 +9243,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvaabcTNcTOcTOcTPcTQcTRcTRcTRcTQcTRcTRcTRcTQcTRcTRcTRcTScTOcTOcTOcTOcTOcTTcTUcTVcTWcTXcTYcTZcUacUbcNBcLucUccRCcKbcKbcKbcUdcMscSUcUecUfcUgcUhcUicUjcUkcUlcUmcUncUocUpcUqcUrcUscUncUtcUucTecUvcRXcRXcRXcUwcPTcUxcUxcSdcUycUzcUAcITcUCcUDcUEcUFcUGcUHcUIcSmcUJcSncUKcSqcSqcQZcRacBQcOYcQkcULcUMcUNcQncQkcUOcUPcQncQkcUQcURcUScUTcUTcQkcBOcsLcUUcBPaaacBRcJKcMgcJKcUVcMicEHcUWcUXcUYcEHcUZcVacxNcxNcxNcBRaaaaaaaabaabaaaaaaaaaaaaaaabGHcJQcERbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwaaaaabaaaaabaabcVbaabaaaaabcVbaabaaaaabcVbaabaaaaaaaaaaaaaaaaaaaaaaaaaaacRzcRzcRzcVccVdcVecRAcVfcNBcNEcSRcSRcSRcSRcVgcSRcUbcSUcVhcVicVjcVkcVlcVmcVncVocVpcVqcVrcVscVtcVucVvcVwcUtcTdcTecVxcVycRXcRXcVzcPTcVAcVBcSdcVCcQPcVDcVEcVFcVGcVHcVIcVJcVKcVJcVLaabcQZcQZcQZcQZcQZcRacBPcOYcQkcVMcVNcVOcVPcVQcVRcVScVTcVUcVVcVWcSAcVXcVYcQkcBOcsLcVZcBPaaacBRcJKcJKcJKcWacWbcWccWdcWecWfcEHcEHcEHcEHcWgcWhcWiaaaaaaaaaaabaabaaaaaaaaaaaabGHbGHcERbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwalwalvalwaabcNxcWjcNzaaacNxcWjcNzaaacNxcWjcNzaabaaaaaaaaaaaaaaaaaaaaaaaaaabaabcRzcRAcRAcRAcRAcWkcWlcWmcNBcWncNBcNBcMscWocNBcSUcWpcWqcVjcWrcUicWscWtcWucWucWvcWwcWxcWycWzcWAcWvcWBcWCcWDcWEcWFcWGcWHcWIcWJcWKcUAcWLcWMcWNcWOcWPcWQcWRcWScWTcWUcWVcWWcWXcQicSncWYcWZcWZcQZcRacBPcOYcQkcQkcQkcQkcQkcXacXbcXccXdcXecXfcXgcXhcXicXjcQkcBOcXkcXlcXlcXlcXmcXmcXmcXmcXmcXncXocXpcXqcXrcNkcXscNkcXscNkcXtcWiaaaaaaaaaaaaaabaabaaaaaaaaaaaabGHcERbGHaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNxcWjcNzaabcNxcWjcNzaaacNxcWjcNzaaaaaaaaaaaaaabaaaaaaaaaaaaaabaabaabaaaaaaaabaabcXucXucXucXucXucXucXucXvcXucXucSUcXwcXxcVjcWrcUicXycUicUicXzcRRcXAcXBcUrcXCcXDcRRcXEcRXcTecXFcXGcXHcWHcXIcXJcXKcXLcXMcXNcXOcXLcXPcXQcXRcXScSdcXTcXUcXVcXWaabcTocXXcXYcXZcQZcRacBQcYacYbcYbcYbcYccQkcYdcUMcYecYfcURcYgcUTcUTcURcYhcQkcBOcYichfcsLcYjcYkcBPaaaaaacBRcYlcYmcYncYocYlcYmcYpcYqcYlcYmcYrcBRaabaabaabaabaabaabaabaabaabaabbGHcERbGHbGHbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacYsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNxcWjcNzaabcNxcWjcNzaaacNxcWjcNzaaaaaaaaaaaaaabaaaaaaaaaaaaaabaabaabaaaaaaaabaabcXucXucXucXucXucXucXucXvcXucXucSUcXwcXxcVjcWrcUicXycUicUicXzcRRcXAcgocUrcXCcXDcRRcXEcRXcTecXFcXGcXHcWHcXIcXJcXKcXLcXMcXNcXOcXLcXPcXQcXRcXScSdcXTcXUcXVcXWaabcTocXXcXYcXZcQZcRacBQcYacYbcYbcYbcYccQkcYdcUMcYecYfcURcYgcUTcUTcURcYhcQkcBOcYichfcsLcYjcYkcBPaaaaaacBRcYlcYmcYncYocYlcYmcYpcYqcYlcYmcYrcBRaabaabaabaabaabaabaabaabaabaabbGHcERbGHbGHbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacYsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvaabcNxcWjcNzaaacNxcWjcNzaaacNxcWjcNzaabaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaabaabaabcXucYtcYtcYucYvcYwcYwcYxcYycYycYzcYAcYBcVjcWrcVjcYCcVjcVjcVjcRRcYDcYEcYFcYGcYHcYIcYJcKmcYLcYMcYMcYMcYNcYOcYPcYQcYRcYScVCcQPcYTcYUcYVcYWcYXcSdcXTcYYcYZcZacZbcSncZccWZcWZcQZcRacBQcOYchfchfchfckJcQkcZdcZecZfcZgcURcZhcZicUTcZjcZkcQkcBOcYichfcsLcJGcsLcBPaaaaaacBRcZlcZmcZncxNcZocZpcZqcxNcZrcZscZtcBRaabaabaaaaaaaaaaaaaaaaaaaaaaaabGHcERbGGbGGbGHaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvaabcNxcWjcNzaaacNxcWjcNzaabcNxcWjcNzaabaabaabaabaaaaabaaaaaaaabaabaaaaaaaaaaabaaaaaacXucYtcYtcYucZucZucZucZvcZwcZxcSUcZycZzcZAcZBcZCcZDcZEcZFcZFcZGcZHcZIcVjcVjcVjcZJcZKcZLcZMcZNcZOcZPcZQcZRcSUcZScZScZTcVCcQPcZUcZVcZWcZXcZYcSdcZZdaadabdacdadcQZcQZcQZcQZcQZcRacBQcOYdaecsLcsLckJcQkdafcSAcSAdagdahdaidajcUTdakdalcQkcBOcYicMfcsLcuccTBcBPaaaaaacBRcMkcJKcJKcxNcMkcJKcJKcxNcMkcJKcJKcBRaaaaabaabaaaaaaaaaaaaaaacuQcuQbGHdamcuQbGGbGHbGHbGHcTMcTMaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamhaabcNxdancNzaaacNxdancNzaaacNxdancNzaabalvaabaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaabcXudaodapcZucZucZudaqdardardardardardardardasdatdaudavdawdawdawdaxdaydazdaAdaBdawdaydaCcMjdaEcZOdaFcZQcZRdaGdaHdaIdaJdaKdaLdaMdaNcYXdaOdaPdaQdaRdaSdaTcWXdaUcSndaVdaWdaWcQZcRacBPcOYchfcBNdaXckJcQkdaYcSAdaZdbacURdbbdbccUTdbddbecQkcBOcYichfcsLchfchfcBPaabaabcBRdbfcKZcJKcxNdbfcKZcJKcxNdbfcKZcJKcBRaaaaaaaabaabaaaaaaaaaaaacuQdbgbGGcERcuQdbhcuQdbibGHaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/code/game/machinery/computer/id_demoter.dm b/code/game/machinery/computer/id_demoter.dm new file mode 100644 index 00000000000..50fbc36a25d --- /dev/null +++ b/code/game/machinery/computer/id_demoter.dm @@ -0,0 +1,58 @@ +/obj/machinery/computer/id_demoter + name = "ID Demotion Terminal" + desc = "Allows heads of staff to demote members of their department, by swiping their ID, then the ID of the person they wish to demote." + icon_state = "guest" + icon_screen = "pass" + var/headname = null + var/headrank = null + var/list/headaccess = list() + +/obj/machinery/computer/id_demoter/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/weapon/card/id)) + var/obj/item/weapon/card/id/D = I + + if(headaccess.len > 0) + if(D.registered_name == headname) + visible_message("[src]: You cannot demote your own ID. Swipe the ID of the person you wish to demote on this console.") + playsound(src, 'sound/machines/buzz-two.ogg', 50, 1) + return + if(D.assignment == "Civilian") + visible_message("[src]: Civilian IDs cannot be demoted any further using this console.") + playsound(src, 'sound/machines/buzz-two.ogg', 50, 1) + return + // Stop heads from demoting the staff of other departments. HoP/Captain can still demote anyone. + if(!(access_change_ids in headaccess)) + for(var/thisaccess in D.access) + if(!(thisaccess in headaccess)) + visible_message("[src]: [headrank] [headname] cannot use this method to demote [D.assignment] [D.registered_name]. Contact the Head of Personnel.") + playsound(src, 'sound/machines/buzz-two.ogg', 50, 1) + return + visible_message("[src]: [headrank] [headname] has demoted [D.registered_name] from [D.assignment] to Civilian. Remember to recover any job-specific items they may have.") + playsound(src.loc, 'sound/machines/twobeep.ogg', 50, 0) + var/datum/job/civilian/C = new/datum/job/civilian + D.access = C.get_access() + D.assignment = "Civilian" + D.name = text("[D.registered_name]'s ID Card ([D.assignment])") + D.icon_state = "id" + + else + if(!(D.assignment in command_positions)) + visible_message("[src]: Access Denied. You must swipe a head of staff's ID on this machine first, then swipe the ID of the person you wish to demote.") + playsound(src, 'sound/machines/buzz-two.ogg', 50, 1) + return + headname = D.registered_name + headrank = D.assignment + headaccess = D.access + if(access_change_ids in headaccess) + visible_message("[src]: [headrank] [headname] recognized. Swipe any ID on this console, and that ID will be demoted to Civilian.") + else + visible_message("[src]: [headrank] [headname] recognized. Swipe any ID from your department on this console, and that ID will be demoted to Civilian.") + playsound(src.loc, 'sound/machines/twobeep.ogg', 50, 0) + spawn(300) + if(headaccess.len) + visible_message("[src] beeps: [headrank] [headname] has been automatically logged out. Please swipe your ID again if you wish to demote any more IDs.") + headname = null + headrank = null + headaccess = list() + else + . = ..() diff --git a/paradise.dme b/paradise.dme index 258cabc1507..610c303ffd5 100644 --- a/paradise.dme +++ b/paradise.dme @@ -582,6 +582,7 @@ #include "code\game\machinery\computer\HolodeckControl.dm" #include "code\game\machinery\computer\hologram.dm" #include "code\game\machinery\computer\honkputer.dm" +#include "code\game\machinery\computer\id_demoter.dm" #include "code\game\machinery\computer\law.dm" #include "code\game\machinery\computer\medical.dm" #include "code\game\machinery\computer\message.dm" From 6bd4f36db9ae8729f88308f535bca9584a50c8c8 Mon Sep 17 00:00:00 2001 From: Kyep Date: Tue, 14 Mar 2017 00:13:40 -0700 Subject: [PATCH 2/9] Density --- code/game/machinery/computer/id_demoter.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/game/machinery/computer/id_demoter.dm b/code/game/machinery/computer/id_demoter.dm index 50fbc36a25d..5e2f95a1ea2 100644 --- a/code/game/machinery/computer/id_demoter.dm +++ b/code/game/machinery/computer/id_demoter.dm @@ -1,6 +1,7 @@ /obj/machinery/computer/id_demoter name = "ID Demotion Terminal" desc = "Allows heads of staff to demote members of their department, by swiping their ID, then the ID of the person they wish to demote." + density = 0 icon_state = "guest" icon_screen = "pass" var/headname = null From eb2def036c3fbc472d4533da0d97d8d629aaf5b7 Mon Sep 17 00:00:00 2001 From: Kyep Date: Tue, 14 Mar 2017 03:42:47 -0700 Subject: [PATCH 3/9] Brigphys and Geneticist are now demotable --- code/game/jobs/job/job.dm | 4 +++- code/game/jobs/job/medical.dm | 1 + code/game/jobs/job/security.dm | 1 + code/game/machinery/computer/id_demoter.dm | 21 +++++++++++++++------ 4 files changed, 20 insertions(+), 7 deletions(-) diff --git a/code/game/jobs/job/job.dm b/code/game/jobs/job/job.dm index 4d0b4d51dd3..cdef04d836c 100644 --- a/code/game/jobs/job/job.dm +++ b/code/game/jobs/job/job.dm @@ -45,6 +45,8 @@ var/is_science var/is_security + var/list/demotable_by = list() + //If you have use_age_restriction_for_jobs config option enabled and the database set up, this option will add a requirement for players to be at least minimal_player_age days old. (meaning they first signed in at least that many days before.) var/minimal_player_age = 0 @@ -228,7 +230,7 @@ var/datum/job/J = job_master.GetJobType(jobtype) if(!J) J = job_master.GetJob(H.job) - + var/alt_title if(H.mind) alt_title = H.mind.role_alt_title diff --git a/code/game/jobs/job/medical.dm b/code/game/jobs/job/medical.dm index 3c6d6f7fe01..ac86958f6ac 100644 --- a/code/game/jobs/job/medical.dm +++ b/code/game/jobs/job/medical.dm @@ -146,6 +146,7 @@ minimal_access = list(access_medical, access_morgue, access_genetics, access_research, access_maint_tunnels) minimal_player_age = 3 outfit = /datum/outfit/job/geneticist + demotable_by = list("Chief Medical Officer", "Research Director") /datum/outfit/job/geneticist name = "Geneticist" diff --git a/code/game/jobs/job/security.dm b/code/game/jobs/job/security.dm index 62b248c4875..0395aa53f4b 100644 --- a/code/game/jobs/job/security.dm +++ b/code/game/jobs/job/security.dm @@ -203,6 +203,7 @@ access = list(access_medical, access_morgue, access_surgery, access_chemistry, access_virology, access_genetics) minimal_access = list(access_medical, access_morgue, access_surgery, access_security, access_sec_doors, access_brig, access_court, access_maint_tunnels) outfit = /datum/outfit/job/brigdoc + demotable_by = list("Head of Security") /datum/outfit/job/brigdoc name = "Brig Physician" diff --git a/code/game/machinery/computer/id_demoter.dm b/code/game/machinery/computer/id_demoter.dm index 5e2f95a1ea2..83d50096808 100644 --- a/code/game/machinery/computer/id_demoter.dm +++ b/code/game/machinery/computer/id_demoter.dm @@ -23,11 +23,19 @@ return // Stop heads from demoting the staff of other departments. HoP/Captain can still demote anyone. if(!(access_change_ids in headaccess)) - for(var/thisaccess in D.access) - if(!(thisaccess in headaccess)) - visible_message("[src]: [headrank] [headname] cannot use this method to demote [D.assignment] [D.registered_name]. Contact the Head of Personnel.") - playsound(src, 'sound/machines/buzz-two.ogg', 50, 1) - return + var/datum/job/J = job_master.GetJob(D.assignment) + var/fail_demote = 0 + if(J && J.demotable_by.len) + if(!(headrank in J.demotable_by)) + fail_demote = 1 + else + for(var/thisaccess in D.access) + if(!(thisaccess in headaccess)) + fail_demote = 1 + if(fail_demote) + visible_message("[src]: [headrank] [headname] cannot use this method to demote [D.assignment] [D.registered_name]. Contact the Head of Personnel.") + playsound(src, 'sound/machines/buzz-two.ogg', 50, 1) + return visible_message("[src]: [headrank] [headname] has demoted [D.registered_name] from [D.assignment] to Civilian. Remember to recover any job-specific items they may have.") playsound(src.loc, 'sound/machines/twobeep.ogg', 50, 0) var/datum/job/civilian/C = new/datum/job/civilian @@ -51,7 +59,8 @@ playsound(src.loc, 'sound/machines/twobeep.ogg', 50, 0) spawn(300) if(headaccess.len) - visible_message("[src] beeps: [headrank] [headname] has been automatically logged out. Please swipe your ID again if you wish to demote any more IDs.") + visible_message("[src]: [headrank] [headname] has been automatically logged out. Please swipe your ID again if you wish to demote any more IDs.") + playsound(src, 'sound/machines/buzz-two.ogg', 50, 1) headname = null headrank = null headaccess = list() From 4a3fb73a61f6efcb12af7bde46f250d13350ce54 Mon Sep 17 00:00:00 2001 From: Kyep Date: Wed, 15 Mar 2017 01:25:06 -0700 Subject: [PATCH 4/9] Removes demotion consoles. Ports TGstation department management consoles instead. --- _maps/map_files/cyberiad/cyberiad.dmm | 34 ++--- code/game/jobs/job/civilian.dm | 1 + code/game/jobs/job/engineering.dm | 4 + code/game/jobs/job/job.dm | 1 + code/game/jobs/job/medical.dm | 8 +- code/game/jobs/job/science.dm | 3 + code/game/jobs/job/security.dm | 7 +- code/game/jobs/job/silicon.dm | 2 + code/game/jobs/job/supervisor.dm | 6 + code/game/jobs/job/support.dm | 11 ++ code/game/jobs/job/support_chaplain.dm | 1 + .../game/machinery/computer/buildandrepair.dm | 14 ++- code/game/machinery/computer/card.dm | 117 +++++++++++++++--- code/game/machinery/computer/id_demoter.dm | 68 ---------- icons/obj/computer.dmi | Bin 39413 -> 40395 bytes nano/templates/identification_computer.tmpl | 69 +++++++---- paradise.dme | 1 - 17 files changed, 211 insertions(+), 136 deletions(-) delete mode 100644 code/game/machinery/computer/id_demoter.dm diff --git a/_maps/map_files/cyberiad/cyberiad.dmm b/_maps/map_files/cyberiad/cyberiad.dmm index 5d21466ff34..d1ca407fa39 100644 --- a/_maps/map_files/cyberiad/cyberiad.dmm +++ b/_maps/map_files/cyberiad/cyberiad.dmm @@ -440,8 +440,8 @@ "aix" = (/obj/machinery/computer/security{network = list("SS13","Research Outpost","Mining Outpost")},/obj/machinery/requests_console{announcementConsole = 1; department = "Head of Security's Desk"; departmentType = 5; name = "Head of Security Requests Console"; pixel_y = 30},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/hos) "aiy" = (/obj/machinery/computer/secure_data,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/hos) "aiz" = (/obj/structure/table/woodentable,/obj/item/weapon/folder/red,/obj/item/weapon/folder/red,/obj/item/weapon/cartridge/detective,/obj/item/device/megaphone,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/hos) -"aiA" = (/obj/machinery/photocopier,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/hos) -"aiB" = (/obj/item/weapon/twohanded/required/kirbyplants,/obj/machinery/newscaster/security_unit{pixel_y = 33},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/hos) +"aiA" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/computer/card/minor/hos,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/hos) +"aiB" = (/obj/machinery/newscaster/security_unit{pixel_y = 33},/obj/machinery/photocopier,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/hos) "aiC" = (/obj/machinery/door/poddoor/shutters{density = 0; dir = 8; icon_state = "shutter0"; id_tag = "voxshutters"; name = "Blast Shutters"; opacity = 0},/obj/structure/grille,/obj/structure/shuttle/window{dir = 4; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5_mid"; tag = "icon-window5 (EAST)"},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox) "aiD" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox) "aiE" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/table,/obj/machinery/recharger{pixel_y = 0},/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox) @@ -539,7 +539,7 @@ "aks" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/camera{c_tag = "Brig Prison Hallway"; dir = 4; network = list("Prison","SS13")},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/security/permabrig) "akt" = (/obj/structure/rack,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/item/weapon/gun/energy/gun/advtaser{pixel_x = -3; pixel_y = 3},/obj/item/weapon/gun/energy/gun/advtaser{pixel_x = 0; pixel_y = 0},/obj/item/weapon/gun/energy/gun/advtaser{pixel_x = 3; pixel_y = -3},/turf/simulated/floor/plasteel{dir = 8; icon_state = "vault"; tag = "icon-vault (WEST)"},/area/security/securearmoury) "aku" = (/obj/structure/rack,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/shield/riot,/obj/item/weapon/shield/riot,/obj/item/weapon/shield/riot,/turf/simulated/floor/plasteel{dir = 8; icon_state = "vault"; tag = "icon-vault (WEST)"},/area/security/securearmoury) -"akv" = (/obj/structure/table/woodentable,/obj/machinery/photocopier/faxmachine{department = "Head of Security's Office"},/obj/machinery/computer/id_demoter{pixel_x = -28},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/hos) +"akv" = (/obj/structure/table/woodentable,/obj/machinery/photocopier/faxmachine{department = "Head of Security's Office"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/hos) "akw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/carpet,/area/security/hos) "akx" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/hos) "aky" = (/obj/machinery/portable_atmospherics/canister/oxygen,/obj/effect/decal/warning_stripes/blue/hollow,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel,/area/security/podbay) @@ -2528,7 +2528,7 @@ "aWF" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva) "aWG" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ai_monitored/storage/eva) "aWH" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva) -"aWI" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/computer/id_demoter{pixel_x = 28},/turf/simulated/floor/plasteel,/area/crew_quarters/heads) +"aWI" = (/obj/item/weapon/twohanded/required/kirbyplants,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/hos) "aWJ" = (/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 32},/turf/simulated/floor/plasteel{icon_state = "bluecorner"},/area/hallway/primary/fore) "aWK" = (/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutral"},/area/crew_quarters/fitness) "aWL" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 32},/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 4},/area/crew_quarters/fitness) @@ -2603,7 +2603,7 @@ "aYc" = (/obj/structure/table/reinforced,/obj/machinery/cell_charger,/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = -7},/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = -7},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva) "aYd" = (/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 = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ai_monitored/storage/eva) "aYe" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/table/reinforced,/obj/item/weapon/book/manual/evaguide,/obj/item/stack/tape_roll,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva) -"aYf" = (/obj/item/weapon/cartridge/signal/toxins,/obj/item/weapon/cartridge/signal/toxins{pixel_x = -4; pixel_y = 2},/obj/item/weapon/cartridge/signal/toxins{pixel_x = 4; pixel_y = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/camera{c_tag = "Research Director's Office"; dir = 1; network = list("Research","SS13")},/obj/item/clothing/glasses/welding/superior,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/table/glass,/obj/machinery/computer/id_demoter{pixel_y = -28},/turf/simulated/floor/plasteel{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/hor) +"aYf" = (/obj/machinery/ai_status_display{pixel_y = 32},/obj/machinery/computer/card/minor/rd,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/crew_quarters/hor) "aYg" = (/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/fore) "aYh" = (/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{icon_state = "bluecorner"},/area/hallway/primary/fore) "aYi" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall,/area/crew_quarters/sleep) @@ -5073,7 +5073,7 @@ "bTC" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel,/area/crew_quarters/heads) "bTD" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/pdapainter,/turf/simulated/floor/carpet,/area/crew_quarters/heads) "bTE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/carpet,/area/crew_quarters/heads) -"bTF" = (/obj/structure/disposalpipe/segment,/obj/machinery/computer/id_demoter{pixel_x = -28},/turf/simulated/floor/plasteel{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/medical/cmo) +"bTF" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plasteel,/area/crew_quarters/heads) "bTG" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/wall/r_wall,/area/crew_quarters/heads) "bTH" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/wall/r_wall,/area/server) "bTI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = "0"},/turf/simulated/wall/r_wall,/area/server) @@ -5403,7 +5403,7 @@ "bZU" = (/obj/machinery/computer/aifixer,/obj/machinery/requests_console{announcementConsole = 1; department = "Research Director's Desk"; departmentType = 7; name = "Research Director Requests Console"; pixel_x = -2; pixel_y = 30},/turf/simulated/floor/plasteel{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/hor) "bZV" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/rack,/obj/item/weapon/circuitboard/aicore{pixel_x = -2; pixel_y = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/crew_quarters/hor) "bZW" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/crew_quarters/hor) -"bZX" = (/obj/machinery/ai_status_display{pixel_y = 32},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/crew_quarters/hor) +"bZX" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/table/reinforced,/obj/item/weapon/clipboard,/obj/item/weapon/folder/yellow,/obj/item/weapon/stamp/ce,/obj/item/weapon/book/manual/sop_engineering,/obj/item/weapon/lighter/zippo,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen/multi,/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office) "bZY" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating,/area/maintenance/asmaint2) "bZZ" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/asmaint2) "caa" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research_shuttle_dock) @@ -5732,7 +5732,7 @@ "cgl" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall/r_wall,/area/crew_quarters/hor) "cgm" = (/obj/structure/cable,/obj/machinery/light_switch{pixel_y = -23},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/item/weapon/twohanded/required/kirbyplants,/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24; shock_proof = 0},/turf/simulated/floor/plasteel{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/hor) "cgn" = (/obj/machinery/keycard_auth{pixel_x = 0; pixel_y = -24},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/light,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/photocopier/faxmachine{department = "Research Director's Office"},/obj/structure/table/glass,/turf/simulated/floor/plasteel{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/hor) -"cgo" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/computer/id_demoter{layer = 4; pixel_y = -28},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office) +"cgo" = (/obj/item/weapon/cartridge/signal/toxins,/obj/item/weapon/cartridge/signal/toxins{pixel_x = -4; pixel_y = 2},/obj/item/weapon/cartridge/signal/toxins{pixel_x = 4; pixel_y = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/camera{c_tag = "Research Director's Office"; dir = 1; network = list("Research","SS13")},/obj/item/clothing/glasses/welding/superior,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/table/glass,/turf/simulated/floor/plasteel{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/hor) "cgp" = (/obj/structure/closet/secure_closet/RD,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/plasteel{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/hor) "cgq" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plasteel{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/hor) "cgr" = (/obj/machinery/photocopier,/turf/simulated/floor/plasteel{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/hor) @@ -7927,8 +7927,7 @@ "cWw" = (/obj/structure/closet/secure_closet/engineering_chief{req_access_txt = "0"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office) "cWx" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office) "cWy" = (/obj/structure/table/reinforced,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/machinery/photocopier/faxmachine{department = "Chief Engineer's Office"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office) -"cWz" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/table/reinforced,/obj/item/weapon/clipboard,/obj/item/weapon/folder/yellow,/obj/item/weapon/stamp/ce,/obj/item/weapon/book/manual/sop_engineering,/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office) -"cWA" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/lighter/zippo,/obj/item/weapon/pen/multi,/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office) +"cWz" = (/obj/machinery/computer/card/minor/ce,/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office) "cWB" = (/obj/structure/closet/secure_closet/engineering_welding,/turf/simulated/floor/plasteel,/area/engine/equipmentstorage) "cWC" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plasteel,/area/engine/equipmentstorage) "cWD" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel,/area/engine/equipmentstorage) @@ -7981,6 +7980,7 @@ "cXy" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/engine/hardsuitstorage) "cXz" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_engineering{name = "Storage"; req_access_txt = "11"; req_one_access_txt = null},/turf/simulated/floor/plasteel,/area/engine/hardsuitstorage) "cXA" = (/obj/machinery/camera{c_tag = "Engineering Chief Engineer's Office"; dir = 4; network = list("SS13")},/obj/item/device/radio/intercom{name = "station intercom (General)"; pixel_x = -28; pixel_y = 0},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office) +"cXB" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office) "cXC" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/stool/bed/chair{dir = 1},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office) "cXD" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 4; name = "east bump Engineering"; pixel_x = 24; shock_proof = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office) "cXE" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/structure/closet/secure_closet/engineering_electrical,/turf/simulated/floor/plasteel,/area/engine/equipmentstorage) @@ -9132,7 +9132,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaababNajJajKaivajLajMajNajOajPajQajRaivaaaaaaaaaaaaaaaaaaaihajSajTajUajVaiYajWaihajXajwajwajwajwajxajyaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagwajYajYagZagZagZagwajZahaahaahaakaagwagZagZagZajYajYagwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaababNahRaigaivakbakcakdajOakeakfakgaivaaaaaaaaaaaaaaaakhaihakiakjakkaklaiYakmaihaknajwakoajwajwajxajyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahsakpakpahnaaaaaaagwakqahaahaahaakragwaaaaaaahsakpakpahnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaaaaabaaaaaaaaaaababNaksaigaivaktakcakdajOakeakfakuaivaaaaaaaaaaaaaaaaaaaihakvajTakwajVaiYakxaihakyajwajwajwajwakzajyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagwakAahaahaahaakragwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakBakBakBakBakBakBakBakBakBaabaaaaaaaaaaabaabaabaabaabaababNajJaigaivaivakCakDakEakFakGaivaivaaaaaaaaaaaaaaaaaaaihakHakIakJaiYakKakLaihakMacbakOakOakPajbafXakQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagwakRakSahZakRakSagwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakBakBakBakBakBakBakBakBakBaabaaaaaaaaaaabaabaabaabaabaababNajJaigaivaivakCakDakEakFakGaivaivaaaaaaaaaaaaaaaaaaaihakHakIakJaWIakKakLaihakMacbakOakOakPajbafXakQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagwakRakSahZakRakSagwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakBakTakUakVakWakXakUakYakBaabaaaaaaaabakZakZakZakZakZakZabNalaalbalcaivaldalealfalgalhaivalialialjalkallalialiaihalmalnaloalpalqaihaihalralsaltaltaluajbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvalvalvalwalwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagwalxalyahaalzalAagwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakBalBalCalDakWalBalCalDakBaaaaaaaaaaabakZalEalFalGalHalIalJalKalLalMaivaivalNalOalPaivaivalialQalRalSalTalUalVakNalXalYalZalTalTamaambamcamdameamfamgajbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaalvaaaaabaaaamhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagwamiamjahaamkamlagwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakBammalDamnakWamoalDampakBaabaaaaaaaaaakZamqamramsamtamuamvamwafeamxamyamzamAamBamCamDamEamFamGamHamIamHamHamJamKamLamMamNamHamHamOamPamQamRamSamTamUamVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamWaabamXaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahsagZamYamZanaagZahnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -9203,18 +9203,18 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdbKpbKpbKEaSdaSdaUlaLdaSdaSdbCfbOabIBbIBbIBbCfbCfbCfaaaaaaaaabObbOcbOcbOdbOcbOcbObaaaaaabKBbOebKzbOfbOgbOgbOgbOgbOgbOhbOibOgbOjbKLbOlbOmbOnbOobOpbzJbOqbBnbOrbOsbDXbOtbOubOvbMEbMEbMGbOwbOxbOybOzbOAbMGbFBbKYbFCbOBbOCbMmbOEbOFbFCaaabOGbLdbOHbOIbOJbOKbOLbOKbOMbONbOObFObOPbEobOQbOQbORbOSbOTbOUbOVbOWbOXbOYbOZbOZbPabPbbPcbPdbEtbNobPebPfbEtbEtbEubPgbPhbPibEubEubEubEubPjbPkbGqbPlbLEbLFbPmbNBbNEbPnbPobPobPpbIdbPqbPrbPsbPtbIjbPubEDbPvbPwbIpbPxbPybPzbEDbKkbPAbGHbGHaaaaaaaaaaaaaabbPBbPCbPDbPEbPFbPGbPBaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPHbPIbPIbPIbPIbPJbPKbPIbPIbPIbPIbPLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabObbOcbOcbOcbOcbOcbObbMtbKBbKBbPNbPObPPbPQbPQbPQbPObKzbIUbKAbKzbKzbKBbPRbPSbPTbPUbPVbMybPXbBnbBnbPYbDXbOtbOubPZbNXbQbbQcbQdbQebQfbQgbQhbMGbQibQjbHmbQkbQlbQmbQnbQobHsbHtbQpbLdbQqbQrbQsbOKbQtbOKbQubONbQvbFObQwbEobQxbQybQzbQAbQBbQCbQDbQEbQFbQFbQGbQHbQFbQFbQIbQJbQKbQLbQMbQNbQObQPbQQbQRbQSbQTbQUbQVbQWbQXbQYbQZbGqbRabRbbRcbRdbRebIabRfbPobPobRgbRhbPqbRibEAbRjbRjbRkbEDbRlbRmbRnbRobIpbRpbEDbKkbRqbGHaaaaaaaaaaaaaaaaabbRrbRsbPDbPFbPDbRtbNVaabaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPHbRubRvbRwbRxbRybRzbRAbRybRBbRCbRDbPIbPIbPLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabObbOcbOcbOcbOcbOcbREbRFbRGbRFbRHbRIbRJbRIbRIbRIbRIbRKbIUbKAbRLbxbbxbbRMbBnbzFbPUbRNbDXbRObRPbRPbRQbNYbRSbRTbRUbRVbRWbRXbRYbRZbSabSbbScbMGbMKbKYbFCbSdbSebSfbSgbShbFCaaabOGbSibSjbSibSibSibSibSibSkbSibSlbFObQwbEobSmbSnbSnbSobSpbOUbSqbSrbSsbStbSubSvbSwbSsbSxbSybSzbSAbSBbSCbSDbSDbSEbSFbSGbSHbSIbSJbSKbSLbSMbSNbSObSPbSPbSQbSRbSSbIabSTbIdbIdbSUbSVbPqbSWbNZbSYbSZbTabTbbOkbTdbTebODbTebEDbEDbTgbPtbThbTibTibTibTibTibThbPBbPFbPDbPFbPFbPGbPBaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPHbPIbRAbRAbRAbTjbRybTkbTkbRybTlbRAbRAbTmbTnbPIbPLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabObbOcbOcbOcbOcbOcbTobPMbTqbPMbTrbKzbPPbPQbPQbPQbKzbKzbIUbKAbTsbTtbxbbTubBnbzFbPUbTvbDXbTwbBnbBobBnbPWbOtbTybTzbRVbRWbTAbTBbTCbTDbTEaWIbTGbTHbTIbTJbTJbTKbTLbTMbFCbFCaaabOGbSibTNbTObTPbTQbTRbTSbTTbTUbTVbFObQwbNcbTWbTXbTYbTZbUabOUbUbbUcbUdbUebUfbUgbUhbUibUjbUkbUlbUmbUnbUobUpbUqbUrbUsbUtbUubUvbQVbUwbQXbUxbUybGrbUzbUAbUBbUCbUCbIabUDbUEbUFbIabUGbPqbUHbIabUIbUJbUKbULbUMbUNbUObUPbUQbURbUSbUTbUUbUVbUWbUWbUXbUYbUZbQabVbbNUbNVbVcbNVbNUbVdaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPHbPIbRAbRAbRAbTjbRybTkbTkbRybTlbRAbRAbTmbTnbPIbPLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabObbOcbOcbOcbOcbOcbTobPMbTqbPMbTrbKzbPPbPQbPQbPQbKzbKzbIUbKAbTsbTtbxbbTubBnbzFbPUbTvbDXbTwbBnbBobBnbPWbOtbTybTzbRVbRWbTAbTBbTCbTDbTEbTFbTGbTHbTIbTJbTJbTKbTLbTMbFCbFCaaabOGbSibTNbTObTPbTQbTRbTSbTTbTUbTVbFObQwbNcbTWbTXbTYbTZbUabOUbUbbUcbUdbUebUfbUgbUhbUibUjbUkbUlbUmbUnbUobUpbUqbUrbUsbUtbUubUvbQVbUwbQXbUxbUybGrbUzbUAbUBbUCbUCbIabUDbUEbUFbIabUGbPqbUHbIabUIbUJbUKbULbUMbUNbUObUPbUQbURbUSbUTbUUbUVbUWbUWbUXbUYbUZbQabVbbNUbNVbVcbNVbNUbVdaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPHbPIbVebVfbVgbVhbVibRybVjbRAbVkbRAbRAbRAbRAbRAbTjbRyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabObbVlbOcbOcbOcbVmbObbMtbKBbKBbVnbKzbPPbKzbKzbKzbKzbKzbIUbKAbTsbVobxbbVpbBnbVqbVrbBnbRRbzEbBnbBnbVtbDXbOtbTybTzbRVbRWbMGbVubVvbVwbVxbVybMHbVzbVAbVBbVCbHsbSXbVEbHsbHtbHtbVFbSibVGbVHbVIbVJbVKbVKbVLbTcbVNbFObVObEobOUbVPbOQbVQbVRbOUbUbbVSbVTbVUbVVbVWbVXbVTbUbbVYbVZbWabWbbWabWcbWabWdbWdbWebWfbWgbWgbWgbWhbWgbWgbWibWibWjbWkbWjbWjbIabIabIabIabIabWlbTfbLIbIabWnbWobWpbWqbWqbWrbWsbWtbWubWvbWwbWxbWybWzbWAbWAbWBbWCbWDbThbQabQabQabWEbThaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWFbWGbRAbRAbWHbWHbWHbRybRAbRAbRybWIbWJbWKbWLbWMbWNbRyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabObbOcbOcbOcbOcbOcbWObPMbTqbPMbPNbWPbWQbKzbKzbKzbWPbKzbIUbKAbTsbWRbxbbWSbBnbzFbPUbBnbzJbWTbBnbBnbWUbDXbOtbTybWVbRVbWWbMGbWXbWYbWZbXabXbbMHbXcbXdbXebTpbXgbXhbXibFCaaaaaaaaabSibXjbXkbXlbXlbXmbXnbXobSibXpbXqbQwbXrbXsbXtbXubXvbXwbXxbXybUcbXzbXAbXBbXCbXDbXzbUbbVYbXEbXFbXGbXHbXIbXJbWdbXKbXLbXMbXNbXObXPbXQbXRbXSbXTbXUbURbXVbWqbWqbXWbXXbWqbXYbXZbYabYbbYcbWqbYdbYebYfbYgbYhbYibYjbYkbYjbYjbYjbTgbPtbThbTibTibThbYlbYmbYnbYobYpbYqbYrbQaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYsbWGbRAbRAbRAbRAbRAbYtbRAbRAbRybPIbPIbPIbPIbPIbPIbYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabObbOcbOcbOcbOcbOcbYvbYwbYxbYwbYybYzbYAbYAbYAbYAbYAbYBbYCbYDbTsbYEbxbbYFbYGbYHbYIbYJbYKbYLbYLbYLbYMbYMbYNbTybYObTxbRWbMGbYQbYRbYSbVvbYTbMHbYUbYVbYWbTJbYXbQmbYYbFCaaaaaaaaabSibYZbZabZbbZcbXmbXnbXobSibZdbZebZfbZgbZhbZibZjbZkbZlbZmbZnbZobVTbVTbZpbZqbVTbVTbUbbVYbZrbZsbZtbZubZvbZwbWdbZxbZybZzbZAbZBbZCbZDbZDbZEbZFbZGbZHbZIbUMbUMbZJbUMbZKbUMbZLbUMbZMbZNbZNbZObZPbZQbZRbZSbZTbZUbZVbZWbZXbYjbZYbZZaaaaaaaaabThcaabUYcabbYobQacaccadbThaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYsbWGbRAbRAbRAbRAbRAbYtbRAbRAbRybPIbPIbPIbPIbPIbPIbYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabObbOcbOcbOcbOcbOcbYvbYwbYxbYwbYybYzbYAbYAbYAbYAbYAbYBbYCbYDbTsbYEbxbbYFbYGbYHbYIbYJbYKbYLbYLbYLbYMbYMbYNbTybYObTxbRWbMGbYQbYRbYSbVvbYTbMHbYUbYVbYWbTJbYXbQmbYYbFCaaaaaaaaabSibYZbZabZbbZcbXmbXnbXobSibZdbZebZfbZgbZhbZibZjbZkbZlbZmbZnbZobVTbVTbZpbZqbVTbVTbUbbVYbZrbZsbZtbZubZvbZwbWdbZxbZybZzbZAbZBbZCbZDbZDbZEbZFbZGbZHbZIbUMbUMbZJbUMbZKbUMbZLbUMbZMbZNbZNbZObZPbZQbZRbZSbZTbZUbZVbZWaYfbYjbZYbZZaaaaaaaaabThcaabUYcabbYobQacaccadbThaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaebPIcafcagcahcaibRAbRybRAbRAbRybRAcajcakcalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabObbOcbOcbOcbOcbOcbObbMtbKBbKBbxbbxbbKBbKBbKBbKBbKBbxbbxbbKBbKBbKBbxbcamcamcambVacambYMcaocapcaqcarbYMbOtbTycasbMEbMEbMGbMGbMGbMGbMGbMJbMHbTJbTIcaubTJcavbVsbFCbFCbFCbFCbFCbSibSjbSibSibSibSibSibSibSicaxbFOcaycazcaAcaBcaCcaAcaAcaDcaEcaFcaGcaHcaIcaJcaKcaLbXycaMcaNcaOcaPcaQcaRcaScaTcaUcaVcaWcaXcaYcaZcbacbbcbcbWgbWicbdcbecbdcbfbVDcbfcbfcbfcbhbVMcbjcbjcbkcblcbmcbnbZRcbocbpcbqcbrcbscbtbYjbZYbZZaaaaaaaaabThbWmcbvbThbQabThbThbQabThaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPIbPIbPIbPIbPIbPIbRybTlbRAcbwbRAcbxcbycbzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbAcbBbOccbCbOccbDcbEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbFaabaaaaaaaaaaaacamcbGcbHcbIcbJbYMcbKcbLcbMcbNbYMbOtbTycbOcbPcbQcbRcbScbTcbUcbVcbWcbXcbYcbZccaccbcccccdcceccfccgcchcciccjcckcclccmbEnccnbFOccoccpccqbFOccrcaAccscctccuccvccwbUbccxccycczccAccBccCccDccEccFccGccHbWaccIbZuccJccKccLccMccNccObXNccPbXQbXQbXQccQbWgcbdccRccSccTccUccVccWccXcbfccYccZcdacbjcbjcdbcbmcdccddcdecdfcdgcdhcdicdjbYjcdkbGHaaaaaaaaabThbThbThbThaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPHbPIcdlcdmcdncdlcdobRybRAbRAbRybRAcdpcdqcdraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdscdtcducducducdtcdvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacamcdwcdxcdycdzbYLcdAcdBcdCcdDbYMbOtcdEcdFbTybTycdGcdHcdIcdJcclcdKcdLcdKcdMcdNcdNcdOcdPcdQcdNcdNcdRcdNcdScdNcclccmbEncdTcdUcdVcdWcdXcdYbFOcaAcdZcctceaccucebbUbceccedceecefcegcehceicejbUbcekcelbWacemcencenceocepceqcercesbXNcetceubXQcevcewbWgcbdcexceycezbXfceBceCceDcbfceEccZceFceFcbjceGceHceIceJceKceLceMceNceOcePbYjbZYbGHceQaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWFbWGceRceRceRceRceRceSbRAbRAbRybPIbPIbPIbPIbPIbPIbPLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaceTceUceUceUceVaaaaaaaaaaaaaaaaaaaaaceWceXceYceXceZaaaaaaaaacamcamcamcfacfbcdycfcbYLcfdcbMcfecffbYMbOtcfgcfhcficfjcfkcflcfmcfncfocfpcfqcfrcfscftcftcfucfvcfvcfvcfvcfvcfvcfwcfxcfycfzcfAcfBcfCcfDcfEcfFcfGcfHcaAcfIcctccucfJcebbUbceccedcfKcfLcfMcfNcfOcfPbUjcfQcfRbWabWacfScfSbWacepbWdcfTcfUbWgcfVcfWcfXcfYcfZbWgcbdcgacgbcgccgdcgecgfcggcbfcghccZceFceFcbjcgicgjcgkcglcgmcgnaYfcgpcgqcgrbYjbZYcgscgtcgscgucgvcgucgucguaaaaaaaaaaaaaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaaaaaaaaaaaaaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWFbWGceRceRceRceRceRceSbRAbRAbRybPIbPIbPIbPIbPIbPIbPLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaceTceUceUceUceVaaaaaaaaaaaaaaaaaaaaaceWceXceYceXceZaaaaaaaaacamcamcamcfacfbcdycfcbYLcfdcbMcfecffbYMbOtcfgcfhcficfjcfkcflcfmcfncfocfpcfqcfrcfscftcftcfucfvcfvcfvcfvcfvcfvcfwcfxcfycfzcfAcfBcfCcfDcfEcfFcfGcfHcaAcfIcctccucfJcebbUbceccedcfKcfLcfMcfNcfOcfPbUjcfQcfRbWabWacfScfSbWacepbWdcfTcfUbWgcfVcfWcfXcfYcfZbWgcbdcgacgbcgccgdcgecgfcggcbfcghccZceFceFcbjcgicgjcgkcglcgmcgncgocgpcgqcgrbYjbZYcgscgtcgscgucgvcgucgucguaaaaaaaaaaaaaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaaaaaaaaaaaaaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYsbWGceRceRceRcgwcgxbRybRAbRAbRybRAbRAbRAcgybRAcgzbRyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacgAcgBcgCcgDcgAbYPbYPbYPcamcgFcgGcgHcgIcgJcgKcgLcgMcgNcgNcgObYMcgPcgQcgRcgScgScgTcancgVcgScgWcgWcgXcatcgZcgWcgWchacclcclchbchcchcchcchdchechcchcchfchgchhchhchichhchjchkchhchlchmchncaAchochpcecchqchrchschtchuchvchrbUbcekchwchxchychzchAchBchCchDchEchFchGchHchIchJchKchLbWicbdcbdchMchNchOchPchOchQcbfchRchSchTchTcbjcawcbicbgbYjbYjbYjbYjbYjbYjbYjbYjbZYcgschXchYchZciaciacibcguaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcicciccicciccidcidcieciecieciecifaabaabaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaebPIcigceRceRcihciibRybRAbRAcijbRAbRAbRAcikbRAcilbRyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaceYcimcincimceYbYPciocipcamciqcfbcirciscitciubYMcivciwcixciybYMcgQcgQcizcgSciAciBciCciDciEcgWciFciGciHciIciJcgWciKciLciMchcciNciOciPciQciRciSciTciUciVciWciXciYciZcjacjbcjccjdcjecjfcjgcjhcjicjjcedcjkcjlcjmcjncjocjpbUjcjqcjrcjscjtchAcjucjucjvcjwbWgcjxcjycjzcjAcjBcjCcjDbWicjEcjFcjGcjHcjGcjGcjIcjJcjKcjLcjMcjNcjOcbjcjPcjQcbnbPtbGGcjRcjScjTcjTcjScjTcjUcgscjVcjWchZciacjXcjYcguaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciccjZckacjZcidciecieckbckcckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaebPIckdceRceRckebRybRAbRAbRyckfbRAbRAckgckhbPIbYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacgAckicimcimckjckkcfbcfbcklckmcfbcfbciscknckobYMbYMbYMbYMbYMbYMckpcgQckqckrckscktcktcktckucgWckvckwckwckwckxckyckzckAckBckCckDckEckFckGckHckIchcchfckJchhckKckLckMckNckOchhcdZccuceaccuckPckQckRckSckTckUckVckWckXchrckYckZclaclbclccldcleclfclgclhbWgbWgbWgbWgbWgclicljclkbWicllcjGcjGclmclncjGcloclpcbjclqccZclrclrcbjcblclscbnbPtcgscltcgscgscgscgscgscgscgscluclvcguclwclxclycguafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOclzcjZcjZclAciecieckbckbclBckbckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaebPIclCclDclEbRybRAclFbRyclGclHbRAbPIbPIbYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaceYcincincinceYbYPclIclJclKckmcfbcfbclLclMclNclOclPclPclPclQcgQcgQcgQcizcgSclRcktclScktclTcgWckvckwclUckwclVcgWclWclXclYchcclZcmacmbcmccmdcmecmfcmgcmhcmicmjcmkcmlcmmcmnchhcfIccuccucmockPckQcmpcmqcmrbTFcmscmtcmucmvcmwcmxcmycmzcmAcmBcmCcmDcjucmEchxcmFcmGcmHcmIcmJcmKcmLclpcllcmMcjGcjGcjGcmNcmOclpcbjcmPccZclrclrcbjcmQcmRcbnbPtcmScmTcmUcgscmVcmWcmXcmYcmZcnacnbcgucnccndcnecgucgscgscgscgEcgEcgEcgEcgEaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaacnfcieclzciecieckbckbckbckbckbckbckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaebPIclCclDclEbRybRAclFbRyclGclHbRAbPIbPIbYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaceYcincincinceYbYPclIclJclKckmcfbcfbclLclMclNclOclPclPclPclQcgQcgQcgQcizcgSclRcktclScktclTcgWckvckwclUckwclVcgWclWclXclYchcclZcmacmbcmccmdcmecmfcmgcmhcmicmjcmkcmlcmmcmnchhcfIccuccucmockPckQcmpcmqcmrcjlcmscmtcmucmvcmwcmxcmycmzcmAcmBcmCcmDcjucmEchxcmFcmGcmHcmIcmJcmKcmLclpcllcmMcjGcjGcjGcmNcmOclpcbjcmPccZclrclrcbjcmQcmRcbnbPtcmScmTcmUcgscmVcmWcmXcmYcmZcnacnbcgucnccndcnecgucgscgscgscgEcgEcgEcgEcgEaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaacnfcieclzciecieckbckbckbckbckbckbckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaebPIbPIbPIbPIbPIbPIbPIbPIbPIbPIbYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabafOcgQcngcngcgQcngcngcgQaaaaaacgAcnhcnicnjcgAbYPbYPbYPcamcnkcnlcnmcnmcnmcamcamcgQcnncnocnpcnqcgQcnrcnscgSclRcktcktcktcntcgWckvckwckwcnucnvcnwcnxcnycnzchcchcchcchcchccnAchcchccnBcnCchhchhcnDchhchkchhchhcaAcnEcnEcaAcnFcnGcnHcnIcnJcnKcnLcnMcnNcnObQVcnPcmycmzcnQcnRcnScnTcnUcnVchxcnWcnXcnYcnZcoacobcoccodcoecodcofcofcofcodcogcodcodcohcoiclrclrcbjcojclscbncbucolcomconceAcopcoqcoqcorcoscotcoucovcowcoxcoycozcoAcoBcoCcoEcoDcoGcoFcoHaabaabaabaabaabaabaabaabaaaaaaaaaaaaaaacidciecoIcoJcoJckbckbckbckbckbckbckbckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaacgQcoKcoLcgQcoKcoLcgQaaaaaacoMceXcoNceXcoOaaaaabaaacamcamcamcamcamcamcamcoPcgQcoQcoRcoScoTclPcoUcoVcgScoWcoXcoYcktcoZcpacpbcpccpdcpecpfcgWcpgcphcpicpjcpkcpkcpkcpkcplcpmcpncpocpocppcppcpqcprcpschfcaAcptcpucpvcpwcpxckQcpycnIcpzcpAcpBcpCceicpDcpEcpFcpGcpHcpHcpIcpHcpHcpHcpJchxcpKcpLcpMcpNcpOcpPcpQcpRcpScpRcpTcpUcpVcpRcpWcpXcodcpYcpZcdacbjcbjcqacqbcqccqdcqecqfcqgcqhcqicqjcqkcqlcqmcqncqocqpcqqcqrcqqcqscqrcqrcqucqwcqvcrYcqxcrZaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaacieciecqyckbckbckbckbckbckbckbckbckbckbckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafOaaaafOcgQcqzcoLcgQcqzcoLcgQaaaaaaaabaabaabaabaabaabaabaabaabcgQcoLcqAcqBcgQcqCcqDcgQcqEcgQcgQcqFcgQcgQcqGcgScqHcqIcqJcqKcqLcqMcqNcqOcqPcqQcqRcpacqScqTcqUcqVcqWcqWcqWcqWcqXcqYcqZcracrbcracrccrdcrecrfcrgcrhcricrjcrkcrlcrmcrncrocrpcrqcrrcrscrtcrucrvcrwcrxcrybXubXucrzcrAcrBcrtcrCcrDcrDcrEcrDcrFcrGcrHcrIcpRcrJcrKcrLcrMcrLcrNcrOcrPcodcbjcgUcbjcbjcrRcrSclsbLRbPtcgscrTcgscgscrUcrVcrWcrXcsacsdcsbcsfcsecsgcsecsgctGcsgctHcgEctIcvdcvccveaabaabaabaabaabaabaabaabaaaaaaaaaaaaaaacieckbckbckbckbckbckbcshckbcsickbckbckbckbckbciecieaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -9242,8 +9242,8 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwaaaaabaaaaabaabcSMaabaabaabcSMaabaaaaabcSMaabaaaaaaaaaaaaaaaaaaaaaaaaaaacRzcRzcRzcSNcSOcSPcRAcSQcSRcNFcRCcRCcSScSTcKbcKbcMscSUcSUcSUcSUcSVcSWcSXcSWcSWcSWcRRcRRcSYcSZcTacTbcHBcRXcTdcTecRXcRXcRXcRXcTfcPTcTgcThcQNcSdcQPcSdcPZcSfcSgcTicTjcTkcTlcTmcTnaabcTocTpcSqcTqcQZcRacBQcRbcRccTrcTscSAcTtcQkcTucTvcTwcQkcTxcTycSAcTzcTAcQkcBOcsLcTBcBPaaacBRcKPcKQcKRcTCcPhcNkcTDcTEcTFcTGcTGcTHcTIcTJcTKcBRaabaabaabaaaaaaaaaaaaaaaaaabGHcTLcERbGHbGHbGHbGHbGHaabaabaabcTMcTMcTMcTMcTMcTMaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvaabcTNcTOcTOcTPcTQcTRcTRcTRcTQcTRcTRcTRcTQcTRcTRcTRcTScTOcTOcTOcTOcTOcTTcTUcTVcTWcTXcTYcTZcUacUbcNBcLucUccRCcKbcKbcKbcUdcMscSUcUecUfcUgcUhcUicUjcUkcUlcUmcUncUocUpcUqcUrcUscUncUtcUucTecUvcRXcRXcRXcUwcPTcUxcUxcSdcUycUzcUAcITcUCcUDcUEcUFcUGcUHcUIcSmcUJcSncUKcSqcSqcQZcRacBQcOYcQkcULcUMcUNcQncQkcUOcUPcQncQkcUQcURcUScUTcUTcQkcBOcsLcUUcBPaaacBRcJKcMgcJKcUVcMicEHcUWcUXcUYcEHcUZcVacxNcxNcxNcBRaaaaaaaabaabaaaaaaaaaaaaaaabGHcJQcERbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwaaaaabaaaaabaabcVbaabaaaaabcVbaabaaaaabcVbaabaaaaaaaaaaaaaaaaaaaaaaaaaaacRzcRzcRzcVccVdcVecRAcVfcNBcNEcSRcSRcSRcSRcVgcSRcUbcSUcVhcVicVjcVkcVlcVmcVncVocVpcVqcVrcVscVtcVucVvcVwcUtcTdcTecVxcVycRXcRXcVzcPTcVAcVBcSdcVCcQPcVDcVEcVFcVGcVHcVIcVJcVKcVJcVLaabcQZcQZcQZcQZcQZcRacBPcOYcQkcVMcVNcVOcVPcVQcVRcVScVTcVUcVVcVWcSAcVXcVYcQkcBOcsLcVZcBPaaacBRcJKcJKcJKcWacWbcWccWdcWecWfcEHcEHcEHcEHcWgcWhcWiaaaaaaaaaaabaabaaaaaaaaaaaabGHbGHcERbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwalwalvalwaabcNxcWjcNzaaacNxcWjcNzaaacNxcWjcNzaabaaaaaaaaaaaaaaaaaaaaaaaaaabaabcRzcRAcRAcRAcRAcWkcWlcWmcNBcWncNBcNBcMscWocNBcSUcWpcWqcVjcWrcUicWscWtcWucWucWvcWwcWxcWycWzcWAcWvcWBcWCcWDcWEcWFcWGcWHcWIcWJcWKcUAcWLcWMcWNcWOcWPcWQcWRcWScWTcWUcWVcWWcWXcQicSncWYcWZcWZcQZcRacBPcOYcQkcQkcQkcQkcQkcXacXbcXccXdcXecXfcXgcXhcXicXjcQkcBOcXkcXlcXlcXlcXmcXmcXmcXmcXmcXncXocXpcXqcXrcNkcXscNkcXscNkcXtcWiaaaaaaaaaaaaaabaabaaaaaaaaaaaabGHcERbGHaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNxcWjcNzaabcNxcWjcNzaaacNxcWjcNzaaaaaaaaaaaaaabaaaaaaaaaaaaaabaabaabaaaaaaaabaabcXucXucXucXucXucXucXucXvcXucXucSUcXwcXxcVjcWrcUicXycUicUicXzcRRcXAcgocUrcXCcXDcRRcXEcRXcTecXFcXGcXHcWHcXIcXJcXKcXLcXMcXNcXOcXLcXPcXQcXRcXScSdcXTcXUcXVcXWaabcTocXXcXYcXZcQZcRacBQcYacYbcYbcYbcYccQkcYdcUMcYecYfcURcYgcUTcUTcURcYhcQkcBOcYichfcsLcYjcYkcBPaaaaaacBRcYlcYmcYncYocYlcYmcYpcYqcYlcYmcYrcBRaabaabaabaabaabaabaabaabaabaabbGHcERbGHbGHbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacYsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwalwalvalwaabcNxcWjcNzaaacNxcWjcNzaaacNxcWjcNzaabaaaaaaaaaaaaaaaaaaaaaaaaaabaabcRzcRAcRAcRAcRAcWkcWlcWmcNBcWncNBcNBcMscWocNBcSUcWpcWqcVjcWrcUicWscWtcWucWucWvcWwcWxcWybZXcWzcWvcWBcWCcWDcWEcWFcWGcWHcWIcWJcWKcUAcWLcWMcWNcWOcWPcWQcWRcWScWTcWUcWVcWWcWXcQicSncWYcWZcWZcQZcRacBPcOYcQkcQkcQkcQkcQkcXacXbcXccXdcXecXfcXgcXhcXicXjcQkcBOcXkcXlcXlcXlcXmcXmcXmcXmcXmcXncXocXpcXqcXrcNkcXscNkcXscNkcXtcWiaaaaaaaaaaaaaabaabaaaaaaaaaaaabGHcERbGHaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNxcWjcNzaabcNxcWjcNzaaacNxcWjcNzaaaaaaaaaaaaaabaaaaaaaaaaaaaabaabaabaaaaaaaabaabcXucXucXucXucXucXucXucXvcXucXucSUcXwcXxcVjcWrcUicXycUicUicXzcRRcXAcXBcUrcXCcXDcRRcXEcRXcTecXFcXGcXHcWHcXIcXJcXKcXLcXMcXNcXOcXLcXPcXQcXRcXScSdcXTcXUcXVcXWaabcTocXXcXYcXZcQZcRacBQcYacYbcYbcYbcYccQkcYdcUMcYecYfcURcYgcUTcUTcURcYhcQkcBOcYichfcsLcYjcYkcBPaaaaaacBRcYlcYmcYncYocYlcYmcYpcYqcYlcYmcYrcBRaabaabaabaabaabaabaabaabaabaabbGHcERbGHbGHbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacYsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvaabcNxcWjcNzaaacNxcWjcNzaaacNxcWjcNzaabaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaabaabaabcXucYtcYtcYucYvcYwcYwcYxcYycYycYzcYAcYBcVjcWrcVjcYCcVjcVjcVjcRRcYDcYEcYFcYGcYHcYIcYJcKmcYLcYMcYMcYMcYNcYOcYPcYQcYRcYScVCcQPcYTcYUcYVcYWcYXcSdcXTcYYcYZcZacZbcSncZccWZcWZcQZcRacBQcOYchfchfchfckJcQkcZdcZecZfcZgcURcZhcZicUTcZjcZkcQkcBOcYichfcsLcJGcsLcBPaaaaaacBRcZlcZmcZncxNcZocZpcZqcxNcZrcZscZtcBRaabaabaaaaaaaaaaaaaaaaaaaaaaaabGHcERbGGbGGbGHaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvaabcNxcWjcNzaaacNxcWjcNzaabcNxcWjcNzaabaabaabaabaaaaabaaaaaaaabaabaaaaaaaaaaabaaaaaacXucYtcYtcYucZucZucZucZvcZwcZxcSUcZycZzcZAcZBcZCcZDcZEcZFcZFcZGcZHcZIcVjcVjcVjcZJcZKcZLcZMcZNcZOcZPcZQcZRcSUcZScZScZTcVCcQPcZUcZVcZWcZXcZYcSdcZZdaadabdacdadcQZcQZcQZcQZcQZcRacBQcOYdaecsLcsLckJcQkdafcSAcSAdagdahdaidajcUTdakdalcQkcBOcYicMfcsLcuccTBcBPaaaaaacBRcMkcJKcJKcxNcMkcJKcJKcxNcMkcJKcJKcBRaaaaabaabaaaaaaaaaaaaaaacuQcuQbGHdamcuQbGGbGHbGHbGHcTMcTMaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamhaabcNxdancNzaaacNxdancNzaaacNxdancNzaabalvaabaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaabcXudaodapcZucZucZudaqdardardardardardardardasdatdaudavdawdawdawdaxdaydazdaAdaBdawdaydaCcMjdaEcZOdaFcZQcZRdaGdaHdaIdaJdaKdaLdaMdaNcYXdaOdaPdaQdaRdaSdaTcWXdaUcSndaVdaWdaWcQZcRacBPcOYchfcBNdaXckJcQkdaYcSAdaZdbacURdbbdbccUTdbddbecQkcBOcYichfcsLchfchfcBPaabaabcBRdbfcKZcJKcxNdbfcKZcJKcxNdbfcKZcJKcBRaaaaaaaabaabaaaaaaaaaaaacuQdbgbGGcERcuQdbhcuQdbibGHaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/code/game/jobs/job/civilian.dm b/code/game/jobs/job/civilian.dm index 40b1dfd8bd1..4535e1c6c41 100644 --- a/code/game/jobs/job/civilian.dm +++ b/code/game/jobs/job/civilian.dm @@ -5,6 +5,7 @@ total_positions = -1 spawn_positions = -1 supervisors = "the head of personnel" + department_head = list("Head of Personnel") selection_color = "#dddddd" access = list() //See /datum/job/assistant/get_access() minimal_access = list() //See /datum/job/assistant/get_access() diff --git a/code/game/jobs/job/engineering.dm b/code/game/jobs/job/engineering.dm index b855c1d671f..af6789d5f23 100644 --- a/code/game/jobs/job/engineering.dm +++ b/code/game/jobs/job/engineering.dm @@ -6,6 +6,7 @@ spawn_positions = 1 is_engineering = 1 supervisors = "the captain" + department_head = list("Captain") selection_color = "#ffeeaa" req_admin_notify = 1 access = list(access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels, @@ -51,6 +52,7 @@ spawn_positions = 5 is_engineering = 1 supervisors = "the chief engineer" + department_head = list("Chief Engineer") selection_color = "#fff5cc" access = list(access_eva, access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels, access_external_airlocks, access_construction, access_atmospherics, access_mineral_storeroom) minimal_access = list(access_eva, access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels, access_external_airlocks, access_construction, access_mineral_storeroom) @@ -86,6 +88,7 @@ spawn_positions = 2 is_engineering = 1 supervisors = "the chief engineer" + department_head = list("Chief Engineer") selection_color = "#fff5cc" access = list(access_eva, access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels, access_external_airlocks, access_construction, access_atmospherics, access_mineral_storeroom) minimal_access = list(access_eva, access_atmospherics, access_maint_tunnels, access_external_airlocks, access_emergency_storage, access_construction, access_mineral_storeroom) @@ -114,6 +117,7 @@ spawn_positions = 1 is_engineering = 1 supervisors = "the chief engineer" + department_head = list("Chief Engineer") selection_color = "#fff5cc" access = list(access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels, access_mechanic, access_external_airlocks, access_mineral_storeroom) minimal_access = list(access_maint_tunnels, access_emergency_storage, access_mechanic, access_external_airlocks, access_mineral_storeroom) diff --git a/code/game/jobs/job/job.dm b/code/game/jobs/job/job.dm index cdef04d836c..36333c6a43d 100644 --- a/code/game/jobs/job/job.dm +++ b/code/game/jobs/job/job.dm @@ -10,6 +10,7 @@ //Bitflags for the job var/flag = 0 var/department_flag = 0 + var/department_head = list() //Players will be allowed to spawn in as jobs that are set to "Station" var/list/faction = list("Station") diff --git a/code/game/jobs/job/medical.dm b/code/game/jobs/job/medical.dm index ac86958f6ac..580336d8b75 100644 --- a/code/game/jobs/job/medical.dm +++ b/code/game/jobs/job/medical.dm @@ -6,6 +6,7 @@ spawn_positions = 1 is_medical = 1 supervisors = "the captain" + department_head = list("Captain") selection_color = "#ffddf0" req_admin_notify = 1 access = list(access_medical, access_morgue, access_genetics, access_heads, @@ -47,6 +48,7 @@ spawn_positions = 3 is_medical = 1 supervisors = "the chief medical officer" + department_head = list("Chief Medical Officer") selection_color = "#ffeef0" access = list(access_medical, access_morgue, access_surgery, access_chemistry, access_virology, access_genetics, access_mineral_storeroom) minimal_access = list(access_medical, access_morgue, access_surgery, access_maint_tunnels) @@ -110,6 +112,7 @@ spawn_positions = 2 is_medical = 1 supervisors = "the chief medical officer" + department_head = list("Chief Medical Officer") selection_color = "#ffeef0" access = list(access_medical, access_morgue, access_surgery, access_chemistry, access_virology, access_genetics, access_mineral_storeroom) minimal_access = list(access_medical, access_chemistry, access_maint_tunnels, access_mineral_storeroom) @@ -141,12 +144,12 @@ spawn_positions = 2 is_medical = 1 supervisors = "the chief medical officer and the research director" + department_head = list("Chief Medical Officer", "Research Director") selection_color = "#ffeef0" access = list(access_medical, access_morgue, access_surgery, access_chemistry, access_virology, access_genetics, access_research, access_mineral_storeroom) minimal_access = list(access_medical, access_morgue, access_genetics, access_research, access_maint_tunnels) minimal_player_age = 3 outfit = /datum/outfit/job/geneticist - demotable_by = list("Chief Medical Officer", "Research Director") /datum/outfit/job/geneticist name = "Geneticist" @@ -173,6 +176,7 @@ spawn_positions = 1 is_medical = 1 supervisors = "the chief medical officer" + department_head = list("Chief Medical Officer") selection_color = "#ffeef0" access = list(access_medical, access_morgue, access_surgery, access_chemistry, access_virology, access_genetics) minimal_access = list(access_medical, access_virology, access_maint_tunnels, access_mineral_storeroom) @@ -205,6 +209,7 @@ spawn_positions = 1 is_medical = 1 supervisors = "the chief medical officer" + department_head = list("Chief Medical Officer") selection_color = "#ffeef0" access = list(access_medical, access_morgue, access_surgery, access_chemistry, access_virology, access_genetics, access_psychiatrist) minimal_access = list(access_medical, access_psychiatrist, access_maint_tunnels) @@ -242,6 +247,7 @@ spawn_positions = 1 is_medical = 1 supervisors = "the chief medical officer" + department_head = list("Chief Medical Officer") selection_color = "#ffeef0" access = list(access_paramedic, access_medical, access_sec_doors, access_maint_tunnels, access_external_airlocks, access_morgue) minimal_access=list(access_paramedic, access_medical, access_sec_doors, access_maint_tunnels, access_external_airlocks, access_morgue) diff --git a/code/game/jobs/job/science.dm b/code/game/jobs/job/science.dm index 37bb83eedf6..13c80212e85 100644 --- a/code/game/jobs/job/science.dm +++ b/code/game/jobs/job/science.dm @@ -6,6 +6,7 @@ spawn_positions = 1 is_science = 1 supervisors = "the captain" + department_head = list("Captain") selection_color = "#ffddff" req_admin_notify = 1 access = list(access_rd, access_heads, access_tox, access_genetics, access_morgue, @@ -55,6 +56,7 @@ spawn_positions = 6 is_science = 1 supervisors = "the research director" + department_head = list("Research Director") selection_color = "#ffeeff" access = list(access_robotics, access_tox, access_tox_storage, access_research, access_xenobiology, access_xenoarch, access_mineral_storeroom) minimal_access = list(access_tox, access_tox_storage, access_research, access_xenobiology, access_xenoarch, access_maint_tunnels, access_mineral_storeroom) @@ -92,6 +94,7 @@ spawn_positions = 2 is_science = 1 supervisors = "the research director" + department_head = list("Research Director") selection_color = "#ffeeff" access = list(access_robotics, access_tox, access_tox_storage, access_tech_storage, access_morgue, access_research, access_mineral_storeroom) //As a job that handles so many corpses, it makes sense for them to have morgue access. minimal_access = list(access_robotics, access_tech_storage, access_morgue, access_research, access_maint_tunnels, access_mineral_storeroom) //As a job that handles so many corpses, it makes sense for them to have morgue access. diff --git a/code/game/jobs/job/security.dm b/code/game/jobs/job/security.dm index 0395aa53f4b..6c6c7bdfc82 100644 --- a/code/game/jobs/job/security.dm +++ b/code/game/jobs/job/security.dm @@ -6,6 +6,7 @@ spawn_positions = 1 is_security = 1 supervisors = "the captain" + department_head = list("Captain") selection_color = "#ffdddd" req_admin_notify = 1 access = list(access_security, access_sec_doors, access_brig, access_armory, access_court, @@ -56,6 +57,7 @@ spawn_positions = 1 is_security = 1 supervisors = "the head of security" + department_head = list("Head of Security") selection_color = "#ffeeee" access = list(access_security, access_sec_doors, access_brig, access_armory, access_court, access_maint_tunnels, access_morgue, access_weapons) minimal_access = list(access_security, access_sec_doors, access_brig, access_armory, access_court, access_maint_tunnels, access_weapons) @@ -99,6 +101,7 @@ spawn_positions = 1 is_security = 1 supervisors = "the head of security" + department_head = list("Head of Security") selection_color = "#ffeeee" alt_titles = list("Forensic Technician") access = list(access_security, access_sec_doors, access_forensics_lockers, access_morgue, access_maint_tunnels, access_court, access_weapons) @@ -157,6 +160,7 @@ spawn_positions = 5 is_security = 1 supervisors = "the head of security" + department_head = list("Head of Security") selection_color = "#ffeeee" access = list(access_security, access_sec_doors, access_brig, access_court, access_maint_tunnels, access_morgue, access_weapons) minimal_access = list(access_security, access_sec_doors, access_brig, access_court, access_maint_tunnels, access_weapons) @@ -199,11 +203,11 @@ spawn_positions = 1 is_security = 1 supervisors = "the head of security" + department_head = list("Head of Security") selection_color = "#ffeeee" access = list(access_medical, access_morgue, access_surgery, access_chemistry, access_virology, access_genetics) minimal_access = list(access_medical, access_morgue, access_surgery, access_security, access_sec_doors, access_brig, access_court, access_maint_tunnels) outfit = /datum/outfit/job/brigdoc - demotable_by = list("Head of Security") /datum/outfit/job/brigdoc name = "Brig Physician" @@ -235,6 +239,7 @@ spawn_positions = 1 is_security = 1 supervisors = "the head of security" + department_head = list("Head of Security") selection_color = "#ffeeee" access = list(access_security, access_sec_doors, access_brig, access_court, access_maint_tunnels, access_morgue, access_weapons, access_pilot, access_external_airlocks) minimal_access = list(access_security, access_sec_doors, access_brig, access_court, access_maint_tunnels, access_weapons, access_pilot, access_external_airlocks) diff --git a/code/game/jobs/job/silicon.dm b/code/game/jobs/job/silicon.dm index 1b092087997..0def40bc7b1 100644 --- a/code/game/jobs/job/silicon.dm +++ b/code/game/jobs/job/silicon.dm @@ -6,6 +6,7 @@ spawn_positions = 1 selection_color = "#ccffcc" supervisors = "your laws" + department_head = list("Captain") req_admin_notify = 1 minimal_player_age = 30 exp_requirements = 1200 @@ -26,6 +27,7 @@ total_positions = 1 spawn_positions = 1 supervisors = "your laws and the AI" //Nodrak + department_head = list("AI") selection_color = "#ddffdd" minimal_player_age = 21 exp_requirements = 300 diff --git a/code/game/jobs/job/supervisor.dm b/code/game/jobs/job/supervisor.dm index af91e7788bd..7775e136598 100644 --- a/code/game/jobs/job/supervisor.dm +++ b/code/game/jobs/job/supervisor.dm @@ -6,6 +6,7 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 0) total_positions = 1 spawn_positions = 1 supervisors = "Nanotrasen officials" + department_head = list("Nanotrasen Navy Officer") selection_color = "#ccccff" req_admin_notify = 1 is_command = 1 @@ -64,6 +65,7 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 0) total_positions = 1 spawn_positions = 1 supervisors = "the captain" + department_head = list("Captain") selection_color = "#ddddff" req_admin_notify = 1 is_command = 1 @@ -111,6 +113,7 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 0) total_positions = 1 spawn_positions = 1 supervisors = "the command staff" + department_head = list("Captain") selection_color = "#ddddff" req_admin_notify = 1 is_command = 1 @@ -156,6 +159,7 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 0) total_positions = 1 spawn_positions = 1 supervisors = "the Nanotrasen representative" + department_head = list("Captain") selection_color = "#ddddff" req_admin_notify = 1 is_command = 1 @@ -200,6 +204,7 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 0) total_positions = 1 spawn_positions = 1 supervisors = "the Nanotrasen Supreme Court" + department_head = list("Captain") selection_color = "#ddddff" req_admin_notify = 1 is_legal = 1 @@ -245,6 +250,7 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 0) spawn_positions = 2 is_legal = 1 supervisors = "the magistrate" + department_head = list("Captain") selection_color = "#ddddff" access = list(access_lawyer, access_court, access_sec_doors, access_maint_tunnels) minimal_access = list(access_lawyer, access_court, access_sec_doors, access_maint_tunnels) diff --git a/code/game/jobs/job/support.dm b/code/game/jobs/job/support.dm index b7d6b448895..60f1bd541a8 100644 --- a/code/game/jobs/job/support.dm +++ b/code/game/jobs/job/support.dm @@ -7,6 +7,7 @@ spawn_positions = 1 is_service = 1 supervisors = "the head of personnel" + department_head = list("Head of Personnel") selection_color = "#dddddd" access = list(access_hydroponics, access_bar, access_kitchen, access_morgue, access_weapons, access_mineral_storeroom) minimal_access = list(access_bar, access_maint_tunnels, access_weapons, access_mineral_storeroom) @@ -46,6 +47,7 @@ spawn_positions = 1 is_service = 1 supervisors = "the head of personnel" + department_head = list("Head of Personnel") selection_color = "#dddddd" access = list(access_hydroponics, access_bar, access_kitchen, access_morgue) minimal_access = list(access_kitchen, access_maint_tunnels) @@ -73,6 +75,7 @@ spawn_positions = 2 is_service = 1 supervisors = "the head of personnel" + department_head = list("Head of Personnel") selection_color = "#dddddd" access = list(access_hydroponics, access_bar, access_kitchen, access_morgue) minimal_access = list(access_hydroponics, access_morgue, access_maint_tunnels) @@ -106,6 +109,7 @@ spawn_positions = 1 is_supply = 1 supervisors = "the head of personnel" + department_head = list("Head of Personnel") selection_color = "#dddddd" access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mint, access_mining, access_mining_station, access_mineral_storeroom) minimal_access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mint, access_mining, access_mining_station, access_mineral_storeroom) @@ -133,6 +137,7 @@ spawn_positions = 2 is_supply = 1 supervisors = "the quartermaster" + department_head = list("Head of Personnel") selection_color = "#dddddd" access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mint, access_mining, access_mining_station, access_mineral_storeroom) minimal_access = list(access_maint_tunnels, access_cargo, access_cargo_bot, access_mailsorting, access_mineral_storeroom) @@ -158,6 +163,7 @@ spawn_positions = 3 is_supply = 1 supervisors = "the quartermaster" + department_head = list("Head of Personnel") selection_color = "#dddddd" access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mint, access_mining, access_mining_station, access_mineral_storeroom) minimal_access = list(access_mining, access_mint, access_mining_station, access_mailsorting, access_maint_tunnels, access_mineral_storeroom) @@ -196,6 +202,7 @@ spawn_positions = 1 is_service = 1 supervisors = "the head of personnel" + department_head = list("Head of Personnel") selection_color = "#dddddd" access = list(access_clown, access_theatre, access_maint_tunnels) minimal_access = list(access_clown, access_theatre, access_maint_tunnels) @@ -252,6 +259,7 @@ spawn_positions = 1 is_service = 1 supervisors = "the head of personnel" + department_head = list("Head of Personnel") selection_color = "#dddddd" access = list(access_mime, access_theatre, access_maint_tunnels) minimal_access = list(access_mime, access_theatre, access_maint_tunnels) @@ -303,6 +311,7 @@ spawn_positions = 1 is_service = 1 supervisors = "the head of personnel" + department_head = list("Head of Personnel") selection_color = "#dddddd" access = list(access_janitor, access_maint_tunnels) minimal_access = list(access_janitor, access_maint_tunnels) @@ -328,6 +337,7 @@ spawn_positions = 1 is_service = 1 supervisors = "the head of personnel" + department_head = list("Head of Personnel") selection_color = "#dddddd" access = list(access_library, access_maint_tunnels) minimal_access = list(access_library, access_maint_tunnels) @@ -354,6 +364,7 @@ spawn_positions = 1 is_service = 1 supervisors = "the head of personnel" + department_head = list("Head of Personnel") selection_color = "#dddddd" alt_titles = list("Hair Stylist","Beautician") access = list(access_maint_tunnels) diff --git a/code/game/jobs/job/support_chaplain.dm b/code/game/jobs/job/support_chaplain.dm index 637524ad3bd..56a5b239c41 100644 --- a/code/game/jobs/job/support_chaplain.dm +++ b/code/game/jobs/job/support_chaplain.dm @@ -7,6 +7,7 @@ spawn_positions = 1 is_service = 1 supervisors = "the head of personnel" + department_head = list("Head of Personnel") selection_color = "#dddddd" access = list(access_morgue, access_chapel_office, access_crematorium, access_maint_tunnels) minimal_access = list(access_morgue, access_chapel_office, access_crematorium, access_maint_tunnels) diff --git a/code/game/machinery/computer/buildandrepair.dm b/code/game/machinery/computer/buildandrepair.dm index 2f5e90e3039..9b36e635449 100644 --- a/code/game/machinery/computer/buildandrepair.dm +++ b/code/game/machinery/computer/buildandrepair.dm @@ -30,14 +30,14 @@ var/frame_desc = null var/contain_parts = 1 toolspeed = 1 - usesound = 'sound/items/Deconstruct.ogg' + usesound = 'sound/items/Deconstruct.ogg' /obj/item/weapon/circuitboard/computer - board_type = "computer" - + board_type = "computer" + /obj/item/weapon/circuitboard/machine - board_type = "machine" - + board_type = "machine" + /obj/item/weapon/circuitboard/message_monitor name = "Circuit board (Message Monitor)" build_path = /obj/machinery/computer/message_monitor @@ -80,6 +80,10 @@ /obj/item/weapon/circuitboard/card name = "Circuit board (ID Computer)" build_path = /obj/machinery/computer/card +/obj/item/weapon/circuitboard/card/minor + name = "Circuit board (Dept ID Computer)" + build_path = /obj/machinery/computer/card/minor + var/target_dept = 1 /obj/item/weapon/circuitboard/card/centcom name = "Circuit board (CentComm ID Computer)" build_path = /obj/machinery/computer/card/centcom diff --git a/code/game/machinery/computer/card.dm b/code/game/machinery/computer/card.dm index 5b7463d1b8c..6ae6c32feab 100644 --- a/code/game/machinery/computer/card.dm +++ b/code/game/machinery/computer/card.dm @@ -14,6 +14,7 @@ var/time_last_changed_position = 0 var/obj/item/weapon/card/id/modify = null var/mode = 0.0 var/printing = null + var/target_dept = 0 //Which department this computer has access to. 0=all departments //Cooldown for closing positions in seconds //if set to -1: No cooldown... probably a bad idea @@ -65,10 +66,11 @@ var/time_last_changed_position = 0 /obj/machinery/computer/card/proc/format_jobs(list/jobs) var/list/formatted = list() for(var/job in jobs) - formatted.Add(list(list( - "display_name" = replacetext(job, " ", " "), - "target_rank" = get_target_rank(), - "job" = job))) + if(job_in_department(job_master.GetJob(job))) + formatted.Add(list(list( + "display_name" = replacetext(job, " ", " "), + "target_rank" = get_target_rank(), + "job" = job))) return formatted @@ -77,6 +79,8 @@ var/time_last_changed_position = 0 for(var/datum/job/job in job_master.occupations) if(job_blacklisted(job)) continue + if(!job_in_department(job)) + continue formatted.Add(list(list( "title" = job.title, "current_positions" = job.current_positions, @@ -92,7 +96,6 @@ var/time_last_changed_position = 0 formatted.Add(list(list( "display_name" = get_skin_desc(skin), "skin" = skin))) - return formatted /obj/machinery/computer/card/verb/eject_id() @@ -100,7 +103,7 @@ var/time_last_changed_position = 0 set name = "Eject ID Card" set src in oview(1) - if(usr.restrained()) + if(usr.restrained()) return if(scan) @@ -141,7 +144,7 @@ var/time_last_changed_position = 0 //Logic check for Topic() if you can open the job /obj/machinery/computer/card/proc/can_open_job(datum/job/job) if(job) - if(!job_blacklisted(job)) + if(!job_blacklisted(job) && job_in_department(job)) if((job.total_positions <= player_list.len * (max_relative_positions / 100))) var/delta = (world.time / 10) - time_last_changed_position if((change_position_cooldown < delta) || (opened_positions[job.title] < 0)) @@ -153,7 +156,7 @@ var/time_last_changed_position = 0 //Logic check for Topic() if you can close the job /obj/machinery/computer/card/proc/can_close_job(datum/job/job) if(job) - if(!job_blacklisted(job)) + if(!job_blacklisted(job) && job_in_department(job)) if(job.total_positions > job.current_positions) var/delta = (world.time / 10) - time_last_changed_position if((change_position_cooldown < delta) || (opened_positions[job.title] > 0)) @@ -162,6 +165,25 @@ var/time_last_changed_position = 0 return -1 return 0 +/obj/machinery/computer/card/proc/job_in_department(datum/job/targetjob) + if(!scan.access) + return 0 + if(!target_dept) + return 1 + if(!scan.assignment) + return 0 + if(targetjob.title in get_subordinates(scan.assignment)) + return 1 + return 0 + +/obj/machinery/computer/card/proc/get_subordinates(rank) + var/list/jobs_returned = list() + for(var/datum/job/thisjob in job_master.occupations) + if(rank in thisjob.department_head) + jobs_returned += thisjob.title + jobs_returned += "Civilian" + return jobs_returned + /obj/machinery/computer/card/attack_ai(var/mob/user as mob) return attack_hand(user) @@ -198,6 +220,7 @@ var/time_last_changed_position = 0 data["centcom_access"] = is_centcom() data["all_centcom_access"] = null data["regions"] = null + data["target_dept"] = target_dept data["engineering_jobs"] = format_jobs(engineering_positions) data["medical_jobs"] = format_jobs(medical_positions) @@ -267,7 +290,7 @@ var/time_last_changed_position = 0 else modify.forceMove(get_turf(src)) modify = null - else if(Adjacent(usr)) + else if(Adjacent(usr)) var/obj/item/I = usr.get_active_hand() if(istype(I, /obj/item/weapon/card/id)) usr.drop_item() @@ -284,7 +307,7 @@ var/time_last_changed_position = 0 else scan.forceMove(get_turf(src)) scan = null - else if(Adjacent(usr)) + else if(Adjacent(usr)) var/obj/item/I = usr.get_active_hand() if(istype(I, /obj/item/weapon/card/id)) usr.drop_item() @@ -292,7 +315,7 @@ var/time_last_changed_position = 0 scan = I if("access") - if(href_list["allowed"]) + if(href_list["allowed"] && !target_dept) if(is_authenticated(usr)) var/access_type = text2num(href_list["access_target"]) var/access_allowed = text2num(href_list["allowed"]) @@ -302,13 +325,19 @@ var/time_last_changed_position = 0 modify.access += access_type if("skin") - var/skin = href_list["skin_target"] - if(is_authenticated(usr) && modify && ((skin in get_station_card_skins()) || ((skin in get_centcom_card_skins()) && is_centcom()))) - modify.icon_state = href_list["skin_target"] + if(!target_dept) + var/skin = href_list["skin_target"] + if(is_authenticated(usr) && modify && ((skin in get_station_card_skins()) || ((skin in get_centcom_card_skins()) && is_centcom()))) + modify.icon_state = href_list["skin_target"] if("assign") if(is_authenticated(usr) && modify) var/t1 = href_list["assign_target"] + if(!job_in_department(job_master.GetJob(modify.assignment))) + src.visible_message("[src] buzzes. Non-civilian job transfers must be done by the HoP.") + return 0 + if(!job_in_department(job_master.GetJob(t1))) + return 0 if(t1 == "Custom") var/temp_t = sanitize(copytext(input("Enter a custom job assignment.","Assignment"),1,MAX_MESSAGE_LEN)) //let custom jobs function as an impromptu alt title, mainly for sechuds @@ -330,15 +359,20 @@ var/time_last_changed_position = 0 return access = jobdatum.get_access() + if(target_dept) // Automatically apply default job skin. + var/datum/outfit/job/default_outfit = jobdatum.outfit + var/obj/item/weapon/card/id/default_job_id = default_outfit.id + modify.icon_state = default_job_id.icon_state modify.access = access modify.assignment = t1 modify.rank = t1 + callHook("reassign_employee", list(modify)) if("reg") - if(is_authenticated(usr)) + if(is_authenticated(usr) && !target_dept) var/t2 = modify if((modify == t2 && (in_range(src, usr) || (istype(usr, /mob/living/silicon))) && istype(loc, /turf))) var/temp_name = reject_bad_name(href_list["reg"]) @@ -349,7 +383,7 @@ var/time_last_changed_position = 0 nanomanager.update_uis(src) if("account") - if(is_authenticated(usr)) + if(is_authenticated(usr) && !target_dept) var/t2 = modify if((modify == t2 && (in_range(src, usr) || (istype(usr, /mob/living/silicon))) && istype(loc, /turf))) var/account_num = text2num(href_list["account"]) @@ -360,7 +394,7 @@ var/time_last_changed_position = 0 mode = text2num(href_list["mode_target"]) if("print") - if(!printing) + if(!printing && !target_dept) printing = 1 playsound(loc, 'sound/goonstation/machines/printer_dotmatrix.ogg', 50, 1) spawn(50) @@ -393,10 +427,9 @@ var/time_last_changed_position = 0 P.info += "" if("terminate") - if(is_authenticated(usr)) + if(is_authenticated(usr) && !target_dept) modify.assignment = "Terminated" modify.access = list() - callHook("terminate_employee", list(modify)) if("make_job_available") @@ -404,6 +437,8 @@ var/time_last_changed_position = 0 if(is_authenticated(usr)) var/edit_job_target = href_list["job"] var/datum/job/j = job_master.GetJob(edit_job_target) + if(!job_in_department(j)) + return 0 if(!j) return 0 if(can_open_job(j) != 1) @@ -420,6 +455,8 @@ var/time_last_changed_position = 0 if(is_authenticated(usr)) var/edit_job_target = href_list["job"] var/datum/job/j = job_master.GetJob(edit_job_target) + if(!job_in_department(j)) + return 0 if(!j) return 0 if(can_close_job(j) != 1) @@ -442,4 +479,44 @@ var/time_last_changed_position = 0 circuit = /obj/item/weapon/circuitboard/card/centcom req_access = list(access_cent_commander) change_position_cooldown = -1 - blacklisted = list() \ No newline at end of file + blacklisted = list() + + +/obj/machinery/computer/card/minor + name = "department management console" + desc = "You can use this to change ID's for specific departments." + icon_screen = "idminor" + circuit = /obj/item/weapon/circuitboard/card/minor + +/obj/machinery/computer/card/minor/New() + ..() + var/obj/item/weapon/circuitboard/card/minor/typed_circuit = circuit + if(target_dept) + typed_circuit.target_dept = target_dept + else + target_dept = typed_circuit.target_dept + var/list/dept_list = list("general","security","medical","science","engineering") + name = "[dept_list[target_dept]] department console" + +/obj/machinery/computer/card/minor/hos + target_dept = 2 + icon_screen = "idhos" + light_color = LIGHT_COLOR_RED + req_access = list(access_hos) + +/obj/machinery/computer/card/minor/cmo + target_dept = 3 + icon_screen = "idcmo" + req_access = list(access_cmo) + +/obj/machinery/computer/card/minor/rd + target_dept = 4 + icon_screen = "idrd" + light_color = LIGHT_COLOR_PINK + req_access = list(access_rd) + +/obj/machinery/computer/card/minor/ce + target_dept = 5 + icon_screen = "idce" + light_color = COLOR_YELLOW + req_access = list(access_ce) \ No newline at end of file diff --git a/code/game/machinery/computer/id_demoter.dm b/code/game/machinery/computer/id_demoter.dm deleted file mode 100644 index 83d50096808..00000000000 --- a/code/game/machinery/computer/id_demoter.dm +++ /dev/null @@ -1,68 +0,0 @@ -/obj/machinery/computer/id_demoter - name = "ID Demotion Terminal" - desc = "Allows heads of staff to demote members of their department, by swiping their ID, then the ID of the person they wish to demote." - density = 0 - icon_state = "guest" - icon_screen = "pass" - var/headname = null - var/headrank = null - var/list/headaccess = list() - -/obj/machinery/computer/id_demoter/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/weapon/card/id)) - var/obj/item/weapon/card/id/D = I - - if(headaccess.len > 0) - if(D.registered_name == headname) - visible_message("[src]: You cannot demote your own ID. Swipe the ID of the person you wish to demote on this console.") - playsound(src, 'sound/machines/buzz-two.ogg', 50, 1) - return - if(D.assignment == "Civilian") - visible_message("[src]: Civilian IDs cannot be demoted any further using this console.") - playsound(src, 'sound/machines/buzz-two.ogg', 50, 1) - return - // Stop heads from demoting the staff of other departments. HoP/Captain can still demote anyone. - if(!(access_change_ids in headaccess)) - var/datum/job/J = job_master.GetJob(D.assignment) - var/fail_demote = 0 - if(J && J.demotable_by.len) - if(!(headrank in J.demotable_by)) - fail_demote = 1 - else - for(var/thisaccess in D.access) - if(!(thisaccess in headaccess)) - fail_demote = 1 - if(fail_demote) - visible_message("[src]: [headrank] [headname] cannot use this method to demote [D.assignment] [D.registered_name]. Contact the Head of Personnel.") - playsound(src, 'sound/machines/buzz-two.ogg', 50, 1) - return - visible_message("[src]: [headrank] [headname] has demoted [D.registered_name] from [D.assignment] to Civilian. Remember to recover any job-specific items they may have.") - playsound(src.loc, 'sound/machines/twobeep.ogg', 50, 0) - var/datum/job/civilian/C = new/datum/job/civilian - D.access = C.get_access() - D.assignment = "Civilian" - D.name = text("[D.registered_name]'s ID Card ([D.assignment])") - D.icon_state = "id" - - else - if(!(D.assignment in command_positions)) - visible_message("[src]: Access Denied. You must swipe a head of staff's ID on this machine first, then swipe the ID of the person you wish to demote.") - playsound(src, 'sound/machines/buzz-two.ogg', 50, 1) - return - headname = D.registered_name - headrank = D.assignment - headaccess = D.access - if(access_change_ids in headaccess) - visible_message("[src]: [headrank] [headname] recognized. Swipe any ID on this console, and that ID will be demoted to Civilian.") - else - visible_message("[src]: [headrank] [headname] recognized. Swipe any ID from your department on this console, and that ID will be demoted to Civilian.") - playsound(src.loc, 'sound/machines/twobeep.ogg', 50, 0) - spawn(300) - if(headaccess.len) - visible_message("[src]: [headrank] [headname] has been automatically logged out. Please swipe your ID again if you wish to demote any more IDs.") - playsound(src, 'sound/machines/buzz-two.ogg', 50, 1) - headname = null - headrank = null - headaccess = list() - else - . = ..() diff --git a/icons/obj/computer.dmi b/icons/obj/computer.dmi index 9ad68e2207258b71b57f8ddccfc14ee00c38f6f1..bbb006504792cde5ca66f0395681e65b543a6408 100644 GIT binary patch delta 18555 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 delta 17724 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 diff --git a/nano/templates/identification_computer.tmpl b/nano/templates/identification_computer.tmpl index c10ea44ff86..6e67fb1e2d5 100644 --- a/nano/templates/identification_computer.tmpl +++ b/nano/templates/identification_computer.tmpl @@ -8,11 +8,11 @@

{{else}} {{:helper.link('Access Modification', 'home', {'choice' : 'mode', 'mode_target' : 0}, !data.mode ? 'disabled' : null)}} - {{:helper.link('Job Management', 'gear', {'choice' : 'mode', 'mode_target' : 1}, data.mode == 1 ? 'disabled' : null)}} + {{if !data.target_dept}}{{:helper.link('Job Management', 'gear', {'choice' : 'mode', 'mode_target' : 1}, data.mode == 1 ? 'disabled' : null)}}{{/if}} {{:helper.link('Crew Manifest', 'folder-open', {'choice' : 'mode', 'mode_target' : 2}, data.mode == 2 ? 'disabled' : null)}} - {{:helper.link('Print', 'print', {'choice' : 'print'}, (data.mode == 2 || data.has_modify && !data.mode) ? null : 'disabled')}} + {{if !data.target_dept}}{{:helper.link('Print', 'print', {'choice' : 'print'}, (data.mode == 2 || data.has_modify && !data.mode) ? null : 'disabled')}}{{/if}} - {{if data.mode == 1}} + {{if data.mode == 1 && !data.target_dept}}

Job Management

@@ -111,6 +111,7 @@ {{if data.has_modify}} + {{if !data.target_dept}}

Details

@@ -156,6 +157,14 @@

Assignment

+ {{else}} + +
+

Assignment for {{:data.target_owner}}

+
+ + {{/if}} +
{{:data.target_rank}} @@ -164,6 +173,7 @@