diff --git a/SQL/tgstation_schema.sql b/SQL/tgstation_schema.sql index 848e28b7f41..02329c2b66a 100644 --- a/SQL/tgstation_schema.sql +++ b/SQL/tgstation_schema.sql @@ -306,16 +306,7 @@ CREATE TABLE `poll_vote` ( ) ENGINE=InnoDB DEFAULT CHARSET=latin1; /*!40101 SET character_set_client = @saved_cs_client */; ---var/reason = input(usr,"Reason?","reason","Metagaming") as text|null - if(!reason) - return - log_admin("[key_name_admin(usr)] has added [key_name_admin(M)] to the watchlist - Reason: [reason]") - message_admins("[key_name_admin(usr)] has added [key_name_admin(M)] to the watchlist - Reason: [reason]", 1) - reason = sanitizeSQL(reason) - var/DBQuery/query_watchadd = dbcon.NewQuery("INSERT INTO [format_table_name("watch")] (ckey, reason) VALUES ('[sql_ckey]', '[reason]')") - if(!query_watchadd.Execute()) - var/err = query_watchadd.ErrorMsg() - log_game("SQL ERROR during adding new watch entry. Error : \[[err]\]\n") + -- Table structure for table `privacy` -- diff --git a/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm b/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm index 11d8e3fd510..b3d9ccfe523 100644 --- a/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm +++ b/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm @@ -1000,7 +1000,7 @@ "atl" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/airlock/maintenance{name = "Storage Room"; req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/fore) "atm" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplate"; tag = ""},/area/maintenance/fore) "atn" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/plating,/area/maintenance/fore) -"ato" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/light/small{dir = 1},/obj/structure/table/wood,/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/obj/item/weapon/lighter/zippo,/turf/simulated/floor/wood,/area/crew_quarters/sleep) +"ato" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/light/small{dir = 1},/obj/structure/table/wood,/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/obj/item/weapon/lighter,/turf/simulated/floor/wood,/area/crew_quarters/sleep) "atp" = (/obj/structure/closet/secure_closet/personal/cabinet,/obj/machinery/alarm{pixel_y = 23},/obj/item/clothing/under/assistantformal,/turf/simulated/floor/wood,/area/crew_quarters/sleep) "atq" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet,/obj/machinery/door_control{id = "Cabin3"; name = "Cabin Bolt Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/obj/effect/decal/cleanable/cobweb2,/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/wood,/area/crew_quarters/sleep) "atr" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall,/area/crew_quarters/sleep) @@ -1356,7 +1356,7 @@ "aAd" = (/obj/structure/closet/crate,/obj/machinery/light/small{dir = 4},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/quartermaster/miningdock{name = "\improper Mining Office"}) "aAe" = (/obj/structure/closet/emcloset,/obj/machinery/status_display{density = 0; pixel_x = 0; pixel_y = 32; supply_display = 1},/turf/simulated/floor/plasteel{dir = 9; icon_state = "brown"},/area/quartermaster/miningdock{name = "\improper Mining Office"}) "aAf" = (/obj/structure/closet/crate,/obj/item/device/flashlight{pixel_x = 1; pixel_y = 5},/obj/item/device/flashlight{pixel_x = 1; pixel_y = 5},/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = -7},/turf/simulated/floor/plasteel{dir = 1; icon_state = "brown"},/area/quartermaster/miningdock{name = "\improper Mining Office"}) -"aAg" = (/obj/machinery/power/apc{dir = 1; name = "Mining APC"; pixel_y = 24},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/light_switch{pixel_x = 0; pixel_y = 38},/turf/simulated/floor/plasteel{dir = 1; icon_state = "brown"},/area/quartermaster/miningdock{name = "\improper Mining Office"}) +"aAg" = (/obj/machinery/power/apc{dir = 1; name = "Mining APC"; pixel_y = 24},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/light_switch{pixel_x = 0; pixel_y = 38},/obj/structure/closet/wardrobe/miner,/turf/simulated/floor/plasteel{dir = 1; icon_state = "brown"},/area/quartermaster/miningdock{name = "\improper Mining Office"}) "aAh" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "brown"},/area/quartermaster/miningdock{name = "\improper Mining Office"}) "aAi" = (/obj/structure/rack{dir = 1},/obj/item/weapon/storage/toolbox/emergency{pixel_x = 2; pixel_y = -3},/obj/item/weapon/storage/toolbox/emergency,/turf/simulated/floor/plasteel{dir = 5; icon_state = "brown"},/area/quartermaster/miningdock{name = "\improper Mining Office"}) "aAj" = (/obj/structure/table,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/quartermaster/sorting{name = "\improper Warehouse"}) @@ -1608,7 +1608,7 @@ "aEV" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/sleep) "aEW" = (/obj/structure/stool{pixel_y = 8},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/crew_quarters/sleep) "aEX" = (/obj/structure/table,/obj/item/weapon/storage/pill_bottle/dice,/turf/simulated/floor/plasteel,/area/crew_quarters/sleep) -"aEY" = (/obj/structure/table,/obj/item/weapon/storage/fancy/crayons,/turf/simulated/floor/plasteel,/area/crew_quarters/sleep) +"aEY" = (/obj/structure/table,/obj/item/weapon/storage/crayons,/turf/simulated/floor/plasteel,/area/crew_quarters/sleep) "aEZ" = (/obj/structure/table,/obj/item/toy/cards/deck,/turf/simulated/floor/plasteel,/area/crew_quarters/sleep) "aFa" = (/obj/structure/stool{pixel_y = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel,/area/crew_quarters/sleep) "aFb" = (/obj/machinery/door/airlock{id_tag = "Cabin6"; name = "Cabin 2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/sleep) @@ -2818,7 +2818,7 @@ "bcj" = (/obj/item/device/radio/beacon,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/bridge) "bck" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/computer/security/mining,/obj/machinery/keycard_auth{pixel_x = 0; pixel_y = 24},/turf/simulated/floor/plasteel{dir = 1; icon_state = "darkblue"; tag = "icon-darkbluecorners (WEST)"},/area/bridge) "bcl" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/recharger{pixel_y = 3},/obj/item/weapon/restraints/handcuffs{pixel_y = 3},/obj/structure/table/glass,/turf/simulated/floor/plasteel{dir = 4; icon_state = "darkredcorners"},/area/bridge) -"bcm" = (/obj/structure/closet/secure_closet/cargotech,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/quartermaster/storage) +"bcm" = (/obj/structure/closet/wardrobe/engineering_yellow,/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/engine/engineering) "bcn" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/storage/tools) "bco" = (/turf/simulated/wall,/area/quartermaster/office{name = "\improper Cargo Office"}) "bcp" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_mining{glass = 0; icon = 'icons/obj/doors/Doormining.dmi'; name = "Cargo Bay"; opacity = 1; req_access_txt = "0"; req_one_access_txt = "48;50"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/quartermaster/office{name = "\improper Cargo Office"}) @@ -3044,7 +3044,7 @@ "bgB" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -28},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/engine/chiefs_office) "bgC" = (/obj/structure/table/glass,/turf/simulated/floor/plasteel,/area/engine/break_room) "bgD" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/storage/secure/briefcase,/obj/item/clothing/mask/cigarette/cigar,/obj/machinery/computer/security/telescreen{dir = 1; name = "MiniSat Monitor"; network = list("MiniSat","tcomm"); pixel_x = 0; pixel_y = -30},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/engine/chiefs_office) -"bgE" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/lighter/zippo,/obj/item/clothing/glasses/meson,/obj/machinery/door_control{id = "ceprivacy"; name = "Privacy Shutters Control"; pixel_x = 0; pixel_y = -26},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/engine/chiefs_office) +"bgE" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/lighter,/obj/item/clothing/glasses/meson,/obj/machinery/door_control{id = "ceprivacy"; name = "Privacy Shutters Control"; pixel_x = 0; pixel_y = -26},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/engine/chiefs_office) "bgF" = (/obj/structure/filingcabinet/chestdrawer,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/mob/living/simple_animal/parrot/Poly,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/engine/chiefs_office) "bgG" = (/obj/structure/closet/secure_closet/engineering_chief{req_access_txt = "0"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/engine/chiefs_office) "bgH" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/engineering{name = "Engine Room"; req_access_txt = "10"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/engine/engineering) @@ -3256,7 +3256,7 @@ "bkF" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_command{name = "Bridge"; req_access_txt = "19"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "darkblue"; tag = "icon-darkbluecorners (WEST)"},/area/bridge) "bkG" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_command{name = "Bridge"; req_access_txt = "19"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "darkblue"; tag = "icon-darkbluecorners (WEST)"},/area/bridge) "bkH" = (/obj/machinery/light_switch{pixel_x = -38},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/quartermaster/storage) -"bkI" = (/obj/structure/closet/secure_closet/cargotech,/obj/structure/disposalpipe/segment,/obj/item/clothing/suit/hooded/wintercoat/cargo,/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"; tag = "icon-warnwhite (NORTHEAST)"},/area/quartermaster/storage) +"bkI" = (/obj/structure/closet/wardrobe/cargotech,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"; tag = "icon-warnwhite (NORTHEAST)"},/area/quartermaster/storage) "bkJ" = (/obj/machinery/light/small,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "bkK" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/machinery/door/window{dir = 8; name = "MiniSat Airlock Access"; req_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/construction/hallway{name = "\improper MiniSat Exterior"}) "bkL" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/wall/r_wall,/area/turret_protected/ai) @@ -3717,7 +3717,7 @@ "bty" = (/obj/machinery/computer/card,/obj/machinery/light/small{dir = 4},/obj/machinery/requests_console{announcementConsole = 1; department = "Captain's Desk"; departmentType = 5; name = "Captain RC"; pixel_x = 32; pixel_y = 0},/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "btz" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/hallway/primary/central) "btA" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central) -"btB" = (/obj/structure/table,/obj/item/weapon/storage/fancy/crayons,/obj/item/weapon/storage/fancy/crayons,/obj/machinery/power/apc{cell_type = 2500; dir = 8; name = "Art Storage APC"; pixel_x = -25; pixel_y = 0},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plasteel,/area/storage/art) +"btB" = (/obj/structure/table,/obj/item/weapon/storage/crayons,/obj/item/weapon/storage/crayons,/obj/machinery/power/apc{cell_type = 2500; dir = 8; name = "Art Storage APC"; pixel_x = -25; pixel_y = 0},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plasteel,/area/storage/art) "btC" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel,/area/storage/art) "btD" = (/obj/structure/table,/obj/item/weapon/airlock_painter,/turf/simulated/floor/plasteel,/area/storage/art) "btE" = (/obj/structure/reagent_dispensers/beerkeg,/turf/simulated/floor/wood,/area/crew_quarters/bar) @@ -4022,7 +4022,7 @@ "bzr" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/fancy/carpet{tag = "icon-carpet7-3"; icon_state = "carpet7-3"},/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bzs" = (/obj/machinery/door/airlock/command{name = "Emergency Escape"; req_access = null; req_access_txt = "20"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bzt" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/wood,/area/crew_quarters/bar) -"bzu" = (/obj/machinery/vending/cigarette{pixel_y = 2; products = list(/obj/item/weapon/storage/fancy/cigarettes/cigpack_syndicate = 7, /obj/item/weapon/storage/fancy/cigarettes/cigpack_uplift = 3, /obj/item/weapon/storage/fancy/cigarettes/cigpack_robust = 2, /obj/item/weapon/storage/fancy/cigarettes/cigpack_carp = 3, /obj/item/weapon/storage/fancy/cigarettes/cigpack_midori = 1, /obj/item/weapon/storage/box/matches = 10, /obj/item/weapon/lighter/random = 4, /obj/item/weapon/storage/fancy/rollingpapers = 5)},/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) +"bzu" = (/obj/machinery/vending/cigarette{pixel_y = 2; products = list(/obj/item/weapon/storage/fancy/cigarettes/cigpack_syndicate = 7, /obj/item/weapon/storage/fancy/cigarettes/cigpack_uplift = 3, /obj/item/weapon/storage/fancy/cigarettes/cigpack_robust = 2, /obj/item/weapon/storage/fancy/cigarettes/cigpack_carp = 3, /obj/item/weapon/storage/fancy/cigarettes/cigpack_midori = 1, /obj/item/weapon/storage/box/matches = 10, /obj/item/weapon/lighter/greyscale = 4, /obj/item/weapon/storage/fancy/rollingpapers = 5)},/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) "bzv" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/wood,/area/crew_quarters/bar) "bzw" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/floor/wood,/area/crew_quarters/bar) "bzx" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/fancy/carpet{tag = "icon-carpet11-12"; icon_state = "carpet11-12"},/area/crew_quarters/captain{name = "\improper Captain's Quarters"}) @@ -4148,7 +4148,7 @@ "bBN" = (/obj/machinery/atmospherics/unary/heat_reservoir/heater{dir = 2; on = 1; tag = ""},/turf/simulated/floor/plasteel{dir = 1; icon_state = "caution"},/area/atmos) "bBO" = (/obj/machinery/atmospherics/pipe/simple/cyan/visible{dir = 10; initialize_directions = 10},/turf/simulated/floor/plasteel{dir = 1; icon_state = "caution"},/area/atmos) "bBP" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/maintcentral{name = "Central Maintenance"}) -"bBQ" = (/obj/structure/table/reinforced,/obj/item/weapon/lighter/zippo,/obj/machinery/computer/security/telescreen/entertainment{pixel_x = -31; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) +"bBQ" = (/obj/structure/table/reinforced,/obj/item/weapon/lighter,/obj/machinery/computer/security/telescreen/entertainment{pixel_x = -31; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) "bBR" = (/obj/item/weapon/tank/internals/air,/obj/item/weapon/tank/internals/air,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"}) "bBS" = (/obj/structure/table/reinforced,/obj/item/clothing/head/that{throwforce = 1; throwing = 1},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) "bBT" = (/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) @@ -4206,7 +4206,7 @@ "bCT" = (/obj/machinery/light_switch{pixel_x = -26; pixel_y = 0},/obj/machinery/light/small{dir = 8},/obj/structure/closet/l3closet,/turf/simulated/floor/plasteel{dir = 10; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"}) "bCU" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/machinery/vending/coffee{pixel_x = -3},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/bridge) "bCV" = (/obj/machinery/door_control{id = "council blast"; name = "Council Chamber Blast Door Control"; pixel_x = 5; pixel_y = -28; req_access_txt = "19"},/turf/simulated/floor/fancy/carpet,/area/bridge) -"bCW" = (/obj/structure/table/wood,/obj/item/weapon/folder/blue,/obj/item/weapon/lighter/zippo,/turf/simulated/floor/fancy/carpet,/area/bridge) +"bCW" = (/obj/structure/table/wood,/obj/item/weapon/folder/blue,/obj/item/weapon/lighter,/turf/simulated/floor/fancy/carpet,/area/bridge) "bCX" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/vending/cigarette{pixel_x = 2},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/bridge) "bCY" = (/obj/machinery/door_control{id = "council blast"; name = "Council Chamber Blast Door Control"; pixel_x = -5; pixel_y = -28; req_access_txt = "19"},/turf/simulated/floor/fancy/carpet,/area/bridge) "bCZ" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/structure/stool{pixel_y = 8},/turf/simulated/floor/wood,/area/crew_quarters/bar) @@ -5171,7 +5171,7 @@ "bVw" = (/obj/item/weapon/crowbar,/turf/simulated/floor/plating{tag = "icon-platingdmg1"; icon_state = "platingdmg1"},/area/maintenance/starboard) "bVx" = (/obj/structure/table,/obj/item/weapon/folder/yellow,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/item/weapon/storage/firstaid/regular{pixel_x = 3; pixel_y = -3},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/gateway) "bVy" = (/obj/machinery/computer/security/telescreen/entertainment,/turf/simulated/wall,/area/crew_quarters/kitchen) -"bVz" = (/obj/structure/closet/wardrobe/atmospherics_yellow,/obj/item/clothing/suit/hooded/wintercoat/engineering/atmos,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/atmos) +"bVz" = (/obj/structure/closet/wardrobe/atmospherics_yellow,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/atmos) "bVA" = (/obj/machinery/requests_console{department = "Atmospherics"; departmentType = 4; name = "Atmos RC"; pixel_x = 30; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/shower{dir = 8; icon_state = "shower"; name = "emergency shower"; tag = "icon-shower (WEST)"},/turf/simulated/floor/plasteel,/area/atmos) "bVB" = (/obj/machinery/atmospherics/binary/pump{dir = 0; name = "Port to Filter"; on = 0},/obj/machinery/light/small{dir = 8},/obj/machinery/camera{c_tag = "Atmospherics - Starboard"; dir = 4; network = list("SS13")},/turf/simulated/floor/plasteel,/area/atmos) "bVC" = (/obj/machinery/atmospherics/pipe/manifold/general/visible{dir = 8},/obj/structure/stool,/turf/simulated/floor/plasteel,/area/atmos) @@ -5417,7 +5417,7 @@ "cai" = (/obj/machinery/hydroponics/constructable,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel,/area/hydroponics) "caj" = (/obj/machinery/hydroponics/constructable,/turf/simulated/floor/plasteel,/area/hydroponics) "cak" = (/obj/machinery/seed_extractor,/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/hydroponics) -"cal" = (/obj/structure/closet/secure_closet/hydroponics,/obj/item/weapon/storage/bag/plants/portaseeder,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/item/weapon/storage/backpack/satchel_hyd,/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hydroponics) +"cal" = (/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/structure/closet/wardrobe/botanist,/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hydroponics) "cam" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/machinery/firealarm{pixel_y = 29},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hydroponics) "can" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating{tag = "icon-platingdmg1"; icon_state = "platingdmg1"},/area/maintenance/starboard) "cao" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/starboard) @@ -5542,7 +5542,7 @@ "ccD" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/simulated/floor/plasteel{dir = 9; icon_state = "green"},/area/hydroponics) "ccE" = (/obj/effect/landmark/start{name = "Botanist"},/turf/simulated/floor/plasteel{icon_state = "green"; dir = 8},/area/hydroponics) "ccF" = (/obj/machinery/biogenerator,/obj/machinery/light_switch{pixel_x = 26; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/hydroponics) -"ccG" = (/obj/structure/closet/secure_closet/hydroponics,/obj/item/weapon/storage/bag/plants/portaseeder,/obj/machinery/light_switch{pixel_x = -26; pixel_y = 0},/obj/item/weapon/storage/backpack/satchel_hyd,/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hydroponics) +"ccG" = (/obj/structure/closet/secure_closet/hydroponics,/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hydroponics) "ccH" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hydroponics) "ccI" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 8; initialize_directions = 11},/turf/simulated/floor/plating{tag = "icon-platingdmg1"; icon_state = "platingdmg1"},/area/maintenance/starboard) "ccJ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/effect/spawner/lootdrop{loot = list("/obj/structure/grille","/obj/structure/grille","/obj/structure/grille","/obj/structure/grille","/obj/structure/grille","/obj/item/weapon/cigbutt","/obj/item/trash/cheesie","/obj/item/trash/candy","/obj/item/trash/chips","/obj/item/trash/deadmouse","/obj/item/trash/pistachios","/obj/item/trash/plate","/obj/item/trash/popcorn","/obj/item/trash/raisins","/obj/item/trash/sosjerky","/obj/item/trash/syndi_cakes"); name = "maint grille or trash spawner"},/turf/simulated/floor/plating,/area/maintenance/starboard) @@ -5796,7 +5796,7 @@ "chx" = (/obj/structure/girder,/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "chy" = (/obj/structure/girder,/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "chz" = (/obj/machinery/light/small,/turf/simulated/floor/plasteel{dir = 2; icon_state = "purplecorner"},/area/hallway/primary/central) -"chA" = (/obj/structure/closet/secure_closet/hydroponics,/obj/item/weapon/storage/bag/plants/portaseeder,/obj/item/weapon/storage/backpack/satchel_hyd,/obj/item/clothing/suit/hooded/wintercoat/hydro,/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hydroponics) +"chA" = (/obj/structure/closet/secure_closet/hydroponics,/obj/machinery/light_switch{pixel_x = -26; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hydroponics) "chB" = (/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/obj/item/weapon/pen,/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "chC" = (/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/obj/item/weapon/pen,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "chD" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/effect/spawner/lootdrop{loot = list("/obj/structure/grille","/obj/structure/grille","/obj/structure/grille","/obj/structure/grille","/obj/structure/grille","/obj/item/weapon/cigbutt","/obj/item/trash/cheesie","/obj/item/trash/candy","/obj/item/trash/chips","/obj/item/trash/deadmouse","/obj/item/trash/pistachios","/obj/item/trash/plate","/obj/item/trash/popcorn","/obj/item/trash/raisins","/obj/item/trash/sosjerky","/obj/item/trash/syndi_cakes"); name = "maint grille or trash spawner"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) @@ -6035,6 +6035,7 @@ "cmc" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/medical/virology) "cmd" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/medical/virology) "cme" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_virology{name = "Test Subject Cell"; req_access_txt = "39"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/medical/virology) +"cmf" = (/obj/structure/closet/wardrobe/science_white,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/toxins/explab) "cmg" = (/obj/item/device/flashlight/lamp,/turf/simulated/floor/plating/airless{dir = 2; icon_state = "warnplate"},/area/toxins/test_area) "cmh" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/iv_drip,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitegreen"},/area/medical/virology) "cmi" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plating{tag = "icon-platingdmg1"; icon_state = "platingdmg1"},/area/maintenance/aft{name = "Aft Maintenance"}) @@ -6198,6 +6199,7 @@ "cpk" = (/obj/effect/decal/cleanable/blood,/obj/effect/decal/cleanable/blood/gibs/limb,/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cpl" = (/obj/structure/rack,/obj/item/clothing/suit/apron,/obj/item/clothing/mask/surgical,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "cpm" = (/obj/machinery/chem_master/condimaster{name = "CondiMaster Neo"; pixel_x = -4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"cpn" = (/obj/machinery/light_switch{pixel_y = 28},/obj/structure/closet/l3closet/scientist{pixel_x = -2},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cpo" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 8},/turf/simulated/floor/plating/airless,/area/space) "cpp" = (/obj/machinery/power/turbine{luminosity = 2},/obj/structure/cable,/turf/simulated/floor/engine/vacuum,/area/maintenance/incinerator) "cpq" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/engine{name = "o2 floor"; nitrogen = 0; oxygen = 100000},/area/atmos) @@ -6259,7 +6261,7 @@ "cqu" = (/obj/structure/disposaloutlet{dir = 2},/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plating/airless,/area/space) "cqv" = (/obj/structure/sign/fire{pixel_x = 0; pixel_y = 0},/turf/simulated/wall/r_wall,/area/maintenance/incinerator) "cqw" = (/obj/machinery/door/poddoor{id = "turbinevent"; name = "Turbine Vent"},/turf/simulated/floor/engine/vacuum,/area/maintenance/incinerator) -"cqx" = (/obj/item/weapon/storage/fancy/crayons,/obj/machinery/light/small{dir = 8},/obj/structure/table/wood,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office) +"cqx" = (/obj/item/weapon/storage/crayons,/obj/machinery/light/small{dir = 8},/obj/structure/table/wood,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office) "cqy" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/item/weapon/storage/fancy/candle_box{pixel_x = 0; pixel_y = 5},/obj/structure/table/wood,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office) "cqz" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/hallway/secondary/exit{name = "\improper Departure Lounge"}) "cqA" = (/obj/structure/stool,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/lab) @@ -6900,7 +6902,7 @@ "cCL" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/medbay3{name = "Medbay Aft"}) "cCM" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) "cCN" = (/obj/machinery/power/apc{dir = 4; name = "Medbay Aft APC"; pixel_x = 26; pixel_y = 0},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/disposalpipe/junction,/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 4; initialize_directions = 11},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3{name = "Medbay Aft"}) -"cCO" = (/obj/structure/closet/secure_closet/scientist,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/toxins/explab) +"cCO" = (/obj/structure/closet/wardrobe/science_white,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cCP" = (/obj/structure/table/glass,/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/obj/item/weapon/pen/red,/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitegreen"},/area/medical/virology) "cCQ" = (/obj/structure/closet/secure_closet/personal/patient,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics_cloning) "cCR" = (/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/structure/closet/wardrobe/genetics_white,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/medical/genetics) @@ -7118,7 +7120,6 @@ "cGV" = (/obj/machinery/camera{c_tag = "Research Testing Range"; dir = 8; network = list("SS13","RD"); pixel_y = -22},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plating,/area/toxins/misc_lab{name = "\improper Research Testing Range"}) "cGW" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plating{icon_plating = "warnplate"; icon_state = "warnplate"},/area/toxins/misc_lab{name = "\improper Research Testing Range"}) "cGX" = (/turf/simulated/floor/plating{icon_plating = "warnplate"; icon_state = "warnplate"},/area/toxins/misc_lab{name = "\improper Research Testing Range"}) -"cGY" = (/obj/structure/closet/secure_closet/scientist,/obj/machinery/light_switch{pixel_y = 28},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cGZ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 9; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) "cHa" = (/obj/structure/lattice,/turf/space,/area/toxins/mixing{name = "\improper Toxins Lab"}) "cHb" = (/obj/machinery/door/poddoor{id = "mixvent"; name = "Mixer Room Vent"},/turf/simulated/floor/engine/vacuum,/area/toxins/mixing{name = "\improper Toxins Lab"}) @@ -7130,7 +7131,6 @@ "cHh" = (/obj/machinery/atmospherics/binary/valve{dir = 4; name = "manual outlet valve"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cHi" = (/obj/machinery/atmospherics/unary/portables_connector/visible{dir = 8},/obj/structure/window/reinforced{dir = 1; pixel_y = 2},/obj/machinery/light{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cHj" = (/obj/structure/closet/wardrobe/grey,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) -"cHk" = (/obj/structure/closet/secure_closet/scientist,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/toxins/mixing{name = "\improper Toxins Lab"}) "cHl" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plating/airless{dir = 10; icon_state = "warnplate"},/area/toxins/test_area) "cHm" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plating/airless{dir = 6; icon_state = "warnplate"},/area/toxins/test_area) "cHn" = (/turf/simulated/wall,/area/medical/virology) @@ -8025,7 +8025,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahatJatJatJatJatJatJatJaahatJaahaahatJatJaahaahalWalWardawwalWalWaaaauraxtaxtaxtaBLaBuaBvaBvaCTaBxaByaBzaBAaBBaBCaBDaBEaCVaBGaDHayWayYaheaaaaxCaAraAqaBJaAsaBKaxCaaaaoOaFwawDawDaOZaBOauAaboaBQaAyaBRagKaBQaAyaBSagKaBQaAyaBTagKaBUaBVaBWagKaBXaBYaBZaCaaCbazxaCcaCdaCeaCfaCgaChazBaCiapjapjapjaCjaCkaykaClaCmaCnaykaCoaCpaCpaCqaCraCsaCtarWarWarWarWarWaocaCuatHaSuaCwaCxaCyavraCAaCBaCCaCCaCCaCCaCDaCEaCFavsaCHayFaCIaahaahaaaaaaaaaaahaahaaaaaaaahaaaatJazRayFazXaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaatJatJatJatJatJaahaahaahatJatJatJaafaaaaahaahaahalWalWalOalOaCJagAaaaaaaaqQaxsaxsaxsaqQarCaCLaCMaCNaBxaBvaCOaCPavtayUaCRaCSaEhaCUaEsayWayYaheaahaxCaCWaCzaCYaCXaTEaxCaaaaoOaPeaPeaPeaoOausaDeaboavvavxavwahCavvavxavwahCavvavxavwahCaxDazqayPahCahCauhazrahCaDnazxaDoaDpaDqaDraDsaDtazBaDuaheaheaheaDvaheaykaDwaDxaykaykaDyaDzaDAaDBaDCaDDaDEavRaDFaDGatxarWaFDaDIatHaDJaDKaDLaDLaDMawzazLaDOaDPaDQaDQaDQaDRaDSawAaDUawBaaaaaaaahaaaaaaaaaaahaaaaaaaaaaahaaaaaaaahayFazXaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaDWaDXaDWaagaaaaahaaaaahalWaHcaFHakBawwalWalWaaaauraPPaPfaPQaurarCarCarCayUaEdaBvaEeaCPaEfayUaEgaHFaEiaEjaEkayWayYaheaaaaxCaDbaDaaDTaEmaxCaxCaaaaPUaQuaQuaQuaQvaEraxvaEraEtaEuaEtaEvaEtaEuaEtaEwaEtaEuaExaEyaEzaEAaEBaxEaAJaEEaDmahCavNazBaEGaEHaEIaEJaEKaELazBaEMaykaENaEOaEPaEQaEQaERaESaETaEUaEVaEWaEXaEYaEZaFaauLaFbaFcaFdaFearWaqKaDIatHaFfaFgaFhaFiaFjaFkaFlaDVaFnaFoaFoaFoaFpaFqawAaDUawBaaaaahaahaahaahaahaahaahaahaahaahaahaaaaahayFazXaahaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaahaaaaaaaahaahaaaaDWaFsaDWaahaahaahaahaahalWaWhaotaotaFtaFualWaaaaQyarlaQzarlaQBaahaahaaharCaFzaFAaFBaFCaHIayUaFEaFFaWiaIfaFIayWayYaheaaaaahaaaaDYaFLayNaaaaahaaaaErausausausaEraErayOaFOaExaFPaFQaFRaFSaFTaFTaFUaFTaFVaFSaFWaFXaFYaFZaGbaEFaGdaGcahCavNazBazBayQaGfazBaDZazBazBaDuaykaykaykaGhaGiaGjaGkaGlaGmaGnaGoaGpaGqaGraGraGsaGtarWarWarWarWarWaqJaDIatHaGuaGvaGwaGxaGyayRaGAaGBaGCaGDaGEaGFaGGaGHawAaDUawBawBaahaGKaaaaaaaaaaaaaGKaaaaaaaGKaahaahaahayFaGLaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaahaaaaaaaahaahaaaaDWaFsaDWaahaahaahaahaahalWaWhaotaotaFtaFualWaaaaQyarlaQzarlaQBaahaahaaharCaFzaFAaFBaFCaHIayUaFEaFFaWiaIfaFIayWayYaheaaaaahaaaaDYaFLayNaaaaahaaaaErausausausaEraErayOaFOaExaFPaFQaFRaFSaFTaFTaFUaFTaFVaFSaFWaFXaFYaFZaGbaEFaGdaGcahCavNazBazBayQaGfazBaDZazBazBaDuaykaykaykaGhaGiaGjaGkaGlaGmaGnaGoaGpaGqaGraGraGsaGtarWarWarWarWarWaqJaDIatHaGuaGvaGwaGxaGyayRaGAaGBaGCaGDbcmaGFaGGaGHawAaDUawBawBaahaGKaaaaaaaaaaaaaGKaaaaaaaGKaahaahaahayFaGLaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaahaaaaaaaaaaahaaaaDWaDXaDWaDWaySaySaySaDWaDWaDWaDWaDWaGQaGRalWaaaaaaaaaaaaaaaaaaaaaaaaaaharCaGTaGUaGVaGWaGXayUaGYaGZayWayWayWayWaEaaheaHbaElazfaEnaHfazhazkazjaHbaEraHjaHkaHkaHlaHmaHnaHoaHpaHqaHraHsaHtaHuaHvaHwaHuaHxaHyaHzaHAaHBaHCazmaGPaHEaGSahCavNaHHazBaznaHJazBaHKaHLaplaHMaykaHNaHOaHPaHQaykaHRaHSaHTaykaHUaHVaHWaHXaHWaHYaHZaIaaIbaIcaIdarWapxaDIatHaIeazpaIgaIhaIiaCAaIjaIkaGCaIlayFayFaImbbLayFawBawBawBaahaaaaaaaaaaaaaaaaIqaaaaaaaaaaahaahaahayFazXaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaahaDWaDWaIraIsaItaIuaIuaIvaIwaIxaIyaIzaDWaDWawwalWaaaaaaaaaaaaaaaaaaaaaaaaaahayUayUayUazsaICayUayUaIDaIEaIFaIGaIHaIIaIJaIKaILaFJaINaGgaIOaINaIPaIQaIRaEraISaITaIUaIVaIVaztaIVaIVaIVaIVaIVaIVaIVaIVaztaIVaIXaIYaIZaJaaJaaJaaJbaJbaJbaJbaJbaJaaJcaJaaJdaJdaJdaJdaGMaJdaDuaykaykaykaJfaJgaykaJhaykaJiaykaJjaJkaJlavRaIAaJnaJoavRaJpaJqaJrarWaJsaJtatHayFayFayFayFayFaCAaJuaJvaGCaJwayFaJxaJyaJzaJAaJzaJBawBaahaaaaaaaahaahaahaahaahaaaaaaaahaahatJayFazXaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaaaaaaaaaaaaaaaaDWaJCaJCaJCaIuaIuaIuaIuaIuaIuaJCaJCaJDaDWawwagAaaaaaaaaaaaaaaaaaaaaaaaaaahaahazwaJGaLbaJHaJIaJJaJKaJLaJMaJNaJOaJPaJQaJRaIIaJSaJTaJUaJVaJWaJXaJYaJZaKaaKbaKcaKdazyaaaaaaaaaaahaaaaaaaaaaahaaaaaaaaaazAaKfaKgaKhaJaaXbaKjaKkaKlaKmaKnaKoaKpaKqaJaaKraKsaKtaXLaKvaJdaKwaykaKxaKyaGiaJgaykaKzaykaKAaykaKBaKCaKDaKEaKEaKEaKEaKEaKEaKEaKEaKEaocaKFatHaKGaKHaKIaKJayFaKKaFgaJvaKLaKMaKNaKOaKPaKQaKRaKSaKTawBaahaGKaahaahaAaazZaAbaahaKUaaaaahaaaaraayFazXaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -8041,7 +8041,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaGObdgaXcaXdaXeaXfaXcaXgaXhaXiaXhaXjaXkaXhaXlaJmaTVaXoaXpalWaaaaaaaaaaaaaaaaaaaaaaaaaahaVZaHdaUSaMsaNUaNUaHeaHgaLhaXsaXtaXuaXvaXwaXxaXyaXzalWawwaLnaLnaLnaAuaAuaHhaLraXDaXEaLraXFaXGaXHaWraXIaXJaXKaWrbdlaXMaXNaXOaXPaXQaXRaXSaXTaXUbeOaJaaJaaXWaXXaXWaJaaJaaFKaYaaYbaFKbcTaYcaYdaYeaYfaYgaocaocaocaocaYhaocaocaocaocaocaocaDIapwapxaYiaYiaYiaYiaYiaYiaYiaWPaYjaYkaYlaWPaHiaYnaWPaYoaYpaCAaCAaYqaYraYsazOaYtazOaYuazRaYvazRayHayIaYwayIayKazRaYvazRayLazWazXaahaahaagaagaafaahaafaagaagaafaafaagaagaagaafaahaahaahaahaahaQxaTiaYxaYyaYyaYyaYyaYyaYzaYzaYzaYAaYzaYzaYzaYyaYBaYyaYyaYyaYCaTpaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaaaaHDaYEaYFaYFaYGaYFaYFaYFaYHaYIaYJaYKaYLaYLaYLaYMaYNaYOaYPalWaaaaaaaahaahaaaaaaaahaahaahaVZbgqbgjbiRaYRaNUbjwaInaYUaYTaYVaYWaYXaYYaYZaZaaZbalWaZcaZdaZeaZfaZgaZhaZiaZjaZkaZlaZmaZnaZoaZnbeTaZqaZraZsbeZaZnbGzaZuaZvaZxaZwaZzaZyaZAaZCaZDaZDaZDaZEaZFaZDaZDaZGaZDaZHaZIaZDaZDaZDaZKaZLaocaZMaZNaZOaZPaZQaZRaZQaZSaZQaZTawhaWOawiaqJapxaYibfWaZUaZVaZWbhfaZZaWPbaababbabbacbabbadaWPbaeaWUbafbagbagbagbagbagbahayFbaiayIbajayIazVayFayFayFbaiayIazVayLayLayFaahaahaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaQxaUvaUwaUCaaaaUzbakbakbalbambanbaobapbambaqbakbaraUzaaaaVRaUwaUCaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaHDaHDbauaHDaTqaHDbawaHDaYEaYFbaxbayaHDbawaHDbhPbaAbaBbaCalWalWalWalWagAagAagAalWalWalWaVZbkHbaJbaJbaJbaJbaKaNUbaLbaMbaNbaOaUXaUXaUXaUXaIBalWalWbaQalWalWbaRbaSbaTbaUbaVbaWbaXbaUbaVbaYbaZbaWbbabaUbaUbaUaZBbbbbbcbbebbdbbfbbgbbhbaUbaUbaUbaUbbjbbkbaUbaUbaXbblbbmbaUbaUbaUbaUbbnbbobbpbbpbbpbcnbbpbbpbbpaocbbqaocaDIaocaocbbrbbrbbrbbrbbsbbtbbtbbubbvbbwaWPbbxbbyaIWbbAbbBbbCaWPbbDbbEbbFbagbbGbbHbbIbagbbJayFayFayFayFayFayFayFbbKayFayFayFayFayFbbLayFaahaQxaQxaafaQxaQxaQxaQxaafaQxaQxaQxaQxaafaQxaQxaQxaQxaQxaQxaQxaQxaTiaUwaUCaaaaUzbakbanbbMbbNbbObbPbbQbbNbbRbanbaraUzaaaaVRaUwaUCbbSbbSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaHDaahaaaaahaaaaHDbbUaHDbbVbbVbbWbbXaHDbbUaHDaHDaTqbbZbcabcbasuasvbccasvbcdasvbcebcfaswbeqbchaJEaJEaJFaKYaKebcmbkIbcobcpbcqbcobcrbcsblvbctbcubcvbcwbcxbcybczbcAbcBbcCbcCbcDbcEbcFbcGbcHbcIbcJbcKbcKbcKbcKbcKbcKbcKbcLbcMbcNbcNbcNbcNbcNbcNbcNbcNbcObcPbcQbcRbcNbcSbcObcNbcNbmTbcUbcVbbpbcWbcXbcYbcZbdabbpbdbbdcaocbddaocaaabbrbdebdfbbrbjzbdhbdibdjbdkbmIaWPbdmbdnbdobdpbdqbdraWPbdsbdtbdubagbdvbdwbdxbagbdyaKRaKRbdzaKRbdAaKRaKRaKRbdBaKRbdCbdDbdCbdDabjabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaaaaRJbdEaUwaUCaaaaUzbakbdFbdGbakbdHaKZbdJbakbdKbdLbaraUzaaaaVRaUwbdMaaabbSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaHDaahaaaaahaaaaHDbbUaHDbbVbbVbbWbbXaHDbbUaHDaHDaTqbbZbcabcbasuasvbccasvbcdasvbcebcfaswbeqbchaJEaJEaJFaKYaKeaJEbkIbcobcpbcqbcobcrbcsblvbctbcubcvbcwbcxbcybczbcAbcBbcCbcCbcDbcEbcFbcGbcHbcIbcJbcKbcKbcKbcKbcKbcKbcKbcLbcMbcNbcNbcNbcNbcNbcNbcNbcNbcObcPbcQbcRbcNbcSbcObcNbcNbmTbcUbcVbbpbcWbcXbcYbcZbdabbpbdbbdcaocbddaocaaabbrbdebdfbbrbjzbdhbdibdjbdkbmIaWPbdmbdnbdobdpbdqbdraWPbdsbdtbdubagbdvbdwbdxbagbdyaKRaKRbdzaKRbdAaKRaKRaKRbdBaKRbdCbdDbdCbdDabjabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaaaaRJbdEaUwaUCaaaaUzbakbdFbdGbakbdHaKZbdJbakbdKbdLbaraUzaaaaVRaUwbdMaaabbSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaaaaHDbawaHDaHDaHDaHDaHDaHDbawaHDaaaaTqbdQbdRbdSbdSbdSbdSbdSbdSbdSbdSbdTbmMbcobcoaLoaMraLobcobcobcobdYbcobdZbeabebbecbedbeebefbegbehbeibejbcybekbcAbelbembembenbembeobembgbbeRbgbaMGaMGaMGaMGaMGaMGaMGaMGaMGaMGaMGaMGaMGaMGaMGaMGaMGbeubeubevbeubeubeubeubeubeubewbcAbexbbpbnjbezbeAbeBbeCbbpbeDbeEaocaDIajVaaaaOfbeGbeHbeIbeJbeKbeLbeMbeNbncaWPbePaOhaOFaOFaOXaOWaWPbeUbeVbeUbagbeWbeXbeYbagaOYayFayFayFayFayFayFayFayFayFawBayFayFbahayFaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaQxbfbbfcbfdbfeaUzaUzaUzbakbffbfgbfhbakbakbakbfibfjbfkbaraUzaUzaUzbflaToaTpaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaFaXCbaIaXCbdNaXCaXCbdNaXCbaIbdPbdOaTqbdQbfsbftbfubfvbfwbfxbfybfzbdSbfAbfBbfCbfDbnsbfEbnsbfEbfGbfEbfHbcobfIbfJbfKbfLbfMaPgbfObfPbfQbfRbfSaPobfUbfVbotbembfXbfYbfZbgabembhobgcbhraahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbeubgdbgebgfbggbghbgibnVbeubgkbglbgmbbpbgnbgobgpboqbgrbbpaocaocaocbgsaocaaabbrbgtbgubbrbgvbgwbgxbgybgzbgAaWPbgBaPAbgDbgEbgFbgGaWPaCAbgHaCAbagbgIbgJbgKbagbgLbgLbgLaaKaaEaaaaaaaaaaaaaahaaaaaaayFbdDayFaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaRIaRIbgMbgNaUwbgObgPaaaaaaaUzbgQbgRbgSbakbakbgTbakbakbdKbgUbgVaUzaaaaaabgWaUwaUCaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaFaXCaXCbdVbdUbdXbdWbhcbhbbUqboGcDRbdXcVVcVUaHDbdQbdRaQTbhibhjbhkbhlbhmbhnbhMbhpbhqbhNbhsbhsbhtbhubhvbcobcobcobcobhwbhxbhybhzbhAaLobhCbegbehbhDbhEbhFbhGbcAbhHbembhIbhJbhKbhLbhObiQbiqbjAaahaahaQYaRcaRbaRdbhUaRfaRcaRdbhUaRfaRbaRbaRgaahaahbeubhZaRhbibbicbibbidbiebeubifbcAbigboHbbpaRjbiiaRqbbpbbpbikbilaocbinaocbimbbrbbrbbrbbraYiaYiaYibiobipaYiaWPaWPaWPaWPaWPboOboNaWPbisbitbisbagaRzbivaRAbagbiyaRHcVWcVXcVXcVYaaaaaaaaaaahaaaaaaaaaabjaaaaahaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaahaahabjbiCbiDbiEbiDbiFaUCaaaaaaaaaaUzbiGbanbiHbiIbiJbiKaRKbiIbiMbanbaraUzaaaaaaaVRaUwaUCaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -8071,8 +8071,8 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaabWCbWCbWDbWEbWFalWbWGalWalWalWaUObWHbWHbWHbWHbWHbWHbWHaotbWIbWJcbZbwLbWLbWMbyUbWObEobTdbWPbWQbWRavialWbWSbwPbWTbWUbWVbWWbWXbWXbWXbWYbWZbXabXbbWXbXcbXdbWVbWVbXebXfbXfbXfbXgbXfbXhbXibXibXjbXkbXlbXmbXnbXobWXbWXbWXbXpbXqbXibXraXQbXsbXtbyVbXvbXwbXxbyWbyXbXAbXxbXBbXCbXDbXEbNrbXFbXGbWwbXIbXJbXKbXLbWtbXMaocaocaocaocaocbXNbXObzBbzBbzBbWxbGDbKobWzbWybWAbGGbXzbWKbXHbSxbXPbMjbFgbFsbIzbYZbZabZabFvaahaaabCaaaabBZaaabCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaVRaUwbJhaRIaRIaRIaRIaRIaRIbWBaRIaRIaRIaRIaRIaRIbgNaUwaTpaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaabWFbXZbYabYbbWFaotbYcbMAcesalWbYebWHceGbYgbYhbYiceIbWHaotalObWJalObwLbwLbwLbwLbwLbwLbwLbwLbwLatRalOalWbYkbwPbYlbYmbaUbaUbaUbaUbaUbaUbaXbaUbYnbYobYpbaWbaUbaUbYqbYrbYsbYtbYubYvbYwbaUbaUbaUbYybYzbaUbaUbaXbaUbaUbaUbaUbYAbaUbYnbYBbYCbYDbYEbYFbYGbYFbYHbYHbYIbYJbYKbYHbYGbYLbNrbNrbNrbNrbYMbYNapwaoaceWbYPapwbYPbYQbYRaocauWaocbzBbXQbXUbXTbXWbXVbYdbYdbYdbINcgpcgpcgpbNRbYSbNSbBIaahbBIbZbcaDcaCbFvaahaaabCaaaabBZaaabCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaVRbZcaTkaTkaTkaTkaTkaTkaTkbZdaTkaTkaTkaTkaTkaTkaTkbZeaUCaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahbWFbZfbZgbZhbWFaotbZibZjalWalWbZkbWHbZlbZmbZnbZobZpbWHawqaotbZqbVKbVIbVKbVNbVKbZrbZsbZsbZsbZsbZtaZebZubZvbZwbZxbZybZzbZAbZBbZybZybZybZCbZybZDaZCbZEbZFaZCaZCbZGbZHbZIbZJbZKbZLbZMaZCaZCbZObZPbZQbZQbZRbZSbZRbZRbZRbZTbZUbZVbZWbZXbZYbZZcaacabcaccadcaecafcagcahcaicajcagcakbWicalcambWicanbYNapwapwapwapwapwcaocapcaqcarcascatbYUbYTbYWbYVbYYbYXcgpcgpcgpcgpcgpbEScgpbNRcaubPvbIVbJdbLAcaVbZacbibFvaahaaabCaaaabBZaaabCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaaaaUyaUyaUyaUyaUyaUyaUyaUycaEaUyaUyaUyaUyaUyaUyaUyaUyaaaaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaabWFcaFcaGcaHbWFcgvaotcaJalWcaKcaLbWHcaMcaNcaOcaPcaQbWHbWHbWHbWHbWHbWHcaRbWHbWHcaSchcchdalOardccuarhcklcklcklcklcklcklcklcchcchcchcchcchcdzcaWcaWcaXcaYcaWcaZcaWcbacbbaXQcbcchzcbecbfcbecbgcbhcbecbecdKbepaXFaXHaXHcbjbepcbkbepbzacbmbzabWibzkbzbcahcbpcbqcagcahcbrcbscbtbzlbWichAcbwbWicbxcbycbzcaqcaqcaqcaqcbAcbBcbCcbDcbCcbEbzGcavcaxcawcgpcaybMdbMdbMdbMdbMdcazcgpbNRbRecaAbzBaahbFvbFvbFvbFvbFvaahaaabCaaaabBZaaabCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbSaQxaQxaQxaQxaQxaQxaQxaQxaQxaQxaQxaQxaQxaQxaQxaQxaQxaQxaQxaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaabWFbzocbMbzobWFalWalWalWalWbWHcbObWHcbPchBcbRcbScbTbWHcbUcbVcbWbWHcbXcbYchQbWHccabWHbWHbWHbWHbWHbWHcklccbbBhbCRbCKcibccgcchcciccjcckcchbASccmbASccnccobASccmbASciKccqccrccsciWbATccvbATccwccxbATccvbATcctccyccyccyccyccycczbepbAUccBbAVbyVccDbYGcahcajcajcagccEcajcajcagccFbWiccGccHbWibYMccIccJcbCcbCcbEcbCcbCccKcbucbdcbucbubzBcbvcbGcbFcbIcbHbEScgpcgpcaybMdcbJbPubNRcbKbNSbzBaahaahaahaahaahaahaahaahbMoaahbMpaahbNWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaabWFcaFcaGcaHbWFcgvaotcaJalWcaKcaLbWHcaMcaNcaOcaPcaQbWHbWHbWHbWHbWHbWHcaRbWHbWHcaSchcchdalOardccuarhcklcklcklcklcklcklcklcchcchcchcchcchcdzcaWcaWcaXcaYcaWcaZcaWcbacbbaXQcbcchzcbecbfcbecbgcbhcbecbecdKbepaXFaXHaXHcbjbepcbkbepbzacbmbzabWibzkbzbcahcbpcbqcagcahcbrcbscbtbzlbWiccGcbwbWicbxcbycbzcaqcaqcaqcaqcbAcbBcbCcbDcbCcbEbzGcavcaxcawcgpcaybMdbMdbMdbMdbMdcazcgpbNRbRecaAbzBaahbFvbFvbFvbFvbFvaahaaabCaaaabBZaaabCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbSaQxaQxaQxaQxaQxaQxaQxaQxaQxaQxaQxaQxaQxaQxaQxaQxaQxaQxaQxaQxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaabWFbzocbMbzobWFalWalWalWalWbWHcbObWHcbPchBcbRcbScbTbWHcbUcbVcbWbWHcbXcbYchQbWHccabWHbWHbWHbWHbWHbWHcklccbbBhbCRbCKcibccgcchcciccjcckcchbASccmbASccnccobASccmbASciKccqccrccsciWbATccvbATccwccxbATccvbATcctccyccyccyccyccycczbepbAUccBbAVbyVccDbYGcahcajcajcagccEcajcajcagccFbWichAccHbWibYMccIccJcbCcbCcbEcbCcbCccKcbucbdcbucbubzBcbvcbGcbFcbIcbHbEScgpcgpcaybMdcbJbPubNRcbKbNSbzBaahaahaahaahaahaahaahaahbMoaahbMpaahbNWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaaaaaabzocbQbzoaaaaahaaaaaaaaabWHcbObWHbWHbWHbWHccZbWHbWHcdacdbcdabWHbWHbWHbWHbWHcdccddbWHcdecdfcjgcdhccdcdjcdkcdlcdkcdmcdncdocdpcdqcdrbBbcggbBfcdvcdwcdxcdycghchmccmcdBcdCcdDccvcdEcdFcdGcdHcdIcdJchncdLcdMccycdNbBjcdPccycdQbepcdRcdScdTcdUcdVcdWcdXcdYcdZcdWcdXcdYcdYcdWceacebceccedccLcefbYNapwcegcehcbucbucbucbucbuceicejcekbzBccMccNcgpcgpbPqccObFbbFbccPccQccPbFbccRccSbNSbzBbzBbzBaRJaRIaRJaRIaRJaaabCaaaaaahaaabCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaahaahbzocbMbzoaahaahaahaahaahbWHcewcexceybWHcezceAceBbWHceCceDceEceFckXceHckZbWHceJceKceLceMbBlceObBRccUceRceSceTceUceVbDVbDWcchceXceYbCmcfacfbcfccfdcfecffcfgcfhcficdBcdCcdDcfjcfkcflcfmcfncfocfpcfpcfqcfqbCncfscftcfuccycfvbepcfwcfxcfybyVcfzcfAcfBcfCcfDcfCcfEcfCcfFcfCbCJbWibCLcfIcfJcfKccKaocaocaoccbucfLcfMccVcfOcfPcfQcfRbzBccWccYccXcdscdicelceecencemcepceocerceqcevbNSceQchMceQchVchVchVchVciIaahaafaaaaahaaabCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaacfHaaaaaaaahaaaaahaaabWHbWHbWHcbObWHcgicgjcgkcglcgmcgncgoceHceHceBclLbWHcgqcgrbWHcaQcgscgtcgucklbCTbCScmDcgycgzcgAcmEccpccpcgCccpcgDcgEcgFcgFcgGcgHcgIcgJcgKcgLcgMcgNcfjcfkcfkcfkcgOcgPcgQcgRcgScgTbDucgVcgWcgXccycgYbepbepbepbepbWibWicfNbWibWibWibWibWibWibWibWibWibWibWibWibWichachbaoccnHcnqcbuchechfbbichhchichjchkbzBcfScfScfTcfScfUcfScfTcfVcfUcfUbNScfScfWcfYcfXbzBbzBbzBcjjcjochVcjpcjjaaabCaaaaaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -8086,14 +8086,14 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaahaaaaaaaQxaaacgcaaaaaaaaaaaaaahaaabLQbSccocbTrbSQcmCcqBcqCcaRcljcmMcqDcqEcqFcqGcqHcmMcqIcqJcqKcmMciZcqMcqNcqOctPbTNcqRcdwcqScpMcuCbUabUcbUbckUcpMbZncjhcqYcuHcuObUCbEFcrbcrccrdcrecrfcjCcuZcvbcvacvNcvfbUNcrmcrncrocrpcrqcfkcrrcrscrtcfkcrucrvcrwcfkcwwbQSbUPckfcwDbUTcwHclkbUVbEHcjDbWHbWHcrFbWHcrGcwMceHceHcrIcwXbLQaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaahaaachVcpScnVbzBcnVaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaaaaaaaahaaaaaaaafaaabBkaahaaaaaaaaaaahaaabLQbLQcoccmCcmCcoccoccrPcaRcljcmMbVbcrRcrScrTcrUcmMcllcrWcrXbVTcrZcsacsbcsccsdcsecsfcdwcdxbPdcshcsicsjcxkcslcpMceBcjhcsmcxxcxycspcsqcsrcsschUcstcsucxOcxNcsxcsycszcsAbVZcsCcsDcsEcsFcsGcsHcsIcsJcsKcsLcsKcsMcsNcsOcsPcxlbWabXubWNclmbXybXSbXRcnjcsZbWHctactbctcbYicqsceHceHctdctebWHctfaahaaaaaaaaaaahaaaaaaaaaaaaaaaaahaaaaaaaaaaahaaaaaaaaaaaaaahaaaaahaaaaaaaahaaaaahaaaaaaaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaahaahaaaaaaaQxaaacfHaaaaaaaaaaaaaahaaabLQcthcoccticoccoccpxbWHbWHctjcpIctlcrRctmcrTctnctoctpctqctrctscttctuctvctwctxctyctzctAcgEcblctCcxPctEctFctEcpQctHcjhctIcyKczGcyLbEFcsrcsschUcstctMcgdczNcASczOctQctRbUNctSctTctUctVctWctXctYctZcfpcfpcuacubcuccudcuecbocbncxzcxoccccbNccfcqdbEHcjDbWHcuncuocupcpjcuqcrIcjEceHcurbLQaaaaahaaaaaaaaaaahaahaafbBZbBZbBZbBZbBZbBZaafbBZbCabBZbMpaahbCaaahaahaafbNWbNWbNWaafaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaahaaaaaaaQxaaabEzaaaaaaaahaahaahaaabLQcuscmCcodcmCcutceBcclbWHcljcmMcuvcuwcuxcuycuzcmMcBmcuBcBpcmMcuDcoecuFcuGcBqbTNcuIcdwcuJcpMcuKcuLcuMcuNcBscpMcuPcjhcjhcrKcjhcjhcjhcjhcuRcuScuTcjqcjqcjqcjqcjqcuUcrVcjqcjAcjAcrYcuXcuYccCccAccTcvccvccvccvccvdcvecCfcvdbEHbEHbEHctkcsBcdtcCObEHcjDbWHctacdubWHcvlcvmcdAcDacDacdObWHaahaahaahaahaahaahaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaahaaabCaaaaaaaaahaaaaaaaahaaaaahaahaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaahaaaaaaaQxaaabEzaaaaaaaahaahaahaaabLQcuscmCcodcmCcutceBcclbWHcljcmMcuvcuwcuxcuycuzcmMcBmcuBcBpcmMcuDcoecuFcuGcBqbTNcuIcdwcuJcpMcuKcuLcuMcuNcBscpMcuPcjhcjhcrKcjhcjhcjhcjhcuRcuScuTcjqcjqcjqcjqcjqcuUcrVcjqcjAcjAcrYcuXcuYccCccAccTcvccvccvccvccvdcvecCfcvdbEHbEHbEHctkcsBcdtcmfbEHcjDbWHctacdubWHcvlcvmcdAcDacDacdObWHaahaahaahaahaahaahaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaahaaabCaaaaaaaaahaaaaaaaahaaaaahaahaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaQxaahaafaQxaaaaafaQxaQxaahaahaahbEzaahaahaahaaaaahaahbLQcmCcutcmCcvpcqscxAcxBcmFcmGcmMcvrcvscetcvuceucmMcuAcvxcvycmMcuQcvAcvAcvAcvAcvAcvBcvCcvDcvEcvFcvGceNcvIcePcpMcvKcvLcvMcvOcDbcvPceKcvQcvRcvScvTcvUcuVcvLcvXcvYcvZcwacuWcwccvzcvicwfcwgceZcwicwjcwkcwlcwmcwncvdcwocwpcwqcwrcwsbEHbEHbEHbEHbEHbEHcwtbWHbWHbWHbWHbWHbWHbWHbLQbWHbWHbWHaaaaahaaaaaaaaaaahaahaahaafbCabCabCaaafbCabCabCaaafbCabNWbCabCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaachsaaaaaaaaaaahaaaaaaaaaaahaaaaaaaahaaacgcaaaaaaaahaaaaahaaabLQbLQbLQbLQbWHcwycxEbWHbWHcljcmMcmMcmMcmMcmMcmMcmMcmMcvVcmMcmMcwAbWHcwBcfGcDdcwEctzcwFcwGcpMcDicwIcwJcwKcwKcwKcwKcwKcwKcwKcwLcvWcwLcxScwNcwOcwPcxWcwdcwbcwebWHcEicEicEucEicEicwScwVcwWceZcEVcwYcwZcxacxbcxccvdcxdcxecxfcxgcxhcoUcddciRbWHcxickdcxjbWHcylcddbWHaaaaahaaaaaaaaaaaaaahaaaaahaaaaaaaaaaaaaaaaaaaaaaahaaaaahaaaaaaaahaaaaahaaaaahaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaaabEybEybEybEybEyaahaahaahbEybEybEybBkbEyaaaaQxaaaaahaaaaaaaaaaaaaahbWHbWHbWHbWHcyrcljchEcyXcyEceHczbcaQchEciPbZnbWHcxpceHbWHcxqcxrcxscxncxucxvcxwcpMcpMcpMcpMcwKcgUcgxchGchtchJcwKcxCcxDcxIcxFcxGcdCcxHbWHcxKcxJcxMcxLcEicEWcFPcEXcEicyIcxQcxRciDcxTcxUcxVczdcxXcxYcvdcxZcyacybcyccydcoUcyecyfcygcyhchEcyicygcyjctdbLQaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaahbEXbFabFabFabFabFfbEzbFtbFrbFrbFrbFrbFEaahaahaahaahaahaahaahaahaahabjbWHcykbWHczecymciiciiciiciiciiciiciiciociicynceHcyobWHcypcyqcyqcyqcyscytcyucyvcywcyxcyycwKcyzcyAcyBcyCcyDcwKcqXcyFcyGcyHcxGcdCcCZcwRcyJcwRcwRcwRcEicFTcFUcFPcGrczocyMcyNcyOcyPcyQcyRcyRcyScxXcvdcyTcyacyUcyVcyWcoUciEcyYbWHcyZceHczabWHceHczlbWHaaaaahaaaaaaaaaaaaaahaahaaaaaaaaaaaaaaaaaaaaaaaaaahaacaaaaaaaaaaaaaaaaaaaaaaaaaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaahbJebJebJebJebJeaaabEzaaabJebJebJebJebJeaaaaQxaaaaaaaaaaaaaahaahciGciFciLczfczgczfceEceBceHceHceHczhcziczjceHceHczkbZpcznbWHczmciHczJczIczqczrczscyvcztczuczvcwKczwczxczyczzczAcwKciJczCcwLcwLczDcdCcjncwRczKczHczMczLcEicGtcFPcGucEicABczPczQcvcczRczSczTczUczVczWcvdczXczYczZcAacyVcoUbWHbWHbWHcqobWHcAbbWHbWHbWHbWHaahaahaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaahaahaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaahaaaaahaahaahaaabKIaaaaahaaaaahaaaaahaaaaQxaaaaaaaaaaahaahaaaabjabjbWHczpbWHceHchEceHceHcAdbWHbWHbWHbWHbWHchEczkcaQcgsbWHcAecAfcAgcAhcAicAjcAkciUcAmcAncAociVcAqcArcAscAtcAuciXcjbcAwcAxcwLcjmcAycAzcAAcAEcADcADcAGcEicGNcGNcGVcEicdHczPcAHcvccvccvccvccvccvccvccvdcvdcvdcAIcvdcvdcoUcxicAJckdcAKbWHceHcALcAMcANcAMabjabjaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaaabEybEybEybEybEyaahbEzaahbEybEybEybEybEyaahaQxaaaaaaaaaaafaaaaaaaahabjbWHbWHbWHcdebWHcgscAcczBbWHcAQcARcAQbWHcdeczkcBPcBPcBPcBPcBPcBPcBPcATcAUcAVcAWcAXcAYcAZcBacBbcBccBdcBecBfcBgcBhcBicBjcBkcBlcdCczEczFcBncACcACcBocEicGWcGXcGXcEicBrcBtcBucBvcGYcHkcBycBzcBAcBBcBCcBDcBEcBFcBGcBHcdecBIceHceHbWHbWHcBJbWHbWHbWHbWHaahaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaaabEybEybEybEybEyaahbEzaahbEybEybEybEybEyaahaQxaaaaaaaaaaafaaaaaaaahabjbWHbWHbWHcdebWHcgscAcczBbWHcAQcARcAQbWHcdeczkcBPcBPcBPcBPcBPcBPcBPcATcAUcAVcAWcAXcAYcAZcBacBbcBccBdcBecBfcBgcBhcBicBjcBkcBlcdCczEczFcBncACcACcBocEicGWcGXcGXcEicBrcBtcBucBvcpncCOcBycBzcBAcBBcBCcBDcBEcBFcBGcBHcdecBIceHceHbWHbWHcBJbWHbWHbWHbWHaahaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaahbEXbFabFabFabFabFfbEzbFtbFrbFrbFrbFrbFEaahcrMaahaahaahaQxaahaahaahaahaahaaabWHbWHbWHbWHbWHbWHbWHbWHbWHbWHbWHcqsczkcBPcjQcBLcBMcBNcBOcBPcBQcBRcBScyvcBTcBUcBVcwKcBWcBXcBXcBXcBYcwKcBZcCacCbcCccCdcCecCgcwRcChczHcCYcDccEicHocHqcHpcGrcIScCicCjcDecClcCmcCncCocCpcCqcCrcCscCqcCtcCucBHbWHcCwbWHcCvcCvcCxcCycCzcCAcCBaahaahaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahcCCcjScCCaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQxaahbJebJebJebJebJeaaabSbaahbJebJebJebJebJeaaaaQxaaaaaaaaaaahaaaaaaaaaaaaaahaaaaaaaaaaahaahaaaaaaaaaaahaaaaaabWHceHcCEcDfcCFcCGcCHcCIcCJcCKcCLcCMcCNcyvcjUcjTcCQcwKcCRcCScCTcCUcCVcwKcCWcCXcCXcwLbSLcDgcDUcDScEScDVcEUcETcEicHrcHBcHvcHDcEYcFQcDhcHMcDjcDkcDlcDmcDmcDncDocDpcDqcDrcjVcDtcDucDvcDwcDxcDycDzcDzcDzcDAcjWaahaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahcjScCCckncCCcjSaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrMaaaaahaaaaahaaaaahaaabBkaaaaahaaaaahaahaahaahcrMaaaaaaaaaaahaaaaaaaaaaaaaahaaaaaaaaaaaaaahaaaaaaaaaaahaaaaaabWHchEcDEcBPcDFcDGcDHcDIcDJckqcDLcDMcDNcyvcyvckMcyvcwKcwKcwKcwKcwKcwKcwKckNcwLcwLcAlcFRcwOcwPcApcFScFScGTcGRcEicIhcItcImcIucHLcHQcHPcIdcDXcDYcDZcEacEbcEccEdcEecEfcEgcEhcIycEjcEkcElcEmcEncEocEpcEqcErcjWaahaahaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahcEtcjScEvckRcExcjScEtaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/_maps/map_files/MetaStation/z2.dmm b/_maps/map_files/MetaStation/z2.dmm index 33f537a9409..11c23c50af0 100644 --- a/_maps/map_files/MetaStation/z2.dmm +++ b/_maps/map_files/MetaStation/z2.dmm @@ -190,7 +190,7 @@ "dH" = (/turf/simulated/wall/shuttle{icon_state = "swall_s10"; dir = 2},/area/shuttle/supply) "dI" = (/turf/simulated/floor/plasteel/shuttle,/area/shuttle/supply) "dJ" = (/turf/simulated/wall/shuttle{icon_state = "swall3"; dir = 2},/area/shuttle/supply) -"dK" = (/obj/structure/closet/secure_closet/cargotech,/turf/simulated/floor{dir = 1; icon_state = "loadingarea"},/area/centcom/supply) +"dK" = (/obj/structure/closet/wardrobe/cargotech,/turf/simulated/floor{dir = 1; icon_state = "loadingarea"},/area/centcom/supply) "dL" = (/obj/structure/closet,/turf/simulated/floor{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/centcom/supply) "dM" = (/obj/structure/closet/secure_closet/quartermaster,/turf/simulated/floor{dir = 1; icon_state = "loadingarea"},/area/centcom/supply) "dN" = (/obj/structure/closet,/turf/simulated/floor{icon_state = "floor"},/area/centcom/supply) @@ -288,7 +288,7 @@ "fB" = (/obj/structure/rack,/obj/item/weapon/gun/projectile/shotgun/toy/crossbow,/obj/item/toy/foamblade,/turf/simulated/floor{dir = 1; icon_state = "green"},/area/centcom/evac) "fC" = (/turf/simulated/floor{dir = 1; icon_state = "green"},/area/centcom/evac) "fD" = (/turf/indestructible/fakeglass{icon_state = "fakewindows"; dir = 1},/area/centcom/evac) -"fE" = (/obj/structure/rack,/obj/item/weapon/storage/fancy/crayons,/obj/item/toy/sword,/turf/simulated/floor{dir = 1; icon_state = "green"},/area/centcom/evac) +"fE" = (/obj/structure/rack,/obj/item/weapon/storage/crayons,/obj/item/toy/sword,/turf/simulated/floor{dir = 1; icon_state = "green"},/area/centcom/evac) "fF" = (/turf/simulated/floor/plasteel/shuttle,/area/shuttle/escape) "fG" = (/turf/simulated/floor/plating{icon_state = "floorgrime"},/area/shuttle/escape) "fH" = (/turf/simulated/floor/plating{dir = 1; icon_state = "delivery"},/area/shuttle/escape) @@ -471,7 +471,7 @@ "jc" = (/obj/structure/rack,/obj/item/weapon/gun/projectile/shotgun/toy/crossbow,/obj/item/toy/katana,/turf/simulated/floor{icon_state = "red"; dir = 2},/area/centcom/evac) "jd" = (/turf/simulated/floor{icon_state = "red"; dir = 2},/area/centcom/evac) "je" = (/turf/indestructible/fakeglass,/area/centcom/evac) -"jf" = (/obj/structure/rack,/obj/item/weapon/storage/fancy/crayons,/obj/item/toy/sword,/turf/simulated/floor{icon_state = "red"; dir = 2},/area/centcom/evac) +"jf" = (/obj/structure/rack,/obj/item/weapon/storage/crayons,/obj/item/toy/sword,/turf/simulated/floor{icon_state = "red"; dir = 2},/area/centcom/evac) "jg" = (/obj/structure/closet/emcloset,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor/plasteel/shuttle{icon_state = "floor3"},/area/shuttle/escape) "jh" = (/obj/machinery/flasher{id = "emshuttlebridgeflash"; pixel_y = -24},/turf/simulated/floor/plasteel/shuttle,/area/shuttle/escape) "ji" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel/shuttle{icon_state = "floor3"},/area/shuttle/escape) @@ -482,9 +482,9 @@ "jn" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/shuttle/syndicate) "jo" = (/obj/structure/stool/bed/chair/comfy/black{dir = 1; icon_state = "comfychair"; name = "pilot's chair"; tag = "icon-comfychair (NORTH)"},/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/shuttle/syndicate) "jp" = (/turf/simulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/simulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"; dir = 4},/area/syndicate_mothership) -"jq" = (/obj/item/weapon/storage/fancy/crayons,/obj/structure/table,/obj/item/weapon/storage/fancy/crayons,/turf/simulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) +"jq" = (/obj/item/weapon/storage/crayons,/obj/structure/table,/obj/item/weapon/storage/crayons,/turf/simulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) "jr" = (/obj/machinery/washing_machine,/turf/simulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) -"js" = (/obj/machinery/vending/cigarette{products = list(/obj/item/weapon/storage/fancy/cigarettes/cigpack_syndicate = 7, /obj/item/weapon/storage/fancy/cigarettes/cigpack_uplift = 3, /obj/item/weapon/storage/fancy/cigarettes/cigpack_robust = 2, /obj/item/weapon/storage/fancy/cigarettes/cigpack_carp = 3, /obj/item/weapon/storage/fancy/cigarettes/cigpack_midori = 1, /obj/item/weapon/storage/box/matches = 10, /obj/item/weapon/lighter/random = 4, /obj/item/weapon/storage/fancy/rollingpapers = 5)},/turf/simulated/floor{icon_state = "dark"},/area/centcom/ferry) +"js" = (/obj/machinery/vending/cigarette{products = list(/obj/item/weapon/storage/fancy/cigarettes/cigpack_syndicate = 7, /obj/item/weapon/storage/fancy/cigarettes/cigpack_uplift = 3, /obj/item/weapon/storage/fancy/cigarettes/cigpack_robust = 2, /obj/item/weapon/storage/fancy/cigarettes/cigpack_carp = 3, /obj/item/weapon/storage/fancy/cigarettes/cigpack_midori = 1, /obj/item/weapon/storage/box/matches = 10, /obj/item/weapon/lighter/greyscale = 4, /obj/item/weapon/storage/fancy/rollingpapers = 5)},/turf/simulated/floor{icon_state = "dark"},/area/centcom/ferry) "jt" = (/obj/structure/stool/bed/chair/office/dark{dir = 4},/obj/effect/landmark{name = "Emergencyresponseteam"},/turf/simulated/floor{icon_state = "dark"},/area/centcom/ferry) "ju" = (/obj/structure/sign/map/left{icon_state = "map-left-MS"; pixel_y = 0; tag = "icon-map-left-MS"},/turf/simulated/floor{tag = "icon-light_on"; icon_state = "light_on"},/area/centcom/ferry) "jv" = (/obj/structure/sign/map/right{icon_state = "map-right-MS"},/turf/simulated/floor{tag = "icon-light_on"; icon_state = "light_on"},/area/centcom/ferry) @@ -507,7 +507,7 @@ "jM" = (/turf/simulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) "jN" = (/obj/machinery/computer/shuttle/syndicate/recall,/turf/simulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) "jO" = (/obj/machinery/vending/coffee,/turf/simulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) -"jP" = (/obj/machinery/vending/cigarette{products = list(/obj/item/weapon/storage/fancy/cigarettes/cigpack_syndicate = 7, /obj/item/weapon/storage/fancy/cigarettes/cigpack_uplift = 3, /obj/item/weapon/storage/fancy/cigarettes/cigpack_robust = 2, /obj/item/weapon/storage/fancy/cigarettes/cigpack_carp = 3, /obj/item/weapon/storage/fancy/cigarettes/cigpack_midori = 1, /obj/item/weapon/storage/box/matches = 10, /obj/item/weapon/lighter/random = 4, /obj/item/weapon/storage/fancy/rollingpapers = 5)},/turf/simulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) +"jP" = (/obj/machinery/vending/cigarette{products = list(/obj/item/weapon/storage/fancy/cigarettes/cigpack_syndicate = 7, /obj/item/weapon/storage/fancy/cigarettes/cigpack_uplift = 3, /obj/item/weapon/storage/fancy/cigarettes/cigpack_robust = 2, /obj/item/weapon/storage/fancy/cigarettes/cigpack_carp = 3, /obj/item/weapon/storage/fancy/cigarettes/cigpack_midori = 1, /obj/item/weapon/storage/box/matches = 10, /obj/item/weapon/lighter/greyscale = 4, /obj/item/weapon/storage/fancy/rollingpapers = 5)},/turf/simulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) "jQ" = (/obj/machinery/vending/cola,/turf/simulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) "jR" = (/obj/item/device/paicard,/turf/simulated/floor{icon_state = "grimy"},/area/syndicate_mothership) "jS" = (/turf/indestructible/fakeglass{icon_state = "fakewindows2"; dir = 6},/area/syndicate_mothership) @@ -845,7 +845,7 @@ "qm" = (/obj/structure/cult/forge{desc = "A engine used in powering the wizards ship"; name = "magma engine"},/turf/simulated/floor{tag = "icon-cult"; icon_state = "cult"},/area/wizard_station) "qn" = (/obj/structure/table,/obj/item/ammo_box/foambox,/turf/simulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/holding) "qo" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/shaker,/turf/simulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/holding) -"qp" = (/obj/structure/table,/obj/item/weapon/lighter/zippo,/turf/simulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/holding) +"qp" = (/obj/structure/table,/obj/item/weapon/lighter,/turf/simulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/holding) "qq" = (/obj/structure/table,/obj/item/weapon/dice/d20,/turf/simulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/holding) "qr" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/soda_cans/cola,/turf/simulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/holding) "qs" = (/obj/structure/stool{pixel_y = 8},/obj/item/clothing/head/bandana{pixel_y = -10},/obj/item/clothing/glasses/sunglasses,/turf/simulated/floor/plating/beach/sand,/area/centcom/holding) @@ -855,9 +855,9 @@ "qw" = (/obj/structure/rack,/obj/item/clothing/head/that,/obj/item/clothing/under/suit_jacket,/obj/item/clothing/tie/waistcoat,/turf/simulated/floor{icon_state = "cafeteria"},/area/centcom/holding) "qx" = (/obj/item/toy/beach_ball,/turf/simulated/floor/plating/beach/sand,/area/centcom/holding) "qy" = (/obj/structure/shuttle/engine/heater,/turf/simulated/floor{tag = "icon-lava"; icon_state = "lava"},/area/wizard_station) -"qz" = (/obj/structure/rack,/obj/item/weapon/storage/fancy/crayons,/obj/item/weapon/gun/projectile/automatic/toy/pistol,/turf/simulated/floor{icon_state = "cafeteria"},/area/centcom/holding) +"qz" = (/obj/structure/rack,/obj/item/weapon/storage/crayons,/obj/item/weapon/gun/projectile/automatic/toy/pistol,/turf/simulated/floor{icon_state = "cafeteria"},/area/centcom/holding) "qA" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{icon_state = "cafeteria"},/area/centcom/holding) -"qB" = (/obj/structure/rack,/obj/item/weapon/storage/fancy/crayons,/obj/item/weapon/gun/projectile/shotgun/toy/crossbow,/turf/simulated/floor{icon_state = "cafeteria"},/area/centcom/holding) +"qB" = (/obj/structure/rack,/obj/item/weapon/storage/crayons,/obj/item/weapon/gun/projectile/shotgun/toy/crossbow,/turf/simulated/floor{icon_state = "cafeteria"},/area/centcom/holding) "qC" = (/turf/simulated/floor/plating/beach/coastline,/area/centcom/holding) "qD" = (/obj/item/clothing/head/collectable/paper,/turf/simulated/floor/plating/beach/coastline,/area/centcom/holding) "qE" = (/obj/structure/rack,/obj/item/clothing/shoes/laceup,/obj/item/clothing/under/suit_jacket/female{desc = "A black trouser suit for women. Very formal."; name = "black suit"; pixel_x = 3; pixel_y = 1},/turf/simulated/floor{icon_state = "cafeteria"},/area/centcom/holding) diff --git a/_maps/map_files/MetaStation/z3.dmm b/_maps/map_files/MetaStation/z3.dmm index f64cd149fbc..b7083787bb8 100644 --- a/_maps/map_files/MetaStation/z3.dmm +++ b/_maps/map_files/MetaStation/z3.dmm @@ -1,4 +1,5 @@ "aa" = (/turf/space,/area/space) +"ab" = (/obj/effect/spawner/lootdrop,/turf/simulated/floor/plasteel/airless,/area/tcommsat/chamber) "ac" = (/turf/simulated/wall/shuttle{tag = "icon-swall14"; icon_state = "swall14"; dir = 2},/area/shuttle/abandoned) "ad" = (/turf/simulated/wall/shuttle{icon_state = "swall_s6"; dir = 2},/area/shuttle/abandoned) "ae" = (/obj/structure/grille,/obj/structure/window/shuttle,/turf/simulated/floor/plating,/area/shuttle/abandoned) @@ -345,6 +346,7 @@ "gH" = (/obj/structure/table,/obj/item/weapon/defibrillator,/obj/effect/decal/cleanable/dirt{desc = "A thin layer of dust coating the floor."; name = "dust"},/turf/simulated/floor/plasteel/shuttle{icon_state = "floor3"},/area/shuttle/abandoned) "gI" = (/obj/structure/table,/obj/item/weapon/storage/backpack/dufflebag/med{contents = newlist(/obj/item/weapon/scalpel,/obj/item/weapon/hemostat,/obj/item/weapon/retractor,/obj/item/weapon/cautery,/obj/item/weapon/circular_saw,/obj/item/weapon/surgicaldrill,/obj/item/weapon/razor); desc = "A large dufflebag for holding extra medical supplies - this one seems to be designed for holding surgical tools."; name = "surgical dufflebag"; pixel_y = 4},/turf/simulated/floor/plasteel/shuttle{icon_state = "floor3"},/area/shuttle/abandoned) "gJ" = (/obj/structure/table,/obj/item/clothing/gloves/color/latex,/obj/item/clothing/mask/surgical,/obj/effect/decal/cleanable/dirt{desc = "A thin layer of dust coating the floor."; name = "dust"},/obj/item/clothing/suit/apron/surgical,/turf/simulated/floor/plasteel/shuttle{icon_state = "floor3"},/area/shuttle/abandoned) +"gK" = (/obj/effect/spawner/lootdrop,/turf/simulated/floor/plating/airless,/area/AIsattele) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -461,7 +463,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBbBbDbEbEbzbEbDbDbDbDbDbDbDbDbDbDbDbDbDbDbDbDbDbDbEbzayayaaayaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAbBbDbDbDbDbDbFbFbFbFbFbDbDbDbDbDbDbDbDbDbFbFbFbFbGbHayayayayayaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBbDbDbDayaabIbJbKbLbMbNbFbFbFbFbFbFbFbFbFbObFbPbQbRbSbHbHaybzbEbAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBbDbDayayaybTbJbHbUbVbWbXbFbYbYbZcacbccbFcdbFcecfbYbRbSbSbHbEbDbBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBbDbDayayaybTbJbHbUbVbWbXbFabbYbZcacbccbFcdbFcecfbYbRbSbSbHbEbDbBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBbDbDaaayaabIcgchcichcjckbFbYclbYbYbYcbbFcdbFcmcebYbYbRbRbFbDbDbBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAbDbDaaayaaaacncocpcqcrcsctcubYcvbYbYcbbFcdbFcecebYcwcxcybFbDbDbBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBbDbDaaayaabIczcAcBcAcBcCcDbYbYcEbYbYbFbFbFbFcFcGbYcEcHcIcJcKcKcLcMcNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -534,7 +536,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeCeCeCeCeCayaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayayeCeCeDeEeFeCeCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayayayeCeCeGeHeHeHeIeCeCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeJeKeCeHeLeMeHeNeMeHeCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeJeKeCeHeLeMeHeNeMgKeCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayayeOeHeOeHePeNeQeHeHeReCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeJeSeCeReTeHeUeHeVeWeCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayayayeCeCeHeHeMeHeXeCeCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/_maps/map_files/MetaStation/z4.dmm b/_maps/map_files/MetaStation/z4.dmm index 8f1e302b0f2..28ec3f8ad01 100644 --- a/_maps/map_files/MetaStation/z4.dmm +++ b/_maps/map_files/MetaStation/z4.dmm @@ -819,6 +819,8 @@ "pM" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/simulated/floor/mineral/bananium/airless,/area/space) "pN" = (/obj/item/weapon/pickaxe,/turf/simulated/floor/mineral/bananium/airless,/area/space) "pO" = (/obj/structure/closet/crate,/obj/item/weapon/ore/bananium,/obj/item/weapon/ore/bananium,/obj/item/weapon/ore/bananium,/obj/item/weapon/ore/bananium,/turf/simulated/floor/mineral/bananium/airless,/area/space) +"pP" = (/obj/effect/spawner/lootdrop/crate_spawner,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/djstation) +"pQ" = (/obj/effect/spawner/lootdrop/crate_spawner,/turf/simulated/floor/plasteel/airless,/area/derelict/bridge/access) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -855,7 +857,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabacacacacagahahaoahahagacacacac aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababafapaqarahasafabababababaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafatafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafafafafauavawaxayafafafafafafaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagazaAaAaAagawawawawawagaBaCaDaEagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagazaAaAaAagawawawawawagpPaCaDaEagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaFaAaAaAaGawaHaIaHawaJaBaBaBaKagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaLaMaNaAagawaOaPaQawagaRaSaTaUagaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaVafafaWafawawawawaXafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -904,7 +906,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeelelfpeIeJeHfEeHeJeHePePfpeHeHeHeHeJeHelceaaaaaaaaaaaaaaaaaaaaaeaedodtdtfqdtdtfFeBeBeSfGfHeSfHfIfJcdfKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeeleleHeJeHfLfMfNfOePfPePePfQfRfSfpeIeJelceaeaaaaaaaaaaefaaaaaeaeaedodododBdodteyfTeBfUfVfWezezeBeVfkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeelelfpeHfLfXfYfZePePePePePgagagbfSeHeIelceaeaeaacedododododododododododtdBdododogcgcgdgcgcgcetetetabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeelelelfpfpgegfeIePePePePePePePePggghfpgielceceaeaecedogjgjgjgkglgmgndododtdBdogogoceaecdcdaacegpcddfabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeelelelfpfpgegfeIePePePePePePePePggghfpgielceceaeaecedopQgjgjgkglgmgndododtdBdogogoceaecdcdaacegpcddfabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaelelelelelfpfpgefXeIePePePePePePePePgqghePfpelelelelelaadogrgjgjgjgjgjgjdododtdBdogogoaeaaaaaaaaaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeelelfpgsgtfpfpgugvePfOaaaaaaaaaaePePgqfmePfpeHfpePelelaedogjgjgjgjgjgjgjdododogwdododoaeaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaelelgxeHgqfSfpeIfpgyePePaaaaaaaaaaePePgzgyfpgAgBgCeHfpeleldodogDdogEgEgEgEdogjgjgFgjgjdoefaaaaaaaaaaaaaaaacdcdcedfcddfcdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -1077,3 +1079,4 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa "} + diff --git a/_maps/map_files/MetaStation/z5.dmm b/_maps/map_files/MetaStation/z5.dmm index 771f56987f4..006bec69756 100644 --- a/_maps/map_files/MetaStation/z5.dmm +++ b/_maps/map_files/MetaStation/z5.dmm @@ -9,7 +9,7 @@ "ai" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/mine/abandoned) "aj" = (/turf/simulated/floor/plasteel/airless,/area/mine/abandoned) "ak" = (/obj/structure/lattice,/turf/space,/area/space) -"al" = (/turf/simulated/floor/plating/asteroid/airless/cave,/area/mine/unexplored) +"al" = (/obj/effect/spawner/lootdrop/crate_spawner,/turf/simulated/floor/plating/asteroid/airless/cave,/area/mine/unexplored) "am" = (/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/shard{icon_state = "small"},/turf/simulated/floor/plating/airless,/area/mine/abandoned) "an" = (/obj/item/stack/rods,/obj/structure/door_assembly/door_assembly_ext{name = "Broken External Airlock"},/turf/simulated/floor/plasteel/airless,/area/mine/abandoned) "ao" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/mine/abandoned) @@ -608,9 +608,9 @@ "lJ" = (/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/mine/living_quarters) "lK" = (/turf/simulated/floor/plasteel{dir = 5; icon_state = "whiteblue"},/area/mine/living_quarters) "lL" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/mine/living_quarters) -"lM" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/light/small{dir = 1},/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor/plating,/area/mine/living_quarters) +"lM" = (/obj/effect/spawner/lootdrop/crate_spawner,/turf/simulated/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/abandoned) "lN" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/mine/living_quarters) -"lO" = (/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor/plating,/area/mine/living_quarters) +"lO" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/light/small{dir = 1},/obj/structure/closet/crate/secure/loot,/turf/simulated/floor/plating,/area/mine/living_quarters) "lP" = (/obj/structure/rack,/obj/item/weapon/storage/firstaid/regular,/obj/item/weapon/storage/firstaid/regular{pixel_x = -3; pixel_y = -3},/turf/simulated/floor/plating,/area/mine/living_quarters) "lQ" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/living_quarters) "lR" = (/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/living_quarters) @@ -711,6 +711,7 @@ "nI" = (/obj/docking_port/stationary{dheight = 9; dir = 2; dwidth = 5; height = 22; id = "syndicate_z5"; name = "south of asteroid"; turf_type = /turf/space; width = 18},/turf/space,/area/space) "nJ" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "loadingarea"},/area/mine/production) "nK" = (/obj/machinery/mineral/unloading_machine{dir = 1; icon_state = "unloader-corner"; input_dir = 1; output_dir = 2},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/mine/production) +"nL" = (/obj/machinery/atmospherics/pipe/simple,/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor/plating,/area/mine/living_quarters) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -787,7 +788,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddddaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadpdpdpdpdpdpddddddddddddaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababacacacacacacacacawdqcHcHcHcHcHcHcHcHcHcGawbpajdrajdadsdbdbacacacacacacacacacacacacacacacacacacacacacacacacacacabababaebFbFbFbFbFbFbFbFbFbFbFbFbFbFdtdududududududududtbFbFbFdvdvdvbhdwdxdycNcAbFbFbFbFbFbFbFaeaeaeaeahahahahahahahahahahahahahahahahahahaeaeaeaeaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadpdpdpdpdpdpdzdzdzdAdpdddddddBdBddddddddaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababacacacacacacacacacawdqcGcGcGdCdDcGcGcGdqdqawbpdrdrdrbqawdbdbdbacacacacacacacacacacacacacacacacacacacacacacacacacabababaebFbFbFbFbFbFbFbFbFbFbFbFbFdgdgdEdFdFdFdFdFdFdFdgdgbFbFbFbFbFbhbSdGbScNdHbFbFbFbFbFbFbFaeaeaeaeahahahahahahahahahahahahahahahahahahaeaeaeaeaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadpdIdJdKdLdMdNdOdOdOdpdPdPdPdPdQdBddddddddddaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababacacacacacacacacacawawawawawawawawawawawawawawcTdRdSawawdbdbdbdbacacacacacacacacacacacacacacacacacacacacacacacacabababaebFbFbFbFbFbFbFbFbFbFbFbFbFaeaaaaaaaaaaaaaaaaaeaeaebFbFbFbFbFbFdTdUdVdWdXdYbFbFbFbFaeaeaeaeaeahahahahahahahahahahahahahahahahahahahahaeaeaeaeaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadpdZeaebecdMeddOeeefegeheieidPdQejdBddddddddddddaaaaaaaaaaaaaaaaaaaaaaababababababacacacacacacacacacacacacacacacacacacacacacdbdbdbawcZcZdrawdbdbdbdbdbacacacacacacacacacacacacacacacacacacacacacacacacabababaebFbFbFbFbFbFbFbFbFbFbFbFaeaaaaaaaaaaaaaaaeaeaeaeaeaeaeaebFbFbFbFbFdTekekdVbFbFbFaeaeaeaeaeahahahahahahahahahahahahahahahahahahahahahaeaeaeaeaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadpdZeaebecdMeddOeeefegeheieidPdQejdBddddddddddddaaaaaaaaaaaaaaaaaaaaaaababababababacacacacacacacacacacacacacacacacacacacacacdbdbdbawlMcZdrawdbdbdbdbdbacacacacacacacacacacacacacacacacacacacacacacacacabababaebFbFbFbFbFbFbFbFbFbFbFbFaeaaaaaaaaaaaaaaaeaeaeaeaeaeaeaebFbFbFbFbFdTekekdVbFbFbFaeaeaeaeaeahahahahahahahahahahahahahahahahahahahahahaeaeaeaeaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadpdpdpdMelemendMeoepdMdMdpdpdpeqeresdBdBddddddddddddddaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacacacacacacacacacacacacacacacdbdbdbaweteuetawdbdbdbdbdbacacacacacacacacacacacacacacacacacacacacacacacacacababaebFbFbFbFbFbFbFbFbFbFbFbFaeaaaaaaaaaaaaaaaeaeaeaeaeaeaeaeaeaebFbFbFbFevevbFbFbFbFaeaeaeaeaeahahahahahahahahahahahahahahahahahahahahahaeaeaeaeaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadpewexdMeydOdNezeAdOeBdMeCeCeCdQeieidBdBddddddddddddddaaaaaaaaaaaaaaaaaaababababacacacacacacacacacacacacacacacacacacacacacacacacacdbdbaweDdReEawdbdbdbdbacacacacacacacacacacacacacacacacacacacacacacacacacacababaeaebFbFbFbFbFbFbFbFaeaeaeaeaaaaaaaaaaaaaaaaaeaeaeaeaeaeaeaeaeaeaebFbFevevbFbFaeaeaeaeaeaeahahahahahahahahahahahahahahahahahahahahahahaeaeaeaeaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakdpeFeGeHeIeJeKdOeydOdOeLeCeCeieieieieMdBddddddddddddddddaaaaaaaaaaaaaaabababababacacacacacacacadacacacacacacacacacacacacacacacacacdbdbdbeNeOePdbdbdbdbacacacacacacacacacacacacacacacacacacacacacadacacacacacabababaeaeaeaeaebFbFcrcraeababaaaaaaaaaaaaaaaaaaaeaeaeaeaeaeaeaeaeaeaeaebFevevbFbFaeaeaeaeaeaeahahahahahahahahahahahahahahahahahahahahahahahaeaeaeaeaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -896,7 +897,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaebFbFhShShShShSklkmknhShSkokpkpkpkpgTgUgqgqgqgqfjfigqgqfjbFbFbFaeaeabababacacababababaeaebFbFgNgOgNgObFbFbFbFbFbFbFdTdVbFbFbFfigqfjevbFbFbFbFaeaeaeaeabhvhvhvhvkqjekrksktjakukvkvkwkwkvkvkxkykxkykzkzkzkzkzkzkzkzkAkAkAkAkAkAkAkBkCkBkCkDkEkFiwkGkHkIkJiwkKkLiwdVbFbFbFbFaeaeaeaeaeahahahahahaeaeaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaeaebFbFbFbFbFhSkMkNkOkPhSkQkRhLbFbFdTdVbFbFbFbFfigqgqfjevbFbFbFbFaeaeaeababababababaeaebFbFgNgOgNgObFbFbFbFaebFbFbFbFbFbFbFbFbFbFevevbFbFbFbFbFbFbFaeaeaeaeaehviKkSkTkUkUkTkVkWkXkUkUkTkTkYkZkZkZlalalalalalalalalblblblblblblcldldldlelflglhjfjfjgjfjfjfjfjfjfliljlkljllcraeaeaeaeaeahahahahaeaeaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaeaebFbFbFbFhSlmlnlolphSbFbFbFbFbFbFbFbFbFbFbFbFbFbFevfifjbFbFbFbFbFaeaeaeaeaeaeaeaebFbFgNgOgNgObFbFaeaeaeaeaeaeaebFbFbFbFbFbFbFevevbFgMdYbFbFbFbFbFbFaeaehvhvhKlqhKhvhvlrlslthvhvhKluhKhvhKbFbFbFaaaaaaaaakaaaaaaakaaaaaaaaaaakaajhjhlvlwlxlylzlAlBlClDlDlElFlGlGlGlGllbFaeaeaeaeaeahahahahaeaeaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababaeaebFbFbFhShShShShShSbFbFaeaeaeaeaeaeaeaeaebFbFbFfifjfigqgqgqfjbFbFbFbFbFbFbFbFbFbFbFevgNgObFbFaeaeabababababaebFbFbFbFbFbFbFevfigqgTgUgqgqgqgqfjbFbFaehvlHlIlJlKhvlLlMlNlOlPhvlQlRlSlTbFbFbFbFbFbFaaaaakaaaaaaakakakakakakakakakjflUlVlWjfjfjfjfjfjfjfjfjflXllllllllbFaeaeaeaeaeahahahahaeaeaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababaeaebFbFbFhShShShShShSbFbFaeaeaeaeaeaeaeaeaebFbFbFfifjfigqgqgqfjbFbFbFbFbFbFbFbFbFbFbFevgNgObFbFaeaeabababababaebFbFbFbFbFbFbFevfigqgTgUgqgqgqgqfjbFbFaehvlHlIlJlKhvlLlOlNnLlPhvlQlRlSlTbFbFbFbFbFbFaaaaakaaaaaaakakakakakakakakakjflUlVlWjfjfjfjfjfjfjfjfjflXllllllllbFaeaeaeaeaeahahahahaeaeaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababaebFbFbFbFbFbFbFbFbFbFbFaeabababababababaeaebFbFbFfigqgqgqfjfifjbFgMdYbFbFgNgqgqgqgqgOevbFbFaeaeababababababaeaebFbFbFbFbFbFfigqgqgTgUgqgqgqfjevbFbFbFhvlYlZmambhvmcmdmdmemfhvmgmhmihvbFbFbFbFbFbFakakakakakakakaaaaaaaaaaakaaakjfmjmkmlmmjfmnmompmqmAmrjfbFbFbFbFbFaeaeaeaeahahahahahahaeaeaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababaebFbFbFbFbFbFbFbFbFaeaeaeabababacacabababaeaeaebFbFbFbFbFfifjfigqgTgUgqgqgOgNgqgqgqgqgObFaeaeababababababababaeaeaebFbFbFbFbFbFbFdTdVbFbFbFevevbFbFbFlThvhvhvhvhvmsmtmumvmfhvhKmwhKhvbFbFbFbFbFbFaaaaakaaaaaaakaaaaaaaaaaakaajhjhlvmxmlmmjhmykbkcmznJmMjfbFbFbFbFbFaeaeaeaeahahahahahahaeaeaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababaeaeaeaebFbFbFbFaeaeaeababacacacacacacacabababaeaeaebFbFbFbFfigqgqgTgUgqgqgqgObFbFbFbFbFbFaeababababababacacabababaeaeaeaebFbFbFbFbFbFbFbFbFevfigqfjbFbFbFbFbFbFlThvhvhvhvhvlTmCmCiEmDbFbFbFbFbFaaaaaaakaaaaaaakaaaaaaaaaamEjhmFmGmHmxmlmIjfmJlvmKmLjfnKjfbFbFbFbFaeaeaeaeaeahahahahahahaeaeaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/_maps/map_files/MiniStation/MiniStation.dmm b/_maps/map_files/MiniStation/MiniStation.dmm index 85dff516a88..7eaad41fb6b 100644 --- a/_maps/map_files/MiniStation/MiniStation.dmm +++ b/_maps/map_files/MiniStation/MiniStation.dmm @@ -6,10 +6,10 @@ "af" = (/turf/simulated/mineral/random/low_chance,/area/mine/unexplored) "ag" = (/obj/docking_port/stationary{dheight = 9; dir = 2; dwidth = 5; height = 22; id = "syndicate_nw"; name = "northwest of station"; turf_type = /turf/simulated/floor/plating/snow; width = 18},/turf/space,/area/space) "ah" = (/turf/simulated/wall,/area/bridge) -"ai" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/door/poddoor/preopen{id = "bridge blast"; layer = 2.9; name = "bridge blast door"},/turf/simulated/floor/plating/airless,/area/bridge) -"aj" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_x = -32; pixel_y = 0},/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/door/poddoor/preopen{id = "bridge blast"; layer = 2.9; name = "bridge blast door"},/turf/simulated/floor/plating/airless,/area/bridge) -"ak" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/door/poddoor/preopen{id = "bridge blast"; layer = 2.9; name = "bridge blast door"},/turf/simulated/floor/plating/airless,/area/bridge) -"al" = (/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/door/poddoor/preopen{id = "bridge blast"; layer = 2.9; name = "bridge blast door"},/turf/simulated/floor/plating/airless,/area/bridge) +"ai" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/door/poddoor/preopen{id = "bridge blast"; layer = 2.9; name = "bridge blast door"},/obj/effect/spawner/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/bridge) +"aj" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_x = -32; pixel_y = 0},/obj/machinery/door/poddoor/preopen{id = "bridge blast"; layer = 2.9; name = "bridge blast door"},/obj/effect/spawner/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/bridge) +"ak" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/door/poddoor/preopen{id = "bridge blast"; layer = 2.9; name = "bridge blast door"},/obj/effect/spawner/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/bridge) +"al" = (/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/door/poddoor/preopen{id = "bridge blast"; layer = 2.9; name = "bridge blast door"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/effect/spawner/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/bridge) "am" = (/obj/structure/lattice,/turf/space,/area/space) "an" = (/obj/structure/table/reinforced,/obj/item/weapon/wrench,/obj/item/device/assembly/timer,/obj/item/device/assembly/signaler,/obj/item/device/assembly/signaler,/turf/simulated/floor/plasteel,/area/bridge) "ao" = (/obj/structure/table/reinforced,/obj/item/device/aicard,/obj/item/device/multitool,/turf/simulated/floor/plasteel,/area/bridge) @@ -35,7 +35,7 @@ "aI" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/turf/simulated/floor/plasteel,/area/bridge) "aJ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/table/reinforced,/turf/simulated/floor/plasteel,/area/bridge) "aK" = (/obj/structure/table/reinforced,/obj/item/weapon/folder/yellow,/obj/item/weapon/disk/nuclear,/turf/simulated/floor/plasteel,/area/bridge) -"aL" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_x = 32; pixel_y = 0},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/door/poddoor/preopen{id = "bridge blast"; layer = 2.9; name = "bridge blast door"},/turf/simulated/floor/plating/airless,/area/bridge) +"aL" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_x = 32; pixel_y = 0},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/door/poddoor/preopen{id = "bridge blast"; layer = 2.9; name = "bridge blast door"},/obj/effect/spawner/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/bridge) "aM" = (/obj/structure/fireaxecabinet{pixel_x = 32},/turf/simulated/floor/plasteel,/area/bridge) "aN" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel,/area/bridge) "aO" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel,/area/bridge) @@ -84,7 +84,7 @@ "bF" = (/obj/machinery/power/apc{auto_name = 1; dir = 1; name = "_North APC"; pixel_y = 24},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/bridge) "bG" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/closet,/turf/simulated/floor/plating,/area/hallway/primary/central) "bH" = (/obj/structure/plasticflaps/mining,/obj/machinery/conveyor{dir = 2; id = "mining_internal"},/turf/simulated/floor/plasteel,/area/quartermaster/storage) -"bI" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/bridge) +"bI" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/effect/spawner/structure/window/reinforced,/turf/simulated/floor/plating,/area/bridge) "bJ" = (/obj/machinery/status_display{density = 0; pixel_y = 2; supply_display = 1},/turf/simulated/wall,/area/quartermaster/storage) "bK" = (/obj/machinery/door/airlock/external{name = "Mining Unload Airlock"; req_access = null; req_access_txt = "48"},/turf/simulated/floor/plating,/area/quartermaster/storage) "bL" = (/turf/simulated/floor/plating/airless,/area/space) @@ -92,13 +92,13 @@ "bN" = (/turf/simulated/floor/plating,/area/hallway/primary/central) "bO" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/hallway/primary/central) "bP" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "blue"},/area/bridge) -"bQ" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/quartermaster/storage) +"bQ" = (/obj/effect/spawner/structure/window/reinforced,/turf/simulated/floor/plating,/area/quartermaster/storage) "bR" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_x = -32; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 0; icon_state = "blue"},/area/bridge) "bS" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plating,/area/hallway/primary/central) "bT" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/hallway/primary/central) "bU" = (/turf/simulated/wall,/area/medical/research{name = "Research Division"}) -"bV" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/medical/research{name = "Research Division"}) -"bW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/medical/research{name = "Research Division"}) +"bV" = (/obj/effect/spawner/structure/window/reinforced,/turf/simulated/floor/plating,/area/medical/research{name = "Research Division"}) +"bW" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/effect/spawner/structure/window/reinforced,/turf/simulated/floor/plating,/area/bridge) "bX" = (/obj/machinery/conveyor{dir = 5; id = "mining_internal"},/turf/simulated/floor/plasteel,/area/quartermaster/storage) "bY" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "loadingarea"},/area/quartermaster/storage) "bZ" = (/obj/machinery/mineral/processing_unit{input_dir = 8; output_dir = 4},/turf/simulated/floor/plasteel,/area/quartermaster/storage) @@ -115,10 +115,10 @@ "ck" = (/turf/simulated/wall,/area/security/brig) "cl" = (/obj/structure/disposalpipe/trunk{dir = 4},/obj/structure/disposaloutlet,/turf/simulated/floor/engine,/area/medical/research{name = "Research Division"}) "cm" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/engine,/area/medical/research{name = "Research Division"}) -"cn" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/poddoor/preopen{id = "xenobio2"; name = "containment blast door"},/turf/simulated/floor/engine,/area/medical/research{name = "Research Division"}) +"cn" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/poddoor/preopen{id = "xenobio2"; name = "containment blast door"},/obj/effect/spawner/structure/window/reinforced,/turf/simulated/floor/engine,/area/medical/research{name = "Research Division"}) "co" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/window/reinforced,/obj/machinery/camera/autoname,/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/medical/research{name = "Research Division"}) "cp" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) -"cq" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/poddoor/preopen{id = "xenobio8"; name = "containment blast door"},/turf/simulated/floor/engine,/area/medical/research{name = "Research Division"}) +"cq" = (/obj/machinery/door/poddoor/preopen{id = "xenobio8"; name = "containment blast door"},/obj/effect/spawner/structure/window/reinforced,/turf/simulated/floor/engine,/area/medical/research{name = "Research Division"}) "cr" = (/obj/structure/window/reinforced,/obj/structure/table/reinforced,/obj/machinery/door_control{id = "xenobio8"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access_txt = "55"},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/medical/research{name = "Research Division"}) "cs" = (/turf/simulated/floor/engine,/area/medical/research{name = "Research Division"}) "ct" = (/obj/structure/plasticflaps,/obj/machinery/conveyor{dir = 1; id = "mining_internal"},/turf/simulated/floor/plasteel,/area/quartermaster/storage) @@ -165,7 +165,7 @@ "di" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/security/brig) "dj" = (/obj/structure/rack,/obj/item/clothing/suit/armor/riot,/obj/item/clothing/suit/armor/riot,/obj/item/clothing/suit/armor/riot,/obj/item/clothing/head/helmet/riot,/obj/item/clothing/head/helmet/riot,/obj/item/clothing/head/helmet/riot,/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/item/weapon/shield/riot,/obj/item/weapon/shield/riot,/obj/item/weapon/shield/riot,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig) "dk" = (/obj/structure/table/reinforced,/obj/machinery/door_control{id = "xenobio2"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access_txt = "55"},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/medical/research{name = "Research Division"}) -"dl" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/poddoor/preopen{id = "xenobio8"; name = "containment blast door"},/turf/simulated/floor/engine,/area/medical/research{name = "Research Division"}) +"dl" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/poddoor/preopen{id = "xenobio8"; name = "containment blast door"},/obj/effect/spawner/structure/window/reinforced,/turf/simulated/floor/engine,/area/medical/research{name = "Research Division"}) "dm" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/medical/research{name = "Research Division"}) "dn" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/security/brig) "do" = (/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/disposaloutlet{dir = 1},/turf/simulated/floor/engine,/area/medical/research{name = "Research Division"}) @@ -208,7 +208,7 @@ "dZ" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/hallway/primary/central) "ea" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Brig"; req_access_txt = "63"},/turf/simulated/floor/plasteel,/area/security/brig) "eb" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/security/brig) -"ec" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/poddoor/preopen{id = "xenobio1"; name = "containment blast door"},/turf/simulated/floor/engine,/area/medical/research{name = "Research Division"}) +"ec" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/poddoor/preopen{id = "xenobio1"; name = "containment blast door"},/obj/effect/spawner/structure/window/reinforced,/turf/simulated/floor/engine,/area/medical/research{name = "Research Division"}) "ed" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/security/brig) "ee" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/security/brig) "ef" = (/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor/plasteel,/area/security/brig) @@ -217,7 +217,7 @@ "ei" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall,/area/security/brig) "ej" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/item/device/radio/intercom{broadcasting = 0; freerange = 0; listening = 1; name = "Common Channel"; pixel_x = -27; pixel_y = 3},/turf/simulated/floor/plasteel,/area/security/brig) "ek" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/security/brig) -"el" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/bridge) +"el" = (/obj/effect/spawner/structure/window,/turf/simulated/floor/plating,/area/hallway/primary/central) "em" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/security/brig) "en" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/medical/research{name = "Research Division"}) "eo" = (/obj/machinery/monkey_recycler,/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) @@ -225,7 +225,7 @@ "eq" = (/obj/machinery/smartfridge/extract,/obj/machinery/camera/autoname,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "er" = (/obj/structure/table,/obj/machinery/reagentgrinder,/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "es" = (/obj/structure/closet/crate/bin,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) -"et" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/medical/research{name = "Research Division"}) +"et" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/effect/spawner/structure/window/reinforced,/turf/simulated/floor/plating,/area/security/brig) "eu" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_y = 0},/turf/simulated/wall,/area/space) "ev" = (/obj/structure/rack,/obj/item/clothing/suit/space/hardsuit/mining,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/hardsuit/mining,/turf/simulated/floor/plasteel{dir = 8; icon_state = "brown"},/area/quartermaster/storage) "ew" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plasteel,/area/quartermaster/storage) @@ -241,20 +241,20 @@ "eG" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 4},/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/stamp{pixel_x = -3; pixel_y = 3},/obj/item/weapon/stamp/denied{pixel_x = 4; pixel_y = -2},/obj/item/weapon/pen/red,/turf/simulated/floor/plasteel,/area/quartermaster/storage) "eH" = (/obj/structure/rack,/obj/item/clothing/suit/armor/laserproof,/obj/item/clothing/suit/armor/reactive,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig) "eI" = (/turf/simulated/floor/plasteel{icon_state = "bot"},/area/hallway/primary/central) -"eJ" = (/obj/structure/grille,/obj/structure/window/fulltile,/turf/simulated/floor/plating,/area/hallway/primary/central) +"eJ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/effect/spawner/structure/window/reinforced,/turf/simulated/floor/plating,/area/security/brig) "eK" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "yellow"},/area/hallway/primary/central) "eL" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel,/area/hallway/primary/central) "eM" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel,/area/hallway/primary/central) "eN" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/hallway/primary/central) -"eO" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/security/brig) +"eO" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/effect/spawner/structure/window/reinforced,/turf/simulated/floor/plating,/area/security/brig) "eP" = (/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen"; req_access_txt = "55"},/obj/machinery/door/poddoor/preopen{id = "xenobio1"; name = "containment blast door"},/turf/simulated/floor/engine,/area/medical/research{name = "Research Division"}) "eQ" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = -32},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Brig"; req_access_txt = "63"},/turf/simulated/floor/plasteel,/area/security/brig) -"eR" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/security/brig) +"eR" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/effect/spawner/structure/window/reinforced,/turf/simulated/floor/plating,/area/security/brig) "eS" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/security/brig) "eT" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/security/brig) "eU" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/door_timer{dir = 4; id = "Cell 1"; name = "Cell 1"; pixel_x = 32; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/security/brig) "eV" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/security/brig) -"eW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/medical/research{name = "Research Division"}) +"eW" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/effect/spawner/structure/window/reinforced,/turf/simulated/floor/plating,/area/security/brig) "eX" = (/turf/simulated/wall,/area/space) "eY" = (/turf/simulated/wall/shuttle{icon_state = "wall3"},/area/space) "eZ" = (/obj/structure/rack,/obj/item/weapon/pickaxe,/obj/item/weapon/pickaxe{pixel_x = 5},/obj/item/weapon/shovel{pixel_x = -5},/obj/item/weapon/shovel{pixel_x = -5},/turf/simulated/floor/plasteel{dir = 8; icon_state = "brown"},/area/quartermaster/storage) @@ -265,7 +265,7 @@ "fe" = (/obj/structure/closet/secure_closet/miner,/turf/simulated/floor/plasteel{dir = 4; icon_state = "brown"},/area/quartermaster/storage) "ff" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/structure/filingcabinet,/turf/simulated/floor/plasteel,/area/quartermaster/storage) "fg" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/computer/supplycomp,/turf/simulated/floor/plasteel{dir = 2; icon_state = "yellowcorner"},/area/quartermaster/storage) -"fh" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/security/brig) +"fh" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/effect/spawner/structure/window/reinforced,/turf/simulated/floor/plating,/area/security/brig) "fi" = (/obj/structure/closet/secure_closet/brig{id = "Cell 2"; name = "Cell 2 Locker"},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel,/area/security/brig) "fj" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel,/area/hallway/primary/central) "fk" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/hallway/primary/central) @@ -280,12 +280,12 @@ "ft" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_mining{name = "Cargo Bay"; req_access_txt = "31"},/turf/simulated/floor/plasteel,/area/quartermaster/storage) "fu" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Xenobiology Lab"; req_access_txt = "7"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "fv" = (/obj/effect/landmark/start{name = "Scientist"},/obj/structure/stool,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) -"fw" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/medical/research{name = "Research Division"}) -"fx" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/item/device/radio/intercom{broadcasting = 0; freerange = 0; listening = 1; name = "Common Channel"; pixel_x = -25; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "browncorner"; dir = 1},/area/quartermaster/storage) +"fw" = (/obj/effect/spawner/structure/window/reinforced,/turf/simulated/floor/plating,/area/hallway/primary/central) +"fx" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/item/device/radio/intercom{broadcasting = 0; freerange = 0; listening = 1; name = "Common Channel"; pixel_x = -25; pixel_y = 0},/obj/structure/closet/wardrobe/miner,/turf/simulated/floor/plasteel{icon_state = "browncorner"; dir = 1},/area/quartermaster/storage) "fy" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 8},/turf/simulated/floor/plasteel,/area/quartermaster/storage) "fz" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/quartermaster/storage) "fA" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/quartermaster/storage) -"fB" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/closet/secure_closet/cargotech,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "yellow"},/area/quartermaster/storage) +"fB" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/closet/wardrobe/cargotech,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "yellow"},/area/quartermaster/storage) "fC" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall,/area/quartermaster/storage) "fD" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/autolathe,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel,/area/quartermaster/storage) "fE" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/quartermaster/storage) @@ -294,9 +294,9 @@ "fH" = (/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/hallway/primary/central) "fI" = (/obj/machinery/computer/ordercomp,/turf/simulated/floor/plasteel,/area/hallway/primary/central) "fJ" = (/obj/structure/closet/crate/bin,/turf/simulated/floor/plasteel{dir = 8; icon_state = "yellow"},/area/hallway/primary/central) -"fK" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/security/brig) +"fK" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/effect/spawner/structure/window/reinforced,/turf/simulated/floor/plating,/area/security/brig) "fL" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/primary/central) -"fM" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/security/brig) +"fM" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/effect/spawner/structure/window/reinforced,/turf/simulated/floor/plating,/area/security/brig) "fN" = (/obj/machinery/photocopier,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1},/turf/simulated/floor/plasteel{icon_state = "cautioncorner"; dir = 4},/area/quartermaster/storage) "fO" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel,/area/security/brig) "fP" = (/obj/machinery/r_n_d/server/core,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/research{name = "Research Division"}) @@ -306,7 +306,7 @@ "fT" = (/obj/structure/table,/obj/item/weapon/storage/box/monkeycubes,/obj/item/weapon/storage/box/monkeycubes,/obj/machinery/light,/obj/item/stack/sheet/mineral/plasma{layer = 2.9},/obj/item/stack/sheet/mineral/plasma{layer = 2.9},/obj/item/stack/sheet/mineral/plasma{layer = 2.9},/obj/item/stack/sheet/mineral/plasma{layer = 2.9},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "fU" = (/obj/structure/table,/obj/item/weapon/storage/box/beakers{pixel_x = 2; pixel_y = 2},/obj/item/weapon/storage/box/syringes,/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "fV" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_mining{name = "Cargo Office"; req_access_txt = "31"},/turf/simulated/floor/plasteel,/area/quartermaster/storage) -"fW" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/security/brig) +"fW" = (/obj/effect/spawner/structure/window/reinforced,/turf/simulated/floor/plating,/area/hallway/secondary/exit) "fX" = (/turf/simulated/floor/plasteel,/area/hallway/primary/central) "fY" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 8},/turf/simulated/floor/plasteel,/area/hallway/primary/central) "fZ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel,/area/hallway/primary/central) @@ -328,7 +328,7 @@ "gp" = (/obj/structure/table,/obj/item/weapon/wrench,/obj/item/weapon/crowbar/red,/turf/simulated/floor/plasteel{icon_state = "whitepurple"; dir = 8},/area/medical/research{name = "Research Division"}) "gq" = (/obj/structure/table,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/glasses/science,/obj/item/clothing/glasses/science,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "gr" = (/obj/machinery/newscaster{pixel_y = 32},/obj/structure/closet/l3closet/scientist,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) -"gs" = (/obj/structure/closet/secure_closet/scientist,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) +"gs" = (/obj/structure/closet/wardrobe/science_white,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "gt" = (/obj/structure/sign/biohazard,/turf/simulated/wall,/area/medical/research{name = "Research Division"}) "gu" = (/obj/machinery/door_control{dir = 2; id = "rnd"; name = "Shutters Control Button"; pixel_x = -24; pixel_y = -6},/obj/item/device/radio/intercom{broadcasting = 0; freerange = 0; listening = 1; name = "Common Channel"; pixel_x = -27; pixel_y = 3},/turf/simulated/floor/plasteel{icon_state = "whitepurple"; dir = 8},/area/medical/research{name = "Research Division"}) "gv" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall,/area/medical/research{name = "Research Division"}) @@ -372,7 +372,7 @@ "hh" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/table,/obj/machinery/recharger{pixel_y = 4},/turf/simulated/floor/plasteel,/area/security/brig) "hi" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/table,/obj/item/weapon/book/manual/wiki/security_space_law,/obj/item/weapon/storage/lockbox/loyalty,/turf/simulated/floor/plasteel,/area/security/brig) "hj" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/security/brig) -"hk" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/security/brig) +"hk" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = -32; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/hallway/secondary/exit) "hl" = (/obj/structure/filingcabinet,/obj/machinery/requests_console{department = "Detective's office"; pixel_x = -30; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/security/brig) "hm" = (/obj/effect/landmark/start{name = "Detective"},/obj/structure/stool/bed/chair/office/dark{dir = 4},/turf/simulated/floor/fancy/carpet,/area/security/brig) "hn" = (/obj/structure/table/wood,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/item/weapon/folder/red,/obj/item/weapon/hand_labeler,/obj/item/clothing/glasses/sunglasses,/turf/simulated/floor/fancy/carpet,/area/security/brig) @@ -385,7 +385,7 @@ "hu" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "hv" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "hw" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) -"hx" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor/plating,/area/medical/research{name = "Research Division"}) +"hx" = (/obj/effect/spawner/structure/window/reinforced,/turf/simulated/floor/plating,/area/medical/medbay) "hy" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/closet/crate,/obj/item/weapon/ore/glass,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/quartermaster/storage) "hz" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Detective"; req_access_txt = "4"},/turf/simulated/floor/plasteel,/area/security/brig) "hA" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "yellowcorner"},/area/quartermaster/storage) @@ -415,7 +415,7 @@ "hY" = (/obj/structure/closet/crate,/obj/item/weapon/ore/iron,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/quartermaster/storage) "hZ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/sink{pixel_y = 24},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warnwhite"},/area/medical/research{name = "Research Division"}) "ia" = (/obj/machinery/computer/rdservercontrol,/obj/machinery/door/window/southright{dir = 8; name = "Server Controller Computer"; req_access_txt = "7"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) -"ib" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/security/brig) +"ib" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/effect/spawner/structure/window/reinforced,/turf/simulated/floor/plating,/area/ai_monitored/storage/eva) "ic" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/closet/crate,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/quartermaster/storage) "id" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/turf/simulated/floor/plating,/area/hallway/primary/central) "ie" = (/obj/machinery/vending/coffee,/turf/simulated/floor/plasteel,/area/hallway/primary/central) @@ -449,7 +449,7 @@ "iG" = (/obj/structure/closet/secure_closet/personal,/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor/fancy/carpet{icon_state = "carpetnoconnect"},/area/hallway/primary/central) "iH" = (/obj/machinery/vending/autodrobe{req_access_txt = ""},/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 9},/area/hallway/primary/central) "iI" = (/obj/structure/closet/wardrobe/mixed,/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 1},/area/hallway/primary/central) -"iJ" = (/obj/machinery/camera/autoname,/obj/structure/table/wood,/obj/item/weapon/storage/fancy/crayons,/obj/item/stack/cable_coil/random,/obj/item/stack/cable_coil/random,/obj/item/stack/cable_coil/random,/obj/item/toy/cards/deck,/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 1},/area/hallway/primary/central) +"iJ" = (/obj/machinery/camera/autoname,/obj/structure/table/wood,/obj/item/weapon/storage/crayons,/obj/item/stack/cable_coil/random,/obj/item/stack/cable_coil/random,/obj/item/stack/cable_coil/random,/obj/item/toy/cards/deck,/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 1},/area/hallway/primary/central) "iK" = (/obj/machinery/washing_machine,/obj/machinery/newscaster{pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 1},/area/hallway/primary/central) "iL" = (/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 5},/area/hallway/primary/central) "iM" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/airlock/glass{name = "Central Access"},/turf/simulated/floor/plasteel,/area/hallway/primary/central) @@ -510,7 +510,7 @@ "jP" = (/obj/machinery/door/window/eastleft,/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 1},/area/hallway/primary/central) "jQ" = (/obj/machinery/door/firedoor/heavy,/obj/machinery/door/airlock/research{name = "Toxins Lab"; req_access_txt = "7"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "jR" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) -"jS" = (/obj/structure/grille,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/ai_monitored/storage/eva) +"jS" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/effect/spawner/structure/window/reinforced,/turf/simulated/floor/plating,/area/ai_monitored/storage/eva) "jT" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "loadingarea"},/area/janitor) "jU" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1},/turf/simulated/floor/plasteel{dir = 9; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) "jV" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/table/reinforced,/obj/item/device/transfer_valve{pixel_x = -5},/obj/item/device/transfer_valve{pixel_x = 0},/obj/item/device/transfer_valve{pixel_x = 5},/obj/item/device/transfer_valve{pixel_x = 5},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) @@ -522,10 +522,10 @@ "kb" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/medical/research{name = "Research Division"}) "kc" = (/turf/simulated/floor/plasteel,/area/medical/research{name = "Research Division"}) "kd" = (/obj/machinery/doppler_array{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/medical/research{name = "Research Division"}) -"ke" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/medical/research{name = "Research Division"}) +"ke" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_x = -32},/obj/effect/spawner/structure/window/reinforced,/turf/simulated/floor/plating,/area/ai_monitored/storage/eva) "kf" = (/turf/simulated/wall,/area/hallway/secondary/exit) -"kg" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/hallway/secondary/exit) -"kh" = (/obj/structure/grille,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/ai_monitored/storage/eva) +"kg" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_x = 32},/obj/effect/spawner/structure/window/reinforced,/turf/simulated/floor/plating,/area/ai_monitored/storage/eva) +"kh" = (/obj/effect/spawner/structure/window,/turf/simulated/floor/plating,/area/crew_quarters/bar) "ki" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 8},/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/hallway/primary/central) "kj" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/hallway/primary/central) "kk" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/hallway/primary/central) @@ -555,7 +555,7 @@ "kI" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "kJ" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/medical/research{name = "Research Division"}) "kK" = (/obj/structure/stool/bed/chair{dir = 4},/obj/machinery/computer/security/telescreen{desc = "Used for watching the test chamber."; layer = 4; name = "Test Chamber Telescreen"; network = list("Toxins"); pixel_x = 32; pixel_y = 0},/obj/machinery/driver_button{dir = 2; id = "toxinsdriver"; pixel_y = -24},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/medical/research{name = "Research Division"}) -"kL" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/medical/research{name = "Research Division"}) +"kL" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/effect/spawner/structure/window/reinforced,/turf/simulated/floor/plating,/area/medical/medbay) "kM" = (/obj/machinery/newscaster{pixel_y = 32},/obj/structure/stool/bed/chair,/turf/simulated/floor/plasteel{icon_state = "escape"; dir = 9},/area/hallway/secondary/exit) "kN" = (/obj/structure/stool/bed/chair,/turf/simulated/floor/plasteel,/area/hallway/secondary/exit) "kO" = (/obj/machinery/light{dir = 1},/obj/structure/closet/crate/bin,/turf/simulated/floor/plasteel,/area/hallway/secondary/exit) @@ -578,8 +578,8 @@ "lf" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/vending/coffee,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "lg" = (/obj/machinery/vending/cigarette,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "lh" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'BOMB RANGE"; name = "BOMB RANGE"},/turf/simulated/wall,/area/medical/research{name = "Research Division"}) -"li" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/medical/research{name = "Research Division"}) -"lj" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/crew_quarters/heads{name = "\improper Job Assignment"}) +"li" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = -32},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit) +"lj" = (/obj/machinery/light,/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = -32},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit) "lk" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/hallway/secondary/exit) "ll" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit) "lm" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit) @@ -693,7 +693,7 @@ "nq" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay) "nr" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay) "ns" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva) -"nt" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/hallway/primary/central) +"nt" = (/obj/effect/spawner/structure/window/reinforced,/turf/simulated/floor/plating,/area/crew_quarters/heads{name = "\improper Job Assignment"}) "nu" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel{icon_state = "escape"; dir = 8},/area/hallway/secondary/exit) "nv" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit) "nw" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit) @@ -731,7 +731,7 @@ "oc" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/machinery/camera/autoname,/obj/item/weapon/paper/recycler,/turf/simulated/floor/plasteel,/area/janitor) "od" = (/obj/structure/table,/obj/item/weapon/storage/box/mousetraps,/obj/machinery/newscaster{pixel_x = 32; pixel_y = 0},/obj/item/weapon/storage/box/lights/mixed,/obj/item/weapon/storage/box/lights/mixed,/obj/item/weapon/grenade/chem_grenade/cleaner,/turf/simulated/floor/plasteel,/area/janitor) "oe" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall,/area/janitor) -"of" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_x = -32},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/ai_monitored/storage/eva) +"of" = (/obj/effect/spawner/structure/window/reinforced,/turf/simulated/floor/plating,/area/hallway/secondary/entry) "og" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/camera/autoname{dir = 4},/turf/simulated/floor/plating,/area/hallway/primary/central) "oh" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating,/area/hallway/primary/central) "oi" = (/obj/machinery/power/apc{auto_name = 1; dir = 4; name = "_East APC"; pixel_x = 27; pixel_y = 2},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/hallway/primary/central) @@ -758,7 +758,7 @@ "oD" = (/obj/structure/table,/obj/item/weapon/scalpel{pixel_y = 12},/obj/item/weapon/circular_saw,/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 1},/area/medical/medbay) "oE" = (/obj/structure/table,/obj/item/weapon/retractor,/obj/item/device/radio/intercom{broadcasting = 0; freerange = 0; listening = 1; name = "Common Channel"; pixel_y = 25},/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 1},/area/medical/medbay) "oF" = (/obj/structure/table,/obj/item/weapon/cautery{pixel_x = 4},/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 1},/area/medical/medbay) -"oG" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/medical/medbay) +"oG" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/effect/spawner/structure/window/reinforced,/turf/simulated/floor/plating,/area/medical/medbay) "oH" = (/obj/structure/closet/l3closet/janitor,/turf/simulated/floor/plasteel,/area/janitor) "oI" = (/turf/simulated/floor/plasteel,/area/janitor) "oJ" = (/obj/structure/stool,/obj/effect/landmark/start{name = "Janitor"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel,/area/janitor) @@ -766,7 +766,7 @@ "oL" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 10},/area/hallway/primary/central) "oM" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/plasteel,/area/hallway/primary/central) "oN" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall/r_wall,/area/ai_monitored/storage/eva) -"oO" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_x = 32},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/ai_monitored/storage/eva) +"oO" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/effect/spawner/structure/window/reinforced,/turf/simulated/floor/plating,/area/medical/medbay) "oP" = (/obj/machinery/door/airlock/glass_command{name = "E.V.A."; req_access_txt = "18"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel,/area/ai_monitored/storage/eva) "oQ" = (/obj/structure/closet/crate/bin,/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plasteel,/area/hallway/primary/central) "oR" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall/r_wall,/area/ai_monitored/storage/eva) @@ -785,7 +785,7 @@ "pe" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay) "pf" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay) "pg" = (/obj/structure/table,/obj/item/weapon/surgical_drapes,/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 8},/area/medical/medbay) -"ph" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/medical/medbay) +"ph" = (/obj/effect/spawner/structure/window/reinforced,/turf/simulated/floor/plating,/area/shuttle/arrival) "pi" = (/obj/structure/stool/bed/chair/comfy/beige,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/hallway/secondary/exit) "pj" = (/obj/structure/stool/bed/chair/comfy/beige,/obj/machinery/newscaster{pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/hallway/secondary/exit) "pk" = (/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/hallway/secondary/exit) @@ -801,7 +801,7 @@ "pu" = (/obj/machinery/power/apc{auto_name = 1; dir = 1; name = "_North APC"; pixel_y = 24},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/ai_monitored/storage/eva) "pv" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva) "pw" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel,/area/ai_monitored/storage/eva) -"px" = (/obj/structure/grille,/obj/structure/window/fulltile,/turf/simulated/floor/plating,/area/crew_quarters/bar) +"px" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable,/obj/effect/spawner/structure/window/reinforced,/turf/simulated/floor/plating,/area/hallway/primary/central) "py" = (/obj/structure/toilet{pixel_y = 8},/obj/machinery/light/small{dir = 8},/obj/item/weapon/razor,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/hallway/primary/central) "pz" = (/obj/structure/mirror{pixel_x = 0; pixel_y = 32},/obj/structure/sink{pixel_y = 24},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/hallway/primary/central) "pA" = (/obj/structure/closet,/turf/simulated/floor/plating{icon_state = "warnplatecorner"; dir = 8},/area/hallway/primary/central) @@ -820,7 +820,7 @@ "pN" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit) "pO" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel,/area/hallway/secondary/exit) "pP" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit) -"pQ" = (/obj/structure/table/wood,/obj/item/weapon/storage/fancy/cigarettes{pixel_y = 2},/obj/item/weapon/lighter{pixel_x = 4; pixel_y = 2},/turf/simulated/floor/fancy/carpet,/area/hallway/secondary/exit) +"pQ" = (/obj/structure/table/wood,/obj/item/weapon/storage/fancy/cigarettes{pixel_y = 2},/obj/item/weapon/lighter/greyscale{pixel_x = 4; pixel_y = 2},/turf/simulated/floor/fancy/carpet,/area/hallway/secondary/exit) "pR" = (/obj/structure/table/wood,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/obj/item/device/camera,/turf/simulated/floor/fancy/carpet,/area/hallway/secondary/exit) "pS" = (/obj/structure/stool/bed/chair/comfy/beige{dir = 8},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/hallway/secondary/exit) "pT" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/structure/janitorialcart,/obj/item/weapon/mop,/turf/simulated/floor/plasteel{dir = 2; icon_state = "bot"},/area/janitor) @@ -858,14 +858,14 @@ "qz" = (/obj/structure/table/reinforced,/obj/machinery/door/window/eastright{dir = 2; name = "Chemistry Desk"; req_access_txt = "33"},/obj/item/clothing/glasses/science,/obj/machinery/door/firedoor/heavy,/turf/simulated/floor/plating,/area/medical/medbay) "qA" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit) "qB" = (/obj/machinery/door/airlock{name = "Public Toilets"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/hallway/primary/central) -"qC" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/hallway/primary/central) +"qC" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,/obj/effect/landmark/start{name = "Cook"},/turf/simulated/floor/wood,/area/crew_quarters/bar) "qD" = (/obj/structure/stool/bed/chair,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/plasteel,/area/hallway/primary/central) "qE" = (/obj/structure/stool/bed/chair,/turf/simulated/floor/plasteel,/area/hallway/primary/central) "qF" = (/obj/structure/sign/bluecross,/turf/simulated/wall,/area/medical/medbay) "qG" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/medbay) "qH" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Cryo"; req_access_txt = "45"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay) -"qI" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/medical/medbay) -"qJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/medical/medbay) +"qI" = (/obj/effect/spawner/structure/window/reinforced,/turf/simulated/floor/plating,/area/engine/engineering) +"qJ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/effect/spawner/structure/window/reinforced,/turf/simulated/floor/plating,/area/engine/engineering) "qK" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/camera/autoname{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay) "qL" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plasteel,/area/crew_quarters/heads{name = "\improper Job Assignment"}) "qM" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{name = "Head of Personnel Office"; req_access = null; req_access_txt = "57"},/turf/simulated/floor/plasteel,/area/crew_quarters/heads{name = "\improper Job Assignment"}) @@ -894,7 +894,7 @@ "rj" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/food/drinks/britcup{desc = "Kingston's personal cup."},/obj/machinery/camera/autoname,/obj/item/device/radio/intercom{broadcasting = 0; freerange = 0; listening = 1; name = "Common Channel"; pixel_y = 25},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay) "rk" = (/obj/machinery/door_control{desc = "A remote control switch for the medbay foyer."; id = "MedbayFoyer"; name = "Medbay Doors Control"; normaldoorcontrol = 1; pixel_x = -26; req_access_txt = "5"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/medbay) "rl" = (/obj/machinery/computer/med_data,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay) -"rm" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/turf/simulated/floor/plating,/area/medical/medbay) +"rm" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple{dir = 4; icon_state = "intact"; level = 2},/obj/effect/spawner/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/engine/engineering) "rn" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor/plasteel{tag = "icon-whiteyellow (WEST)"; icon_state = "whiteyellow"; dir = 8},/area/medical/medbay) "ro" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel{tag = "icon-whitebluecorner (EAST)"; icon_state = "whitebluecorner"; dir = 4},/area/medical/medbay) "rp" = (/obj/structure/closet/secure_closet/medical2,/turf/simulated/floor/plasteel{tag = "icon-whitebluecorner (NORTH)"; icon_state = "whitebluecorner"; dir = 1},/area/medical/medbay) @@ -958,7 +958,7 @@ "sv" = (/obj/structure/sign/maltesefalcon/left,/turf/simulated/wall,/area/crew_quarters/bar) "sw" = (/obj/structure/sign/maltesefalcon/right,/turf/simulated/wall,/area/crew_quarters/bar) "sx" = (/turf/simulated/floor/plasteel{tag = "icon-whiteyellow (WEST)"; icon_state = "whiteyellow"; dir = 8},/area/medical/medbay) -"sy" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/hallway/secondary/entry) +"sy" = (/obj/effect/spawner/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/engine/engineering) "sz" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 8},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/medbay) "sA" = (/obj/machinery/light/small,/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/bar) "sB" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor/plasteel,/area/hallway/primary/central) @@ -967,16 +967,16 @@ "sE" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay) "sF" = (/obj/machinery/telecomms/receiver/preset_left/ministation,/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/computer) "sG" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitebluecorner"},/area/medical/medbay) -"sH" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/medical/medbay) +"sH" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "yellow"},/area/engine/engineering) "sI" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel{tag = "icon-whitebluecorner (WEST)"; icon_state = "whitebluecorner"; dir = 8},/area/medical/medbay) "sJ" = (/obj/machinery/atmospherics/pipe/simple{dir = 5; icon_state = "intact"; level = 2},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay) "sK" = (/obj/machinery/atmospherics/pipe/manifold{icon_state = "manifold"; level = 2},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay) "sL" = (/obj/machinery/atmospherics/pipe/simple{dir = 9; icon_state = "intact"; level = 2},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay) "sM" = (/obj/machinery/light/small,/obj/structure/closet/gmcloset,/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/wood,/area/crew_quarters/bar) "sN" = (/obj/machinery/light/small,/obj/machinery/processor,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1},/turf/simulated/floor/wood,/area/crew_quarters/bar) -"sO" = (/obj/machinery/light,/turf/simulated/floor/plasteel,/area/hallway/secondary/exit) +"sO" = (/obj/machinery/pipedispenser/disposal/transit_tube,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/engine/engineering) "sP" = (/obj/structure/grille,/obj/structure/window/shuttle,/turf/simulated/floor/plating,/area/shuttle/arrival) -"sQ" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/shuttle/arrival) +"sQ" = (/obj/effect/spawner/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/engine/engineering) "sR" = (/obj/structure/table/reinforced,/obj/machinery/door/window/brigdoor{base_state = "rightsecure"; dir = 2; icon_state = "rightsecure"; name = "Head of Personnel's Desk"; req_access_txt = "57"},/obj/machinery/door/window/northright{name = "Reception Window"},/turf/simulated/floor/plating,/area/crew_quarters/heads{name = "\improper Job Assignment"}) "sS" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 8},/turf/simulated/wall/r_wall,/area/crew_quarters/heads{name = "\improper Job Assignment"}) "sT" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/table,/obj/item/weapon/book/manual/wiki/security_space_law,/obj/item/stack/packageWrap,/obj/item/weapon/hand_labeler,/obj/machinery/newscaster{pixel_y = 32},/turf/simulated/floor/plasteel,/area/crew_quarters/heads{name = "\improper Job Assignment"}) @@ -996,7 +996,7 @@ "th" = (/obj/structure/closet/crate/bin,/obj/structure/noticeboard{pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) "ti" = (/obj/machinery/vending/boozeomat,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/crew_quarters/bar) "tj" = (/obj/structure/table,/obj/item/weapon/book/manual/barman_recipes,/obj/item/stack/packageWrap,/obj/machinery/newscaster{pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/crew_quarters/bar) -"tk" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/engine/engineering) +"tk" = (/obj/machinery/suit_storage_unit/engine,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/engine/engineering) "tl" = (/obj/structure/table,/obj/machinery/door/window/southleft{layer = 3.1},/turf/simulated/floor/plasteel,/area/hallway/primary/central) "tm" = (/obj/structure/table,/obj/machinery/door/window/southright{layer = 3.1},/turf/simulated/floor/plasteel,/area/hallway/primary/central) "tn" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay) @@ -1009,9 +1009,9 @@ "tu" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/light,/turf/simulated/floor/plasteel,/area/crew_quarters/heads{name = "\improper Job Assignment"}) "tv" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay) "tw" = (/obj/machinery/vending/wallmed{pixel_y = -28},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay) -"tx" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/engine/engineering) +"tx" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "yellow"},/area/engine/engineering) "ty" = (/obj/machinery/door/airlock/external{name = "Arrival Airlock"},/turf/simulated/floor/plating,/area/hallway/secondary/exit) -"tz" = (/obj/structure/grille,/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple{dir = 4; icon_state = "intact"; level = 2},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating/airless,/area/engine/engineering) +"tz" = (/obj/structure/closet/secure_closet/engineering_electrical,/turf/simulated/floor/plasteel,/area/engine/engineering) "tA" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/hallway/secondary/exit) "tB" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit) "tC" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock{name = "Bar Storage"; req_access_txt = "25"},/turf/simulated/floor/plasteel{icon_state = "wood"},/area/crew_quarters/bar) @@ -1034,7 +1034,7 @@ "tT" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) "tU" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) "tV" = (/obj/structure/stool,/turf/simulated/floor/fancy/carpet,/area/crew_quarters/bar) -"tW" = (/obj/structure/table/reinforced,/obj/item/weapon/lighter/zippo,/obj/structure/sign/securearea{desc = "Under the painting a plaque reads: 'While the meat grinder may not have spared you, fear not. Not one part of you has gone to waste... You were delicious.'"; icon_state = "monkey_painting"; name = "Mr. Deempisi portrait"; pixel_x = 4; pixel_y = 28},/turf/simulated/floor/fancy/carpet,/area/crew_quarters/bar) +"tW" = (/obj/structure/table/reinforced,/obj/item/weapon/lighter,/obj/structure/sign/securearea{desc = "Under the painting a plaque reads: 'While the meat grinder may not have spared you, fear not. Not one part of you has gone to waste... You were delicious.'"; icon_state = "monkey_painting"; name = "Mr. Deempisi portrait"; pixel_x = 4; pixel_y = 28},/turf/simulated/floor/fancy/carpet,/area/crew_quarters/bar) "tX" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1},/obj/machinery/photocopier,/turf/simulated/floor/plasteel,/area/crew_quarters/heads{name = "\improper Job Assignment"}) "tY" = (/obj/item/device/radio/intercom{broadcasting = 0; freerange = 0; listening = 1; name = "Common Channel"; pixel_x = 25; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/crew_quarters/bar) "tZ" = (/obj/machinery/requests_console{department = "Garden"; departmentType = 2; pixel_x = 30; pixel_y = 0},/turf/simulated/floor/plasteel,/area/hallway/primary/central) @@ -1046,7 +1046,7 @@ "uf" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock{name = "Frozen Storage"; req_access_txt = "25"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/bar) "ug" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 4},/obj/machinery/camera/autoname{dir = 8},/obj/structure/sign/nosmoking_2{pixel_x = 28},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/medical/medbay) "uh" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/tcommsat/computer) -"ui" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/tcommsat/computer) +"ui" = (/obj/structure/closet/secure_closet/engineering_welding,/turf/simulated/floor/plasteel,/area/engine/engineering) "uj" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/hallway/secondary/exit) "uk" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hallway/secondary/exit) "ul" = (/obj/machinery/camera/autoname{dir = 1},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hallway/secondary/exit) @@ -1077,11 +1077,11 @@ "uK" = (/obj/machinery/vending/wallmed{pixel_y = 28},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay) "uL" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay) "uM" = (/obj/item/device/radio/intercom{broadcasting = 0; freerange = 0; listening = 1; name = "Common Channel"; pixel_y = 25},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay) -"uN" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/tcommsat/computer) +"uN" = (/obj/machinery/atmospherics/pipe/simple/cyan/visible{tag = "icon-intact (NORTH)"; icon_state = "intact"; dir = 1},/obj/effect/spawner/structure/window/reinforced,/turf/simulated/floor/plating,/area/engine/engineering) "uO" = (/obj/machinery/door/airlock/external{name = "Arrival Airlock"},/turf/simulated/floor/plating,/area/hallway/secondary/entry) -"uP" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/grille,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/engine/gravity_generator) -"uQ" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/engine/gravity_generator) -"uR" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/engine/gravity_generator) +"uP" = (/obj/machinery/atmospherics/pipe/simple/yellow/visible{tag = "icon-intact (NORTH)"; icon_state = "intact"; dir = 1},/obj/effect/spawner/structure/window/reinforced,/turf/simulated/floor/plating,/area/engine/engineering) +"uQ" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction{dir = 8},/obj/effect/spawner/structure/window/reinforced,/turf/simulated/floor/plating,/area/engine/engineering) +"uR" = (/obj/effect/spawner/structure/window/reinforced,/turf/simulated/floor/plating,/area/tcommsat/computer) "uS" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/structure/closet/secure_closet/hop,/turf/simulated/floor/plasteel,/area/crew_quarters/heads{name = "\improper Job Assignment"}) "uT" = (/obj/item/device/radio/intercom{broadcasting = 0; freerange = 0; listening = 1; name = "Common Channel"; pixel_y = 25},/obj/structure/closet/radiation,/turf/simulated/floor/plasteel,/area/engine/engineering) "uU" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay) @@ -1103,7 +1103,7 @@ "vk" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel{tag = "icon-whitebluecorner (NORTH)"; icon_state = "whitebluecorner"; dir = 1},/area/medical/medbay) "vl" = (/obj/structure/stool/bed/chair,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay) "vm" = (/turf/simulated/wall/shuttle{icon_state = "swall12"; dir = 2},/area/shuttle/arrival) -"vn" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/engine/gravity_generator) +"vn" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/effect/spawner/structure/window/reinforced,/turf/simulated/floor/plating,/area/tcommsat/computer) "vo" = (/obj/machinery/atmospherics/unary/outlet_injector/on{dir = 1},/turf/simulated/floor/plating/airless,/area/space) "vp" = (/turf/simulated/wall/shuttle{icon_state = "swall14"; dir = 2},/area/shuttle/arrival) "vq" = (/obj/machinery/door/airlock/shuttle{name = "Arrivals Shuttle Airlock"},/turf/simulated/floor/plasteel/shuttle,/area/shuttle/arrival) @@ -1157,11 +1157,11 @@ "wm" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/crew_quarters/bar) "wn" = (/obj/structure/table/reinforced,/obj/machinery/door/window/brigdoor{dir = 8; layer = 3.1; name = "Bar Access"; req_access = list(); req_one_access_txt = "25"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/crew_quarters/bar) "wo" = (/obj/machinery/camera/autoname{dir = 8},/obj/machinery/light/small{dir = 4},/obj/machinery/newscaster{pixel_x = 32; pixel_y = 0},/turf/simulated/floor/plasteel,/area/hallway/primary/central) -"wp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/medical/medbay) -"wq" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/medical/medbay) -"wr" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/medical/medbay) +"wp" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/effect/spawner/structure/window/reinforced,/turf/simulated/floor/plating,/area/engine/gravity_generator) +"wq" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/effect/spawner/structure/window/reinforced,/turf/simulated/floor/plating,/area/engine/gravity_generator) +"wr" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/effect/spawner/structure/window/reinforced,/turf/simulated/floor/plating,/area/engine/gravity_generator) "ws" = (/obj/structure/closet/secure_closet/engineering_personal,/turf/simulated/floor/plasteel,/area/engine/engineering) -"wt" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/medical/medbay) +"wt" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/effect/spawner/structure/window/reinforced,/turf/simulated/floor/plating,/area/engine/gravity_generator) "wu" = (/turf/simulated/wall/shuttle{icon_state = "swall3"; dir = 2},/area/shuttle/arrival) "wv" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plasteel/shuttle,/area/shuttle/arrival) "ww" = (/obj/structure/stool/bed/chair{dir = 8},/obj/effect/landmark{name = "JoinLate"},/turf/simulated/floor/plasteel/shuttle,/area/shuttle/arrival) @@ -1205,7 +1205,7 @@ "xi" = (/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/obj/structure/table/wood,/turf/simulated/floor/wood,/area/crew_quarters/bar) "xj" = (/obj/structure/closet/crate/bin,/turf/simulated/floor/wood,/area/crew_quarters/bar) "xk" = (/obj/machinery/suit_storage_unit/engine,/turf/simulated/floor/plasteel,/area/engine/engineering) -"xl" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/medical/medbay) +"xl" = (/obj/structure/closet/wardrobe/white/medical,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay) "xm" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/fire{pixel_x = 2; pixel_y = 6},/obj/item/weapon/storage/firstaid/fire{pixel_x = -2; pixel_y = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay) "xn" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel,/area/engine/engineering) "xo" = (/obj/machinery/atmospherics/pipe/simple/cyan/visible{tag = "icon-intact (SOUTHWEST)"; icon_state = "intact"; dir = 10},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/engine/engineering) @@ -1221,7 +1221,7 @@ "xy" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/wall,/area/crew_quarters/bar) "xz" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/item/device/radio/intercom{broadcasting = 0; freerange = 0; listening = 1; name = "Common Channel"; pixel_x = -25; pixel_y = 0},/turf/simulated/floor/wood,/area/crew_quarters/bar) "xA" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/wood,/area/crew_quarters/bar) -"xB" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,/obj/effect/landmark/start{name = "Bartender"},/turf/simulated/floor/wood,/area/crew_quarters/bar) +"xB" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/closet/wardrobe/engineering_yellow,/turf/simulated/floor/plasteel{icon_state = "blue"; dir = 4},/area/engine/engineering) "xC" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/effect/landmark/start{name = "Bartender"},/turf/simulated/floor/wood,/area/crew_quarters/bar) "xD" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/bar) "xE" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor/wood,/area/crew_quarters/bar) @@ -1285,7 +1285,6 @@ "yK" = (/obj/structure/closet/firecloset,/turf/simulated/floor/plasteel,/area/engine/engineering) "yL" = (/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor/plasteel,/area/engine/engineering) "yM" = (/obj/item/device/radio/intercom{broadcasting = 0; freerange = 0; listening = 1; name = "Common Channel"; pixel_y = 25},/turf/simulated/floor/plasteel,/area/engine/engineering) -"yN" = (/obj/machinery/pipedispenser/disposal/transit_tube,/turf/simulated/floor/plasteel,/area/engine/engineering) "yO" = (/obj/structure/table,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light{dir = 1},/obj/machinery/cell_charger,/turf/simulated/floor/plasteel,/area/engine/engineering) "yP" = (/obj/structure/table,/obj/machinery/alarm{pixel_y = 23},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/item/clothing/gloves/color/yellow,/obj/item/weapon/storage/toolbox/mechanical{pixel_y = 5},/turf/simulated/floor/plasteel,/area/engine/engineering) "yQ" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/camera/autoname,/obj/machinery/power/smes/engineering,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/engine/engineering) @@ -1299,7 +1298,6 @@ "yY" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/vending/snack,/turf/simulated/floor/plasteel,/area/hallway/primary/central) "yZ" = (/obj/machinery/portable_atmospherics/scrubber,/turf/simulated/floor/plasteel,/area/engine/engineering) "za" = (/turf/simulated/floor/plasteel,/area/engine/engineering) -"zb" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/plasteel{icon_state = "blue"; dir = 4},/area/engine/engineering) "zc" = (/obj/structure/grille,/turf/simulated/wall/r_wall,/area/engine/engineering) "zd" = (/obj/machinery/atmospherics/pipe/simple,/obj/structure/grille,/turf/simulated/wall/r_wall,/area/engine/engineering) "ze" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/yellow/visible{tag = "icon-intact (NORTH)"; icon_state = "intact"; dir = 1},/turf/simulated/floor/plating{icon_state = "warnplatecorner"; dir = 1},/area/engine/engineering) @@ -1340,7 +1338,6 @@ "zN" = (/obj/machinery/atmospherics/pipe/simple/yellow/visible{tag = "icon-intact (NORTH)"; icon_state = "intact"; dir = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engine/engineering) "zO" = (/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/engine/engineering) "zP" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/engine/engineering) -"zQ" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/atmospherics/pipe/simple/cyan/visible{tag = "icon-intact (NORTH)"; icon_state = "intact"; dir = 1},/turf/simulated/floor/plating,/area/engine/engineering) "zR" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel,/area/engine/engineering) "zS" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/engine/engineering) "zT" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor/plasteel,/area/engine/engineering) @@ -1361,7 +1358,6 @@ "Ai" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall,/area/engine/engineering) "Aj" = (/obj/structure/grille,/obj/structure/lattice,/turf/space,/area/engine/engineering) "Ak" = (/obj/machinery/atmospherics/unary/tank/air{dir = 8; icon_state = "grey"},/turf/simulated/floor/plating,/area/tcommsat/computer) -"Al" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/atmospherics/pipe/simple/yellow/visible{tag = "icon-intact (NORTH)"; icon_state = "intact"; dir = 1},/turf/simulated/floor/plating,/area/engine/engineering) "Am" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall,/area/engine/engineering) "An" = (/obj/machinery/pipedispenser,/turf/simulated/floor/plasteel,/area/engine/engineering) "Ao" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel,/area/engine/engineering) @@ -1426,8 +1422,6 @@ "BF" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/yellow/visible{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/engine/engineering) "BG" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 6},/area/engine/engineering) "BH" = (/obj/structure/transit_tube/station/reverse{dir = 8; icon_state = "closed"; tag = "icon-closed (EAST)"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engine/engineering) -"BI" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall,/area/engine/engineering) -"BJ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/obj/structure/closet/secure_closet/engineering_electrical,/turf/simulated/floor/plasteel,/area/engine/engineering) "BK" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/plasteel,/area/engine/engineering) "BL" = (/obj/machinery/light,/turf/simulated/floor/plasteel{icon_state = "warningcorner"; dir = 8},/area/engine/engineering) "BM" = (/obj/machinery/atmospherics/pipe/manifold/yellow/visible,/turf/simulated/floor/plating{icon_state = "warnplatecorner"; dir = 8},/area/engine/engineering) @@ -1436,8 +1430,6 @@ "BP" = (/obj/machinery/atmospherics/pipe/simple/cyan/visible{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor/plating,/area/engine/engineering) "BQ" = (/obj/machinery/atmospherics/pipe/simple/cyan/visible{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engine/engineering) "BR" = (/obj/machinery/light,/turf/simulated/floor/plasteel{icon_state = "warningcorner"; dir = 4},/area/engine/engineering) -"BS" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/structure/closet/secure_closet/engineering_welding,/turf/simulated/floor/plasteel,/area/engine/engineering) -"BT" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall,/area/engine/engineering) "BU" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/engine/engineering) "BV" = (/obj/machinery/light/small,/turf/simulated/floor/plasteel,/area/engine/engineering) "BW" = (/obj/structure/transit_tube{icon_state = "N-S"},/obj/structure/transit_tube_pod,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engine/engineering) @@ -1511,7 +1503,6 @@ "Dp" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging{dir = 6},/turf/simulated/floor/engine/vacuum,/area/engine/engineering) "Dq" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging,/turf/simulated/floor/engine/vacuum,/area/engine/engineering) "Dr" = (/obj/machinery/door/poddoor{id = "burndoor"; name = "Mixer Room Vent"},/turf/simulated/floor/plating/airless,/area/engine/engineering) -"Ds" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction{dir = 8},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/engine/engineering) "Dt" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1},/turf/simulated/floor/plasteel,/area/tcommsat/computer) "Du" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel,/area/tcommsat/computer) "Dv" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1},/turf/simulated/floor/plasteel,/area/engine/gravity_generator) @@ -1767,74 +1758,74 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamamamaaamaaaaamamaaaaaaaaahahbaaybbbcbdbebfaybgahahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaambhbibjbjbkbkamamamamaaaaaaamahblahahbobIbCahahbpahamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqbrbsbsbtbubvbvbwbvbvaaaabxbybxbzbAbBbDbPbEahbFbGbxbybxamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqbHbqbQbqbQbqbJbqbKbqaabLbMbNbMbObNahbRchcgahbSbTbMbNbMbLamaaaaaaaaaaaaaaaaaaaaaaaabUbUbUbUbUbUbVbWbUbUbUbUbUbUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqbXbYbZcabYcbccbqcdceamambxbxbxbOcfahboelbCahcibTbxbxcjckckckckaaaaaaaaaaaaaaaaaaaabUclcmcmcncocpcpcrcqcscscsbUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqbHbqbQbqbQbqbJbqbKbqaabLbMbNbMbObNahbRchcgahbSbTbMbNbMbLamaaaaaaaaaaaaaaaaaaaaaaaabUbUbUbUbUbUbVbVbUbUbUbUbUbUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqbXbYbZcabYcbccbqcdceamambxbxbxbOcfahbobWbCahcibTbxbxcjckckckckaaaaaaaaaaaaaaaaaaaabUclcmcmcncocpcpcrcqcscscsbUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqctbQcubQcvbQcwbqbKbqbxbxbxcxbNbObNbxcyczcAbxbSbTbNcBcjcCcDcEckckckckckaaaaaaaaaaambUcFcGcscHcIcpcpcJcKcscscLbUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaambqcMcNcOcOcPcOcQcRcSbqbNbNbNcTcUcVcUcWcXcYcZcWdadbcUdccjdddedfdgdhdidjckamamamamamambUcscscscndkcpcpdmdlcmcmdobUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamamambqdpcScScScScSdqcScSdsbNdtdudvdwdxdydwdzdAdBdCdDdEcjcjcjdFdedGdHdedIdJckaaaaaaaaaaambUbUbUbUdKbUdLdMbUbUbUbUbUbUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamamamamamambqdNcSdOcScSdPcSdOdQbqbqbqdRdSdTdUdVdWdXdYdZdrdnebeaeeefdeegeheiejekeHckaaaaaaaaaaaabUclcmcmecencpcpeoepeqeresetaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeuamamamamamamambqevewexeyezezezeAeBeCeDeEeFeGbQeIeJeKeLeMeNeOedemeReSeSeSeTeUckckckckckaaaaaaaaaaambUcFcGcsePcIcpcpcpcpcpcpcpeWamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeXamaaaaaaaaaaambJeZfafbfccScScSfdfebqffcSfbfgbQeIeJeKeLfjfkeQdneVeafndedefofpfhfrfickamamamamamamambUcscscsecflcpcpcpcpfvcpcpfwamamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeXaaaaaaaaaaaaaabqfxcSfyfzfAfAfAfAfBfCfDfAfEfFfGfHfIfJeLfqfLcjfKfMckdededefofOfmdefQckamaaaaaaaaaaambUbUbUbUbUbUcpcpfSfRfTfUbUbUbUbUbUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeXaaaaaaaaaaaaaabqcScSfbfccScScScScSftcScSfafNbQfXfXfXfYfZgacjgbgcgdgegfggghgifWgegjcjckckckckntntntgogpgqgrgsbUgtfugvbUbUgwbUgxfPgzbUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamamamamamambqdNcSdOcScSdPcSdOdQbqbqbqdRdSdTdUdVdWdXdYdZdrdnebeaeeefdeegeheiejekeHckaaaaaaaaaaaabUclcmcmecencpcpeoepeqeresbVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeuamamamamamamambqevewexeyezezezeAeBeCeDeEeFeGbQeIeleKeLeMeNetedemeJeSeSeSeTeUckckckckckaaaaaaaaaaambUcFcGcsePcIcpcpcpcpcpcpcpbVamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeXamaaaaaaaaaaambJeZfafbfccScScSfdfebqffcSfbfgbQeIeleKeLfjfkeQdneVeafndedefofpeOfrfickamamamamamamambUcscscsecflcpcpcpcpfvcpcpbVamamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeXaaaaaaaaaaaaaabqfxcSfyfzfAfAfAfAfBfCfDfAfEfFfGfHfIfJeLfqfLcjeReWckdededefofOfmdefQckamaaaaaaaaaaambUbUbUbUbUbUcpcpfSfRfTfUbUbUbUbUbUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeXaaaaaaaaaaaaaabqcScSfbfccScScScScSftcScSfafNbQfXfXfXfYfZgacjgbgcgdgegfggghgifhgegjcjckckckckfwfwfwgogpgqgrgsbUgtfugvbUbUgwbUgxfPgzbUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeXaaaaaaaaaaaaaagAgBcSfbfccScSgCcScSftcScScScSfVfXfXfXeLfjgacjgEgFgFgGgHgIdegkckckckcjgKgLgMckgNgOgPgogucpcpcpcpcpcpgSgTgUgVbUgWgXgYbUamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeXaaaaaaaaaaaaaagZhacShbgDgybqbqbqbqbqbqbqbqbqbqbxbxbxeLfjhecjcjhfdehghhhigFhjfhfrfscjhlhmhnckhofXhpgRgQcpcpcphshthuhvhththwbUhxhdhxbUbUamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeXaaaaaaaaaaaaaagZhacShbgDgybqbqbqbqbqbqbqbqbqbqbxbxbxeLfjhecjcjhfdehghhhigFhjeOfrfscjhlhmhnckhofXhpgRgQcpcpcphshthuhvhththwbUbVhdbVbUbUamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeXaaaaaaaaaaaaaabQhAcSfbfccSbqbNbNbNbNbNbNbNbNbNbNbxhBeLfjgahCcjhDhEhFdehGgehHhqdehJcjhKhLhMckhNfXhOgohrhQhRhShThUhVhWcpcphXbUcpiBhQiabUamamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeXaaaaaaaaaaaaaabQcScShbhyicbqbNbxbxbxbxbxbxbxbxidbxieeLfjgaifcjigihglijgmilimfWgegjcjgniogJckiqfXfXgoirhQisitiuivkIixiyiziAbUcpiBiCbUbUbUbUbUamamamamamamamamamamamamamamamamameYeYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeXaaaaaaaaaaaaaabQgBcSfbfccSbqiEdwiFiGbxiHiIiJiKiLbxbxiMiNiOiPcjcjcjcjcjcjcjcjcjcjcjcjhkhzibckiTfXiUgobUbUbUbUbUgvhIbUbUbUbUbUcpiWcpiXbUiYiZjabLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabLhPiDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeXaaaaaaaaaaaaxJgZhaewjehchYbqbOjgiijijjjkjljljljmjneJfYdAjpjpjqjqjqjqjqjqjqjqjrjqjqjqjsjtjujqdzjqjvjwhZjyjzjAiwjCjDjEjFjEjGjHcpjIjJjKjLjMjLbUamamamamamamamamamamamamamamamamameYeYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeXaaaaaaaaaaaaaagAbJdRdSjNbqbqbOjObxbxbxjkjljljljljmjPikfjingafXfXfXfXfXfXfXfXfXfXfXfXfXfXgafXikiphpiViRcpjRjfjbjYcpcpjZhththtkacpcpcpkbkckdkeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeXeXkfkfkgkgkfkfkfkfkikjkkkkkkklkmkniGbxjkjlkojljlkpkqfXfjfXkrksksktkuksksksksksksksktkskskvkskskvkwkxjxkzkAkBjBkDkEkFkFkFjUkHkIcpcpcpkJkckKkLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamamkfkMkNkNkOkPkQkfkRkSkTkTkUkVkWiijikXkYkZlalblcldeJfXfjfXbxbxbxbxbxbxbxbxbxbxbxbxbxbxbxgogogogogogobUbUgvgwbUbUjQbUbUbUbUbUlflgesbUlhlibUbUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakgkgkglklllmlmlnlolplqlrbNcfbxbxbxbxbxbxbxbxbxbxbxbxbxlsfjfXbxcTcUcUcUcUcUcUcUcUcUcUltlulvgolwlwlwlxlycplzlAlBjVlDcplElFlGlHgtgwbUbUbUamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeXaaaaaaaaaaaaaabQcScShbhyicbqbNbxbxbxbxbxbxbxbxidbxieeLfjgaifcjigihglijgmilimfhgegjcjgniogJckiqfXfXgoirhQisitiuivkIixiyiziAbUcpiBiCbUbUbUbUbUamamamamamamamamamamamamamamamamameYeYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeXaaaaaaaaaaaaaabQgBcSfbfccSbqiEdwiFiGbxiHiIiJiKiLbxbxiMiNiOiPcjcjcjcjcjcjcjcjcjcjcjcjfKhzfMckiTfXiUgobUbUbUbUbUgvhIbUbUbUbUbUcpiWcpiXbUiYiZjabLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabLhPiDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeXaaaaaaaaaaaaxJgZhaewjehchYbqbOjgiijijjjkjljljljmjnelfYdAjpjpjqjqjqjqjqjqjqjqjrjqjqjqjsjtjujqdzjqjvjwhZjyjzjAiwjCjDjEjFjEjGjHcpjIjJjKjLjMjLbUamamamamamamamamamamamamamamamamameYeYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeXaaaaaaaaaaaaaagAbJdRdSjNbqbqbOjObxbxbxjkjljljljljmjPikfjingafXfXfXfXfXfXfXfXfXfXfXfXfXfXgafXikiphpiViRcpjRjfjbjYcpcpjZhththtkacpcpcpkbkckdbVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeXeXkfkffWfWkfkfkfkfkikjkkkkkkklkmkniGbxjkjlkojljlkpkqfXfjfXkrksksktkuksksksksksksksktkskskvkskskvkwkxjxkzkAkBjBkDkEkFkFkFjUkHkIcpcpcpkJkckKbVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamamkfkMkNkNkOkPkQkfkRkSkTkTkUkVkWiijikXkYkZlalblcldelfXfjfXbxbxbxbxbxbxbxbxbxbxbxbxbxbxbxgogogogogogobUbUgvgwbUbUjQbUbUbUbUbUlflgesbUlhbVbUbUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafWfWfWlklllmlmlnlolplqlrbNcfbxbxbxbxbxbxbxbxbxbxbxbxbxlsfjfXbxcTcUcUcUcUcUcUcUcUcUcUltlulvgolwlwlwlxlycplzlAlBjVlDcplElFlGlHgtgwbUbUbUamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxKlIlJlIlklKlKlKlLlMlNdxlOkklPbxiQiQbxlRlSlTlUlVlWbNcTlXlYlZlYlXmambmbmbmbmbmbmbmbmbbNbSbNmcgomdmememflycpcpmghXcpcpcpcpkGmilCmjmhmlmkmoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakgkgkglklKlKlKmpmqkfmrlJlJmskkklmtmumvmwntmxntmybNmzbxfXfXfXbxbSmbmAmBmCmDmEmCmFmbmGmHcUmIgomemememflycpcpmgcpcpmJmKmLcpcphQmMmNmOmPmoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafWfWfWhklKlKlKmpmqkfmrlJlJmskkklmtmumvmwfwmxfwmybNmzbxfXfXfXbxbSmbmAmBmCmDmEmCmFmbmGmHcUmIgomemememflycpcpmgcpcpmJmKmLcpcphQmMmNmOmPmoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamamkfmQlKlKmRmSmTmUmVmWlJbNbNbNbNbNbNbNmvmwmXbNcTmYbxfXfXfXbxbSmbmZnanbnbnbiSndmbnenfbNnggogogogogogonhninjnkmmncmnncnlnpnmmjnnmlnomoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamamkgnulKlKnvmpnwkfnxnynznAnAnAnAnAnBnCnDdtbNnEbSnFbxfXfXfXbxbSmbnGnHnInbnJnKnLmbnMnNcUnOnPnQnRnSnTgogogonUkxkxkxkxkxkxkxkxkxnVgogogoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamamkfmQlKlKnvmpnWkfnXnYnZnAjhobocodoejojobxogbNohoibxfXfXfXbxbSmbojoknbnbnbolommbonbNbNoonPopnqorororosotouovowoxoyozoAnPoBoCoDoEoFoGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakgkgkglklKlKnvmpmqkfkfkfkfnAoHoIoJoKoebxbxbxbNbNbSoLbxfXfXoMbxbSmbmboNjSoPkhoRmbmbbxbNbNlRoSrInroVoVoVoWoXoYoVoVoVoZpapbnPpcpdpepfpgphaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamamfWnulKlKnvmpnwkfnxnynznAnAnAnAnAnBnCnDdtbNnEbSnFbxfXfXfXbxbSmbnGnHnInbnJnKnLmbnMnNcUnOnPnQnRnSnTgogogonUkxkxkxkxkxkxkxkxkxnVgogogoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamamkfmQlKlKnvmpnWkfnXnYnZnAjhobocodoejojobxogbNohoibxfXfXfXbxbSmbojoknbnbnbolommbonbNbNoonPopnqorororosotouovowoxoyozoAnPoBoCoDoEoFhxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafWfWfWhklKlKnvmpmqkfkfkfkfnAoHoIoJoKoebxbxbxbNbNbSoLbxfXfXoMbxbSmbmboNiboPjSoRmbmbbxbNbNlRoSrInroVoVoVoWoXoYoVoVoVoZpapbnPpcpdpepfpghxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalIlJlIlklKlKnvmpmqpipjpkplnAlQpnpojTpqbNcTprprprmYbNbxfXfXpsbxnNptpuoNpvpwnsoRpypzbxbNbNpAnPpBpfpCpfpfpDpEpFpGpGpGpDpHoroupIpJpKpfpfnPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakgkgkglkoapMpNpOpPpQpRpkpSnApTpUpopWoebNbSbNdtlvlucxbxfXfXpXbxbNbNcxpYjWpwjXqcqdqebxbNbxbxnPnPnPnPqfqgkykCnPleleqkqlqmqaqoqnoZqqpfqrnPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamamkfqsqtlKnvmpmqqpqppkqvnAnAoeoTnAoebxqxbxbxbxbxbxbxfXfXfXbxbxbxbxmbofppoOmbqBbxbxidbxoQqDqEhCnPqFnPpVpZnPqIqJnPqKpaquqbqNqOoqpfpfoGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamkfkfkflKnvmpqQpMpMpMpMqRpMqSpOpMqTksqUfXqVfXqWqXlYlYlYlYlYlYqYlYlYqZrarbrcrdrejqjqjrjqrfjqjqjqjqrgrhrirjrkrlrmpDpHronPrprqrrrsrtphaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafWfWfWlkoapMpNpOpPpQpRpkpSnApTpUpopWoebNbSbNdtlvlucxbxfXfXpXbxbNbNcxpYjWpwjXqcqdqebxbNbxbxnPnPnPnPqfqgkykCnPleleqkqlqmqaqoqnoZqqpfqrnPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamamkfqsqtlKnvmpmqqpqppkqvnAnAoeoTnAoebxqxbxbxbxbxbxbxfXfXfXbxbxbxbxmbkeppkgmbqBbxbxidbxoQqDqEhCnPqFnPpVpZnPhxhxnPqKpaquqbqNqOoqpfpfhxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamkfkfkflKnvmpqQpMpMpMpMqRpMqSpOpMqTksqUfXqVfXqWqXlYlYlYlYlYlYqYlYlYqZrarbrcrdrejqjqjrjqrfjqjqjqjqrgrhrirjrkrlhxpDpHronPrprqrrrsrthxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamamameXrurvrwrxryrzrArBlmlmlmrDlmlmrErFcXcXcXrGfXfXpmfXipfXfXfXfXfXeLfXgafXfXfXfXfXfXfXfXfXfXfXfXrIpDpfrJrKpfqhpDparMnPnPnPnPnPnPnPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamkfkfkflKrNrOrPrQrRrSrTrClKlKlKlKlKeLgafXfXrVfjfXfXeLfXgafXfXfXfXfXeLfXrWksksksksktksksrXkskskskurYrZpfsasbscrmqlqmoUnPsfsgshsisjnPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakgsksllKlKmpmqlKlKlKlKnvsmsnsnsnsospsqsrsrsrqxbxbxiMssstsusvswsusuqipxqjsususususufXpLsBfXfXbxbxsCqwqwnPnPnPnPsEpHsGsHsIsJsKsLpfoGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakflKlKlKlKqyqAsOlKlKlKnvsrsrljljsRsSsTsUsVsWsXsYdwsZfXgasutatbtctdtTtdtUthsutitjsusseJtltmeJbxamnPrmqznPtoqPtqtrpaqGqHrHpftvtwpfphaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakgtykglklKlKtAkgtykgkftBqMqLtEtFtGtHtItJtKtLtMtNtNtOkssBpxtdtQtRtStTtdtUtVtWsetYsufXfXfXfXtZbxaanPuaubucpaudrLrnoXugnPnPnPnPnPnPnPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakglJkgujukulumkglJkgkfkfsrunuounupuqurusutsruubxuvfXfXfXpxtdtTuxtdtTtdtUtVuyuzuAsufXuBuCuDfXntaanPuEpfsdpauFrmsxpaszsDtpuKuLpfuMoGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasyuOsykgkgkgkgsyuOsyamamsruSuountuununtXuWsruubxuXfXfXfXpxtdtTuYtdtTtdtUtVuZuzvasulsvbvbvbvcbxaanPvdpfpfvevftftevivjsHvkpfvlpfpfphaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajcvmjdvmvmsPsPvmvmvqvpvramsrsrvtsrsrvuvvsrsqsruubxbxfXfXfXpxtdvxtRtStTtdvyvzvAvBvCvDfXuBuCuDvEntaanPvFvGvHvIvJqotgoVtnnPvNvOvPvQvRnPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajcvpvmvsvSvSvUvTvWvVvXvUvSvYvZambxbNbSwbwcsrsrsrbGwduubNbxfXfXfXsuwewfwgwhwiwjwktVwlwmvCwnfXvbvbvbwobxamnPqIwpwpwqnPnPwrtswtnPnPnPnPnPnPnPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamkfkfkflKrNrOrPrQrRrSrTrClKlKlKlKlKeLgafXfXrVfjfXfXeLfXgafXfXfXfXfXeLfXrWksksksksktksksrXkskskskurYrZpfsasbschxqlqmoUnPsfsgshsisjnPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafWsksllKlKmpmqlKlKlKlKnvsmsnsnsnsospsqsrsrsrqxbxbxiMssstsusvswsusuqikhqjsususususufXpLsBfXfXbxbxsCqwqwnPnPnPnPsEpHsGkLsIsJsKsLpfhxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakflKlilKlKqyqAljlKlKlKnvsrsrntntsRsSsTsUsVsWsXsYdwsZfXgasutatbtctdtTtdtUthsutitjsusseltltmelbxamnPhxqznPtoqPtqtrpaqGqHrHpftvtwpfhxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafWtyfWlklKlKtAfWtyfWkftBqMqLtEtFtGtHtItJtKtLtMtNtNtOkssBkhtdtQtRtStTtdtUtVtWsetYsufXfXfXfXtZbxaanPuaubucpaudrLrnoXugnPnPnPnPnPnPnPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafWlJfWujukulumfWlJfWkfkfsrunuounupuqurusutsruubxuvfXfXfXkhtdtTuxtdtTtdtUtVuyuzuAsufXuBuCuDfXfwaanPuEpfsdpauFhxsxpaszsDtpuKuLpfuMhxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaofuOoffWfWfWfWofuOofamamsruSuountuununtXuWsruubxuXfXfXfXkhtdtTuYtdtTtdtUtVuZuzvasulsvbvbvbvcbxaanPvdpfpfvevftftevivjkLvkpfvlpfpfhxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajcvmjdvmvmsPsPvmvmvqvpvramsrsrvtsrsrvuvvsrsqsruubxbxfXfXfXkhtdvxtRtStTtdvyvzvAvBvCvDfXuBuCuDvEfwaanPvFvGvHvIvJqotgoVtnnPvNvOvPvQvRnPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajcvpvmvsvSvSvUvTvWvVvXvUvSvYvZambxbNbSwbwcsrsrsrbGwduubNbxfXfXfXsuwewfwgwhwiwjwktVwlwmvCwnfXvbvbvbwobxamnPhxhxhxhxnPnPoGtsoOnPnPnPnPnPnPnPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaavYwawvwuvSwwvSwwvSwwvSwwvSwxvZambxbNbSbNbxwAwBwCwDwEwFlPbxfXfXfXsusuwGsususuttwIsuwJsutCsufXwLwMwNwObxaaaaaaaaamamnPwPwQwRwStDnPamamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasQvSvSvqvSwwvSwwwzwwvSwwvSwxvZambxbNbSbNbxbNwWwXwYwZnDbObxfXfXiUsuxaxbueufxeuGxgxhxixjuHsuidbxbxbxbxbxaaaaaaaaaaamxlxmuJpfuUxpxlamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaavYwUwvwuvSwwvSwwvSwwvSwwvSwxvZambxbNbSbNbxbNxrxsqCxsbTxubxfXfXfXsuxvxwxxxyxzxAxBxCxDxExFsubNbxamamaaaaaaaaaaaaaaaanPxGpfpfpfxHnPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxqwVvmvsvSvSvSvSvSvSvSvSvSvYvZambxcxnNprprprxLbxxMbxbTbObxxNfXxOsuuVsAxRwIxSsMxUxVxWsNuHsubNbxbxbxamaaaaaaaaaaaaaanPnPxZyaybnPnPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxqvmvmvmvmvmvmvmvmvmwVxIambxyddtmGbNbNxrbxvobxyfygtNksksksyhyiyjykylsusususususuymsubNbMbNbMbLamamamamamamamamnPqIwpwqnPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaphvSvSvqvSwwvSwwwzwwvSwwvSwxvZambxbNbSbNbxbNwWwXwYwZnDbObxfXfXiUsuxaxbueufxeuGxgxhxixjuHsuidbxbxbxbxbxaaaaaaaaaaamhxxmuJpfuUxphxamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaavYwUwvwuvSwwvSwwvSwwvSwwvSwxvZambxbNbSbNbxbNxrxspxxsbTxubxfXfXfXsuxvxwxxxyxzxAqCxCxDxExFsubNbxamamaaaaaaaaaaaaaaaanPxGpfpfpfxHnPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxqwVvmvsvSvSvSvSvSvSvSvSvSvYvZambxcxnNprprprxLbxxMbxbTbObxxNfXxOsuuVsAxRwIxSsMxUxVxWsNuHsubNbxbxbxamaaaaaaaaaaaaaanPxZyaybpfxlnPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxqvmvmvmvmvmvmvmvmvmwVxIambxyddtmGbNbNxrbxvobxyfygtNksksksyhyiyjykylsusususususuymsubNbMbNbMbLamamamamamamamnPnPhxhxhxnPnPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabxbybxbxbxbxbxbNxrbxbxbxbNmsynyojqypyqyrysytpryuyvbNmubNbNbNbNbNbxbybxamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaambxbNbMcTprprywpryxprprprprpryylYlYlYyzmYyAyAyAyAyAyAyAyAyAyAyAbxbxamamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamuIbMbNyByCyAyAyAyAyAyAyAyAyAyAyDyEfXyFyGyAyAyHyHyIyIyJyJyKyLuTyBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaameXeXyBvgyOyPyRyQySyTyUyVyWyAyXikfXinyYyAyZyHyHyIyIyJyJyKzazbyByBamamzczczdzdzcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamtkzazfzazgzgzgzazavwziyAzjfXfXfXzkyAyZyHyHyIyIyJyJzlzazmzntkaaaazczozozozcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatkzazqzrzsztztzrzazuzvzwzxzyzzzAzByAzCzDzDzEzEzFzFzGzHzIzJtxzLzLtzwyzOzPzcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatkzazqzazRzSzSzTzTzUzazVzWzXvhzXzZvKAbAcAcAcAcAcAcAdAezmzntkaaaazczozozozcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaameXeXyBvgyOyPyRyQySyTyUyVyWyAyXikfXinyYyAyZyHyHyIyIyJyJyKzaxByByBamamzczczdzdzcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamqIzazfzazgzgzgzazavwziyAzjfXfXfXzkyAyZyHyHyIyIyJyJzlzazmznqIaaaazczozozozcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqIzazqzrzsztztzrzazuzvzwzxzyzzzAzByAzCzDzDzEzEzFzFzGzHzIzJqJzLzLrmwyzOzPzcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqIzazqzazRzSzSzTzTzUzazVzWzXvhzXzZvKAbAcAcAcAcAcAcAdAezmznqIaaaazczozozozcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayBzaAfAbAbAgzazazazszaAhAivLAVvMAmwszavwzazrzazrzazqzfzmyByBamamzczczczczcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayBAoAoApArAsAbAbwHAtAbAbwKAezaAwwTAzAzAAABACAzADAEAFAGAoyBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayByByByByBzqzayByBAHyByByBAIzaAJyByByBAKyByBzaALyByByByByBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaayBzqAMyBAWAOAPAUyBtktktkyBAUzaAVAWyBAXALyBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaayBzqAMyBAWAOAPAUyBqIqIqIyBAUzaAVAWyBAXALyBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamamamamyBzqAYyBzazRAZAZAZAZBazayMzazazazayBAIALyBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaayBtkyBxcxdtkxfzazaBextxoBhxPxQBkzazaxktkxYxnyBtkyBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaatkBozazqBptkAnzfzaBqxTBsBtBuxXBwzavwAqtkBxALByBztkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaatkBozazqBptkyNzqzaBAyeycBDzezhBGzaALxktkBxALzaBHtkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaatkBozaAsAbBIBIBJBKBLzKzpBOzMzNBRzaBSBTBTAzBUBVBWtkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaayBtkyBzqzaBXyByByByBzQzQAKAlAlyByByByBCczaALyBtPyBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaayBqIyBxcxdqIxfzazaBextxoBhxPxQBkzazaxkqIxYxnyBqIyBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaqIBozazqBpqIAnzfzaBqxTBsBtBuxXBwzavwAqqIBxALByBzqIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaqIBozaAssHsysOAezaBAyeycBDzezhBGzaAwtksQtxBUzaBHqIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaqIBozazqzayByBtzBKBLzKzpBOzMzNBRzauiyByBzaALBVBWqIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaayBqIyBzqzaBXyByByByBuNuNAKuPuPyByByByBCczaALyBtPyBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamamamamyBCezfzazayLzazYzKzpAVzMzNzYzazazazavwChyBCiCjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaayBAfCkAbAbAgzazYzKzpBOzMzNzYzaClAzAzCmCnyBCoCpCqCqCqCrCqCqCqCqCsCjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamamaaaaaayBCtCuCvyBAiyByBzQzQAaAlAlyByBAmyBCxCyCzyBamamamamamamamamamamCoCAamaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamamaaaaaayBCtCuCvyBAiyByBuNuNAauPuPyByBAmyBCxCyCzyBamamamamamamamamamamCoCAamaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayByByByByByByByByByBARATASyeBbAVBfzhBgBjBiCJyByByByByByByByByBaaaaaaaaaaamCKamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayBCLCMCNCNCNCNCMCOyBzaCPCQCRCSzaCTCRCQCUCVyBCWCXCYCZCYCYCXDayBaaaaaaaaaaaaDbamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaayBDcCLCOCLCOCLCODdDsBnBvBrBBzpzazMBEBCBMBFDnDoDpDaDpDaDpDaDqDraaaaaaaaaaaaDbamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayBDcDcDcDcDcDcDcCLDsBNBPBPBPBQDwBYBZBZBZCaDnCYDoDqDqDqDqDqDqDraaaaaaaaaaaaDbamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaayBDcCLCOCLCOCLCODduQBnBvBrBBzpzazMBEBCBMBFDnDoDpDaDpDaDpDaDqDraaaaaaaaaaaaDbamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayBDcDcDcDcDcDcDcCLuQBNBPBPBPBQDwBYBZBZBZCaDnCYDoDqDqDqDqDqDqDraaaaaaaaaaaaDbamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayBDcDcDcDcDcDcDcDcyBCbCdCdCdCBCDCCCdCEDGCFCHCGCIDqDqDqDqDqDqDraaaaaaaaaaaaDbamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayBDdDLDdDLDdDLDdDLyBDeDfDeDeDgDPDhDiDSDTDUyBDjCIDWDoDWDoDWDoyBaaaaaaaaaaamDXamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayBAjAjAjAjAjAjAjAjyByByByByByByByByByByByBCJyByByByByByByByByBamamamamamamDZamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -1844,17 +1835,17 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDbamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamamambLEaEbEaEaEaEaEaEaEaEaEaEcAkEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEeEfamamamamamamamamamamamamamamamamamamamambLbLEgEhEgEhEhEhEhEhEiEjEkElEmuhEoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEpEqCqErCqCqCqCqCqCqErCqCqCqCqErEsEtEfamEaEaEaEaEaEaEaEuEvEwEwEwExEyEzEAAkEaamamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamCoEBEfuiEhEhEDEhEhEhEhEEEFEGEGEHEIEhEJEJEJEJEJEJEJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamCoCAuiEhEhEvEwEwEwEwELEMDkEOEPEIEhEJEQERESETEQEJamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamCoEBEfuREhEhEDEhEhEhEhEEEFEGEGEHEIEhEJEJEJEJEJEJEJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamCoCAuREhEhEvEwEwEwEwELEMDkEOEPEIEhEJEQERESETEQEJamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamEauwEaEhEhEEsFrUGPEWEaEYEZFaFbFcFdEJFeFfEQFfFgEJamamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamuiFhFiEhDlELFkEVEVEVEauiuNFnuiEIFpEJFqFrFsFtFuEJamamamamamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamuiFwEhEhEhFxFyFzFAEVFBFCFDFEFFEIFpEJFGFHEQFIDmEJamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamuiFKEDEhFLFMFNEVEVEVFOFCFPFQFRFSFTFUuQuPFXuRvnEJamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamEauiEaEhEhEIGQGbEXGcGdGeGfGgGhFxGiGjGkGlGmGnGoEJamamamamamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauiEhEhGqGrGrGrGrGsGtDtEGDuGwEhEJGxGyGzDvGBEJamamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauiEhEhFiEhEhEhEhFxGDGEGFGGFxEhEJGBGBGHGIGJEJamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamuRFhFiEhDlELFkEVEVEVEauRvnFnuREIFpEJFqFrFsFtFuEJamamamamamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamuRFwEhEhEhFxFyFzFAEVFBFCFDFEFFEIFpEJFGFHEQFIDmEJamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamuRFKEDEhFLFMFNEVEVEVFOFCFPFQFRFSFTFUwqwpFXwrwtEJamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamEauREaEhEhEIGQGbEXGcGdGeGfGgGhFxGiGjGkGlGmGnGoEJamamamamamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauREhEhGqGrGrGrGrGsGtDtEGDuGwEhEJGxGyGzDvGBEJamamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauREhEhFiEhEhEhEhFxGDGEGFGGFxEhEJGBGBGHGIGJEJamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaEaEaEaEaEaEaEuFxFxFxFxFxFxEhGKGLGKEJEJEJEJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamambLbLEgEhEgEhEhEhEhEhEhFiEhEhEhuiamamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamambLbLEgEhEgEhEhEhEhEhEhFiEhEhEhuRamamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamamambLEaEbEaEaEaEaEaEaEaEaEaGNGNEaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamamamamamamamamamamamamEaEaEaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/_maps/map_files/MiniStation/z2.dmm b/_maps/map_files/MiniStation/z2.dmm index 488829488c9..2df3ed71f91 100644 --- a/_maps/map_files/MiniStation/z2.dmm +++ b/_maps/map_files/MiniStation/z2.dmm @@ -201,7 +201,7 @@ "dS" = (/turf/simulated/floor/plasteel{icon_state = "green"; dir = 8},/area/centcom/control) "dT" = (/turf/simulated/floor/plasteel{icon_state = "green"; dir = 4},/area/centcom/control) "dU" = (/turf/space,/turf/simulated/wall/shuttle{icon_state = "swall_f6"; dir = 2},/area/space) -"dV" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/space) +"dV" = (/obj/effect/spawner/structure/window/reinforced,/turf/simulated/floor/plating,/area/space) "dW" = (/turf/space,/turf/simulated/wall/shuttle{icon_state = "swall_f10"; dir = 2},/area/space) "dX" = (/obj/machinery/door/poddoor{id = "CentComPort"; name = "security door"},/turf/simulated/floor{dir = 1; icon_state = "loadingarea"},/area/centcom/control) "dY" = (/obj/machinery/door/airlock/centcom{name = "Centcom Security"; opacity = 1; req_access_txt = "101"},/turf/simulated/floor/plasteel/black,/area/centcom/control) @@ -371,7 +371,7 @@ "hg" = (/turf/simulated/floor/plating/snow,/turf/simulated/wall/shuttle{dir = 1; icon_state = "diagonalWall3"},/area/shuttle/syndicate) "hh" = (/turf/simulated/floor/plasteel/black,/area/centcom/evac) "hi" = (/obj/machinery/sleeper{dir = 8; icon_state = "sleeper-open"},/turf/simulated/floor/plasteel/shuttle{icon_state = "floor3"},/area/space) -"hj" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/space,/area/space) +"hj" = (/obj/effect/spawner/structure/window/reinforced,/turf/simulated/floor/plating,/area/shuttle/syndicate) "hk" = (/obj/machinery/door/airlock/glass_security{name = "Escape Shuttle Cell"; req_access_txt = "2"},/turf/simulated/floor/plasteel/shuttle,/area/space) "hl" = (/turf/simulated/wall/shuttle{icon_state = "swall12"; dir = 2},/area/wizard_station) "hm" = (/turf/simulated/floor/plasteel/cult,/turf/simulated/wall/shuttle{icon_state = "swall_f9"; dir = 2},/area/wizard_station) @@ -406,7 +406,7 @@ "hP" = (/obj/structure/stool/bed/chair/comfy/black{dir = 1; icon_state = "comfychair"; name = "pilot's chair"; tag = "icon-comfychair (NORTH)"},/turf/simulated/floor/plasteel/shuttle/red,/area/shuttle/syndicate) "hQ" = (/turf/simulated/floor/plating/snow,/turf/simulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"; dir = 4},/area/syndicate_mothership) "hR" = (/obj/machinery/washing_machine,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) -"hS" = (/obj/item/weapon/storage/fancy/crayons,/obj/structure/table,/obj/item/weapon/storage/fancy/crayons,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) +"hS" = (/obj/item/weapon/storage/crayons,/obj/structure/table,/obj/item/weapon/storage/crayons,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) "hT" = (/turf/simulated/floor/plasteel,/area/tdome/tdomeobserve) "hU" = (/obj/structure/table,/turf/simulated/floor/plasteel,/area/tdome/tdomeobserve) "hV" = (/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 8},/area/tdome/tdomeobserve) @@ -433,7 +433,7 @@ "iq" = (/obj/machinery/vending/cola,/turf/simulated/floor/plasteel/bar,/area/syndicate_mothership) "ir" = (/obj/machinery/vending/coffee,/turf/simulated/floor/plasteel/bar,/area/syndicate_mothership) "is" = (/turf/indestructible/fakeglass{icon_state = "fakewindows2"; dir = 6},/area/syndicate_mothership) -"it" = (/obj/machinery/vending/cigarette{products = list(/obj/item/weapon/storage/fancy/cigarettes/cigpack_syndicate = 7, /obj/item/weapon/storage/fancy/cigarettes/cigpack_uplift = 3, /obj/item/weapon/storage/fancy/cigarettes/cigpack_robust = 2, /obj/item/weapon/storage/fancy/cigarettes/cigpack_carp = 3, /obj/item/weapon/storage/fancy/cigarettes/cigpack_midori = 1, /obj/item/weapon/storage/box/matches = 10, /obj/item/weapon/lighter/random = 4, /obj/item/weapon/storage/fancy/rollingpapers = 5)},/turf/simulated/floor/plasteel/bar,/area/syndicate_mothership) +"it" = (/obj/machinery/vending/cigarette{products = list(/obj/item/weapon/storage/fancy/cigarettes/cigpack_syndicate = 7, /obj/item/weapon/storage/fancy/cigarettes/cigpack_uplift = 3, /obj/item/weapon/storage/fancy/cigarettes/cigpack_robust = 2, /obj/item/weapon/storage/fancy/cigarettes/cigpack_carp = 3, /obj/item/weapon/storage/fancy/cigarettes/cigpack_midori = 1, /obj/item/weapon/storage/box/matches = 10, /obj/item/weapon/lighter/greyscale = 4, /obj/item/weapon/storage/fancy/rollingpapers = 5)},/turf/simulated/floor/plasteel/bar,/area/syndicate_mothership) "iu" = (/obj/structure/stool/bed/chair/comfy/teal,/turf/simulated/floor/plasteel/grimy,/area/syndicate_mothership) "iv" = (/obj/item/device/paicard,/turf/simulated/floor/plasteel/grimy,/area/syndicate_mothership) "iw" = (/obj/structure/bookcase,/obj/item/weapon/book/manual/wiki/engineering_hacking,/obj/item/weapon/book/manual/robotics_cyborgs,/obj/item/weapon/book/manual/engineering_singularity_safety,/obj/item/weapon/book/manual/detective,/turf/simulated/floor/plasteel/grimy,/area/syndicate_mothership) @@ -565,7 +565,6 @@ "kS" = (/turf/indestructible/fakedoor{name = "Thunderdome"},/area/tdome/tdomeobserve) "kT" = (/obj/machinery/computer/security/telescreen,/turf/simulated/floor/plasteel{icon_state = "redbluefull"; dir = 2},/area/tdome/tdomeobserve) "kU" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"; name = "EVA Storage"; req_access_txt = "150"},/turf/simulated/floor/plasteel/shuttle/red,/area/shuttle/syndicate) -"kV" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/shuttle/syndicate) "kW" = (/obj/structure/rack,/obj/item/clothing/suit/space/syndicate/black/red,/obj/item/clothing/head/helmet/space/syndicate/black/red,/turf/simulated/floor/plasteel/shuttle/red,/area/shuttle/syndicate) "kX" = (/turf/simulated/floor/plating/snow,/turf/simulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"; dir = 10},/area/syndicate_mothership) "kY" = (/turf/simulated/floor/plasteel/black,/area/syndicate_mothership) @@ -691,7 +690,7 @@ "no" = (/obj/item/device/camera,/turf/simulated/floor/plating/beach/sand,/area/centcom/holding) "np" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/shaker,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"; dir = 2},/area/centcom/holding) "nq" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"},/turf/space,/area/wizard_station) -"nr" = (/obj/structure/table,/obj/item/weapon/lighter/zippo,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"; dir = 2},/area/centcom/holding) +"nr" = (/obj/structure/table,/obj/item/weapon/lighter,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"; dir = 2},/area/centcom/holding) "ns" = (/obj/structure/table,/obj/item/weapon/dice/d20,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"; dir = 2},/area/centcom/holding) "nt" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/soda_cans/cola,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"; dir = 2},/area/centcom/holding) "nu" = (/obj/structure/stool{pixel_y = 8},/obj/item/clothing/head/bandana{pixel_y = -10},/obj/item/clothing/glasses/sunglasses,/turf/simulated/floor/plating/beach/sand,/area/centcom/holding) @@ -701,7 +700,7 @@ "ny" = (/obj/machinery/flasher{id = "tdomeflash"; name = "Thunderdome Flash"},/turf/simulated/floor/bluegrid,/area/tdome/arena) "nz" = (/obj/machinery/door/airlock{icon = 'icons/obj/doors/Dooruranium.dmi'; name = "Engine Room B"},/turf/space,/area/wizard_station) "nA" = (/obj/item/toy/beach_ball,/turf/simulated/floor/plating/beach/sand,/area/centcom/holding) -"nB" = (/obj/structure/rack,/obj/item/weapon/storage/fancy/crayons,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/centcom/holding) +"nB" = (/obj/structure/rack,/obj/item/weapon/storage/crayons,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/centcom/holding) "nC" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/centcom/holding) "nD" = (/obj/machinery/camera{pixel_x = 10; network = list("thunder"); c_tag = "Arena"},/turf/simulated/floor/bluegrid,/area/tdome/arena) "nE" = (/turf/simulated/floor/plating/beach/coastline,/area/centcom/holding) @@ -876,7 +875,7 @@ aMaMaMaMaMaMaMaaaaaaaaaaaaaaaaaaaaaaaaaafuglgkgbgmgngaaaaaaaaaaaaaaaaaaaaaaMaMaM aMaMaMaMaMaMaMaaaaaaaaaaaaaaaaaaaaaaaaaafHfGgtgugtgwgvaaaaaaaaaaaaaaaaaaaaaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMfvfIfIfIfIfIfIfIfIfIfIfIfIfIfIfIfIfIfIfJfIfIfLfKfIfIfLfIfKfvaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMeuffgxfxfxfyfxfxfxfzfxfxgyfffBfjfhgzeugheufldJdJdJfmdFeheJgAeVeVfoeVeVeVeJejeTekeUgBeTekeUejfcfbfdeVeVeJaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM aMaMaMaMaMaMaMaaaaaaaaaaaaaaaaaaaaaaaaeBeBgDgCgFgEgDaaaaaaaaaaaaaaaaaaaaaaaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMfvfIfIfIfIfIfIfIfIfIfIfIfIfIfIfIfJfIfIfIfIfIfKfIfLfKfIfLfIfvaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMeufffffffffffffffffffffffffffRfjfhfkeueReOdQdJdJdJdReOeReJfneVeVfoeVeVeVeJejekekekekekekekgGfpfrfpeVeVeJaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM aMaMaMaMaMaMaMaaaaaaaaaaaaaaaaaaaaaagHgJgIgLgKgMfEgNeBaaaaaaaaaaaaaaaaaaaaaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMfvfIfIfIfIfIfIgOgOgOgOgOgOgOfIfIfIfIfIfIfIfLfIfIgofKfIfIfIfvaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgPgRgPgPeReXdQdJdJdJdReXeReJfcfdgTgSeJeVeVeJejgUdVdVgWeLekgXejfcfbfdeVeVeJaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM -aMaMaMaMaMaMaMaaaaaaaaaaaaaaaaaaaagVgQgZgYhagKfEgkhchbeBeBaaaaaaaaaaaaaaaaaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMfvfIfIfIfIfIhehdhfhfhfhfhfhdhgfIfIfIfIgofIgOfJgOfJfIfLfIfLfvaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMgPeRfCdQdJdJdJdRfCeReJhhhhhhhheJeVeVeJejeLeLhiejhjhkdVejaMaMeJeVeVeJaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM +aMaMaMaMaMaMaMaaaaaaaaaaaaaaaaaaaagVgQgZgYhagKfEgkhchbeBeBaaaaaaaaaaaaaaaaaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMfvfIfIfIfIfIhehdhfhfhfhfhfhdhgfIfIfIfIgofIgOfJgOfJfIfLfIfLfvaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMgPeRfCdQdJdJdJdRfCeReJhhhhhhhheJeVeVeJejeLeLhiejdVhkdVejaMaMeJeVeVeJaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM aMaMaMaMaMaMaMaaaaaaaaaaaaaaaaaaeBaagIhlhlhmgKfEhngkhbaahohpaaaaaaaaaaaaaaaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMfvfIfIfIfIfIhdhqhshrhuhthvhvhdhwfIfIgOfvfvhxhyfvfvgOhAhzgOfvaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMgPhBhBhDhChGhEhHhBhBeJhhhhhhhheJeVeVeJejeLeLhIejhJhLhKejaMaMeJeVeVeJaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM aMaMaMaMaMaMaMaaaaaaaaaaaaaaaaaagNeBaaaaeBhFhMfZhNfZgNeBeBaaaaaaaaaaaaaaaaaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMfvfIfIfIfIfIhdhOhshshPhshshshdhwfIhQfvfvhShRhRhSfvfvfvfvfvfvfvfvaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMgPhUhThWhVhYhXhWhThUeJiahZicibeJeVeVeJejideLhiiehJhLhKejaMaMeJeVeVeJaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM aMaMaMaMaMaMaMaaaaaaaaaaaaaagwigifiiihijihihigikiiihihijihigaaeBaaaaaaaaaaaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMfvfIfIfIfIfIhdilhshshsimhsinhdhwgohQfvioipipipipiriqitisiviuiwfvaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMgPhTixiyhVhYhXiyizhTeJhhiAiBhheJeVeVeJiDiCiEiEiEiEiEiCiFaMaMeJeVeVeJaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM @@ -888,7 +887,7 @@ aMaMaMaMaMaMaMaaaaaaaaaaaaaafujTfEfEjTfujUfEgkfZfEfEjUfujVjXjWjYaaaaaaaaaaaMaMaM aMaMaMaMaMaMaMaaaaaaaaaaaaaafHigkhiiihkiihiggtkjgtiiihkiihigeBeBeBaaaaaaaaaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMfvfIfIhdjZhsklkkhdjzhsjAhdhdknkmhgkofvkqkskrksksipipipktkwkwkyfvaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMhBhBhBhBhBhBhBhBhGhBhBhBhBhBhBhBhBaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM aMaMaMaMaMaMaMaaaaaaaaaaaaaaaaaahFgkaaeBaaeBkzgMhFaaaaeBaaaaaaaaeBaaaaaaaaaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMfvkAfIhdjZhshskBhdhshshshdhshshshdiRfvkCkEkCkCkFipipipfvkHkGkyfvaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMhBkIkJkJkJkJkJkIkIkIkJkJkJkJkJkIhBaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM aMaMaMaMaMaMaMaaaaaaaaaaaaaaaaaaeBeBaakKgkaallkLhFeBaahnaaaaaaaaaaaaaaaaaaaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMfvfIfIhdjZhshshskMhshshskNhshshshdhQfvfvjmkOkQkPfvkRfvfvfvfvfvfvaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMkSkIkIkIkTkIkIkIkIkIkIkIkTkIkIkIkSaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM -aMaMaMaMaMaMaMaaaaaaaaaaaaaaaaaaaaaaaaeBeBaalrgklsaaaaaaeBaaaaaaaaaaaaaaaaaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMfvfIfIhdjZhshshskUhshshskVhshskWhdkXkXkofvfvfvfvfvkYkYkZlblalcfvaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMhBkIkJkJkJkJkJkIkIkIkJkJkJkJkJkIhBaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM +aMaMaMaMaMaMaMaaaaaaaaaaaaaaaaaaaaaaaaeBeBaalrgklsaaaaaaeBaaaaaaaaaaaaaaaaaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMfvfIfIhdjZhshshskUhshshshjhshskWhdkXkXkofvfvfvfvfvkYkYkZlblalcfvaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMhBkIkJkJkJkJkJkIkIkIkJkJkJkJkJkIhBaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM aMaMaMaMaMaMaMaaaaaaaaaaaaaaaaaaaaaaaaaaeBgwigldiifGeBaaeBeBaaaaaaaaaaaaaaaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMfvfIhehdhdhdhdhdhdlehshshdhdhdhdhdhdhglflflflgkofvkYkYkYkYkYkYfvaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMhBhElhlhlhlhlhlhlhlhlhlhlhlhlhhChBaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM aMaMaMaMaMaMaMaaaaaaaaaaaaaaaaaaaaaaaaaaaagDlilkljgDkKjdhalnlmeBaaaaaaaaaaaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMfvfIhdlololpltlqhdhshshshdlulwlvlylxhdfIfJfIfIfKiskYkYkYkYkYlzfvaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMlAlAlAlAlAlAlAlAlAmgmhmhmhmhmhmhmhmhmhmhmhmhmhmglAlAlAlAlAlAlAlAlAaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM aMaMaMaMaMaMaMaaaaaaaaaaaaaaaaaaaaaaaaaaaagtlBlDlCgtlElFgYlGfEgaaaaaaaaaaaaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMfvfIhdhshshsklhslHhshshslIhsklhskllJhdfIgofLfJgofvlKlKlKlKlKlLfvaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMlAlMlOlNlNlNlNlNlPnemhmhmhmhmhmhmhmhmhmhmhmhmhnglPlQlQlQlQlQlOlRlAaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM diff --git a/_maps/map_files/MiniStation/z4.dmm b/_maps/map_files/MiniStation/z4.dmm index c52712da573..306521eda4e 100644 --- a/_maps/map_files/MiniStation/z4.dmm +++ b/_maps/map_files/MiniStation/z4.dmm @@ -19,7 +19,7 @@ "as" = (/obj/machinery/power/solar/fake,/turf/simulated/floor/plasteel/airless{icon_state = "solarpanel"},/area/djstation/solars) "at" = (/turf/simulated/floor/plating/airless,/area/djstation/solars) "au" = (/turf/simulated/wall,/area/djstation) -"av" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/djstation) +"av" = (/obj/effect/spawner/structure/window/reinforced,/turf/simulated/floor/plating,/area/djstation) "aw" = (/turf/simulated/wall/shuttle{icon_state = "swall_s6"; dir = 2},/area/space) "ax" = (/turf/simulated/wall/shuttle{icon_state = "swall12"; dir = 2},/area/space) "ay" = (/turf/simulated/floor/plating,/area/djstation) @@ -44,7 +44,7 @@ "aR" = (/turf/simulated/floor/plating/asteroid/airless,/turf/simulated/wall/shuttle{icon_state = "swall_f9"; dir = 2},/area/space) "aS" = (/obj/structure/table,/obj/machinery/cell_charger,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/djstation) "aT" = (/turf/simulated/floor/plasteel{icon_state = "bar"},/area/djstation) -"aU" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating/airless,/area/space) +"aU" = (/obj/effect/spawner/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/space) "aV" = (/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/djstation) "aW" = (/obj/machinery/light_switch{pixel_y = 28},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/djstation) "aX" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/djstation) diff --git a/_maps/map_files/TgStation/tgstation.2.1.3.dmm b/_maps/map_files/TgStation/tgstation.2.1.3.dmm index 886bdbabe41..67e8dbb493b 100644 --- a/_maps/map_files/TgStation/tgstation.2.1.3.dmm +++ b/_maps/map_files/TgStation/tgstation.2.1.3.dmm @@ -86,8 +86,8 @@ "abH" = (/obj/machinery/requests_console{announcementConsole = 1; department = "Head of Security's Desk"; departmentType = 5; name = "Head of Security RC"; pixel_x = 0; pixel_y = 30},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = -31},/obj/structure/filingcabinet,/turf/simulated/floor/fancy/carpet,/area/security/hos) "abI" = (/obj/machinery/computer/secure_data,/turf/simulated/floor/fancy/carpet,/area/security/hos) "abJ" = (/obj/machinery/computer/security,/turf/simulated/floor/fancy/carpet,/area/security/hos) -"abK" = (/obj/structure/closet/secure_closet/hos,/turf/simulated/floor/fancy/carpet,/area/security/hos) -"abL" = (/obj/machinery/alarm{pixel_y = 23},/obj/structure/reagent_dispensers/peppertank{pixel_x = 30; pixel_y = 0},/obj/structure/table/wood,/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka{pixel_x = 6; pixel_y = 6},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{pixel_x = -4; pixel_y = 3},/obj/item/weapon/reagent_containers/food/drinks/drinkingglass,/turf/simulated/floor/fancy/carpet,/area/security/hos) +"abK" = (/obj/machinery/computer/card/minor/hos,/turf/simulated/floor/fancy/carpet,/area/security/hos) +"abL" = (/obj/machinery/alarm{pixel_y = 23},/obj/structure/reagent_dispensers/peppertank{pixel_x = 30; pixel_y = 0},/obj/structure/table/wood,/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka/badminka,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/shotglass,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/shotglass,/turf/simulated/floor/fancy/carpet,/area/security/hos) "abM" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/tracker,/turf/simulated/floor/plasteel/airless{icon_state = "solarpanel"},/area/solar/auxstarboard) "abN" = (/turf/simulated/floor/plasteel{tag = "icon-warndark (WEST)"; icon_state = "warndark"; dir = 8},/area/security/transfer) "abO" = (/obj/machinery/sparker{dir = 2; id = "executionburn"; pixel_x = 25},/turf/simulated/floor/plasteel{tag = "icon-warndark (EAST)"; icon_state = "warndark"; dir = 4},/area/security/prison) @@ -151,7 +151,7 @@ "acU" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/fancy/carpet,/area/security/hos) "acV" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/fancy/carpet,/area/security/hos) "acW" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/fancy/carpet,/area/security/hos) -"acX" = (/obj/item/weapon/storage/secure/safe/HoS{pixel_x = 35},/obj/structure/table/wood,/obj/item/device/taperecorder{pixel_y = 0},/obj/item/device/radio/off,/turf/simulated/floor/fancy/carpet,/area/security/hos) +"acX" = (/obj/machinery/keycard_auth{pixel_x = 24; pixel_y = 10},/obj/structure/table/wood,/obj/item/device/radio/off,/obj/item/device/taperecorder{pixel_y = 0},/turf/simulated/floor/fancy/carpet,/area/security/hos) "acY" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = -32; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/fsmaint) "acZ" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/solar{id = "auxsolareast"; name = "Port Auxiliary Solar Array"},/turf/simulated/floor/plasteel/airless{icon_state = "solarpanel"},/area/solar/auxstarboard) "ada" = (/obj/structure/cable,/obj/structure/lattice/catwalk,/turf/space,/area/solar/auxstarboard) @@ -403,7 +403,7 @@ "ahM" = (/obj/structure/grille,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/security/warden) "ahN" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 10},/area/security/main) "ahO" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/supply/hidden{tag = "icon-manifold-b-f (NORTH)"; dir = 1},/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/main) -"ahP" = (/obj/machinery/keycard_auth{pixel_x = 24; pixel_y = 10},/obj/machinery/computer/card/minor/hos,/turf/simulated/floor/fancy/carpet,/area/security/hos) +"ahP" = (/obj/item/weapon/storage/secure/safe/HoS{pixel_x = 35},/obj/structure/closet/secure_closet/hos,/turf/simulated/floor/fancy/carpet,/area/security/hos) "ahQ" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "white"},/area/crew_quarters/hor) "ahR" = (/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "red"},/area/security/main) "ahS" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/main) @@ -1694,7 +1694,7 @@ "aGD" = (/obj/machinery/door/airlock{name = "Unit 1"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/toilet) "aGE" = (/obj/machinery/door/airlock{name = "Unit 2"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/toilet) "aGF" = (/obj/machinery/door/airlock{name = "Unit B"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/toilet) -"aGG" = (/obj/structure/table/wood,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/item/weapon/storage/fancy/crayons,/turf/simulated/floor/plasteel{tag = "icon-redbluefull"; icon_state = "redbluefull"},/area/crew_quarters/theatre) +"aGG" = (/obj/structure/table/wood,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/item/weapon/storage/crayons,/turf/simulated/floor/plasteel{tag = "icon-redbluefull"; icon_state = "redbluefull"},/area/crew_quarters/theatre) "aGH" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{tag = "icon-redbluefull"; icon_state = "redbluefull"},/area/crew_quarters/theatre) "aGI" = (/obj/machinery/power/apc{dir = 8; name = "Theatre APC"; pixel_x = -25},/obj/structure/cable,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor/plating,/area/crew_quarters/theatre) "aGJ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fsmaint2) @@ -1722,7 +1722,7 @@ "aHf" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/office) "aHg" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office) "aHh" = (/obj/effect/landmark/start{name = "Chaplain"},/obj/structure/stool/bed/chair,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office) -"aHi" = (/obj/structure/table/wood,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/obj/item/weapon/storage/fancy/crayons,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office) +"aHi" = (/obj/structure/table/wood,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/obj/item/weapon/storage/crayons,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office) "aHj" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office) "aHk" = (/obj/structure/closet/coffin,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) "aHl" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "chapel"},/area/chapel/main) @@ -2009,7 +2009,7 @@ "aMG" = (/obj/machinery/light{dir = 1},/obj/structure/stool/bed/chair,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/hallway/secondary/exit) "aMH" = (/obj/structure/stool/bed/chair,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/exit) "aMI" = (/obj/structure/stool/bed/chair,/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/hallway/secondary/exit) -"aMJ" = (/obj/structure/table/wood,/obj/item/weapon/storage/fancy/cigarettes{pixel_y = 2},/obj/item/weapon/lighter{pixel_x = 4; pixel_y = 2},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/hallway/secondary/entry) +"aMJ" = (/obj/structure/table/wood,/obj/item/weapon/storage/fancy/cigarettes{pixel_y = 2},/obj/item/weapon/lighter/greyscale{pixel_x = 4; pixel_y = 2},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/hallway/secondary/entry) "aMK" = (/obj/structure/table/wood,/turf/simulated/floor/fancy/carpet,/area/hallway/secondary/entry) "aML" = (/obj/machinery/vending/cola,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hallway/secondary/entry) "aMM" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/hallway/primary/port) @@ -2292,7 +2292,7 @@ "aSd" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/crew_quarters/locker) "aSe" = (/obj/structure/closet/secure_closet/personal,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/camera{c_tag = "Locker Room East"; dir = 8; network = list("SS13")},/obj/machinery/light{dir = 4},/turf/simulated/floor/plasteel,/area/crew_quarters/locker) "aSf" = (/obj/structure/table,/obj/item/weapon/hand_labeler,/turf/simulated/floor/plasteel,/area/storage/art) -"aSg" = (/obj/structure/table,/obj/item/weapon/storage/fancy/crayons,/obj/item/weapon/storage/fancy/crayons,/turf/simulated/floor/plasteel,/area/storage/art) +"aSg" = (/obj/structure/table,/obj/item/weapon/storage/crayons,/obj/item/weapon/storage/crayons,/turf/simulated/floor/plasteel,/area/storage/art) "aSh" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/table,/obj/item/device/camera_film,/obj/item/device/camera,/turf/simulated/floor/plasteel,/area/storage/art) "aSi" = (/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating,/area/storage/emergency2) "aSj" = (/obj/machinery/light/small,/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/storage/emergency2) @@ -2481,7 +2481,7 @@ "aVK" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/primary/central) "aVL" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/primary/central) "aVM" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plasteel,/area/hallway/primary/central) -"aVN" = (/obj/structure/table/reinforced,/obj/item/weapon/lighter/zippo,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) +"aVN" = (/obj/structure/table/reinforced,/obj/item/weapon/lighter,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) "aVO" = (/obj/structure/stool,/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) "aVP" = (/obj/structure/table,/obj/item/weapon/kitchen/fork,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) "aVQ" = (/obj/machinery/atmospherics/pipe/simple/yellow/visible{dir = 4},/turf/simulated/wall/r_wall,/area/atmos) @@ -3123,8 +3123,8 @@ "bic" = (/obj/structure/table,/obj/item/clothing/head/soft,/obj/item/clothing/head/soft,/turf/simulated/floor/plasteel,/area/quartermaster/storage) "bid" = (/obj/structure/table,/obj/item/weapon/hand_labeler,/obj/item/weapon/hand_labeler,/obj/machinery/requests_console{department = "Cargo Bay"; departmentType = 2; pixel_x = 0; pixel_y = 30},/turf/simulated/floor/plasteel,/area/quartermaster/storage) "bie" = (/obj/structure/table,/obj/machinery/cell_charger,/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/turf/simulated/floor/plasteel,/area/quartermaster/storage) -"bif" = (/obj/machinery/camera{c_tag = "Cargo Bay North"},/obj/structure/closet/secure_closet/cargotech,/turf/simulated/floor/plasteel,/area/quartermaster/storage) -"big" = (/obj/structure/closet/secure_closet/cargotech,/turf/simulated/floor/plasteel,/area/quartermaster/storage) +"bif" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/closet/wardrobe/botanist,/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hydroponics) +"big" = (/obj/machinery/camera{c_tag = "Cargo Bay North"},/obj/structure/closet/wardrobe/cargotech,/turf/simulated/floor/plasteel,/area/quartermaster/storage) "bih" = (/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = 30},/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel,/area/quartermaster/storage) "bii" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel,/area/quartermaster/storage) "bij" = (/obj/machinery/door_control{id = "qm_warehouse"; name = "Warehouse Door Control"; pixel_x = -1; pixel_y = 24; req_access_txt = "31"},/turf/simulated/floor/plasteel,/area/quartermaster/storage) @@ -3151,7 +3151,7 @@ "biE" = (/obj/structure/table,/obj/item/weapon/restraints/handcuffs,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 10},/area/security/prison) "biF" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/chemistry) "biG" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/ai_monitored/security/armory) -"biH" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/medical/chemistry) +"biH" = (/obj/machinery/smartfridge/chemistry,/turf/simulated/floor/plating,/area/medical/chemistry) "biI" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay) "biJ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitebluecorner"},/area/medical/medbay) "biK" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/medical/medbay) @@ -3354,10 +3354,10 @@ "bmz" = (/obj/structure/grille,/obj/structure/window/fulltile,/turf/simulated/floor/plating,/area/quartermaster/office) "bmA" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel,/area/hallway/primary/central) "bmB" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "redcorner"},/area/hallway/primary/central) -"bmC" = (/obj/machinery/computer/secure_data,/obj/machinery/flasher_button{id = "hopflash"; pixel_x = 6; pixel_y = 36},/obj/machinery/door_control{id = "hop"; name = "Privacy Shutters Control"; pixel_x = 6; pixel_y = 25; req_access_txt = "28"},/obj/machinery/door_control{id = "hopqueue"; name = "Queue Shutters Control"; pixel_x = -4; pixel_y = 25; req_access_txt = "28"},/obj/machinery/light_switch{pixel_x = -4; pixel_y = 36},/turf/simulated/floor/plasteel{dir = 9; icon_state = "blue"},/area/crew_quarters/heads) +"bmC" = (/obj/machinery/flasher_button{id = "hopflash"; pixel_x = 6; pixel_y = 36},/obj/machinery/door_control{id = "hop"; name = "Privacy Shutters Control"; pixel_x = 6; pixel_y = 25; req_access_txt = "28"},/obj/machinery/door_control{id = "hopqueue"; name = "Queue Shutters Control"; pixel_x = -4; pixel_y = 25; req_access_txt = "28"},/obj/machinery/light_switch{pixel_x = -4; pixel_y = 36},/obj/machinery/pdapainter,/turf/simulated/floor/plasteel{dir = 9; icon_state = "blue"},/area/crew_quarters/heads) "bmD" = (/obj/structure/table,/obj/machinery/newscaster/security_unit{pixel_x = 0; pixel_y = 32},/obj/item/weapon/hand_labeler,/obj/item/stack/packageWrap,/turf/simulated/floor/plasteel,/area/crew_quarters/heads) "bmE" = (/obj/machinery/computer/security/telescreen{desc = "Used for watching Prison Wing holding areas."; name = "Prison Monitor"; network = list("Prison"); pixel_x = 0; pixel_y = 30},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel,/area/crew_quarters/heads) -"bmF" = (/obj/machinery/pdapainter,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel,/area/crew_quarters/heads) +"bmF" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/closet/critter/corgi{anchored = 1; desc = "A kennel for Ian to sleep in."; name = "Ian's house"},/turf/simulated/floor/plasteel,/area/crew_quarters/heads) "bmG" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel,/area/crew_quarters/heads) "bmH" = (/obj/structure/grille,/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_x = -32; pixel_y = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/engine/gravity_generator) "bmI" = (/obj/structure/grille,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/engine/gravity_generator) @@ -3419,7 +3419,7 @@ "bnM" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/hallway/primary/central) "bnN" = (/obj/structure/table/reinforced,/obj/machinery/door/window/northleft{dir = 8; icon_state = "left"; name = "Reception Window"; req_access_txt = "0"},/obj/machinery/door/window/brigdoor{base_state = "rightsecure"; dir = 4; icon_state = "rightsecure"; name = "Head of Personnel's Desk"; req_access = null; req_access_txt = "57"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/flasher{id = "hopflash"; pixel_x = 0; pixel_y = 28},/obj/machinery/door/poddoor/shutters/preopen{id = "hop"; layer = 2.9; name = "Privacy Shutters"},/turf/simulated/floor/plasteel,/area/crew_quarters/heads) "bnO" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "blue"; dir = 8},/area/crew_quarters/heads) -"bnP" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/crew_quarters/heads) +"bnP" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/fancy/carpet,/area/crew_quarters/heads) "bnQ" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/fancy/carpet,/area/crew_quarters/heads) "bnR" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/fancy/carpet,/area/crew_quarters/heads) "bnS" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel,/area/crew_quarters/heads) @@ -3494,7 +3494,7 @@ "bpj" = (/turf/simulated/floor/plasteel{icon_state = "bot"},/area/hallway/primary/central) "bpk" = (/obj/structure/grille,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/door/poddoor/shutters/preopen{id = "hop"; layer = 2.9; name = "Privacy Shutters"},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/crew_quarters/heads) "bpl" = (/obj/machinery/computer/card,/turf/simulated/floor/plasteel{icon_state = "blue"; dir = 10},/area/crew_quarters/heads) -"bpm" = (/turf/simulated/floor/plasteel,/area/crew_quarters/heads) +"bpm" = (/turf/simulated/floor/fancy/carpet,/area/crew_quarters/heads) "bpn" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/fancy/carpet,/area/crew_quarters/heads) "bpo" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/mob/living/simple_animal/pet/corgi/Ian,/turf/simulated/floor/fancy/carpet,/area/crew_quarters/heads) "bpp" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel,/area/crew_quarters/heads) @@ -3510,7 +3510,6 @@ "bpz" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Chemistry Lab"; req_access_txt = "5; 33"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/chemistry) "bpA" = (/obj/structure/grille,/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/medical/chemistry) "bpB" = (/obj/structure/table/reinforced,/obj/machinery/door/window/southleft{dir = 1; name = "Chemistry Desk"; req_access_txt = "33"},/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/medical/chemistry) -"bpC" = (/obj/machinery/smartfridge/chemistry,/turf/simulated/wall,/area/medical/chemistry) "bpD" = (/obj/structure/stool/bed/roller,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay) "bpE" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{tag = "icon-manifold-r-f (WEST)"; dir = 8},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay) "bpF" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay) @@ -3569,8 +3568,8 @@ "bqG" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/quartermaster/office) "bqH" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/hallway/primary/central) "bqI" = (/obj/structure/grille,/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = -32},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable,/obj/machinery/door/poddoor/shutters/preopen{id = "hop"; layer = 2.9; name = "Privacy Shutters"},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/crew_quarters/heads) -"bqJ" = (/obj/structure/closet/secure_closet/hop,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plasteel,/area/crew_quarters/heads) -"bqK" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor/plasteel,/area/crew_quarters/heads) +"bqJ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor/fancy/carpet,/area/crew_quarters/heads) +"bqK" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/filingcabinet/chestdrawer,/turf/simulated/floor/plasteel,/area/crew_quarters/heads) "bqL" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/fancy/carpet,/area/crew_quarters/heads) "bqM" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{tag = "icon-manifold-r-f (EAST)"; dir = 4},/turf/simulated/floor/fancy/carpet,/area/crew_quarters/heads) "bqN" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel,/area/crew_quarters/heads) @@ -3715,7 +3714,7 @@ "btw" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel,/area/quartermaster/office) "btx" = (/obj/structure/stool/bed/chair{dir = 8},/obj/machinery/light,/turf/simulated/floor/plasteel,/area/quartermaster/office) "bty" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/hallway/primary/central) -"btz" = (/obj/machinery/keycard_auth{pixel_x = -24; pixel_y = 0},/obj/machinery/computer/ordercomp,/turf/simulated/floor/plasteel{icon_state = "blue"; dir = 8},/area/crew_quarters/heads) +"btz" = (/obj/machinery/keycard_auth{pixel_x = -24; pixel_y = 0},/obj/machinery/computer/supplycomp,/turf/simulated/floor/plasteel{icon_state = "blue"; dir = 8},/area/crew_quarters/heads) "btA" = (/obj/structure/stool/bed/chair/office/dark{dir = 4},/obj/effect/landmark/start{name = "Head of Personnel"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel,/area/crew_quarters/heads) "btB" = (/obj/structure/table,/obj/item/weapon/folder/blue,/obj/item/weapon/stamp/hop,/turf/simulated/floor/plasteel,/area/crew_quarters/heads) "btC" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plasteel,/area/crew_quarters/heads) @@ -3788,7 +3787,7 @@ "buR" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/security/checkpoint/supply) "buS" = (/obj/machinery/camera{c_tag = "Cargo Bay Entrance"; dir = 4; network = list("SS13")},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 8; icon_state = "browncorner"},/area/hallway/primary/central) "buT" = (/obj/machinery/door/poddoor/shutters/preopen{id = "hopqueue"; name = "HoP Queue Shutters"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "loadingarea"},/area/hallway/primary/central) -"buU" = (/obj/structure/filingcabinet/chestdrawer,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/simulated/floor/plasteel{icon_state = "blue"; dir = 10},/area/crew_quarters/heads) +"buU" = (/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/obj/structure/closet/secure_closet/hop,/turf/simulated/floor/plasteel{icon_state = "blue"; dir = 10},/area/crew_quarters/heads) "buV" = (/obj/machinery/requests_console{announcementConsole = 1; department = "Head of Personnel's Desk"; departmentType = 5; name = "Head of Personnel RC"; pixel_y = -30},/obj/machinery/camera{c_tag = "Head of Personnel's Office"; dir = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel,/area/crew_quarters/heads) "buW" = (/obj/structure/table,/obj/item/weapon/book/manual/wiki/security_space_law,/turf/simulated/floor/plasteel,/area/crew_quarters/heads) "buX" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plasteel,/area/crew_quarters/heads) @@ -4232,7 +4231,7 @@ "bDt" = (/obj/machinery/computer/security/mining,/obj/machinery/camera{c_tag = "Mining Dock"; dir = 4; network = list("SS13")},/turf/simulated/floor/plasteel,/area/quartermaster/miningdock) "bDu" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plasteel,/area/quartermaster/miningdock) "bDv" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel,/area/quartermaster/miningdock) -"bDw" = (/obj/structure/rack{dir = 1},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/item/weapon/shovel{pixel_x = -5},/obj/item/weapon/pickaxe{pixel_x = 5},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/quartermaster/miningdock) +"bDw" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/closet/wardrobe/miner,/turf/simulated/floor/plasteel,/area/quartermaster/miningdock) "bDx" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall,/area/quartermaster/miningdock) "bDy" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft) "bDz" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft) @@ -4496,7 +4495,7 @@ "bIx" = (/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 5; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) "bIy" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bIz" = (/obj/machinery/vending/cigarette,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) -"bIA" = (/obj/structure/closet/secure_closet/scientist,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing) +"bIA" = (/obj/structure/closet/wardrobe/science_white,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing) "bIB" = (/obj/item/device/assembly/signaler{pixel_x = 0; pixel_y = 8},/obj/item/device/assembly/signaler{pixel_x = -8; pixel_y = 5},/obj/item/device/assembly/signaler{pixel_x = 6; pixel_y = 5},/obj/item/device/assembly/signaler{pixel_x = -2; pixel_y = -2},/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing) "bIC" = (/obj/item/device/transfer_valve{pixel_x = -5},/obj/item/device/transfer_valve{pixel_x = -5},/obj/item/device/transfer_valve{pixel_x = 0},/obj/item/device/transfer_valve{pixel_x = 0},/obj/item/device/transfer_valve{pixel_x = 5},/obj/item/device/transfer_valve{pixel_x = 5},/obj/machinery/requests_console{department = "Science"; departmentType = 2; name = "Science Requests Console"; pixel_x = 0; pixel_y = -30},/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing) "bID" = (/obj/item/device/assembly/timer{pixel_x = 5; pixel_y = 4},/obj/item/device/assembly/timer{pixel_x = -4; pixel_y = 2},/obj/item/device/assembly/timer{pixel_x = 6; pixel_y = -4},/obj/item/device/assembly/timer{pixel_x = 0; pixel_y = 0},/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing) @@ -5653,7 +5652,7 @@ "ceK" = (/turf/simulated/wall/r_wall,/area/engine/engineering) "ceL" = (/obj/machinery/computer/atmos_alert,/obj/machinery/requests_console{announcementConsole = 1; department = "Chief Engineer's Desk"; departmentType = 3; name = "Chief Engineer RC"; pixel_x = -32; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralfull"},/area/engine/chiefs_office) "ceM" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralfull"},/area/engine/chiefs_office) -"ceN" = (/obj/structure/table/reinforced,/obj/item/weapon/clipboard,/obj/item/weapon/lighter/zippo,/obj/item/clothing/glasses/meson{pixel_y = 4},/obj/item/weapon/stamp/ce,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralfull"},/area/engine/chiefs_office) +"ceN" = (/obj/structure/table/reinforced,/obj/item/weapon/clipboard,/obj/item/weapon/lighter,/obj/item/clothing/glasses/meson{pixel_y = 4},/obj/item/weapon/stamp/ce,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralfull"},/area/engine/chiefs_office) "ceO" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralfull"},/area/engine/chiefs_office) "ceP" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralfull"},/area/engine/chiefs_office) "ceQ" = (/obj/structure/grille,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/engine/chiefs_office) @@ -6009,7 +6008,7 @@ "clC" = (/obj/structure/closet/radiation,/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,/turf/simulated/floor/plasteel,/area/engine/engineering) "clD" = (/obj/structure/table,/obj/item/device/flashlight{pixel_y = 5},/obj/item/clothing/ears/earmuffs{pixel_x = -5; pixel_y = 6},/obj/item/weapon/airlock_painter,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/engine/engineering) "clE" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/engine/engineering) -"clF" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/suit/hazardvest,/obj/item/clothing/suit/hazardvest,/obj/item/weapon/tank/internals/emergency_oxygen/engi,/obj/item/weapon/tank/internals/emergency_oxygen/engi,/obj/machinery/camera{c_tag = "Engineering East"; dir = 8; network = list("SS13"); pixel_x = 0; pixel_y = 0},/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{tag = "icon-manifold-r-f (EAST)"; dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "yellowcorner"},/area/engine/engineering) +"clF" = (/obj/structure/closet/l3closet/scientist{pixel_x = -2},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/mixing) "clG" = (/obj/machinery/atmospherics/unary/outlet_injector/on{dir = 1; frequency = 1443; id = "air_in"},/turf/simulated/floor/engine/vacuum,/area/maintenance/incinerator) "clH" = (/obj/machinery/igniter{icon_state = "igniter0"; id = "Incinerator"; luminosity = 2; on = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/engine/vacuum,/area/maintenance/incinerator) "clI" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 0; initialize_directions = 1; internal_pressure_bound = 4000; on = 0; pressure_checks = 2; pump_direction = 0},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = -32},/turf/simulated/floor/engine/vacuum,/area/maintenance/incinerator) @@ -6488,6 +6487,7 @@ "cuN" = (/turf/space,/turf/simulated/wall/shuttle{dir = 2; icon_state = "swall_f10"; layer = 2},/area/shuttle/pod_4) "cuO" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst{dir = 4},/turf/simulated/wall/shuttle{icon_state = "swall_f6"; dir = 2},/area/shuttle/pod_4) "cuP" = (/obj/machinery/door/airlock/engineering{name = "Telecommunications"; req_access_txt = "61"},/turf/simulated/floor/plasteel,/area/tcommsat/computer) +"cuQ" = (/obj/structure/rack{dir = 1},/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/item/weapon/pickaxe{pixel_x = 5},/obj/item/weapon/shovel{pixel_x = -5},/turf/simulated/floor/plasteel,/area/quartermaster/miningdock) "cuR" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/machinery/doorButtons/access_button{idSelf = "virology_airlock_control"; idDoor = "virology_airlock_interior"; name = "Virology Access Button"; pixel_x = 8; pixel_y = -28},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warnwhite"},/area/medical/virology) "cuS" = (/obj/machinery/atmospherics/binary/pump{dir = 1; on = 1},/obj/structure/sign/fire{pixel_x = 32; pixel_y = 0},/obj/machinery/doorButtons/access_button{idSelf = "incinerator_access_control"; idDoor = "incinerator_airlock_interior"; name = "Incinerator airlock control"; pixel_x = -8; pixel_y = 24},/obj/machinery/light/small{dir = 4},/turf/simulated/floor/engine,/area/maintenance/incinerator) "cuT" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{tag = "icon-manifold-r-f (NORTH)"; dir = 1},/turf/simulated/floor/plasteel,/area/quartermaster/storage) @@ -6505,6 +6505,7 @@ "cvf" = (/obj/machinery/door/airlock/glass{autoclose = 0; frequency = 1449; heat_proof = 1; icon_state = "door_locked"; id_tag = "incinerator_airlock_interior"; locked = 1; name = "Turbine Interior Airlock"; req_access_txt = "32"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/engine,/area/maintenance/incinerator) "cvg" = (/obj/machinery/door/airlock/glass{autoclose = 0; frequency = 1449; heat_proof = 1; icon_state = "door_locked"; id_tag = "incinerator_airlock_exterior"; locked = 1; name = "Turbine Exterior Airlock"; req_access_txt = "32"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/engine,/area/maintenance/incinerator) "cvh" = (/obj/machinery/atmospherics/unary/heat_reservoir/heater{dir = 8},/turf/simulated/floor/plating,/area/maintenance/asmaint2) +"cvi" = (/obj/machinery/camera{c_tag = "Engineering East"; dir = 8; network = list("SS13"); pixel_x = 0; pixel_y = 0},/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{tag = "icon-manifold-r-f (EAST)"; dir = 4},/obj/structure/closet/wardrobe/engineering_yellow,/turf/simulated/floor/plasteel{dir = 4; icon_state = "yellowcorner"},/area/engine/engineering) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -6579,9 +6580,9 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaZaasaasaasaaKabaabbaasaasabcabdaaiaaiaaiaafaaaaaaaaaaaaaaaaafaaaaaVaaaaaaaaaaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeabeabeabfabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHaaOaaWaaNaaXabiaasabjaasaasaasaasaasaasaauaasabkablaaiaafaafaafaafaafaafaafaafabmabmabmabnabmabmaboaboabpabpabpaboaboaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaaaafaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgaaYabraaPabsabuaasaasabvabwabxaasabyabzabAaasabBabCaaiaafaaaaafaafaafaafaaaaafabnabDabEaeIabFabGaboabHabIabJabKabLaboaaaaaaaaaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaafabMaafabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaabfabfabeabfabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgabNabPabOabsabSabTabSabSabSabUabSabSabSabVabSabSabWaaiactactactactactactactactabmabXabEaeIabYabDaboabZacaacbaccahPaboaaaaafacdaagaagaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabfabfabfabfaafaafaaaaceaaaacfaafabfabfabfabfabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaabfabfabeabfabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgabNabPabOabsabSabTabSabSabSabUabSabSabSabVabSabSabWaaiactactactactactactactactabmabXabEaeIabYabDaboabZacaacbaccacXaboaaaaafacdaagaagaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabfabfabfabfaafaafaaaaceaaaacfaafabfabfabfabfabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaaaafaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgabQacgabRabsackaasaclabSacmacnacoabSacpacqacrabSacsaaiacMacNacOacOacPacQacRacSactacuabEaeIaecabDabpacwacxacyacbaczaboaaaaafacAacBacAaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaafaaaaafaaaaaaaceaaaaaaaafaaaaafaaaaaaabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaafacCaafabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHaciacDacjacEacHaasacIabSacJacnacIabSacKacqacIabSacLaaiacMadkadladladladladmadnactacTabEaeIaecabDabpacUacVacWacbacXaboaafaafacAacYacAaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaafacZacZacZacZacZaaaadaaaaacZacZacZacZacZaafabfaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaafacCaafabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHaciacDacjacEacHaasacIabSacJacnacIabSacKacqacIabSacLaaiacMadkadladladladladmadnactacTabEaeIaecabDabpacUacVacWacbahPaboaafaafacAacYacAaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaafacZacZacZacZacZaaaadaaaaacZacZacZacZacZaafabfaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfadbadbadbadbaafaafaaaadcaaaaafaafabfabfabfabfabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafhaaHaaHaaHacFaddacGabsadfadgadhabSadfadiadhabSadfadjadhabSabSaaiafnaRFaNFadVaNFadWbhdbiGactadoabEaeIaecabDaboadpadqadradsadtaboabnabmadvacBacAacAachaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaaadwadxadxadxadxadyadzadAadBadBadBadBadCaaaabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaaaaaaafaaaaafaaaaaaadcaaaaaaaafaaaaafaaaaaaabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHabhadeadDadGadFadIadHadKadJadMadLadOadNadUadLaepadPadQadRaaiadSadTaNFboSaNFadXadYadZaeaabEabEaebaeTabmaboaedaboaeeaboaefaboaegaehacAaeiacAarqanTanTahtaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaafaemaemaemaemaemaaaadzaaaaemaemaemaemaemaafabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaafaenaenaenaenaenaaaaeoaaaaenaenaenaenaenaafabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHadEaeqaeraeuaetaewaevafiaexavkaifaexaexaexaifaOyaOvaeyaezaaiaeAaeBaeCaeDaeEaeFaeGaeHactahoagSaeJahpabmaeLaeMaeNaeOaePaeQaeNaeRaeSaeVaeUaeVamoamIamJagPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaaaaaaaaaafaaaaaaaaaadzaaaaaaaaaaafaaaaaaaaaabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -6619,7 +6620,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDccsOcsOcsYarraDbarraDbarraDbarraDbarraCXaDeavMaBGaEqaAvaEraEsaEtaEuaEvaEwayuaExazEaEyaEzaEzaEAaEBaECaEDaEEaEFawKaEGaEGaEGawKaEHaEIaAEaafazNaEJaDyaEKaELaEMazNaafaxoaENaEOaEPaEQaDCaERaESaETaEUaEVaxKaEWaEXaDJaDJaDJaEYaEZaxKaFaaFaaxKaDJaxKaFbaoeaFcacAaeUaeUaeUaeUaeUamXawvaFdaFeaFfaFgaFeayoaFeaFiaFeaFjayZaFkaFlaFmaBdaFnaFoaFpaFqaFraFsaFtaFuaFuaFuaFuaFvaFwaFuaFuaFxaFyaFzaFAaBpaFBaFCaFDaFEaFFaFEaFGaFHaEfaEfaFIaEfaFJaFKaFLaEfaEiaFMaEiaFNaFOaFPaFQaFRaFSaFTaFUaFVaFWaFXaFYaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFZaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDcarrarrctiarraDbarraDbctaaDbarraDbarraCXaDeavMaBGaGcaAvaAvaGdaGeaGfaGgaAvayuayuayuayuaGhazEaAzaGiayuaGjaGkaBYaBYaBYaFhaBYaBYaBYaGmaAEaaaazNazNaGnaGoaGnazNazNaaaaxoaxuaxvaGpaGqaGraGsaGtaxvapNaGuaxKaGvaEXaDJaDJaDJaEYaGwaxKaAgaAgaxKaCsaxKaGxaGyaGzacAamXacAacAacAacAacAaGAaGBayZaGlaAmayZaGDayZaGEayZaGFayZaGGaGHaFmaBdaGIaGJaGKaGLaGMaGMaGNaGMaGMaGOaSOaGPaGQauwauwauwauwaGRaGSaGTaGUaGVamlaGWaGWaGWaGWaGXaEfaGYaGZaHaaGCaHcaHdaEfaLyaHfaEiaHgaHhaHiaHjaFRaHkaEjaEkaCTaHlaHmaFYaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDcaDdaDdaDaarraDbarraDbarraDbarraDbarraCXaDeavMaHpaHqaHraHsaHsaHtaHuaxaaHvaHwaHxaHyayuaHzazEazEaHAayuaHBaHCaBYaHDaHEaOwaHGaHHaHIaHJaAEaaaaafaaaaHKaHLaHKaaaaafaaaaxoaxuaxvaDCaHMaHNaHOaHPaxvapNasJaxKaHQaHRaDJaDJaDJaHSaHTaxKaaaaaaaHUaHVaHWaHXaHYbzZaIaaIbaHUaaaaaaaIcaIdaIeaIfayZaIgaAmaAmaAmaCxaAmaAmaAmayZaBdaIhaIiaBdaBdaApaIjaIkaIkaIlaImaInaIkaIoaIpaIpaIqaIpaIraIpaIsaGWaGWaItaGWaGWaGWaGWaIuaIvaGWaGXaEfaGZaIwaIxaIyaIzaIAaEfaIBaICaIDaIEaIFaIGaIHaIIaIJaBAaIKaFVaFWaILaFYaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBFaBEaBEarsartarrarrarrarrarrarraCZarraCXaCYavMaBGaxaaIOaIPaIPaIPaIPaIPaIPaIPaIQaxaayuaIRaISaIRayuayuaITaIUaIVaADaADaADaADaIVaIWaIXaAEaIYaIZaIZaJaaJbaJaaIZaIZaJcaxoaJdaxvaJeaxvaJfaJfaJgaxvaJhaJiaxKaxKaxKaAgaDHaAgaxKaxKaxKaHUaHUaHUaJjaHYaHYaHYaHYaHYaJkaHUaHUaHUaIcaJlaIeaJmayZayZayZayZayZayZayZayZayZayZaJnaJoaJpaJqaJraJsaJtaJuaIkaJvaImaJwaJxaJwaIpaJyaJzaIpaJAaIpaJBaJCaJDaJEaJFaJFaJFaJGaJHaJIaGWaGXaEfaJJaIwaJKaIyaIzaJLaEfaJMaJNaJOaJPaJQaJRaJSaJTaJUaJVaJWaCTaHlaHmaFYaaaaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBFaBEaBEarsartarrarrarrarrarrarraCZarraCXaCYavMaBGaxaaIOaIPaIPaIPaIPaIPaIPaIPaIQaxaayuaIRaISaIRayuayuaITaIUaIVaADaADaADaADaIVaIWaIXaAEaIYaIZaIZaJaaJbaJaaIZaIZaJcaxoaJdaxvaJeaxvaJfaJfaJgaxvaJhaJiaxKaxKaxKaAgaDHaAgaxKaxKaxKaHUaHUaHUaJjaHYaHYaHYaHYaHYaJkaHUaHUaHUaIcaJlaIeaJmayZayZayZayZayZayZayZayZayZayZaJnaJoaJpaJqaJraJsaJtaJuaIkaJvaImaJwaJxaJwaIpaJyaJzaIpaJAaIpaJBaJCaJDaJEbifaJFaJFaJGaJHaJIaGWaGXaEfaJJaIwaJKaIyaIzaJLaEfaJMaJNaJOaJPaJQaJRaJSaJTaJUaJVaJWaCTaHlaHmaFYaaaaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBFaBEaDfaBEaDcaDcaDcaDcaBEaDgaEmaEnaqpaJZaxaaKaaHbaKbaKcaKbaKdarpaKeaKfaxaaKgaKhaKiaKiaKjaKiaKkaKlaKiaKiaKiaKiaKiaKiaKiaKmaKnaKoaKpaKqaKqaKraKsaKqaKqaKqaKtaKuaKvaKraKqaKqaKqaKwaGyaKxaHYaKyaKzaHZaIaaIaaIaaHXaHYaHYaKAaHYaHYaKBaKCaKDaKEaKFaKGaKHaHYaHYaKAaKJaKKaKLaKMaKNaKOaKPaKQaHYaKRaHYaBdaKSaKTaKUaJoaKVaKWaKXaKYaKZaLaaIkaLbaLcaLdaLeaLfaIpaLgaJzaLhaLiaIpaIpaLjaLkaLlaLmaLnaLoaLpaLqaLraGWaGXaEfaLsaLtaLuaLvaLwaLxaEfbhpaLzaEiaLAaLAaLAaLAaEiaLBaCRaJWaCTaBDaBDaBDaLCaLCaLCaLDaLDaLDaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaavMaylavMavMavMavMavMavMaylavMaaaaqpaAuaLEaKaaLFaLGaLHaLHaLIarpaLJaKfaLKaLLaKhaLMaLNaLOaLPaLQaLRaKiaKiaKiaKiaKiaKiaKiaKmaKiaKhaKiaKiaKiaLSaLTaLUaLUaLUaLUaLVaLUaLWaLUaLUaLXaKhaGyaHYaHYaHYaHYaHYaHYaHYaHYaHYaHYaHYaKAaHYaHYaLYaLZaMaaKIaMcaMbaMeaHYaHYaKAaHYaHYaHYaHYaHYaHYaHYaHYaHYaMgaHYaBdaKUaKUaKUaMhaMiaMjaMkaMlaMmaMnaIkaMoaImaMpaIkaIkaIpaMqaJzaMraLiaMsaIpaGWaGWaGWaGWaGWaGWaMtaMuaMvaGWaGXaEfaMwaGZaMxaMyaGZaMzaEfaEiaEiaEiaEiaEiaEiaMAaEiaEjaEjaEkaCTaMCaMDaBDaMEaMFaMGaMHaMIaLDaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaafaafaafaafaztaqpavMatBavMaNTaNUaNVaNWavMatBavMavMaqpaBGaxaaKaaMJaMKaLHaLHaLIarpaMLaKfaxaaLLaKhaKiaMMaMNaMNaMNaMOaMPaMQaMNaMRaMNaMNaMNaMSaMNaMTaMNaMNaMNaMUaMVaMWaMXaMXaMYaMZaNaaNbaNcaKicrraKhaGyaHYaNeaHYaNfaNfaNfaNfaNfaNfaNfaNfaNgaNfaNfaNfaNfaNfaNfaNfaNfaNfaNfaNfaNhaNfaNfaNfaNfaNfaNfaNfaNfaHYaHYaHYaBdaNiaNiaNiaNiaNiaNjaNkaJsaODaRdaIkaNmaNnaNoaIkaNpaIpaNqaNraNsaLiaNtaIpaGWaNuaNvaNwaNxaNwaNyaNzaNAaGWaGXaEfaNBaNBaNCaNDaNEaNEbqoaEfaNGaNHaNIaBDaNJaNKaNLaEjaEjaNMaNNaBDaNOaBDaNPaNQaNRaNRaNSaLDaLDaLDaLDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -6638,13 +6639,13 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarpavMbdyavMaBGaxaaxaaMBavMbdAavMayqbdBbdCbdCbdDbdEbdFbdGbdHbdIbdJbdKbdLbdMbdMbdNbdOaWAaWAaWAbdPbdQaWAaOcaOcaOcaOcbdRaVbbdSbdTaVbbdUaYoaYpbdVaZGaZGbdWbdXaYpbdYaYvbdZbaHbaHbeabebbecbedaHYaWUaYxbaObeebaPbaPbefbaRbaSbegbcWaXfbeibejbekbekbekbelbemaXkbdzbeobepbeqberbajbesbajbetaYHaXqaHYaHYbeubeubeubeubeubeubeubevbewbewbexbeybeybevbezbezbezbezbezbeAbeAbeBbeCbeAbeAbeAbeAbeDaXFbeEbeFbeGbeHbeIaXFaXFaXFbeJbeJbeKbeKbeKbeKbeKbeLbeMbeMbeMbeNbeMbeObePbeMbeMbeQbeRbeRbeRbeRbeSbeTbeUbeVaLDaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaztaqpazuatBavMaymaynbeWbeXavMatBazuavMaqpaztarpbdDbeYbeZbeZbeZbfabdJbfbbfcbfdbfdbfebffaWAaYdbfgbdPbfhaWAbfibfiaQEaQEbfjbfkbflbfmbflbflbfnaYpbfobfpaZGaZGbdXbfqbfraYvbfsbaHbaHbeabftbfubedaHYbfvaYxbfwaYAbfxbfybfzbfAbaSbfBaYxaafbfCbfDbfDbfDbfEbfFbfGaafaYHbfHbfIbfJbfKbajbfLbajbfMaYHaXqaHYbfNbeubfObotbfQbfRbfSbeubehbfVbfVbfWbfXbfXbfXbfYbfZbgabgbbezbgcbgdbgebgdbgdbgfbggbeAbeGbghbeGbeGbeGbgibeIbeIbgjbeIbgkbgkbeKbglbgmbgnbeKbgobgpbgobeKbgqbgrbgqbeRbgsbgtbgsbeRbgubgvbeRbgwbgxaLDaLDaLDaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafavMbdyavMavMavMavMavMavMbdAavMaafaafaafaaabdDbgybdDbgzbeZbgAbgBbcraVbbgCbgDbgEbgFbgGbgGbgGbgGbgGbgGbgHbgIbgJbfdbgKbgLaYpaYpaYpaYpaYpaYpbgMaYpaYpaYpbgNbgObgPbgQbgRbaHbaHbeabgSbecbedaHYbgTaYxbgUaYAaYAaYAaYAbfAbaSbgVaYxaafbfCbfDbgWbgXbgYbfDbgZaafaYHbhabbYbhbbhcbajbesbajbajaYHaXqaHYaHYbeubqqbhebhfbhgbhhbhibfXbhjbfXbhkbfXbfXbhlbfYbhmbhnbhobezbhqbgdbkibgdbhqbhrbgdbeAbhsbhsbhubhvbeGbhwbeIbhxbhybhzbhAbhAbeKbhBbhCbhDbhEbhFbhGbhHbeKbhIbhJbhKbeRbhLbhMbhLbhNbhObhObeRbhPbgxaaaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaacuzaaaaaaaafaafaaaaaaaaaaaaaaaaafaafaaabdDbhQbhRbhSbhTbhTbhUbhVaWPbhWaOcbhXbhYbhZbhZbhZbiabiabiabiabiabiabiabibbgNbicbidbiebifbigbihbiibijaYpbikbilbimbinbinbiobaHbaHbeabaHaYvbedaHYaWUbipbiqbirbisbitaYAbiubaSaYxaYxaafbfCbfDbgXbfDbgXbfDbgZaafaYHaYHbivbcZbiwbajbixbiybizaYHaXqaHYbiAbiBbiCbiDbqrbiFbrWbiHbfXbiIbiJbiKbiLbiLbiMbfYbiNbhnbiObezbhqbgdbkibiPbhqbiQbiRbeAbiSbiTbiUbiVbeGbgibeIbiWbiXbiXbiYbiZbjabjbbjcbjcbjcbjdbjebjfbeKbjgbhJbjhbeRbjibjjbjkbjlbjmbjnbeRbhPbgxbjobjobjobjoaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaacuzaaaaaaaafaafaaaaaaaaaaaaaaaaafaafaaabdDbhQbhRbhSbhTbhTbhUbhVaWPbhWaOcbhXbhYbhZbhZbhZbiabiabiabiabiabiabiabibbgNbicbidbiebigbjxbihbiibijaYpbikbilbimbinbinbiobaHbaHbeabaHaYvbedaHYaWUbipbiqbirbisbitaYAbiubaSaYxaYxaafbfCbfDbgXbfDbgXbfDbgZaafaYHaYHbivbcZbiwbajbixbiybizaYHaXqaHYbiAbiBbiCbiDbqrbiFbrWbiHbfXbiIbiJbiKbiLbiLbiMbfYbiNbhnbiObezbhqbgdbkibiPbhqbiQbiRbeAbiSbiTbiUbiVbeGbgibeIbiWbiXbiXbiYbiZbjabjbbjcbjcbjcbjdbjebjfbeKbjgbhJbjhbeRbjibjjbjkbjlbjmbjnbeRbhPbgxbjobjobjobjoaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaafaafaaabdDbjpbdDbjqbjrbjrbjsbdDbjtbjtaOcbjubjvbjubjubjubjvbjuaOcaOcaYpaYpaYpbjwbgNbjxbjxbjybjxbjxbjxbiibjxbjzbjAbjBbjCbjDbjEbjEbjEbjEbjFbjGbjHbjIbjJbjKbjLbjMbjNbjObjPaYAbfAbaSaYxaafaafbfCbfDbgYbjQbgWbjRbgZaafaafaYHbjSbjTaYHaYHaYHaYHbjUaYHbjVaHYaHYbeubjWbhebjXbhgbhhbjYbfXbjZbkabkbbkcbtmbkebezbkfbkgbkhbezbhqbgdbnZbkjbhqbkkbgdbeAbeGbeGbeGbeGbeGbgibeIbklbkmbknbkobkpbkqbkrbksbktbktbkubkvbkwbeKbkxbhJbkybeRbkzbkAbkBbkCbkDbkEbeRbhPbkFbkGbkHbkIbkHaaaaaaaafaaaaafaaaaafaaaaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaafaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaafaaabdDbkJbhRbkKbjrbkLbkMbdDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkNbkObkPbkQbkRbkSbkSbkTcuTbkSbkSbkUbkSbkVbkWbkXbkYbkZbecbecbecblaaYvblbaYvblcbldaKAbipbleblfblfblfblfblgblhbliaafaaabljblkbllbfDbfDblmbgZaaaaafblnbloblpblqblrblsblnbltblnbluaHYaHYbeublvbhectCblwblxbeublybjZbkablzblAbfXblBbezblCblDblEbezblFblGblHblIblJblKblLblMblNblOblNblNblNblPbeIblQbhyblRblSblTbkqblUblVblWblWblXblYblZbeKbmabgrbmbbeRbmcbmdbmebkCbhObmfbeRbhPbmgbmhbmibmibmibmibmibmibmjaafaaaaafaaaaaaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaafaaabdDbmkbhRbhRbhRbdDbdDbdDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkNbmlbjxbmmbmnbmobmnbmncuUbmnbmnbmpbmnbmqbmrbmsbmtbmubmvbecbmwbaHbmxbmybmzbedbmAbmBbipbipblibmCbmDbmEbmFbmGbliaaaaaabfCbmHbmIbmJbmIbmKbgZaaaaaablnbmLbmMbmNblnbmOblnbltblnbluaHYaHYbeubmPbhebjXbmQbmRbeubmSbmTbmUbmVbmWbfXbmXbezbfYbmYbmZbezbeAbnabeAbeBbnbbncbncbncbncbncbncbncbncbgibeIbndbkmbknbnebnfbngbnhbnibnibniblXbkvbnjbnkbnlbnmbnnbnobnpbnqbnpbnrbhObnsbeRbntbnubnubnubnubnubnubnubnvbgxbjobjobjoaaaaaaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabnwbkNbkNbnxbjxbjxbjxbnybnzbnzcuVbjxbjxbjxbjxbjzbnAbeabnBbnCbnDbnEbnFbnGbnHbaHbmzbnIbnJbnKbnLbnMbnNbnObnPbnQbnRbnSbliaafaaabfCbnTbnUbnUbnUbnVbgZaaaaafblnbnWbnXbnYblnbRIblnbltblnboaaHYaKJbobbocbodboebofbogbeubohbjZbhkbmVboibojbmSbmSbokbolbombonboobopbfXboqborbosbvtboubovbowboxboybncbgibeIbozboAboBboCboDbeKboEbnibniboFboGbkvboHboIboJboKboLbnoboMboNbhOboOboPboQbeRboRbrVbrVbrVbrVbrVbrVbrVbhPbgxboTboUbjobjoaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaboVboWboVboXboYbjxbjxbiibjxbjxcuWbjxbjxboZaYpaYpbpabpbbjEbpcbpdbecbpebaHbpfbaHbpgblubmAbphbpibpjbpkbplbpmbpnbpobppbliaaaaaabfCbpqbprbpsbprbptbgZaaaaaabpubpvbpwbpubpubpubpubpxbpubpyaKAaKAbeubeubpzbpAbpBbpCbeubpDbjZbpEbpFbpFbpFbpFbpFbpGbpHbpIbpJbpFbpKbpFbpLbpMbosbpNbpObpPbpQbpRbpSbncbpTbpUbpVbpWbpWbpXbpYbpZbqabqbbqbbqcbqdbkvbqebqfbqgbqhbqibnobnobqjbqkbqlbqmbnobeRbrVbrVbrXbenbrZbfUbsabrVbqsbqtbqubqvbqwbjoaaaaafaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqxbqybqxbqzbjxbjxbjxbnybnzbnzcuVbjxbjxbqAbqBaYpbqCbaHbaHbqDbqEbqFbqGbaHbaHbaHbpgblubqHaHYbpibpjbqIbqJbqKbqLbqMbqNbliaafaafbqObqPbqQbqRbqSbqTbqUaafaafbqVbqWbqXbqYbqZbrabrbbrcbpubrdaHYaHYbmVbrebrfbrgbrhbribrjbrkbrlbrmbrnbrnbrnbrnbrnbrobrpbrqbrrbrsbrtbrubrvbrwbosbrxbrybrzbrAbrBboybncbgibeIbrCbrDbrEbrFbrFbeKbrGbrHbrIbnkbrJbkvbrKbnkbrLbrMbrNbrObrPbrQbrRbrSbrTbrUbhtbthbtgbtjbtibtibtibtlbtkbqnbgxbsdbsebsebjoaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaboVboWboVboXboYbjxbjxbiibjxbjxcuWbjxbjxboZaYpaYpbpabpbbjEbpcbpdbecbpebaHbpfbaHbpgblubmAbphbpibpjbpkbplbpmbpnbpobppbliaaaaaabfCbpqbprbpsbprbptbgZaaaaaabpubpvbpwbpubpubpubpubpxbpubpyaKAaKAbeubeubpzbpAbpBbeubeubpDbjZbpEbpFbpFbpFbpFbpFbpGbpHbpIbpJbpFbpKbpFbpLbpMbosbpNbpObpPbpQbpRbpSbncbpTbpUbpVbpWbpWbpXbpYbpZbqabqbbqbbqcbqdbkvbqebqfbqgbqhbqibnobnobqjbqkbqlbqmbnobeRbrVbrVbrXbenbrZbfUbsabrVbqsbqtbqubqvbqwbjoaaaaafaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqxbqybqxbqzbjxbjxbjxbnybnzbnzcuVbjxbjxbqAbqBaYpbqCbaHbaHbqDbqEbqFbqGbaHbaHbaHbpgblubqHaHYbpibpjbqIbqKbqJbqLbqMbqNbliaafaafbqObqPbqQbqRbqSbqTbqUaafaafbqVbqWbqXbqYbqZbrabrbbrcbpubrdaHYaHYbmVbrebrfbrgbrhbribrjbrkbrlbrmbrnbrnbrnbrnbrnbrobrpbrqbrrbrsbrtbrubrvbrwbosbrxbrybrzbrAbrBboybncbgibeIbrCbrDbrEbrFbrFbeKbrGbrHbrIbnkbrJbkvbrKbnkbrLbrMbrNbrObrPbrQbrRbrSbrTbrUbhtbthbtgbtjbtibtibtibtlbtkbqnbgxbsdbsebsebjoaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabnwbkNbkNbsfbjxbjxbjxbiibjxbjxcuWbjxbjxbqAbsgaYpbshbsibjEbsjbskbslbeabaHbaHaZhbmzbsnbqHaHYbpibpjblibsobspbsqbsrbssbliaaaaaaaafbfCbstbsubstbgZaafaaaaaabqVbsvbswbsxbsybszbszbsAbsBbsCaHYaHYbmVbsDbfXbsEbsFbsGbsHbsGbsIbsJbsKbsLbsKbsKbsKbsMbsNbfXbhkbsObsPbsPbsQbsRbosbosbsSbsTbsUbpRboybncbeHbeIbsVbsVbsVbsVbsVbeKbnkbnkbnkbnkbsWbsXbsYbnkbsZbtabtbbtcbtcbtcbtcbtdbtebtfbrYbuAbuzbuCbuBbuBbuDbwabrVbsbbgxbsdbsebseabtaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtobqxbqybqxbmlbtpbjxbjxbtqbjxbtpcuWbjxbjxbqAbtraYpbtsbttbnGbtubtvbecbpbbjEbtwbtxbmzbsnbqHaWUbpibtyblibtzbtAbtBbtCbmGbliaaaaaaaafbtDbtEbnUbtFbtGaafaaaaaabqVbtHbtIbtJbtKbtLbtMbtNbpubtOaHYaHYbmSbmSbtPbtQbpGbtRbtSbtTbtUbtVbtWbtXbtWbtXbtWbtXbtWbtXbtYbtZbsPbuabubbucbudbuebufbugbuhbuibujbncbukbulbumbnmbunbhJbhJbuobhJbhJbupbuqburbusbutbtcbuubuvbuwbuxbuxbuxbuybuybuybuybuybwcbwbbwebwdbwebwfbwebrVbsbbgxbwgbqvbwhbjoaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabuFbuGbuFbuHbuIbuHbuHbuHbuHbuHcuXbuKbjxbqAbuLaYpbuMbaHbuNbuObuPbuQbuRbuRbuRbuQbuQbuSbqHaJkbuTbpjblibuUbuVbuWbuXbuYbliaaaaaaaafbuZbvabqRbvbbvcaafaaaaaabqVbvdbvebvfbvgbtLbtMbtNbpubvhaHYaHYbvibvjbvkbvlbvmbvnbtXbvobvpbvqbvrbvsbDibvubvvbvubFzbtXbhkbjZbsPbvxbvybvzbvAbvBbvCbvDbvEbvEbvFbvGbvHbvIbvJbvKbvLbvMbvNbvMbvMbvObvMbvMbvPbvQbvRbvRbvSbvTbqibuxbvUbvVbvWbvXbvYbambuybxjbxibzCbyAbzDbxibAVbrVbsbbgxcjgbsebsebjoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -6657,8 +6658,8 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaelctjaekctjaejaaaaafaaabwlbwlbDtbxrbDubDvbDwbDxbDybDybDzbDAbDBbDCaafbDDbDEbDFbDGbDHbDIbDJbDIbDKbDIbDIbDIbBdbDLbDMbDNbBhbDObDPbDQbDRbDSbCvbDTbBjbBhbDUbDVbDWbDXbDYbDZbEabEbbCCbEcbCCbxQbEdbEebEfbEgbtXbEhbEibCCbCCbEjbEkbmSbmSbmSbmSbmSbElbEmbpGbEnbEobEpbBKbEqbAwbzibgibBMbCWbCWbCWbCWbCWbCWbCWbBMbErbEsbEtbEubEvbBNbEwbExbEybEzbEAbEBbECbEDbEDbEDbEDbEEbEFbEGbDnbjobvZbEIbEJbEJbEKbELbEMaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbENbEObENaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafNcuCctMcuCafNbERbERbERbwlbESbxrbETbEUbEVbEWbwlbBcbEXbBcbBcbEYbEZaaabFabFbbFcbFdbDIbDIbFebDIbFfbFgbFhbDIbBdbDLbFibFjbBhbFkbFlbFmbFnbFobCvbFpbBjbzibFqbFrbFsbFrbFtbFubtXbFvbCIbFwbCIbFxbtSbFybCJbFAbtXbFCbCCbCCbCCbCCbGNbmSbPIbFEbFFbFGbBEbFHbvlbFIbBKbBKbFJbFKbFLbFMbFNbBMbCWbCWbCWbCWbCWbCWbCWbBMbFObFPbFQbFRbFSbFTbFUbFVbtbbFWbFXbEDbFYbEDbEDbEDbEDbEDbEDbEDbDnbFZbDpbGbbGcbGdbGebGfbEMaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbEObENbGgbENbEOaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaekajxctyajxaekbERbGhbGibwlbGjbxrbGkbxrbxrbEWbwlbGlbGmbGnbBcbEYbEZaafbFabGobGpbGqbGrbGsbGrbGrbGtbGubGrbGrbGvbGwbGxbGybBhbGzbBhbBhbBhbBhbGAbGBbGCbGDbGEbGFbGGbGHbGIbGIbtXbGJbGKcltbGMbGQbtXbGObGPbGSbtXbGRbDqbEHbDrbFDbGWbmSbGXbGYbpFbGZbHabHbbHcbCRbHdbAQbBKbHebAwbzibgibBMbBMbHfbCWbCWbHgbHfbBMbBMbHhbHibHjbHkbHlbBNbHmbHnbtbbHobHpbHqbHqbHrbHsbHtbHqbHubHvbHwbHxbHybGabHAbHBbHCbHDbHEbEMaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbHFbEObHGbHHbHIbEObHFaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafNajxajxajxctLbHKbxrbxrbHLbGjbxrbxrbxrbxrbEWbwlbHMbGnbHNbBcbEYbEZaaabFabHObHPbHQbDIbDIbHRbDIbHSbHTbHUbHVbBdbHWbHXbHYbHZbIabIbbIbbIbbIbbIbbIcbIbbIdbIebIfbIgbIhbIibIjbtSbtSbtSbtSbtSbtSbtSbtSbtSbtSbMNbMNbMNbMNbMNbMNbOnbOCbmSbmSbmSbmSbIlbImbhjbAwbAwbAwbAwbAwbAwbzibgibBMbInbIobIpbIqbIrbIsbInbItbHhbHibHjbIubIvbIwbIxbIybuwbIzbDdbIAbIAbIBbICbIDbIEbEDbEDbIFbDnbIGbGLbIIbDdbIJbIKbIKbDdaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbEObEObILbIMbIMbIMbINbEObEOaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaekctyctyctyaekbERbIObIPbIQbIRbxrbxrbISbITbIUbwlbBcbBcbBcbBcbEYbDCaafbIVbDEbIWbDGbIXbDIbIYbDIbDIbDIbDIbDIbBdbDLbIZbJabJbbJcbJcbJcbJcbJcbJcbJdbJebJfbJgbJhbJibJjbJkbJlbJmbJnbJmbJmbJmbJmbJmbJmbJmbJmbJmbJmbJmbJmbJmbJobJpbmSbGXcqlbBDbJrbBEbJsbJtbJubJvbJvbJwbJxbJgbJybJzbBMbJAbJBbJCbJDbJEbJFbJGbItbItbItbItbItbItbJHbJIbJJbJKbJLbDdbDnbDnbDnbDnbDnbDnbJMbEDbEDbDnbjobvZbgxbDdbJNbJObJPbJQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabJRbJSbJRbIMbJTbIMctxctlbENaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafNajxajxajxctLbHKbxrbxrbHLbGjbxrbxrbxrbxrbEWbwlbHMbGnbHNbBcbEYbEZaaabFabHObHPbHQbDIbDIbHRbDIbHSbHTbHUbHVbBdbHWbHXbHYbHZbIabIbbIbbIbbIbbIbbIcbIbbIdbIebIfbIgbIhbIibIjbtSbtSbtSbtSbtSbtSbtSbtSbtSbtSbMNbMNbMNbMNbMNbMNbOnbOCbmSbmSbmSbmSbIlbImbhjbAwbAwbAwbAwbAwbAwbzibgibBMbInbIobIpbIqbIrbIsbInbItbHhbHibHjbIubIvbIwbIxbIybuwbIzbDdclFbIAbIBbICbIDbIEbEDbEDbIFbDnbIGbGLbIIbDdbIJbIKbIKbDdaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbEObEObILbIMbIMbIMbINbEObEOaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaekctyctyctyaekbERbIObIPbIQbIRbxrcuQbISbITbIUbwlbBcbBcbBcbBcbEYbDCaafbIVbDEbIWbDGbIXbDIbIYbDIbDIbDIbDIbDIbBdbDLbIZbJabJbbJcbJcbJcbJcbJcbJcbJdbJebJfbJgbJhbJibJjbJkbJlbJmbJnbJmbJmbJmbJmbJmbJmbJmbJmbJmbJmbJmbJmbJmbJobJpbmSbGXcqlbBDbJrbBEbJsbJtbJubJvbJvbJwbJxbJgbJybJzbBMbJAbJBbJCbJDbJEbJFbJGbItbItbItbItbItbItbJHbJIbJJbJKbJLbDdbDnbDnbDnbDnbDnbDnbJMbEDbEDbDnbjobvZbgxbDdbJNbJObJPbJQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabJRbJSbJRbIMbJTbIMctxctlbENaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafNajZctzctAafNbERbERbERbwlbwlbERbERbERbwlbwlbwlaaaaaaaaabJYbJZbEZaaaaaaaafaaabBdbKabKbbKcbDIbKdbKebKfbKgbKhbKibKjbKkbKlbKmbKnbKobKpbKqbKmbKmbKmbKmbKmbKrbKsbKmbKmbKtbKmbKubKmbKmbKmbKmbKmbyebyebyebyebyebyebyebyebKvbKwbmSbKxbKybKzbKAbKBbKCbKDbKEbKFbKFbKGbKFbKFbKHbKIbBMbKJbKKbKLbKKbKMbKKbKNbKObKPbKQbKRbKSbKTbKUbyqbHnbqibKVaafbKWbKXbKYbKZbLabKZbLbbLcbLdbDnbLebsbbLfbDdbDdbDdbDdbDdaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbEObEObLgbIMbIMbIMbLhbEObEOaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeYctjctkctjaeWaaaaaaaaaaafaaIaafaaaaafaaIaafaaaaaaaaaaafbJYbEYbEZaafaafaafaafbBdbBdbBdbBdbBdbBdbBdbBdbBdbBdbLjbLkbLlbLmbKmbKnbKobKpbKqbLnbLnbLobLpbLqbLrbLsbLtbLubLvbLwbLxbLybLzbLAbLBaVQbLDbLDbLDbLDbLDbLDbLEbyebKvbLFbLGbLGbLGbLGbLGbLHbLIbLJbLGbLGbLGbLGbLGbLGbLFbLKbLLbLMbLNbLObLNbLPbLQbLRbLSbLSbLSbLSbLSbLSbLTbLUbLVbqibKVaafbKWbLWbLWcuEbLYcuFbMabMbbMcbDnbMdbsbbkFbjobMebMfbjoaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaafaafbHFbEObMgbMhbMibMjbHFaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaIaafaaaaafaaIaafaaaaaaaaaaaabJYbEYbEZaaaaaaaaaaafbMkbMlbMlbMmbMnbMobMobMpbMpbMkbDLbMqbKkbMrbKmbMsbMtbMtbMubMvbLnbMwbMxbMybMzbMAbMBbMCbMDbMEbMFbMGbMFbMHbMIbMJaafbMKbMKbMKbMKbMKbMLbyebKvbMMcqzbMObMPbMQbLGbMRbMSbMTbLGbMUbMVbMWbMVbMUbLFbMXbBMbKKbKKbKKbMYbKKbKKbMZbNabNbbNbbNcbNbbNbbNdbNebNfbNgbKVaafbKWbLWbNhbKZbNibKZbNjbNkbNlbDnbsebsbbkFbjobsebsebjoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbEObENbNmbENbMjaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -6688,7 +6689,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaabZXchEbZZaafbZXchEbZZaafbZXchEbZZaaaaafaafaafaaaaaaaaaaagcjucjvcjubGnbGnbBcaaaaaachGcjwcjxcjycjzcjAchGaaabBccaXbGnciBchIceKciCciCciDceKcjBcgccjCcjDcjEcjFcjCcgccjCcjCcgccjGcjHcjIciIcjJcjKcjLceScjMceKbMKciVciWciVbMKciXciYciXbMKciZcjacjbbMKaafaafaafaafcnDaafcdjcdjcdjcjQcjRcjScvfcjUcjRaafaaaaafcfDaaaaaaaaaaaaaaaabtaafaafaafaafaafaafaaaaaaaaaaaaaaaaaabXkbsecjWbjocjXbsebjocjYbmhbmhcjZbmhbmibmibmickackackbchBckcckdckechBaafaaaaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaafbZXchEbZZaaabZXchEbZZaaabZXchEbZZaafaafaaaaafaafaaaaaaaagbBcbBcbBcbBcbGnbBcaafaafchGckfckgckhckickfchGaafbBcceKckjckkcklceKciCciDciDceKckmcknckockpceSckqckrcksckrckrcktckuckvckwckxckyckyckyckzckAceKbMKciVcjNciVbMKciXcjOciXbMKcjbcjPcjbbMKaaaaaaaafaafaaaaaaaaaaaaaaackBcjRckCckDcuScjRaafaafaaaaaaaaaaaaaaaaaaaaaabtaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaabXkckFbsebWwcgEbsebjobjobjobjobjobsebjoaafaaaaaaaaaaafckGckGckHckGckGaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaabZXckIbZZaaabZXckIbZZaaabZXckIbZZaaaabfaaaaaaaafaafaaaaaaaaaaaaaaabJYbGnbJYaaaaaachGccNckKckLckMckNchGchGchGceKckOckkckPceKceKceKceKceKckQceRckRciHceSceRceRceRckSckTckUceSceSciHceRckVceRceRckWckXceKbMKbMKbMKbMKbMKbMKbMKbMKbMKbMKbMKbMKbMKaaaaafaafaaaaaaaaaaaaaaaaaackYcjRcjScvgcjUcjRaaaaafaaaaaaaaaaaaaaaaaaaaaabtaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaabXkbsebuEbjoclabsebsebsebsebsebsebsebjoaafaaaaaaaaaaafaaackGclbckGaaaaafaaaaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaaaafaaaaafaaaaafaaaaafaaaaafaaaaafaaaabfaaaaaaaaaaafaafaaaaaaaaaaaabJYbGnbJYaaaaaachGclccldcleclfclgclhclicljclhclkcllclmclncloclpclqclrclschLcqqcluclvclwclxclyclzclyclzclAclBclCchLchLclDchLclEclFceKceKceKceKceKcgccgccgccgcceKaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaackYcjRclGclHclIclJaaaaafaafaafaafaaeaafaaaaaaaafaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaabXkbXkbXkbjocipbjobjoclKclLbLebMdbjobjoaafaaaaaaaaaaafaaackGckHckGaaaaafaaaaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaaaafaaaaafaaaaafaaaaafaaaaafaaaaafaaaabfaaaaaaaaaaafaafaaaaaaaaaaaabJYbGnbJYaaaaaachGclccldcleclfclgclhclicljclhclkcllclmclncloclpclqclrclschLcqqcluclvclwclxclyclzclyclzclAclBclCchLchLclDchLclEcviceKceKceKceKceKcgccgccgccgcceKaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaackYcjRclGclHclIclJaaaaafaafaafaafaaeaafaaaaaaaafaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaabXkbXkbXkbjocipbjobjoclKclLbLebMdbjobjoaafaaaaaaaaaaafaaackGckHckGaaaaafaaaaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabfabfabfabfabqabfabfabfabfabfabfabfabfabfaaaaaaaaaaaaaafaafaaaaaaaafbJYbGnbJYaafaafchGclMclNclOclPclQclRclSclTclRclUclVclWclXclYclZcmaclZcmbcmccmdcmecmfcmgcmhcmicmjcmkcmjcmlcmmcmnchPcmecmochPcmpcmqchPcmrceRcmsceKcmtcgccuOcuLcuLcuNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaackYcjRcjRcmvcjRcjRaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaafcmwaafbjobjobXkbXkbjobjoaaaaafaaaaaaaaaaafaaaaaacmxaaaaaaaafaaaaafaaaaaaaafaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaabJYbGnbJYaaaaaachGcmycmzcmAcmBcmCchGcmDcmEchGcmFceRcmGciHceScmHcjCcmIciIcmJcmKcmLcmLcmLcmMcmNcmOcmPcmQcmRcmMcmScmSckUceRckVciIcmTcmUcmVchLcmWcmXcgUcmXcuGcuJcuIcuHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaackYaagcjRcmZcjRcnaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaeaaaaaaaaaaaaaaaaafcnbaafaaaaafaaaaaaaafaaaaaaaafaaaaaaaaaaafaaaaaacmxaaaaaaaafaaaaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbBcbBcbRAbBcbBcaaachGcnccndcnechGchGchGchGchGceKcnfceRcmGcngcnhcnicjCcnjciIcnkcnlcnmcnncnoceKcnpcnqcnrcnscntceKcnucnvcnvcnlcnkciIcnwcnxceSceRcnyceKcnzcgccuKcuLcuLcuMaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaacfDaagcnBcnCcnBaagaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaafcnDaafaaaaafaaaaaaaafaaaabfabfabfabqaafaafaafaafcmxaafaafaafaafaafabqabfabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/_maps/map_files/generic/z2.dmm b/_maps/map_files/generic/z2.dmm index 8ad1bf4fff5..da78e2558b4 100644 --- a/_maps/map_files/generic/z2.dmm +++ b/_maps/map_files/generic/z2.dmm @@ -223,7 +223,7 @@ "eo" = (/obj/structure/flora/kirbyplants,/turf/simulated/floor/plasteel/red/side{dir = 9},/area/centcom/evac) "ep" = (/obj/structure/rack,/obj/item/weapon/gun/projectile/shotgun/toy/crossbow,/obj/item/toy/foamblade,/turf/simulated/floor/plasteel/red/side{dir = 1},/area/centcom/evac) "eq" = (/turf/simulated/floor/plasteel/red/side{dir = 1},/area/centcom/evac) -"er" = (/obj/structure/rack,/obj/item/weapon/storage/fancy/crayons,/obj/item/toy/sword,/turf/simulated/floor/plasteel/red/side{dir = 1},/area/centcom/evac) +"er" = (/obj/structure/rack,/obj/item/weapon/storage/crayons,/obj/item/toy/sword,/turf/simulated/floor/plasteel/red/side{dir = 1},/area/centcom/evac) "es" = (/turf/indestructible/fakeglass{icon_state = "fakewindows"; dir = 1},/area/centcom/evac) "et" = (/turf/simulated/floor/plasteel/black,/area/centcom/evac) "eu" = (/turf/simulated/floor/plasteel/darkwarning{dir = 4},/area/centcom/evac) @@ -271,7 +271,7 @@ "fk" = (/obj/machinery/door_control{desc = "A remote control switch for port-side blast doors."; icon_state = "doorctrl0"; id = "CentComPort"; name = "Security Doors"; pixel_y = 28; req_access_txt = "101"},/obj/structure/showcase/fakeid,/turf/simulated/floor/plasteel/black,/area/centcom/control) "fl" = (/obj/structure/table/reinforced,/obj/item/weapon/pen,/turf/simulated/floor/plasteel/red/side{dir = 2},/area/centcom/evac) "fm" = (/obj/structure/table/reinforced,/obj/item/toy/carpplushie,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel/red/side{dir = 6},/area/centcom/evac) -"fn" = (/obj/structure/closet/secure_closet/cargotech,/turf/simulated/floor/plasteel/loadingarea,/area/centcom/supply) +"fn" = (/obj/structure/closet/wardrobe/cargotech,/turf/simulated/floor/plasteel/loadingarea,/area/centcom/supply) "fo" = (/obj/structure/closet,/turf/simulated/floor/plasteel/warning/corner{dir = 1},/area/centcom/supply) "fp" = (/obj/structure/closet,/turf/simulated/floor/plasteel,/area/centcom/supply) "fq" = (/obj/structure/closet/secure_closet/quartermaster,/turf/simulated/floor/plasteel/loadingarea,/area/centcom/supply) @@ -414,7 +414,7 @@ "hX" = (/obj/structure/filingcabinet,/turf/simulated/floor/plasteel/shuttle,/area/centcom/evac) "hY" = (/obj/structure/stool/bed/chair{dir = 4; name = "Prosecution"},/turf/simulated/floor/plasteel/shuttle,/area/centcom/evac) "hZ" = (/obj/structure/stool/bed/chair/office/dark,/obj/effect/landmark{name = "Emergencyresponseteam"},/turf/simulated/floor/plasteel/black,/area/centcom/ferry) -"ia" = (/obj/machinery/vending/cigarette{products = list(/obj/item/weapon/storage/fancy/cigarettes/cigpack_syndicate = 7, /obj/item/weapon/storage/fancy/cigarettes/cigpack_uplift = 3, /obj/item/weapon/storage/fancy/cigarettes/cigpack_robust = 2, /obj/item/weapon/storage/fancy/cigarettes/cigpack_carp = 3, /obj/item/weapon/storage/fancy/cigarettes/cigpack_midori = 1, /obj/item/weapon/storage/box/matches = 10, /obj/item/weapon/lighter/random = 4, /obj/item/weapon/storage/fancy/rollingpapers = 5)},/turf/simulated/floor/plasteel/black,/area/centcom/ferry) +"ia" = (/obj/machinery/vending/cigarette{products = list(/obj/item/weapon/storage/fancy/cigarettes/cigpack_syndicate = 7, /obj/item/weapon/storage/fancy/cigarettes/cigpack_uplift = 3, /obj/item/weapon/storage/fancy/cigarettes/cigpack_robust = 2, /obj/item/weapon/storage/fancy/cigarettes/cigpack_carp = 3, /obj/item/weapon/storage/fancy/cigarettes/cigpack_midori = 1, /obj/item/weapon/storage/box/matches = 10, /obj/item/weapon/lighter/greyscale = 4, /obj/item/weapon/storage/fancy/rollingpapers = 5)},/turf/simulated/floor/plasteel/black,/area/centcom/ferry) "ib" = (/obj/structure/reagent_dispensers/water_cooler,/turf/simulated/floor/plasteel/black,/area/centcom/ferry) "ic" = (/obj/machinery/vending/coffee,/turf/simulated/floor/plasteel/black,/area/centcom/ferry) "id" = (/obj/structure/flora/kirbyplants,/turf/simulated/floor/plasteel/black,/area/centcom/ferry) @@ -736,7 +736,7 @@ "oh" = (/obj/structure/stool/bed/chair/comfy/black{dir = 1; icon_state = "comfychair"; name = "pilot's chair"; tag = "icon-comfychair (NORTH)"},/turf/simulated/floor/plasteel/shuttle{icon_state = "floor4"},/area/shuttle/syndicate) "oi" = (/turf/simulated/floor/plating/snow,/turf/simulated/floor/plating/snow/gravsnow/corner{dir = 8},/area/syndicate_mothership) "oj" = (/obj/machinery/washing_machine,/turf/simulated/floor/plasteel/freezer{dir = 2},/area/syndicate_mothership) -"ok" = (/obj/item/weapon/storage/fancy/crayons,/obj/structure/table,/obj/item/weapon/storage/fancy/crayons,/turf/simulated/floor/plasteel/freezer{dir = 2},/area/syndicate_mothership) +"ok" = (/obj/item/weapon/storage/crayons,/obj/structure/table,/obj/item/weapon/storage/crayons,/turf/simulated/floor/plasteel/freezer{dir = 2},/area/syndicate_mothership) "ol" = (/obj/structure/shuttle/engine/propulsion{icon_state = "burst_l"},/turf/simulated/floor/plating,/area/shuttle/supply) "om" = (/obj/structure/shuttle/engine/propulsion,/turf/simulated/floor/plating,/area/shuttle/supply) "on" = (/obj/structure/shuttle/engine/propulsion{icon_state = "burst_r"},/turf/simulated/floor/plating,/area/shuttle/supply) @@ -772,7 +772,7 @@ "oR" = (/turf/simulated/floor/plating,/area/centcom/supply) "oS" = (/turf/simulated/wall/shuttle{icon_state = "swall_s5"; dir = 2},/area/shuttle/supply) "oT" = (/turf/indestructible/fakeglass{icon_state = "fakewindows"; dir = 9},/area/centcom/evac) -"oU" = (/obj/structure/rack,/obj/item/weapon/storage/fancy/crayons,/obj/item/toy/sword,/turf/simulated/floor/plasteel/green/side,/area/centcom/evac) +"oU" = (/obj/structure/rack,/obj/item/weapon/storage/crayons,/obj/item/toy/sword,/turf/simulated/floor/plasteel/green/side,/area/centcom/evac) "oV" = (/obj/structure/flora/kirbyplants,/turf/simulated/floor/plasteel/green/side{dir = 10},/area/centcom/evac) "oW" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plasteel/green/side,/area/centcom/evac) "oX" = (/obj/structure/rack,/obj/item/weapon/gun/projectile/shotgun/toy/crossbow,/obj/item/toy/katana,/turf/simulated/floor/plasteel/green/side,/area/centcom/evac) @@ -803,7 +803,7 @@ "pw" = (/obj/machinery/computer/shuttle/syndicate/recall,/turf/simulated/floor/plasteel/bar{dir = 2},/area/syndicate_mothership) "px" = (/obj/machinery/vending/coffee,/turf/simulated/floor/plasteel/bar{dir = 2},/area/syndicate_mothership) "py" = (/obj/item/device/paicard,/turf/simulated/floor/plasteel/grimy,/area/syndicate_mothership) -"pz" = (/obj/machinery/vending/cigarette{products = list(/obj/item/weapon/storage/fancy/cigarettes/cigpack_syndicate = 7, /obj/item/weapon/storage/fancy/cigarettes/cigpack_uplift = 3, /obj/item/weapon/storage/fancy/cigarettes/cigpack_robust = 2, /obj/item/weapon/storage/fancy/cigarettes/cigpack_carp = 3, /obj/item/weapon/storage/fancy/cigarettes/cigpack_midori = 1, /obj/item/weapon/storage/box/matches = 10, /obj/item/weapon/lighter/random = 4, /obj/item/weapon/storage/fancy/rollingpapers = 5)},/turf/simulated/floor/plasteel/bar{dir = 2},/area/syndicate_mothership) +"pz" = (/obj/machinery/vending/cigarette{products = list(/obj/item/weapon/storage/fancy/cigarettes/cigpack_syndicate = 7, /obj/item/weapon/storage/fancy/cigarettes/cigpack_uplift = 3, /obj/item/weapon/storage/fancy/cigarettes/cigpack_robust = 2, /obj/item/weapon/storage/fancy/cigarettes/cigpack_carp = 3, /obj/item/weapon/storage/fancy/cigarettes/cigpack_midori = 1, /obj/item/weapon/storage/box/matches = 10, /obj/item/weapon/lighter/greyscale = 4, /obj/item/weapon/storage/fancy/rollingpapers = 5)},/turf/simulated/floor/plasteel/bar{dir = 2},/area/syndicate_mothership) "pA" = (/obj/machinery/door/airlock{icon = 'icons/obj/doors/Dooruranium.dmi'; name = "Engine Room B"},/turf/space,/area/wizard_station) "pB" = (/obj/machinery/vending/cola,/turf/simulated/floor/plasteel/bar{dir = 2},/area/syndicate_mothership) "pC" = (/obj/structure/bookcase,/obj/item/weapon/book/manual/wiki/engineering_hacking,/obj/item/weapon/book/manual/robotics_cyborgs,/obj/item/weapon/book/manual/engineering_singularity_safety,/obj/item/weapon/book/manual/detective,/turf/simulated/floor/plasteel/grimy,/area/syndicate_mothership) @@ -829,15 +829,15 @@ "pW" = (/turf/simulated/floor/plating/beach/water,/area/centcom/holding) "pX" = (/turf/simulated/floor/plating/beach/coastline,/area/centcom/holding) "pY" = (/obj/item/clothing/head/collectable/paper,/turf/simulated/floor/plating/beach/coastline,/area/centcom/holding) -"pZ" = (/obj/structure/rack,/obj/item/weapon/storage/fancy/crayons,/obj/item/weapon/gun/projectile/shotgun/toy/crossbow,/turf/simulated/floor/plasteel/cafeteria,/area/centcom/holding) +"pZ" = (/obj/structure/rack,/obj/item/weapon/storage/crayons,/obj/item/weapon/gun/projectile/shotgun/toy/crossbow,/turf/simulated/floor/plasteel/cafeteria,/area/centcom/holding) "qa" = (/obj/structure/shuttle/engine/heater,/turf/simulated/floor/plating/lava,/area/wizard_station) -"qb" = (/obj/structure/rack,/obj/item/weapon/storage/fancy/crayons,/obj/item/weapon/gun/projectile/automatic/toy/pistol,/turf/simulated/floor/plasteel/cafeteria,/area/centcom/holding) +"qb" = (/obj/structure/rack,/obj/item/weapon/storage/crayons,/obj/item/weapon/gun/projectile/automatic/toy/pistol,/turf/simulated/floor/plasteel/cafeteria,/area/centcom/holding) "qc" = (/obj/structure/window/reinforced{color = "#008000"; dir = 1},/turf/simulated/floor/plating/lava,/area/wizard_station) "qd" = (/obj/docking_port/stationary/transit{dheight = 0; dir = 2; dwidth = 11; height = 22; id = "whiteship_transit"; width = 35},/turf/space/transit/horizontal,/area/space) "qe" = (/obj/item/toy/beach_ball,/turf/simulated/floor/plating/beach/sand,/area/centcom/holding) "qf" = (/obj/structure/rack,/obj/item/clothing/head/that,/obj/item/clothing/under/suit_jacket,/obj/item/clothing/tie/waistcoat,/turf/simulated/floor/plasteel/cafeteria,/area/centcom/holding) "qg" = (/obj/structure/cult/forge{desc = "A engine used in powering the wizards ship"; name = "magma engine"},/turf/simulated/floor/plasteel/cult,/area/wizard_station) -"qh" = (/obj/structure/table,/obj/item/weapon/lighter/zippo,/turf/simulated/floor/plasteel/freezer{dir = 2},/area/centcom/holding) +"qh" = (/obj/structure/table,/obj/item/weapon/lighter,/turf/simulated/floor/plasteel/freezer{dir = 2},/area/centcom/holding) "qi" = (/obj/structure/table,/obj/item/weapon/dice/d20,/turf/simulated/floor/plasteel/freezer{dir = 2},/area/centcom/holding) "qj" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/soda_cans/cola,/turf/simulated/floor/plasteel/freezer{dir = 2},/area/centcom/holding) "qk" = (/obj/structure/table,/obj/item/ammo_box/foambox,/turf/simulated/floor/plasteel/freezer{dir = 2},/area/centcom/holding) diff --git a/_maps/map_files/generic/z3.dmm b/_maps/map_files/generic/z3.dmm index 8a624a86329..3f3cbdcd4f7 100644 --- a/_maps/map_files/generic/z3.dmm +++ b/_maps/map_files/generic/z3.dmm @@ -59,6 +59,8 @@ "bg" = (/turf/simulated/wall/shuttle{tag = "icon-swall_f16"; icon_state = "swall_f16"},/area/shuttle/abandoned) "bh" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/regular{pixel_x = 6; pixel_y = -5},/turf/simulated/floor/plasteel/shuttle{icon_state = "floor3"},/area/shuttle/abandoned) "bi" = (/obj/machinery/sleeper{icon_state = "sleeper-open"; dir = 8},/obj/effect/decal/remains/human,/turf/simulated/floor/plasteel/shuttle{icon_state = "floor3"},/area/shuttle/abandoned) +"bj" = (/obj/effect/spawner/lootdrop/crate_spawner,/turf/simulated/floor/plasteel/airless,/area/tcommsat/chamber) +"bk" = (/obj/effect/spawner/lootdrop/crate_spawner,/turf/simulated/floor/plating/airless,/area/AIsattele) "bB" = (/obj/item/trash/cheesie,/turf/space,/area/space) "bK" = (/turf/simulated/floor/plating/airless,/area/space) "bL" = (/obj/structure/lattice,/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/space,/area/space) @@ -362,7 +364,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMbMbObPbPbKbPbObObObObObObObObObObObObObObObObObObPbKaNaNaaaNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabLbMbObObObObObQbQbQbQbQbObObObObObObObObObQbQbQbQbRbSaNaNaNaNaNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMbObObOaNaabTbUbVbWbXbYbQbQbQbQbQbQbQbQbQbZbQcacbcccdbSbSaNbKbPbLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMbObOaNaNaNcebUbScfcgchcibQcjcjckclcmcnbQcobQcpcqcjcccdcdbSbPbObMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMbObOaNaNaNcebUbScfcgchcibQbjcjckclcmcnbQcobQcpcqcjcccdcdbSbPbObMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMbObOaaaNaabTcrcsctcscucvbQcjcwcjcjcjcmbQcobQcxcpcjcjccccbQbObObMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabLbObOaaaNaaaacyczcAcBcCcDcEcFcjcGcjcjcmbQcHbQcpcpcjcIcJcKbQbObObMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMbObOaaaNaabTcLcMcNcMcNcOcPcjcjcQcjcjbQbQbQbQcRcScjcQcTcUcVcWcWcXcYcZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -435,7 +437,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeOeOeOeOeOaNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNaNeOeOePeQeReOeOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNaNaNeOeOeSeTeTeTeUeOeOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeVeWeOeTeXeYeTeZeYeTeOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeVeWeOeTeXeYeTeZeYbkeOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNaNfaeTfaeTfbeZfceTeTfdeOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeVfeeOfdffeTfgeTfhfieOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNaNaNeOeOeTeTeYeTfjeOeOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/_maps/map_files/generic/z4.dmm b/_maps/map_files/generic/z4.dmm index ec1e0f796df..35a66cc4ebf 100644 --- a/_maps/map_files/generic/z4.dmm +++ b/_maps/map_files/generic/z4.dmm @@ -540,6 +540,7 @@ "kt" = (/obj/item/weapon/wirecutters,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plasteel/airless,/area/derelict/hallway/secondary) "ku" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plasteel/airless,/area/derelict/se_solar) "kv" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/item/drone_shell,/turf/simulated/floor/plasteel/airless,/area/derelict/se_solar) +"kw" = (/obj/effect/spawner/lootdrop/crate_spawner,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/djstation) "kx" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel/airless,/area/derelict/hallway/secondary) "ky" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel/airless,/area/derelict/hallway/secondary) "kz" = (/turf/simulated/floor/plasteel/airless{icon_state = "derelict1"},/area/derelict/hallway/secondary) @@ -555,6 +556,7 @@ "kJ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/derelict/hallway/secondary) "kK" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/derelict/hallway/secondary) "kL" = (/turf/simulated/wall/r_wall,/area/derelict/bridge/ai_upload) +"kM" = (/obj/effect/spawner/lootdrop/crate_spawner,/turf/simulated/floor/plasteel/airless,/area/derelict/bridge/access) "kN" = (/obj/machinery/door/airlock/external{name = "Escape Airlock"},/turf/simulated/floor/plating/airless,/area/derelict/hallway/secondary) "kO" = (/obj/machinery/door/firedoor,/turf/simulated/floor/plating/airless,/area/derelict/hallway/secondary) "kP" = (/obj/structure/window/fulltile{dir = 4},/turf/simulated/floor/plating/airless,/area/derelict/hallway/secondary) @@ -857,7 +859,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabacacacacagahahaoahahagacacacac aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababafapaqarahasafabababababaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafatafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafafafafauavawaxayafafafafafafaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagazaAaAaAagawawawawawagaBaCaDaEagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagazaAaAaAagawawawawawagkwaCaDaEagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaFaAaAaAaGawaHaIaHawaJaBaBaBaKagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaLaMaNaAagawaOaPaQawagaRaSaTaUagaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaVafafaWafawawawawaXafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -906,7 +908,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaecIcIdBdcdddbdQdbdddbdfdfdBdbdbdbdbdddbcIblaaaaaaaaaaaaaaaaaaaaaeaecechchdCchchdRcVcVdidSdTdidTdUdVbjdWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaecIcIdbdddbdXdYdZeadfebdfdfecedeedBdcddcIblaeaaaaaaaaaacDaaaaaeaeaececececmcechcSefcVeheiejcTcTcVdldwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaecIcIdBdbdXekelemdfdfdfdfdfeneneoeedbdccIblaeaeaablcecececececececececechcmcececeeqeqereqeqeqcMcMcMabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaecIcIcIdBdBesetdcdfdfdfdfdfdfdfdfeuevdBewcIblblaeaeblceexgRexqAgWeAeBcecechcmcenWnWblaebjbjaableDbjbwabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaecIcIcIdBdBesetdcdfdfdfdfdfdfdfdfeuevdBewcIblblaeaeblcekMgRexqAgWeAeBcecechcmcenWnWblaebjbjaableDbjbwabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIcIcIcIcIdBdBesekdcdfdfdfdfdfdfdfdfeEevdfdBcIcIcIcIcIaacenXexexexexexexcecechcmcenWnWaeaaaaaaaaaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaecIcIdBeKeLdBdBeMeNdfeaaaaaaaaaaadfdfeEdydfdBdbdBdfcIcIaeceexexexexexexexcececeepcececeaeaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIcIeQdbeEeedBdcdBnYdfdfaaaaaaaaaadfdfeRnYdBeSeTeUdbdBcIcIceceeVceeWeWeWeWceexexeCexexcecDaaaaaaaaaaaaaaaabjbjblbwbjbwbjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/_maps/map_files/generic/z5.dmm b/_maps/map_files/generic/z5.dmm index 47ef322fc1c..0a5516d7c8c 100644 --- a/_maps/map_files/generic/z5.dmm +++ b/_maps/map_files/generic/z5.dmm @@ -10,7 +10,7 @@ "aj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/mine/abandoned) "ak" = (/turf/simulated/floor/plasteel/airless,/area/mine/abandoned) "al" = (/obj/structure/lattice,/turf/space,/area/space) -"am" = (/turf/simulated/floor/plating/asteroid/airless/cave,/area/mine/unexplored) +"am" = (/obj/effect/spawner/lootdrop/crate_spawner,/turf/simulated/floor/plating/asteroid/airless/cave,/area/mine/unexplored) "an" = (/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/shard{icon_state = "small"},/turf/simulated/floor/plating/airless,/area/mine/abandoned) "ao" = (/obj/item/stack/rods,/obj/structure/door_assembly/door_assembly_ext{name = "Broken External Airlock"},/turf/simulated/floor/plasteel/airless,/area/mine/abandoned) "ap" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/mine/abandoned) @@ -609,9 +609,9 @@ "lK" = (/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/mine/living_quarters) "lL" = (/turf/simulated/floor/plasteel{dir = 5; icon_state = "whiteblue"},/area/mine/living_quarters) "lM" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/mine/living_quarters) -"lN" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/light/small{dir = 1},/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor/plating,/area/mine/living_quarters) +"lN" = (/obj/effect/spawner/lootdrop/crate_spawner,/turf/simulated/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/abandoned) "lO" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/mine/living_quarters) -"lP" = (/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor/plating,/area/mine/living_quarters) +"lP" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/light/small{dir = 1},/obj/structure/closet/crate/secure/loot,/turf/simulated/floor/plating,/area/mine/living_quarters) "lQ" = (/turf/simulated/floor/plating,/area/mine/living_quarters) "lR" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/living_quarters) "lS" = (/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/living_quarters) @@ -710,6 +710,7 @@ "nH" = (/obj/structure/disposaloutlet{dir = 1; eject_range = 1},/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/mine/production) "nI" = (/obj/docking_port/stationary{dheight = 9; dir = 2; dwidth = 5; height = 22; id = "syndicate_z5"; name = "south of asteroid"; turf_type = /turf/space; width = 18},/turf/space,/area/space) "nJ" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/brute{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/firstaid/regular,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/mine/living_quarters) +"nK" = (/obj/machinery/atmospherics/pipe/simple,/obj/item/weapon/storage/box/lights,/turf/simulated/floor/plating,/area/mine/living_quarters) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -786,7 +787,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadedeaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqdqdqdqdqdqdedededededeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababacacacacacacacacaxdrcIcIcIcIcIcIcIcIcIcHaxbqakdsakdbdtdcdcacacacacacacacacacacacacacacacacacacacacacacacacacacabababafbGbGbGbGbGbGbGbGbGbGbGbGbGbGdudvdvdvdvdvdvdvdvdubGbGbGdwdwdwbidxdydzcOcBbGbGbGbGbGbGbGafafafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqdqdqdqdqdqdAdAdAdBdqdedededCdCdedededeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababacacacacacacacacacaxdrcHcHcHdDdEcHcHcHdrdraxbqdsdsdsbraxdcdcdcacacacacacacacacacacacacacacacacacacacacacacacacacabababafbGbGbGbGbGbGbGbGbGbGbGbGbGdhdhdFdGdGdGdGdGdGdGdhdhbGbGbGbGbGbibTdHbTcOdIbGbGbGbGbGbGbGafafafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqdJdKdLdMdNdOdPdPdPdqdQdQdQdQdRdCdededededeaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababacacacacacacacacacaxaxaxaxaxaxaxaxaxaxaxaxaxaxcUdSdTaxaxdcdcdcdcacacacacacacacacacacacacacacacacacacacacacacacacabababafbGbGbGbGbGbGbGbGbGbGbGbGbGafaaaaaaaaaaaaaaaaafafafbGbGbGbGbGbGdUdVdWdXdYdZbGbGbGbGafafafafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqeaebeceddNaddPefegeheiejejdQdRekdCdedededededeaaaaaaaaaaaaaaaaaaaaaaababababababacacacacacacacacacacacacacacacacacacacacacdcdcdcaxdadadsaxdcdcdcdcdcacacacacacacacacacacacacacacacacacacacacacacacacabababafbGbGbGbGbGbGbGbGbGbGbGbGafaaaaaaaaaaaaaaafafafafafafafafbGbGbGbGbGdUeleldWbGbGbGafafafafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqeaebeceddNaddPefegeheiejejdQdRekdCdedededededeaaaaaaaaaaaaaaaaaaaaaaababababababacacacacacacacacacacacacacacacacacacacacacdcdcdcaxlNdadsaxdcdcdcdcdcacacacacacacacacacacacacacacacacacacacacacacacacabababafbGbGbGbGbGbGbGbGbGbGbGbGafaaaaaaaaaaaaaaafafafafafafafafbGbGbGbGbGdUeleldWbGbGbGafafafafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqdqdqdNemeneodNepeqdNdNdqdqdqeresetdCdCdededededededeaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacacacacacacacacacacacacacacacdcdcdcaxeueveuaxdcdcdcdcdcacacacacacacacacacacacacacacacacacacacacacacacacacababafbGbGbGbGbGbGbGbGbGbGbGbGafaaaaaaaaaaaaaaafafafafafafafafafafbGbGbGbGewewbGbGbGbGafafafafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqexeydNezdPdOeAeBdPeCdNeDeDeDdRejejdCdCdededededededeaaaaaaaaaaaaaaaaaaababababacacacacacacacacacacacacacacacacacacacacacacacacacdcdcaxeFdSeGaxdcdcdcdcacacacacacacacacacacacacacacacacacacacacacacacacacacababafafbGbGbGbGbGbGbGbGafafafafaaaaaaaaaaaaaaaaafafafafafafafafafafafbGbGewewbGbGafafafafafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaldqeHeIeJeKeLeMdPezdPdPeNeDeDejejejejeOdCdedededededededeaaaaaaaaaaaaaaabababababacacacacacacacaeacacacacacacacacacacacacacacacacacdcdcdcePeQeRdcdcdcdcacacacacacacacacacacacacacacacacacacacacacaeacacacacacabababafafafafafbGbGcscsafababaaaaaaaaaaaaaaaaaaafafafafafafafafafafafafbGewewbGbGafafafafafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -895,7 +896,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababafbGbGhThThThThTkmknkohThTkpkqkqkqkqgUgVgsgsgsgsflfkgsgsflbGbGbGafafabababacacababababafafbGbGgPgQgPgQbGbGbGbGbGbGbGdUdWbGbGbGfkgsflewbGbGbGbGafafafafabhwhwhwhwkrjfksktkujbkvkwkwkxkxkwkwkykzkykzkAkAkAkAkAkAkAkAkBkBkBkBkBkBkBkCkDkCkDkEkFkGixkHkIkJkKixkLkMixdWbGbGbGbGafafafafafaiaiaiaiaiafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababafafbGbGbGbGbGhTkNkOkPkQhTkRkShMbGbGdUdWbGbGbGbGfkgsgsflewbGbGbGbGafafafababababababafafbGbGgPgQgPgQbGbGbGbGafbGbGbGbGbGbGbGbGbGbGewewbGbGbGbGbGbGbGafafafafafhwiLkTkUkVkVkUkWkXkYkVkVkUkUkZlalalalblblblblblblblblclclclclclcldlelelelflglhlijgjgjhjgjgjgjgjgjgljlklllklmcsafafafafafaiaiaiaiafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababafafbGbGbGbGhTlnlolplqhTbGbGbGbGbGbGbGbGbGbGbGbGbGbGewfkflbGbGbGbGbGafafafafafafafafbGbGgPgQgPgQbGbGafafafafafafafbGbGbGbGbGbGbGewewbGgOdZbGbGbGbGbGbGafafhwhwhLlrhLhwhwlsltluhwhwhLlvhLhwhLbGbGbGaaaaaaaaalaaaaaaalaaaaaaaaaaalaajijilwlxlylzlAlBlClDlElElFlGlHlHlHlHlmbGafafafafafaiaiaiaiafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababafafbGbGbGhThThThThThTbGbGafafafafafafafafafbGbGbGfkflfkgsgsgsflbGbGbGbGbGbGbGbGbGbGbGewgPgQbGbGafafabababababafbGbGbGbGbGbGbGewfkgsgUgVgsgsgsgsflbGbGafhwlIlJlKlLhwlMlNlOlPlZhwlRlSlTlUbGbGbGbGbGbGaaaaalaaaaaaalalalalalalalalaljglVlWlXjgjgjgjgjgjgjgjgjglYlmlmlmlmbGafafafafafaiaiaiaiafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababafafbGbGbGhThThThThThTbGbGafafafafafafafafafbGbGbGfkflfkgsgsgsflbGbGbGbGbGbGbGbGbGbGbGewgPgQbGbGafafabababababafbGbGbGbGbGbGbGewfkgsgUgVgsgsgsgsflbGbGafhwlIlJlKlLhwlMlPlOnKlZhwlRlSlTlUbGbGbGbGbGbGaaaaalaaaaaaalalalalalalalalaljglVlWlXjgjgjgjgjgjgjgjgjglYlmlmlmlmbGafafafafafaiaiaiaiafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababafbGbGbGbGbGbGbGbGbGbGbGafabababababababafafbGbGbGfkgsgsgsflfkflbGgOdZbGbGgPgsgsgsgsgQewbGbGafafababababababafafbGbGbGbGbGbGfkgsgsgUgVgsgsgsflewbGbGbGhwmcmambnJhwmdlQlQmemfhwmgmhmihwbGbGbGbGbGbGalalalalalalalaaaaaaaaaaalaaaljgmjmkmlmmjgmnmoeemqmpeEjgbGbGbGbGbGafafafafaiaiaiaiaiaiafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababafbGbGbGbGbGbGbGbGbGafafafabababacacabababafafafbGbGbGbGbGfkflfkgsgUgVgsgsgQgPgsgsgsgsgQbGafafababababababababafafafbGbGbGbGbGbGbGdUdWbGbGbGewewbGbGbGlUhwhwhwhwhwmsmtmumvmfhwhLmwhLhwbGbGbGbGbGbGaaaaalaaaaaaalaaaaaaaaaaalaajijilwmxmlmmlemykckdmzmAmrjgbGbGbGbGbGafafafafaiaiaiaiaiaiafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababafafafafbGbGbGbGafafafababacacacacacacacabababafafafbGbGbGbGfkgsgsgUgVgsgsgsgQbGbGbGbGbGbGafababababababacacabababafafafafbGbGbGbGbGbGbGbGbGewfkgsflbGbGbGbGbGbGlUhwhwhwhwhwlUmCmCiFmDbGbGbGbGbGaaaaaaalaaaaaaalaaaaaaaaaamEjimFmGmHmxmlmIjgmJlwmKmLjgmMjgbGbGbGbGafafafafafaiaiaiaiaiaiafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/code/ATMOSPHERICS/atmospherics.dm b/code/ATMOSPHERICS/atmospherics.dm index c59936247b7..49fb54d5094 100644 --- a/code/ATMOSPHERICS/atmospherics.dm +++ b/code/ATMOSPHERICS/atmospherics.dm @@ -120,7 +120,7 @@ Pipelines + Other Objects -> Pipe network user << "As you begin unwrenching \the [src] a gush of air blows in your face... maybe you should reconsider?" unsafe_wrenching = TRUE //Oh dear oh dear - if (do_after(user, 40) && !gc_destroyed) + if (do_after(user, 40, target = src) && !gc_destroyed) user.visible_message( \ "[user] unfastens \the [src].", \ "You unfasten \the [src].", \ diff --git a/code/ATMOSPHERICS/components/unary_devices/vent_pump.dm b/code/ATMOSPHERICS/components/unary_devices/vent_pump.dm index 13c76fad714..459bf870c66 100644 --- a/code/ATMOSPHERICS/components/unary_devices/vent_pump.dm +++ b/code/ATMOSPHERICS/components/unary_devices/vent_pump.dm @@ -275,7 +275,7 @@ if (WT.remove_fuel(0,user)) playsound(loc, 'sound/items/Welder.ogg', 40, 1) user << "You begin welding the vent..." - if(do_after(user, 20)) + if(do_after(user, 20, target = src)) if(!src || !WT.isOn()) return playsound(src.loc, 'sound/items/Welder2.ogg', 50, 1) if(!welded) diff --git a/code/ATMOSPHERICS/components/unary_devices/vent_scrubber.dm b/code/ATMOSPHERICS/components/unary_devices/vent_scrubber.dm index 35d7b48d8fb..9588baa7ee7 100644 --- a/code/ATMOSPHERICS/components/unary_devices/vent_scrubber.dm +++ b/code/ATMOSPHERICS/components/unary_devices/vent_scrubber.dm @@ -253,7 +253,7 @@ if(WT.remove_fuel(0,user)) playsound(loc, 'sound/items/Welder.ogg', 40, 1) user << "Now welding the scrubber." - if(do_after(user, 20)) + if(do_after(user, 20, target = src)) if(!src || !WT.isOn()) return playsound(src.loc, 'sound/items/Welder2.ogg', 50, 1) diff --git a/code/__DEFINES/clothing.dm b/code/__DEFINES/clothing.dm index 6e9734c1fa5..672a58facdd 100644 --- a/code/__DEFINES/clothing.dm +++ b/code/__DEFINES/clothing.dm @@ -85,4 +85,12 @@ #define NO_FEMALE_UNIFORM 0 #define FEMALE_UNIFORM_FULL 1 -#define FEMALE_UNIFORM_TOP 2 \ No newline at end of file +#define FEMALE_UNIFORM_TOP 2 + + +//flags for covering body parts +#define GLASSESCOVERSEYES 1 +#define MASKCOVERSEYES 2 // get rid of some of the other retardation in these flags +#define HEADCOVERSEYES 4 // feel free to realloc these numbers for other purposes +#define MASKCOVERSMOUTH 8 // on other items, these are just for mask/head +#define HEADCOVERSMOUTH 16 \ No newline at end of file diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index 3d704c12cf0..2996b1af708 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -19,12 +19,6 @@ #define ON_BORDER 512 // item has priority to check when entering or leaving -#define GLASSESCOVERSEYES 1024 -#define MASKCOVERSEYES 1024 // get rid of some of the other retardation in these flags -#define HEADCOVERSEYES 1024 // feel free to realloc these numbers for other purposes -#define MASKCOVERSMOUTH 2048 // on other items, these are just for mask/head -#define HEADCOVERSMOUTH 2048 - #define HEADBANGPROTECT 4096 #define EARBANGPROTECT 1024 diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index 1aebe1bce3b..008fa9a04a2 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -81,7 +81,8 @@ #define MINERAL_MATERIAL_AMOUNT 2000 //The amount of materials you get from a sheet of mineral like iron/diamond/glass etc - +#define MAX_STACK_SIZE 50 +//The maximum size of a stack object. #define CLICK_CD_MELEE 8 #define CLICK_CD_RANGE 4 diff --git a/code/__HELPERS/names.dm b/code/__HELPERS/names.dm index d1ea5365d4d..ca085a415c4 100644 --- a/code/__HELPERS/names.dm +++ b/code/__HELPERS/names.dm @@ -131,7 +131,7 @@ var/syndicate_name = null syndicate_name = name return name -var/gang_name_pool = list("Clandestine", "Prima", "Blue", "Zero-G", "Max", "Blasto", "Waffle", "North", "Omni", "Newton", "Cyber", "Donk", "Gene", "Gib", "Tunnel") +var/gang_name_pool = list("Clandestine", "Prima", "Zero-G", "Max", "Blasto", "Waffle", "North", "Omni", "Newton", "Cyber", "Donk", "Gene", "Gib", "Tunnel", "Diablo", "Psyke", "Osiron", "Sleeping Carp") var/gang_A_name = null var/gang_B_name = null /proc/gang_name(var/gang) diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index e32a0b65f60..c0181912414 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -674,7 +674,7 @@ Turf and target are seperate in case you want to teleport some distance from a t else return get_step(ref, base_dir) -/proc/do_mob(var/mob/user , var/mob/target, var/time = 30, numticks = 5) //This is quite an ugly solution but i refuse to use the old request system. +/proc/do_mob(var/mob/user , var/mob/target, var/time = 30, numticks = 5, var/stealth = 0) //This is quite an ugly solution but i refuse to use the old request system. if(!user || !target) return 0 if(numticks == 0) @@ -683,15 +683,34 @@ Turf and target are seperate in case you want to teleport some distance from a t var/target_loc = target.loc var/holding = user.get_active_hand() var/timefraction = round(time/numticks) - for(var/i = 0, i= 1 && z_level <= world.maxz) z_level = round(z_level) z_start = z_level z_finish = z_level var/list/turfs_to_init = block(locate(1, 1, z_start), locate(world.maxx, world.maxy, z_finish)) - for(var/turf/T in turfs_to_init) + for(var/thing in turfs_to_init) + var/turf/T = thing T.init_lighting() if(z_level) //we need to loop through to clear only shifted turfs from the list. or we will cause errors var/i=1 - for(var/turf/thing in changed_turfs) - if(thing && thing.z < z_start && z_finish < thing.z) + for(var/thing in changed_turfs) + var/turf/T = thing + if(T.z in z_start to z_finish) ++i continue changed_turfs.Cut(i, i+1) else changed_turfs.Cut() -// for(var/area/A in sortedAreas) -// A.luminosity = !A.lighting_use_dynamic - ..() //Used to strip valid information from an existing instance and transfer it to the replacement. i.e. when a crash occurs @@ -99,14 +92,13 @@ var/datum/subsystem/lighting/SSlighting if(!istype(SSlighting.changed_lights)) SSlighting.changed_lights = list() -// for(var/area/A in sortedAreas) -// A.luminosity = 1 - - for(var/datum/light_source/L in SSlighting.changed_lights) + for(var/thing in SSlighting.changed_lights) + var/datum/light_source/LS = thing spawn(-1) //so we don't crash the loop (inefficient) - L.check() + LS.check() - for(var/turf/T in changed_turfs) + for(var/thing in changed_turfs) + var/turf/T = thing if(T.lighting_changed) spawn(-1) T.redraw_lighting() @@ -123,6 +115,3 @@ var/datum/subsystem/lighting/SSlighting varval2 = "/list([length(varval2)])" msg += "\t [varname] = [varval1] -> [varval2]\n" world.log << msg - -// for(var/area/A in sortedAreas) -// A.luminosity = !A.lighting_use_dynamic \ No newline at end of file diff --git a/code/controllers/subsystem/objects.dm b/code/controllers/subsystem/objects.dm index ccd49428120..35236b38fb6 100644 --- a/code/controllers/subsystem/objects.dm +++ b/code/controllers/subsystem/objects.dm @@ -9,6 +9,7 @@ var/datum/subsystem/objects/SSobj priority = 12 var/list/processing = list() + var/list/burning = list() /datum/subsystem/objects/New() NEW_SS_GLOBAL(SSobj) @@ -37,5 +38,9 @@ var/datum/subsystem/objects/SSobj ++i continue SSobj.processing.Cut(i, i+1) - - + for(var/obj/burningobj in SSobj.burning) + if(burningobj && (burningobj.burn_state == 1)) + if(burningobj.burn_world_time < world.time) + burningobj.burn() + else + SSobj.burning -= burningobj \ No newline at end of file diff --git a/code/controllers/subsystem/procqueue.dm b/code/controllers/subsystem/procqueue.dm new file mode 100644 index 00000000000..daf762927c9 --- /dev/null +++ b/code/controllers/subsystem/procqueue.dm @@ -0,0 +1,46 @@ +var/datum/subsystem/procqueue/procqueue + +/datum/subsystem/procqueue + var/list/queue = list() + +/datum/subsystem/procqueue/New() + NEW_SS_GLOBAL(procqueue) + +/datum/subsystem/procqueue/fire() + if (queue.len) + var/list/L = list() + var/key + + for (var/datum/procqueue_item/item in queue) + key = "[item.ref]_[item.procname]" + + if (item.args) + key += "(" + var/first = 1 + for (var/a in item.args) + if (!first) key += "," + key += "[a]" + first = 0 + key += ")" + + if (!(key in L)) + if (item.args) call(item.ref, item.procname)(arglist(item.args)) + else call(item.ref, item.procname)() + + L.Add(key) + + queue.Cut() + +/datum/subsystem/procqueue/proc/queue(ref, procname, ...) + var/datum/procqueue_item/item = new/datum/procqueue_item + item.ref = ref + item.procname = procname + + if (args.len > 2) + item.args = args.Copy(3) + + src.queue.Insert(1, item) + +/datum/procqueue_item/var/ref +/datum/procqueue_item/var/procname +/datum/procqueue_item/var/list/args \ No newline at end of file diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index fa6db81352b..190819bd28d 100644 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -66,6 +66,7 @@ var/datum/subsystem/ticker/ticker timeLeft = config.lobby_countdown * 10 world << "Welcome to the pre-game lobby!" world << "Please, setup your character and select ready. Game will start in [config.lobby_countdown] seconds" + crewmonitor.generateMiniMaps() // start generating minimaps (this is a background process) current_state = GAME_STATE_PREGAME if(GAME_STATE_PREGAME) @@ -200,6 +201,10 @@ var/datum/subsystem/ticker/ticker //Plus it provides an easy way to make cinematics for other events. Just use this as a template /datum/subsystem/ticker/proc/station_explosion_cinematic(var/station_missed=0, var/override = null) if( cinematic ) return //already a cinematic in progress! + + for (var/datum/html_interface/hi in html_interfaces) + hi.closeAll() + auto_toggle_ooc(1) // Turn it on //initialise our cinematic screen object cinematic = new /obj/screen{icon='icons/effects/station_explosion.dmi';icon_state="station_intact";layer=20;mouse_opacity=0;screen_loc="1,0";}(src) @@ -271,6 +276,15 @@ var/datum/subsystem/ticker/ticker flick("station_explode_fade_red",cinematic) world << sound('sound/effects/explosionfar.ogg') cinematic.icon_state = "summary_selfdes" + if("no_core") //Nuke failed to detonate as it had no core + flick("intro_nuke",cinematic) + sleep(35) + flick("station_intact",cinematic) + world << sound('sound/ambience/signal.ogg') + sleep(100) + if(cinematic) del(cinematic) + if(temp_buckle) del(temp_buckle) + return //Faster exit, since nothing happened else //Station nuked (nuke,explosion,summary) flick("intro_nuke",cinematic) sleep(35) diff --git a/code/controllers/subsystem/timer.dm b/code/controllers/subsystem/timer.dm new file mode 100644 index 00000000000..6c2834a081f --- /dev/null +++ b/code/controllers/subsystem/timer.dm @@ -0,0 +1,71 @@ +var/datum/subsystem/timer/SStimer + +/datum/subsystem/timer + name = "Timer" + wait = 5 + priority = 1 + + var/list/datum/timedevent/processing + + +/datum/subsystem/timer/New() + NEW_SS_GLOBAL(SStimer) + processing = list() + + +/datum/subsystem/timer/stat_entry(msg) + ..("P:[processing.len]") + +/datum/subsystem/timer/fire() + if (!processing.len) + can_fire = 0 //nothing to do, lets stop firing. + return + for (var/datum/timedevent/event in processing) + // hacky i know, but its the only way to ensure this works with clients + if (!event.thingToCall || qdeleted(event.thingToCall)) + qdel(event) + if (event.timeToRun <= world.time) + spawn(-1) + call(event.thingToCall,event.procToCall)(arglist(event.argList)) + qdel(event) + +/datum/timedevent + var/thingToCall + var/procToCall + var/timeToRun + var/argList + var/id + var/static/nextid = 1 + +/datum/timedevent/New() + id = nextid + nextid++ + +/datum/timedevent/Destroy() + SStimer.processing -= src + +/proc/addtimer(var/thingToCall, var/procToCall, var/wait, var/argList = list()) + if (!SStimer) //can't run timers before the mc has been created + return + if (!thingToCall || !procToCall || wait <= 0) + return + if (!SStimer.can_fire) + SStimer.can_fire = 1 + SStimer.next_fire = world.time + SStimer.wait + + var/datum/timedevent/event = new() + event.thingToCall = thingToCall + event.procToCall = procToCall + event.timeToRun = world.time + wait + event.argList = argList + + SStimer.processing += event + + return event.id + +/proc/deltimer(var/id) + for (var/datum/timedevent/event in SStimer.processing) + if (event.id == id) + qdel(event) + return 1 + return 0 \ No newline at end of file diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm index c4e3856e295..cca3970fb00 100644 --- a/code/datums/datumvars.dm +++ b/code/datums/datumvars.dm @@ -237,6 +237,7 @@ body += "" + body += "" if(ismob(D)) body += "" @@ -443,6 +444,14 @@ body src.holder.marked_datum = D href_list["datumrefresh"] = href_list["mark_object"] + else if(href_list["proc_call"]) + if(!check_rights(0)) return + + var/T = locate(href_list["proc_call"]) + + if(T) + callproc_datum(T) + else if(href_list["regenerateicons"]) if(!check_rights(0)) return diff --git a/code/datums/diseases/_MobProcs.dm b/code/datums/diseases/_MobProcs.dm index 952c22982ef..f41cb13c576 100644 --- a/code/datums/diseases/_MobProcs.dm +++ b/code/datums/diseases/_MobProcs.dm @@ -38,7 +38,18 @@ DD.holder = src if(DD.disease_flags & CAN_CARRY && prob(5)) DD.carrier = 1 - DD.strain_data = D.strain_data.Copy() + + //Copy properties over. This is so edited diseases persist. + var/list/skipped = list("affected_mob","holder","carrier","stage","type","parent_type","vars") + for(var/V in DD.vars) + if(V in skipped) + continue + if(istype(DD.vars[V],/list)) + var/list/L = D.vars[V] + DD.vars[V] = L.Copy() + else + DD.vars[V] = D.vars[V] + DD.affected_mob.med_hud_set_status() diff --git a/code/datums/helper_datums/teleport.dm b/code/datums/helper_datums/teleport.dm index 0ed97a79c13..fc8e01984f9 100644 --- a/code/datums/helper_datums/teleport.dm +++ b/code/datums/helper_datums/teleport.dm @@ -100,7 +100,10 @@ var/area/destarea = get_area(destination) if(precision) var/list/posturfs = list() - for(var/turf/T in range(precision,destination)) + var/center = get_turf(destination) + if(!center) + center = destination + for(var/turf/T in range(precision,center)) posturfs.Add(T) destturf = safepick(posturfs) else diff --git a/code/datums/martial.dm b/code/datums/martial.dm index 865209ab97e..8c5c136980e 100644 --- a/code/datums/martial.dm +++ b/code/datums/martial.dm @@ -265,7 +265,132 @@ return 1 +//Used by the gang of the same name. Uses combos. Basic attacks bypass armor and never miss +#define WRIST_WRENCH_COMBO "DD" +#define BACK_KICK_COMBO "HG" +#define STOMACH_KNEE_COMBO "GH" +#define HEAD_KICK_COMBO "DHH" +#define ELBOW_DROP_COMBO "HDHDH" +/datum/martial_art/the_sleeping_carp + name = "The Sleeping Carp" + +/datum/martial_art/the_sleeping_carp/proc/check_streak(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + if(findtext(streak,WRIST_WRENCH_COMBO)) + streak = "" + wristWrench(A,D) + return 1 + if(findtext(streak,BACK_KICK_COMBO)) + streak = "" + backKick(A,D) + return 1 + if(findtext(streak,STOMACH_KNEE_COMBO)) + streak = "" + kneeStomach(A,D) + return 1 + if(findtext(streak,HEAD_KICK_COMBO)) + streak = "" + headKick(A,D) + return 1 + if(findtext(streak,ELBOW_DROP_COMBO)) + streak = "" + elbowDrop(A,D) + return 1 + return 0 + +/datum/martial_art/the_sleeping_carp/proc/wristWrench(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + if(!D.stat && !D.stunned && !D.weakened) + D.visible_message("[A] grabs [D]'s wrist and wrenches it sideways!", \ + "[A] grabs your wrist and violently wrenches it to the side!") + playsound(get_turf(A), 'sound/weapons/thudswoosh.ogg', 50, 1, -1) + D.emote("scream") + D.drop_item() + D.apply_damage(5, BRUTE, pick("l_arm", "r_arm")) + D.Stun(2) + return 1 + return basic_hit(A,D) + +/datum/martial_art/the_sleeping_carp/proc/backKick(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + if(A.dir == D.dir && !D.stat && !D.weakened) + D.visible_message("[A] kicks [D] in the back!", \ + "[A] kicks you in the back, making you stumble and fall!") + step_to(D,get_step(D,D.dir),1) + D.Weaken(4) + playsound(get_turf(D), 'sound/weapons/punch1.ogg', 50, 1, -1) + return 1 + return basic_hit(A,D) + +/datum/martial_art/the_sleeping_carp/proc/kneeStomach(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + if(!D.stat && !D.weakened) + D.visible_message("[A] knees [D] in the stomach!", \ + "[A] winds you with a knee in the stomach!") + D.audible_message("[D] gags!") + D.losebreath += 3 + D.Stun(1) + playsound(get_turf(D), 'sound/weapons/punch1.ogg', 50, 1, -1) + return 1 + return basic_hit(A,D) + +/datum/martial_art/the_sleeping_carp/proc/headKick(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + if(!D.stat && !D.weakened) + D.visible_message("[A] kicks [D] in the head!", \ + "[A] kicks you in the jaw!") + D.apply_damage(20, BRUTE, "head") + D.drop_item() + playsound(get_turf(D), 'sound/weapons/punch1.ogg', 75, 1, -1) + return 1 + return basic_hit(A,D) + +/datum/martial_art/the_sleeping_carp/proc/elbowDrop(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + if(D.weakened || D.resting || D.stat) + D.visible_message("[A] elbow drops [D]!", \ + "[A] piledrives you with their elbow!") + if(D.stat) + D.death() //FINISH HIM! + D.apply_damage(50, BRUTE, "chest") + playsound(get_turf(D), 'sound/weapons/punch1.ogg', 100, 1, -1) + return 1 + return basic_hit(A,D) + +/datum/martial_art/the_sleeping_carp/grab_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + add_to_streak("G") + if(check_streak(A,D)) + return 1 + ..() + var/obj/item/weapon/grab/G = A.get_active_hand() + if(G) + G.state = GRAB_AGGRESSIVE //Instant aggressive grab + +/datum/martial_art/the_sleeping_carp/harm_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + add_to_streak("H") + if(check_streak(A,D)) + return 1 + D.visible_message("[A] [pick("punches", "kicks", "chops", "hits", "slams")] [D]!", \ + "[A] hits you!") + D.apply_damage(10, BRUTE) + playsound(get_turf(D), 'sound/weapons/punch1.ogg', 50, 1, -1) + return 1 + + +/datum/martial_art/the_sleeping_carp/disarm_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + add_to_streak("D") + if(check_streak(A,D)) + return 1 + return ..() + +/mob/living/carbon/human/proc/sleeping_carp_help() + set name = "Recall Teachings" + set desc = "Remember the martial techniques of the Sleeping Carp clan." + set category = "Sleeping Carp" + + usr << "You retreat inward and recall the teachings of the Sleeping Carp..." + usr << "Wrist Wrench: Disarm Disarm. Forces opponent to drop item in hand." + usr << "Back Kick: Harm Grab. Opponent must be facing away. Knocks down." + usr << "Stomach Knee: Grab Harm. Knocks the wind out of opponent and stuns." + usr << "Head Kick: Disarm Harm Harm. Decent damage, forces opponent to drop item in hand." + usr << "Elbow Drop: Harm Disarm Harm Disarm Harm. Opponent must be on the ground. Deals huge damage, instantly kills anyone in critical condition." + //ITEMS + /obj/item/clothing/gloves/boxing var/datum/martial_art/boxing/style = new @@ -306,8 +431,8 @@ return /obj/item/weapon/plasma_fist_scroll - name = "Plasma Fist Scroll" - desc = "Teaches the traditional wizard martial art." + name = "frayed scroll" + desc = "An aged and frayed scrap of paper written in shifting runes. There are hand-drawn illustrations of pugilism." icon = 'icons/obj/wizard.dmi' icon_state ="scroll2" var/used = 0 @@ -319,6 +444,105 @@ var/mob/living/carbon/human/H = user var/datum/martial_art/plasma_fist/F = new/datum/martial_art/plasma_fist(null) F.teach(H) - H << "You learn the PLASMA FIST style" + H << "You have learned the ancient martial art of Plasma Fist." used = 1 - desc += "It looks like it's magic was used up." + desc = "It's completely blank." + name = "empty scroll" + icon_state = "blankscroll" + +/obj/item/weapon/sleeping_carp_scroll + name = "mysterious scroll" + desc = "A scroll filled with strange markings. It seems to be drawings of some sort of martial art." + icon = 'icons/obj/wizard.dmi' + icon_state = "scroll2" + +/obj/item/weapon/sleeping_carp_scroll/attack_self(mob/living/carbon/human/user as mob) + if(!istype(user) || !user) + return + user << "You begin to read the scroll..." + user << "And all at once the secrets of the Sleeping Carp fill your mind. The ancient clan's martial teachings have been imbued into this scroll. As you read through it, \ + these secrets flood into your mind and body. You now know the martial techniques of the Sleeping Carp. Your hand-to-hand combat has become much more effective, and you may now perform powerful \ + combination attacks. To learn more about these combos, use the Recall Teachings ability in the Sleeping Carp tab." + user.verbs += /mob/living/carbon/human/proc/sleeping_carp_help + var/datum/martial_art/the_sleeping_carp/theSleepingCarp = new(null) + theSleepingCarp.teach(user) + user.drop_item() + visible_message("[src] lights up in fire and quickly burns to ash.") + new /obj/effect/decal/cleanable/ash(get_turf(src)) + qdel(src) + +/obj/item/weapon/twohanded/bostaff + name = "bo staff" + desc = "A long, tall staff made of polished wood. Traditionally used in ancient old-Earth martial arts. Can be wielded to both kill and incapacitate." + force = 10 + w_class = 4 + slot_flags = SLOT_BACK + force_unwielded = 10 + force_wielded = 24 + throwforce = 20 + throw_speed = 2 + attack_verb = list("smashed", "slammed", "whacked", "thwacked") + icon = 'icons/obj/weapons.dmi' + icon_state = "bostaff0" + +/obj/item/weapon/twohanded/bostaff/update_icon() + icon_state = "bostaff[wielded]" + return + +/obj/item/weapon/twohanded/bostaff/attack(mob/target, mob/living/user) + add_fingerprint(user) + if((CLUMSY in user.disabilities) && prob(50)) + user << "You club yourself over the head with [src]." + user.Weaken(3) + if(ishuman(user)) + var/mob/living/carbon/human/H = user + H.apply_damage(2*force, BRUTE, "head") + else + user.take_organ_damage(2*force) + return + if(isrobot(target)) + return ..() + if(!isliving(target)) + return ..() + var/mob/living/carbon/C = target + if(C.stat) + user << "It would be dishonorable to attack a foe while they cannot retaliate." + return + switch(user.a_intent) + if("disarm") + if(!wielded) + return ..() + if(!ishuman(target)) + return ..() + var/mob/living/carbon/human/H = target + var/list/fluffmessages = list("[user] clubs [H] with [src]!", \ + "[user] smacks [H] with the butt of [src]!", \ + "[user] broadsides [H] with [src]!", \ + "[user] smashes [H]'s head with [src]!", \ + "[user] beats [H] with front of [src]!", \ + "[user] twirls and slams [H] with [src]!") + H.visible_message("[pick(fluffmessages)]", \ + "[pick(fluffmessages)]") + playsound(get_turf(user), 'sound/effects/woodhit.ogg', 75, 1, -1) + H.adjustStaminaLoss(rand(13,20)) + if(prob(10)) + H.visible_message("[H] collapses!", \ + "Your legs give out!") + H.Weaken(4) + if(H.staminaloss && !H.sleeping) + var/total_health = (H.health - H.staminaloss) + if(total_health <= config.health_threshold_crit && !H.stat) + H.visible_message("[user] delivers a heavy hit to [H]'s head, knocking them out cold!", \ + "[user] knocks you unconscious!") + H.sleeping += 30 + H.adjustBrainLoss(25) + return + else + return ..() + return ..() + +/obj/item/weapon/twohanded/bostaff/IsShield() + if(wielded) + return 1 + else + return 0 diff --git a/code/datums/mineral_container.dm b/code/datums/mineral_container.dm new file mode 100644 index 00000000000..78894e8223c --- /dev/null +++ b/code/datums/mineral_container.dm @@ -0,0 +1,117 @@ +/* + This datum should be used for handling mineral contents of machines and whatever else is supposed to hold minerals and make use of them. + One mineral_container var can only handle one type of mineral. + + Variables: + amount - raw amount of the mineral this container is holding, calculated by the defined value MINERAL_MATERIAL_AMOUNT=2000. + max_amount - max raw amount of mineral this container can hold. + sheet_type - type of the mineral sheet the container handles, used for output. + owner - object that this container is being used by, used for output. + MAX_STACK_SIZE - size of a stack of mineral sheets. Constant. +*/ +/datum/mineral_container + var/amount + var/max_amount + var/sheet_type + var/obj/owner + //MAX_STACK_SIZE = 50 + //MINERAL_MATERIAL_AMOUNT = 2000 + +/datum/mineral_container/New(obj/O, type, max_amt = 0, amt = 0) + if(!O) return + owner = O + sheet_type = type + amount = max(0, amt) + max_amount = max(0, max_amt) + +//For inserting an amount of mineral sheets +/datum/mineral_container/proc/insert(sheet_amt) + if(sheet_amt > 0) + var/amt = sheet_amt * MINERAL_MATERIAL_AMOUNT + if(amt <= (max_amount - amount)) + amount += amt + return sheet_amt + return 0 + +//For inserting a mineral sheet +/datum/mineral_container/proc/insert_sheet(obj/S) + if(accepts(S)) + if(!isFull()) + var/obj/item/stack/sheet/sheet = S + var/sht_amt = amount2sheet(max_amount - amount) + if(sht_amt >= sheet.amount) + return insert(sheet.amount) + else + return insert(sht_amt) + return 0 + return -1 + +//For inserting an amount of material +/datum/mineral_container/proc/insert_amount(amt) + if(amt > 0 & !isFull()) + if(amt <= max_amount - amount) + amount += amt + return amt + return 0 + +//For consuming material (amt = amount of material) +/datum/mineral_container/proc/use_amount(amt) + if(amt > 0 & !isEmpty()) + if(amount >= amt) + amount -= amt + return amt + return 0 + +//For consuming material (sheet_amt = amount of material equivalent to a number of sheets) +/datum/mineral_container/proc/use_sheets(sheet_amt) + if(sheet_amt > 0 & !isEmpty()) + if(amount >= (sheet_amt * MINERAL_MATERIAL_AMOUNT)) + amount -= sheet_amt + return sheet_amt + return 0 + +//For spawning mineral sheets +/datum/mineral_container/proc/retrieve(sheet_amt) + if(sheet_amt > 0 && amount >= (sheet_amt * MINERAL_MATERIAL_AMOUNT)) + var/count = 0 + var/obj/item/stack/sheet/S + + while(sheet_amt > MAX_STACK_SIZE) + S = new sheet_type(get_turf(owner)) + S.amount = MAX_STACK_SIZE + count += MAX_STACK_SIZE + amount -= MAX_STACK_SIZE * MINERAL_MATERIAL_AMOUNT + sheet_amt -= MAX_STACK_SIZE + + if(round(amount / MINERAL_MATERIAL_AMOUNT)) + S = new sheet_type(get_turf(owner)) + S.amount = sheet_amt + count += sheet_amt + amount -= sheet_amt * MINERAL_MATERIAL_AMOUNT + return count + return 0 + +/datum/mineral_container/proc/retrieve_amount(amt) + return retrieve(amount2sheet(amt)) + +/datum/mineral_container/proc/retrieve_all() + return retrieve(amount2sheet(amount)) + +/datum/mineral_container/proc/accepts(obj/O) + return istype(O,sheet_type) + +/datum/mineral_container/proc/isFull(amt = 0) + return (amount + amt) >= max_amount + +/datum/mineral_container/proc/isEmpty(amt = 0) + return (amount - amt) <= 0 + +/datum/mineral_container/proc/amount2sheet(amt) + if(amt >= MINERAL_MATERIAL_AMOUNT) + return round(amt / MINERAL_MATERIAL_AMOUNT) + return 0 + +/datum/mineral_container/proc/sheet2amount(sheet_amt) + if(sheet_amt > 0) + return sheet_amt * MINERAL_MATERIAL_AMOUNT + return 0 diff --git a/code/datums/spell.dm b/code/datums/spell.dm index c01f7c427e6..ec7d7f0a6e8 100644 --- a/code/datums/spell.dm +++ b/code/datums/spell.dm @@ -198,20 +198,20 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin if(istype(target,/mob/living) && message) target << text("[message]") if(sparks_spread) - var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread() + var/datum/effect/effect/system/spark_spread/sparks = new sparks.set_up(sparks_amt, 0, location) //no idea what the 0 is sparks.start() if(smoke_spread) if(smoke_spread == 1) - var/datum/effect/effect/system/harmless_smoke_spread/smoke = new /datum/effect/effect/system/harmless_smoke_spread() + var/datum/effect/effect/system/smoke_spread/smoke = new smoke.set_up(smoke_amt, 0, location, smoke_amt == 1 ? 15 : 0) // if more than one smoke, spread it around smoke.start() else if(smoke_spread == 2) - var/datum/effect/effect/system/bad_smoke_spread/smoke = new /datum/effect/effect/system/bad_smoke_spread() + var/datum/effect/effect/system/smoke_spread/bad/smoke = new smoke.set_up(smoke_amt, 0, location, smoke_amt == 1 ? 15 : 0) // same here smoke.start() else if(smoke_spread == 3) - var/datum/effect/effect/system/sleep_smoke_spread/smoke = new /datum/effect/effect/system/sleep_smoke_spread() + var/datum/effect/effect/system/smoke_spread/sleeping/smoke = new smoke.set_up(smoke_amt, 0, location, smoke_amt == 1 ? 15 : 0) // same here smoke.start() diff --git a/code/datums/spells/ethereal_jaunt.dm b/code/datums/spells/ethereal_jaunt.dm index b41be9c5e4a..c8934867790 100644 --- a/code/datums/spells/ethereal_jaunt.dm +++ b/code/datums/spells/ethereal_jaunt.dm @@ -82,6 +82,7 @@ var/reappearing = 0 density = 0 anchored = 1 + invisibility = 60 /obj/effect/dummy/spell_jaunt/Destroy() // Eject contents if deleted somehow diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm index 8b19f95f6d5..b838dc96a32 100644 --- a/code/datums/uplink_item.dm +++ b/code/datums/uplink_item.dm @@ -478,7 +478,7 @@ var/list/uplink_items = list() /datum/uplink_item/stealthy_tools/stimpack name = "Stimpack" - desc = "Stimpacks, a tool of many great heroes, make you immune to stuns and knockdowns for about 5 minutes after injection." + desc = "Stimpacks, a tool of many great heroes, make you nearly immune to stuns and knockdowns for about 5 minutes after injection." item = /obj/item/weapon/reagent_containers/syringe/stimulants cost = 8 surplus = 90 @@ -501,6 +501,12 @@ var/list/uplink_items = list() item = /obj/item/weapon/storage/toolbox/syndicate cost = 1 +/datum/uplink_item/device_tools/surgerybag + name = "Syndicate Surgery Dufflebag" + desc = "The Syndicate surgery dufflebag is a toolkit containing all surgery tools, surgical drapes, a Syndicate brand MMI, a straitjacket, and a muzzle." + item = /obj/item/weapon/storage/backpack/dufflebag/syndiesurgery + cost = 5 + /datum/uplink_item/device_tools/medkit name = "Syndicate Combat Medic Kit" desc = "The syndicate medkit is a suspicious black and red. Included is a combat stimulant injector for rapid healing, a medical hud for quick identification of injured comrades, \ @@ -662,11 +668,13 @@ var/list/uplink_items = list() item = /obj/item/weapon/storage/box/syndie_kit/imp_adrenal cost = 8 -/datum/uplink_item/implants/explosive - name = "Explosive Implant" - desc = "An implant injected into the body, and later activated either manually or automatically upon death. Creates a moderately-sized fiery explosion. For those agents who know there is no going back." - item = /obj/item/weapon/storage/box/syndie_kit/imp_explosive - cost = 4 +/datum/uplink_item/implants/microbomb + name = "Microbomb Implant" + desc = "An implant injected into the body, and later activated either manually or automatically upon death. The more implants inside of you, the higher the explosive power. \ + Will permanently destroy your body, however." + item = /obj/item/weapon/storage/box/syndie_kit/imp_microbomb + cost = 2 + gamemodes = list(/datum/game_mode/nuclear) //CYBERNETIC IMPLANTS @@ -754,6 +762,13 @@ var/list/uplink_items = list() item = /obj/item/toy/syndicateballoon cost = 20 +/datum/uplink_item/implants/macrobomb + name = "Macrobomb Implant" + desc = "An implant injected into the body, and later activated either manually or automatically upon death. Maximum explosion power." + item = /obj/item/weapon/storage/box/syndie_kit/imp_macrobomb + cost = 20 + gamemodes = list(/datum/game_mode/nuclear) + /datum/uplink_item/badass/random name = "Random Item" desc = "Picking this choice will send you a random item from the list. Useful for when you cannot think of a strategy to finish your objectives with." diff --git a/code/game/data_huds.dm b/code/game/data_huds.dm index 688ae0c3b3f..edd4d2ad81b 100644 --- a/code/game/data_huds.dm +++ b/code/game/data_huds.dm @@ -93,6 +93,9 @@ var/datum/atom_hud/data/medical/basic/B = huds[DATA_HUD_MEDICAL_BASIC] B.update_suit_sensors(src) + var/turf/T = get_turf(src) + if (T) crewmonitor.queueUpdate(T.z) + //called when a carbon changes health /mob/living/carbon/proc/med_hud_set_health() var/image/holder = hud_list[HEALTH_HUD] @@ -101,6 +104,9 @@ else holder.icon_state = "hud[RoundHealth(health)]" + var/turf/T = get_turf(src) + if (T) crewmonitor.queueUpdate(T.z) + //called when a carbon changes stat, virus or XENO_HOST /mob/living/carbon/proc/med_hud_set_status() var/image/holder = hud_list[STATUS_HUD] @@ -126,6 +132,9 @@ if(wear_id) holder.icon_state = "hud[ckey(wear_id.GetJobName())]" + var/turf/T = get_turf(src) + if (T) crewmonitor.queueUpdate(T.z) + /mob/living/carbon/human/proc/sec_hud_set_implants() var/image/holder for(var/i in list(IMPTRACK_HUD, IMPLOYAL_HUD, IMPCHEM_HUD)) diff --git a/code/game/dna.dm b/code/game/dna.dm index 614e4698f55..1e269bd342c 100644 --- a/code/game/dna.dm +++ b/code/game/dna.dm @@ -410,7 +410,7 @@ user << "You lean on the back of [src] and start pushing the door open... (this will take about [breakout_time] minutes.)" user.visible_message("You hear a metallic creaking from [src]!") - if(do_after(user,(breakout_time*60*10))) //minutes * 60seconds * 10deciseconds + if(do_after(user,(breakout_time*60*10), target = src)) //minutes * 60seconds * 10deciseconds if(!user || user.stat != CONSCIOUS || user.loc != src || state_open || !locked) return diff --git a/code/game/gamemodes/abduction/abduction_gear.dm b/code/game/gamemodes/abduction/abduction_gear.dm index dfb27d32870..a68c0a91eb5 100644 --- a/code/game/gamemodes/abduction/abduction_gear.dm +++ b/code/game/gamemodes/abduction/abduction_gear.dm @@ -209,7 +209,7 @@ user << "You need to be next to the specimen to prepare it for transport!" return user << "You start preparing the specimen for transport..." - if(do_after(user, 100)) + if(do_after(user, 100, target = target)) marked = target user << "You finish preparing the specimen for transport." diff --git a/code/game/gamemodes/abduction/machinery/console.dm b/code/game/gamemodes/abduction/machinery/console.dm index 89f37c05ccf..94a321ad72c 100644 --- a/code/game/gamemodes/abduction/machinery/console.dm +++ b/code/game/gamemodes/abduction/machinery/console.dm @@ -41,7 +41,7 @@ return if(!IsAbductor(user)) user << "You start mashing alien buttons at random!" - if(do_after(user,100)) + if(do_after(user,100, target = src)) TeleporterSend() return user.set_machine(src) diff --git a/code/game/gamemodes/antag_spawner.dm b/code/game/gamemodes/antag_spawner.dm index a621168182a..99a9cafeedc 100644 --- a/code/game/gamemodes/antag_spawner.dm +++ b/code/game/gamemodes/antag_spawner.dm @@ -64,7 +64,7 @@ H << "Unable to reach your apprentice! You can either attack the spellbook with the contract to refund your points, or wait and try again later." /obj/item/weapon/antag_spawner/contract/spawn_antag(var/client/C, var/turf/T, var/type = "") - PoolOrNew(/obj/effect/effect/harmless_smoke, T) + PoolOrNew(/obj/effect/effect/smoke, T) var/mob/living/carbon/human/M = new/mob/living/carbon/human(T) C.prefs.copy_to(M) M.key = C.key diff --git a/code/game/gamemodes/blob/blobs/blob_mobs.dm b/code/game/gamemodes/blob/blobs/blob_mobs.dm index 3a6ef5e1d26..8580c480ab1 100644 --- a/code/game/gamemodes/blob/blobs/blob_mobs.dm +++ b/code/game/gamemodes/blob/blobs/blob_mobs.dm @@ -90,7 +90,7 @@ /mob/living/simple_animal/hostile/blob/blobspore/death(gibbed) ..(1) // On death, create a small smoke of harmful gas (s-Acid) - var/datum/effect/effect/system/chem_smoke_spread/S = new + var/datum/effect/effect/system/smoke_spread/chem/S = new var/turf/location = get_turf(src) // Create the reagents to put into the air diff --git a/code/game/gamemodes/blob/overmind.dm b/code/game/gamemodes/blob/overmind.dm index 40ccd99868f..005c40b3364 100644 --- a/code/game/gamemodes/blob/overmind.dm +++ b/code/game/gamemodes/blob/overmind.dm @@ -15,7 +15,7 @@ var/blob_points = 0 var/max_blob_points = 100 var/last_attack = 0 - var/datum/reagent/blob_reagent_datum = new/datum/reagent() + var/datum/reagent/blob/blob_reagent_datum = new/datum/reagent/blob() var/list/blob_mobs = list() var/ghostimage = null diff --git a/code/game/gamemodes/blob/powers.dm b/code/game/gamemodes/blob/powers.dm index a9e9bb233ae..446e324b486 100644 --- a/code/game/gamemodes/blob/powers.dm +++ b/code/game/gamemodes/blob/powers.dm @@ -276,7 +276,8 @@ last_attack = world.time OB.expand(T, 0, blob_reagent_datum.color) for(var/mob/living/L in T) - blob_reagent_datum.reaction_mob(L, TOUCH) + blob_reagent_datum.reaction_mob(L, TOUCH, 25) + blob_reagent_datum.send_message(L) OB.color = blob_reagent_datum.color return diff --git a/code/game/gamemodes/blob/theblob.dm b/code/game/gamemodes/blob/theblob.dm index b7dcf10b6f6..30c3261bddd 100644 --- a/code/game/gamemodes/blob/theblob.dm +++ b/code/game/gamemodes/blob/theblob.dm @@ -196,6 +196,17 @@ color = a_color return +/obj/effect/blob/examine(mob/user) + ..() + user << "It looks like it's of a [get_chem_name()] kind." + return + +/obj/effect/blob/proc/get_chem_name() + for(var/mob/camera/blob/B in mob_list) + if(lowertext(B.blob_reagent_datum.color) == lowertext(src.color)) // Goddamit why we use strings for these + return B.blob_reagent_datum.name + return "unknown" + /obj/effect/blob/normal icon_state = "blob" luminosity = 0 diff --git a/code/game/gamemodes/changeling/powers/mutations.dm b/code/game/gamemodes/changeling/powers/mutations.dm index 40884bda963..1ff47bb9dda 100644 --- a/code/game/gamemodes/changeling/powers/mutations.dm +++ b/code/game/gamemodes/changeling/powers/mutations.dm @@ -271,8 +271,9 @@ name = "flesh mass" icon_state = "lingspacehelmet" desc = "A covering of pressure and temperature-resistant organic tissue with a glass-like chitin front." - flags = HEADCOVERSEYES | BLOCKHAIR | HEADCOVERSMOUTH | STOPSPRESSUREDMAGE | NODROP //Again, no THICKMATERIAL. + flags = BLOCKHAIR | STOPSPRESSUREDMAGE | NODROP //Again, no THICKMATERIAL. armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) + flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH /obj/item/clothing/head/helmet/space/changeling/dropped() qdel(src) @@ -320,9 +321,10 @@ name = "chitinous mass" desc = "A tough, hard covering of black chitin with transparent chitin in front." icon_state = "lingarmorhelmet" - flags = HEADCOVERSEYES | BLOCKHAIR | NODROP + flags = BLOCKHAIR | NODROP armor = list(melee = 40, bullet = 15, laser = 30,energy = 10, bomb = 5, bio = 2, rad = 0) flags_inv = HIDEEARS + flags_cover = HEADCOVERSEYES /obj/item/clothing/head/helmet/changeling/dropped() qdel(src) diff --git a/code/game/gamemodes/cult/cult_items.dm b/code/game/gamemodes/cult/cult_items.dm index 90ebb2d9f93..bfdacd24ad3 100644 --- a/code/game/gamemodes/cult/cult_items.dm +++ b/code/game/gamemodes/cult/cult_items.dm @@ -34,7 +34,7 @@ icon_state = "culthood" desc = "A hood worn by the followers of Nar-Sie." flags_inv = HIDEFACE - flags = HEADCOVERSEYES + flags_cover = HEADCOVERSEYES armor = list(melee = 30, bullet = 10, laser = 5,energy = 5, bomb = 0, bio = 0, rad = 0) cold_protection = HEAD min_cold_protection_temperature = HELMET_MIN_TEMP_PROTECT @@ -70,8 +70,9 @@ item_state = "magus" desc = "A helm worn by the followers of Nar-Sie." flags_inv = HIDEFACE - flags = HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR + flags = BLOCKHAIR armor = list(melee = 30, bullet = 30, laser = 30,energy = 20, bomb = 0, bio = 0, rad = 0) + flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH /obj/item/clothing/suit/magusred name = "magus robes" diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index 18a63e3ed4f..7f671c28610 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -629,7 +629,7 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology", V.show_message("[user] slices open a finger and begins to chant and paint symbols on the floor.", 3, "You hear chanting.", 2) user << "You slice open one of your fingers and begin drawing a rune on the floor whilst chanting the ritual that binds your life essence with the dark arcane energies flowing through the surrounding world." user.take_overall_damage((rand(9)+1)/10) // 0.1 to 1.0 damage - if(do_after(user, 50)) + if(do_after(user, 50, target = user)) if(usr.get_active_hand() != src) return var/mob/living/carbon/human/H = user diff --git a/code/game/gamemodes/gang/dominator.dm b/code/game/gamemodes/gang/dominator.dm index b72b8f55b81..0a6f4a0e471 100644 --- a/code/game/gamemodes/gang/dominator.dm +++ b/code/game/gamemodes/gang/dominator.dm @@ -6,8 +6,8 @@ density = 1 anchored = 1.0 layer = 3.6 - var/maxhealth = 300 - var/health = 300 + var/maxhealth = 200 + var/health = 200 var/gang var/operating = 0 @@ -40,6 +40,10 @@ user << "System on standby." user << "System Integrity: [round((health/maxhealth)*100,1)]%" +/obj/machinery/dominator/process() + var/datum/game_mode/gang/mode = ticker.mode + if(((gang == "A") && mode.A_timer) || ((gang == "B") && mode.B_timer)) + playsound(loc, 'sound/items/timer.ogg', 30, 0) /obj/machinery/dominator/proc/healthcheck(var/damage) var/iconname = "dominator" @@ -89,21 +93,12 @@ if(get_security_level() == "delta") set_security_level("red") - for(var/obj/item/weapon/pinpointer/pointer in world) - pointer.scandisk() //Reset the pinpointer - - else if(isnum(mode.A_timer) || isnum(mode.B_timer)) - for(var/obj/machinery/dominator/dom in world) - if(dom.operating) - for(var/obj/item/weapon/pinpointer/pointer in world) - pointer.the_disk = dom //The pinpointer now tracks the dominator's location - break - ticker.mode.message_gangtools(((gang=="A") ? ticker.mode.A_tools : ticker.mode.B_tools),"Hostile takeover cancelled: Dominator is no longer operational.",1,1) SetLuminosity(0) icon_state = "dominator-broken" operating = -1 + SSmachine.processing -= src /obj/machinery/dominator/Destroy() if(operating != -1) @@ -168,20 +163,29 @@ examine(user) return - if(isnum(timer)) //In theory, this shouldn't happen. But if it does, they get this meme + if(isnum(timer)) user << "Error: Hostile Takeover is already in progress." return + if(tempgang == "A" ? !mode.A_dominations : !mode.B_dominations) + user << "Error: Unable to breach station network. Firewall has logged our signature and is blocking all further attempts." + return + var/time = max(300,900 - ((round((gang_territory/start_state.num_territories)*200, 1) - 60) * 15)) - if(alert(user,"With [round((gang_territory/start_state.num_territories)*100, 1)]% station control, a takeover will require [time] seconds.\nYour gang will be unable to gain influence while it is active.\nThe entire station will likely be alerted to it once it starts.\nAre you ready?","Confirm","Ready","Later") == "Ready") + if(alert(user,"With [round((gang_territory/start_state.num_territories)*100, 1)]% station control, a takeover will require [time] seconds.\nYour gang will be unable to gain influence while it is active.\nThe entire station will likely be alerted to it once it starts.\nYou have [tempgang == "A" ? mode.A_dominations : mode.B_dominations] attempt(s) remaining. Are you ready?","Confirm","Ready","Later") == "Ready") if ((!in_range(src, user) || !istype(src.loc, /turf))) return 0 gang = tempgang + if(gang == "A") + mode.A_dominations -- + else + mode.B_dominations -- mode.domination(gang,1,src) src.name = "[gang_name(gang)] Gang [src.name]" healthcheck(0) operating = 1 ticker.mode.message_gangtools(((gang=="A") ? ticker.mode.A_tools : ticker.mode.B_tools),"Hostile takeover in progress: Estimated [time] seconds until victory.") + SSmachine.processing += src /obj/machinery/dominator/attack_alien(mob/living/user) user.do_attack_animation(src) diff --git a/code/game/gamemodes/gang/gang.dm b/code/game/gamemodes/gang/gang.dm index c838e61d54b..9db0d34f83e 100644 --- a/code/game/gamemodes/gang/gang.dm +++ b/code/game/gamemodes/gang/gang.dm @@ -11,6 +11,8 @@ var/datum/gang_points/gang_points var/A_style var/B_style + var/A_fighting_style + var/B_fighting_style var/list/A_territory = list() var/list/B_territory = list() var/list/A_territory_new = list() @@ -31,6 +33,9 @@ // Victory timers var/A_timer = "OFFLINE" var/B_timer = "OFFLINE" + //How many attempts at domination each team is allowed + var/A_dominations = 2 + var/B_dominations = 2 /////////////////////////// //Announces the game type// /////////////////////////// @@ -74,6 +79,7 @@ modePlayer += A_bosses modePlayer += B_bosses + assign_gang_fighting_style() ..() /datum/game_mode/gang/process(seconds) @@ -101,11 +107,23 @@ log_game("[boss.key] has been selected as the boss for the [gang_name("B")] Gang (B)") /datum/game_mode/proc/forge_gang_objectives(var/datum/mind/boss_mind) - var/datum/objective/rival_obj = new - rival_obj.owner = boss_mind - rival_obj.explanation_text = "Preform a hostile takeover of the station with a Dominator." - boss_mind.objectives += rival_obj + if(istype(ticker.mode, /datum/game_mode/gang)) + var/datum/objective/rival_obj = new + rival_obj.owner = boss_mind + rival_obj.explanation_text = "Preform a hostile takeover of the station with a Dominator." + boss_mind.objectives += rival_obj +/datum/game_mode/proc/assign_gang_fighting_style() + var/aName = gang_name("A") + if(aName == "Sleeping Carp") + A_fighting_style = "martial" + else + A_fighting_style = "normal" + var/bName = gang_name("B") + if(bName == "Sleeping Carp") + B_fighting_style = "martial" + else + B_fighting_style = "normal" /datum/game_mode/proc/greet_gang(var/datum/mind/boss_mind, var/you_are=1) var/obj_count = 1 @@ -117,18 +135,15 @@ /datum/game_mode/gang/proc/domination(var/gang,var/modifier=1,var/obj/dominator) if(gang=="A") - A_timer = max(180,900 - ((round((A_territory.len/start_state.num_territories)*200, 1) - 60) * 15)) * modifier + A_timer = max(300,900 - ((round((A_territory.len/start_state.num_territories)*200, 1) - 60) * 15)) * modifier if(gang=="B") - B_timer = max(180,900 - ((round((B_territory.len/start_state.num_territories)*200, 1) - 60) * 15)) * modifier + B_timer = max(300,900 - ((round((B_territory.len/start_state.num_territories)*200, 1) - 60) * 15)) * modifier if(gang && dominator) var/area/domloc = get_area(dominator.loc) - priority_announce("Hostile runtimes detected in all station systems. A network breach by the [gang_name(gang)] Gang has been located in [domloc].","Network Alert") + priority_announce("Network breach detected in [initial(domloc.name)]. The [gang_name(gang)] Gang is attempting to seize control of the station!","Network Alert") set_security_level("delta") SSshuttle.emergencyNoEscape = 1 - for(var/obj/item/weapon/pinpointer/point in world) - point.the_disk = dominator //The pinpointer now tracks the dominator's location - /////////////////////////////////////////////////////////////////////////// //This equips the bosses with their gear, and makes the clown not clumsy// /////////////////////////////////////////////////////////////////////////// @@ -162,7 +177,7 @@ else gangtool.register_device(mob) mob << "The Gangtool in your [where] will allow you to purchase items, send messages to your gangsters and recall the emergency shuttle from anywhere on the station." - mob << "You can also promote your gang members to lieutenant by giving them an unregistered gangtool. Lieutenants cannot be deconverted and are able to use recruitment pens and gangtools." + mob << "You can also promote your gang members to lieutenant by having them use an unregistered gangtool. Unlike regular gangsters, Lieutenants cannot be deconverted and are able to use recruitment pens and gangtools." var/where2 = mob.equip_in_one_of_slots(T, slots) if (!where2) @@ -189,7 +204,7 @@ if(!gangtool.can_use(user)) return 0 - var/gang_style_list = list("Gang Colors","Gang Colored Suits","Black Suits","White Suits","Leather Jackets","Leather Overcoats","Tactical Turtlenecks","Soviet Uniforms") + var/gang_style_list = list("Gang Colored Jumpsuits","Gang Colored Suits","Black Suits","White Suits","Leather Jackets","Leather Overcoats","Puffer Jackets","Tactical Turtlenecks","Soviet Uniforms") var/style if(gang == "A") if(!A_style) @@ -207,7 +222,7 @@ if(gangtool.can_use(user) && (((gang == "A") ? gang_points.A : gang_points.B) >= 1)) var/outfit_path switch(style) - if("Gang Colors") + if("Gang Colored Jumpsuits") if(gang == "A") outfit_path = /obj/item/clothing/under/color/blue if(gang == "B") @@ -221,6 +236,8 @@ outfit_path = /obj/item/clothing/under/suit_jacket/charcoal if("White Suits") outfit_path = /obj/item/clothing/under/suit_jacket/white + if("Puffer Jackets") + outfit_path = /obj/item/clothing/suit/jacket/puffer if("Leather Jackets") outfit_path = /obj/item/clothing/suit/jacket/leather if("Leather Overcoats") @@ -232,8 +249,8 @@ if(outfit_path) var/obj/item/clothing/outfit = new outfit_path(user.loc) - outfit.armor = list(melee = 10, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 0, rad = 0) - outfit.desc += " Combat-tailored for the [gang_name(gang)] Gang." + outfit.armor = list(melee = 20, bullet = 30, laser = 10, energy = 10, bomb = 20, bio = 0, rad = 0) + outfit.desc += " Tailored for the [gang_name(gang)] Gang to offer the wearer moderate protection against ballistics and physical trauma." outfit.gang = gang return 1 @@ -274,9 +291,9 @@ //Deals with converting players to a gang// /////////////////////////////////////////// /datum/game_mode/proc/add_gangster(datum/mind/gangster_mind, var/gang, var/check = 1) - if(check && isloyal(gangster_mind.current)) //Check to see if the potential gangster is implanted - return 0 if(gangster_mind in (A_bosses | A_gang | B_bosses | B_gang)) + return 0 + if(check && isloyal(gangster_mind.current)) //Check to see if the potential gangster is implanted return 1 if(gang == "A") A_gang += gangster_mind @@ -380,7 +397,7 @@ if(!finished) world << "The station was [station_was_nuked ? "destroyed!" : "evacuated before either gang could claim it!"]" else - world << "The [finished=="A" ? gang_name("A") : gang_name("B")] Gang successfully preformed a hostile takeover of the station!!" + world << "The [finished=="A" ? gang_name("A") : gang_name("B")] Gang successfully performed a hostile takeover of the station!!" ..() return 1 @@ -436,8 +453,8 @@ ////////////////////////////////////////////////////////// /datum/gang_points - var/A = 25 - var/B = 25 + var/A = 15 + var/B = 15 var/next_point_interval = 1800 var/next_point_time @@ -482,24 +499,30 @@ //Gangster must be alive and on station if((gangster.stat == DEAD) || (gangster.z > ZLEVEL_STATION)) continue + + var/obj/item/clothing/outfit + var/obj/item/clothing/gang_outfit if(gangster.w_uniform) - var/obj/item/clothing/outfit = gangster.w_uniform - if(outfit.gang == "A") - A_uniformed ++ - if(outfit.gang == "B") - B_uniformed ++ + outfit = gangster.w_uniform + if(outfit.gang) + gang_outfit = outfit if(gangster.wear_suit) - var/obj/item/clothing/outfit = gangster.wear_suit - if(outfit.gang == "A") + outfit = gangster.wear_suit + if(outfit.gang) + gang_outfit = outfit + + if(gang_outfit) + gangster << "The [gang_name(gang_outfit.gang)] Gang's influence grows as you wear [gang_outfit]." + if(gang_outfit.gang == "A") A_uniformed ++ - if(outfit.gang == "B") + else B_uniformed ++ //Calculate and report influence growth ticker.mode.message_gangtools(ticker.mode.A_tools,"*---------*
[gang_name("A")] Gang Status Report:") var/A_message = "" if(gangmode && isnum(gangmode.A_timer)) - var/new_time = max(180,gangmode.A_timer - ((ticker.mode.A_territory.len + A_uniformed) * 2)) + var/new_time = max(300,gangmode.A_timer - ((ticker.mode.A_territory.len + A_uniformed) * 2)) if(new_time < gangmode.A_timer) A_message += "Takeover shortened by [gangmode.A_timer - new_time] seconds for defending [ticker.mode.A_territory.len] territories and [A_uniformed] uniformed gangsters.
" gangmode.A_timer = new_time @@ -509,13 +532,13 @@ if(A_new != A) A_message += "Gang influence has increased by [A_new - A] for defending [ticker.mode.A_territory.len] territories and [A_uniformed] uniformed gangsters.
" A = A_new - A_message += "Your gang now has [A_new] influence." + A_message += "Your gang now has [A] influence." ticker.mode.message_gangtools(ticker.mode.A_tools,A_message,0) ticker.mode.message_gangtools(ticker.mode.B_tools,"[gang_name("B")] Gang Status Report:") var/B_message = "" if(gangmode && isnum(gangmode.B_timer)) - var/new_time = max(180,gangmode.B_timer - ((ticker.mode.B_territory.len + B_uniformed) * 2)) + var/new_time = max(300,gangmode.B_timer - ((ticker.mode.B_territory.len + B_uniformed) * 2)) if(new_time < gangmode.B_timer) A_message += "Takeover shortened by [gangmode.B_timer - new_time] seconds for defending [ticker.mode.B_territory.len] territories and [B_uniformed] uniformed gangsters.
" gangmode.B_timer = new_time @@ -525,7 +548,7 @@ if(B_new != B) A_message += "Gang influence has increased by [B_new - B] for defending [ticker.mode.B_territory.len] territories and [B_uniformed] uniformed gangsters.
" B = B_new - B_message += "Your gang now has [B_new] influence." + B_message += "Your gang now has [B] influence." ticker.mode.message_gangtools(ticker.mode.B_tools,B_message,0) @@ -569,7 +592,7 @@ //Increase outfit stock for(var/obj/item/device/gangtool/tool in (ticker.mode.A_tools | ticker.mode.B_tools)) - tool.outfits = min(tool.outfits+3,10) + tool.outfits = min(tool.outfits+2,5) //Restart the counter start() @@ -583,7 +606,7 @@ return for(var/obj/item/device/gangtool/tool in gangtools) var/mob/living/mob = get(tool.loc,/mob/living) - if(mob && mob.mind) + if(mob && mob.mind && mob.stat == CONSCIOUS) if(((tool.gang == "A") && ((mob.mind in A_gang) || (mob.mind in A_bosses))) || ((tool.gang == "B") && ((mob.mind in B_gang) || (mob.mind in B_bosses)))) mob << "\icon[tool] [message]" if(beep) diff --git a/code/game/gamemodes/gang/gang_pen.dm b/code/game/gamemodes/gang/gang_pen.dm new file mode 100644 index 00000000000..0b978d39c4f --- /dev/null +++ b/code/game/gamemodes/gang/gang_pen.dm @@ -0,0 +1,46 @@ +/* + * Gang Boss Pens + */ +/obj/item/weapon/pen/gang + origin_tech = "materials=2;syndicate=5" + var/cooldown + +/obj/item/weapon/pen/gang/attack(mob/living/M, mob/user) + if(!istype(M)) return + if(..(M,user,1)) + if(ishuman(M) && ishuman(user) && M.stat != DEAD) + if(user.mind && ((user.mind in ticker.mode.A_bosses) || (user.mind in ticker.mode.B_bosses))) + if(cooldown) + user << "[src] needs more time to recharge before it can be used." + return + if(M.client) + M.mind_initialize() //give them a mind datum if they don't have one. + if(user.mind in ticker.mode.A_bosses) + var/recruitable = ticker.mode.add_gangster(M.mind,"A") + switch(recruitable) + if(2) + M.Paralyse(5) + cooldown(max(0,ticker.mode.B_gang.len - ticker.mode.A_gang.len)) + if(1) + user << "This mind is resistant to recruitment!" + else + user << "This mind has already been recruited into a gang!" + else if(user.mind in ticker.mode.B_bosses) + var/recruitable = ticker.mode.add_gangster(M.mind,"B") + switch(recruitable) + if(2) + M.Paralyse(5) + cooldown(max(0,ticker.mode.A_gang.len - ticker.mode.B_gang.len)) + if(1) + user << "This mind is resistant to recruitment!" + else + user << "This mind has already been recruited into a gang!" + +/obj/item/weapon/pen/gang/proc/cooldown(modifier) + cooldown = 1 + icon_state = "pen_blink" + spawn(max(50,1800-(modifier*300))) + cooldown = 0 + icon_state = "pen" + var/mob/M = get(src, /mob) + M << "\icon[src] [src][(src.loc == M)?(""):(" in your [src.loc]")] vibrates softly." \ No newline at end of file diff --git a/code/game/gamemodes/gang/recaller.dm b/code/game/gamemodes/gang/recaller.dm index 8459d1fc3ea..f8bfa02bbd8 100644 --- a/code/game/gamemodes/gang/recaller.dm +++ b/code/game/gamemodes/gang/recaller.dm @@ -10,10 +10,10 @@ throw_range = 7 flags = CONDUCT var/gang //Which gang uses this? - var/boss = 1 //If it has the power to promote gang members + var/boss = 1 //Is this the original boss? var/recalling = 0 - var/promotions = 0 - var/outfits = 5 + var/outfits = 3 + var/free_pen = 0 /obj/item/device/gangtool/New() //Initialize supply point income if it hasn't already been started if(!ticker.mode.gang_points) @@ -26,116 +26,165 @@ if (!can_use(user)) return + var/gang_bosses = ((gang == "A")? ticker.mode.A_bosses.len : ticker.mode.B_bosses.len) + var/dat if(!gang) - dat += "This device is not registered.
" + dat += "This device is not registered.

" if(user.mind in (ticker.mode.A_bosses | ticker.mode.B_bosses)) - dat += "Give this device to another member of your organization to use.
" - else + dat += "Give this device to another member of your organization to use to promote them.
" + dat += "If this is meant as a spare device for yourself:
" dat += "Register Device
" + else if (gang_bosses < 3) + dat += "You have been selected for a promotion!
" + dat += "Register Device
" + else + dat += "No promotions available: All positions filled." else var/datum/game_mode/gang/gangmode if(istype(ticker.mode, /datum/game_mode/gang)) gangmode = ticker.mode - var/gang_size = ((gang == "A")? (ticker.mode.A_gang.len + ticker.mode.A_bosses.len) : (ticker.mode.B_gang.len + ticker.mode.B_bosses.len)) + var/gang_size = gang_bosses + ((gang == "A")? ticker.mode.A_gang.len : ticker.mode.B_gang.len) var/gang_territory = ((gang == "A")? ticker.mode.A_territory.len : ticker.mode.B_territory.len) var/points = ((gang == "A") ? ticker.mode.gang_points.A : ticker.mode.gang_points.B) var/timer if(gangmode) timer = ((gang == "A") ? gangmode.A_timer : gangmode.B_timer) if(isnum(timer)) - dat += "
Takeover In Progress:
[timer] seconds remain

" + dat += "
Takeover In Progress:
[timer] seconds remain

" dat += "Registration: [(gang == "A")? gang_name("A") : gang_name("B")] Gang [boss ? "Administrator" : "Lieutenant"]
" dat += "Organization Size: [gang_size] | Station Control: [round((gang_territory/start_state.num_territories)*100, 1)]%
" + dat += "Influence: [points]
" + dat += "Time until Influence grows: [(points >= 999) ? ("--:--") : (time2text(ticker.mode.gang_points.next_point_time - world.time, "mm:ss"))]
" + dat += "
" + dat += "Gangtool Functions:
" + + dat += "Send Message to Gang
" if(outfits > 0) - dat += "Create Gang Outfit
" + dat += "Create Armored Gang Outfit
" else dat += "Create Gang Outfit (Restocking)
" - dat += "Send Gang-wide Message
" if(gangmode) dat += "Recall Emergency Shuttle
" dat += "
" - - dat += "Influence: [points]
" - dat += "Time until Influence grows: [(points >= 999) ? ("--:--") : (time2text(ticker.mode.gang_points.next_point_time - world.time, "mm:ss"))]
" - dat += "
" dat += "Purchase Weapons:
" - dat += "(10 Influence) " - if(points >= 10) - dat += "Switchblade
" - else - dat += "Switchblade
" + ///////////////// + // NORMAL GANG // + ///////////////// - dat += "(20 Influence) " - if(points >= 20) - dat += "10mm Pistol
" - else - dat += "10mm Pistol
" + if(!gangmode || (gang == "A" && gangmode.A_fighting_style == "normal") || (gang == "B" && gangmode.B_fighting_style == "normal")) //If the gamemode is not gang, always use standard loadout. + dat += "(10 Influence) " + if(points >= 10) + dat += "Switchblade
" + else + dat += "Switchblade
" - dat += "(10 Influence) " - if(points >= 10) - dat += "10mm Ammo
" - else - dat += "10mm Ammo
" + dat += "(25 Influence) " + if(points >= 25) + dat += "10mm Pistol
" + else + dat += "10mm Pistol
" - dat += "(40 Influence) " - if(points >= 40) - dat += "Mini Uzi
" - else - dat += "Mini Uzi
" + dat += "(10 Influence) " + if(points >= 10) + dat += "10mm Ammo
" + else + dat += "10mm Ammo
" - dat += "(25 Influence) " - if(points >= 25) - dat += "Uzi Ammo
" - else - dat += "Uzi Magazine
" + dat += "(50 Influence) " + if(points >= 50) + dat += "Mini Uzi
" + else + dat += "Mini Uzi
" + + dat += "(20 Influence) " + if(points >= 20) + dat += "Uzi Ammo
" + else + dat += "Uzi Magazine
" + + dat += "
" + + ////////////////// + // MARTIAL ARTS // + ////////////////// + + else if((gang == "A" && gangmode.A_fighting_style == "martial") || (gang == "B" && gangmode.B_fighting_style == "martial")) + dat += "(10 Influence) " + if(points >= 10) + dat += "Bo Staff
" + else + dat += "Bo Staff
" + + dat += "(20 Influence) " + if(points >= 20) + dat += "Wrestling Belt
" + else + dat += "Wrestling Belt
" + + dat += "(30 Influence) " + if(points >= 30) + dat += "Sleeping Carp Scroll (one-use)
" + else + dat += "Sleeping Carp Scroll (one-use)
" + dat += "
" + + //////////////////////// + // STANDARD EQUIPMENT // + //////////////////////// - dat += "
" dat += "Purchase Equipment:
" dat += "(5 Influence) " if(points >= 5) - dat += "Territory Spraycan
" + dat += "Territory Spraycan
" else - dat += "Territory Spraycan
" + dat += "Territory Spraycan
" dat += "(10 Influence) " if(points >= 10) - dat += "Bulletproof Vest
" + dat += "C4 Explosive
" else - dat += "Bulletproof Vest
" + dat += "C4 Explosive
" - dat += "(30 Influence) " - if(points >= 30) + if(free_pen) + dat += "(ONE FREE) " + else + dat += "(50 Influence) " + if(free_pen || (points >= 50)) dat += "Recruitment Pen
" else dat += "Recruitment Pen
" - if(boss) - if(promotions >= 3) - dat += "(Out of stock) Promote a Gangster
" - else - dat += "([(promotions*10)+10] Influence, [3-promotions] left) " - if(points >= (promotions*10)+10) - dat += "Promote a Gangster
" - else - dat += "Promote a Gangster
" + var/tool_cost = (boss ? 10 : 30) + var/gangtooldesc = "Promote a Gangster ([3-gang_bosses] left)" + if(gang_bosses >= 3) + gangtooldesc = "Additional Gangtools" + dat += "([tool_cost] Influence) " + if(points >= tool_cost) + dat += "[gangtooldesc]
" + else + dat += "[gangtooldesc]
" + if(gangmode) - dat += "(30 Influence) " - if(points >= 30) - dat += "Station Dominator
" + if(gang == "A" ? !gangmode.A_dominations : !gangmode.B_dominations) + dat += "(Out of stock) Station Dominator" else - dat += "Station Dominator
" - dat += "(Estimated Takeover Time: [round(max(300,900 - ((round((gang_territory/start_state.num_territories)*200, 10) - 60) * 15))/60,1)] minutes)
" + dat += "(30 Influence) " + if(points >= 30) + dat += "Station Dominator
" + else + dat += "Station Dominator
" + dat += "(Estimated Takeover Time: [round(max(300,900 - ((round((gang_territory/start_state.num_territories)*200, 10) - 60) * 15))/60,1)] minutes)
" dat += "
" dat += "Refresh
" - var/datum/browser/popup = new(user, "gangtool", "Welcome to GangTool v0.4", 340, 600) + var/datum/browser/popup = new(user, "gangtool", "Welcome to GangTool v2.1", 340, 600) popup.set_content(dat) popup.open() @@ -147,6 +196,10 @@ add_fingerprint(usr) + if(recalling) + usr << "Device is busy. Shuttle recall in progress." + return + if(href_list["register"]) register_device(usr) @@ -166,43 +219,62 @@ item_type = /obj/item/weapon/switchblade points = 10 if("pistol") - if(points >= 20) + if(points >= 25) item_type = /obj/item/weapon/gun/projectile/automatic/pistol - points = 20 + points = 25 if("10mmammo") if(points >= 10) item_type = /obj/item/ammo_box/magazine/m10mm points = 10 if("uzi") - if(points >= 40) + if(points >= 50) item_type = /obj/item/weapon/gun/projectile/automatic/mini_uzi - points = 40 - if("9mmammo") - if(points >= 25) - item_type = /obj/item/ammo_box/magazine/uzim9mm - points = 25 - if("vest") + points = 50 + if("scroll") + if(points >= 30) + item_type = /obj/item/weapon/sleeping_carp_scroll + points = 30 + if("wrestlingbelt") + if(points >= 20) + item_type = /obj/item/weapon/storage/belt/champion/wrestling + points = 20 + if("bostaff") if(points >= 10) - item_type = /obj/item/clothing/suit/armor/bulletproof + item_type = /obj/item/weapon/twohanded/bostaff + points = 10 + if("9mmammo") + if(points >= 20) + item_type = /obj/item/ammo_box/magazine/uzim9mm + points = 20 + if("C4") + if(points >= 10) + item_type = /obj/item/weapon/c4 points = 10 if("pen") - if(points >= 30) + if(free_pen) item_type = /obj/item/weapon/pen/gang - points = 30 + free_pen = 0 + points = 0 + else if(points >= 50) + item_type = /obj/item/weapon/pen/gang + points = 50 if("gangtool") - if((promotions < 3) && (points >= (promotions*10)+10)) + var/tool_cost = (boss ? 10 : 30) + if(points >= tool_cost) item_type = /obj/item/device/gangtool/lt - points = (promotions*10)+10 - promotions++ + points = tool_cost if("dominator") if(istype(ticker.mode, /datum/game_mode/gang)) var/datum/game_mode/gang/mode = ticker.mode if(isnum((gang == "A") ? mode.A_timer : mode.B_timer)) return - var/usrarea = get_area(usr.loc) + if(gang == "A" ? !mode.A_dominations : !mode.B_dominations) + return + + var/area/usrarea = get_area(usr.loc) var/usrturf = get_turf(usr.loc) - if(istype(usrarea,/area/space) || istype(usrturf,/turf/space) || usr.z != 1) + if(initial(usrarea.name) == "Space" || istype(usrturf,/turf/space) || usr.z != 1) usr << "You can only use this on the station!" return @@ -224,17 +296,21 @@ var/obj/purchased = new item_type(get_turf(usr)) var/mob/living/carbon/human/H = usr H.put_in_any_hand_if_possible(purchased) - ticker.mode.message_gangtools(((gang=="A")? ticker.mode.A_tools : ticker.mode.B_tools), "A [href_list["purchase"]] was purchased by [usr] for [points] Influence.") + if(points) + ticker.mode.message_gangtools(((gang=="A")? ticker.mode.A_tools : ticker.mode.B_tools), "A [href_list["purchase"]] was purchased by [usr] for [points] Influence.") log_game("A [href_list["purchase"]] was purchased by [key_name(usr)] for [points] Influence.") + else + usr << "Not enough influence." + else if(href_list["choice"]) switch(href_list["choice"]) + if("recall") + recall(usr) if("outfit") if(outfits > 0) ticker.mode.gang_outfit(usr,src,gang) outfits -= 1 - if("recall") - recall(usr) if("ping") ping_gang(usr) attack_self(usr) @@ -244,7 +320,7 @@ if(!user) return var/message = stripped_input(user,"Discreetly send a gang-wide message.","Send Message") as null|text - if(!message || (message == "") || !can_use(user)) + if(!message || !can_use(user)) return if(user.z > 2) user << "\icon[src]Error: Station out of range." @@ -257,7 +333,7 @@ if(members.len) var/ping = "[gang_name(gang)] [boss ? "Gang Boss" : "Gang Lieutenant"]: [message]" for(var/datum/mind/ganger in members) - if(ganger.current.z <= 2) + if((ganger.current.z <= 2) && (ganger.current.stat == CONSCIOUS)) ganger.current << ping for(var/mob/M in dead_mob_list) M << ping @@ -265,6 +341,12 @@ /obj/item/device/gangtool/proc/register_device(var/mob/user) + if(!(user.mind in (ticker.mode.A_bosses|ticker.mode.B_bosses))) + var/gang_bosses = ((gang == "A")? ticker.mode.A_bosses.len : ticker.mode.B_bosses.len) + if(gang_bosses >= 3) + user << "\icon[src] Error: All positions filled." + return + if(jobban_isbanned(user, "gangster") || jobban_isbanned(user, "Syndicate")) user << "\icon[src] ACCESS DENIED: Blacklisted user." return 0 @@ -298,50 +380,61 @@ ticker.mode.forge_gang_objectives(user.mind) ticker.mode.greet_gang(user.mind,0) user << "The Gangtool you registered will allow you to purchase items, send messages to your gangsters and to recall the emergency shuttle from anywhere on the station." - user << "You may also now use recruitment pens to grow your gang membership. Use them on unsuspecting crew members to recruit them." + user << "Unlike regular gangsters, you may use recruitment pens to add recruits to your gang. Use them on unsuspecting crew members to recruit them. Don't forget to get your one free pen from the gangtool." if(!gang) usr << "ACCESS DENIED: Unauthorized user." /obj/item/device/gangtool/proc/recall(mob/user) - if(recalling || !can_use(user)) - return + if(!can_use(user)) + return 0 if(!istype(ticker.mode, /datum/game_mode/gang)) - return + return 0 + var/datum/game_mode/gang/mode = ticker.mode recalling = 1 loc << "\icon[src]Generating shuttle recall order with codes retrieved from last call signal..." - sleep(rand(10,30)) + sleep(rand(100,300)) if(SSshuttle.emergency.mode != SHUTTLE_CALL) //Shuttle can only be recalled when it's moving to the station user << "\icon[src]Emergency shuttle cannot be recalled at this time." recalling = 0 - return + return 0 loc << "\icon[src]Shuttle recall order generated. Accessing station long-range communication arrays..." - sleep(rand(10,30)) + sleep(rand(100,300)) + + if(gang == "A" ? !mode.A_dominations : !mode.B_dominations) + user << "\icon[src]Error: Unable to access communication arrays. Firewall has logged our signature and is blocking all further attempts." + recalling = 0 + return 0 var/turf/userturf = get_turf(user) if(userturf.z != 1) //Shuttle can only be recalled while on station user << "\icon[src]Error: Device out of range of station communication arrays." recalling = 0 - return + return 0 var/datum/station_state/end_state = new /datum/station_state() end_state.count() if((100 * start_state.score(end_state)) < 70) //Shuttle cannot be recalled if the station is too damaged user << "\icon[src]Error: Station communication systems compromised. Unable to establish connection." recalling = 0 - return + return 0 loc << "\icon[src]Comm arrays accessed. Broadcasting recall signal..." - sleep(rand(10,30)) + sleep(rand(100,300)) recalling = 0 log_game("[key_name(user)] has tried to recall the shuttle with a gangtool.") message_admins("[key_name_admin(user)] has tried to recall the shuttle with a gangtool.", 1) - if(!SSshuttle.cancelEvac(user)) - loc << "\icon[src]No response recieved. Emergency shuttle cannot be recalled at this time." + userturf = get_turf(user) + if(userturf.z == 1) //Check one more time that they are on station. + if(SSshuttle.cancelEvac(user)) + return 1 + + loc << "\icon[src]No response recieved. Emergency shuttle cannot be recalled at this time." + return 0 /obj/item/device/gangtool/proc/can_use(mob/living/carbon/human/user) if(!istype(user)) @@ -368,3 +461,4 @@ /obj/item/device/gangtool/lt boss = 0 outfits = 1 + free_pen = 1 diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm index 7d8a51b32eb..251a562fe3c 100644 --- a/code/game/gamemodes/nuclear/nuclear.dm +++ b/code/game/gamemodes/nuclear/nuclear.dm @@ -180,7 +180,11 @@ U.hidden_uplink.uses = 20 synd_mob.equip_to_slot_or_del(U, slot_in_backpack) - var/obj/item/weapon/implant/weapons_auth/E = new/obj/item/weapon/implant/weapons_auth(synd_mob) + var/obj/item/weapon/implant/weapons_auth/W = new/obj/item/weapon/implant/weapons_auth(synd_mob) + W.imp_in = synd_mob + W.implanted = 1 + W.implanted(synd_mob) + var/obj/item/weapon/implant/explosive/E = new/obj/item/weapon/implant/explosive(synd_mob) E.imp_in = synd_mob E.implanted = 1 E.implanted(synd_mob) diff --git a/code/game/gamemodes/nuclear/nuclearbomb.dm b/code/game/gamemodes/nuclear/nuclearbomb.dm index 3255f82ba34..7d06cc079ba 100644 --- a/code/game/gamemodes/nuclear/nuclearbomb.dm +++ b/code/game/gamemodes/nuclear/nuclearbomb.dm @@ -1,11 +1,25 @@ +#define NUKESTATE_INTACT 6 +#define NUKESTATE_OPEN 5 +#define NUKESTATE_OPEN_TRAP 4 +#define NUKESTATE_WIRES_TIED 3 +#define NUKESTATE_CUT_LINES 2 +#define NUKESTATE_CORE_EXPOSED 1 +#define NUKESTATE_CORE_REMOVED 0 + +#define NUKE_OFF_LOCKED 0 +#define NUKE_OFF_UNLOCKED 1 +#define NUKE_ON_TIMING 2 +#define NUKE_ON_EXPLODING 3 + var/bomb_set /obj/machinery/nuclearbomb name = "nuclear fission explosive" desc = "You probably shouldn't stick around to see if this is armed." - icon = 'icons/obj/stationobjs.dmi' - icon_state = "nuclearbomb_off" + icon = 'icons/obj/machines/nuke.dmi' + icon_state = "nuclearbomb_base" density = 1 + var/timeleft = 60 var/timing = 0 var/r_code = "ADMIN" @@ -16,65 +30,209 @@ var/bomb_set use_power = 0 var/previous_level = "" var/lastentered = "" + var/obj/item/nuke_core/core = null + var/deconstruction_state = NUKESTATE_INTACT + var/image/lights = null + var/image/panel = null + var/image/interior = null + var/image/glow = null /obj/machinery/nuclearbomb/New() ..() nuke_list += src + core = new /obj/item/nuke_core(src) + update_icon() previous_level = get_security_level() /obj/machinery/nuclearbomb/selfdestruct name = "station self-destruct terminal" desc = "For when it all gets too much to bear. Do not taunt." icon = 'icons/obj/machines/bignuke.dmi' + icon_state = "nuclearbomb_base" anchored = 1 //stops it being moved layer = 4 +/obj/machinery/nuclearbomb/attackby(obj/item/I, mob/user, params) + if (istype(I, /obj/item/weapon/disk/nuclear)) + if(!user.drop_item()) + return + I.loc = src + auth = I + add_fingerprint(user) + return + + switch(deconstruction_state) + if(NUKESTATE_INTACT) + if(istype(I, /obj/item/weapon/screwdriver/nuke)) + playsound(loc, 'sound/items/Screwdriver.ogg', 100, 1) + user << "You start removing the front panel's screws..." + if(do_after(user, 100,target=src)) + deconstruction_state = NUKESTATE_OPEN + user << "You remove the screws and the front panel slides open." + update_icon() + return + if(NUKESTATE_OPEN,NUKESTATE_OPEN_TRAP) + if((deconstruction_state == NUKESTATE_OPEN) && istype(I, /obj/item/weapon/wirecutters)) + playsound(loc, 'sound/effects/sparks4.ogg', 100, 1) + playsound(loc, 'sound/effects/EMPulse.ogg', 100, 1) + user << "You must have cut the wrong wire!" + for(var/mob/living/L in range(5,src)) + L.irradiate(200) + deconstruction_state = NUKESTATE_OPEN_TRAP //cant cut wires no more + else + if(istype(I, /obj/item/stack/cable_coil)) + var/obj/item/stack/cable_coil/S = I + user << "You start tying the uncountable wires..." + if(do_after(user,30,target=src)) + if(S.use(15)) + user << "You tie the uncountable wires with some cable, clearing the insides of [src]." + deconstruction_state = NUKESTATE_WIRES_TIED + update_icon() + else + user << "You need more cable to do that." + return + if(NUKESTATE_WIRES_TIED) + if(istype(I, /obj/item/weapon/pen)) + user << "You start drawing cut lines..." + if(do_after(user,30,target=src)) + user << "You draw cut lines inside [src]." + deconstruction_state = NUKESTATE_CUT_LINES + update_icon() + return + if(NUKESTATE_CUT_LINES) + if(istype(I, /obj/item/weapon/weldingtool)) + var/obj/item/weapon/weldingtool/welder = I + playsound(loc, 'sound/items/Welder.ogg', 100, 1) + user << "You start cutting into [src]'s warhead..." + if(welder.remove_fuel(1,user)) + if(do_after(user,50,target=src)) + playsound(loc, 'sound/items/Deconstruct.ogg', 100, 1) + user << "You cut into [src]'s warhead. You can see the core's green glow." + deconstruction_state = NUKESTATE_CORE_EXPOSED + update_icon() + SSobj.processing += core + return + if(NUKESTATE_CORE_EXPOSED) + if(istype(I, /obj/item/nuke_core_container)) + var/obj/item/nuke_core_container/core_box = I + user << "You start loading the plutonium core into [core_box]..." + if(do_after(user,50,target=src)) + if(core_box.load(core,src)) + user << "You load the plutonium core into [core_box]." + deconstruction_state = NUKESTATE_CORE_REMOVED + update_icon() + else + user << "You fail to load the plutonium core into [core_box]. [core_box] has already been used!" + return + else + ..() + +/obj/machinery/nuclearbomb/proc/get_nuke_state() + if(timing < 0) + return NUKE_ON_EXPLODING + if(timing > 0) + return NUKE_ON_TIMING + if(safety) + return NUKE_OFF_LOCKED + else + return NUKE_OFF_UNLOCKED + +/obj/machinery/nuclearbomb/update_icon() + if(deconstruction_state == NUKESTATE_INTACT) + switch(get_nuke_state()) + if(NUKE_OFF_LOCKED, NUKE_OFF_UNLOCKED) + update_icon_interior() + update_icon_lights() + if(NUKE_ON_TIMING) + overlays.Cut() + icon_state = "nuclearbomb_timing" + if(NUKE_ON_EXPLODING) + overlays.Cut() + icon_state = "nuclearbomb_exploding" + else + update_icon_interior() + update_icon_lights() + +/obj/machinery/nuclearbomb/proc/update_icon_interior() + overlays -= interior + overlays -= glow + switch(deconstruction_state) + if(NUKESTATE_OPEN_TRAP,NUKESTATE_OPEN) + glow = null + interior = image(icon,"panel-removed") + if(NUKESTATE_CORE_REMOVED,NUKESTATE_CUT_LINES,NUKESTATE_WIRES_TIED) + glow = null + interior = image(icon,"wires-sorted") + if(NUKESTATE_CORE_EXPOSED) + glow = image(icon,"core-exposed") + interior = image(icon,"wires-sorted") + if(NUKESTATE_INTACT) + glow = null + interior = image(icon,"panel-overlay") + overlays += interior + overlays += glow + +/obj/machinery/nuclearbomb/proc/update_icon_lights() + overlays -= lights + overlays -= panel + panel = null + switch(get_nuke_state()) + if(NUKE_OFF_LOCKED) + lights = image(icon,"lights-off") + if(deconstruction_state != NUKESTATE_INTACT) + panel = image(icon,"panel-removed-blue") + if(NUKE_OFF_UNLOCKED) + lights = image(icon,"lights-safety") + if(deconstruction_state != NUKESTATE_INTACT) + panel = image(icon,"panel-removed-blue") + if(NUKE_ON_TIMING) + lights = image(icon,"lights-timing") + if(deconstruction_state != NUKESTATE_INTACT) + panel = image(icon,"panel-removed-timing") + if(NUKE_ON_EXPLODING) + lights = image(icon,"lights-exploding") + if(deconstruction_state != NUKESTATE_INTACT) + panel = image(icon,"panel-removed-exploding") + overlays += lights + overlays += panel + /obj/machinery/nuclearbomb/process() - if (src.timing) + if (timing > 0) bomb_set = 1 //So long as there is one nuke timing, it means one nuke is armed. - src.timeleft-- - if (src.timeleft <= 0) + timeleft-- + if (timeleft <= 0) explode() else var/volume = (timeleft <= 20 ? 30 : 5) playsound(loc, 'sound/items/timer.ogg', volume, 0) for(var/mob/M in viewers(1, src)) if ((M.client && M.machine == src)) - src.attack_hand(M) + attack_hand(M) return -/obj/machinery/nuclearbomb/attackby(obj/item/weapon/I as obj, mob/user as mob, params) - if (istype(I, /obj/item/weapon/disk/nuclear)) - usr.drop_item() - I.loc = src - src.auth = I - src.add_fingerprint(user) - return - ..() - /obj/machinery/nuclearbomb/attack_paw(mob/user as mob) - return src.attack_hand(user) + return attack_hand(user) /obj/machinery/nuclearbomb/attack_ai(mob/user as mob) return /obj/machinery/nuclearbomb/attack_hand(mob/user as mob) user.set_machine(src) - var/dat = text("\nAuth. Disk: []
", src, (src.auth ? "++++++++++" : "----------")) - if (src.auth) - if (src.yes_code) - dat += text("\nStatus: []-[]
\nTimer: []
\n
\nTimer: [] Toggle
\nTime: - - [] + +
\n
\nSafety: [] Toggle
\nAnchor: [] Toggle
\n", (src.timing ? "Func/Set" : "Functional"), (src.safety ? "Safe" : "Engaged"), src.timeleft, (src.timing ? "On" : "Off"), src, src, src, src.timeleft, src, src, (src.safety ? "On" : "Off"), src, (src.anchored ? "Engaged" : "Off"), src) + var/dat = text("\nAuth. Disk: []
", src, (auth ? "++++++++++" : "----------")) + if (auth) + if (yes_code) + dat += text("\nStatus: []-[]
\nTimer: []
\n
\nTimer: [] Toggle
\nTime: - - [] + +
\n
\nSafety: [] Toggle
\nAnchor: [] Toggle
\n", (timing ? "Func/Set" : "Functional"), (safety ? "Safe" : "Engaged"), timeleft, (timing ? "On" : "Off"), src, src, src, timeleft, src, src, (safety ? "On" : "Off"), src, (anchored ? "Engaged" : "Off"), src) else - dat += text("\nStatus: Auth. S2-[]
\nTimer: []
\n
\nTimer: [] Toggle
\nTime: - - [] + +
\n
\n[] Safety: Toggle
\nAnchor: [] Toggle
\n", (src.safety ? "Safe" : "Engaged"), src.timeleft, (src.timing ? "On" : "Off"), src.timeleft, (src.safety ? "On" : "Off"), (src.anchored ? "Engaged" : "Off")) + dat += text("\nStatus: Auth. S2-[]
\nTimer: []
\n
\nTimer: [] Toggle
\nTime: - - [] + +
\n
\n[] Safety: Toggle
\nAnchor: [] Toggle
\n", (safety ? "Safe" : "Engaged"), timeleft, (timing ? "On" : "Off"), timeleft, (safety ? "On" : "Off"), (anchored ? "Engaged" : "Off")) else - if (src.timing) - dat += text("\nStatus: Set-[]
\nTimer: []
\n
\nTimer: [] Toggle
\nTime: - - [] + +
\n
\nSafety: [] Toggle
\nAnchor: [] Toggle
\n", (src.safety ? "Safe" : "Engaged"), src.timeleft, (src.timing ? "On" : "Off"), src.timeleft, (src.safety ? "On" : "Off"), (src.anchored ? "Engaged" : "Off")) + if (timing) + dat += text("\nStatus: Set-[]
\nTimer: []
\n
\nTimer: [] Toggle
\nTime: - - [] + +
\n
\nSafety: [] Toggle
\nAnchor: [] Toggle
\n", (safety ? "Safe" : "Engaged"), timeleft, (timing ? "On" : "Off"), timeleft, (safety ? "On" : "Off"), (anchored ? "Engaged" : "Off")) else - dat += text("\nStatus: Auth. S1-[]
\nTimer: []
\n
\nTimer: [] Toggle
\nTime: - - [] + +
\n
\nSafety: [] Toggle
\nAnchor: [] Toggle
\n", (src.safety ? "Safe" : "Engaged"), src.timeleft, (src.timing ? "On" : "Off"), src.timeleft, (src.safety ? "On" : "Off"), (src.anchored ? "Engaged" : "Off")) + dat += text("\nStatus: Auth. S1-[]
\nTimer: []
\n
\nTimer: [] Toggle
\nTime: - - [] + +
\n
\nSafety: [] Toggle
\nAnchor: [] Toggle
\n", (safety ? "Safe" : "Engaged"), timeleft, (timing ? "On" : "Off"), timeleft, (safety ? "On" : "Off"), (anchored ? "Engaged" : "Off")) var/message = "AUTH" - if (src.auth) - message = text("[]", src.code) - if (src.yes_code) + if (auth) + message = text("[]", code) + if (yes_code) message = "*****" dat += text("
\n>[]
\n123
\n456
\n789
\nR0E
\n
", message, src, src, src, src, src, src, src, src, src, src, src, src) var/datum/browser/popup = new(user, "nuclearbomb", name, 300, 400) @@ -87,28 +245,28 @@ var/bomb_set return usr.set_machine(src) if (href_list["auth"]) - if (src.auth) - src.auth.loc = src.loc - src.yes_code = 0 - src.auth = null + if (auth) + auth.loc = loc + yes_code = 0 + auth = null else var/obj/item/I = usr.get_active_hand() if (istype(I, /obj/item/weapon/disk/nuclear)) usr.drop_item() I.loc = src - src.auth = I - if (src.auth) + auth = I + if (auth) if (href_list["type"]) if (href_list["type"] == "E") - if (src.code == src.r_code) - src.yes_code = 1 - src.code = null + if (code == r_code) + yes_code = 1 + code = null else - src.code = "ERROR" + code = "ERROR" else if (href_list["type"] == "R") - src.yes_code = 0 - src.code = null + yes_code = 0 + code = null else lastentered = text("[]", href_list["type"]) if (text2num(lastentered) == null) @@ -116,24 +274,24 @@ var/bomb_set message_admins("[key_name_admin(usr)] (FLW) tried to exploit a nuclear bomb by entering non-numerical codes: [lastentered] ! ([LOC ? "JMP" : "null"])", 0) log_admin("EXPLOIT : [key_name(usr)] tried to exploit a nuclear bomb by entering non-numerical codes: [lastentered] !") else - src.code += lastentered - if (length(src.code) > 5) - src.code = "ERROR" - if (src.yes_code) + code += lastentered + if (length(code) > 5) + code = "ERROR" + if (yes_code) if (href_list["time"]) var/time = text2num(href_list["time"]) - src.timeleft += time - src.timeleft = min(max(round(src.timeleft), 60), 600) + timeleft += time + timeleft = min(max(round(timeleft), 60), 600) if (href_list["timer"]) set_active() if (href_list["safety"]) set_safety() if (href_list["anchor"]) set_anchor() - src.add_fingerprint(usr) + add_fingerprint(usr) for(var/mob/M in viewers(1, src)) if ((M.client && M.machine == src)) - src.attack_hand(M) + attack_hand(M) /obj/machinery/nuclearbomb/proc/set_anchor() if(!isinspace()) @@ -143,18 +301,17 @@ var/bomb_set /obj/machinery/nuclearbomb/proc/set_safety() safety = !safety - icon_state = (safety ? "nuclearbomb_off" : "nuclearbomb_on") if(safety) timing = 0 bomb_set = 0 set_security_level(previous_level) + update_icon() /obj/machinery/nuclearbomb/proc/set_active() if(safety) usr << "The safety is still on." return timing = !timing - icon_state = (timing ? "nuclearbomb_active" : "nuclearbomb_on") previous_level = get_security_level() if(timing) bomb_set = 1 @@ -162,13 +319,13 @@ var/bomb_set else bomb_set = 0 set_security_level(previous_level) - + update_icon() /obj/machinery/nuclearbomb/ex_act(severity, target) return /obj/machinery/nuclearbomb/blob_act() - if (src.timing == -1.0) + if (timing == -1.0) return else return ..() @@ -177,19 +334,25 @@ var/bomb_set #define NUKERANGE 80 /obj/machinery/nuclearbomb/proc/explode() - if (src.safety) - src.timing = 0 + if (safety) + timing = 0 return - src.timing = -1.0 - src.yes_code = 0 - src.safety = 1 - src.icon_state = "nuclearbomb_exploding" + + timing = -1 + yes_code = 0 + safety = 1 + update_icon() for(var/mob/M in player_list) M << 'sound/machines/Alarm.ogg' if (ticker && ticker.mode) ticker.mode.explosion_in_progress = 1 sleep(100) + if(!core) + ticker.station_explosion_cinematic(3,"no_core") + ticker.mode.explosion_in_progress = 0 + return + enter_allowed = 0 var/off_station = 0 @@ -218,6 +381,7 @@ var/bomb_set return return + /* This is here to make the tiles around the station mininuke change when it's armed. */ diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm index 34097634102..82c7ac9c296 100644 --- a/code/game/gamemodes/objective.dm +++ b/code/game/gamemodes/objective.dm @@ -43,7 +43,7 @@ /datum/objective/proc/update_explanation_text() //Default does nothing, override where needed - +/datum/objective/proc/give_special_equipment() /datum/objective/assassinate var/target_role_type=0 @@ -348,7 +348,7 @@ var/global/list/possible_items = list() /datum/objective/steal/find_target() var/approved_targets = list() for(var/datum/objective_item/possible_item in possible_items) - if(is_unique_objective(possible_item.targetitem)) + if(is_unique_objective(possible_item.targetitem) && !(owner.current.mind.assigned_role in possible_item.excludefromjob)) approved_targets += possible_item return set_target(safepick(possible_items)) @@ -359,6 +359,7 @@ var/global/list/possible_items = list() steal_target = targetinfo.targetitem explanation_text = "Steal [targetinfo.name]." dangerrating = targetinfo.difficulty + give_special_equipment() return steal_target else explanation_text = "Free objective" @@ -401,6 +402,15 @@ var/global/list/possible_items = list() return 1 return 0 +/datum/objective/steal/give_special_equipment() + if(owner && owner.current && targetinfo) + if(istype(owner.current, /mob/living/carbon/human)) + var/mob/living/carbon/human/H = owner.current + var/list/slots = list ("backpack" = slot_in_backpack) + for(var/obj/item/I in targetinfo.special_equipment) + H.equip_in_one_of_slots(I, slots) + H.update_icons() + var/global/list/possible_items_special = list() /datum/objective/steal/special //ninjas are so special they get their own subtype good for them @@ -576,3 +586,21 @@ var/global/list/possible_items_special = list() explanation_text = "Destroy [target.name], the experimental AI." else explanation_text = "Free Objective" + +/datum/objective/summon_guns + explanation_text = "Steal at least five guns!" + +/datum/objective/summon_guns/check_completion() + if(!isliving(owner.current)) return 0 + var/guncount = 0 + var/list/all_items = owner.current.GetAllContents() //this should get things in cheesewheels, books, etc. + for(var/obj/I in all_items) //Check for guns + if(istype(I, /obj/item/weapon/gun)) + guncount++ + if(guncount >= 5) + return 1 + else + return 0 + return 0 + + diff --git a/code/game/gamemodes/objective_items.dm b/code/game/gamemodes/objective_items.dm index 981fba6a7d7..63d9cdea7ad 100644 --- a/code/game/gamemodes/objective_items.dm +++ b/code/game/gamemodes/objective_items.dm @@ -6,11 +6,11 @@ var/difficulty = 9001 //vaguely how hard it is to do this objective var/list/excludefromjob = list() //If you don't want a job to get a certain objective (no captain stealing his own medal, etcetc) var/list/altitems = list() //Items which can serve as an alternative to the objective (darn you blueprints) + var/list/special_equipment = list() /datum/proc/check_special_completion() //for objectives with special checks (is that slime extract unused? does that intellicard have an ai in it? etcetc) return 1 - /datum/objective_item/steal/caplaser name = "the captain's antique laser gun" targetitem = /obj/item/weapon/gun/energy/laser/captain @@ -82,6 +82,14 @@ targetitem = /obj/item/documents //Any set of secret documents. Doesn't have to be NT's difficulty = 5 +/datum/objective_item/steal/nuke_core + name = "the plutonium core from the onboard self-destruct" + targetitem = /obj/item/nuke_core + difficulty = 15 + +/datum/objective_item/steal/nuke_core/New() + special_equipment += new /obj/item/weapon/storage/box/syndie_kit/nuke() + //Items with special checks! /datum/objective_item/steal/plasma name = "28 moles of plasma (full tank)" diff --git a/code/game/gamemodes/shadowling/shadowling_abilities.dm b/code/game/gamemodes/shadowling/shadowling_abilities.dm index d6abcab574f..e88fa9dc3e7 100644 --- a/code/game/gamemodes/shadowling/shadowling_abilities.dm +++ b/code/game/gamemodes/shadowling/shadowling_abilities.dm @@ -285,7 +285,7 @@ thralls++ M << "You feel hooks sink into your mind and pull." - if(!do_after(user, 30)) + if(!do_after(user, 30, target = user)) user << "Your concentration has been broken. The mental hooks you have sent out now retract into your mind." return @@ -346,7 +346,7 @@ B.reagents.clear_reagents() //Just in case! B.icon_state = null //Invisible B.reagents.add_reagent("blindness_smoke", 10) - var/datum/effect/effect/system/chem_smoke_spread/S = new /datum/effect/effect/system/chem_smoke_spread + var/datum/effect/effect/system/smoke_spread/chem/S = new S.attach(B) if(S) S.set_up(B.reagents, 10, 0, B.loc) diff --git a/code/game/gamemodes/wizard/rightandwrong.dm b/code/game/gamemodes/wizard/rightandwrong.dm index 2a38c519a77..7d1a612ecfc 100644 --- a/code/game/gamemodes/wizard/rightandwrong.dm +++ b/code/game/gamemodes/wizard/rightandwrong.dm @@ -12,15 +12,18 @@ for(var/mob/living/carbon/human/H in player_list) if(H.stat == 2 || !(H.client)) continue if(H.mind) - if(H.mind.special_role == "Wizard" || H.mind.special_role == "apprentice") continue + if(H.mind.special_role == "Wizard" || H.mind.special_role == "apprentice" || H.mind.special_role == "survivalist") continue if(prob(survivor_probability) && !(H.mind in ticker.mode.traitors)) ticker.mode.traitors += H.mind - H.mind.special_role = "traitor" + var/datum/objective/summon_guns/guns = new + guns.owner = H.mind + H.mind.objectives += guns + H.mind.special_role = "survivalist" var/datum/objective/survive/survive = new survive.owner = H.mind H.mind.objectives += survive - H.attack_log += "\[[time_stamp()]\] Was made into a survivor, and trusts no one!" - H << "You are the survivor! Your own safety matters above all else, trust no one and kill anyone who gets in your way. However, armed as you are, now would be the perfect time to settle that score or grab that pair of yellow gloves you've been eyeing..." + H.attack_log += "\[[time_stamp()]\] Was made into a survivalist, and trusts no one!" + H << "You are the survivalist! Your own safety matters above all else, and the only way to ensure your safety is to stockpile weapons! Grab as many guns as possible, by any means necessary. Kill anyone who gets in your way." var/obj_count = 1 for(var/datum/objective/OBJ in H.mind.objectives) H << "Objective #[obj_count]: [OBJ.explanation_text]" diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm index 2c9ea69ef97..0f2b69da0ac 100644 --- a/code/game/gamemodes/wizard/spellbook.dm +++ b/code/game/gamemodes/wizard/spellbook.dm @@ -327,9 +327,9 @@ /datum/spellbook_entry/summon/guns name = "Summon Guns" - category = "Challenges" + category = "Rituals" desc = "Nothing could possibly go wrong with arming a crew of lunatics just itching for an excuse to kill you. Just be careful not to stand still too long!" - cost = 0 + cost = 1 log_name = "SG" /datum/spellbook_entry/summon/guns/IsAvailible() @@ -337,11 +337,9 @@ /datum/spellbook_entry/summon/guns/Buy(var/mob/living/carbon/human/user,var/obj/item/weapon/spellbook/book) feedback_add_details("wizard_spell_learned",log_name) - rightandwrong(0, user, 0) - book.uses += 1 - active = 1 + rightandwrong(0, user, 25) playsound(get_turf(user),"sound/magic/CastSummon.ogg",50,1) - user << "You have cast summon guns and gained an extra charge for your spellbook." + user << "You have cast summon guns!" return 1 /datum/spellbook_entry/summon/magic diff --git a/code/game/jobs/job/security.dm b/code/game/jobs/job/security.dm index 590837a40fd..12c9fec1d69 100644 --- a/code/game/jobs/job/security.dm +++ b/code/game/jobs/job/security.dm @@ -133,7 +133,7 @@ Detective H.equip_to_slot_or_del(new /obj/item/clothing/gloves/color/black(H), slot_gloves) H.equip_to_slot_or_del(new /obj/item/clothing/suit/det_suit(H), slot_wear_suit) H.equip_to_slot_or_del(new /obj/item/toy/crayon/white(H), slot_l_store) - H.equip_to_slot_or_del(new /obj/item/weapon/lighter/zippo(H), slot_r_store) + H.equip_to_slot_or_del(new /obj/item/weapon/lighter(H), slot_r_store) var/obj/item/clothing/mask/cigarette/cig = new /obj/item/clothing/mask/cigarette(H) cig.light("") diff --git a/code/game/machinery/Freezer.dm b/code/game/machinery/Freezer.dm index 66be318890e..16b8d76da62 100644 --- a/code/game/machinery/Freezer.dm +++ b/code/game/machinery/Freezer.dm @@ -31,7 +31,7 @@ H += M.rating for(var/obj/item/weapon/stock_parts/micro_laser/M in component_parts) T += M.rating - min_temperature = T0C - (170 + (T*15)) + min_temperature = max(T0C - (170 + (T*15)), 1) current_heat_capacity = 1000 * ((H - 1) ** 2) /obj/machinery/atmospherics/unary/cold_sink/freezer/attackby(obj/item/I, mob/user, params) diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index e0156b48bb7..be55c50012c 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -157,16 +157,16 @@ dat += "
\> Brute Damage:
[occupant.getBruteLoss()]%
" dat += "
\> Resp. Damage:
[occupant.getOxyLoss()]%
" dat += "
\> Toxin Content:
[occupant.getToxLoss()]%
" - dat += "
\> Burn Severity:
[occupant.getFireLoss()]%
" + dat += "
\> Burn Severity:
[occupant.getFireLoss()]%

" - dat += "
Paralysis Summary:
[round(occupant.paralysis)]% [occupant.paralysis ? "([round(occupant.paralysis / 4)] seconds left)" : ""]
" + dat += "
Paralysis Summary:
[round(occupant.paralysis)]% [occupant.paralysis ? "([round(occupant.paralysis / 4)] seconds left)" : ""]

" if(occupant.getCloneLoss()) - dat += "
Subject appears to have cellular damage.
" + dat += "
Subject appears to have cellular damage.

" if(occupant.getBrainLoss()) - dat += "
Significant brain damage detected.
" + dat += "
Significant brain damage detected.

" if(occupant.reagents.reagent_list.len) for(var/datum/reagent/R in occupant.reagents.reagent_list) - dat += "
[R.name]:
[round(R.volume, 0.1)] units
" + dat += "
[R.name]:
[round(R.volume, 0.1)] units

" dat += "" var/datum/browser/popup = new(user, "sleeper", "Sleeper Console", 520, 540) //Set up the popup browser window diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm index 16172fbed61..257fea19c45 100644 --- a/code/game/machinery/alarm.dm +++ b/code/game/machinery/alarm.dm @@ -169,6 +169,10 @@ /obj/machinery/alarm/attack_hand(mob/user) if (..()) return + + if (buildstage != 2) + return + user.set_machine(src) if ( (get_dist(src, user) > 1 )) @@ -385,6 +389,10 @@ /obj/machinery/alarm/Topic(href, href_list) if(..()) return + + if (buildstage != 2) + return + usr.set_machine(src) if (locked && !usr.has_unlimited_silicon_privilege) @@ -690,7 +698,7 @@ user.visible_message("[user.name] removes the electronics from [src.name].",\ "You start prying out the circuit...") playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1) - if (do_after(user, 20)) + if (do_after(user, 20, target = src)) if (buildstage == 1) user <<"You remove the air alarm electronics." new /obj/item/weapon/airalarm_electronics( src.loc ) @@ -706,7 +714,7 @@ return user.visible_message("[user.name] wires the air alarm.", \ "You start wiring the air alarm...") - if (do_after(user, 20)) + if (do_after(user, 20, target = src)) if (cable.get_amount() >= 5 && buildstage == 1) cable.use(5) user << "You wire the air alarm." @@ -949,7 +957,7 @@ FIRE ALARM playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1) user.visible_message("[user.name] removes the electronics from [src.name].", \ "You start prying out the circuit...") - if(do_after(user, 20)) + if(do_after(user, 20, target = src)) if(buildstage == 1) if(stat & BROKEN) user << "You remove the destroyed circuit." @@ -1186,6 +1194,9 @@ Code shamelessly copied from apc_frame if(user.stat || stat & (NOPOWER|BROKEN)) return + if (buildstage != 2) + return + user.set_machine(src) var/area/A = src.loc var/d1 diff --git a/code/game/machinery/atmoalter/meter.dm b/code/game/machinery/atmoalter/meter.dm index 99bd769543a..77f019ffc99 100644 --- a/code/game/machinery/atmoalter/meter.dm +++ b/code/game/machinery/atmoalter/meter.dm @@ -95,7 +95,7 @@ if (istype(W, /obj/item/weapon/wrench)) playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) user << "You begin to unfasten \the [src]..." - if (do_after(user, 40)) + if (do_after(user, 40, target = src)) user.visible_message( \ "[user] unfastens \the [src].", \ "You unfasten \the [src].", \ diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index 1eab122f4e6..c76cb0df026 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -179,7 +179,7 @@ if(href_list["make"]) - var/turf/T = get_step(src.loc, get_dir(src,usr)) + var/turf/T = loc ///////////////// //href protection diff --git a/code/game/machinery/bots/ed209bot.dm b/code/game/machinery/bots/ed209bot.dm index ddfb3dcbcb2..c1869318560 100644 --- a/code/game/machinery/bots/ed209bot.dm +++ b/code/game/machinery/bots/ed209bot.dm @@ -632,7 +632,7 @@ Auto Patrol[]"}, user << "You need one length of cable to wire the ED-209!" return user << "You start to wire [src]..." - if (do_after(user, 40)) + if (do_after(user, 40, target = src)) if (coil.get_amount() >= 1 && build_step == 6) coil.use(1) build_step = 7 diff --git a/code/game/machinery/bots/medbot.dm b/code/game/machinery/bots/medbot.dm index 46151d9d19f..0b60c45b1b7 100644 --- a/code/game/machinery/bots/medbot.dm +++ b/code/game/machinery/bots/medbot.dm @@ -488,8 +488,9 @@ if ((get_dist(src, patient) <= 1) && (on)) if(reagent_id == "internal_beaker") if(use_beaker && reagent_glass && reagent_glass.reagents.total_volume) + var/fraction = min(injection_amount/reagent_glass.reagents.total_volume, 1) + reagent_glass.reagents.reaction(patient, INGEST, fraction) reagent_glass.reagents.trans_to(patient,injection_amount) //Inject from beaker instead. - reagent_glass.reagents.reaction(patient, INGEST) else patient.reagents.add_reagent(reagent_id,injection_amount) C.visible_message("[src] injects [patient] with its syringe!", \ diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index c6748849914..2780745861d 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -237,27 +237,25 @@ return /obj/machinery/camera/proc/deactivate(mob/user, displaymessage = 1) //this should be called toggle() but doing a find and replace for this would be ass + status = !status + cameranet.updateChunk(x, y, z) + var/change_msg = "deactivates" + if(!status) + icon_state = "[initial(icon_state)]1" + else + icon_state = initial(icon_state) + change_msg = "reactivates" + triggerCameraAlarm() + spawn(100) + cancelCameraAlarm() if(displaymessage) - status = !status - if(!status) - if(user) - visible_message("[user] deactivates [src]!") - add_hiddenprint(user) - else - visible_message("\The [src] deactivates!") - icon_state = "[initial(icon_state)]1" + if(user) + visible_message("[user] [change_msg] [src]!") + add_hiddenprint(user) else - if(user) - visible_message("[user] reactivates [src]!") - add_hiddenprint(user) - else - visible_message("\The [src] reactivates!") - triggerCameraAlarm() - icon_state = initial(icon_state) - spawn(100) - cancelCameraAlarm() + visible_message("\The [src] [change_msg]!") + playsound(src.loc, 'sound/items/Wirecutter.ogg', 100, 1) - cameranet.updateChunk(x, y, z) // now disconnect anyone using the camera //Apparently, this will disconnect anyone even if the camera was re-activated. @@ -338,7 +336,7 @@ user << "You start to weld [src]..." playsound(src.loc, 'sound/items/Welder.ogg', 50, 1) busy = 1 - if(do_after(user, 100)) + if(do_after(user, 100, target = src)) busy = 0 if(!WT.isOn()) return 0 diff --git a/code/game/machinery/camera/camera_assembly.dm b/code/game/machinery/camera/camera_assembly.dm index 3710f3877a5..f10227c42b8 100644 --- a/code/game/machinery/camera/camera_assembly.dm +++ b/code/game/machinery/camera/camera_assembly.dm @@ -160,7 +160,7 @@ user << "You start to weld \the [src]..." playsound(src.loc, 'sound/items/Welder.ogg', 50, 1) busy = 1 - if(do_after(user, 20)) + if(do_after(user, 20, target = src)) busy = 0 if(!WT.isOn()) return 0 diff --git a/code/game/machinery/computer/aifixer.dm b/code/game/machinery/computer/aifixer.dm index 673033a4a6a..528756c0c7e 100644 --- a/code/game/machinery/computer/aifixer.dm +++ b/code/game/machinery/computer/aifixer.dm @@ -107,7 +107,7 @@ /obj/machinery/computer/aifixer/update_icon() ..() - if((stat & BROKEN) || (stat & NOPOWER)) + if(stat & (NOPOWER|BROKEN)) return else if(active) diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index ebe873ae94e..d9a0b84f457 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -11,7 +11,7 @@ /obj/item/toy/gun = 2, /obj/item/weapon/gun/projectile/shotgun/toy/crossbow = 2, /obj/item/weapon/storage/box/fakesyndiesuit = 2, - /obj/item/weapon/storage/fancy/crayons = 2, + /obj/item/weapon/storage/crayons = 2, /obj/item/toy/spinningtoy = 2, /obj/item/toy/prize/ripley = 1, /obj/item/toy/prize/fireripley = 1, diff --git a/code/game/machinery/computer/atmos_alert.dm b/code/game/machinery/computer/atmos_alert.dm index 345b46e272c..58f1843dacb 100644 --- a/code/game/machinery/computer/atmos_alert.dm +++ b/code/game/machinery/computer/atmos_alert.dm @@ -63,6 +63,8 @@ /obj/machinery/computer/atmos_alert/update_icon() ..() + if(stat & (NOPOWER|BROKEN)) + return if(priority_alarms.len) overlays += "alert:2" else if(minor_alarms.len) diff --git a/code/game/machinery/computer/buildandrepair.dm b/code/game/machinery/computer/buildandrepair.dm index 76dca06f55e..ed6360ff691 100644 --- a/code/game/machinery/computer/buildandrepair.dm +++ b/code/game/machinery/computer/buildandrepair.dm @@ -318,7 +318,7 @@ if(istype(P, /obj/item/weapon/wrench)) playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) user << "You start wrenching the frame into place..." - if(do_after(user, 20)) + if(do_after(user, 20, target = src)) user << "You wrench the frame into place." anchored = 1 state = 1 @@ -330,7 +330,7 @@ return playsound(src.loc, 'sound/items/Welder.ogg', 50, 1) user << "You start deconstructing the frame..." - if(do_after(user, 20)) + if(do_after(user, 20, target = src)) if(!src || !WT.isOn()) return user << "You deconstruct the frame." var/obj/item/stack/sheet/metal/M = new (loc, 5) @@ -340,7 +340,7 @@ if(istype(P, /obj/item/weapon/wrench)) playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) user << "You start to unfasten the frame..." - if(do_after(user, 20)) + if(do_after(user, 20, target = src)) user << "You unfasten the frame." anchored = 0 state = 0 @@ -381,7 +381,7 @@ if(C.get_amount() >= 5) playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) user << "You start adding cables to the frame..." - if(do_after(user, 20)) + if(do_after(user, 20, target = src)) if(C.get_amount() >= 5 && state == 2) C.use(5) user << "You add cables to the frame." @@ -407,7 +407,7 @@ else playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) user << "You start to put in the glass panel..." - if(do_after(user, 20)) + if(do_after(user, 20, target = src)) if(G.get_amount() >= 2 && state == 3) G.use(2) user << "You put in the glass panel." diff --git a/code/game/machinery/computer/computer.dm b/code/game/machinery/computer/computer.dm index 5d0798690f8..4e2613a72f0 100644 --- a/code/game/machinery/computer/computer.dm +++ b/code/game/machinery/computer/computer.dm @@ -100,8 +100,8 @@ /obj/machinery/computer/attackby(I as obj, user as mob, params) if(istype(I, /obj/item/weapon/screwdriver) && circuit) playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) - user << "You start to disconnect the monitor..." - if(do_after(user, 20)) + user << " You start to disconnect the monitor..." + if(do_after(user, 20, target = src)) var/obj/structure/computerframe/A = new /obj/structure/computerframe( src.loc ) A.circuit = circuit A.anchored = 1 diff --git a/code/game/machinery/computer/crew.css b/code/game/machinery/computer/crew.css new file mode 100644 index 00000000000..e4f780b6b6f --- /dev/null +++ b/code/game/machinery/computer/crew.css @@ -0,0 +1,105 @@ +body +{ + padding-left: 490px; + cursor: default; +} + +#ntbgcenter +{ + background-position: 550px 0px !important; +} + +#minimap +{ + position: fixed; + top: 8px; + left: 8px; + border: 2px inset #888; +} + +#textbased +{ + width: 100%; +} + +#textbased table +{ + min-width: 380px; + width: 100%; + table-layout: fixed; +} + +#textbased td +{ + vertical-align: top; + padding: 2px; +} + +#textbased tbody td +{ + transition: .2s all; +} + +#textbased tbody tr:hover td, #textbased tbody tr.hover td +{ + background-color: #515151; +} + +#textarea:after +{ + content: ""; + clear: both; +} + +a { display: none; } + +.health +{ + width: 16px; + background-color: #FFF; + border: 1px solid #434343; + position: relative; + top: 2px; +} + +.health-5 { background-color: #17d568; } +.health-4 { background-color: #2ecc71; } +.health-3 { background-color: #e67e22; } +.health-2 { background-color: #ed5100; } +.health-1 { background-color: #e74c3c; } +.health-0 { background-color: #ed2814; } + +.tt +{ + position: relative; + display: inline-block; + height: 16px; +} + +.tt > div +{ + display: none; +} + +.tt:hover > div +{ + position: absolute; + bottom: -30px; + left: 50%; + margin-left: -64px; + + display: block; + width: 128px; + height: 24px; + border: 1px solid #313131; + background-color: #434343; + padding: 4px; + z-index: 999; + text-align: center; +} + +.tt > div > span +{ + position: relative; + top: -2px; +} \ No newline at end of file diff --git a/code/game/machinery/computer/crew.dm b/code/game/machinery/computer/crew.dm index 32b7eab5df5..fea01927ad8 100644 --- a/code/game/machinery/computer/crew.dm +++ b/code/game/machinery/computer/crew.dm @@ -11,31 +11,29 @@ /obj/machinery/computer/crew/attack_ai(mob/user) if(stat & (BROKEN|NOPOWER)) return - crewmonitor(user,src) + crewmonitor.show(user) /obj/machinery/computer/crew/attack_hand(mob/user) if(..()) return if(stat & (BROKEN|NOPOWER)) return - crewmonitor(user,src) + crewmonitor.show(user) -/obj/machinery/computer/crew/Topic(href, href_list) - if(..()) return - if (src.z > 6) - usr << "Unable to establish a connection: \black You're too far away from the station!" - return - if( href_list["close"] ) - usr << browse(null, "window=crewcomp") - usr.unset_machine() - return - if(href_list["update"]) - src.updateDialog() - return +var/global/datum/crewmonitor/crewmonitor = new +/datum/crewmonitor + var/list/jobs + var/list/interfaces + var/list/data + var/const/MAX_ICON_DIMENSION = 1024 + var/const/ICON_SIZE = 4 + var/initialized = FALSE -/proc/crewmonitor(mob/user,var/atom/source) - var/jobs[0] +/datum/crewmonitor/New() + . = ..() + + var/list/jobs = new/list() jobs["Captain"] = 00 jobs["Head of Personnel"] = 50 jobs["Head of Security"] = 10 @@ -74,71 +72,162 @@ jobs["Security Response Officer"] = 221 jobs["Engineer Response Officer"] = 222 jobs["Medical Response Officer"] = 223 - jobs["Assistant"] = 999 //Unknowns/custom jobs should appear after civilians, and before assistants + jobs["Assistant"] = 999 //Unknowns/custom jobs should appear after civilians, and before assistants - var/t = "" - var/list/logs = list() - var/list/tracked = crewscan() - var/turf/srcturf = get_turf(source) - for(var/mob/living/carbon/human/H in tracked) - var/log = "" - var/turf/pos = get_turf(H) - if(istype(H.w_uniform, /obj/item/clothing/under)) - var/obj/item/clothing/under/U = H.w_uniform - if(pos && pos.z == srcturf.z && U.sensor_mode) - var/obj/item/weapon/card/id/I = null - if(H.wear_id) - I = H.wear_id.GetID() + src.jobs = jobs + src.interfaces = list() + src.data = list() - var/life_status = "[H.stat > 1 ? "Deceased" : "Living"]" +/datum/crewmonitor/Destroy() + if (src.interfaces) + for (var/datum/html_interface/hi in interfaces) + qdel(hi) + src.interfaces = null - if(I) - var/style = null - var/ijob = jobs[I.assignment] - if(ijob % 10 == 0) - style += "font-weight: bold; " //head roles always end in 0 - if(ijob >= 10 && ijob < 20) - style += "color: #E74C3C; " //security - if(ijob >= 20 && ijob < 30) - style += "color: #3498DB; " //medical - if(ijob >= 30 && ijob < 40) - style += "color: #9B59B6; " //science - if(ijob >= 40 && ijob < 50) - style += "color: #F1C40F; " //engineering - if(ijob >= 50 && ijob < 60) - style += "color: #F39C12; " //cargo - if(ijob >= 200 && ijob < 230) - style += "color: #00C100; " //Centcom - log += "[ijob]]" //ijob does not get displayed, nor does it take up space, it's just used for the positioning of an entry - else - log += "80" + return ..() - var/damage_report - if(U.sensor_mode > 1) - var/dam1 = round(H.getOxyLoss(),1) - var/dam2 = round(H.getToxLoss(),1) - var/dam3 = round(H.getFireLoss(),1) - var/dam4 = round(H.getBruteLoss(),1) - damage_report = "([dam1]/[dam2]/[dam3]/[dam4])" +/datum/crewmonitor/proc/show(mob/mob, z) + if (!z) z = mob.z - switch(U.sensor_mode) - if(1) - log += "" - if(2) - log += "" - if(3) - var/area/player_area = get_area(H) - log += "" - logs += log - logs = sortList(logs) - for(var/log in logs) - t += log - t += "

Name

Vitals

Position

[I.registered_name] ([I.assignment])
Unknown[life_status]Not Available
[life_status] [damage_report]Not Available
[life_status] [damage_report][format_text(player_area.name)] ([pos.x], [pos.y])
" - var/datum/browser/popup = new(user, "crewcomp", "Crew Monitoring", 900, 600) - popup.set_content(t) - popup.open() + if (z > 0 && src.interfaces) + var/datum/html_interface/hi + if (!src.interfaces["[z]"]) + src.interfaces["[z]"] = new/datum/html_interface/nanotrasen(src, "Crew Monitoring", 900, 540, "") + hi = src.interfaces["[z]"] + + hi.updateContent("content", "Switch to mini map Switch to text-based
") + + src.update(z, TRUE) + else + hi = src.interfaces["[z]"] + + hi = src.interfaces["[z]"] + hi.show(mob) + src.updateFor(mob, hi, z) + +/datum/crewmonitor/proc/updateFor(hclient_or_mob, datum/html_interface/hi, z) + // This check will succeed if updateFor is called after showing to the player, but will fail + // on regular updates. Since we only really need this once we don't care if it fails. + var/list/parameters = list(ismob(hclient_or_mob) && isAI(hclient_or_mob) ? "true" : "false") + + hi.callJavaScript("clearAll", parameters, hclient_or_mob) + + for (var/list/L in data) + hi.callJavaScript("add", L, hclient_or_mob) + +/datum/crewmonitor/proc/update(z, ignore_unused = FALSE) + if (src.interfaces["[z]"]) + var/datum/html_interface/hi = src.interfaces["[z]"] + + if (ignore_unused || hi.isUsed()) + var/list/results = list() + var/obj/item/clothing/under/U + var/obj/item/weapon/card/id/I + var/turf/pos + var/ijob + var/name + var/assignment + var/dam1 + var/dam2 + var/dam3 + var/dam4 + var/area + var/pos_x + var/pos_y + var/life_status + + for(var/mob/living/carbon/human/H in mob_list) + // Check if their z-level is correct and if they are wearing a uniform. + // Accept H.z==0 as well in case the mob is inside an object. + if ((H.z == 0 || H.z == z) && istype(H.w_uniform, /obj/item/clothing/under)) + U = H.w_uniform + + // Are the suit sensors on? + if (U.has_sensor && U.sensor_mode) + pos = H.z == 0 || U.sensor_mode == 3 ? get_turf(H) : null + + // Special case: If the mob is inside an object confirm the z-level on turf level. + if (H.z == 0 && (!pos || pos.z != z)) continue + + I = H.wear_id ? H.wear_id.GetID() : null + + if (I) + name = I.registered_name + assignment = I.assignment + ijob = jobs[I.assignment] + else + name = "Unknown" + assignment = "" + ijob = 80 + + if (U.sensor_mode >= 1) life_status = (!H.stat ? "true" : "false") + else life_status = null + + if (U.sensor_mode >= 2) + dam1 = round(H.getOxyLoss(),1) + dam2 = round(H.getToxLoss(),1) + dam3 = round(H.getFireLoss(),1) + dam4 = round(H.getBruteLoss(),1) + else + dam1 = null + dam2 = null + dam3 = null + dam4 = null + + if (U.sensor_mode >= 3) + if (!pos) pos = get_turf(H) + var/area/player_area = get_area(H) + + area = format_text(player_area.name) + pos_x = pos.x + pos_y = pos.y + else + area = null + pos_x = null + pos_y = null + + results[++results.len] = list(name, assignment, ijob, life_status, dam1, dam2, dam3, dam4, area, pos_x, pos_y, H.can_track(null)) + + src.data = results + src.updateFor(null, hi, z) // updates for everyone + +/datum/crewmonitor/proc/hiIsValidClient(datum/html_interface_client/hclient, datum/html_interface/hi) + var/z = "" + + for (z in src.interfaces) + if (src.interfaces[z] == hi) break + + return (hclient.client.mob && hclient.client.mob.stat == 0 && hclient.client.mob.z == text2num(z) && ( isAI(hclient.client.mob) || (locate(/obj/machinery/computer/crew, range(1, hclient.client.mob))) || (locate(/obj/item/device/sensor_device, hclient.client.mob.contents)) ) ) + +/datum/crewmonitor/Topic(href, href_list[], datum/html_interface_client/hclient) + if (istype(hclient)) + if (hclient && hclient.client && hclient.client.mob && isAI(hclient.client.mob)) + var/mob/living/silicon/ai/AI = hclient.client.mob + + switch (href_list["action"]) + if ("select_person") + AI.ai_camera_track(href_list["name"]) + + if ("select_position") + var/x = text2num(href_list["x"]) + var/y = text2num(href_list["y"]) + var/turf/tile = locate(x, y, AI.z) + + var/obj/machinery/camera/C = locate(/obj/machinery/camera) in range(5, tile) + + if (!C) C = locate(/obj/machinery/camera) in range(10, tile) + if (!C) C = locate(/obj/machinery/camera) in range(15, tile) + + if (C) + var/turf/current_loc = AI.eyeobj.loc + + spawn(min(30, get_dist(get_turf(C), AI.eyeobj) / 4)) + if (AI && AI.eyeobj && current_loc == AI.eyeobj.loc) + AI.switchCamera(C) + +/* /proc/crewscan() var/list/tracked = list() for(var/mob/living/carbon/human/H in mob_list) @@ -146,4 +235,196 @@ var/obj/item/clothing/under/U = H.w_uniform if(U.has_sensor && U.sensor_mode) tracked.Add(H) - return tracked \ No newline at end of file + return tracked +*/ + +/mob/living/carbon/human/Move() + if (src.w_uniform) + var/old_z = src.z + + . = ..() + + if (old_z != src.z) crewmonitor.queueUpdate(old_z) + crewmonitor.queueUpdate(src.z) + else + return ..() + +/datum/crewmonitor/proc/queueUpdate(z) + procqueue.queue(crewmonitor, "update", z) + +/datum/crewmonitor/proc/generateMiniMaps() + spawn + for (var/z = 1 to world.maxz) src.generateMiniMap(z) + + NOTICE("MINIMAP: All minimaps have been generated.") + + for (var/client/C in clients) + src.sendResources(C) + + src.initialized = TRUE + +/datum/crewmonitor/proc/sendResources(client/C) + C << browse_rsc('crew.js', "crewmonitor.js") + C << browse_rsc('crew.css', "crewmonitor.css") + for (var/z = 1 to world.maxz) C << browse_rsc(file("[getMinimapFile(z)].png"), "minimap_[z].png") + +/datum/crewmonitor/proc/getMinimapFile(z) + return "data/minimaps/map_[z]" + +// Activate this to debug tile mismatches in the minimap. +// This will store the full information on each tile and compare it the next time you run the minimap. +// It can be used to find out what's changed since the last iteration. +// Only activate this when you need it - this should never be active on a live server! +// #define MINIMAP_DEBUG + +/datum/crewmonitor/proc/generateMiniMap(z, x1 = 1, y1 = 1, x2 = world.maxx, y2 = world.maxy) + var/result_path = "[src.getMinimapFile(z)].png" + var/hash_path = "[src.getMinimapFile(z)].md5" + var/list/tiles = block(locate(x1, y1, z), locate(x2, y2, z)) + var/hash = "" + var/temp + var/obj/obj + + #ifdef MINIMAP_DEBUG + var/tiledata_path = "data/minimaps/debug_tiledata_[z].sav" + var/savefile/F = new/savefile(tiledata_path) + #endif + + // Note for future developer: If you have tiles on the map with random or dynamic icons this hash check will fail + // every time. You'll have to modify this code to generate a unique hash for your object. + // Don't forget to modify the minimap generation code to use a default icon (or skip generation altogether). + for (var/turf/tile in tiles) + if (istype(tile.loc, /area/asteroid) || istype(tile.loc, /area/mine/unexplored) || istype(tile, /turf/simulated/mineral) || (istype(tile.loc, /area/space) && istype(tile, /turf/simulated/floor/plating/asteroid))) + temp = "/area/asteroid" + else if (istype(tile.loc, /area/mine) && istype(tile, /turf/simulated/floor/plating/asteroid)) + temp = "/area/mine/explored" + else if (tile.loc.type == /area/start || (tile.type == /turf/space && !(locate(/obj/structure/lattice) in tile)) || istype(tile, /turf/space/transit)) + temp = "/turf/space" + if (locate(/obj/structure/lattice/catwalk) in tile) + + else + else if (tile.type == /turf/space) + if (locate(/obj/structure/lattice/catwalk) in tile) + temp = "/obj/structure/lattice/catwalk" + else + temp = "/obj/structure/lattice" + else if (tile.type == /turf/simulated/floor/plating/abductor) + temp = "/turf/simulated/floor/plating/abductor" + else if (tile.type == /turf/simulated/floor/plating && (locate(/obj/structure/window/shuttle) in tile)) + temp = "/obj/structure/window/shuttle" + else + temp = "[tile.icon][tile.icon_state][tile.dir]" + + obj = locate(/obj/structure/transit_tube) in tile + + if (obj) temp = "[temp]/obj/structure/transit_tube[obj.icon_state][obj.dir]" + + #ifdef MINIMAP_DEBUG + if (F["/[tile.y]/[tile.x]"] && F["/[tile.y]/[tile.x]"] != temp) + CRASH("Mismatch: [tile.type] at [tile.x],[tile.y],[tile.z] ([tile.icon], [tile.icon_state], [tile.dir])") + else + F["/[tile.y]/[tile.x]"] << temp + #endif + + hash = md5("[hash][temp]") + + if (fexists(result_path)) + if (!fexists(hash_path) || trim(file2text(hash_path)) != hash) + fdel(result_path) + fdel(hash_path) + + if (!fexists(result_path)) + ASSERT(x1 > 0) + ASSERT(y1 > 0) + ASSERT(x2 <= world.maxx) + ASSERT(y2 <= world.maxy) + + var/icon/map_icon = new/icon('html/mapbase1024.png') + + // map_icon is fine and contains only 1 direction at this point. + + ASSERT(map_icon.Width() == MAX_ICON_DIMENSION && map_icon.Height() == MAX_ICON_DIMENSION) + + NOTICE("MINIMAP: Generating minimap for z-level [z].") + + var/i = 0 + var/icon/turf_icon + var/icon/obj_icon + var/old_icon + var/old_icon_state + var/old_dir + var/new_icon + var/new_icon_state + var/new_dir + + for (var/turf/tile in tiles) + if (tile.loc.type != /area/start && (tile.type != /turf/space || (locate(/obj/structure/lattice) in tile) || (locate(/obj/structure/transit_tube) in tile)) && !istype(tile, /turf/space/transit)) + if (istype(tile.loc, /area/asteroid) || istype(tile.loc, /area/mine/unexplored) || istype(tile, /turf/simulated/mineral) || (istype(tile.loc, /area/space) && istype(tile, /turf/simulated/floor/plating/asteroid))) + new_icon = 'icons/turf/mining.dmi' + new_icon_state = "rock" + new_dir = 2 + else if (istype(tile.loc, /area/mine) && istype(tile, /turf/simulated/floor/plating/asteroid)) + new_icon = 'icons/turf/floors.dmi' + new_icon_state = "asteroid" + new_dir = 2 + else if (tile.type == /turf/simulated/floor/plating/abductor) + new_icon = 'icons/turf/floors.dmi' + new_icon_state = "alienpod1" + new_dir = 2 + else if (tile.type == /turf/space) + obj = locate(/obj/structure/lattice) in tile + + if (!obj) obj = locate(/obj/structure/transit_tube) in tile + + ASSERT(obj != null) + + if (obj) + new_icon = obj.icon + new_dir = obj.dir + new_icon_state = obj.icon_state + else if (tile.type == /turf/simulated/floor/plating && (locate(/obj/structure/window/shuttle) in tile)) + new_icon = 'icons/obj/structures.dmi' + new_dir = 2 + new_icon_state = "swindow" + else + new_icon = tile.icon + new_icon_state = tile.icon_state + new_dir = tile.dir + + if (new_icon != old_icon || new_icon_state != old_icon_state || new_dir != old_dir) + old_icon = new_icon + old_icon_state = new_icon_state + old_dir = new_dir + + turf_icon = new/icon(new_icon, new_icon_state, new_dir, 1, 0) + turf_icon.Scale(ICON_SIZE, ICON_SIZE) + + if (tile.type != /turf/space || (locate(/obj/structure/lattice) in tile)) + obj = locate(/obj/structure/transit_tube) in tile + + if (obj) + obj_icon = new/icon(obj.icon, obj.icon_state, obj.dir, 1, 0) + obj_icon.Scale(ICON_SIZE, ICON_SIZE) + turf_icon.Blend(obj_icon, ICON_OVERLAY) + + map_icon.Blend(turf_icon, ICON_OVERLAY, ((tile.x - 1) * ICON_SIZE), ((tile.y - 1) * ICON_SIZE)) + + if ((++i) % 512 == 0) sleep(1) // deliberate delay to avoid lag spikes + + if ((i % 1024) == 0) NOTICE("MINIMAP: Generated [i] of [tiles.len] tiles.") + else + sleep(-1) // avoid sleeping if possible: prioritize pending procs + + NOTICE("MINIMAP: Generated [tiles.len] of [tiles.len] tiles.") + + // BYOND BUG: map_icon now contains 4 directions? Create a new icon with only a single state. + var/icon/result_icon = new/icon() + + result_icon.Insert(map_icon, "", SOUTH, 1, 0) + + fcopy(result_icon, result_path) + text2file(hash, hash_path) + +#ifdef MINIMAP_DEBUG +#undef MINIMAP_DEBUG +#endif diff --git a/code/game/machinery/computer/crew.js b/code/game/machinery/computer/crew.js new file mode 100644 index 00000000000..d81d59447d9 --- /dev/null +++ b/code/game/machinery/computer/crew.js @@ -0,0 +1,196 @@ +var isAI = null; +var scale_x; +var scale_y; + +function disableSelection(){ return false; }; + +$(window).on("onUpdateContent", function() +{ + $("#textbased").html("

Name

 

Position

"); + + $("#minimap").append(""); + + $("body")[0].onselectstart = disableSelection; + + var width = $("#minimap").width(); + + scale_x = width / (maxx * tile_size); + scale_y = width / (maxy * tile_size); // height is assumed to be the same + + $("#minimap").on("click", function(e) + { + var x = ((((e.clientX - 8) / scale_x) / tile_size) + 1).toFixed(0); + var y = ((maxy - (((e.clientY - 8) / scale_y) / tile_size)) + 1).toFixed(0); + + window.location.href = "byond://?src=" + hSrc + "&action=select_position&x=" + x + "&y=" + y; + }); +}); + +var updateMap = true; + +function switchTo(i) +{ + if (i == 1) + { + $("#minimap").hide(); + $("#textbased").show(); + } + else + { + $("#textbased").hide(); + $("#minimap").show(); + } +} + +function clearAll(ai) +{ + if (isAI === null) { isAI = (ai == "true"); } + $("#textbased-tbody").empty(); + $("#minimap .dot").remove(); +} + +function isHead(ijob) +{ + return (ijob % 10 == 0); // head roles always end in 0 +} + +function getColor(ijob) +{ + if (ijob == 0) { return "#C06616"; } // captain + else if (ijob >= 10 && ijob < 20) { return "#E74C3C"; } // security + else if (ijob >= 20 && ijob < 30) { return "#3498DB"; } // medical + else if (ijob >= 30 && ijob < 40) { return "#9B59B6"; } // science + else if (ijob >= 40 && ijob < 50) { return "#F1C40F"; } // engineering + else if (ijob >= 50 && ijob < 60) { return "#F39C12"; } // cargo + else if (ijob >= 200 && ijob < 230) { return "#00C100"; } // Centcom + else { return "#C38312"; } // other / unknown +} + +function add(name, assignment, ijob, life_status, dam1, dam2, dam3, dam4, area, pos_x, pos_y, in_range) +{ + try { ijob = parseInt(ijob); } + catch (ex) { ijob = 0; } + + var ls = ""; + + if (life_status === null) { ls = (life_status ? "Deceased" : "Living"); } + + var healthHTML = ""; + + if (dam1 != "" || dam2 != "" || dam3 != "" || dam4 != "") + { + var avg_dam = parseInt(dam1) + parseInt(dam2) + parseInt(dam3) + parseInt(dam4); + var i; + + if (isAI) { i = -1; } + else + { + if (avg_dam <= 0) { i = 5; } + else if (avg_dam <= 25) { i = 4; } + else if (avg_dam <= 50) { i = 3; } + else if (avg_dam <= 75) { i = 2; } + else { i = 0; } + } + + healthHTML = "
(" + dam1 + "/" + dam2 + "/" + dam3 + "/" + dam4 + ")
"; + } + else + { + healthHTML = "
Not Available
"; + } + + var trElem = $("").attr("data-ijob", ijob); + var tdElem; + var spanElem; + + tdElem = $(""); + + var italics = false; + + if (name.length >= 7 && name.substring(0, 3) == "") + { + name = name.substring(3, name.length - 4); + italics = true; + } + + spanElem = $("").text(name); + + if (italics) + { + spanElem.css("font-style", "italic"); + } + + if (isHead(ijob)) { spanElem.css("font-weight", "bold"); } + + var color = getColor(ijob); + + if (color) { spanElem.css("color", color); } + + tdElem.append(spanElem); + + if (assignment) { tdElem.append($("").text(" (" + assignment + ")")); } + + trElem.append(tdElem); + + tdElem = $(""); + tdElem.html(healthHTML); + + trElem.append(tdElem); + + tdElem = $(""); + + if (area && pos_x && pos_y) { tdElem.append($("
").text(area).addClass("tt").append($("
").append($("").text("(" + pos_x + ", " + pos_y + ")")))); } + else { tdElem.text("Not Available"); } + + trElem.append(tdElem); + + $("#textbased-tbody").append(trElem); + + if (updateMap && pos_x && pos_y && (in_range == "1")) + { + var x = parseInt(pos_x); + var y = maxy - parseInt(pos_y); + + var tx = (translate(x - 1, scale_x) - 1.5).toFixed(0); + var ty = (translate(y - 1, scale_y) + 3).toFixed(0); + + var dotElem = $("
"); + + $("#minimap").append(dotElem); + + function enable() + { + dotElem.css({ "border-color": color, "z-index": 9999, "width": "8px", "height": "8px", "margin-top": "-2px", "margin-left": "-3px" }); + } + + function disable() + { + dotElem.css({ "border-color": "transparent", "z-index": ijob, "width": "3px", "height": "3px", "margin-top": "0px", "margin-left": "0px", "filter": "" }); + } + + function click(e) + { + e.preventDefault(); + e.stopPropagation(); + + window.location.href = "byond://?src=" + hSrc + "&action=select_person&name=" + encodeURIComponent(name); + } + + trElem.on("mouseover", enable).on("mouseout", disable).on("click", click); + + dotElem.on("mouseover", function() + { + trElem.addClass("hover"); + enable(); + }).on("mouseout", function() + { + trElem.removeClass("hover"); + disable(); + }).on("click", click); + } +} + +function translate(n, scale) +{ + return (n * tile_size) * scale; +} \ No newline at end of file diff --git a/code/game/machinery/computer/station_alert.dm b/code/game/machinery/computer/station_alert.dm index 1d2b1e5c7ce..02c39d11f54 100644 --- a/code/game/machinery/computer/station_alert.dm +++ b/code/game/machinery/computer/station_alert.dm @@ -98,11 +98,11 @@ /obj/machinery/computer/station_alert/update_icon() ..() + if(stat & (NOPOWER|BROKEN)) + return var/active_alarms = 0 for (var/cat in src.alarms) var/list/L = src.alarms[cat] if(L.len) active_alarms = 1 if(active_alarms) - overlays += "alert:2" - else - overlays += "alert:0" \ No newline at end of file + overlays += "alert:2" \ No newline at end of file diff --git a/code/game/machinery/deployable.dm b/code/game/machinery/deployable.dm index 471818ca3c4..8a0cc63b0e4 100644 --- a/code/game/machinery/deployable.dm +++ b/code/game/machinery/deployable.dm @@ -68,7 +68,7 @@ for reference: if (istype(W, /obj/item/stack/sheet/mineral/wood)) if (src.health < src.maxhealth) visible_message("[user] begins to repair \the [src]!", "You begin to repair \the [src]...") - if(do_after(user,20)) + if(do_after(user,20, target = src)) src.health = src.maxhealth W:use(1) visible_message("[user] repairs \the [src]!", "You repair \the [src].") diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 8a752cd6f76..f5fdbb61eee 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -923,7 +923,7 @@ About the new airlock wires panel: "You begin [welded ? "unwelding":"welding"] the airlock...", \ "You hear welding.") playsound(loc, 'sound/items/Welder.ogg', 40, 1) - if(do_after(user,40,5,1)) + if(do_after(user,40,5,1, target = src)) if(density && !operating)//Door must be closed to weld. if( !istype(src, /obj/machinery/door/airlock) || !user || !W || !W.isOn() || !user.loc ) return @@ -975,7 +975,7 @@ About the new airlock wires panel: playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1) user.visible_message("[user] removes the electronics from the airlock assembly.", \ "You start to remove electronics from the airlock assembly...") - if(do_after(user,40)) + if(do_after(user,40, target = src)) if(src.loc) if(src.doortype) var/obj/structure/door_assembly/A = new src.doortype(src.loc) diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index 2d851669879..5ea017c481b 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -183,6 +183,11 @@ take_damage(round(Proj.damage / 2)) ..() +/obj/machinery/door/window/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) + if(exposed_temperature > T0C + 800) + take_damage(round(exposed_volume / 200)) + ..() + //When an object is thrown at the window /obj/machinery/door/window/hitby(AM as mob|obj) @@ -277,7 +282,7 @@ playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1) user.visible_message("[user] removes the electronics from the [src.name].", \ "You start to remove electronics from the [src.name]...") - if(do_after(user,40)) + if(do_after(user,40, target = src)) if(src.p_open && !src.density && !src.operating && src.loc) var/obj/structure/windoor_assembly/WA = new /obj/structure/windoor_assembly(src.loc) switch(base_state) diff --git a/code/game/machinery/flasher.dm b/code/game/machinery/flasher.dm index 1b6be79b004..fe8bcc75a56 100644 --- a/code/game/machinery/flasher.dm +++ b/code/game/machinery/flasher.dm @@ -42,7 +42,7 @@ if (bulb) user.visible_message("[user] begins to disconnect [src]'s flashbulb.", "You begin to disconnect [src]'s flashbulb...") playsound(src.loc, 'sound/items/Wirecutter.ogg', 100, 1) - if(do_after(user, 30) && bulb) + if(do_after(user, 30, target = src) && bulb) user.visible_message("[user] has disconnected [src]'s flashbulb!", "You disconnect [src]'s flashbulb.") bulb.loc = src.loc bulb = null diff --git a/code/game/machinery/iv_drip.dm b/code/game/machinery/iv_drip.dm index 0c600860d7c..73bd48b5df5 100644 --- a/code/game/machinery/iv_drip.dm +++ b/code/game/machinery/iv_drip.dm @@ -108,7 +108,8 @@ if(istype(beaker, /obj/item/weapon/reagent_containers/blood)) // speed up transfer on blood packs transfer_amount = 10 - beaker.reagents.reaction(attached, INGEST, 1,0) //make reagents reacts, but don't spam messages + var/fraction = min(transfer_amount/beaker.volume, 1) //the fraction that is transfered of the total volume + beaker.reagents.reaction(attached, INGEST, fraction,0) //make reagents reacts, but don't spam messages beaker.reagents.trans_to(attached, transfer_amount) update_icon() diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index 949f7b05dd3..02221971859 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -367,7 +367,7 @@ Class Procs: if(istype(W)) user << "You begin [anchored ? "un" : ""]securing [name]..." playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) - if(do_after(user, time)) + if(do_after(user, time, target = src)) user << "You [anchored ? "un" : ""]secure [name]." anchored = !anchored playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) @@ -415,4 +415,16 @@ Class Procs: return /obj/machinery/allow_drop() - return 0 \ No newline at end of file + return 0 + +// Hook for html_interface module to prevent updates to clients who don't have this as their active machine. +/obj/machinery/proc/hiIsValidClient(datum/html_interface_client/hclient, datum/html_interface/hi) + if (hclient.client.mob && hclient.client.mob.stat == 0) + if (isAI(hclient.client.mob)) return TRUE + else return hclient.client.mob.machine == src && src.Adjacent(hclient.client.mob) + else + return FALSE + +// Hook for html_interface module to unset the active machine when the window is closed by the player. +/obj/machinery/proc/hiOnHide(datum/html_interface_client/hclient) + if (hclient.client.mob && hclient.client.mob.machine == src) hclient.client.mob.unset_machine() diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm index a11ed0d4a47..3f9bf156f75 100644 --- a/code/game/machinery/newscaster.dm +++ b/code/game/machinery/newscaster.dm @@ -742,7 +742,7 @@ var/list/obj/machinery/newscaster/allCasters = list() if(istype(I, /obj/item/weapon/wrench)) user << "You start [anchored ? "un" : ""]securing [name]..." playsound(loc, 'sound/items/Ratchet.ogg', 50, 1) - if(do_after(user, 60)) + if(do_after(user, 60, target = src)) user << "You [anchored ? "un" : ""]secure [name]." new /obj/item/newscaster_frame(loc) playsound(loc, 'sound/items/Deconstruct.ogg', 50, 1) diff --git a/code/game/machinery/pipe/pipe_dispenser.dm b/code/game/machinery/pipe/pipe_dispenser.dm index 96fb5716814..ff9a8dd287f 100644 --- a/code/game/machinery/pipe/pipe_dispenser.dm +++ b/code/game/machinery/pipe/pipe_dispenser.dm @@ -80,7 +80,7 @@ if (!anchored && !isinspace()) playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) user << "You begin to fasten \the [src] to the floor..." - if (do_after(user, 40)) + if (do_after(user, 40, target = src)) add_fingerprint(user) user.visible_message( \ "[user] fastens \the [src].", \ @@ -93,7 +93,7 @@ else if(anchored) playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) user << "You begin to unfasten \the [src] from the floor..." - if (do_after(user, 20)) + if (do_after(user, 20, target = src)) add_fingerprint(user) user.visible_message( \ "[user] unfastens \the [src].", \ diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm index 188190756d7..ebf7b9005aa 100644 --- a/code/game/machinery/portable_turret.dm +++ b/code/game/machinery/portable_turret.dm @@ -709,7 +709,7 @@ playsound(loc, pick('sound/items/Welder.ogg', 'sound/items/Welder2.ogg'), 50, 1) user << "You start to remove the turret's interior metal armor..." - if(do_after(user, 20)) + if(do_after(user, 20, target = src)) if(!src || !WT.remove_fuel(5, user)) return build_step = 1 user << "You remove the turret's interior metal armor." @@ -785,7 +785,7 @@ playsound(loc, pick('sound/items/Welder.ogg', 'sound/items/Welder2.ogg'), 50, 1) user << "You begin to weld the turret's armor down..." - if(do_after(user, 30)) + if(do_after(user, 30, target = src)) if(!src || !WT.remove_fuel(5, user)) return build_step = 8 diff --git a/code/game/machinery/requests_console.dm b/code/game/machinery/requests_console.dm index 7c7d9efb9a4..eadb82f7526 100644 --- a/code/game/machinery/requests_console.dm +++ b/code/game/machinery/requests_console.dm @@ -54,6 +54,8 @@ var/list/obj/machinery/requests_console/allConsoles = list() var/message = ""; var/dpt = ""; //the department which will be receiving the message var/priority = -1 ; //Priority of the message being sent + var/obj/item/device/radio/Radio + var/emergency //If an emergency has been called by this device. Acts as both a cooldown and lets the responder know where it the emergency was triggered from luminosity = 0 /obj/machinery/requests_console/power_change() @@ -70,12 +72,12 @@ var/list/obj/machinery/requests_console/allConsoles = list() if(icon_state != "req_comp_off") icon_state = "req_comp_off" else - if(newmessagepriority == 1) - icon_state = "req_comp1" + if(emergency || (newmessagepriority == 3)) + icon_state = "req_comp3" else if(newmessagepriority == 2) icon_state = "req_comp2" - else if(newmessagepriority == 3) - icon_state = "req_comp3" + else if(newmessagepriority == 1) + icon_state = "req_comp1" else icon_state = "req_comp0" @@ -116,6 +118,8 @@ var/list/obj/machinery/requests_console/allConsoles = list() if(!("[department]" in req_console_information)) req_console_information += department + Radio = new /obj/item/device/radio(src) + Radio.listening = 0 /obj/machinery/requests_console/attack_hand(var/mob/user) if(..(user)) @@ -227,6 +231,14 @@ var/list/obj/machinery/requests_console/allConsoles = list() dat += "Request Assistance
" dat += "Request Supplies
" dat += "Relay Anonymous Information

" + + if(!emergency) + dat += "Emergency: Security
" + dat += "Emergency: Engineering
" + dat += "Emergency: Medical

" + else + dat += "[emergency] has been dispatched to this location.

" + if(announcementConsole) dat += "Send Station-wide Announcement

" if (silent) @@ -288,6 +300,27 @@ var/list/obj/machinery/requests_console/allConsoles = list() message = "" screen = 0 + if(href_list["emergency"]) + if(!emergency) + var/radio_freq + switch(text2num(href_list["emergency"])) + if(1) //Security + radio_freq = SEC_FREQ + emergency = "Security" + if(2) //Engineering + radio_freq = ENG_FREQ + emergency = "Engineering" + if(3) //Medical + radio_freq = MED_FREQ + emergency = "Medical" + if(radio_freq) + Radio.set_frequency(radio_freq) + Radio.talk_into(src,"[emergency] emergency declared from [department]!",radio_freq) + update_icon() + spawn(3000) + emergency = null + update_icon() + if( href_list["department"] && message ) var/log_msg = message var/sending = message @@ -307,15 +340,40 @@ var/list/obj/machinery/requests_console/allConsoles = list() pass = 1 if(pass) + var/radio_freq = 0 + switch(href_list["department"]) + if("bridge") + radio_freq = COMM_FREQ + if("medbay") + radio_freq = MED_FREQ + if("science") + radio_freq = SCI_FREQ + if("engineering") + radio_freq = ENG_FREQ + if("security") + radio_freq = SEC_FREQ + if("cargobay" || "mining") + radio_freq = SUPP_FREQ + Radio.set_frequency(radio_freq) + var/authentic + if(msgVerified || msgStamped) + authentic = " (Authenticated)" + for (var/obj/machinery/requests_console/Console in allConsoles) if (ckey(Console.department) == ckey(href_list["department"])) switch(priority) if(2) //High priority - Console.createmessage(src, "PRIORITY Alert in [department]", sending, 2, 1) + Console.createmessage(src, "PRIORITY Alert in [department][authentic]", sending, 2, 1) + if(radio_freq) + Radio.talk_into(src,"PRIORITY Alert from [department][authentic]: [message]",radio_freq) if(3) // Extreme Priority - Console.createmessage(src, "EXTREME PRIORITY Alert in [department]", sending, 3, 1) + Console.createmessage(src, "EXTREME PRIORITY Alert from [department][authentic]", sending, 3, 1) + if(radio_freq) + Radio.talk_into(src,"EXTREME PRIORITY Alert in [department][authentic]: [message]",radio_freq) else // Normal priority - Console.createmessage(src, "Message from [department]", sending, 1, 1) + Console.createmessage(src, "Message from [department][authentic]", sending, 1, 1) + if(radio_freq) + Radio.talk_into(src,"Message from [department][authentic]: [message]",radio_freq) screen = 6 Console.SetLuminosity(2) @@ -376,17 +434,14 @@ var/list/obj/machinery/requests_console/allConsoles = list() return ..() -/obj/machinery/requests_console/proc/createmessage(source, title, message, priority, paper) +/obj/machinery/requests_console/proc/createmessage(source, title, message, priority) var/linkedsender - var/unlinkedsender if(istype(source, /obj/machinery/requests_console)) var/obj/machinery/requests_console/sender = source linkedsender = "[sender.department]" - unlinkedsender = sender.department else capitalize(source) linkedsender = source - unlinkedsender = source capitalize(title) switch(priority) if(2) //High priority @@ -397,10 +452,6 @@ var/list/obj/machinery/requests_console/allConsoles = list() playsound(src.loc, 'sound/machines/twobeep.ogg', 50, 1) say(title) src.messages += "High Priority
From: [linkedsender]
[message]" - if(paper) - var/obj/item/weapon/paper/slip = new /obj/item/weapon/paper(src.loc) - slip.info = "High Priority
From: [unlinkedsender]
[message]" - slip.name = "Important Message - [source]" if(3) // Extreme Priority if(src.newmessagepriority < 3) @@ -410,14 +461,6 @@ var/list/obj/machinery/requests_console/allConsoles = list() playsound(src.loc, 'sound/machines/twobeep.ogg', 50, 1) say(title) src.messages += "!!!Extreme Priority!!!
From: [linkedsender]
[message]" - var/obj/item/weapon/paper/slip = new /obj/item/weapon/paper(src.loc) - if(paper) - slip.info = "!!!Extreme Priority!!!
From: [unlinkedsender]
[message]" - slip.name = "URGENT message - [unlinkedsender]" - var/mob/living/target = locate() in view(7,src) - if(target) - src.visible_message("[src] launches [slip] at [target]!") - slip.throw_at(target, 16, 3) else // Normal priority if(src.newmessagepriority < 1) @@ -427,10 +470,6 @@ var/list/obj/machinery/requests_console/allConsoles = list() playsound(src.loc, 'sound/machines/twobeep.ogg', 50, 1) say(title) src.messages += "From: [linkedsender]
[message]" - if(paper) - var/obj/item/weapon/paper/slip = new /obj/item/weapon/paper(src.loc) - slip.info = "From: [unlinkedsender]
[message]" - slip.name = "Message - [unlinkedsender]" SetLuminosity(2) /obj/machinery/requests_console/attackby(var/obj/item/weapon/O as obj, var/mob/user as mob, params) diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm index b98fa244823..9de401f9388 100644 --- a/code/game/machinery/shieldgen.dm +++ b/code/game/machinery/shieldgen.dm @@ -246,7 +246,7 @@ user << "You need one length of cable to repair [src]!" return user << "You begin to replace the wires..." - if(do_after(user, 30)) + if(do_after(user, 30, target = src)) if(coil.get_amount() < 1) return coil.use(1) diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index e3993de167e..bee339ff68b 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -449,7 +449,7 @@ var/breakout_time = 2 user << "You start kicking against the doors to escape... (This will take about [breakout_time] minutes.)" visible_message("You see [user] kicking against the doors of \the [src]!") - if(do_after(user,(breakout_time*60*10))) + if(do_after(user,(breakout_time*60*10), target = src)) if(!user || user.stat != CONSCIOUS || user.loc != src || isopen || !islocked) return else diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index a8aff14f4c4..8662dce832e 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -739,11 +739,11 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C /obj/item/weapon/storage/fancy/cigarettes/cigpack_carp = 3, /obj/item/weapon/storage/fancy/cigarettes/cigpack_midori = 3, /obj/item/weapon/storage/box/matches = 10, - /obj/item/weapon/lighter/grayscale = 4, + /obj/item/weapon/lighter/greyscale = 4, /obj/item/weapon/storage/fancy/rollingpapers = 5) - contraband = list(/obj/item/weapon/lighter/zippo = 4) + contraband = list(/obj/item/weapon/lighter = 4) premium = list(/obj/item/weapon/storage/fancy/cigarettes/cigpack_robustgold = 2, \ - /obj/item/weapon/storage/fancy/cigars = 1, /obj/item/weapon/storage/fancy/cigars/havana = 1, /obj/item/weapon/storage/fancy/cigars/cohiba = 1) + /obj/item/weapon/storage/fancy/cigarettes/cigars = 1, /obj/item/weapon/storage/fancy/cigarettes/cigars/havana = 1, /obj/item/weapon/storage/fancy/cigarettes/cigars/cohiba = 1) refill_canister = /obj/item/weapon/vending_refill/cigarette /obj/machinery/vending/medical @@ -855,7 +855,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C /obj/item/clothing/mask/fakemoustache = 1,/obj/item/clothing/suit/bio_suit/plaguedoctorsuit = 1,/obj/item/clothing/head/plaguedoctorhat = 1,/obj/item/clothing/mask/gas/plaguedoctor = 1, /obj/item/clothing/suit/toggle/owlwings = 1, /obj/item/clothing/under/owl = 1,/obj/item/clothing/mask/gas/owl_mask = 1, /obj/item/clothing/suit/toggle/owlwings/griffinwings = 1, /obj/item/clothing/under/griffin = 1, /obj/item/clothing/shoes/griffin = 1, /obj/item/clothing/head/griffin = 1, - /obj/item/clothing/suit/apron = 1,/obj/item/clothing/under/waiter = 1, + /obj/item/clothing/suit/apron = 1,/obj/item/clothing/under/waiter = 1,/obj/item/clothing/suit/miljacket = 1, /obj/item/clothing/under/pirate = 1,/obj/item/clothing/suit/pirate = 1,/obj/item/clothing/head/pirate = 1,/obj/item/clothing/head/bandana = 1, /obj/item/clothing/head/bandana = 1,/obj/item/clothing/under/soviet = 1,/obj/item/clothing/head/ushanka = 1,/obj/item/clothing/suit/imperium_monk = 1, /obj/item/clothing/mask/gas/cyborg = 1,/obj/item/clothing/suit/holidaypriest = 1,/obj/item/clothing/head/wizard/marisa/fake = 1, @@ -944,12 +944,13 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C vend_delay = 15 vend_reply = "Thank you for using the ClothesMate!" products = list(/obj/item/clothing/head/that=2,/obj/item/clothing/head/fedora=1,/obj/item/clothing/glasses/monocle=1, - /obj/item/clothing/suit/jacket=3,/obj/item/clothing/under/suit_jacket/navy=1,/obj/item/clothing/under/suit_jacket/really_black=1,/obj/item/clothing/under/suit_jacket/burgundy=1, + /obj/item/clothing/suit/jacket=2, /obj/item/clothing/suit/jacket/puffer/vest=2, /obj/item/clothing/suit/jacket/puffer=2, + /obj/item/clothing/under/suit_jacket/navy=1,/obj/item/clothing/under/suit_jacket/really_black=1,/obj/item/clothing/under/suit_jacket/burgundy=1, /obj/item/clothing/under/suit_jacket/charcoal=1, /obj/item/clothing/under/suit_jacket/white=1,/obj/item/clothing/under/kilt=1,/obj/item/clothing/under/overalls=1, /obj/item/clothing/under/sl_suit=1,/obj/item/clothing/under/pants/jeans=3,/obj/item/clothing/under/pants/classicjeans=2, /obj/item/clothing/under/pants/camo = 1,/obj/item/clothing/under/pants/blackjeans=2,/obj/item/clothing/under/pants/khaki=2, /obj/item/clothing/under/pants/white=2,/obj/item/clothing/under/pants/red=1,/obj/item/clothing/under/pants/black=2, - /obj/item/clothing/under/pants/tan=2,/obj/item/clothing/under/pants/track=1, + /obj/item/clothing/under/pants/tan=2,/obj/item/clothing/under/pants/track=1,/obj/item/clothing/suit/miljacket = 1, /obj/item/clothing/tie/blue=1, /obj/item/clothing/tie/red=1, /obj/item/clothing/tie/black=1, /obj/item/clothing/tie/horrible=1, /obj/item/clothing/tie/scarf/red=1,/obj/item/clothing/tie/scarf/green=1,/obj/item/clothing/tie/scarf/darkblue=1, /obj/item/clothing/tie/scarf/purple=1,/obj/item/clothing/tie/scarf/yellow=1,/obj/item/clothing/tie/scarf/orange=1, diff --git a/code/game/mecha/combat/marauder.dm b/code/game/mecha/combat/marauder.dm index 15dadd6456d..89580944e01 100644 --- a/code/game/mecha/combat/marauder.dm +++ b/code/game/mecha/combat/marauder.dm @@ -13,7 +13,7 @@ var/smoke = 5 var/smoke_ready = 1 var/smoke_cooldown = 100 - var/datum/effect/effect/system/harmless_smoke_spread/smoke_system = new + var/datum/effect/effect/system/smoke_spread/smoke_system = new operation_req_access = list(access_cent_specops) wreckage = /obj/structure/mecha_wreckage/marauder add_req_access = 0 diff --git a/code/game/mecha/mech_bay.dm b/code/game/mecha/mech_bay.dm index d2c467765a4..7705cbefbbd 100644 --- a/code/game/mecha/mech_bay.dm +++ b/code/game/mecha/mech_bay.dm @@ -146,7 +146,7 @@ /obj/machinery/computer/mech_bay_power_console/update_icon() ..() - if(!recharge_port || !recharge_port.recharging_mech || !recharge_port.recharging_mech.cell || !(recharge_port.recharging_mech.cell.charge < recharge_port.recharging_mech.cell.maxcharge)) + if(!recharge_port || !recharge_port.recharging_mech || !recharge_port.recharging_mech.cell || !(recharge_port.recharging_mech.cell.charge < recharge_port.recharging_mech.cell.maxcharge) || stat & (NOPOWER|BROKEN)) return overlays += "recharge_comp_on" diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm index 749d413b446..a8d591495d4 100644 --- a/code/game/mecha/mech_fabricator.dm +++ b/code/game/mecha/mech_fabricator.dm @@ -169,7 +169,7 @@ overlays -= "fab-active" desc = initial(desc) - var/location = get_step(src,SOUTH) + var/location = get_step(src,(dir)) var/obj/item/I = new D.build_path(location) I.m_amt = get_resource_cost_w_coeff(D,"$metal") I.g_amt = get_resource_cost_w_coeff(D,"$glass") @@ -305,7 +305,7 @@ if (..()) return user.set_machine(src) - var/turf/exit = get_step(src,SOUTH) + var/turf/exit = get_step(src,(dir)) if(exit.density) visible_message("\icon[src] \The [src] beeps, \"Error! Part outlet is obstructed.\"") return diff --git a/code/game/objects/buckling.dm b/code/game/objects/buckling.dm index 43cd9f186cf..0c781f27f9b 100644 --- a/code/game/objects/buckling.dm +++ b/code/game/objects/buckling.dm @@ -47,6 +47,9 @@ M.update_canmove() post_buckle_mob(M) M.throw_alert("buckled", new_master = src) + if(burn_state == 1) //Sets the mob on fire if you buckle them to a burning object + M.adjust_fire_stacks(1) + M.IgniteMob() return 1 /obj/proc/unbuckle_mob() diff --git a/code/game/objects/effects/anomalies.dm b/code/game/objects/effects/anomalies.dm index efd1624bbf0..a31877f27f1 100644 --- a/code/game/objects/effects/anomalies.dm +++ b/code/game/objects/effects/anomalies.dm @@ -27,7 +27,7 @@ /obj/effect/anomaly/proc/anomalyNeutralize() - PoolOrNew(/obj/effect/effect/bad_smoke, loc) + PoolOrNew(/obj/effect/effect/smoke/bad, loc) for(var/atom/movable/O in src) O.loc = src.loc diff --git a/code/game/objects/effects/decals/Cleanable/misc.dm b/code/game/objects/effects/decals/Cleanable/misc.dm index 71d209de6a6..7dc1f58688a 100644 --- a/code/game/objects/effects/decals/Cleanable/misc.dm +++ b/code/game/objects/effects/decals/Cleanable/misc.dm @@ -19,6 +19,9 @@ /obj/effect/decal/cleanable/ash/New() ..() reagents.add_reagent("ash", 30) + pixel_x = rand(-5, 5) + pixel_y = rand(-5, 5) + /obj/effect/decal/cleanable/greenglow name = "green glow" @@ -71,6 +74,10 @@ layer = 3 icon = 'icons/effects/effects.dmi' icon_state = "cobweb1" + burntime = 1 + +/obj/effect/decal/cleanable/cobweb/fire_act() + qdel(src) /obj/effect/decal/cleanable/molten_item name = "gooey grey mass" @@ -142,4 +149,19 @@ gender = PLURAL icon = 'icons/obj/objects.dmi' icon_state = "ash" - anchored = 1 \ No newline at end of file + anchored = 1 + +/obj/effect/decal/cleanable/shreds + name = "shreds" + desc = "The shredded remains of what appears to be clothing." + icon = 'icons/effects/effects.dmi' + icon_state = "shreds" + gender = PLURAL + density = 0 + anchored = 1 + layer = 2 + +/obj/effect/decal/cleanable/shreds/New() + pixel_x = rand(-5, 5) + pixel_y = rand(-5, 5) + ..() \ No newline at end of file diff --git a/code/game/objects/effects/decals/cleanable.dm b/code/game/objects/effects/decals/cleanable.dm index f81ef319ca1..26835a69788 100644 --- a/code/game/objects/effects/decals/cleanable.dm +++ b/code/game/objects/effects/decals/cleanable.dm @@ -37,6 +37,7 @@ ..() /obj/effect/decal/cleanable/fire_act() - reagents.chem_temp += 30 - reagents.handle_reactions() + if(reagents) + reagents.chem_temp += 30 + reagents.handle_reactions() ..() \ No newline at end of file diff --git a/code/game/objects/effects/decals/crayon.dm b/code/game/objects/effects/decals/crayon.dm index 8aca6f11748..1c1d2cc4a54 100644 --- a/code/game/objects/effects/decals/crayon.dm +++ b/code/game/objects/effects/decals/crayon.dm @@ -42,13 +42,13 @@ if(type == "A") gang = type - color = "#00b4ff" + color = "#00B7EF" icon_state = gang_name("A") ticker.mode.A_territory_new |= list(territory.type = territory.name) ticker.mode.A_territory_lost -= territory.type else if(type == "B") gang = type - color = "#ff3232" + color = "#DA0000" icon_state = gang_name("B") ticker.mode.B_territory_new |= list(territory.type = territory.name) ticker.mode.B_territory_lost -= territory.type diff --git a/code/game/objects/effects/effect_system/effect_system.dm b/code/game/objects/effects/effect_system/effect_system.dm index eb84812588f..8953cc09c7a 100644 --- a/code/game/objects/effects/effect_system/effect_system.dm +++ b/code/game/objects/effects/effect_system/effect_system.dm @@ -16,7 +16,7 @@ would spawn and follow the beaker, even if it is carried or thrown. /obj/effect/effect/Destroy() ..() return QDEL_HINT_PUTINPOOL - +/* /datum/effect/effect/proc/fadeOut(var/atom/A, var/frames = 16) if(A.alpha == 0) //Handle already transparent case return @@ -27,7 +27,7 @@ would spawn and follow the beaker, even if it is carried or thrown. A.alpha -= step sleep(world.tick_lag) return - +*/ /datum/effect/effect/system var/number = 3 var/cardinals = 0 diff --git a/code/game/objects/effects/effect_system/effects_foam.dm b/code/game/objects/effects/effect_system/effects_foam.dm index 96d7433cead..81031ea3985 100644 --- a/code/game/objects/effects/effect_system/effects_foam.dm +++ b/code/game/objects/effects/effect_system/effects_foam.dm @@ -10,7 +10,6 @@ layer = TURF_LAYER + 0.1 mouse_opacity = 0 var/amount = 3 - var/expand = 1 animate_movement = 0 var/metal = 0 var/lifetime = 6 @@ -37,15 +36,13 @@ SSobj.processing.Remove(src) return ..() -/obj/effect/effect/foam/metal/New(loc) - ..() - var/obj/structure/foamedmetal/M = new(src.loc) - M.metal = metal - M.updateicon() - /obj/effect/effect/foam/proc/kill_foam() SSobj.processing.Remove(src) + if(metal) + var/obj/structure/foamedmetal/M = new(src.loc) + M.metal = metal + M.updateicon() flick("[icon_state]-disolve", src) spawn(5) qdel(src) @@ -55,21 +52,40 @@ lifetime-- if(lifetime < 1) kill_foam() + return + + var/fraction = 1/initial(lifetime) + for(var/obj/O in range(0,src)) + if(O.type == src.type) + continue + reagents.reaction(O, TOUCH, fraction) + var/hit = 0 + for(var/mob/living/L in range(0,src)) + hit += foam_mob(L) + if(hit) + lifetime++ //this is so the decrease from mobs hit and the natural decrease don't cumulate. + var/T = get_turf(src) + reagents.reaction(T, TOUCH, fraction) + if(--amount < 0) return - for(var/atom/M in view(1,src)) - if(M == src) - continue - reagents.reaction(M, TOUCH) spread_foam() +/obj/effect/effect/foam/proc/foam_mob(var/mob/living/L as mob) + if(lifetime<1) + return 0 + if(!istype(L)) + return 0 + var/fraction = 1/initial(lifetime) + reagents.reaction(L, TOUCH, fraction) + lifetime-- + return 1 /obj/effect/effect/foam/Crossed(var/atom/movable/AM) if(istype(AM, /mob/living/carbon)) var/mob/living/carbon/M = AM M.slip(5, 2, src) - /obj/effect/effect/foam/metal/Crossed(var/atom/movable/AM) return @@ -87,10 +103,13 @@ if(foundfoam) continue - var/obj/effect/effect/foam/F = PoolOrNew(/obj/effect/effect/foam, T) + for(var/mob/living/L in T) + foam_mob(L) + var/obj/effect/effect/foam/F = PoolOrNew(src.type, T) F.amount = amount reagents.copy_to(F, (reagents.total_volume)) F.color = color + F.metal = metal /obj/effect/effect/foam/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) @@ -136,7 +155,6 @@ amount = round(sqrt(amt / 2), 1) carry.copy_to(chemholder, carry.total_volume) - /datum/effect/effect/system/foam_spread/metal/set_up(amt=5, loca, var/datum/reagents/carry = null, var/metaltype) ..() metal = metaltype @@ -148,7 +166,7 @@ else var/obj/effect/effect/foam/F = PoolOrNew(foamtype, location) var/foamcolor = mix_color_from_reagents(chemholder.reagents.reagent_list) - chemholder.reagents.copy_to(F, chemholder.reagents.total_volume) + chemholder.reagents.copy_to(F, chemholder.reagents.total_volume/amount) //how much reagents each foam cell holds F.color = foamcolor F.amount = amount F.metal = metal diff --git a/code/game/objects/effects/effect_system/effects_smoke.dm b/code/game/objects/effects/effect_system/effects_smoke.dm index c2954010ca4..1f447c5c1f9 100644 --- a/code/game/objects/effects/effect_system/effects_smoke.dm +++ b/code/game/objects/effects/effect_system/effects_smoke.dm @@ -6,37 +6,84 @@ /obj/effect/effect/smoke name = "smoke" - icon = 'icons/effects/water.dmi' - icon_state = "smoke" - opacity = 1 - anchored = 0.0 - mouse_opacity = 0 - var/amount = 8.0 - -/obj/effect/effect/harmless_smoke - name = "smoke" - icon_state = "smoke" - opacity = 1 - anchored = 0.0 - mouse_opacity = 0 - var/amount = 6.0 - //Remove this bit to use the old smoke icon = 'icons/effects/96x96.dmi' pixel_x = -32 pixel_y = -32 - -/obj/effect/effect/harmless_smoke/New() - ..() - spawn (100) - qdel(src) - -/datum/effect/effect/system/harmless_smoke_spread - var/total_smoke = 0 // To stop it being spammed and lagging! + icon_state = "smoke" + opacity = 1 + anchored = 0 + mouse_opacity = 0 + var/steps = 0 + var/lifetime = 5 var/direction -/datum/effect/effect/system/harmless_smoke_spread/set_up(n = 5, c = 0, loca, direct) - if(n > 10) - n = 10 + +/obj/effect/effect/smoke/proc/fade_out(var/frames = 16) + if(alpha == 0) //Handle already transparent case + return + if(frames == 0) + frames = 1 //We will just assume that by 0 frames, the coder meant "during one frame". + var/step = alpha / frames + for(var/i = 0, i < frames, i++) + alpha -= step + sleep(world.tick_lag) + +/obj/effect/effect/smoke/New() + ..() + create_reagents(500) + SSobj.processing.Add(src) + lifetime += rand(-1,1) + +/obj/effect/effect/smoke/Destroy() + SSobj.processing.Remove(src) + ..() + +/obj/effect/effect/smoke/proc/kill_smoke() + SSobj.processing.Remove(src) + spawn(0) + fade_out() + spawn(10) + qdel(src) + +/obj/effect/effect/smoke/process() + lifetime-- + if(lifetime < 1) + kill_smoke() + return 0 + if(steps >= 1) + step(src,direction) + steps-- + return 1 + +/obj/effect/effect/smoke/Crossed(mob/living/M as mob) + if(!istype(M)) + return + smoke_mob(M) + +/obj/effect/effect/smoke/proc/smoke_mob(mob/living/carbon/M as mob) + if(!istype(M)) + return 0 + if(lifetime<1) + return 0 + if(M.internal != null || (M.wear_mask && (M.wear_mask.flags & BLOCK_GAS_SMOKE_EFFECT))) + return 0 + if(M.smoke_delay) + return 0 + M.smoke_delay++ + spawn(10) + if(M) + M.smoke_delay = 0 + return 1 + + + +/datum/effect/effect/system/smoke_spread + var/direction + var/smoke_type = /obj/effect/effect/smoke + +/datum/effect/effect/system/smoke_spread/set_up(n = 5, c = 0, loca, direct) + if(n > 20) + n = 20 number = n cardinals = c if(istype(loca, /turf/)) @@ -46,70 +93,42 @@ if(direct) direction = direct +/datum/effect/effect/system/smoke_spread/start() + for(var/i=0, i 20) - return - spawn(0) - if(holder) - src.location = get_turf(holder) - var/obj/effect/effect/harmless_smoke/smoke = PoolOrNew(/obj/effect/effect/harmless_smoke, location) - src.total_smoke++ - var/direction = src.direction - if(!direction) - if(src.cardinals) - direction = pick(cardinal) - else - direction = pick(alldirs) - for(i=0, i 20) - n = 20 - number = n - cardinals = c - if(istype(loca, /turf/)) - location = loca - else - location = get_turf(loca) - if(direct) - direction = direct - -/datum/effect/effect/system/bad_smoke_spread/start() - var/i = 0 - for(i=0, i 20) - return - spawn(0) - if(holder) - src.location = get_turf(holder) - var/obj/effect/effect/bad_smoke/smoke = PoolOrNew(/obj/effect/effect/bad_smoke, location) - src.total_smoke++ - var/direction = src.direction - if(!direction) - if(src.cardinals) - direction = pick(cardinal) - else - direction = pick(alldirs) - for(i=0, i= 1) - reagents.reaction(A, TOUCH) - reagents.trans_to(A.reagents, 10) - return - - -/obj/effect/effect/chem_smoke/Crossed(mob/living/carbon/M as mob ) - ..() - if(reagents.total_volume >= 1) - reagents.reaction(M, TOUCH) - reagents.trans_to(M.reagents, 10) - -/datum/effect/effect/system/chem_smoke_spread - var/total_smoke = 0 // To stop it being spammed and lagging! - var/direction +/datum/effect/effect/system/smoke_spread/chem var/obj/chemholder + smoke_type = /obj/effect/effect/smoke/chem - -/datum/effect/effect/system/chem_smoke_spread/New() +/datum/effect/effect/system/smoke_spread/chem/New() ..() chemholder = PoolOrNew(/obj) var/datum/reagents/R = new/datum/reagents(500) chemholder.reagents = R R.my_atom = chemholder -/datum/effect/effect/system/chem_smoke_spread/Destroy() +/datum/effect/effect/system/smoke_spread/chem/Destroy() chemholder = null ..() return QDEL_HINT_PUTINPOOL -/datum/effect/effect/system/chem_smoke_spread/set_up(var/datum/reagents/carry = null, n = 5, c = 0, loca, direct, silent = 0) +/datum/effect/effect/system/smoke_spread/chem/set_up(var/datum/reagents/carry = null, n = 5, c = 0, loca, direct, silent = 0) if(n > 20) n = 20 number = n cardinals = c - carry.copy_to(chemholder, carry.total_volume) - - if(istype(loca, /turf/)) location = loca else location = get_turf(loca) - if(direct) direction = direct + carry.copy_to(chemholder, carry.total_volume) if(!silent) var/contained = "" @@ -270,140 +232,66 @@ log_game("A chemical smoke reaction has taken place in ([where])[contained]. No associated key.") -/datum/effect/effect/system/chem_smoke_spread/start() - var/i = 0 +/datum/effect/effect/system/smoke_spread/chem/start() var/color = mix_color_from_reagents(chemholder.reagents.reagent_list) - for(i=0, i 20) - return - spawn(0) - if(holder) - src.location = get_turf(holder) - var/obj/effect/effect/chem_smoke/smoke = PoolOrNew(/obj/effect/effect/chem_smoke, location) - src.total_smoke++ - var/direction = src.direction - if(!direction) - if(src.cardinals) - direction = pick(cardinal) - else - direction = pick(alldirs) - - if(chemholder.reagents.total_volume != 1) // can't split 1 very well - chemholder.reagents.copy_to(smoke, chemholder.reagents.total_volume / number) // copy reagents to each smoke, divide evenly - - if(color) - smoke.color = color // give the smoke color, if it has any to begin with + for(var/i=0, i 1) // can't split 1 very well + chemholder.reagents.copy_to(S, chemholder.reagents.total_volume/number) // copy reagents to each smoke, divide evenly + if(color) + S.color = color // give the smoke color, if it has any to begin with + else + // if no color, just use the old smoke icon + S.icon = 'icons/effects/96x96.dmi' + S.icon_state = "smoke" + + S.process() //calling process right now so the smoke immediately attacks mobs. ///////////////////////////////////////////// // Sleep smoke ///////////////////////////////////////////// -/obj/effect/effect/sleep_smoke - name = "smoke" - icon_state = "smoke" - opacity = 1 - anchored = 0.0 - mouse_opacity = 0 - var/amount = 6.0 - //Remove this bit to use the old smoke - icon = 'icons/effects/96x96.dmi' - pixel_x = -32 - pixel_y = -32 +/obj/effect/effect/smoke/sleeping color = "#9C3636" + lifetime = 10 -/obj/effect/effect/sleep_smoke/New() - ..() - spawn (200+rand(10,30)) - qdel(src) +/obj/effect/effect/smoke/sleeping/process() + for(var/mob/living/carbon/M in range(1,src)) + smoke_mob(M) -/obj/effect/effect/sleep_smoke/Move() - ..() - for(var/mob/living/carbon/M in get_turf(src)) - if (M.internal != null && M.wear_mask && (M.wear_mask.flags & MASKINTERNALS)) -// if (M.wear_suit, /obj/item/clothing/suit/wizrobe && (M.hat, /obj/item/clothing/head/wizard) && (M.shoes, /obj/item/clothing/shoes/sandal)) // I'll work on it later - else - M.drop_item() - M:sleeping += 5 - if (M.coughedtime != 1) - M.coughedtime = 1 - M.emote("cough") - spawn(20) - if(M && M.loc) - M.coughedtime = 0 - return - -/obj/effect/effect/sleep_smoke/Crossed(mob/living/carbon/M as mob ) - ..() - if(istype(M, /mob/living/carbon)) - if (M.internal != null && M.wear_mask && (M.wear_mask.flags & MASKINTERNALS)) -// if (M.wear_suit, /obj/item/clothing/suit/wizrobe && (M.hat, /obj/item/clothing/head/wizard) && (M.shoes, /obj/item/clothing/shoes/sandal)) // Work on it later +/obj/effect/effect/smoke/sleeping/smoke_mob(mob/living/carbon/M as mob) + if(..()) + if(M.internal != null || (M.wear_mask && (M.wear_mask.flags & BLOCK_GAS_SMOKE_EFFECT))) return else M.drop_item() - M:sleeping += 5 - if (M.coughedtime != 1) - M.coughedtime = 1 - M.emote("cough") - spawn(20) - if(M && M.loc) - M.coughedtime = 0 - return - -/datum/effect/effect/system/sleep_smoke_spread - var/total_smoke = 0 // To stop it being spammed and lagging! - var/direction - -/datum/effect/effect/system/sleep_smoke_spread/set_up(n = 5, c = 0, loca, direct) - if(n > 20) - n = 20 - number = n - cardinals = c - if(istype(loca, /turf/)) - location = loca - else - location = get_turf(loca) - if(direct) - direction = direct + M.sleeping = max(M.sleeping,10) + M.emote("cough") -/datum/effect/effect/system/sleep_smoke_spread/start() - var/i = 0 - for(i=0, i 20) - return - spawn(0) - if(holder) - src.location = get_turf(holder) - var/obj/effect/effect/sleep_smoke/smoke = PoolOrNew(/obj/effect/effect/sleep_smoke, location) - src.total_smoke++ - var/direction = src.direction - if(!direction) - if(src.cardinals) - direction = pick(cardinal) - else - direction = pick(alldirs) - for(i=0, iYou struggle against the tight bonds... (This will take about [breakout_time] minutes.)" visible_message("You see something struggling and writhing in \the [src]!") - if(do_after(user,(breakout_time*60*10))) + if(do_after(user,(breakout_time*60*10), target = src)) if(!user || user.stat != CONSCIOUS || user.loc != src) return qdel(src) diff --git a/code/game/objects/effects/step_triggers.dm b/code/game/objects/effects/step_triggers.dm index 69085aca0cc..8eb07b6a4d4 100644 --- a/code/game/objects/effects/step_triggers.dm +++ b/code/game/objects/effects/step_triggers.dm @@ -144,20 +144,20 @@ M.Move(dest) if(entersparks) - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + var/datum/effect/effect/system/spark_spread/s = new s.set_up(4, 1, src) s.start() if(exitsparks) - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + var/datum/effect/effect/system/spark_spread/s = new s.set_up(4, 1, dest) s.start() if(entersmoke) - var/datum/effect/effect/system/harmless_smoke_spread/s = new /datum/effect/effect/system/harmless_smoke_spread + var/datum/effect/effect/system/smoke_spread/s = new s.set_up(4, 1, src, 0) s.start() if(exitsmoke) - var/datum/effect/effect/system/harmless_smoke_spread/s = new /datum/effect/effect/system/harmless_smoke_spread + var/datum/effect/effect/system/smoke_spread/s = new s.set_up(4, 1, dest, 0) s.start() diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 0468739411b..9c166718063 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -1,3 +1,5 @@ +var/global/image/fire_overlay = image("icon" = 'icons/effects/fire.dmi', "icon_state" = "fire") + /obj/item name = "item" icon = 'icons/obj/items.dmi' @@ -77,6 +79,9 @@ /obj/machinery/r_n_d/experimentor, /obj/machinery/autolathe ) + + var/flags_cover = 0 //for flags such as GLASSESCOVERSEYES + /obj/item/proc/check_allowed_items(atom/target, not_inside) if((src in target) || ((!istype(target.loc, /turf)) && (!istype(target, /turf)) && (not_inside)) || is_type_in_list(target, can_be_placed_into)) return 0 @@ -155,6 +160,23 @@ /obj/item/attack_hand(mob/user as mob) if (!user) return + + if(burn_state == 1) + var/mob/living/carbon/human/H = user + if(istype(H)) + if(H.gloves && (H.gloves.max_heat_protection_temperature > 360)) + extinguish() + user << "You put out the fire on [src]." + else + user << "You burn your hand on [src]!" + var/obj/item/organ/limb/affecting = H.get_organ("[user.hand ? "l" : "r" ]_arm") + if(affecting.take_damage( 0, 5 )) // 5 burn damage + H.update_damage_overlays(0) + H.updatehealth() + return + else + extinguish() + if (istype(src.loc, /obj/item/weapon/storage)) //If the item is in a storage item, take it out var/obj/item/weapon/storage/S = src.loc @@ -328,16 +350,16 @@ if(ishuman(M)) is_human_victim = 1 var/mob/living/carbon/human/H = M - if((H.head && H.head.flags & HEADCOVERSEYES) || \ - (H.wear_mask && H.wear_mask.flags & MASKCOVERSEYES) || \ - (H.glasses && H.glasses.flags & GLASSESCOVERSEYES)) + if((H.head && H.head.flags_cover & HEADCOVERSEYES) || \ + (H.wear_mask && H.wear_mask.flags_cover & MASKCOVERSEYES) || \ + (H.glasses && H.glasses.flags_cover & GLASSESCOVERSEYES)) // you can't stab someone in the eyes wearing a mask! user << "You're going to need to remove that mask/helmet/glasses first!" return if(ismonkey(M)) var/mob/living/carbon/monkey/Mo = M - if(Mo.wear_mask && Mo.wear_mask.flags & MASKCOVERSEYES) + if(Mo.wear_mask && Mo.wear_mask.flags_cover & MASKCOVERSEYES) // you can't stab someone in the eyes wearing a mask! user << "You're going to need to remove that mask/helmet/glasses first!" return @@ -412,27 +434,34 @@ throw_at(S,14,3) else ..() -/obj/item/acid_act(var/acidpwr, var/toxpwr, var/acid_volume) +/obj/item/acid_act(var/acidpwr, var/acid_volume) . = 1 if(unacidable) return + var/meltingpwr = acid_volume*acidpwr + var/melting_threshold = 100 + if(meltingpwr <= melting_threshold) // so a single unit can't melt items. You need 5.1+ unit for fluoro and 10.1+ for sulphuric + return + for(var/V in armor) if(armor[V] > 0) .-- //it survives the acid... break - if(.) + if(. && prob(min(meltingpwr/10,90))) //chance to melt depends on acid power and volume. var/turf/T = get_turf(src) if(T) - T.visible_message("[src] melts away!") var/obj/effect/decal/cleanable/molten_item/I = new (T) I.pixel_x = rand(-16,16) I.pixel_y = rand(-16,16) I.desc = "Looks like this was \an [src] some time ago." + if(istype(src,/obj/item/weapon/storage)) + var/obj/item/weapon/storage/S = src + S.do_quick_empty() //melted storage item drops its content. qdel(src) else for(var/armour_value in armor) //but is weakened - armor[armour_value] = max(armor[armour_value]-acidpwr,0) + armor[armour_value] = max(armor[armour_value]-min(acidpwr,meltingpwr/10),0) if(!findtext(desc, "it looks slightly melted...")) //it looks slightly melted... it looks slightly melted... it looks slightly melted... etc. desc += " it looks slightly melted..." //needs a space at the start, formatting diff --git a/code/game/objects/items/candle.dm b/code/game/objects/items/candle.dm index 5d63211a30d..276d614a9ad 100644 --- a/code/game/objects/items/candle.dm +++ b/code/game/objects/items/candle.dm @@ -6,7 +6,6 @@ icon_state = "candle1" item_state = "candle1" w_class = 1 - var/wax = 200 var/lit = 0 proc @@ -46,6 +45,10 @@ if(M.lit) light() +/obj/item/candle/fire_act() + if(!src.lit) + light() //honk + return /obj/item/candle/light(var/flavor_text = "[usr] lights the [name].") if(!src.lit) diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm index a512741096f..9a67b00d5f0 100644 --- a/code/game/objects/items/crayons.dm +++ b/code/game/objects/items/crayons.dm @@ -83,6 +83,45 @@ else ..() +/* + * Crayon Box + */ +/obj/item/weapon/storage/crayons + name = "box of crayons" + desc = "A box of crayons for all your rune drawing needs." + icon = 'icons/obj/crayons.dmi' + icon_state = "crayonbox" + w_class = 2.0 + storage_slots = 6 + can_hold = list( + /obj/item/toy/crayon + ) + +/obj/item/weapon/storage/crayons/New() + ..() + new /obj/item/toy/crayon/red(src) + new /obj/item/toy/crayon/orange(src) + new /obj/item/toy/crayon/yellow(src) + new /obj/item/toy/crayon/green(src) + new /obj/item/toy/crayon/blue(src) + new /obj/item/toy/crayon/purple(src) + update_icon() + +/obj/item/weapon/storage/crayons/update_icon() + overlays.Cut() + for(var/obj/item/toy/crayon/crayon in contents) + overlays += image('icons/obj/crayons.dmi',crayon.colourName) + +/obj/item/weapon/storage/crayons/attackby(obj/item/W as obj, mob/user as mob, params) + if(istype(W,/obj/item/toy/crayon)) + switch(W:colourName) + if("mime") + usr << "This crayon is too sad to be contained in this box." + return + if("rainbow") + usr << "This crayon is too powerful to be contained in this box." + return + ..() //Spraycan stuff @@ -125,6 +164,7 @@ if(!proximity) return if(capped) + user << "Take the cap off first!" return else if(iscarbon(target)) diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm index 5e8555d13ad..3d6f1a022b0 100644 --- a/code/game/objects/items/devices/flashlight.dm +++ b/code/game/objects/items/devices/flashlight.dm @@ -57,8 +57,8 @@ return var/mob/living/carbon/human/H = M //mob has protective eyewear - if(istype(M, /mob/living/carbon/human) && ((H.head && H.head.flags & HEADCOVERSEYES) || (H.wear_mask && H.wear_mask.flags & MASKCOVERSEYES) || (H.glasses && H.glasses.flags & GLASSESCOVERSEYES))) - user << "You're going to need to remove that [(H.head && H.head.flags & HEADCOVERSEYES) ? "helmet" : (H.wear_mask && H.wear_mask.flags & MASKCOVERSEYES) ? "mask": "glasses"] first." + if(istype(M, /mob/living/carbon/human) && ((H.head && H.head.flags_cover & HEADCOVERSEYES) || (H.wear_mask && H.wear_mask.flags_cover & MASKCOVERSEYES) || (H.glasses && H.glasses.flags_cover & GLASSESCOVERSEYES))) + user << "You're going to need to remove that [(H.head && H.head.flags_cover & HEADCOVERSEYES) ? "helmet" : (H.wear_mask && H.wear_mask.flags_cover & MASKCOVERSEYES) ? "mask": "glasses"] first." return if(M == user) //they're using it on themselves diff --git a/code/game/objects/items/devices/instruments.dm b/code/game/objects/items/devices/instruments.dm index 6ecc1a86125..dcfaceeffc3 100644 --- a/code/game/objects/items/devices/instruments.dm +++ b/code/game/objects/items/devices/instruments.dm @@ -1,6 +1,8 @@ //copy pasta of the space piano, don't hurt me -Pete /obj/item/device/instrument name = "generic instrument" + burn_state = 0 //Burnable + burntime = 20 var/datum/song/handheld/song var/instrumentId = "generic" var/instrumentExt = "ogg" diff --git a/code/game/objects/items/devices/pizza_bomb.dm b/code/game/objects/items/devices/pizza_bomb.dm index 86a0c2bc9c5..a77f96f1e9b 100644 --- a/code/game/objects/items/devices/pizza_bomb.dm +++ b/code/game/objects/items/devices/pizza_bomb.dm @@ -3,6 +3,7 @@ desc = "A box suited for pizzas." icon = 'icons/obj/food/containers.dmi' icon_state = "pizzabox1" + burn_state = 0 //Burnable var/timer = 10 //Adjustable timer var/timer_set = 0 var/primed = 0 @@ -54,6 +55,10 @@ sleep(timer) return go_boom() +/obj/item/device/pizza_bomb/burn() //Instead of burning to ashes, it will just explode + go_boom() + return + /obj/item/device/pizza_bomb/proc/go_boom() if(disarmed) visible_message("\icon[src] Sparks briefly jump out of the [correct_wire] wire on \the [src], but it's disarmed!") @@ -90,7 +95,7 @@ user << "You can't see the box well enough to cut the wires out!" return user.visible_message("[user] starts removing the payload and wires from \the [src].", "You start removing the payload and wires from \the [src]...") - if(do_after(user, 40)) + if(do_after(user, 40, target = src)) playsound(src, 'sound/items/Wirecutter.ogg', 50, 1, 1) user.unEquip(src) user.visible_message("[user] removes the insides of \the [src]!", "You remove the insides of \the [src].") diff --git a/code/game/objects/items/devices/radio/electropack.dm b/code/game/objects/items/devices/radio/electropack.dm index 3af3ab07841..c819598daf2 100644 --- a/code/game/objects/items/devices/radio/electropack.dm +++ b/code/game/objects/items/devices/radio/electropack.dm @@ -56,7 +56,8 @@ /obj/item/device/electropack/Topic(href, href_list) //..() - if(usr.stat || usr.restrained()) + var/mob/living/carbon/C = usr + if(usr.stat || usr.restrained() || C.back == src) return if(((istype(usr, /mob/living/carbon/human) && ((!( ticker ) || (ticker && ticker.mode != "monkey")) && usr.contents.Find(src))) || (usr.contents.Find(master) || (in_range(src, usr) && istype(loc, /turf))))) usr.set_machine(src) diff --git a/code/game/objects/items/devices/sensor_device.dm b/code/game/objects/items/devices/sensor_device.dm index 2bcddf5de79..9d4bbc60b43 100644 --- a/code/game/objects/items/devices/sensor_device.dm +++ b/code/game/objects/items/devices/sensor_device.dm @@ -8,4 +8,4 @@ origin_tech = "programming=3;materials=3;magnets=3" /obj/item/device/sensor_device/attack_self(mob/user as mob) - crewmonitor(user,src) //Proc already exists, just had to call it + crewmonitor.show(user) //Proc already exists, just had to call it diff --git a/code/game/objects/items/devices/taperecorder.dm b/code/game/objects/items/devices/taperecorder.dm index 826853d049e..60e0ba98c3a 100644 --- a/code/game/objects/items/devices/taperecorder.dm +++ b/code/game/objects/items/devices/taperecorder.dm @@ -56,6 +56,9 @@ mytape = null update_icon() +/obj/item/device/taperecorder/fire_act() + mytape.ruin() //Fires destroy the tape + return() /obj/item/device/taperecorder/attack_hand(mob/user) if(loc == user) @@ -264,6 +267,8 @@ var/list/timestamp = list() var/ruined = 0 +/obj/item/device/tape/fire_act() + ruin() /obj/item/device/tape/attack_self(mob/user) if(!ruined) @@ -284,7 +289,7 @@ /obj/item/device/tape/attackby(obj/item/I, mob/user, params) if(ruined && istype(I, /obj/item/weapon/screwdriver)) user << "You start winding the tape back in..." - if(do_after(user, 120)) + if(do_after(user, 120, target = src)) user << "You wound the tape back in." fix() diff --git a/code/game/objects/items/nuke_tools.dm b/code/game/objects/items/nuke_tools.dm new file mode 100644 index 00000000000..109985e306a --- /dev/null +++ b/code/game/objects/items/nuke_tools.dm @@ -0,0 +1,54 @@ +//Items for nuke theft traitor objective + +//the nuke core - objective item +/obj/item/nuke_core + name = "plutonium core" + desc = "Extremely radioactive. Wear goggles." + icon = 'icons/obj/nuke_tools.dmi' + icon_state = "plutonium_core" + var/pulse = 0 + var/cooldown = 0 + +/obj/item/nuke_core/process() + if(cooldown < world.time - 40) + cooldown = world.time + for(var/mob/living/L in range(8,get_turf(src))) + var/rads = 100 - get_dist(L,src)*7 + L.irradiate(rads) + +//nuke core box, for carrying the core +/obj/item/nuke_core_container + name = "nuke core container" + desc = "Solid container for radioactive objects." + icon = 'icons/obj/nuke_tools.dmi' + icon_state = "core_container_empty" + var/obj/item/nuke_core/core = null + +/obj/item/nuke_core_container/proc/load(obj/item/nuke_core/ncore, obj/machinery/nuclearbomb/nuke) + if(core) + return 0 + SSobj.processing -= ncore + ncore.loc = src + core = ncore + nuke.core = null + icon_state = "core_container_loaded" + return 1 + +//snowflake screwdriver, works as a key to start nuke theft, traitor only +/obj/item/weapon/screwdriver/nuke + name = "screwdriver" + desc = "A screwdriver with an ultra thin tip." + +/obj/item/weapon/paper/nuke_instructions + info = "How to break into a Nanotrasen self-destruct terminal and remove it's plutonium core:
\ +
    \ +
  • Use a screwdriver with a very thin tip (provided) to unscrew the terminal's front panel;
  • \ +
  • The insides of the terminal should be mostly hollow and you should have a clear way to the warhead's weak spot;
  • \ +
  • Use something to draw cut lines on the warhead, according to the provided plans;
  • \ +
  • With a welding tool, cut a hole in the warhead, following the previously drawn cut lines;
  • \ +
  • After you breach the warhead, you may notice the very subtle glow of the plutonium core;
  • \ +
  • Place the provided core container in the hole and poke the core until it falls into the container;
  • \ +
  • Once the core is inside the container, the container will lock shut. Deliver the container to your commander.
  • " + +/obj/item/weapon/paper/nuke_plans + info = "Nuclear warhead breaching plans:" \ No newline at end of file diff --git a/code/game/objects/items/robot/robot_parts.dm b/code/game/objects/items/robot/robot_parts.dm index ed337577622..e0629ec2f27 100644 --- a/code/game/objects/items/robot/robot_parts.dm +++ b/code/game/objects/items/robot/robot_parts.dm @@ -199,6 +199,11 @@ if(!user.unEquip(W)) return + if(M.syndiemmi) + aisync = 0 + lawsync = 0 + O.laws = new /datum/ai_laws/syndicate_override + O.invisibility = 0 //Transfer debug settings to new mob O.custom_name = created_name @@ -211,7 +216,7 @@ O.notify_ai(1) if(forced_ai) O.connected_ai = forced_ai - if(!lawsync) + if(!lawsync && !M.syndiemmi) O.lawupdate = 0 O.make_laws() if(ticker.mode.config_tag == "malfunction") //Don't let humans get a cyborg on their side during malf, for balance reasons. diff --git a/code/game/objects/items/stacks/cash.dm b/code/game/objects/items/stacks/cash.dm index 6c391dcc3e6..eff17423b61 100644 --- a/code/game/objects/items/stacks/cash.dm +++ b/code/game/objects/items/stacks/cash.dm @@ -10,6 +10,7 @@ throw_speed = 2 throw_range = 2 w_class = 1.0 + burn_state = 0 //Burnable /obj/item/stack/spacecash/c10 icon_state = "spacecash10" diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index 55493399fad..33c7ad85fed 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -7,6 +7,8 @@ w_class = 1 throw_speed = 3 throw_range = 7 + burn_state = 0 //Burnable + burntime = 5 var/heal_brute = 0 var/heal_burn = 0 var/stop_bleeding = 0 diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 34c8445a8d5..28794e5bd7a 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -108,6 +108,7 @@ var/global/list/datum/stack_recipe/wood_recipes = list ( \ icon = 'icons/obj/items.dmi' origin_tech = "materials=1;biotech=1" sheettype = "wood" + burn_state = 0 //Burnable /obj/item/stack/sheet/mineral/wood/New(var/loc, var/amount=null) recipes = wood_recipes @@ -122,6 +123,7 @@ var/global/list/datum/stack_recipe/wood_recipes = list ( \ singular_name = "cloth roll" icon_state = "sheet-cloth" origin_tech = "materials=2" + burn_state = 0 //Burnable /* * Cardboard @@ -143,6 +145,7 @@ var/global/list/datum/stack_recipe/cardboard_recipes = list ( \ singular_name = "cardboard sheet" icon_state = "sheet-card" origin_tech = "materials=1" + burn_state = 0 //Burnable /obj/item/stack/sheet/cardboard/New(var/loc, var/amount=null) recipes = cardboard_recipes diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index f64f19ef4cf..3ca1e47b662 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -121,7 +121,7 @@ return if (R.time) usr.visible_message("[usr] starts building [R.title].", "You start building [R.title]...") - if (!do_after(usr, R.time)) + if (!do_after(usr, R.time, target = usr)) return if(!building_checks(R, multiplier)) return diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm index 6d81c36bb2c..e498bc3ebce 100644 --- a/code/game/objects/items/stacks/tiles/tile_types.dm +++ b/code/game/objects/items/stacks/tiles/tile_types.dm @@ -84,6 +84,7 @@ max_amount = 60 origin_tech = "biotech=1" turf_type = /turf/simulated/floor/fancy/grass + burn_state = 0 //Burnable /* * Wood @@ -101,6 +102,7 @@ max_amount = 60 origin_tech = "biotech=1" turf_type = /turf/simulated/floor/wood + burn_state = 0 //Burnable /* * Carpets @@ -117,6 +119,7 @@ throw_range = 7 max_amount = 60 turf_type = /turf/simulated/floor/fancy/carpet + burn_state = 0 //Burnable /* * High-traction diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index 26f511b0953..5bc5733aa4b 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -271,6 +271,7 @@ item_state = "arm_blade" attack_verb = list("pricked", "absorbed", "gored") w_class = 2 + burn_state = 0 //Burnable /* @@ -464,7 +465,7 @@ user << "You start [instant ? "spraying" : "drawing"] a [temp] on the [target.name]..." if(instant) playsound(user.loc, 'sound/effects/spray.ogg', 5, 1, 5) - if((instant>0) || do_after(user, 50)) + if((instant>0) || do_after(user, 50, target = target)) //Gang functions if(gangID) @@ -527,6 +528,10 @@ icon_state = "snappop" w_class = 1 +/obj/item/toy/snappop/fire_act() + throw_impact() + return + /obj/item/toy/snappop/throw_impact(atom/hit_atom) ..() var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread @@ -710,6 +715,8 @@ /obj/item/toy/cards + burn_state = 0 //Burnable + burntime = 5 var/parentdeck = null var/deckstyle = "nanotrasen" var/card_hitsound = null @@ -949,7 +956,8 @@ newobj.card_throw_speed = sourceobj.card_throw_speed newobj.card_throw_range = sourceobj.card_throw_range newobj.card_attack_verb = sourceobj.card_attack_verb - + if(sourceobj.burn_state == -1) + newobj.burn_state = -1 /obj/item/toy/cards/singlecard name = "card" @@ -1065,6 +1073,7 @@ card_throw_speed = 3 card_throw_range = 7 card_attack_verb = list("attacked", "sliced", "diced", "slashed", "cut") + burn_state = -1 //Not Burnable /* * Fake nuke @@ -1123,6 +1132,7 @@ icon_state = "carpplushie" w_class = 2.0 attack_verb = list("bitten", "eaten", "fin slapped") + burn_state = 0 //Burnable var/bitesound = 'sound/weapons/bite.ogg' // Attack mob diff --git a/code/game/objects/items/trash.dm b/code/game/objects/items/trash.dm index 2e22500c790..12e705d193b 100644 --- a/code/game/objects/items/trash.dm +++ b/code/game/objects/items/trash.dm @@ -3,6 +3,7 @@ icon = 'icons/obj/janitor.dmi' desc = "This is rubbish." w_class = 1.0 + burn_state = 0 //Burnable /obj/item/trash/raisins name = "\improper 4no raisins" @@ -51,6 +52,7 @@ /obj/item/trash/tray name = "tray" icon_state = "tray" + burn_state = -1 //Not Burnable /obj/item/trash/candle name = "candle" @@ -60,6 +62,7 @@ /obj/item/trash/can name = "crushed can" icon_state = "cola" + burn_state = -1 //Not Burnable /obj/item/trash/attack(mob/M, mob/living/user) return \ No newline at end of file diff --git a/code/game/objects/items/weapons/RCD.dm b/code/game/objects/items/weapons/RCD.dm index 5e2e050242a..ec054820181 100644 --- a/code/game/objects/items/weapons/RCD.dm +++ b/code/game/objects/items/weapons/RCD.dm @@ -174,7 +174,7 @@ RCD if(checkResource(3, user)) user << "You start building wall..." playsound(src.loc, 'sound/machines/click.ogg', 50, 1) - if(do_after(user, 20)) + if(do_after(user, 20, target = A)) if(!useResource(3, user)) return 0 activate() F.ChangeTurf(/turf/simulated/wall) @@ -193,7 +193,7 @@ RCD if(door_check) user << "You start building airlock..." playsound(src.loc, 'sound/machines/click.ogg', 50, 1) - if(do_after(user, 50)) + if(do_after(user, 50, target = A)) if(!useResource(10, user)) return 0 activate() var/obj/machinery/door/airlock/T = new airlock_type( A ) @@ -217,7 +217,7 @@ RCD if(checkResource(5, user)) user << "You start deconstructing wall..." playsound(src.loc, 'sound/machines/click.ogg', 50, 1) - if(do_after(user, 40)) + if(do_after(user, 40, target = A)) if(!useResource(5, user)) return 0 activate() W.ChangeTurf(/turf/simulated/floor/plating) @@ -232,7 +232,7 @@ RCD else if(checkResource(5, user)) user << "You start deconstructing floor..." playsound(src.loc, 'sound/machines/click.ogg', 50, 1) - if(do_after(user, 50)) + if(do_after(user, 50, target = A)) if(!useResource(5, user)) return 0 activate() F.ChangeTurf(F.baseturf) @@ -243,7 +243,7 @@ RCD if(checkResource(20, user)) user << "You start deconstructing airlock..." playsound(src.loc, 'sound/machines/click.ogg', 50, 1) - if(do_after(user, 50)) + if(do_after(user, 50, target = A)) if(!useResource(20, user)) return 0 activate() qdel(A) diff --git a/code/game/objects/items/weapons/RPD.dm b/code/game/objects/items/weapons/RPD.dm index b6735aa37c2..f25f7960010 100644 --- a/code/game/objects/items/weapons/RPD.dm +++ b/code/game/objects/items/weapons/RPD.dm @@ -534,7 +534,7 @@ var/global/list/RPD_recipes=list( if(istype(A,/obj/item/pipe) || istype(A,/obj/item/pipe_meter) || istype(A,/obj/structure/disposalconstruct)) user << "You start destroying pipe..." playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1) - if(do_after(user, 5)) + if(do_after(user, 5, target = A)) activate() qdel(A) return 1 @@ -549,7 +549,7 @@ var/global/list/RPD_recipes=list( return 0 user << "You start building pipes..." playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1) - if(do_after(user, 20)) + if(do_after(user, 20, target = A)) activate() var/obj/item/pipe/P = new (A, pipe_type=queued_p_type, dir=queued_p_dir) P.flipped = queued_p_flipped @@ -564,7 +564,7 @@ var/global/list/RPD_recipes=list( return 0 user << "You start building meter..." playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1) - if(do_after(user, 20)) + if(do_after(user, 20, target = A)) activate() new /obj/item/pipe_meter(A) return 1 @@ -576,7 +576,7 @@ var/global/list/RPD_recipes=list( return 0 user << "You start building pipes..." playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1) - if(do_after(user, 20)) + if(do_after(user, 20, target = A)) var/obj/structure/disposalconstruct/C = new (A, queued_p_type ,queued_p_dir) if(!C.can_place()) diff --git a/code/game/objects/items/weapons/cards_ids.dm b/code/game/objects/items/weapons/cards_ids.dm index dcc041016ee..1c7fcb368d1 100644 --- a/code/game/objects/items/weapons/cards_ids.dm +++ b/code/game/objects/items/weapons/cards_ids.dm @@ -145,15 +145,15 @@ update_label("John Doe", "Clowny") /obj/item/weapon/card/id/syndicate/attack_self(mob/user as mob) if(!src.registered_name) //Stop giving the players unsanitized unputs! You are giving ways for players to intentionally crash clients! -Nodrak - var t = copytext(sanitize(input(user, "What name would you like to put on this card?", "Agent card name", ishuman(user) ? user.real_name : user.name)),1,26) + var t = copytext(sanitize(input(user, "What name would you like to put on this card?", "Agent card name", ishuman(user) ? user.real_name : user.name)as text | null),1,26) if(!t || t == "Unknown" || t == "floor" || t == "wall" || t == "r-wall") //Same as mob/new_player/prefrences.dm - alert("Invalid name.") + if (t) + alert("Invalid name.") return src.registered_name = t - var u = copytext(sanitize(input(user, "What occupation would you like to put on this card?\nNote: This will not grant any access levels other than Maintenance.", "Agent card job assignment", "Assistant")),1,MAX_MESSAGE_LEN) + var u = copytext(sanitize(input(user, "What occupation would you like to put on this card?\nNote: This will not grant any access levels other than Maintenance.", "Agent card job assignment", "Assistant")as text | null),1,MAX_MESSAGE_LEN) if(!u) - alert("Invalid assignment.") src.registered_name = "" return src.assignment = u diff --git a/code/game/objects/items/weapons/cigs_lighters.dm b/code/game/objects/items/weapons/cigs_lighters.dm index 99bde856d35..b8f023d7047 100644 --- a/code/game/objects/items/weapons/cigs_lighters.dm +++ b/code/game/objects/items/weapons/cigs_lighters.dm @@ -24,7 +24,6 @@ CIGARETTE PACKETS ARE IN FANCY.DM var/smoketime = 5 w_class = 1.0 origin_tech = "materials=1" - attack_verb = null /obj/item/weapon/match/process() var/turf/location = get_turf(src) @@ -101,7 +100,6 @@ CIGARETTE PACKETS ARE IN FANCY.DM item_state = "cigoff" w_class = 1 body_parts_covered = null - attack_verb = null var/lit = 0 var/icon_on = "cigon" //Note - these are in masks.dmi not in cigarette.dmi var/icon_off = "cigoff" @@ -145,9 +143,9 @@ CIGARETTE PACKETS ARE IN FANCY.DM var/lighting_text = null if(istype(O, /obj/item/weapon/weldingtool)) lighting_text = "[user] casually lights the [name] with [O], what a badass." - else if(istype(O, /obj/item/weapon/lighter/zippo)) - lighting_text = "With a single flick of their wrist, [user] smoothly lights their [name] with [O]. Damn they're cool." else if(istype(O, /obj/item/weapon/lighter)) + lighting_text = "With a single flick of their wrist, [user] smoothly lights their [name] with [O]. Damn they're cool." + else if(istype(O, /obj/item/weapon/lighter/greyscale)) lighting_text = "After some fiddling, [user] manages to light their [name] with [O]." else if(istype(O, /obj/item/weapon/melee/energy)) lighting_text = "[user] swings their [O], barely missing their nose. They light their [name] in the process." @@ -203,14 +201,16 @@ CIGARETTE PACKETS ARE IN FANCY.DM /obj/item/clothing/mask/cigarette/proc/handle_reagents() - if(iscarbon(loc)) - var/mob/living/carbon/C = loc - if (src == C.wear_mask) // if it's in the human/monkey mouth, transfer reagents to the mob - if(prob(15)) // so it's not an instarape in case of acid - reagents.reaction(C, INGEST) - reagents.trans_to(C, REAGENTS_METABOLISM) - return - reagents.remove_any(REAGENTS_METABOLISM) + if(reagents.total_volume) + if(iscarbon(loc)) + var/mob/living/carbon/C = loc + if (src == C.wear_mask) // if it's in the human/monkey mouth, transfer reagents to the mob + if(prob(15)) // so it's not an instarape in case of acid + var/fraction = min(REAGENTS_METABOLISM/reagents.total_volume, 1) + reagents.reaction(C, INGEST, fraction) + reagents.trans_to(C, REAGENTS_METABOLISM) + return + reagents.remove_any(REAGENTS_METABOLISM) /obj/item/clothing/mask/cigarette/process() @@ -284,7 +284,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM /obj/item/weapon/cigbutt/roach name = "roach" - desc = "A manky old roach." + desc = "A manky old roach, or for non-stoners, a used rollup." icon_state = "roach" /obj/item/weapon/cigbutt/roach/New() @@ -306,7 +306,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM throw_speed = 0.5 item_state = "cigaroff" smoketime = 1500 - chem_volume = 20 + chem_volume = 40 /obj/item/clothing/mask/cigarette/cigar/cohiba name = "\improper Cohiba Robusto cigar" @@ -314,15 +314,18 @@ CIGARETTE PACKETS ARE IN FANCY.DM icon_state = "cigar2off" icon_on = "cigar2on" icon_off = "cigar2off" + smoketime = 2000 + chem_volume = 80 + /obj/item/clothing/mask/cigarette/cigar/havana name = "premium Havanian cigar" - desc = "A cigar fit for only the best for the best." + desc = "A cigar fit for only the best of the best." icon_state = "cigar2off" icon_on = "cigar2on" icon_off = "cigar2off" smoketime = 7200 - chem_volume = 30 + chem_volume = 50 /obj/item/weapon/cigbutt name = "cigarette butt" @@ -438,51 +441,28 @@ CIGARETTE PACKETS ARE IN FANCY.DM //ZIPPO// ///////// /obj/item/weapon/lighter - name = "cheap lighter" - desc = "A cheap-as-free lighter." - icon = 'icons/obj/items.dmi' - icon_state = "lighter-g" - item_state = "lighter-g" - var/icon_on = "lighter-g-on" - var/icon_off = "lighter-g" - w_class = 1 - throwforce = 0 - flags = CONDUCT - slot_flags = SLOT_BELT - attack_verb = null - var/lit = 0 - -/obj/item/weapon/lighter/grayscale - name = "cheap lighter" - desc ="A cheap-as-free lighter." - icon = 'icons/obj/cigarettes.dmi' - icon_state = "lighter-off" - item_state = "lighter-off" - icon_on = "lighter-on" - icon_off = "lighter-off" - -/obj/item/weapon/lighter/grayscale/New() - var/icon/overlay = new /icon('icons/obj/cigarettes.dmi',"lighter-overlay") - overlay.ColorTone(color2hex(randomColor(1))) - overlays += overlay - -/obj/item/weapon/lighter/zippo name = "\improper Zippo lighter" desc = "The zippo." + icon = 'icons/obj/cigarettes.dmi' icon_state = "zippo" item_state = "zippo" - icon_on = "zippoon" - icon_off = "zippo" + w_class = 1 + flags = CONDUCT + slot_flags = SLOT_BELT + var/lit = 0 + +/obj/item/weapon/lighter/greyscale + name = "cheap lighter" + desc = "A cheap-as-free lighter." + icon_state = "lighter" + +/obj/item/weapon/lighter/greyscale/New() + var/image/I = image(icon,"lighter-overlay") + I.color = color2hex(randomColor(1)) + overlays += I /obj/item/weapon/lighter/update_icon() - icon_state = lit ? icon_on : icon_off - -/obj/item/weapon/lighter/random - New() - var/color = pick("r","c","y","g") - icon_on = "lighter-[color]-on" - icon_off = "lighter-[color]" - icon_state = icon_off + icon_state = lit ? "[icon_state]_on" : "[initial(icon_state)]" /obj/item/weapon/lighter/attack_self(mob/living/user) if(user.r_hand == src || user.l_hand == src) @@ -493,7 +473,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM damtype = "fire" hitsound = 'sound/items/welder.ogg' attack_verb = list("burnt", "singed") - if(istype(src, /obj/item/weapon/lighter/zippo) ) + if(!istype(src, /obj/item/weapon/lighter/greyscale)) user.visible_message("Without even breaking stride, [user] flips open and lights [src] in one smooth movement.", "Without even breaking stride, you flip open and lights [src] in one smooth movement.") else if(prob(75)) @@ -510,11 +490,10 @@ CIGARETTE PACKETS ARE IN FANCY.DM hitsound = "swing_hit" force = 0 attack_verb = null //human_defense.dm takes care of it - if(istype(src, /obj/item/weapon/lighter/zippo) ) + if(!istype(src, /obj/item/weapon/lighter/greyscale)) user.visible_message("You hear a quiet click, as [user] shuts off [src] without even looking at what they're doing. Wow.", "You quietly shut off [src] without even looking at what you're doing. Wow.") else user.visible_message("[user] quietly shuts off [src].", "You quietly shut off [src].") - user.AddLuminosity(-1) SSobj.processing.Remove(src) else @@ -530,7 +509,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM if(M == user) cig.attackby(src, user) else - if(istype(src, /obj/item/weapon/lighter/zippo)) + if(!istype(src, /obj/item/weapon/lighter/greyscale)) cig.light("[user] whips the [name] out and holds it for [M]. Their arm is as steady as the unflickering flame they light \the [cig] with.") else cig.light("[user] holds the [name] out for [M], and lights the [cig.name].") diff --git a/code/game/objects/items/weapons/clown_items.dm b/code/game/objects/items/weapons/clown_items.dm index f2681b01489..b25118371cf 100644 --- a/code/game/objects/items/weapons/clown_items.dm +++ b/code/game/objects/items/weapons/clown_items.dm @@ -49,7 +49,7 @@ user << "You need to take that [target.name] off before cleaning it!" else if(istype(target,/obj/effect/decal/cleanable)) user.visible_message("[user] begins to scrub \the [target.name] out with [src].", "You begin to scrub \the [target.name] out with [src]...") - if(do_after(user, src.cleanspeed)) + if(do_after(user, src.cleanspeed, target = target)) user << "You scrub \the [target.name] out." qdel(target) else if(ishuman(target) && user.zone_sel && user.zone_sel.selecting == "mouth") @@ -57,7 +57,7 @@ return else user.visible_message("[user] begins to clean \the [target.name] with [src]...", "You begin to clean \the [target.name] with [src]...") - if(do_after(user, src.cleanspeed)) + if(do_after(user, src.cleanspeed, target = target)) user << "You clean \the [target.name]." var/obj/effect/decal/cleanable/C = locate() in target qdel(C) diff --git a/code/game/objects/items/weapons/cosmetics.dm b/code/game/objects/items/weapons/cosmetics.dm index bd7c7c6f8bc..116b60905f8 100644 --- a/code/game/objects/items/weapons/cosmetics.dm +++ b/code/game/objects/items/weapons/cosmetics.dm @@ -65,7 +65,7 @@ else user.visible_message("[user] begins to do [H]'s lips with \the [src].", \ "You begin to apply \the [src] on [H]'s lips...") - if(do_after(user, 20) && do_after(H, 20, 5, 0)) //user needs to keep their active hand, H does not. + if(do_after(user, 20, target = H)) user.visible_message("[user] does [H]'s lips with \the [src].", \ "You apply \the [src] on [H]'s lips.") H.lip_style = "lipstick" @@ -89,7 +89,7 @@ else user.visible_message("[user] begins to wipe [H]'s lipstick off with \the [src].", \ "You begin to wipe off [H]'s lipstick...") - if(do_after(user, 10) && do_after(H, 10, 5, 0)) //user needs to keep their active hand, H does not. + if(do_after(user, 10, target = H) && do_after(H, 10, 5, 0)) //user needs to keep their active hand, H does not. user.visible_message("[user] wipes [H]'s lipstick off with \the [src].", \ "You wipe off [H]'s lipstick.") H.lip_style = null @@ -133,7 +133,7 @@ if(H == user) //shaving yourself user.visible_message("[user] starts to shave their facial hair with [src].", \ "You take a moment to shave your facial hair with [src]...") - if(do_after(user, 50)) + if(do_after(user, 50, target = H)) user.visible_message("[user] shaves his facial hair clean with [src].", \ "You finish shaving with [src]. Fast and clean!") shave(H, location) @@ -141,7 +141,7 @@ var/turf/H_loc = H.loc user.visible_message("[user] tries to shave [H]'s facial hair with [src].", \ "You start shaving [H]'s facial hair...") - if(do_after(user, 50)) + if(do_after(user, 50, target = H)) if(H_loc == H.loc) user.visible_message("[user] shaves off [H]'s facial hair with [src].", \ "You shave [H]'s facial hair clean off.") @@ -158,7 +158,7 @@ if(H == user) //shaving yourself user.visible_message("[user] starts to shave their head with [src].", \ "You start to shave your head with [src]...") - if(do_after(user, 50)) + if(do_after(user, 5, target = H)) user.visible_message("[user] shaves his head with [src].", \ "You finish shaving with [src].") shave(H, location) @@ -166,7 +166,7 @@ var/turf/H_loc = H.loc user.visible_message("[user] tries to shave [H]'s head with [src]!", \ "You start shaving [H]'s head...") - if(do_after(user, 50)) + if(do_after(user, 50, target = H)) if(H_loc == H.loc) user.visible_message("[user] shaves [H]'s head bald with [src]!", \ "You shave [H]'s head bald.") diff --git a/code/game/objects/items/weapons/courtroom.dm b/code/game/objects/items/weapons/courtroom.dm index c3f62193260..408cbe25a01 100644 --- a/code/game/objects/items/weapons/courtroom.dm +++ b/code/game/objects/items/weapons/courtroom.dm @@ -11,6 +11,7 @@ throwforce = 6.0 w_class = 2.0 attack_verb = list("bashed", "battered", "judged", "whacked") + burn_state = 0 //Burnable /obj/item/weapon/gavelhammer/suicide_act(mob/user) user.visible_message("[user] has sentenced \himself to death with the [src.name]! It looks like \he's trying to commit suicide.") @@ -25,6 +26,7 @@ force = 2.0 throwforce = 2.0 w_class = 1.0 + burn_state = 0 //Burnable /obj/item/weapon/gavelblock/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/weapon/gavelhammer)) diff --git a/code/game/objects/items/weapons/explosives.dm b/code/game/objects/items/weapons/explosives.dm index 75cca8b52e1..a2f552024ac 100644 --- a/code/game/objects/items/weapons/explosives.dm +++ b/code/game/objects/items/weapons/explosives.dm @@ -69,7 +69,7 @@ user << "You start planting the bomb..." - if(do_after(user, 50) && in_range(user, target)) + if(do_after(user, 50, target = target) && in_range(user, target)) if(!user.unEquip(src)) return src.target = target diff --git a/code/game/objects/items/weapons/extinguisher.dm b/code/game/objects/items/weapons/extinguisher.dm index 2dfa4b44c66..19e57dbb30b 100644 --- a/code/game/objects/items/weapons/extinguisher.dm +++ b/code/game/objects/items/weapons/extinguisher.dm @@ -151,6 +151,9 @@ if(isliving(atm)) //For extinguishing mobs on fire var/mob/living/M = atm M.ExtinguishMob() + if(istype(atm,/obj/item)) + var/obj/item/Item = atm + Item.extinguish() if(W.loc == my_target) break sleep(2) diff --git a/code/game/objects/items/weapons/gift_wrappaper.dm b/code/game/objects/items/weapons/gift_wrappaper.dm index 26bdda71d65..9f1ba40f4c1 100644 --- a/code/game/objects/items/weapons/gift_wrappaper.dm +++ b/code/game/objects/items/weapons/gift_wrappaper.dm @@ -13,7 +13,7 @@ icon = 'icons/obj/storage.dmi' icon_state = "giftcrate3" item_state = "gift1" - + burn_state = 0 //Burnable /obj/item/weapon/a_gift/New() ..() @@ -30,7 +30,7 @@ /obj/item/weapon/storage/wallet, /obj/item/weapon/storage/photo_album, /obj/item/weapon/storage/box/snappops, - /obj/item/weapon/storage/fancy/crayons, + /obj/item/weapon/storage/crayons, /obj/item/weapon/storage/backpack/holding, /obj/item/weapon/storage/belt/champion, /obj/item/weapon/soap/deluxe, @@ -86,6 +86,7 @@ flags = NOBLUDGEON amount = 25 max_amount = 25 + burn_state = 0 //Burnable /obj/item/stack/wrapping_paper/attack_self(mob/user) user << "You need to use it on a package that has already been wrapped!" diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm index 2823aa83d0f..2ab9f5a64dd 100644 --- a/code/game/objects/items/weapons/grenades/chem_grenade.dm +++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm @@ -182,31 +182,29 @@ mix_reagents() - if(reagents.total_volume) //The possible reactions didnt use up all reagents. + if(reagents.total_volume) //The possible reactions didnt use up all reagents, so we spread it around. var/datum/effect/effect/system/steam_spread/steam = new /datum/effect/effect/system/steam_spread() steam.set_up(10, 0, get_turf(src)) steam.attach(src) steam.start() - var/list/viewable = view(affected_area, loc) - var/list/accessible = can_flood_from(loc, affected_area) - var/list/reactable = accessible - var/mycontents = GetAllContents() - for(var/turf/T in accessible) - for(var/atom/A in T.GetAllContents()) - if(A in mycontents) continue - if(!(A in viewable)) continue - reactable |= A - if(!reactable.len) //Nothing to react with. Probably means we're in nullspace. - qdel(src) - return - var/fraction = 1/reactable.len - for(var/atom/A in reactable) - reagents.reaction(A, TOUCH, fraction) + var/list/viewable = view(affected_area, loc) + var/list/accessible = can_flood_from(loc, affected_area) + var/list/reactable = accessible + var/mycontents = GetAllContents() + for(var/turf/T in accessible) + for(var/atom/A in T.GetAllContents()) + if(A in mycontents) continue + if(!(A in viewable)) continue + reactable |= A + if(!reactable.len) //Nothing to react with. Probably means we're in nullspace. + qdel(src) + return + var/fraction = 1/reactable.len + for(var/atom/A in reactable) + reagents.reaction(A, TOUCH, fraction) - invisibility = INVISIBILITY_MAXIMUM //Why am i doing this? - spawn(50) //To make sure all reagents can work - qdel(src) //correctly before deleting the grenade. + qdel(src) /obj/item/weapon/grenade/chem_grenade/proc/mix_reagents() var/total_temp @@ -354,13 +352,14 @@ /obj/item/weapon/grenade/chem_grenade/teargas/New() ..() - var/obj/item/weapon/reagent_containers/glass/beaker/B1 = new(src) - var/obj/item/weapon/reagent_containers/glass/beaker/B2 = new(src) + var/obj/item/weapon/reagent_containers/glass/beaker/large/B1 = new(src) + var/obj/item/weapon/reagent_containers/glass/beaker/large/B2 = new(src) - B1.reagents.add_reagent("condensedcapsaicin", 25) - B1.reagents.add_reagent("potassium", 25) - B2.reagents.add_reagent("phosphorus", 25) - B2.reagents.add_reagent("sugar", 25) + B1.reagents.add_reagent("condensedcapsaicin", 70) + B1.reagents.add_reagent("potassium", 30) + B2.reagents.add_reagent("phosphorus", 30) + B2.reagents.add_reagent("sugar", 30) + B1.reagents.add_reagent("condensedcapsaicin", 40) beakers += B1 beakers += B2 @@ -373,17 +372,19 @@ /obj/item/weapon/grenade/chem_grenade/facid/New() ..() - var/obj/item/weapon/reagent_containers/glass/beaker/B1 = new(src) - var/obj/item/weapon/reagent_containers/glass/beaker/B2 = new(src) + var/obj/item/weapon/reagent_containers/glass/beaker/bluespace/B1 = new(src) + var/obj/item/weapon/reagent_containers/glass/beaker/bluespace/B2 = new(src) - B1.reagents.add_reagent("facid", 25) - B1.reagents.add_reagent("potassium", 25) - B2.reagents.add_reagent("phosphorus", 25) - B2.reagents.add_reagent("sugar", 25) + B1.reagents.add_reagent("facid", 290) + B1.reagents.add_reagent("potassium", 10) + B2.reagents.add_reagent("phosphorus", 10) + B2.reagents.add_reagent("sugar", 10) + B2.reagents.add_reagent("facid", 280) beakers += B1 beakers += B2 + /obj/item/weapon/grenade/chem_grenade/colorful name = "colorful grenade" desc = "Used for wide scale painting projects." @@ -402,6 +403,7 @@ beakers += B1 beakers += B2 + /obj/item/weapon/grenade/chem_grenade/clf3 name = "clf3 grenade" desc = "BURN!-brand foaming clf3. In a special applicator for rapid purging of wide areas." @@ -412,10 +414,10 @@ var/obj/item/weapon/reagent_containers/glass/beaker/bluespace/B1 = new(src) var/obj/item/weapon/reagent_containers/glass/beaker/bluespace/B2 = new(src) - B1.reagents.add_reagent("fluorosurfactant", 290) - B1.reagents.add_reagent("clf3", 10) - B2.reagents.add_reagent("water", 290) - B2.reagents.add_reagent("clf3", 10) + B1.reagents.add_reagent("fluorosurfactant", 250) + B1.reagents.add_reagent("clf3", 50) + B2.reagents.add_reagent("water", 250) + B2.reagents.add_reagent("clf3", 50) beakers += B1 beakers += B2 diff --git a/code/game/objects/items/weapons/grenades/grenade.dm b/code/game/objects/items/weapons/grenades/grenade.dm index 85375327940..51272bbd0a7 100644 --- a/code/game/objects/items/weapons/grenades/grenade.dm +++ b/code/game/objects/items/weapons/grenades/grenade.dm @@ -9,10 +9,15 @@ throw_range = 7 flags = CONDUCT slot_flags = SLOT_BELT + burn_state = 0 //Burnable + burntime = 5 var/active = 0 var/det_time = 50 var/display_timer = 1 +/obj/item/weapon/grenade/burn() + prime() + /obj/item/weapon/grenade/proc/clown_check(var/mob/living/carbon/human/user) if(user.disabilities & CLUMSY && prob(50)) user << "Huh? How does this thing work?" diff --git a/code/game/objects/items/weapons/grenades/smokebomb.dm b/code/game/objects/items/weapons/grenades/smokebomb.dm index 5ba0e73fa7d..059fb02ae5c 100644 --- a/code/game/objects/items/weapons/grenades/smokebomb.dm +++ b/code/game/objects/items/weapons/grenades/smokebomb.dm @@ -5,11 +5,11 @@ det_time = 20 item_state = "flashbang" slot_flags = SLOT_BELT - var/datum/effect/effect/system/bad_smoke_spread/smoke + var/datum/effect/effect/system/smoke_spread/bad/smoke /obj/item/weapon/grenade/smokebomb/New() ..() - src.smoke = new /datum/effect/effect/system/bad_smoke_spread + src.smoke = new /datum/effect/effect/system/smoke_spread/bad src.smoke.attach(src) /obj/item/weapon/grenade/smokebomb/Destroy() @@ -24,10 +24,6 @@ src.smoke.start() sleep(10) src.smoke.start() - sleep(10) - src.smoke.start() - sleep(10) - src.smoke.start() for(var/obj/effect/blob/B in view(8,src)) var/damage = round(30/(get_dist(B,src)+1)) diff --git a/code/game/objects/items/weapons/implants/implant.dm b/code/game/objects/items/weapons/implants/implant.dm index b22b7439eae..7031edd688f 100644 --- a/code/game/objects/items/weapons/implants/implant.dm +++ b/code/game/objects/items/weapons/implants/implant.dm @@ -79,9 +79,13 @@ return dat /obj/item/weapon/implant/explosive - name = "explosive implant" + name = "microbomb implant" desc = "And boom goes the weasel." icon_state = "explosive" + var/weak = 1.6 + var/medium = 0.8 + var/heavy = 0.4 + var/delay = 7 /obj/item/weapon/implant/explosive/get_data() var/dat = {"Implant Specifications:
    @@ -101,12 +105,72 @@ /obj/item/weapon/implant/explosive/activate(var/cause) if(!cause || !imp_in) return 0 - if(cause == "action_button" && alert(imp_in, "Are you sure you want to activate your explosive implant? This will cause you to explode and gib!", "Explosive Implant Confirmation", "Yes", "No") != "Yes") + if(cause == "action_button" && alert(imp_in, "Are you sure you want to activate your microbomb implant? This will cause you to explode!", "Microbomb Implant Confirmation", "Yes", "No") != "Yes") return 0 - explosion(src,0,1,5,7,10, flame_range = 5) - if(imp_in) + for(var/obj/item/weapon/implant/explosive/E in imp_in) + heavy += 0.4 + medium += 0.8 + weak += 1.6 + delay += 7 + if(E != src) + qdel(E) + heavy = round(heavy) + medium = round(medium) + weak = round(weak) + imp_in << "You activate your microbomb implant." +//If the delay is short, just blow up already jeez + if(delay <= 7) imp_in.gib() + explosion(src,heavy,medium,weak,weak, flame_range = weak) + qdel(src) + imp_in.visible_message("[imp_in] starts beeping ominously!") + playsound(loc, 'sound/items/timer.ogg', 30, 0) + sleep(delay/4) + if(imp_in.stat) + imp_in.visible_message("[imp_in] doubles over in pain!") + imp_in.Weaken(7) + playsound(loc, 'sound/items/timer.ogg', 30, 0) + sleep(delay/4) + playsound(loc, 'sound/items/timer.ogg', 30, 0) + sleep(delay/4) + playsound(loc, 'sound/items/timer.ogg', 30, 0) + sleep(delay/4) + imp_in.gib() + explosion(src,heavy,medium,weak,weak, flame_range = weak) + qdel(src) +/obj/item/weapon/implant/explosive/macro + name = "macrobomb implant" + desc = "And boom goes the weasel. And everything else nearby." + icon_state = "explosive" + weak = 16 + medium = 8 + heavy = 4 + delay = 70 + +/obj/item/weapon/implant/explosive/macro/activate(var/cause) + if(!cause || !imp_in) return 0 + if(cause == "action_button" && alert(imp_in, "Are you sure you want to activate your macrobomb implant? This will cause you to explode and gib!", "Macrobomb Implant Confirmation", "Yes", "No") != "Yes") + return 0 + for(var/obj/item/weapon/implant/explosive/macro/E in imp_in) + if(E != src) + qdel(E) + imp_in << "You activate your macrobomb implant." + imp_in.visible_message("[imp_in] starts beeping ominously!") + playsound(loc, 'sound/items/timer.ogg', 30, 0) + sleep(delay/4) + if(imp_in.stat) + imp_in.visible_message("[imp_in] doubles over in pain!") + imp_in.Weaken(7) + playsound(loc, 'sound/items/timer.ogg', 30, 0) + sleep(delay/4) + playsound(loc, 'sound/items/timer.ogg', 30, 0) + sleep(delay/4) + playsound(loc, 'sound/items/timer.ogg', 30, 0) + sleep(delay/4) + imp_in.gib() + explosion(src,heavy,medium,weak,weak, flame_range = weak) + qdel(src) /obj/item/weapon/implant/chem name = "chem implant" diff --git a/code/game/objects/items/weapons/implants/implanter.dm b/code/game/objects/items/weapons/implants/implanter.dm index b3023ea69ef..291b287fc14 100644 --- a/code/game/objects/items/weapons/implants/implanter.dm +++ b/code/game/objects/items/weapons/implants/implanter.dm @@ -23,7 +23,7 @@ M.visible_message("[user] is attemping to implant [M].") var/turf/T = get_turf(M) - if(T && (M == user || do_after(user, 50))) + if(T && (M == user || do_after(user, 50, target = M))) if(user && M && (get_turf(M) == T) && src && imp) M.visible_message("[user] has implanted [M].", "[user] implants you with the implant.") add_logs(user, M, "implanted", object="[name]") diff --git a/code/game/objects/items/weapons/kitchen.dm b/code/game/objects/items/weapons/kitchen.dm index 993f1e72c98..4aa59cb3d19 100644 --- a/code/game/objects/items/weapons/kitchen.dm +++ b/code/game/objects/items/weapons/kitchen.dm @@ -24,7 +24,7 @@ hitsound = 'sound/weapons/bladeslice.ogg' var/datum/reagent/forkload //used to eat omelette -/obj/item/weapon/kitchen/fork/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob) +/obj/item/weapon/kitchen/fork/attack(mob/living/carbon/M, mob/living/carbon/user) if(!istype(M)) return ..() diff --git a/code/game/objects/items/weapons/mop.dm b/code/game/objects/items/weapons/mop.dm index 43a597ae7b8..60b08e58e64 100644 --- a/code/game/objects/items/weapons/mop.dm +++ b/code/game/objects/items/weapons/mop.dm @@ -11,6 +11,7 @@ throw_range = 7 w_class = 3.0 attack_verb = list("mopped", "bashed", "bludgeoned", "whacked") + burn_state = 0 //Burnable var/mopping = 0 var/mopcount = 0 var/mopcap = 5 @@ -49,7 +50,7 @@ obj/item/weapon/mop/proc/clean(turf/simulated/A) if(istype(turf)) user.visible_message("[user] begins to clean \the [turf] with [src].", "You begin to clean \the [turf] with [src]...") - if(do_after(user, mopspeed)) + if(do_after(user, mopspeed, target = src)) clean(turf) user << "You finish mopping." diff --git a/code/game/objects/items/weapons/paint.dm b/code/game/objects/items/weapons/paint.dm index 48809459247..14ddda46e57 100644 --- a/code/game/objects/items/weapons/paint.dm +++ b/code/game/objects/items/weapons/paint.dm @@ -10,6 +10,8 @@ item_color = "FFFFFF" item_state = "paintcan" w_class = 3.0 + burn_state = 0 //Burnable + burntime = 5 var/paintleft = 10 /obj/item/weapon/paint/red diff --git a/code/game/objects/items/weapons/scrolls.dm b/code/game/objects/items/weapons/scrolls.dm index 521f5ab64e7..535aca43cd0 100644 --- a/code/game/objects/items/weapons/scrolls.dm +++ b/code/game/objects/items/weapons/scrolls.dm @@ -9,6 +9,7 @@ throw_speed = 3 throw_range = 7 origin_tech = "bluespace=4" + burn_state = 0 //Burnable /obj/item/weapon/teleportation_scroll/apprentice name = "lesser scroll of teleportation" @@ -57,7 +58,7 @@ if(!((user == loc || (in_range(src, user) && istype(src.loc, /turf))))) return - var/datum/effect/effect/system/harmless_smoke_spread/smoke = new /datum/effect/effect/system/harmless_smoke_spread() + var/datum/effect/effect/system/smoke_spread/smoke = new smoke.set_up(5, 0, user.loc) smoke.attach(user) smoke.start() diff --git a/code/game/objects/items/weapons/signs.dm b/code/game/objects/items/weapons/signs.dm index 15451d602a8..67467ce35c1 100644 --- a/code/game/objects/items/weapons/signs.dm +++ b/code/game/objects/items/weapons/signs.dm @@ -5,6 +5,7 @@ force = 5 w_class = 4.0 attack_verb = list("bashed","smacked") + burn_state = 0 //Burnable var/label = "" var/last_wave = 0 diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm index d8aed9fdd9d..93a7d56bc79 100644 --- a/code/game/objects/items/weapons/storage/backpack.dm +++ b/code/game/objects/items/weapons/storage/backpack.dm @@ -18,6 +18,8 @@ slot_flags = SLOT_BACK //ERROOOOO max_w_class = 3 max_combined_w_class = 21 + burn_state = 0 //Burnable + burntime = 20 /obj/item/weapon/storage/backpack/attackby(obj/item/weapon/W as obj, mob/user as mob, params) playsound(src.loc, "rustle", 50, 1, -5) @@ -34,6 +36,9 @@ icon_state = "holdingpack" max_w_class = 5 max_combined_w_class = 35 + burn_state = -1 // NotBurnable + var/pshoom = 'sound/items/PSHOOM.ogg' + var/alt_sound = 'sound/items/PSHOOM_2.ogg' /obj/item/weapon/storage/backpack/holding/suicide_act(mob/user) user.visible_message("[user] is jumping into [src]! It looks like \he's trying to commit suicide.") @@ -50,6 +55,20 @@ return return ..() +/obj/item/weapon/storage/backpack/holding/content_can_dump(atom/dest_object, mob/user) + if(Adjacent(user)) + if(get_dist(user, dest_object) < 8) + if(dest_object.storage_contents_dump_act(src, user)) + if(alt_sound && prob(1)) + playsound(src, alt_sound, 40, 1) + else + playsound(src, pshoom, 40, 1) + user.Beam(dest_object,icon_state="rped_upgrade",icon='icons/effects/effects.dmi',time=5) + return 1 + user << "The [src.name] buzzes." + playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 0) + return 0 + /obj/item/weapon/storage/backpack/holding/handle_item_insertion(obj/item/W, prevent_warning = 0, mob/user) if(istype(W, /obj/item/weapon/storage/backpack/holding) && !W.crit_fail) var/safety = alert(user, "You feel this may not be the best idea.", "Put in [name]?", "Proceed", "Abort") @@ -129,12 +148,14 @@ desc = "It's a special backpack made exclusively for Nanotrasen officers." icon_state = "captainpack" item_state = "captainpack" + burn_state = -1 //Not Burnable /obj/item/weapon/storage/backpack/industrial name = "industrial backpack" desc = "It's a tough backpack for the daily grind of station life." icon_state = "engiepack" item_state = "engiepack" + burn_state = -1 //Not Burnable /obj/item/weapon/storage/backpack/botany name = "botany backpack" @@ -159,6 +180,7 @@ desc = "A specially designed backpack. It's fire resistant and smells vaguely of plasma." icon_state = "toxpack" item_state = "toxpack" + burn_state = -1 //Not Burnable /obj/item/weapon/storage/backpack/virology name = "virology backpack" @@ -175,6 +197,7 @@ name = "leather satchel" desc = "It's a very fancy satchel made with fine leather." icon_state = "satchel" + burn_state = -1 //Not Burnable /obj/item/weapon/storage/backpack/satchel/withwallet/New() ..() @@ -190,6 +213,7 @@ desc = "A tough satchel with extra pockets." icon_state = "satchel-eng" item_state = "engiepack" + burn_state = -1 //Not Burnable /obj/item/weapon/storage/backpack/satchel_med name = "medical satchel" @@ -220,6 +244,7 @@ desc = "Useful for holding research materials." icon_state = "satchel-tox" item_state = "satchel-tox" + burn_state = -1 //Not Burnable /obj/item/weapon/storage/backpack/satchel_hyd name = "botanist satchel" @@ -238,6 +263,7 @@ desc = "An exclusive satchel for Nanotrasen officers." icon_state = "satchel-cap" item_state = "captainpack" + burn_state = -1 //Not Burnable /obj/item/weapon/storage/backpack/satchel_flat name = "smuggler's satchel" @@ -304,12 +330,34 @@ new /obj/item/ammo_box/magazine/m12g/dragon(src) return +/obj/item/weapon/storage/backpack/dufflebag/syndiesurgery + name = "Syndicate surgery dufflebag" + desc = "A menacingly looking dufflebag for holding surgery tools." + icon_state = "duffle-syndiemed" + item_state = "duffle-syndiemed" + storage_slots = 10 + +/obj/item/weapon/storage/backpack/dufflebag/syndiesurgery/New() + ..() + contents = list() + new /obj/item/weapon/scalpel(src) + new /obj/item/weapon/hemostat(src) + new /obj/item/weapon/retractor(src) + new /obj/item/weapon/circular_saw(src) + new /obj/item/weapon/surgicaldrill(src) + new /obj/item/weapon/cautery(src) + new /obj/item/weapon/surgical_drapes(src) + new /obj/item/clothing/suit/straight_jacket(src) + new /obj/item/clothing/mask/muzzle(src) + new /obj/item/device/mmi/syndie(src) + return /obj/item/weapon/storage/backpack/dufflebag/captain name = "captain's dufflebag" desc = "A large dufflebag for holding extra captainly goods." icon_state = "duffle-captain" item_state = "duffle-captain" + burn_state = -1 //Not Burnable /obj/item/weapon/storage/backpack/dufflebag/med name = "medical dufflebag" @@ -324,13 +372,15 @@ item_state = "duffle-sec" /obj/item/weapon/storage/backpack/dufflebag/engineering - name = "engineering dufflebag" + name = "industrial dufflebag" desc = "A large dufflebag for holding extra tools and supplies." icon_state = "duffle-eng" item_state = "duffle-eng" + burn_state = -1 //Not Burnable /obj/item/weapon/storage/backpack/dufflebag/clown name = "clown's dufflebag" desc = "A large dufflebag for holding lots of funny gags!" icon_state = "duffle-clown" item_state = "duffle-clown" + diff --git a/code/game/objects/items/weapons/storage/bags.dm b/code/game/objects/items/weapons/storage/bags.dm index 7519804b005..9790b77e206 100644 --- a/code/game/objects/items/weapons/storage/bags.dm +++ b/code/game/objects/items/weapons/storage/bags.dm @@ -103,6 +103,7 @@ max_w_class = 3 w_class = 1 can_hold = list(/obj/item/weapon/reagent_containers/food/snacks/grown,/obj/item/seeds,/obj/item/weapon/grown) + burn_state = 0 //Burnable //////// @@ -280,6 +281,7 @@ max_w_class = 3 w_class = 4 //Bigger than a book because physics can_hold = list(/obj/item/weapon/book, /obj/item/weapon/storage/book, /obj/item/weapon/spellbook) + burn_state = 0 //Burnable /* * Trays - Agouri @@ -349,3 +351,4 @@ w_class = 1 preposition = "in" can_hold = list(/obj/item/weapon/reagent_containers/pill, /obj/item/weapon/reagent_containers/glass/beaker, /obj/item/weapon/reagent_containers/glass/bottle) + burn_state = 0 //Burnable diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm index 0b6f3428996..1e95e040502 100644 --- a/code/game/objects/items/weapons/storage/belt.dm +++ b/code/game/objects/items/weapons/storage/belt.dm @@ -68,7 +68,7 @@ /obj/item/weapon/reagent_containers/glass/bottle, /obj/item/weapon/reagent_containers/pill, /obj/item/weapon/reagent_containers/syringe, - /obj/item/weapon/lighter/zippo, + /obj/item/weapon/lighter, /obj/item/weapon/storage/fancy/cigarettes, /obj/item/weapon/storage/pill_bottle, /obj/item/stack/medical, diff --git a/code/game/objects/items/weapons/storage/book.dm b/code/game/objects/items/weapons/storage/book.dm index 1efe547141c..dcb45f1fe5d 100644 --- a/code/game/objects/items/weapons/storage/book.dm +++ b/code/game/objects/items/weapons/storage/book.dm @@ -6,6 +6,7 @@ throw_speed = 2 throw_range = 5 w_class = 3.0 + burn_state = 0 //Burnable var/title = "book" /obj/item/weapon/storage/book/attack_self(mob/user) user << "The pages of [title] have been cut out!" diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm index 936f6e72425..d8ea59ab5f4 100644 --- a/code/game/objects/items/weapons/storage/boxes.dm +++ b/code/game/objects/items/weapons/storage/boxes.dm @@ -24,6 +24,7 @@ desc = "It's just an ordinary box." icon_state = "box" item_state = "syringe_kit" + burn_state = 0 //Burnable var/foldable = /obj/item/stack/sheet/cardboard diff --git a/code/game/objects/items/weapons/storage/briefcase.dm b/code/game/objects/items/weapons/storage/briefcase.dm index 93a6fdc2679..b37091113a6 100644 --- a/code/game/objects/items/weapons/storage/briefcase.dm +++ b/code/game/objects/items/weapons/storage/briefcase.dm @@ -11,6 +11,8 @@ max_w_class = 3 max_combined_w_class = 21 attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "whacked") + burn_state = 0 //Burnable + burntime = 20 /obj/item/weapon/storage/briefcase/New() ..() diff --git a/code/game/objects/items/weapons/storage/fancy.dm b/code/game/objects/items/weapons/storage/fancy.dm index 121a7b505ca..5fd3462135d 100644 --- a/code/game/objects/items/weapons/storage/fancy.dm +++ b/code/game/objects/items/weapons/storage/fancy.dm @@ -9,16 +9,22 @@ * Donut Box * Egg Box * Candle Box - * Crayon Box * Cigarette Box * Cigar Case */ -/obj/item/weapon/storage/fancy/ +/obj/item/weapon/storage/fancy icon = 'icons/obj/food/containers.dmi' icon_state = "donutbox6" name = "donut box" + burn_state = 0 //Burnable var/icon_type = "donut" + var/spawn_type = null + +/obj/item/weapon/storage/fancy/New() + ..() + for(var/i = 1 to storage_slots) + new spawn_type(src) /obj/item/weapon/storage/fancy/update_icon(var/itemremoved = 0) var/total_contents = src.contents.len - itemremoved @@ -27,12 +33,10 @@ /obj/item/weapon/storage/fancy/examine(mob/user) ..() - if(contents.len <= 0) - user << "There are no [src.icon_type]s left in the box." - else if(contents.len == 1) - user << "There is one [src.icon_type] left in the box." + if(contents.len == 1) + user << "There is one [src.icon_type] left." else - user << "There are [src.contents.len] [src.icon_type]s in the box." + user << "There are [contents.len <= 0 ? "no" : "[src.contents.len]"] [src.icon_type]s left." /* * Donut Box @@ -45,13 +49,7 @@ name = "donut box" storage_slots = 6 can_hold = list(/obj/item/weapon/reagent_containers/food/snacks/donut) - - -/obj/item/weapon/storage/fancy/donut_box/New() - ..() - for(var/i=1; i <= storage_slots; i++) - new /obj/item/weapon/reagent_containers/food/snacks/donut(src) - return + spawn_type = /obj/item/weapon/reagent_containers/food/snacks/donut /* * Egg Box @@ -64,12 +62,7 @@ name = "egg box" storage_slots = 12 can_hold = list(/obj/item/weapon/reagent_containers/food/snacks/egg) - -/obj/item/weapon/storage/fancy/egg_box/New() - ..() - for(var/i=1; i <= storage_slots; i++) - new /obj/item/weapon/reagent_containers/food/snacks/egg(src) - return + spawn_type = /obj/item/weapon/reagent_containers/food/snacks/egg /* * Candle Box @@ -85,56 +78,7 @@ storage_slots = 5 throwforce = 2 slot_flags = SLOT_BELT - - -/obj/item/weapon/storage/fancy/candle_box/New() - ..() - for(var/i=1; i <= storage_slots; i++) - new /obj/item/candle(src) - return - -/* - * Crayon Box - */ - -/obj/item/weapon/storage/fancy/crayons - name = "box of crayons" - desc = "A box of crayons for all your rune drawing needs." - icon = 'icons/obj/crayons.dmi' - icon_state = "crayonbox" - w_class = 2.0 - storage_slots = 6 - icon_type = "crayon" - can_hold = list( - /obj/item/toy/crayon - ) - -/obj/item/weapon/storage/fancy/crayons/New() - ..() - new /obj/item/toy/crayon/red(src) - new /obj/item/toy/crayon/orange(src) - new /obj/item/toy/crayon/yellow(src) - new /obj/item/toy/crayon/green(src) - new /obj/item/toy/crayon/blue(src) - new /obj/item/toy/crayon/purple(src) - update_icon() - -/obj/item/weapon/storage/fancy/crayons/update_icon() - overlays = list() //resets list - overlays += image('icons/obj/crayons.dmi',"crayonbox") - for(var/obj/item/toy/crayon/crayon in contents) - overlays += image('icons/obj/crayons.dmi',crayon.colourName) - -/obj/item/weapon/storage/fancy/crayons/attackby(obj/item/W as obj, mob/user as mob, params) - if(istype(W,/obj/item/toy/crayon)) - switch(W:colourName) - if("mime") - usr << "This crayon is too sad to be contained in this box." - return - if("rainbow") - usr << "This crayon is too powerful to be contained in this box." - return - ..() + spawn_type = /obj/item/candle //////////// //CIG PACK// @@ -143,24 +87,30 @@ name = "\improper Space Cigarettes packet" desc = "The most popular brand of cigarettes, sponsors of the Space Olympics." icon = 'icons/obj/cigarettes.dmi' - icon_state = "cigpacket" + icon_state = "cig" item_state = "cigpacket" w_class = 1 throwforce = 0 slot_flags = SLOT_BELT storage_slots = 6 - can_hold = list(/obj/item/clothing/mask/cigarette,/obj/item/weapon/lighter) + can_hold = list(/obj/item/clothing/mask/cigarette) icon_type = "cigarette" + spawn_type = /obj/item/clothing/mask/cigarette /obj/item/weapon/storage/fancy/cigarettes/New() ..() flags |= NOREACT - for(var/i = 1 to storage_slots) - new /obj/item/clothing/mask/cigarette(src) create_reagents(15 * storage_slots)//so people can inject cigarettes without opening a packet, now with being able to inject the whole one /obj/item/weapon/storage/fancy/cigarettes/update_icon() - icon_state = "[initial(icon_state)][contents.len]" + overlays.Cut() + icon_state = initial(icon_state) + if(!contents.len) + icon_state += "_empty" + else + overlays += "[icon_state]_open" + for(var/c = contents.len, c >= 1, c--) + overlays += image(icon = src.icon, icon_state = "cigarette", pixel_x = 1 * (c -1)) return /obj/item/weapon/storage/fancy/cigarettes/remove_from_storage(obj/item/W, atom/new_location) @@ -178,35 +128,31 @@ remove_from_storage(W, M) M.equip_to_slot_if_possible(W, slot_wear_mask) contents -= W - user << "You take a cigarette out of the pack." + user << "You take a [icon_type] out of the pack." else ..() else - user << "There are no cigarettes left in the pack." + user << "There are no [icon_type]s left in the pack." /obj/item/weapon/storage/fancy/cigarettes/dromedaryco name = "\improper DromedaryCo packet" desc = "A packet of six imported DromedaryCo cancer sticks. A label on the packaging reads, \"Wouldn't a slow death make a change?\"" - icon_state = "Dpacket" - item_state = "Dpacket" + icon_state = "dromedary" /obj/item/weapon/storage/fancy/cigarettes/cigpack_uplift name = "\improper Uplift Smooth packet" desc = "Your favorite brand, now menthol flavored." - icon_state = "upliftpacket" - item_state = "upliftpacket" + icon_state = "uplift" /obj/item/weapon/storage/fancy/cigarettes/cigpack_robust name = "\improper Robust packet" desc = "Smoked by the robust." - icon_state = "robustpacket" - item_state = "robustpacket" + icon_state = "robust" /obj/item/weapon/storage/fancy/cigarettes/cigpack_robustgold name = "\improper Robust Gold packet" desc = "Smoked by the truly robust." - icon_state = "robustgpacket" - item_state = "robustgpacket" + icon_state = "robustg" /obj/item/weapon/storage/fancy/cigarettes/cigpack_robustgold/New() ..() @@ -216,14 +162,12 @@ /obj/item/weapon/storage/fancy/cigarettes/cigpack_carp name = "\improper Carp Classic packet" desc = "Since 2313." - icon_state = "carppacket" - item_state = "carppacket" + icon_state = "carp" /obj/item/weapon/storage/fancy/cigarettes/cigpack_syndicate name = "cigarette packet" desc = "An obscure brand of cigarettes." - icon_state = "syndiepacket" - item_state = "syndiepacket" + icon_state = "syndie" /obj/item/weapon/storage/fancy/cigarettes/cigpack_syndicate/New() ..() @@ -234,14 +178,12 @@ /obj/item/weapon/storage/fancy/cigarettes/cigpack_midori name = "\improper Midori Tabako packet" desc = "You can't understand the runes, but the packet smells funny." - icon_state = "midoripacket" - item_state = "midoripacket" + icon_state = "midori" /obj/item/weapon/storage/fancy/cigarettes/cigpack_shadyjims name ="\improper Shady Jim's Super Slims" desc = "Is your weight slowing you down? Having trouble running away from gravitational singularities? Can't stop stuffing your mouth? Smoke Shady Jim's Super Slims and watch all that fat burn away. Guaranteed results!" - icon_state = "shadyjimpacket" - item_state = "shadyjimpacket" + icon_state = "shadyjim" /obj/item/weapon/storage/fancy/cigarettes/cigpack_shadyjims/New() ..() @@ -258,61 +200,44 @@ icon = 'icons/obj/cigarettes.dmi' icon_state = "cig_paper_pack" storage_slots = 10 - icon_type = "rolling papers" + icon_type = "rolling paper" can_hold = list(/obj/item/weapon/rollingpaper) + spawn_type = /obj/item/weapon/rollingpaper /obj/item/weapon/storage/fancy/rollingpapers/update_icon() + overlays.Cut() if(!contents.len) - icon_state = "[initial(icon_state)]0" - else - icon_state = initial(icon_state) - - desc = "There are [contents.len] papers\s left!" + overlays += "[icon_state]_empty" return -/obj/item/weapon/storage/fancy/rollingpapers/New() - ..() - for(var/i = 1 to storage_slots) - new /obj/item/weapon/rollingpaper(src) - ///////////// //CIGAR BOX// ///////////// -/obj/item/weapon/storage/fancy/cigars +/obj/item/weapon/storage/fancy/cigarettes/cigars name = "\improper premium cigar case" desc = "A case of premium cigars. Very expensive." icon = 'icons/obj/cigarettes.dmi' - icon_state = "cigarcasep" - item_state = "cigarcasep" + icon_state = "cigarcase" w_class = 3 - throwforce = 0 - slot_flags = SLOT_BELT storage_slots = 7 can_hold = list(/obj/item/clothing/mask/cigarette/cigar) - icon_type = "cigar" - var/cigar_type = /obj/item/clothing/mask/cigarette/cigar + icon_type = "premium cigar" + spawn_type = /obj/item/clothing/mask/cigarette/cigar -/obj/item/weapon/storage/fancy/cigars/New() - ..() - flags |= NOREACT - for(var/i = 1 to storage_slots) - new cigar_type(src) - -/obj/item/weapon/storage/fancy/cigars/update_icon() - icon_state = "[initial(icon_state)][contents.len]" +/obj/item/weapon/storage/fancy/cigarettes/cigars/update_icon() + overlays.Cut() + overlays += "[icon_state]_open" + for(var/c = contents.len, c >= 1, c--) + overlays += image(icon = src.icon, icon_state = icon_type, pixel_x = 4 * (c -1)) return -/obj/item/weapon/storage/fancy/cigars/cohiba +/obj/item/weapon/storage/fancy/cigarettes/cigars/cohiba name = "\improper cohiba robusto cigar case" desc = "A case of imported Cohiba cigars, renowned for their strong flavor." - icon_state = "cigarcase" - item_state = "cigarcase" - cigar_type = /obj/item/clothing/mask/cigarette/cigar/cohiba + spawn_type = /obj/item/clothing/mask/cigarette/cigar/cohiba -/obj/item/weapon/storage/fancy/cigars/havana +/obj/item/weapon/storage/fancy/cigarettes/cigars/havana name = "\improper premium havanian cigar case" desc = "A case of classy Havanian cigars." - icon_state = "cigarcase" - item_state = "cigarcase" - cigar_type = /obj/item/clothing/mask/cigarette/cigar/havana + spawn_type = /obj/item/clothing/mask/cigarette/cigar/havana diff --git a/code/game/objects/items/weapons/storage/secure.dm b/code/game/objects/items/weapons/storage/secure.dm index 8cffa2dee32..ae20822118f 100644 --- a/code/game/objects/items/weapons/storage/secure.dm +++ b/code/game/objects/items/weapons/storage/secure.dm @@ -34,14 +34,14 @@ /obj/item/weapon/storage/secure/attackby(obj/item/weapon/W as obj, mob/user as mob, params) if(locked) if (istype(W, /obj/item/weapon/screwdriver)) - if (do_after(user, 20)) + if (do_after(user, 20, target = src)) src.open =! src.open user.show_message(text("You [] the service panel.", (src.open ? "open" : "close"))) return if ((istype(W, /obj/item/device/multitool)) && (src.open == 1)&& (!src.l_hacking)) user.show_message(text("Now attempting to reset internal memory, please hold."), 1) src.l_hacking = 1 - if (do_after(usr, 100)) + if (do_after(usr, 100, target = src)) if (prob(40)) src.l_setshort = 1 src.l_set = 0 diff --git a/code/game/objects/items/weapons/storage/uplink_kits.dm b/code/game/objects/items/weapons/storage/uplink_kits.dm index 7e8b26009e9..1ceaaa88648 100644 --- a/code/game/objects/items/weapons/storage/uplink_kits.dm +++ b/code/game/objects/items/weapons/storage/uplink_kits.dm @@ -112,16 +112,26 @@ return */ -/obj/item/weapon/storage/box/syndie_kit/imp_explosive - name = "Explosive Implant (with injector)" +/obj/item/weapon/storage/box/syndie_kit/imp_microbomb + name = "Microbomb Implant (with injector)" -/obj/item/weapon/storage/box/syndie_kit/imp_explosive/New() +/obj/item/weapon/storage/box/syndie_kit/imp_microbomb/New() var/obj/item/weapon/implanter/O = new(src) O.imp = new /obj/item/weapon/implant/explosive(O) O.update_icon() ..() return +/obj/item/weapon/storage/box/syndie_kit/imp_macrobomb + name = "Macrobomb Implant (with injector)" + +/obj/item/weapon/storage/box/syndie_kit/imp_macrobomb/New() + var/obj/item/weapon/implanter/O = new(src) + O.imp = new /obj/item/weapon/implant/explosive/macro(O) + O.update_icon() + ..() + return + /obj/item/weapon/storage/box/syndie_kit/imp_uplink name = "boxed uplink implant (with injector)" @@ -185,3 +195,13 @@ new /obj/item/weapon/reagent_containers/glass/bottle/curare(src) new /obj/item/weapon/reagent_containers/glass/bottle/amanitin(src) return + +/obj/item/weapon/storage/box/syndie_kit/nuke + name = "box" + +/obj/item/weapon/storage/box/syndie_kit/nuke/New() + ..() + new /obj/item/weapon/screwdriver/nuke(src) + new /obj/item/nuke_core_container(src) + new /obj/item/weapon/paper/nuke_instructions(src) + new /obj/item/weapon/paper/nuke_plans(src) \ No newline at end of file diff --git a/code/game/objects/items/weapons/storage/wallets.dm b/code/game/objects/items/weapons/storage/wallets.dm index 5f2e841eff0..a1b73157d55 100644 --- a/code/game/objects/items/weapons/storage/wallets.dm +++ b/code/game/objects/items/weapons/storage/wallets.dm @@ -4,6 +4,7 @@ storage_slots = 4 icon_state = "wallet" w_class = 2 + burn_state = 0 //Burnable can_hold = list( /obj/item/stack/spacecash, /obj/item/weapon/card, diff --git a/code/game/objects/items/weapons/tanks/watertank.dm b/code/game/objects/items/weapons/tanks/watertank.dm index d634d9a832c..08808afdc04 100644 --- a/code/game/objects/items/weapons/tanks/watertank.dm +++ b/code/game/objects/items/weapons/tanks/watertank.dm @@ -309,7 +309,9 @@ pass_flags = PASSTABLE /obj/effect/nanofrost_container/proc/Smoke() - PoolOrNew(/obj/effect/effect/freezing_smoke, list(loc, 6, 1)) + var/datum/effect/effect/system/smoke_spread/freezing/S = new + S.set_up(6, 0, loc, null, 1) + S.start() var/obj/effect/decal/cleanable/flour/F = new /obj/effect/decal/cleanable/flour(src.loc) F.color = "#B2FFFF" F.name = "nanofrost residue" @@ -317,33 +319,16 @@ playsound(src,'sound/effects/bamf.ogg',100,1) qdel(src) -/obj/effect/effect/freezing_smoke +/obj/effect/effect/smoke/freezing name = "nanofrost smoke" - icon_state = "smoke" opacity = 0 - anchored = 0.0 - mouse_opacity = 0 - icon = 'icons/effects/96x96.dmi' - pixel_x = -32 - pixel_y = -32 color = "#B2FFFF" - var/amount = 0 -/obj/effect/effect/freezing_smoke/New(loc, var/amt, var/blast) - ..() - spawn(100+rand(10,30)) - qdel(src) - amount = amt - if(amount) - var/datum/effect/effect/system/freezing_smoke_spread/F = new /datum/effect/effect/system/freezing_smoke_spread - F.set_up(amount, 0, src.loc) - F.start() - if(blast) - for(var/turf/T in trange(2, src.loc)) - Chilled(T) - return +/datum/effect/effect/system/smoke_spread/freezing + smoke_type = /obj/effect/effect/smoke/freezing + var/blast = 0 -/obj/effect/effect/freezing_smoke/proc/Chilled(atom/A) +/datum/effect/effect/system/smoke_spread/freezing/proc/Chilled(atom/A) if(istype(A, /turf/simulated)) var/turf/simulated/T = A if(T.air) @@ -362,31 +347,20 @@ V.visible_message("[V] was frozen shut!") for(var/mob/living/L in T) L.ExtinguishMob() + for(var/obj/item/Item in T) + Item.extinguish() return -/datum/effect/effect/system/freezing_smoke_spread +/datum/effect/effect/system/smoke_spread/freezing/set_up(n = 5, c = 0, loca, direct, blasting = 0) + ..() + blast = blasting -/datum/effect/effect/system/freezing_smoke_spread/set_up(n = 6, c = 0, loca) - number = n - if(istype(loca, /turf/)) - location = loca - else - location = get_turf(loca) +/datum/effect/effect/system/smoke_spread/freezing/start() + if(blast) + for(var/turf/T in trange(2, location)) + Chilled(T) + ..() -/datum/effect/effect/system/freezing_smoke_spread/start() - var/i = 0 - for(i=0, iYou start wrenching the frame into place...
    " - if(do_after(user, 20)) + if(do_after(user, 20, target = src)) user << "You wrench the frame into place." anchored = 1 state = 1 @@ -27,7 +27,7 @@ return playsound(loc, 'sound/items/Welder.ogg', 50, 1) user << "You start to deconstruct the frame..." - if(do_after(user, 20)) + if(do_after(user, 20, target = src)) if(!src || !WT.remove_fuel(0, user)) return user << "You deconstruct the frame." new /obj/item/stack/sheet/plasteel( loc, 4) @@ -36,7 +36,7 @@ if(istype(P, /obj/item/weapon/wrench)) playsound(loc, 'sound/items/Ratchet.ogg', 50, 1) user << "You start to unfasten the frame..." - if(do_after(user, 20)) + if(do_after(user, 20, target = src)) user << "You unfasten the frame." anchored = 0 state = 0 @@ -71,7 +71,7 @@ if(C.get_amount() >= 5) playsound(loc, 'sound/items/Deconstruct.ogg', 50, 1) user << "You start to add cables to the frame..." - if(do_after(user, 20)) + if(do_after(user, 20, target = src)) if (C.get_amount() >= 5 && state == 2) C.use(5) user << "You add cables to the frame." @@ -97,7 +97,7 @@ if(G.get_amount() >= 2) playsound(loc, 'sound/items/Deconstruct.ogg', 50, 1) user << "You start to put in the glass panel..." - if(do_after(user, 20)) + if(do_after(user, 20, target = src)) if (G.get_amount() >= 2 && state == 3) G.use(2) user << "You put in the glass panel." @@ -149,6 +149,10 @@ user << "This MMI does not seem to fit!" return + if(M.syndiemmi) + user << "This MMI does not seem to fit!" + return + if(!M.brainmob.mind) user << "This MMI is mindless!" return @@ -209,11 +213,11 @@ "You start to [anchored ? "fasten [src] to" : "unfasten [src] from"] the floor...") switch(anchored) if(0) - if(do_after(user, 20)) + if(do_after(user, 20, target = src)) user << "You fasten the core into place." anchored = 1 if(1) - if(do_after(user, 20)) + if(do_after(user, 20, target = src)) user << "You unfasten the core." anchored = 0 return @@ -246,4 +250,4 @@ atom/proc/transfer_ai(var/interaction, var/mob/user, var/mob/living/silicon/ai/A user << "Transfer successful: [AI.name] ([rand(1000,9999)].exe) installed and executed successfully. Local copy has been removed." qdel(src) else //If for some reason you use an empty card on an empty AI terminal. - user << "There is no AI loaded on this terminal!" \ No newline at end of file + user << "There is no AI loaded on this terminal!" diff --git a/code/game/objects/structures/artstuff.dm b/code/game/objects/structures/artstuff.dm index 495c7b9c394..ae56de30fb6 100644 --- a/code/game/objects/structures/artstuff.dm +++ b/code/game/objects/structures/artstuff.dm @@ -9,6 +9,8 @@ icon = 'icons/obj/artstuff.dmi' icon_state = "easel" density = 1 + burn_state = 0 //Burnable + burntime = 15 var/obj/item/weapon/canvas/painting = null @@ -50,6 +52,7 @@ var/global/list/globalBlankCanvases[AMT_OF_CANVASES] desc = "draw out your soul on this canvas!" icon = 'icons/obj/artstuff.dmi' icon_state = "11x11" + burn_state = 0 //Burnable var/whichGlobalBackup = 1 //List index /obj/item/weapon/canvas/nineteenXnineteen diff --git a/code/game/objects/structures/bedsheet_bin.dm b/code/game/objects/structures/bedsheet_bin.dm index 073ae4e2e53..c27a4f0513e 100644 --- a/code/game/objects/structures/bedsheet_bin.dm +++ b/code/game/objects/structures/bedsheet_bin.dm @@ -17,6 +17,7 @@ LINEN BINS throw_range = 2 w_class = 1.0 item_color = "white" + burn_state = 0 //Burnable /obj/item/weapon/bedsheet/attack(mob/living/M, mob/user) @@ -170,6 +171,8 @@ LINEN BINS icon = 'icons/obj/structures.dmi' icon_state = "linenbin-full" anchored = 1 + burn_state = 0 //Burnable + burntime = 20 var/amount = 10 var/list/sheets = list() var/obj/item/hidden = null @@ -191,6 +194,16 @@ LINEN BINS if(1 to 5) icon_state = "linenbin-half" else icon_state = "linenbin-full" +/obj/structure/bedsheetbin/fire_act() + if(!amount) + return + ..() + +/obj/structure/bedsheetbin/burn() + amount = 0 + extinguish() + update_icon() + return /obj/structure/bedsheetbin/attackby(obj/item/I as obj, mob/user as mob, params) if(istype(I, /obj/item/weapon/bedsheet)) diff --git a/code/game/objects/structures/crates_lockers/bins.dm b/code/game/objects/structures/crates_lockers/bins.dm index bbcec247b70..1663e45c8bd 100644 --- a/code/game/objects/structures/crates_lockers/bins.dm +++ b/code/game/objects/structures/crates_lockers/bins.dm @@ -50,7 +50,7 @@ user.visible_message("[user] tries to stuff [O] into [src].", \ "You try to stuff [O] into [src].", \ "You hear clanging.") - if (!do_after(user, 40)) + if (!do_after(user, 40, target = src)) return if(!..(O, user, 0, 0)) return diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index 43b887493ca..08ea4e09edd 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -206,7 +206,7 @@ if(WT.remove_fuel(0,user)) user << "You begin cutting \the [src] apart..." playsound(loc, 'sound/items/Welder.ogg', 40, 1) - if(do_after(user,40,5,1)) + if(do_after(user,40,5,1, target = src)) if( !opened || !istype(src, /obj/structure/closet) || !user || !WT || !WT.isOn() || !user.loc ) return playsound(loc, 'sound/items/Welder2.ogg', 50, 1) @@ -226,7 +226,7 @@ if(WT.remove_fuel(0,user)) user << "You begin [welded ? "unwelding":"welding"] \the [src]..." playsound(loc, 'sound/items/Welder2.ogg', 40, 1) - if(do_after(user,40,5,1)) + if(do_after(user,40,5,1, target = src)) if(opened || !istype(src, /obj/structure/closet) || !user || !WT || !WT.isOn() || !user.loc ) return playsound(loc, 'sound/items/welder.ogg', 50, 1) @@ -332,7 +332,7 @@ user << "You lean on the back of [src] and start pushing the door open. (this will take about [breakout_time] minutes.)" for(var/mob/O in viewers(src)) O << "[src] begins to shake violently!" - if(do_after(user,(breakout_time*60*10))) //minutes * 60seconds * 10deciseconds + if(do_after(user,(breakout_time*60*10), target = src)) //minutes * 60seconds * 10deciseconds if(!user || user.stat != CONSCIOUS || user.loc != src || opened || (!locked && !welded && !istype(loc, /obj/mecha)) ) return //we check after a while whether there is a point of resisting anymore and whether the user is capable of resisting diff --git a/code/game/objects/structures/crates_lockers/closets/gimmick.dm b/code/game/objects/structures/crates_lockers/closets/gimmick.dm index 1cabfc03243..a0d01834972 100644 --- a/code/game/objects/structures/crates_lockers/closets/gimmick.dm +++ b/code/game/objects/structures/crates_lockers/closets/gimmick.dm @@ -2,6 +2,8 @@ name = "cabinet" desc = "Old will forever be in fashion." icon_state = "cabinet" + burn_state = 0 //Burnable + burntime = 20 /obj/structure/closet/acloset name = "strange closet" diff --git a/code/game/objects/structures/crates_lockers/closets/job_closets.dm b/code/game/objects/structures/crates_lockers/closets/job_closets.dm index 9ac55af828a..1d37c9d78ed 100644 --- a/code/game/objects/structures/crates_lockers/closets/job_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/job_closets.dm @@ -1,14 +1,5 @@ -/* Closets for specific jobs - * Contains: - * Bartender - * Janitor - * Lawyer - * Coffin - */ +// Closets for specific jobs -/* - * Bartender - */ /obj/structure/closet/gmcloset name = "formal closet" desc = "It's a storage unit for formal clothing." @@ -31,9 +22,6 @@ new /obj/item/clothing/shoes/sneakers/black(src) new /obj/item/clothing/shoes/sneakers/black(src) -/* - * Chef - */ /obj/structure/closet/chefcloset name = "\proper chef's closet" desc = "It's a storage unit for foodservice garments and mouse traps." @@ -58,9 +46,6 @@ new /obj/item/clothing/under/rank/chef(src) new /obj/item/clothing/head/chefhat(src) -/* - * Janitor - */ /obj/structure/closet/jcloset name = "custodial closet" desc = "It's a storage unit for janitorial clothes and gear." @@ -83,9 +68,7 @@ new /obj/item/weapon/watertank/janitor(src) new /obj/item/weapon/storage/belt/janitor(src) -/* - * Lawyer - */ + /obj/structure/closet/lawcloset name = "legal closet" desc = "It's a storage unit for courtroom apparel and items." @@ -105,7 +88,296 @@ new /obj/item/clothing/shoes/laceup(src) new /obj/item/clothing/shoes/laceup(src) +/obj/structure/closet/wardrobe/chaplain_black + name = "chapel wardrobe" + desc = "It's a storage unit for Nanotrasen-approved religious attire." + icon_door = "black" + +/obj/structure/closet/wardrobe/chaplain_black/New() + ..() + contents = list() + new /obj/item/clothing/under/rank/chaplain(src) + new /obj/item/clothing/shoes/sneakers/black(src) + new /obj/item/clothing/suit/nun(src) + new /obj/item/clothing/head/nun_hood(src) + new /obj/item/clothing/suit/hooded/chaplain_hoodie(src) + new /obj/item/clothing/suit/holidaypriest(src) + new /obj/item/weapon/storage/backpack/cultpack (src) + new /obj/item/weapon/storage/fancy/candle_box(src) + new /obj/item/weapon/storage/fancy/candle_box(src) + return + /obj/structure/closet/coffin name = "coffin" desc = "It's a burial receptacle for the dearly departed." - icon_state = "coffin" \ No newline at end of file + icon_state = "coffin" + burn_state = 0 //Burnable + burntime = 20 + +/obj/structure/closet/wardrobe/red + name = "security wardrobe" + icon_door = "red" + +/obj/structure/closet/wardrobe/red/New() + ..() + contents = list() + new /obj/item/clothing/suit/hooded/wintercoat/security(src) + new /obj/item/weapon/storage/backpack/security(src) + new /obj/item/weapon/storage/backpack/satchel_sec(src) + new /obj/item/weapon/storage/backpack/dufflebag/sec(src) + new /obj/item/weapon/storage/backpack/dufflebag/sec(src) + new /obj/item/clothing/under/rank/security(src) + new /obj/item/clothing/under/rank/security(src) + new /obj/item/clothing/under/rank/security(src) + new /obj/item/clothing/shoes/jackboots(src) + new /obj/item/clothing/shoes/jackboots(src) + new /obj/item/clothing/shoes/jackboots(src) + new /obj/item/clothing/head/beret/sec(src) + new /obj/item/clothing/head/beret/sec(src) + new /obj/item/clothing/head/beret/sec(src) + new /obj/item/clothing/head/soft/sec(src) + new /obj/item/clothing/head/soft/sec(src) + new /obj/item/clothing/head/soft/sec(src) + new /obj/item/clothing/mask/bandana/red(src) + new /obj/item/clothing/mask/bandana/red(src) + return + + +/obj/structure/closet/wardrobe/cargotech + name = "cargo wardrobe" + icon_door = "orange" + +/obj/structure/closet/wardrobe/cargotech/New() + ..() + contents = list() + new /obj/item/clothing/suit/hooded/wintercoat/cargo(src) + new /obj/item/clothing/under/rank/cargotech(src) + new /obj/item/clothing/under/rank/cargotech(src) + new /obj/item/clothing/under/rank/cargotech(src) + new /obj/item/clothing/shoes/sneakers/black(src) + new /obj/item/clothing/shoes/sneakers/black(src) + new /obj/item/clothing/shoes/sneakers/black(src) + new /obj/item/clothing/gloves/fingerless(src) + new /obj/item/clothing/gloves/fingerless(src) + new /obj/item/clothing/gloves/fingerless(src) + new /obj/item/clothing/head/soft(src) + new /obj/item/clothing/head/soft(src) + new /obj/item/clothing/head/soft(src) + new /obj/item/device/radio/headset/headset_cargo(src) + +/obj/structure/closet/wardrobe/atmospherics_yellow + name = "atmospherics wardrobe" + icon_door = "atmos_wardrobe" + +/obj/structure/closet/wardrobe/atmospherics_yellow/New() + ..() + contents = list() + new /obj/item/weapon/storage/backpack/dufflebag(src) + new /obj/item/weapon/storage/backpack/satchel_norm(src) + new /obj/item/weapon/storage/backpack(src) + new /obj/item/clothing/suit/hooded/wintercoat/engineering/atmos(src) + new /obj/item/clothing/suit/hooded/wintercoat/engineering/atmos(src) + new /obj/item/clothing/suit/hooded/wintercoat/engineering/atmos(src) + new /obj/item/clothing/under/rank/atmospheric_technician(src) + new /obj/item/clothing/under/rank/atmospheric_technician(src) + new /obj/item/clothing/under/rank/atmospheric_technician(src) + new /obj/item/clothing/shoes/sneakers/black(src) + new /obj/item/clothing/shoes/sneakers/black(src) + new /obj/item/clothing/shoes/sneakers/black(src) + new /obj/item/clothing/head/hardhat/atmos(src) + new /obj/item/clothing/head/hardhat/atmos(src) + new /obj/item/clothing/head/hardhat/atmos(src) + return + +/obj/structure/closet/wardrobe/engineering_yellow + name = "engineering wardrobe" + icon_door = "yellow" + +/obj/structure/closet/wardrobe/engineering_yellow/New() + ..() + contents = list() + new /obj/item/weapon/storage/backpack/dufflebag/engineering(src) + new /obj/item/weapon/storage/backpack/industrial(src) + new /obj/item/weapon/storage/backpack/satchel_eng(src) + new /obj/item/clothing/suit/hooded/wintercoat/engineering(src) + new /obj/item/clothing/under/rank/engineer(src) + new /obj/item/clothing/under/rank/engineer(src) + new /obj/item/clothing/under/rank/engineer(src) + new /obj/item/clothing/suit/hazardvest(src) + new /obj/item/clothing/suit/hazardvest(src) + new /obj/item/clothing/suit/hazardvest(src) + new /obj/item/clothing/shoes/workboots(src) + new /obj/item/clothing/shoes/workboots(src) + new /obj/item/clothing/shoes/workboots(src) + new /obj/item/clothing/head/hardhat(src) + new /obj/item/clothing/head/hardhat(src) + new /obj/item/clothing/head/hardhat(src) + return + +/obj/structure/closet/wardrobe/white/medical + name = "medical doctor's wardrobe" + +/obj/structure/closet/wardrobe/white/medical/New() + ..() + contents = list() + new /obj/item/weapon/storage/backpack/dufflebag/med(src) + new /obj/item/weapon/storage/backpack/medic(src) + new /obj/item/weapon/storage/backpack/satchel_med(src) + new /obj/item/clothing/suit/hooded/wintercoat/medical(src) + new /obj/item/clothing/under/rank/nursesuit (src) + new /obj/item/clothing/head/nursehat (src) + new /obj/item/clothing/under/rank/medical/blue(src) + new /obj/item/clothing/under/rank/medical/green(src) + new /obj/item/clothing/under/rank/medical/purple(src) + new /obj/item/clothing/under/rank/medical(src) + new /obj/item/clothing/under/rank/medical(src) + new /obj/item/clothing/under/rank/medical(src) + new /obj/item/clothing/suit/toggle/labcoat(src) + new /obj/item/clothing/suit/toggle/labcoat(src) + new /obj/item/clothing/suit/toggle/labcoat/emt(src) + new /obj/item/clothing/suit/toggle/labcoat/emt(src) + new /obj/item/clothing/shoes/sneakers/white(src) + new /obj/item/clothing/shoes/sneakers/white(src) + new /obj/item/clothing/shoes/sneakers/white(src) + new /obj/item/clothing/head/soft/emt(src) + new /obj/item/clothing/head/soft/emt(src) + new /obj/item/clothing/head/soft/emt(src) + return + +/obj/structure/closet/wardrobe/robotics_black + name = "robotics wardrobe" + icon_door = "black" + +/obj/structure/closet/wardrobe/robotics_black/New() + ..() + contents = list() + new /obj/item/clothing/under/rank/roboticist(src) + new /obj/item/clothing/under/rank/roboticist(src) + new /obj/item/clothing/suit/toggle/labcoat(src) + new /obj/item/clothing/suit/toggle/labcoat(src) + new /obj/item/clothing/shoes/sneakers/black(src) + new /obj/item/clothing/shoes/sneakers/black(src) + new /obj/item/clothing/gloves/fingerless(src) + new /obj/item/clothing/gloves/fingerless(src) + new /obj/item/clothing/head/soft/black(src) + new /obj/item/clothing/head/soft/black(src) + if(prob(40)) + new /obj/item/clothing/mask/bandana/skull(src) + if(prob(40)) + new /obj/item/clothing/mask/bandana/skull(src) + return + + +/obj/structure/closet/wardrobe/chemistry_white + name = "chemistry wardrobe" + icon_door = "white" + +/obj/structure/closet/wardrobe/chemistry_white/New() + ..() + contents = list() + new /obj/item/clothing/under/rank/chemist(src) + new /obj/item/clothing/under/rank/chemist(src) + new /obj/item/clothing/shoes/sneakers/white(src) + new /obj/item/clothing/shoes/sneakers/white(src) + new /obj/item/clothing/suit/toggle/labcoat/chemist(src) + new /obj/item/clothing/suit/toggle/labcoat/chemist(src) + new /obj/item/weapon/storage/backpack/chemistry(src) + new /obj/item/weapon/storage/backpack/chemistry(src) + new /obj/item/weapon/storage/backpack/satchel_chem(src) + new /obj/item/weapon/storage/backpack/satchel_chem(src) + new /obj/item/weapon/storage/bag/chemistry(src) + new /obj/item/weapon/storage/bag/chemistry(src) + return + + +/obj/structure/closet/wardrobe/genetics_white + name = "genetics wardrobe" + icon_door = "white" + +/obj/structure/closet/wardrobe/genetics_white/New() + ..() + contents = list() + new /obj/item/clothing/under/rank/geneticist(src) + new /obj/item/clothing/under/rank/geneticist(src) + new /obj/item/clothing/shoes/sneakers/white(src) + new /obj/item/clothing/shoes/sneakers/white(src) + new /obj/item/clothing/suit/toggle/labcoat/genetics(src) + new /obj/item/clothing/suit/toggle/labcoat/genetics(src) + new /obj/item/weapon/storage/backpack/genetics(src) + new /obj/item/weapon/storage/backpack/genetics(src) + new /obj/item/weapon/storage/backpack/satchel_gen(src) + new /obj/item/weapon/storage/backpack/satchel_gen(src) + return + + +/obj/structure/closet/wardrobe/virology_white + name = "virology wardrobe" + icon_door = "white" + +/obj/structure/closet/wardrobe/virology_white/New() + ..() + contents = list() + new /obj/item/clothing/under/rank/virologist(src) + new /obj/item/clothing/under/rank/virologist(src) + new /obj/item/clothing/shoes/sneakers/white(src) + new /obj/item/clothing/shoes/sneakers/white(src) + new /obj/item/clothing/suit/toggle/labcoat/virologist(src) + new /obj/item/clothing/suit/toggle/labcoat/virologist(src) + new /obj/item/clothing/mask/surgical(src) + new /obj/item/clothing/mask/surgical(src) + new /obj/item/weapon/storage/backpack/virology(src) + new /obj/item/weapon/storage/backpack/virology(src) + new /obj/item/weapon/storage/backpack/satchel_vir(src) + new /obj/item/weapon/storage/backpack/satchel_vir(src) + return + +/obj/structure/closet/wardrobe/science_white + name = "science wardrobe" + icon_door = "white" + +/obj/structure/closet/wardrobe/science_white/New() + ..() + contents = list() + new /obj/item/weapon/storage/backpack/science(src) + new /obj/item/weapon/storage/backpack/science(src) + new /obj/item/weapon/storage/backpack/satchel_tox(src) + new /obj/item/weapon/storage/backpack/satchel_tox(src) + new /obj/item/clothing/suit/hooded/wintercoat/science(src) + new /obj/item/clothing/under/rank/scientist(src) + new /obj/item/clothing/under/rank/scientist(src) + new /obj/item/clothing/under/rank/scientist(src) + new /obj/item/clothing/suit/toggle/labcoat/science(src) + new /obj/item/clothing/suit/toggle/labcoat/science(src) + new /obj/item/clothing/suit/toggle/labcoat/science(src) + new /obj/item/clothing/shoes/sneakers/white(src) + new /obj/item/clothing/shoes/sneakers/white(src) + new /obj/item/clothing/shoes/sneakers/white(src) + new /obj/item/device/radio/headset/headset_sci(src) + new /obj/item/device/radio/headset/headset_sci(src) + new /obj/item/clothing/mask/gas(src) + new /obj/item/clothing/mask/gas(src) + new /obj/item/clothing/mask/gas(src) + return + +/obj/structure/closet/wardrobe/botanist + name = "botanist wardrobe" + icon_door = "green" + +/obj/structure/closet/wardrobe/botanist/New() + ..() + contents = list() + new /obj/item/weapon/storage/backpack/botany(src) + new /obj/item/weapon/storage/backpack/botany(src) + new /obj/item/weapon/storage/backpack/satchel_hyd(src) + new /obj/item/weapon/storage/backpack/satchel_hyd(src) + new /obj/item/clothing/suit/hooded/wintercoat/hydro(src) + new /obj/item/clothing/suit/apron(src) + new /obj/item/clothing/suit/apron(src) + new /obj/item/clothing/suit/apron/overalls(src) + new /obj/item/clothing/suit/apron/overalls(src) + new /obj/item/clothing/under/rank/hydroponics(src) + new /obj/item/clothing/under/rank/hydroponics(src) + new /obj/item/clothing/under/rank/hydroponics(src) + new /obj/item/clothing/mask/bandana(src) + new /obj/item/clothing/mask/bandana(src) + new /obj/item/clothing/mask/bandana(src) \ No newline at end of file diff --git a/code/game/objects/structures/crates_lockers/closets/secure/bar.dm b/code/game/objects/structures/crates_lockers/closets/secure/bar.dm index e5d818ca19f..e7c46ced1ce 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/bar.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/bar.dm @@ -2,6 +2,8 @@ name = "booze storage" req_access = list(access_bar) icon_state = "cabinet" + burn_state = 0 //Burnable + burntime = 20 /obj/structure/closet/secure_closet/bar/New() ..() diff --git a/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm b/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm index 8d4bcdf25b9..7629a8a0a5a 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm @@ -1,16 +1,3 @@ -/obj/structure/closet/secure_closet/cargotech - name = "cargo technician's locker" - req_access = list(access_cargo) - icon_state = "cargo" - -/obj/structure/closet/secure_closet/cargotech/New() - ..() - new /obj/item/clothing/under/rank/cargotech(src) - new /obj/item/clothing/shoes/sneakers/black(src) - new /obj/item/device/radio/headset/headset_cargo(src) - new /obj/item/clothing/gloves/fingerless(src) - new /obj/item/clothing/head/soft(src) - /obj/structure/closet/secure_closet/quartermaster name = "\proper quartermaster's locker" req_access = list(access_qm) @@ -19,7 +6,6 @@ /obj/structure/closet/secure_closet/quartermaster/New() ..() new /obj/item/clothing/cloak/qm(src) - new /obj/item/clothing/suit/hooded/wintercoat/cargo(src) new /obj/item/clothing/under/rank/cargo(src) new /obj/item/clothing/shoes/sneakers/brown(src) new /obj/item/device/radio/headset/headset_cargo(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm index 5b50e1ba885..eb91fb553eb 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm @@ -5,14 +5,7 @@ /obj/structure/closet/secure_closet/engineering_chief/New() ..() - new /obj/item/clothing/suit/hooded/wintercoat/engineering(src) - new /obj/item/clothing/suit/hooded/wintercoat/engineering/atmos(src) - if(prob(50)) - new /obj/item/weapon/storage/backpack/industrial(src) - else - new /obj/item/weapon/storage/backpack/satchel_eng(src) new /obj/item/clothing/cloak/ce(src) - new /obj/item/weapon/storage/backpack/dufflebag/engineering(src) new /obj/item/clothing/under/rank/chief_engineer(src) new /obj/item/clothing/head/hardhat/white(src) new /obj/item/clothing/head/welding(src) @@ -73,21 +66,14 @@ /obj/structure/closet/secure_closet/engineering_personal/New() ..() - if(prob(50)) - new /obj/item/weapon/storage/backpack/industrial(src) - else - new /obj/item/weapon/storage/backpack/satchel_eng(src) - new /obj/item/weapon/storage/backpack/dufflebag/engineering(src) - new /obj/item/clothing/under/rank/engineer(src) - new /obj/item/clothing/shoes/workboots(src) -// new /obj/item/weapon/cartridge/engineering(src) new /obj/item/device/radio/headset/headset_eng(src) - new /obj/item/clothing/suit/hazardvest(src) new /obj/item/weapon/storage/toolbox/mechanical(src) + new /obj/item/weapon/tank/internals/emergency_oxygen/engi(src) new /obj/item/tapeproj/engineering(src) new /obj/item/clothing/mask/gas(src) new /obj/item/clothing/glasses/meson/engine(src) + /obj/structure/closet/secure_closet/atmospherics name = "\proper atmospheric technician's locker" req_access = list(access_atmospherics) @@ -98,10 +84,8 @@ new /obj/item/device/radio/headset/headset_eng(src) new /obj/item/weapon/pipe_dispenser(src) new /obj/item/weapon/storage/toolbox/mechanical(src) - new /obj/item/weapon/storage/backpack/satchel_norm(src) - new /obj/item/weapon/storage/backpack/dufflebag/engineering(src) new /obj/item/weapon/tank/internals/emergency_oxygen/engi(src) + new /obj/item/device/analyzer(src) new /obj/item/tapeproj/engineering(src) new /obj/item/weapon/watertank/atmos(src) - new /obj/item/clothing/suit/fire/atmos(src) - new /obj/item/clothing/head/hardhat/atmos(src) \ No newline at end of file + new /obj/item/clothing/suit/fire/atmos(src) \ No newline at end of file diff --git a/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm b/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm index 0a137e0497e..a9f1fe8adb7 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm @@ -5,20 +5,8 @@ /obj/structure/closet/secure_closet/hydroponics/New() ..() - new /obj/item/clothing/suit/hooded/wintercoat/hydro(src) - switch(rand(1,2)) - if(1) - new /obj/item/clothing/suit/apron(src) - if(2) - new /obj/item/clothing/suit/apron/overalls(src) new /obj/item/weapon/storage/bag/plants/portaseeder(src) - new /obj/item/clothing/under/rank/hydroponics(src) new /obj/item/device/analyzer/plant_analyzer(src) new /obj/item/device/radio/headset/headset_srv(src) - new /obj/item/clothing/mask/bandana(src) new /obj/item/weapon/cultivator(src) - new /obj/item/weapon/hatchet(src) - new /obj/item/weapon/storage/backpack/botany(src) - new /obj/item/weapon/storage/backpack/botany(src) - new /obj/item/weapon/storage/backpack/satchel_hyd(src) - new /obj/item/weapon/storage/backpack/satchel_hyd(src) \ No newline at end of file + new /obj/item/weapon/hatchet(src) \ No newline at end of file diff --git a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm index 960f31e3d99..0203442b693 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm @@ -44,14 +44,6 @@ /obj/structure/closet/secure_closet/medical3/New() ..() - if(prob(50)) - new /obj/item/weapon/storage/backpack/medic(src) - else - new /obj/item/weapon/storage/backpack/satchel_med(src) - new /obj/item/weapon/storage/backpack/dufflebag/med(src) - new /obj/item/clothing/under/rank/medical(src) - new /obj/item/clothing/suit/toggle/labcoat(src) - new /obj/item/clothing/shoes/sneakers/white(src) new /obj/item/device/radio/headset/headset_med(src) new /obj/item/weapon/defibrillator/loaded(src) new /obj/item/clothing/gloves/color/latex/nitrile(src) @@ -66,11 +58,6 @@ /obj/structure/closet/secure_closet/CMO/New() ..() - new /obj/item/clothing/suit/hooded/wintercoat/medical(src) - if(prob(50)) - new /obj/item/weapon/storage/backpack/medic(src) - else - new /obj/item/weapon/storage/backpack/satchel_med(src) new /obj/item/clothing/cloak/cmo(src) new /obj/item/weapon/storage/backpack/dufflebag/med(src) new /obj/item/clothing/suit/bio_suit/cmo(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/personal.dm b/code/game/objects/structures/crates_lockers/closets/secure/personal.dm index d3dac41e27d..908c05c33d8 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/personal.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/personal.dm @@ -25,6 +25,8 @@ /obj/structure/closet/secure_closet/personal/cabinet icon_state = "cabinet" + burn_state = 0 //Burnable + burntime = 20 /obj/structure/closet/secure_closet/personal/cabinet/New() ..() diff --git a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm index d71768caea0..b5bd0b7df19 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm @@ -1,22 +1,3 @@ -/obj/structure/closet/secure_closet/scientist - name = "scientist's locker" - req_access = list(access_tox_storage) - icon_state = "science" - -/obj/structure/closet/secure_closet/scientist/New() - ..() - new /obj/item/clothing/under/rank/scientist(src) - new /obj/item/clothing/suit/toggle/labcoat/science(src) - new /obj/item/clothing/shoes/sneakers/white(src) -// new /obj/item/weapon/cartridge/signal/toxins(src) - new /obj/item/device/radio/headset/headset_sci(src) - new /obj/item/weapon/tank/internals/air(src) - new /obj/item/clothing/mask/gas(src) - new /obj/item/weapon/storage/backpack/science(src) - new /obj/item/weapon/storage/backpack/science(src) - new /obj/item/weapon/storage/backpack/satchel_tox(src) - new /obj/item/weapon/storage/backpack/satchel_tox(src) - /obj/structure/closet/secure_closet/RD name = "\proper research director's locker" req_access = list(access_rd) @@ -25,15 +6,14 @@ /obj/structure/closet/secure_closet/RD/New() ..() new /obj/item/clothing/cloak/rd(src) - new /obj/item/clothing/suit/hooded/wintercoat/science(src) new /obj/item/clothing/suit/bio_suit/scientist(src) new /obj/item/clothing/head/bio_hood/scientist(src) new /obj/item/clothing/suit/toggle/labcoat(src) new /obj/item/clothing/under/rank/research_director(src) new /obj/item/clothing/under/rank/research_director/alt(src) new /obj/item/clothing/under/rank/research_director/turtleneck(src) + new /obj/item/clothing/shoes/sneakers/brown(src) new /obj/item/weapon/cartridge/rd(src) - new /obj/item/clothing/shoes/sneakers/white(src) new /obj/item/clothing/gloves/color/latex(src) new /obj/item/device/radio/headset/heads/rd(src) new /obj/item/weapon/tank/internals/air(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index 63074fe5145..a75437ec952 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -31,7 +31,6 @@ /obj/structure/closet/secure_closet/hop/New() ..() - new /obj/item/clothing/suit/hooded/wintercoat/cargo(src) new /obj/item/clothing/under/rank/head_of_personnel(src) new /obj/item/clothing/head/hopcap(src) new /obj/item/weapon/cartridge/hop(src) @@ -55,7 +54,6 @@ /obj/structure/closet/secure_closet/hos/New() ..() new /obj/item/clothing/cloak/hos(src) - new /obj/item/clothing/suit/hooded/wintercoat/security(src) new /obj/item/weapon/cartridge/hos(src) new /obj/item/device/radio/headset/heads/hos(src) new /obj/item/clothing/under/hosparadefem(src) @@ -84,7 +82,7 @@ /obj/structure/closet/secure_closet/warden/New() ..() new /obj/item/device/radio/headset/headset_sec(src) - new /obj/item/clothing/suit/armor/vest/warden/(src) + new /obj/item/clothing/suit/armor/vest/warden(src) new /obj/item/clothing/head/warden(src) new /obj/item/clothing/head/beret/sec/navywarden(src) new /obj/item/clothing/suit/armor/vest/warden/alt(src) @@ -109,8 +107,6 @@ new /obj/item/clothing/suit/armor/vest(src) new /obj/item/device/radio/headset/headset_sec(src) new /obj/item/device/radio/headset/headset_sec/alt(src) - new /obj/item/clothing/head/beret/sec(src) - new /obj/item/clothing/head/soft/sec(src) new /obj/item/weapon/reagent_containers/spray/pepper(src) new /obj/item/device/flash/handheld(src) new /obj/item/weapon/grenade/flashbang(src) @@ -155,6 +151,8 @@ name = "\proper detective's cabinet" req_access = list(access_forensics_lockers) icon_state = "cabinet" + burn_state = 0 //Burnable + burntime = 20 /obj/structure/closet/secure_closet/detective/New() ..() diff --git a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm index 5bc3a306e50..68c5a8c32d7 100644 --- a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm +++ b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm @@ -13,34 +13,6 @@ new /obj/item/clothing/shoes/sneakers/brown(src) return - -/obj/structure/closet/wardrobe/red - name = "security wardrobe" - icon_door = "red" - -/obj/structure/closet/wardrobe/red/New() - ..() - contents = list() - new /obj/item/weapon/storage/backpack/security(src) - new /obj/item/weapon/storage/backpack/satchel_sec(src) - new /obj/item/weapon/storage/backpack/dufflebag/sec(src) - new /obj/item/weapon/storage/backpack/dufflebag/sec(src) - new /obj/item/clothing/under/rank/security(src) - new /obj/item/clothing/under/rank/security(src) - new /obj/item/clothing/under/rank/security(src) - new /obj/item/clothing/shoes/jackboots(src) - new /obj/item/clothing/shoes/jackboots(src) - new /obj/item/clothing/shoes/jackboots(src) - new /obj/item/clothing/head/beret/sec(src) - new /obj/item/clothing/head/beret/sec(src) - new /obj/item/clothing/head/beret/sec(src) - new /obj/item/clothing/head/soft/sec(src) - new /obj/item/clothing/head/soft/sec(src) - new /obj/item/clothing/head/soft/sec(src) - new /obj/item/clothing/mask/bandana/red(src) - new /obj/item/clothing/mask/bandana/red(src) - return - /obj/structure/closet/wardrobe/pink name = "pink wardrobe" icon_door = "pink" @@ -68,7 +40,7 @@ new /obj/item/clothing/under/color/black(src) if(prob(25)) new /obj/item/clothing/suit/jacket/leather(src) - if(prob(25)) + if(prob(20)) new /obj/item/clothing/suit/jacket/leather/overcoat(src) new /obj/item/clothing/shoes/sneakers/black(src) new /obj/item/clothing/shoes/sneakers/black(src) @@ -86,26 +58,6 @@ return -/obj/structure/closet/wardrobe/chaplain_black - name = "chapel wardrobe" - desc = "It's a storage unit for Nanotrasen-approved religious attire." - icon_door = "black" - -/obj/structure/closet/wardrobe/chaplain_black/New() - ..() - contents = list() - new /obj/item/clothing/under/rank/chaplain(src) - new /obj/item/clothing/shoes/sneakers/black(src) - new /obj/item/clothing/suit/nun(src) - new /obj/item/clothing/head/nun_hood(src) - new /obj/item/clothing/suit/hooded/chaplain_hoodie(src) - new /obj/item/clothing/suit/holidaypriest(src) - new /obj/item/weapon/storage/backpack/cultpack (src) - new /obj/item/weapon/storage/fancy/candle_box(src) - new /obj/item/weapon/storage/fancy/candle_box(src) - return - - /obj/structure/closet/wardrobe/green name = "green wardrobe" icon_door = "green" @@ -159,42 +111,6 @@ return -/obj/structure/closet/wardrobe/atmospherics_yellow - name = "atmospherics wardrobe" - icon_door = "atmos_wardrobe" - -/obj/structure/closet/wardrobe/atmospherics_yellow/New() - ..() - contents = list() - new /obj/item/clothing/under/rank/atmospheric_technician(src) - new /obj/item/clothing/under/rank/atmospheric_technician(src) - new /obj/item/clothing/under/rank/atmospheric_technician(src) - new /obj/item/device/analyzer(src) - new /obj/item/device/analyzer(src) - new /obj/item/device/analyzer(src) - new /obj/item/clothing/shoes/sneakers/black(src) - new /obj/item/clothing/shoes/sneakers/black(src) - new /obj/item/clothing/shoes/sneakers/black(src) - return - - - -/obj/structure/closet/wardrobe/engineering_yellow - name = "engineering wardrobe" - icon_door = "yellow" - -/obj/structure/closet/wardrobe/engineering_yellow/New() - ..() - contents = list() - new /obj/item/clothing/under/rank/engineer(src) - new /obj/item/clothing/under/rank/engineer(src) - new /obj/item/clothing/under/rank/engineer(src) - new /obj/item/clothing/shoes/sneakers/orange(src) - new /obj/item/clothing/shoes/sneakers/orange(src) - new /obj/item/clothing/shoes/sneakers/orange(src) - return - - /obj/structure/closet/wardrobe/white name = "white wardrobe" icon_door = "white" @@ -213,28 +129,6 @@ new /obj/item/clothing/head/soft/mime(src) return -/obj/structure/closet/wardrobe/white/medical - name = "medical doctor's wardrobe" - -/obj/structure/closet/wardrobe/white/medical/New() - ..() - contents = list() - new /obj/item/clothing/under/rank/nursesuit (src) - new /obj/item/clothing/head/nursehat (src) - new /obj/item/clothing/under/rank/medical/blue(src) - new /obj/item/clothing/under/rank/medical/green(src) - new /obj/item/clothing/under/rank/medical/purple(src) - new /obj/item/clothing/suit/toggle/labcoat/emt(src) - new /obj/item/clothing/suit/toggle/labcoat/emt(src) - new /obj/item/clothing/suit/toggle/labcoat/emt(src) - new /obj/item/clothing/shoes/sneakers/black(src) - new /obj/item/clothing/shoes/sneakers/black(src) - new /obj/item/clothing/shoes/sneakers/black(src) - new /obj/item/clothing/head/soft/emt(src) - new /obj/item/clothing/head/soft/emt(src) - new /obj/item/clothing/head/soft/emt(src) - return - /obj/structure/closet/wardrobe/pjs name = "pajama wardrobe" icon_door = "white" @@ -253,113 +147,6 @@ return -/obj/structure/closet/wardrobe/toxins_white - name = "toxins wardrobe" - icon_door = "white" - -/obj/structure/closet/wardrobe/toxins_white/New() - ..() - contents = list() - new /obj/item/clothing/under/rank/scientist(src) - new /obj/item/clothing/under/rank/scientist(src) - new /obj/item/clothing/under/rank/scientist(src) - new /obj/item/clothing/suit/toggle/labcoat(src) - new /obj/item/clothing/suit/toggle/labcoat(src) - new /obj/item/clothing/suit/toggle/labcoat(src) - new /obj/item/clothing/shoes/sneakers/white(src) - new /obj/item/clothing/shoes/sneakers/white(src) - new /obj/item/clothing/shoes/sneakers/white(src) - return - - -/obj/structure/closet/wardrobe/robotics_black - name = "robotics wardrobe" - icon_door = "black" - -/obj/structure/closet/wardrobe/robotics_black/New() - ..() - contents = list() - new /obj/item/clothing/under/rank/roboticist(src) - new /obj/item/clothing/under/rank/roboticist(src) - new /obj/item/clothing/suit/toggle/labcoat(src) - new /obj/item/clothing/suit/toggle/labcoat(src) - new /obj/item/clothing/shoes/sneakers/black(src) - new /obj/item/clothing/shoes/sneakers/black(src) - new /obj/item/clothing/gloves/fingerless(src) - new /obj/item/clothing/gloves/fingerless(src) - new /obj/item/clothing/head/soft/black(src) - new /obj/item/clothing/head/soft/black(src) - if(prob(40)) - new /obj/item/clothing/mask/bandana/skull(src) - if(prob(40)) - new /obj/item/clothing/mask/bandana/skull(src) - return - - -/obj/structure/closet/wardrobe/chemistry_white - name = "chemistry wardrobe" - icon_door = "white" - -/obj/structure/closet/wardrobe/chemistry_white/New() - ..() - contents = list() - new /obj/item/clothing/under/rank/chemist(src) - new /obj/item/clothing/under/rank/chemist(src) - new /obj/item/clothing/shoes/sneakers/white(src) - new /obj/item/clothing/shoes/sneakers/white(src) - new /obj/item/clothing/suit/toggle/labcoat/chemist(src) - new /obj/item/clothing/suit/toggle/labcoat/chemist(src) - new /obj/item/weapon/storage/backpack/chemistry(src) - new /obj/item/weapon/storage/backpack/chemistry(src) - new /obj/item/weapon/storage/backpack/satchel_chem(src) - new /obj/item/weapon/storage/backpack/satchel_chem(src) - new /obj/item/weapon/storage/bag/chemistry(src) - new /obj/item/weapon/storage/bag/chemistry(src) - return - - -/obj/structure/closet/wardrobe/genetics_white - name = "genetics wardrobe" - icon_door = "white" - -/obj/structure/closet/wardrobe/genetics_white/New() - ..() - contents = list() - new /obj/item/clothing/under/rank/geneticist(src) - new /obj/item/clothing/under/rank/geneticist(src) - new /obj/item/clothing/shoes/sneakers/white(src) - new /obj/item/clothing/shoes/sneakers/white(src) - new /obj/item/clothing/suit/toggle/labcoat/genetics(src) - new /obj/item/clothing/suit/toggle/labcoat/genetics(src) - new /obj/item/weapon/storage/backpack/genetics(src) - new /obj/item/weapon/storage/backpack/genetics(src) - new /obj/item/weapon/storage/backpack/satchel_gen(src) - new /obj/item/weapon/storage/backpack/satchel_gen(src) - return - - -/obj/structure/closet/wardrobe/virology_white - name = "virology wardrobe" - icon_door = "white" - -/obj/structure/closet/wardrobe/virology_white/New() - ..() - contents = list() - new /obj/item/clothing/under/rank/virologist(src) - new /obj/item/clothing/under/rank/virologist(src) - new /obj/item/clothing/shoes/sneakers/white(src) - new /obj/item/clothing/shoes/sneakers/white(src) - new /obj/item/clothing/suit/toggle/labcoat/virologist(src) - new /obj/item/clothing/suit/toggle/labcoat/virologist(src) - new /obj/item/clothing/mask/surgical(src) - new /obj/item/clothing/mask/surgical(src) - new /obj/item/weapon/storage/backpack/virology(src) - new /obj/item/weapon/storage/backpack/virology(src) - new /obj/item/weapon/storage/backpack/satchel_vir(src) - new /obj/item/weapon/storage/backpack/satchel_vir(src) - return - - /obj/structure/closet/wardrobe/grey name = "grey wardrobe" icon_door = "grey" diff --git a/code/game/objects/structures/door_assembly.dm b/code/game/objects/structures/door_assembly.dm index 4b53bb0e629..ae3ddf23055 100644 --- a/code/game/objects/structures/door_assembly.dm +++ b/code/game/objects/structures/door_assembly.dm @@ -445,7 +445,7 @@ "You start to disassemble the airlock assembly...") playsound(src.loc, 'sound/items/Welder2.ogg', 50, 1) - if(do_after(user, 40)) + if(do_after(user, 40, target = src)) if( !WT.isOn() ) return user << "You disassemble the airlock assembly." @@ -477,7 +477,7 @@ "You start to secure the airlock assembly to the floor...", \ "You hear wrenching.") - if(do_after(user, 40)) + if(do_after(user, 40, target = src)) if( src.anchored ) return user << "You secure the airlock assembly." @@ -491,7 +491,7 @@ user.visible_message("[user] unsecures the airlock assembly from the floor.", \ "You start to unsecure the airlock assembly from the floor...", \ "You hear wrenching.") - if(do_after(user, 40)) + if(do_after(user, 40, target = src)) if( !src.anchored ) return user << "You unsecure the airlock assembly." @@ -505,7 +505,7 @@ return user.visible_message("[user] wires the airlock assembly.", \ "You start to wire the airlock assembly...") - if(do_after(user, 40)) + if(do_after(user, 40, target = src)) if(C.get_amount() < 1 || state != 0) return C.use(1) src.state = 1 @@ -517,7 +517,7 @@ user.visible_message("[user] cuts the wires from the airlock assembly.", \ "You start to cut the wires from the airlock assembly...") - if(do_after(user, 40)) + if(do_after(user, 40, target = src)) if( src.state != 1 ) return user << "You cut the wires from the airlock assembly." @@ -529,7 +529,7 @@ playsound(src.loc, 'sound/items/Screwdriver.ogg', 100, 1) user.visible_message("[user] installs the electronics into the airlock assembly.", \ "You start to install electronics into the airlock assembly...") - if(do_after(user, 40)) + if(do_after(user, 40, target = src)) if( src.state != 1 ) return if(!user.drop_item()) @@ -547,7 +547,7 @@ user.visible_message("[user] removes the electronics from the airlock assembly.", \ "You start to remove electronics from the airlock assembly...") - if(do_after(user, 40)) + if(do_after(user, 40, target = src)) if( src.state != 2 ) return user << "You remove the airlock electronics." @@ -568,7 +568,7 @@ playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1) user.visible_message("[user] adds [G.name] to the airlock assembly.", \ "You start to install [G.name] into the airlock assembly...") - if(do_after(user, 40)) + if(do_after(user, 40, target = src)) if(G.get_amount() < 1 || mineral) return if (G.type == /obj/item/stack/sheet/rglass) user << "You install reinforced glass windows into the airlock assembly." @@ -597,7 +597,7 @@ playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1) user.visible_message("[user] adds [G.name] to the airlock assembly.", \ "You start to install [G.name] into the airlock assembly...") - if(do_after(user, 40)) + if(do_after(user, 40, target = src)) if(G.get_amount() < 2 || mineral) return user << "You install [M] plating into the airlock assembly." G.use(2) @@ -613,7 +613,7 @@ user.visible_message("[user] finishes the airlock.", \ "You start finishing the airlock...") - if(do_after(user, 40)) + if(do_after(user, 40, target = src)) if(src.loc && state == 2) user << "You finish the airlock." var/obj/machinery/door/airlock/door diff --git a/code/game/objects/structures/fireaxe.dm b/code/game/objects/structures/fireaxe.dm index 831c009fad8..338c90f3fab 100644 --- a/code/game/objects/structures/fireaxe.dm +++ b/code/game/objects/structures/fireaxe.dm @@ -31,6 +31,9 @@ user << "You place the [F.name] back in the [name]." update_icon() return + else if(glass_hp > 0) + toggle_open() + else if(istype(I, /obj/item/weapon)) user.changeNext_move(CLICK_CD_MELEE) var/obj/item/weapon/W = I @@ -122,7 +125,7 @@ /obj/structure/fireaxecabinet/proc/toggle_lock(mob/user) user << " Resetting circuitry..." playsound(src, 'sound/machines/locktoggle.ogg', 50, 1) - if(do_after(user, 20)) + if(do_after(user, 20, target = src)) user << "You [locked ? "disable" : "re-enable"] the locking modules." locked = !locked update_icon() diff --git a/code/game/objects/structures/flora.dm b/code/game/objects/structures/flora.dm index 6ee88dda1bb..f2a83e01012 100644 --- a/code/game/objects/structures/flora.dm +++ b/code/game/objects/structures/flora.dm @@ -1,3 +1,7 @@ +/obj/structure/flora + burn_state = 0 //Burnable + burntime = 30 + //trees /obj/structure/flora/tree name = "tree" @@ -217,6 +221,7 @@ icon_state = "rock1" icon = 'icons/obj/flora/rocks.dmi' anchored = 1 + burn_state = -1 //Not Burnable /obj/structure/flora/rock/New() ..() diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm index 23df00bef19..69f0b31aaa2 100644 --- a/code/game/objects/structures/girders.dm +++ b/code/game/objects/structures/girders.dm @@ -114,7 +114,7 @@ user << "You need two sheets of metal to finish a wall!" return user << "You start adding plating..." - if (do_after(user, 40)) + if (do_after(user, 40, target = src)) if(loc == null || S.get_amount() < 2) return S.use(2) @@ -145,7 +145,7 @@ if (src.icon_state == "reinforced") //I cant believe someone would actually write this line of code... if(S.amount < 1) return ..() user << "You start finalizing the reinforced wall..." - if(do_after(user, 50)) + if(do_after(user, 50, target = src)) if(!src.loc || !S || S.amount < 1) return S.use(1) @@ -159,7 +159,7 @@ else if(S.amount < 1) return ..() user << "You start reinforcing the girder..." - if (do_after(user, 60)) + if (do_after(user, 60, target = src)) if(!src.loc || !S || S.amount < 1) return S.use(1) @@ -184,7 +184,7 @@ else if(S.amount < 2) return ..() user << "You start adding plating..." - if (do_after(user, 40)) + if (do_after(user, 40, target = src)) if(!src.loc || !S || S.amount < 2) return S.use(2) @@ -292,7 +292,7 @@ playsound(src.loc, 'sound/items/Welder2.ogg', 50, 1) user.visible_message("[user] disassembles the girder.", \ "You start to disassemble the girder...", "You hear welding and clanking.") - if(do_after(user, 40)) + if(do_after(user, 40, target = src)) if( !WT.isOn() ) return user << "You disassemble the girder." @@ -302,7 +302,7 @@ else if(istype(W, /obj/item/weapon/gun/energy/plasmacutter)) user << "You start slicing apart the girder..." - if(do_after(user, 30)) + if(do_after(user, 30, target = src)) user << "You slice apart the girder." var/obj/effect/decal/remains/human/R = new (get_turf(src)) transfer_fingerprints_to(R) diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index 3fbe01e9bf7..432dd620b70 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -174,7 +174,7 @@ user << "There is already a window there!" return user << "You start placing the window..." - if(do_after(user,20)) + if(do_after(user,20, target = src)) if(!src.loc || !anchored) //Grille destroyed or unanchored while waiting return for(var/obj/structure/window/WINDOW in loc) //Another window already installed on grille @@ -262,4 +262,4 @@ healthcheck() /obj/structure/grille/storage_contents_dump_act(obj/item/weapon/storage/src_object, mob/user) - return 0 \ No newline at end of file + return 0 diff --git a/code/game/objects/structures/hivebot.dm b/code/game/objects/structures/hivebot.dm index bf7a7985863..243fe2867cb 100644 --- a/code/game/objects/structures/hivebot.dm +++ b/code/game/objects/structures/hivebot.dm @@ -10,7 +10,7 @@ /obj/structure/hivebot_beacon/New() ..() - var/datum/effect/effect/system/harmless_smoke_spread/smoke = new /datum/effect/effect/system/harmless_smoke_spread() + var/datum/effect/effect/system/smoke_spread/smoke = new smoke.set_up(5, 0, src.loc) smoke.start() visible_message("The [src] warps in!") diff --git a/code/game/objects/structures/janicart.dm b/code/game/objects/structures/janicart.dm index 58aebf4ca25..bd6953ef7e0 100644 --- a/code/game/objects/structures/janicart.dm +++ b/code/game/objects/structures/janicart.dm @@ -80,7 +80,7 @@ mybag.attackby(I, user) else if(istype(I, /obj/item/weapon/crowbar)) user.visible_message("[user] begins to empty the contents of [src].", "You begin to empty the contents of [src]...") - if(do_after(user, 30)) + if(do_after(user, 30, target = src)) usr << "You empty the contents of [src]'s bucket onto the floor." reagents.reaction(src.loc) src.reagents.clear_reagents() diff --git a/code/game/objects/structures/mineral_doors.dm b/code/game/objects/structures/mineral_doors.dm index cc7c6035e7a..23be1ce7c31 100644 --- a/code/game/objects/structures/mineral_doors.dm +++ b/code/game/objects/structures/mineral_doors.dm @@ -126,7 +126,7 @@ if(istype(W,/obj/item/weapon/pickaxe)) var/obj/item/weapon/pickaxe/digTool = W user << "You start digging the [name]..." - if(do_after(user,digTool.digspeed*hardness) && src) + if(do_after(user,digTool.digspeed*hardness, target = src) && src) user << "You finish digging." Dismantle() else if(istype(W,/obj/item/weapon)) //not sure, can't not just weapons get passed to this proc? @@ -242,6 +242,8 @@ hardness = 1 openSound = 'sound/effects/doorcreaky.ogg' closeSound = 'sound/effects/doorcreaky.ogg' + burn_state = 0 //Burnable + burntime = 30 /obj/structure/mineral_door/wood/Dismantle(devastated = 0) if(!devastated) diff --git a/code/game/objects/structures/musician.dm b/code/game/objects/structures/musician.dm index 9b120060ced..f977e561a54 100644 --- a/code/game/objects/structures/musician.dm +++ b/code/game/objects/structures/musician.dm @@ -348,8 +348,8 @@ if (istype(O, /obj/item/weapon/wrench)) if (!anchored && !isinspace()) playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) - user << "You begin to tighten \the [src] to the floor..." - if (do_after(user, 20)) + user << " You begin to tighten \the [src] to the floor..." + if (do_after(user, 20, target = src)) user.visible_message( \ "[user] tightens \the [src]'s casters.", \ "You tighten \the [src]'s casters. Now it can be played again.", \ @@ -357,8 +357,8 @@ anchored = 1 else if(anchored) playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) - user << "You begin to loosen \the [src]'s casters..." - if (do_after(user, 40)) + user << " You begin to loosen \the [src]'s casters..." + if (do_after(user, 40, target = src)) user.visible_message( \ "[user] loosens \the [src]'s casters.", \ "You loosen \the [src]. Now it can be pulled somewhere else.", \ diff --git a/code/game/objects/structures/statues.dm b/code/game/objects/structures/statues.dm index 74c5f66aa58..d68eef7270d 100644 --- a/code/game/objects/structures/statues.dm +++ b/code/game/objects/structures/statues.dm @@ -24,7 +24,7 @@ playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1) user.visible_message("[user] is loosening the [name]'s bolts.", \ "You are loosening the [name]'s bolts...") - if(do_after(user,40)) + if(do_after(user,40, target = src)) if(!src.loc || !anchored) return user.visible_message("[user] loosened the [name]'s bolts!", \ @@ -37,7 +37,7 @@ playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1) user.visible_message("[user] is securing the [name]'s bolts...", \ "You are securing the [name]'s bolts...") - if(do_after(user, 40)) + if(do_after(user, 40, target = src)) if(!src.loc || anchored) return user.visible_message("[user] has secured the [name]'s bolts.", \ @@ -47,7 +47,7 @@ else if(istype(W, /obj/item/weapon/gun/energy/plasmacutter)) user.visible_message("[user] is slicing apart the [name]...", \ "You are slicing apart the [name]...") - if(do_after(user,30)) + if(do_after(user,30, target = src)) if(!src.loc) return user.visible_message("[user] slices apart the [name].", \ @@ -67,7 +67,7 @@ playsound(loc, 'sound/items/Welder.ogg', 40, 1) user.visible_message("[user] is slicing apart the [name].", \ "You are slicing apart the [name]...") - if(do_after(user, 40)) + if(do_after(user, 40, target = src)) if(!src.loc) return playsound(loc, 'sound/items/Welder2.ogg', 50, 1) diff --git a/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm b/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm index 4673fcfeb40..b07df690e12 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm @@ -20,7 +20,7 @@ "[M.name] struggles to break free from the gelatinous resin!",\ "You struggle to break free from the gelatinous resin... (Stay still for two minutes.)",\ "You hear squelching...") - if(!do_after(M, 1200)) + if(!do_after(M, 1200, target = src)) if(M && M.buckled) M << "You fail to unbuckle yourself!" return diff --git a/code/game/objects/structures/stool_bed_chair_nest/bed.dm b/code/game/objects/structures/stool_bed_chair_nest/bed.dm index af9c059a8f7..1682c22403b 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/bed.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/bed.dm @@ -13,6 +13,8 @@ icon_state = "bed" can_buckle = 1 buckle_lying = 1 + burn_state = 0 //Burnable + burntime = 30 /obj/structure/stool/bed/alien name = "resting contraption" @@ -59,6 +61,7 @@ icon = 'icons/obj/rollerbed.dmi' icon_state = "down" anchored = 0 + burn_state = -1 //Not Burnable /obj/structure/stool/bed/roller/post_buckle_mob(mob/living/M) if(M == buckled_mob) diff --git a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm index 915f56b9ac0..1dea5a15dde 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm @@ -3,6 +3,7 @@ desc = "You sit in this. Either by will or force." icon_state = "chair" buckle_lying = 0 //you sit in a chair, not lay + burn_state = -1 //Not Burnable /obj/structure/stool/bed/chair/New() ..() @@ -73,6 +74,10 @@ // Chair types +/obj/structure/stool/bed/chair/wood + burn_state = 0 //Burnable + burntime = 20 + /obj/structure/stool/bed/chair/wood/normal icon_state = "wooden_chair" name = "wooden chair" @@ -96,6 +101,8 @@ desc = "It looks comfy." icon_state = "comfychair" color = rgb(255,255,255) + burn_state = 0 //Burnable + burntime = 30 var/image/armrest = null /obj/structure/stool/bed/chair/comfy/New() diff --git a/code/game/objects/structures/table_frames.dm b/code/game/objects/structures/table_frames.dm index 0b1f15d41b3..18288c5f670 100644 --- a/code/game/objects/structures/table_frames.dm +++ b/code/game/objects/structures/table_frames.dm @@ -24,7 +24,7 @@ if(istype(I, /obj/item/weapon/wrench)) user << "You start disassembling [src]..." playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) - if(do_after(user, 30)) + if(do_after(user, 30, target = src)) playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) for(var/i = 1, i <= framestackamount, i++) new framestack(get_turf(src)) @@ -36,7 +36,7 @@ user << "You need one plasteel sheet to do this!" return user << "You start adding [P] to [src]..." - if(do_after(user, 50)) + if(do_after(user, 50, target = src)) P.use(1) new /obj/structure/table/reinforced(src.loc) qdel(src) @@ -47,7 +47,7 @@ user << "You need one metal sheet to do this!" return user << "You start adding [M] to [src]..." - if(do_after(user, 20)) + if(do_after(user, 20, target = src)) M.use(1) new /obj/structure/table(src.loc) qdel(src) @@ -58,8 +58,9 @@ user << "You need one glass sheet to do this!" return user << "You start adding [G] to [src]..." - if(do_after(user, 20)) + if(do_after(user, 20, target = src)) G.use(1) + new /obj/structure/table/glass(src.loc) qdel(src) return @@ -74,6 +75,7 @@ icon_state = "wood_frame" framestack = /obj/item/stack/sheet/mineral/wood framestackamount = 2 + burn_state = 0 //Burnable /obj/structure/table_frame/wood/attackby(var/obj/item/I, mob/user, params) if(istype(I, /obj/item/weapon/wrench)) @@ -84,7 +86,7 @@ user << "You need one wood sheet to do this!" return user << "You start adding [W] to [src]..." - if(do_after(user, 20)) + if(do_after(user, 20, target = src)) W.use(1) new /obj/structure/table/wood(src.loc) qdel(src) @@ -95,8 +97,8 @@ user << "You need one carpet sheet to do this!" return user << "You start adding [C] to [src]..." - if(do_after(user, 20)) + if(do_after(user, 20, target = src)) C.use(1) new /obj/structure/table/wood/poker(src.loc) qdel(src) - return \ No newline at end of file + return diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index b25fa12dd81..7258982885d 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -347,7 +347,7 @@ if(destroy_type == TBL_DISASSEMBLE) user << "You start disassembling [src]..." playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) - if(do_after(user, 20)) + if(do_after(user, 20, target = src)) new frame(src.loc) for(var/i = 1, i <= buildstackamount, i++) new buildstack(get_turf(src)) @@ -357,7 +357,7 @@ if(destroy_type == TBL_DECONSTRUCT) user << "You start deconstructing [src]..." playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) - if(do_after(user, 40)) + if(do_after(user, 40, target = src)) for(var/i = 1, i <= framestackamount, i++) new framestack(get_turf(src)) for(var/i = 1, i <= buildstackamount, i++) @@ -432,6 +432,8 @@ frame = /obj/structure/table_frame/wood framestack = /obj/item/stack/sheet/mineral/wood buildstack = /obj/item/stack/sheet/mineral/wood + burn_state = 0 //Burnable + burntime = 20 /obj/structure/table/wood/poker //No specialties, Just a mapping object. name = "gambling table" @@ -456,14 +458,14 @@ if(src.status == 2) user << "You start weakening the reinforced table..." playsound(src.loc, 'sound/items/Welder.ogg', 50, 1) - if (do_after(user, 50)) + if (do_after(user, 50, target = src)) if(!src || !WT.isOn()) return user << "You weaken the table." src.status = 1 else user << "You start strengthening the reinforced table..." playsound(src.loc, 'sound/items/Welder.ogg', 50, 1) - if (do_after(user, 50)) + if (do_after(user, 50, target = src)) if(!src || !WT.isOn()) return user << "You strengthen the table." src.status = 2 @@ -624,7 +626,7 @@ /obj/item/weapon/rack_parts/attack_self(mob/user as mob) user << "You start constructing rack..." - if (do_after(user, 50)) + if (do_after(user, 50, target = src)) if(!user.drop_item()) return var/obj/structure/rack/R = new /obj/structure/rack( user.loc ) diff --git a/code/game/objects/structures/transit_tubes/station.dm b/code/game/objects/structures/transit_tubes/station.dm index 208fb23b973..a767d3a4b25 100644 --- a/code/game/objects/structures/transit_tubes/station.dm +++ b/code/game/objects/structures/transit_tubes/station.dm @@ -68,7 +68,7 @@ else if(icon_state == "open") if(pod.contents.len && user.loc != pod) user.visible_message("[user] starts emptying [pod]'s contents onto the floor.", "You start emptying [pod]'s contents onto the floor...") - if(do_after(user, 10)) //So it doesn't default to close_animation() on fail + if(do_after(user, 10, target = src)) //So it doesn't default to close_animation() on fail if(pod.loc == loc) for(var/atom/movable/AM in pod) AM.loc = get_turf(user) @@ -88,7 +88,7 @@ var/mob/GM = G.affecting for(var/obj/structure/transit_tube_pod/pod in loc) pod.visible_message("[user] starts putting [GM] into the [pod]!") - if(do_after(user, 15) && GM && G && G.affecting == GM) + if(do_after(user, 15, target = src) && GM && G && G.affecting == GM) GM.Weaken(5) src.Bumped(GM) qdel(G) diff --git a/code/game/objects/structures/transit_tubes/transit_tube.dm b/code/game/objects/structures/transit_tubes/transit_tube.dm index 5d376fa93fe..1b54309a8d4 100644 --- a/code/game/objects/structures/transit_tubes/transit_tube.dm +++ b/code/game/objects/structures/transit_tubes/transit_tube.dm @@ -46,7 +46,7 @@ obj/structure/transit_tube/ex_act(severity, target) return user.visible_message("[user] starts to deattach \the [src].", "You start to deattach the [name]...") playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) - if(do_after(user, 35)) + if(do_after(user, 35, target = src)) user << "You deattach the [name]." var/obj/structure/R = new tube_construction(src.loc) R.icon_state = src.icon_state diff --git a/code/game/objects/structures/transit_tubes/transit_tube_construction.dm b/code/game/objects/structures/transit_tubes/transit_tube_construction.dm index 54b49942a8e..f2ad5050c3b 100644 --- a/code/game/objects/structures/transit_tubes/transit_tube_construction.dm +++ b/code/game/objects/structures/transit_tubes/transit_tube_construction.dm @@ -81,7 +81,7 @@ if(istype(I, /obj/item/weapon/wrench)) user << "You start attaching the [name]..." src.add_fingerprint(user) - if(do_after(user, 40)) + if(do_after(user, 40, target = src)) if(!src) return user << "You attach the [name]." var/obj/structure/transit_tube/R = src.buildtube() diff --git a/code/game/objects/structures/transit_tubes/transit_tube_pod.dm b/code/game/objects/structures/transit_tubes/transit_tube_pod.dm index 33cfa7bf823..b846d4d847d 100644 --- a/code/game/objects/structures/transit_tubes/transit_tube_pod.dm +++ b/code/game/objects/structures/transit_tubes/transit_tube_pod.dm @@ -47,7 +47,7 @@ user.changeNext_move(CLICK_CD_BREAKOUT) user.last_special = world.time + CLICK_CD_BREAKOUT user << "You start trying to escape from the pod..." - if(do_after(user, 600)) + if(do_after(user, 600, target = src)) user << "You manage to open the pod." src.empty() diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index 02d08966927..de1e9952612 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -50,7 +50,7 @@ if(istype(I, /obj/item/weapon/crowbar)) user << "You start to [cistern ? "replace the lid on the cistern" : "lift the lid off the cistern"]..." playsound(loc, 'sound/effects/stonedoor_openclose.ogg', 50, 1) - if(do_after(user, 30)) + if(do_after(user, 30, target = src)) user.visible_message("[user] [cistern ? "replaces the lid on the cistern" : "lifts the lid off the cistern"]!", "You [cistern ? "replace the lid on the cistern" : "lift the lid off the cistern"]!", "You hear grinding porcelain.") cistern = !cistern update_icon() @@ -71,7 +71,7 @@ if(open) GM.visible_message("[user] starts to give [GM] a swirlie!", "[user] starts to give [GM] a swirlie...") swirlie = GM - if(do_after(user, 30, 5, 0)) + if(do_after(user, 30, 5, 0, target = src)) GM.visible_message("[user] gives [GM] a swirlie!", "[user] gives [GM] a swirlie!", "You hear a toilet flushing.") if(iscarbon(GM)) var/mob/living/carbon/C = GM @@ -172,7 +172,7 @@ user << "The water temperature seems to be [watertemp]." if(istype(I, /obj/item/weapon/wrench)) user << "You begin to adjust the temperature valve with \the [I]..." - if(do_after(user, 50)) + if(do_after(user, 50, target = src)) switch(watertemp) if("normal") watertemp = "freezing" @@ -229,6 +229,7 @@ //Yes, showers are super powerful as far as washing goes. /obj/machinery/shower/proc/wash(atom/movable/O) if(!on) return + if(ismob(O)) mobpresent += 1 check_heat(O) @@ -284,9 +285,13 @@ if(H.shoes && washshoes) if(H.shoes.clean_blood()) H.update_inv_shoes(0) - if(H.wear_mask && washmask) - if(H.wear_mask.clean_blood()) - H.update_inv_wear_mask(0) + if(H.wear_mask) + if(washmask) + if(H.wear_mask.clean_blood()) + H.update_inv_wear_mask(0) + else + H.lip_style = null + H.update_body() if(H.glasses && washglasses) if(H.glasses.clean_blood()) H.update_inv_glasses(0) @@ -303,6 +308,13 @@ else O.clean_blood() + else + O.clean_blood() + + if(istype(O,/obj/item)) + var/obj/item/Item = O + Item.extinguish() + if(isturf(loc)) var/turf/tile = loc loc.clean_blood() @@ -310,7 +322,6 @@ if(is_cleanable(E)) qdel(E) - /obj/machinery/shower/process() if(!on || !mobpresent) return for(var/mob/living/carbon/C in loc) diff --git a/code/game/objects/structures/windoor_assembly.dm b/code/game/objects/structures/windoor_assembly.dm index 1f41f887adb..d8c0442b91b 100644 --- a/code/game/objects/structures/windoor_assembly.dm +++ b/code/game/objects/structures/windoor_assembly.dm @@ -79,7 +79,7 @@ user.visible_message("[user] disassembles the windoor assembly.", "You start to disassemble the windoor assembly...") playsound(loc, 'sound/items/Welder2.ogg', 50, 1) - if(do_after(user, 40)) + if(do_after(user, 40, target = src)) if(!src || !WT.isOn()) return user << "You disassemble the windoor assembly." var/obj/item/stack/sheet/rglass/RG = new (get_turf(src), 5) @@ -100,7 +100,7 @@ playsound(loc, 'sound/items/Ratchet.ogg', 100, 1) user.visible_message("[user] secures the windoor assembly to the floor.", "You start to secure the windoor assembly to the floor...") - if(do_after(user, 40)) + if(do_after(user, 40, target = src)) if(!src || anchored) return for(var/obj/machinery/door/window/WD in loc) @@ -119,7 +119,7 @@ playsound(loc, 'sound/items/Ratchet.ogg', 100, 1) user.visible_message("[user] unsecures the windoor assembly to the floor.", "You start to unsecure the windoor assembly to the floor...") - if(do_after(user, 40)) + if(do_after(user, 40, target = src)) if(!src || !anchored) return user << "You unsecure the windoor assembly." @@ -137,7 +137,7 @@ return user << "You start to reinforce the windoor with plasteel..." - if(do_after(user,40)) + if(do_after(user,40, target = src)) if(!src || secure) return @@ -153,8 +153,8 @@ else if(istype(W, /obj/item/stack/cable_coil) && anchored) user.visible_message("[user] wires the windoor assembly.", "You start to wire the windoor assembly...") - if(do_after(user, 40)) - if(!src || !anchored || state != "01") + if(do_after(user, 40, target = src)) + if(!src || !anchored || src.state != "01") return var/obj/item/stack/cable_coil/CC = W if(!CC.use(1)) @@ -176,7 +176,7 @@ playsound(loc, 'sound/items/Wirecutter.ogg', 100, 1) user.visible_message("[user] cuts the wires from the airlock assembly.", "You start to cut the wires from airlock assembly...") - if(do_after(user, 40)) + if(do_after(user, 40, target = src)) if(!src || state != "02") return @@ -196,9 +196,9 @@ user.visible_message("[user] installs the electronics into the airlock assembly.", "You start to install electronics into the airlock assembly...") W.loc = src - if(do_after(user, 40)) + if(do_after(user, 40, target = src)) if(!src || electronics) - W.loc = loc + W.loc = src.loc return user << "You install the airlock electronics." name = "near finished windoor assembly" @@ -214,7 +214,7 @@ playsound(loc, 'sound/items/Screwdriver.ogg', 100, 1) user.visible_message("[user] removes the electronics from the airlock assembly.", "You start to uninstall electronics from the airlock assembly...") - if(do_after(user, 40)) + if(do_after(user, 40, target = src)) if(!src || !electronics) return user << "You remove the airlock electronics." @@ -244,7 +244,7 @@ playsound(loc, 'sound/items/Crowbar.ogg', 100, 1) user.visible_message("[user] pries the windoor into the frame.", "You start prying the windoor into the frame...") - if(do_after(user, 40)) + if(do_after(user, 40, target = src)) if(loc && electronics) diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 1284b9b0aaf..5b0b47205f6 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -196,7 +196,7 @@ else if(!reinf) user << (anchored ? "You begin to unscrew the window from the floor..." : "You begin to screw the window to the floor...") - if(do_after(user, 40)) + if(do_after(user, 40, target = src)) if(reinf && (state == 1 || state == 2)) //If state was unfastened, fasten it, else do the reverse state = (state == 1 ? 2 : 1) @@ -213,29 +213,28 @@ else if (istype(I, /obj/item/weapon/crowbar) && reinf && (state == 0 || state == 1)) user << (state == 0 ? "You begin to lever the window into the frame..." : "You begin to lever the window out of the frame...") playsound(loc, 'sound/items/Crowbar.ogg', 75, 1) - if(do_after(user, 40)) + if(do_after(user, 40, target = src)) //If state was out of frame, put into frame, else do the reverse state = (state == 0 ? 1 : 0) user << (state == 1 ? "You pry the window into the frame." : "You pry the window out of the frame.") - else if(istype(I, /obj/item/weapon/weldingtool)) + else if(istype(I, /obj/item/weapon/weldingtool) && user.a_intent == "help") var/obj/item/weapon/weldingtool/WT = I - if(user.a_intent == "help") //so you can still break windows with welding tools - if(health < maxhealth) - if(WT.remove_fuel(0,user)) - user << "You begin repairing [src]..." - playsound(loc, 'sound/items/Welder.ogg', 40, 1) - if(do_after(user, 40)) - health = maxhealth - playsound(loc, 'sound/items/Welder2.ogg', 50, 1) - else - user << "[src] is already in good condition!" + if(health < maxhealth) + if(WT.remove_fuel(0,user)) + user << "You begin repairing [src]..." + playsound(loc, 'sound/items/Welder.ogg', 40, 1) + if(do_after(user, 40, target = src)) + health = maxhealth + playsound(loc, 'sound/items/Welder2.ogg', 50, 1) + else + user << "[src] is already in good condition!" update_nearby_icons() else if(istype(I, /obj/item/weapon/wrench) && !anchored) playsound(loc, 'sound/items/Ratchet.ogg', 75, 1) - user << "You begin to disassemble [src]..." - if(do_after(user, 40)) + user << " You begin to disassemble [src]..." + if(do_after(user, 40, target = src)) if(disassembled) return //Prevents multiple deconstruction attempts diff --git a/code/game/turfs/simulated/floor/plating.dm b/code/game/turfs/simulated/floor/plating.dm index 25f2ec88ecb..edb1fe79b28 100644 --- a/code/game/turfs/simulated/floor/plating.dm +++ b/code/game/turfs/simulated/floor/plating.dm @@ -38,7 +38,7 @@ return else user << "You begin reinforcing the floor..." - if(do_after(user, 30)) + if(do_after(user, 30, target = src)) if (R.get_amount() >= 2) ChangeTurf(/turf/simulated/floor/engine) playsound(src, 'sound/items/Deconstruct.ogg', 80, 1) @@ -98,7 +98,7 @@ if(istype(C, /obj/item/weapon/wrench)) user << "You begin removing rods..." playsound(src, 'sound/items/Ratchet.ogg', 80, 1) - if(do_after(user, 30)) + if(do_after(user, 30, target = src)) if(!istype(src, /turf/simulated/floor/engine)) return new /obj/item/stack/rods(src, 2) diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm index b2330065a64..a4f8574ed20 100644 --- a/code/game/turfs/simulated/walls.dm +++ b/code/game/turfs/simulated/walls.dm @@ -192,7 +192,7 @@ if( WT.remove_fuel(0,user) ) user << "You begin slicing through the outer plating..." playsound(src, 'sound/items/Welder.ogg', 100, 1) - if(do_after(user, slicing_duration)) + if(do_after(user, slicing_duration, target = src)) if( !istype(src, /turf/simulated/wall) || !user || !WT || !WT.isOn() || !T ) return 1 if( user.loc == T && user.get_active_hand() == WT ) @@ -202,7 +202,7 @@ else if( istype(W, /obj/item/weapon/gun/energy/plasmacutter) ) user << "You begin slicing through the outer plating..." playsound(src, 'sound/items/Welder.ogg', 100, 1) - if(do_after(user, slicing_duration*0.6)) // plasma cutter is faster than welding tool + if(do_after(user, slicing_duration*0.6, target = src)) // plasma cutter is faster than welding tool if( !istype(src, /turf/simulated/wall) || !user || !W || !T ) return 1 if( user.loc == T && user.get_active_hand() == W ) @@ -267,4 +267,4 @@ ChangeTurf(/turf/simulated/wall/cult) /turf/simulated/wall/storage_contents_dump_act(obj/item/weapon/storage/src_object, mob/user) - return 0 \ No newline at end of file + return 0 diff --git a/code/game/turfs/simulated/walls_reinforced.dm b/code/game/turfs/simulated/walls_reinforced.dm index 00f6f38825f..ed880a17f00 100644 --- a/code/game/turfs/simulated/walls_reinforced.dm +++ b/code/game/turfs/simulated/walls_reinforced.dm @@ -33,7 +33,7 @@ if(istype(W, /obj/item/weapon/pickaxe/drill/jackhammer)) var/obj/item/weapon/pickaxe/drill/jackhammer/D = W user << "You begin to smash though the [name]..." - if(do_after(user, 50)) + if(do_after(user, 50, target = src)) if( !istype(src, /turf/simulated/wall/r_wall) || !user || !W || !T ) return 1 if( user.loc == T && user.get_active_hand() == W ) @@ -47,7 +47,7 @@ user << "You need one sheet of metal to repair the wall!" return 1 user << "You begin patching-up the wall with \a [MS]..." - if (do_after(user, max(20*d_state,100)))//time taken to repair is proportional to the damage! (max 10 seconds) + if (do_after(user, max(20*d_state,100), target = src))//time taken to repair is proportional to the damage! (max 10 seconds) if(loc == null || MS.get_amount() < 1) return 1 MS.use(1) @@ -74,7 +74,7 @@ user << "You begin removing the support lines..." playsound(src, 'sound/items/Screwdriver.ogg', 100, 1) - if(do_after(user, 40)) + if(do_after(user, 40, target = src)) if( !istype(src, /turf/simulated/wall/r_wall) || !user || !W || !T ) return 1 @@ -105,7 +105,7 @@ user << "You begin slicing through the metal cover..." playsound(src, 'sound/items/Welder.ogg', 100, 1) - if(do_after(user, 60)) + if(do_after(user, 60, target = src)) if( !istype(src, /turf/simulated/wall/r_wall) || !user || !WT || !WT.isOn() || !T ) return 0 @@ -120,7 +120,7 @@ user << "You begin slicing through the metal cover..." playsound(src, 'sound/items/Welder.ogg', 100, 1) - if(do_after(user, 60)) + if(do_after(user, 60, target = src)) if( !istype(src, /turf/simulated/wall/r_wall) || !user || !W || !T ) return 1 @@ -136,7 +136,7 @@ user << "You struggle to pry off the cover..." playsound(src, 'sound/items/Crowbar.ogg', 100, 1) - if(do_after(user, 100)) + if(do_after(user, 100, target = src)) if( !istype(src, /turf/simulated/wall/r_wall) || !user || !W || !T ) return 1 @@ -152,7 +152,7 @@ user << "You start loosening the anchoring bolts which secure the support rods to their frame..." playsound(src, 'sound/items/Ratchet.ogg', 100, 1) - if(do_after(user, 40)) + if(do_after(user, 40, target = src)) if( !istype(src, /turf/simulated/wall/r_wall) || !user || !W || !T ) return 1 @@ -170,7 +170,7 @@ user << "You begin slicing through the support rods..." playsound(src, 'sound/items/Welder.ogg', 100, 1) - if(do_after(user, 100)) + if(do_after(user, 100, target = src)) if( !istype(src, /turf/simulated/wall/r_wall) || !user || !WT || !WT.isOn() || !T ) return 1 @@ -185,7 +185,7 @@ user << "You begin slicing through the support rods..." playsound(src, 'sound/items/Welder.ogg', 100, 1) - if(do_after(user, 70)) + if(do_after(user, 70, target = src)) if( !istype(src, /turf/simulated/wall/r_wall) || !user || !W || !T ) return 1 @@ -201,7 +201,7 @@ user << "You struggle to pry off the outer sheath..." playsound(src, 'sound/items/Crowbar.ogg', 100, 1) - if(do_after(user, 100)) + if(do_after(user, 100, target = src)) if( !istype(src, /turf/simulated/wall/r_wall) || !user || !W || !T ) return 1 diff --git a/code/modules/admin/admin_memo.dm b/code/modules/admin/admin_memo.dm index 5ca3ea9942f..89f9116aeaf 100644 --- a/code/modules/admin/admin_memo.dm +++ b/code/modules/admin/admin_memo.dm @@ -37,7 +37,7 @@ var/savefile/F = new(MEMOFILE) if(F) for(var/ckey in F.dir) - src << "
    Admin Memoby [F[ckey]]
    " + src << "
    Admin Memo by [F[ckey]]
    " //delete your own or somebody else's memo /client/proc/admin_memo_delete() diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index c48b54bc764..23e0bc6142e 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -125,7 +125,8 @@ var/list/admin_verbs_debug = list( /client/proc/test_snap_UI, /client/proc/debugNatureMapGenerator, /client/proc/check_bomb_impacts, - /proc/machine_upgrade + /proc/machine_upgrade, + /client/proc/populate_world ) var/list/admin_verbs_possess = list( /proc/possess, @@ -260,7 +261,7 @@ var/list/admin_verbs_hideable = list( /client/proc/fps, /client/proc/cmd_admin_grantfullaccess, /client/proc/cmd_admin_areatest, - /client/proc/readmin + /client/proc/readmin, ) if(holder) verbs.Remove(holder.rank.adds) @@ -463,13 +464,18 @@ var/list/admin_verbs_hideable = list( set category = "Fun" set name = "Give Spell" set desc = "Gives a spell to a mob." - var/obj/effect/proc_holder/spell/S = input("Choose the spell to give to that guy", "ABRAKADABRA") as null|anything in spells + + var/list/spell_list = list() + var/type_length = length("/obj/effect/proc_holder/spell") + 2 + for(var/A in spells) + spell_list[copytext("[A]", type_length)] = A + var/obj/effect/proc_holder/spell/S = input("Choose the spell to give to that guy", "ABRAKADABRA") as null|anything in spell_list if(!S) return + S = spell_list[S] feedback_add_details("admin_verb","GS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! log_admin("[key_name(usr)] gave [key_name(T)] the spell [S].") message_admins("[key_name_admin(usr)] gave [key_name(T)] the spell [S].") - if(T.mind) T.mind.AddSpell(new S) else @@ -590,3 +596,38 @@ var/list/admin_verbs_hideable = list( verbs -= /client/proc/readmin deadmins -= ckey return + +/client/proc/populate_world(var/amount = 50 as num) + set name = "Populate World" + set category = "Debug" + set desc = "(\"Amount of mobs to create\") Populate the world with test mobs." + + if (amount > 0) + var/area/area + var/list/candidates + var/turf/simulated/floor/tile + var/j,k + var/mob/living/carbon/human/mob + + for (var/i = 1 to amount) + j = 100 + + do + area = pick(the_station_areas) + + if (area) + + candidates = get_area_turfs(area) + + if (candidates.len) + k = 100 + + do + tile = pick(candidates) + while ((!tile || !istype(tile)) && --k > 0) + + if (tile) + mob = new/mob/living/carbon/human/interactive(tile) + + testing("Spawned test mob with name \"[mob.name]\" at [tile.x],[tile.y],[tile.z]") + while (!area && --j > 0) \ No newline at end of file diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 5ad29544612..2b643231e19 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -5,8 +5,26 @@ message_admins("[usr.key] has attempted to override the admin panel!") log_admin("[key_name(usr)] tried to use the admin panel without authorization.") return + if(href_list["rejectadminhelp"]) + if(!check_rights(R_ADMIN)) + return + var/client/C = locate(href_list["rejectadminhelp"]) + if(!C) + return + if (deltimer(C.adminhelptimerid)) + C.giveadminhelpverb() - if(href_list["makeAntag"]) + C << 'sound/effects/adminhelp.ogg' + + C << "- AdminHelp Rejected! -" + C << "Your admin help was rejected. The adminhelp verb has been returned to you so that you may try again" + C << "Please try to be calm, clear, and descriptive in admin helps, do not assume the admin has seen any related events, and clearly state the names of anybody you are reporting." + + message_admins("[key_name_admin(usr)] Rejected [C.key]'s admin help. [C.key]'s Adminhelp verb has been returned to them") + log_admin("[key_name(usr)] Rejected [C.key]'s admin help") + + + else if(href_list["makeAntag"]) if (!ticker.mode) usr << "Not until the round starts!" return @@ -1093,7 +1111,7 @@ var/DBQuery/query = dbcon.NewQuery("SELECT ckey FROM [format_table_name("watch")] WHERE (ckey = '[sql_ckey]')") query.Execute() if(query.NextRow()) - switch(alert(usr, "Ckey already flagged", "[sql_ckey] is already on the watchlist, do you want to:", "Remove", "Edit reason", "Cancel")) + switch(alert(usr, "[sql_ckey] is already on the watchlist, do you want to:", "Ckey already flagged", "Remove", "Edit reason", "Cancel")) if("Cancel") return if("Remove") @@ -1102,7 +1120,7 @@ var/err = query_watchdel.ErrorMsg() log_game("SQL ERROR during removing watch entry. Error : \[[err]\]\n") return - log_admin("[key_name_admin(usr)] has removed [key_name_admin(M)] from the watchlist") + log_admin("[key_name(usr)] has removed [key_name_admin(M)] from the watchlist") message_admins("[key_name_admin(usr)] has removed [key_name_admin(M)] from the watchlist", 1) if("Edit reason") var/DBQuery/query_reason = dbcon.NewQuery("SELECT ckey, reason FROM [format_table_name("watch")] WHERE (ckey = '[sql_ckey]')") @@ -1113,12 +1131,12 @@ new_reason = sanitizeSQL(new_reason) if(!new_reason) return - var/DBQuery/update_query = dbcon.NewQuery("UPDATE [format_table_name("watch")] SET reason = '[new_reason]', edits = CONCAT(edits,'- [usr] changed watchlist reason from \\\"[watch_reason]\\\" to \\\"[new_reason]\\\"
    ') WHERE (ckey = '[sql_ckey]')") + var/DBQuery/update_query = dbcon.NewQuery("UPDATE [format_table_name("watch")] SET reason = '[new_reason]' WHERE (ckey = '[sql_ckey]')") if(!update_query.Execute()) var/err = update_query.ErrorMsg() log_game("SQL ERROR during edit watch entry reason. Error : \[[err]\]\n") return - log_admin("[key_name_admin(usr)] has edited [sql_ckey]'s reason from [watch_reason] to [new_reason]",1) + log_admin("[key_name(usr)] has edited [sql_ckey]'s reason from [watch_reason] to [new_reason]",1) message_admins("[key_name_admin(usr)] has edited [sql_ckey]'s reason from [watch_reason] to [new_reason]",1) else var/reason = input(usr,"Reason?","reason","Metagaming") as text|null @@ -1130,7 +1148,7 @@ var/err = query_watchadd.ErrorMsg() log_game("SQL ERROR during adding new watch entry. Error : \[[err]\]\n") return - log_admin("[key_name_admin(usr)] has added [key_name_admin(M)] to the watchlist - Reason: [reason]") + log_admin("[key_name(usr)] has added [key_name_admin(M)] to the watchlist - Reason: [reason]") message_admins("[key_name_admin(usr)] has added [key_name_admin(M)] to the watchlist - Reason: [reason]", 1) else if(href_list["mute"]) @@ -1487,6 +1505,8 @@ var/mob/dead/observer/A = C.mob sleep(2) A.ManualFollow(M) + log_admin("[key_name(usr)] followed [key_name(M)]") + message_admins("[key_name_admin(usr)] followed [key_name_admin(M)]") else if(href_list["adminplayerobservecoodjump"]) if(!isobserver(usr) && !check_rights(R_ADMIN)) return diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm index a34e5dd1b15..14a287c31cf 100644 --- a/code/modules/admin/verbs/adminhelp.dm +++ b/code/modules/admin/verbs/adminhelp.dm @@ -1,33 +1,7 @@ +/proc/keywords_lookup(var/msg) - -//This is a list of words which are ignored by the parser when comparing message contents for names. MUST BE IN LOWER CASE! -var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey","alien","as") - -/client/verb/adminhelp(msg as text) - set category = "Admin" - set name = "Adminhelp" - - if(say_disabled) //This is here to try to identify lag problems - usr << "Speech is currently admin-disabled." - return - - //handle muting and automuting - if(prefs.muted & MUTE_ADMINHELP) - src << "Error: Admin-PM: You cannot send adminhelps (Muted)." - return - if(src.handle_spam_prevention(msg,MUTE_ADMINHELP)) - return - - //remove out adminhelp verb temporarily to prevent spamming of admins. - src.verbs -= /client/verb/adminhelp - spawn(1200) - src.verbs += /client/verb/adminhelp // 2 minute cool-down for adminhelps - - //clean the input msg - if(!msg) return - msg = sanitize(copytext(msg,1,MAX_MESSAGE_LEN)) - if(!msg) return - var/original_msg = msg + //This is a list of words which are ignored by the parser when comparing message contents for names. MUST BE IN LOWER CASE! + var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey","alien","as", "i") //explode the input msg into a list var/list/msglist = text2list(msg, " ") @@ -78,14 +52,50 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey"," mobs_found += found if(!ai_found && isAI(found)) ai_found = 1 - msg += "[original_word] (?) (FLW) " + msg += "[original_word](?|F) " continue msg += "[original_word] " + return msg + + +/client/var/adminhelptimerid = 0 + +/client/proc/giveadminhelpverb() + src.verbs |= /client/verb/adminhelp + adminhelptimerid = 0 + +/client/verb/adminhelp(msg as text) + set category = "Admin" + set name = "Adminhelp" + + if(say_disabled) //This is here to try to identify lag problems + usr << "Speech is currently admin-disabled." + return + + //handle muting and automuting + if(prefs.muted & MUTE_ADMINHELP) + src << "Error: Admin-PM: You cannot send adminhelps (Muted)." + return + if(src.handle_spam_prevention(msg,MUTE_ADMINHELP)) + return + + //clean the input msg + if(!msg) return + msg = sanitize(copytext(msg,1,MAX_MESSAGE_LEN)) + if(!msg) return + var/original_msg = msg + + //remove our adminhelp verb temporarily to prevent spamming of admins. + src.verbs -= /client/verb/adminhelp + adminhelptimerid = addtimer(src,"giveadminhelpverb",1200) //2 minute cooldown of admin helps + + msg = keywords_lookup(msg) if(!mob) return //this doesn't happen var/ref_mob = "\ref[mob]" - msg = "HELP: [key_name_admin(src)] (?) (PP) (VV) (SM) (FLW) (TP) [ai_found ? " (CL)" : ""]: [msg]" + var/ref_client = "\ref[src]" + msg = "HELP: [key_name(src)] (?) (PP) (VV) (SM) (FLW) (TP) (REJT): [msg]" //send this msg to all admins diff --git a/code/modules/admin/verbs/adminpm.dm b/code/modules/admin/verbs/adminpm.dm index 944677f2350..e79649e7dc4 100644 --- a/code/modules/admin/verbs/adminpm.dm +++ b/code/modules/admin/verbs/adminpm.dm @@ -32,6 +32,26 @@ cmd_admin_pm(targets[target],null) feedback_add_details("admin_verb","APM") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! +/client/proc/cmd_ahelp_reply(whom) + if(prefs.muted & MUTE_ADMINHELP) + src << "Error: Admin-PM: You are unable to use admin PM-s (muted)." + return + var/client/C + if(istext(whom)) + if(cmptext(copytext(whom,1,2),"@")) + whom = findStealthKey(whom) + C = directory[whom] + else if(istype(whom,/client)) + C = whom + if(!C) + if(holder) src << "Error: Admin-PM: Client not found." + return + message_admins("[key_name_admin(src)] has started replying to [key_name(C, 0, 0)]'s admin help.") + var/msg = input(src,"Message:", "Private message to [key_name(C, 0, 0)]") as text|null + if (!msg) + message_admins("[key_name_admin(src)] has cancelled their reply to [key_name(C, 0, 0)]'s admin help.") + return + cmd_admin_pm(whom, msg) //takes input from cmd_admin_pm_context, cmd_admin_pm_panel or /client/Topic and sends them a PM. //Fetching a message if needed. src is the sender and C is the target client @@ -71,14 +91,15 @@ if(!msg) return msg = emoji_parse(msg) + var/keywordparsedmsg = keywords_lookup(msg) if(C.holder) if(holder) //both are admins - C << "Admin PM from-[key_name(src, C, 1)]: [msg]" - src << "Admin PM to-[key_name(C, src, 1)]: [msg]" + C << "Admin PM from-[key_name(src, C, 1)]: [keywordparsedmsg]" + src << "Admin PM to-[key_name(C, src, 1)]: [keywordparsedmsg]" else //recipient is an admin but sender is not - C << "Reply PM from-[key_name(src, C, 1)]: [msg]" + C << "Reply PM from-[key_name(src, C, 1)]: [keywordparsedmsg]" src << "PM to-Admins: [msg]" //play the recieving admin the adminhelp sound (if they have them enabled) @@ -117,4 +138,4 @@ //we don't use message_admins here because the sender/receiver might get it too for(var/client/X in admins) if(X.key!=key && X.key!=C.key) //check client/X is an admin and isn't the sender or recipient - X << "PM: [key_name(src, X, 0)]->[key_name(C, X, 0)]: \blue [msg]" //inform X + X << "PM: [key_name(src, X, 0)]->[key_name(C, X, 0)]: \blue [keywordparsedmsg]" //inform X diff --git a/code/modules/admin/verbs/adminsay.dm b/code/modules/admin/verbs/adminsay.dm index 1e077bd66e9..ff1e0cf97a3 100644 --- a/code/modules/admin/verbs/adminsay.dm +++ b/code/modules/admin/verbs/adminsay.dm @@ -8,7 +8,7 @@ if(!msg) return log_admin("[key_name(src)] : [msg]") - + msg = keywords_lookup(msg) if(check_rights(R_ADMIN,0)) msg = "ADMIN: [key_name(usr, 1)] (FLW): [msg]" admins << msg diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index c5f1a2bb22f..9dc2e9482ba 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -83,16 +83,13 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that usr << "[procname] returned: [returnval ? returnval : "null"]" feedback_add_details("admin_verb","APC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! -/client/proc/callproc_datum(var/atom/A as null|area|mob|obj|turf) +/client/proc/callproc_datum(var/A as null|area|mob|obj|turf) set category = "Debug" set name = "Atom ProcCall" if(!check_rights(R_DEBUG)) return - if(!istype(A)) - return - var/procname = input("Proc name, eg: fake_blood","Proc:", null) as text|null if(!procname) return @@ -101,7 +98,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that if(!lst) return - if(!A || A.gc_destroyed) + if(!A || !IsValidSrc(A)) usr << "Error: callproc_datum(): owner of proc no longer exists." return if(!hascall(A,procname)) @@ -885,7 +882,7 @@ var/global/list/g_fancy_list_of_types = null M.equip_to_slot_or_del(new /obj/item/clothing/mask/cigarette/cigar/cohiba(M), slot_wear_mask) M.equip_to_slot_or_del(new /obj/item/clothing/head/centhat(M), slot_head) M.equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/revolver/mateba(M), slot_belt) - M.equip_to_slot_or_del(new /obj/item/weapon/lighter/zippo(M), slot_r_store) + M.equip_to_slot_or_del(new /obj/item/weapon/lighter(M), slot_r_store) M.equip_to_slot_or_del(new /obj/item/ammo_box/a357(M), slot_l_store) M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(M), slot_back) @@ -912,7 +909,7 @@ var/global/list/g_fancy_list_of_types = null M.equip_to_slot_or_del(new /obj/item/clothing/mask/cigarette/cigar/havana(M), slot_wear_mask) M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/beret(M), slot_head) M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/pulse/pistol/m1911(M), slot_belt) - M.equip_to_slot_or_del(new /obj/item/weapon/lighter/zippo(M), slot_r_store) + M.equip_to_slot_or_del(new /obj/item/weapon/lighter(M), slot_r_store) M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(M), slot_back) var/obj/item/weapon/card/id/W = new(M) diff --git a/code/modules/awaymissions/corpse.dm b/code/modules/awaymissions/corpse.dm index c52adc42c2c..bc6aebd7a3a 100644 --- a/code/modules/awaymissions/corpse.dm +++ b/code/modules/awaymissions/corpse.dm @@ -260,7 +260,7 @@ corpsehelmet = /obj/item/clothing/head/centhat corpsegloves = /obj/item/clothing/gloves/combat corpseshoes = /obj/item/clothing/shoes/combat/swat - corpsepocket1 = /obj/item/weapon/lighter/zippo + corpsepocket1 = /obj/item/weapon/lighter corpseid = 1 corpseidjob = "Commander" corpseidaccess = "Captain" diff --git a/code/modules/client/client defines.dm b/code/modules/client/client defines.dm index 7467f12ad97..06d2c036020 100644 --- a/code/modules/client/client defines.dm +++ b/code/modules/client/client defines.dm @@ -39,3 +39,6 @@ var/related_accounts_cid = "Requires database" //So admins know why it isn't working - Used to determine what other accounts previously logged in from this computer id preload_rsc = PRELOAD_RSC + + // Used by html_interface module. + var/hi_last_pos \ No newline at end of file diff --git a/code/modules/client/client procs.dm b/code/modules/client/client procs.dm index 46881e3cb1f..366f113a114 100644 --- a/code/modules/client/client procs.dm +++ b/code/modules/client/client procs.dm @@ -31,6 +31,9 @@ //Admin PM if(href_list["priv_msg"]) + if (href_list["ahelp_reply"]) + cmd_ahelp_reply(href_list["priv_msg"]) + return cmd_admin_pm(href_list["priv_msg"],null) return @@ -233,7 +236,7 @@ var/next_external_rsc = 0 query_watch.Execute() if(query_watch.NextRow()) message_admins("Notice: [key_name_admin(src)] is flagged for watching and has just connected - Reason: [query_watch.item[2]]") - send2irc_adminless_only("Watchlist", "[key_name_admin(src)] is flagged for watching and has just connected - Reason: [query_watch.item[2]]") + send2irc_adminless_only("Watchlist", "[key_name(src)] is flagged for watching and has just connected - Reason: [query_watch.item[2]]") var/admin_rank = "Player" if (src.holder && src.holder.rank) @@ -269,6 +272,19 @@ var/next_external_rsc = 0 //send resources to the client. It's here in its own proc so we can move it around easiliy if need be /client/proc/send_resources() + + spawn + // Preload the HTML interface. This needs to be done due to BYOND bug http://www.byond.com/forum/?post=1487244 + var/datum/html_interface/hi + for (var/type in typesof(/datum/html_interface)) + hi = new type(null) + hi.sendResources(src) + + // Preload the crew monitor. This needs to be done due to BYOND bug http://www.byond.com/forum/?post=1487244 + spawn + if (crewmonitor && crewmonitor.initialized) + crewmonitor.sendResources(src) + //Send nanoui files to client SSnano.send_resources(src) getFiles( diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 049e675e104..186b2f0fca0 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -1,5 +1,6 @@ /obj/item/clothing name = "clothing" + burn_state = 0 //Burnable var/flash_protect = 0 //Malk: What level of bright light protection item has. 1 = Flashers, Flashes, & Flashbangs | 2 = Welding | -1 = OH GOD WELDING BURNT OUT MY RETINAS var/tint = 0 //Malk: Sets the item's level of visual impairment tint, normally set to the same as flash_protect var/up = 0 // but seperated to allow items to protect but not impair vision, like space helmets @@ -23,6 +24,7 @@ w_class = 1.0 throwforce = 0 slot_flags = SLOT_EARS + burn_state = -1 //Not Burnable /obj/item/clothing/ears/earmuffs name = "earmuffs" @@ -32,14 +34,14 @@ flags = EARBANGPROTECT strip_delay = 15 put_on_delay = 25 - + burn_state = 0 //Burnable //Glasses /obj/item/clothing/glasses name = "glasses" icon = 'icons/obj/clothing/glasses.dmi' w_class = 2.0 - flags = GLASSESCOVERSEYES + flags_cover = GLASSESCOVERSEYES slot_flags = SLOT_EYES var/vision_flags = 0 var/darkness_view = 2//Base human is 2 @@ -48,7 +50,7 @@ var/list/icon/current = list() //the current hud icons strip_delay = 20 put_on_delay = 25 - + burn_state = -1 //Not Burnable /* SEE_SELF // can see self, no matter what SEE_MOBS // can see all mobs, no matter what @@ -114,6 +116,7 @@ BLIND // can't see anything permeability_coefficient = initial(permeability_coefficient) flags |= visor_flags flags_inv |= visor_flags_inv + flags_cover = initial(flags_cover) user << "You push \the [src] back into place." src.mask_adjusted = 0 slot_flags = initial(slot_flags) @@ -124,6 +127,7 @@ BLIND // can't see anything permeability_coefficient = null flags &= ~visor_flags flags_inv &= ~visor_flags_inv + flags_cover &= 0 src.mask_adjusted = 1 if(adjusted_flags) slot_flags = adjusted_flags @@ -167,7 +171,7 @@ BLIND // can't see anything name = "space helmet" icon_state = "spaceold" desc = "A special helmet with solar UV shielding to protect your eyes from harmful rays." - flags = HEADCOVERSEYES | BLOCKHAIR | HEADCOVERSMOUTH | STOPSPRESSUREDMAGE | THICKMATERIAL + flags = BLOCKHAIR | STOPSPRESSUREDMAGE | THICKMATERIAL item_state = "spaceold" permeability_coefficient = 0.01 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 50) @@ -179,6 +183,8 @@ BLIND // can't see anything flash_protect = 2 strip_delay = 50 put_on_delay = 50 + flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH + burn_state = -1 //Not Burnable /obj/item/clothing/suit/space name = "space suit" @@ -200,6 +206,7 @@ BLIND // can't see anything max_heat_protection_temperature = SPACE_SUIT_MAX_TEMP_PROTECT strip_delay = 80 put_on_delay = 80 + burn_state = -1 //Not Burnable //Under clothing /obj/item/clothing/under @@ -211,18 +218,20 @@ BLIND // can't see anything armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) var/fitted = FEMALE_UNIFORM_FULL // For use in alternate clothing styles for women var/has_sensor = 1//For the crew computer 2 = unable to change mode - var/sensor_mode = 0 + var/random_sensor = 1 + var/sensor_mode = 0 /* 1 = Report living/dead, 2 = Report detailed damages, 3 = Report location */ var/can_adjust = 1 var/adjusted = 0 var/suit_color = null - - /* - 1 = Report living/dead - 2 = Report detailed damages - 3 = Report location - */ var/obj/item/clothing/tie/hastie = null +/obj/item/clothing/under/New() + if(random_sensor) + sensor_mode = pick(0,1,2,3) + adjusted = 0 + suit_color = item_color + ..() + /obj/item/clothing/under/attackby(obj/item/I, mob/user, params) attachTie(I, user) ..() @@ -383,18 +392,13 @@ atom/proc/generate_female_clothing(index,t_color,icon,type) var/mob/living/carbon/human/H = loc H.update_inv_w_uniform(0) -/obj/item/clothing/under/New() - sensor_mode = pick(0,1,2,3) - adjusted = 0 - suit_color = item_color - ..() - /obj/item/clothing/proc/weldingvisortoggle() //Malk: proc to toggle welding visors on helmets, masks, goggles, etc. if(can_use(usr)) if(up) up = !up flags |= (visor_flags) flags_inv |= (visor_flags_inv) + flags_cover = initial(flags_cover) icon_state = initial(icon_state) usr << "You pull \the [src] down." flash_protect = initial(flash_protect) @@ -403,6 +407,7 @@ atom/proc/generate_female_clothing(index,t_color,icon,type) up = !up flags &= ~(visor_flags) flags_inv &= ~(visor_flags_inv) + flags_cover &= 0 icon_state = "[initial(icon_state)]up" usr << "You push \the [src] up." flash_protect = 0 diff --git a/code/modules/clothing/glasses/glasses.dm b/code/modules/clothing/glasses/glasses.dm index f223ca126fb..48735b7a688 100644 --- a/code/modules/clothing/glasses/glasses.dm +++ b/code/modules/clothing/glasses/glasses.dm @@ -135,7 +135,7 @@ action_button_name = "Toggle Welding Goggles" flash_protect = 2 tint = 2 - visor_flags = GLASSESCOVERSEYES + flags_cover = GLASSESCOVERSEYES visor_flags_inv = HIDEEYES diff --git a/code/modules/clothing/gloves/color.dm b/code/modules/clothing/gloves/color.dm index 9d7bf51d33c..18f5c7937f4 100644 --- a/code/modules/clothing/gloves/color.dm +++ b/code/modules/clothing/gloves/color.dm @@ -6,6 +6,7 @@ siemens_coefficient = 0 permeability_coefficient = 0.05 item_color="yellow" + burn_state = -1 //Won't burn in fires /obj/item/clothing/gloves/color/yellow/fake desc = "These gloves will protect the wearer from electric shock. They don't feel like rubber..." @@ -19,6 +20,7 @@ siemens_coefficient = 1 //Set to a default of 1, gets overridden in New() permeability_coefficient = 0.05 item_color="yellow" + burn_state = -1 //Won't burn in fires /obj/item/clothing/gloves/color/fyellow/New() siemens_coefficient = pick(0,0.5,0.5,0.5,0.5,0.75,1.5) @@ -33,7 +35,7 @@ min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT heat_protection = HANDS max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT - + burn_state = -1 //Won't burn in fires /obj/item/clothing/gloves/color/black/hos item_color = "hosred" //Exists for washing machines. Is not different from black gloves in any way. @@ -148,6 +150,7 @@ permeability_coefficient = 0.01 item_color="white" transfer_prints = TRUE + burn_state = -1 //Won't burn in fires /obj/item/clothing/gloves/color/latex/nitrile name = "nitrile gloves" diff --git a/code/modules/clothing/gloves/miscellaneous.dm b/code/modules/clothing/gloves/miscellaneous.dm index 317ae88ac81..257394e13ce 100644 --- a/code/modules/clothing/gloves/miscellaneous.dm +++ b/code/modules/clothing/gloves/miscellaneous.dm @@ -21,6 +21,7 @@ min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT heat_protection = HANDS max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT + burn_state = -1 //Not Burnable /obj/item/clothing/gloves/combat name = "combat gloves" @@ -33,4 +34,5 @@ cold_protection = HANDS min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT heat_protection = HANDS - max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT \ No newline at end of file + max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT + burn_state = -1 //Won't burn in fires \ No newline at end of file diff --git a/code/modules/clothing/head/collectable.dm b/code/modules/clothing/head/collectable.dm index 4ada082a0fa..7dad46544c3 100644 --- a/code/modules/clothing/head/collectable.dm +++ b/code/modules/clothing/head/collectable.dm @@ -58,6 +58,7 @@ desc = "A collectable welding helmet. Now with 80% less lead! Not for actual welding. Any welding done while wearing this helmet is done so at the owner's own risk!" icon_state = "welding" item_state = "welding" + burn_state = -1 //Won't burn in fires /obj/item/clothing/head/collectable/slime name = "collectable slime hat" @@ -110,9 +111,11 @@ desc = "Go Red! I mean Green! I mean Red! No Green!" icon_state = "thunderdome" item_state = "thunderdome" + burn_state = -1 //Won't burn in fires /obj/item/clothing/head/collectable/swat name = "collectable SWAT helmet" desc = "That's not real blood. That's red paint." //Reference to the actual description icon_state = "swat" - item_state = "swat" \ No newline at end of file + item_state = "swat" + burn_state = -1 //Won't burn in fires \ No newline at end of file diff --git a/code/modules/clothing/head/hardhat.dm b/code/modules/clothing/head/hardhat.dm index cf491f337dd..16d33da43c8 100644 --- a/code/modules/clothing/head/hardhat.dm +++ b/code/modules/clothing/head/hardhat.dm @@ -9,6 +9,7 @@ armor = list(melee = 15, bullet = 5, laser = 20,energy = 10, bomb = 20, bio = 10, rad = 20) flags_inv = 0 action_button_name = "Toggle Helmet Light" + burn_state = -1 //Won't burn in fires attack_self(mob/user) if(!isturf(user.loc)) diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index ef549cf4acb..acabe7340c5 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -2,7 +2,7 @@ name = "helmet" desc = "Standard Security gear. Protects the head from impacts." icon_state = "helmet" - flags = HEADCOVERSEYES | HEADBANGPROTECT + flags = HEADBANGPROTECT item_state = "helmet" armor = list(melee = 25, bullet = 15, laser = 25,energy = 10, bomb = 25, bio = 0, rad = 0) flags_inv = HIDEEARS|HIDEEYES @@ -11,9 +11,11 @@ heat_protection = HEAD max_heat_protection_temperature = HELMET_MAX_TEMP_PROTECT strip_delay = 60 + burn_state = -1 //Won't burn in fires var/obj/machinery/camera/portable/helmetCam = null var/spawnWithHelmetCam = 0 var/canAttachCam = 0 + flags_cover = HEADCOVERSEYES /obj/item/clothing/head/helmet/New() @@ -49,14 +51,14 @@ toggle_message = "You pull the visor down on" alt_toggle_message = "You push the visor up on" can_toggle = 1 - flags = HEADCOVERSEYES|HEADCOVERSMOUTH|HEADBANGPROTECT + flags = HEADBANGPROTECT armor = list(melee = 41, bullet = 15, laser = 5,energy = 5, bomb = 5, bio = 2, rad = 0) flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE strip_delay = 80 action_button_name = "Toggle Helmet Visor" - visor_flags = HEADCOVERSEYES|HEADCOVERSMOUTH visor_flags_inv = HIDEMASK|HIDEEYES|HIDEFACE toggle_cooldown = 0 + flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH /obj/item/clothing/head/helmet/attack_self() if(usr.canmove && !usr.stat && !usr.restrained() && can_toggle) @@ -126,7 +128,7 @@ /obj/item/clothing/head/helmet/roman name = "roman helmet" desc = "An ancient helmet made of bronze and leather." - flags = HEADCOVERSEYES + flags_cover = HEADCOVERSEYES armor = list(melee = 25, bullet = 0, laser = 25, energy = 10, bomb = 10, bio = 0, rad = 0) icon_state = "roman" item_state = "roman" @@ -142,15 +144,16 @@ name = "gladiator helmet" desc = "Ave, Imperator, morituri te salutant." icon_state = "gladiator" - flags = HEADCOVERSEYES|BLOCKHAIR + flags = BLOCKHAIR item_state = "gladiator" flags_inv = HIDEMASK|HIDEEARS|HIDEEYES + flags_cover = HEADCOVERSEYES /obj/item/clothing/head/helmet/redtaghelm name = "red laser tag helmet" desc = "They have chosen their own end." icon_state = "redtaghelm" - flags = HEADCOVERSEYES + flags_cover = HEADCOVERSEYES item_state = "redtaghelm" armor = list(melee = 15, bullet = 10, laser = 20,energy = 10, bomb = 20, bio = 0, rad = 0) // Offer about the same protection as a hardhat. @@ -160,7 +163,7 @@ name = "blue laser tag helmet" desc = "They'll need more men." icon_state = "bluetaghelm" - flags = HEADCOVERSEYES + flags_cover = HEADCOVERSEYES item_state = "bluetaghelm" armor = list(melee = 15, bullet = 10, laser = 20,energy = 10, bomb = 20, bio = 0, rad = 0) // Offer about the same protection as a hardhat. diff --git a/code/modules/clothing/head/jobs.dm b/code/modules/clothing/head/jobs.dm index d19c7b7397c..7d2d81b6fa9 100644 --- a/code/modules/clothing/head/jobs.dm +++ b/code/modules/clothing/head/jobs.dm @@ -47,7 +47,8 @@ name = "nun hood" desc = "Maximum piety in this star system." icon_state = "nun_hood" - flags = HEADCOVERSEYES|BLOCKHAIR + flags = BLOCKHAIR + flags_cover = HEADCOVERSEYES /obj/item/clothing/head/det_hat name = "detective's fedora" diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm index 7130556f958..28f5f5c3b0e 100644 --- a/code/modules/clothing/head/misc.dm +++ b/code/modules/clothing/head/misc.dm @@ -41,7 +41,8 @@ name = "hastur's hood" desc = "It's unspeakably stylish." icon_state = "hasturhood" - flags = HEADCOVERSEYES|BLOCKHAIR + flags = BLOCKHAIR + flags_cover = HEADCOVERSEYES /obj/item/clothing/head/nursehat name = "nurse's hat" @@ -56,19 +57,12 @@ flags = BLOCKHAIR flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE -/obj/item/clothing/head/that - name = "sturdy top-hat" - desc = "It's an amish looking armored top hat." - icon_state = "tophat" - item_state = "that" - flags_inv = 0 - /obj/item/clothing/head/cardborg name = "cardborg helmet" desc = "A helmet made out of a box." icon_state = "cardborg_h" item_state = "cardborg_h" - flags = HEADCOVERSEYES + flags_cover = HEADCOVERSEYES flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE /obj/item/clothing/head/justice @@ -76,7 +70,8 @@ desc = "Fight for what's righteous!" icon_state = "justicered" item_state = "justicered" - flags = HEADCOVERSEYES|BLOCKHAIR + flags = BLOCKHAIR + flags_cover = HEADCOVERSEYES /obj/item/clothing/head/justice/blue icon_state = "justiceblue" @@ -213,6 +208,7 @@ throw_range = 5 w_class = 2.0 attack_verb = list("warned", "cautioned", "smashed") + burn_state = -1 //Won't burn in fires /obj/item/clothing/head/santa name = "santa hat" diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm index 6eee2eaf8a0..8aa832c5d27 100644 --- a/code/modules/clothing/head/misc_special.dm +++ b/code/modules/clothing/head/misc_special.dm @@ -15,7 +15,7 @@ name = "welding helmet" desc = "A head-mounted face cover designed to protect the wearer completely from space-arc eye." icon_state = "welding" - flags = HEADCOVERSEYES | HEADCOVERSMOUTH + flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH item_state = "welding" m_amt = 1750 g_amt = 400 @@ -25,8 +25,8 @@ armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE action_button_name = "Toggle Welding Helmet" - visor_flags = HEADCOVERSEYES | HEADCOVERSMOUTH visor_flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE + burn_state = -1 //Won't burn in fires /obj/item/clothing/head/welding/attack_self() toggle() @@ -47,7 +47,7 @@ name = "cake-hat" desc = "It's tasty looking!" icon_state = "cake0" - flags = HEADCOVERSEYES + flags_cover = HEADCOVERSEYES var/onfire = 0.0 var/status = 0 var/fire_resist = T0C+1300 //this is the max temp it can stand before you start to cook. although it might not burn away, you take damage @@ -116,11 +116,12 @@ icon_state = "hardhat0_pumpkin" item_state = "hardhat0_pumpkin" item_color = "pumpkin" - flags = HEADCOVERSEYES | BLOCKHAIR + flags = BLOCKHAIR flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE action_button_name = "Toggle Pumpkin Light" armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) brightness_on = 2 //luminosity when on + flags_cover = HEADCOVERSEYES /* * Kitty ears diff --git a/code/modules/clothing/masks/breath.dm b/code/modules/clothing/masks/breath.dm index 4735d9325b9..11480bfa95e 100644 --- a/code/modules/clothing/masks/breath.dm +++ b/code/modules/clothing/masks/breath.dm @@ -4,13 +4,15 @@ icon_state = "breath" item_state = "m_mask" body_parts_covered = 0 - flags = MASKCOVERSMOUTH | MASKINTERNALS - visor_flags = MASKCOVERSMOUTH | MASKINTERNALS + flags = MASKINTERNALS + visor_flags = MASKINTERNALS w_class = 2 gas_transfer_coefficient = 0.10 permeability_coefficient = 0.50 action_button_name = "Adjust Breath Mask" ignore_maskadjust = 0 + flags_cover = MASKCOVERSMOUTH + burn_state = -1 //Won't burn in fires /obj/item/clothing/mask/breath/attack_self(var/mob/user) adjustmask(user) diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm index bf59b9d3278..e57e1920df3 100644 --- a/code/modules/clothing/masks/gasmask.dm +++ b/code/modules/clothing/masks/gasmask.dm @@ -2,12 +2,14 @@ name = "gas mask" desc = "A face-covering mask that can be connected to an air supply. While good for concealing your identity, it isn't good for blocking gas flow." //More accurate icon_state = "gas_alt" - flags = MASKCOVERSMOUTH | MASKCOVERSEYES | BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS + flags = BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS flags_inv = HIDEEARS|HIDEEYES|HIDEFACE w_class = 3.0 item_state = "gas_alt" gas_transfer_coefficient = 0.01 permeability_coefficient = 0.01 + flags_cover = MASKCOVERSEYES | MASKCOVERSMOUTH + burn_state = -1 //Won't burn in fires // **** Welding gas mask **** @@ -22,7 +24,7 @@ armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) origin_tech = "materials=2;engineering=2" action_button_name = "Toggle Welding Mask" - visor_flags = MASKCOVERSEYES + flags_cover = MASKCOVERSEYES visor_flags_inv = HIDEEYES /obj/item/clothing/mask/gas/welding/attack_self() @@ -47,10 +49,11 @@ icon_state = "sechailer" var/aggressiveness = 2 ignore_maskadjust = 0 - flags = MASKCOVERSMOUTH | BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS + flags = BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS flags_inv = HIDEFACE - visor_flags = MASKCOVERSMOUTH | BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS + visor_flags = BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS visor_flags_inv = HIDEFACE + flags_cover = MASKCOVERSMOUTH /obj/item/clothing/mask/gas/sechailer/swat name = "\improper SWAT mask" @@ -222,9 +225,11 @@ /obj/item/clothing/mask/gas/clown_hat name = "clown wig and mask" desc = "A true prankster's facial attire. A clown is incomplete without his wig and mask." - flags = MASKCOVERSEYES | BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS + flags = MASKINTERNALS icon_state = "clown" item_state = "clown_hat" + flags_cover = MASKCOVERSEYES + burn_state = 0 //Burnable /obj/item/clothing/mask/gas/clown_hat/attack_self(mob/user) @@ -245,30 +250,38 @@ /obj/item/clothing/mask/gas/sexyclown name = "sexy-clown wig and mask" desc = "A feminine clown mask for the dabbling crossdressers or female entertainers." - flags = MASKCOVERSEYES | BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS + flags = MASKINTERNALS icon_state = "sexyclown" item_state = "sexyclown" + flags_cover = MASKCOVERSEYES + burn_state = 0 //Burnable /obj/item/clothing/mask/gas/mime name = "mime mask" desc = "The traditional mime's mask. It has an eerie facial posture." - flags = MASKCOVERSEYES | BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS + flags = MASKINTERNALS icon_state = "mime" item_state = "mime" + flags_cover = MASKCOVERSEYES + burn_state = 0 //Burnable /obj/item/clothing/mask/gas/monkeymask name = "monkey mask" desc = "A mask used when acting as a monkey." - flags = MASKCOVERSEYES | BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS + flags = MASKINTERNALS icon_state = "monkeymask" item_state = "monkeymask" + flags_cover = MASKCOVERSEYES + burn_state = 0 //Burnable /obj/item/clothing/mask/gas/sexymime name = "sexy mime mask" desc = "A traditional female mime's mask." - flags = MASKCOVERSEYES | BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS + flags = MASKINTERNALS icon_state = "sexymime" item_state = "sexymime" + flags_cover = MASKCOVERSEYES + burn_state = 0 //Burnable /obj/item/clothing/mask/gas/death_commando name = "Death Commando Mask" @@ -279,9 +292,12 @@ name = "cyborg visor" desc = "Beep boop." icon_state = "death" + burn_state = 0 //Burnable /obj/item/clothing/mask/gas/owl_mask name = "owl mask" desc = "Twoooo!" - flags = MASKCOVERSEYES | BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS - icon_state = "owl" \ No newline at end of file + icon_state = "owl" + flags = MASKINTERNALS + flags_cover = MASKCOVERSEYES + burn_state = 0 //Burnable diff --git a/code/modules/clothing/masks/miscellaneous.dm b/code/modules/clothing/masks/miscellaneous.dm index dc9c31861c7..e5a05417974 100644 --- a/code/modules/clothing/masks/miscellaneous.dm +++ b/code/modules/clothing/masks/miscellaneous.dm @@ -3,7 +3,7 @@ desc = "To stop that awful noise." icon_state = "muzzle" item_state = "blindfold" - flags = MASKCOVERSMOUTH + flags_cover = MASKCOVERSMOUTH w_class = 2 gas_transfer_coefficient = 0.90 put_on_delay = 20 @@ -22,9 +22,8 @@ icon_state = "sterile" item_state = "sterile" w_class = 1 - flags = MASKCOVERSMOUTH + flags_cover = MASKCOVERSMOUTH flags_inv = HIDEFACE - visor_flags = MASKCOVERSMOUTH visor_flags_inv = HIDEFACE gas_transfer_coefficient = 0.90 permeability_coefficient = 0.01 @@ -111,9 +110,8 @@ name = "botany bandana" desc = "A fine bandana with nanotech lining and a hydroponics pattern." w_class = 1 - flags = MASKCOVERSMOUTH + flags_cover = MASKCOVERSMOUTH flags_inv = HIDEFACE - visor_flags = MASKCOVERSMOUTH visor_flags_inv = HIDEFACE slot_flags = SLOT_MASK ignore_maskadjust = 0 diff --git a/code/modules/clothing/shoes/bananashoes.dm b/code/modules/clothing/shoes/bananashoes.dm index f1da928afff..f574c6a88cc 100644 --- a/code/modules/clothing/shoes/bananashoes.dm +++ b/code/modules/clothing/shoes/bananashoes.dm @@ -5,57 +5,63 @@ desc = "Lost prototype of advanced clown tech. Powered by bananium, these shoes leave a trail of chaos in their wake." icon_state = "clown_prototype_off" var/on = 0 - var/bananium = 0 + var/datum/mineral_container/bananium action_button_name = "Toggle Shoes" +/obj/item/clothing/shoes/clown_shoes/banana_shoes/New() + ..() + bananium = new/datum/mineral_container(src,/obj/item/stack/sheet/mineral/bananium,200000) + /obj/item/clothing/shoes/clown_shoes/banana_shoes/step_action() if(on) - if(footstep > 1)//honks when activated + if(footstep > 1)//honks when its on playsound(src, "sound/items/bikehorn.ogg", 75, 1) footstep = 0 else footstep++ new/obj/item/weapon/grown/bananapeel/specialpeel(get_step(src,turn(usr.dir, 180)), 5) //honk - bananium -= 100 - if(bananium < 100) + bananium.use_amount(100) + if(bananium.amount < 100) on = !on update_icon() - usr << "You ran out of bananium!" + loc << "You ran out of bananium!" else ..() /obj/item/clothing/shoes/clown_shoes/banana_shoes/attack_self(mob/user) - if(bananium > 0) - var/sheet_amount = round(bananium / 2000) - if(sheet_amount > 0) - var/obj/item/stack/sheet/mineral/bananium/M = new/obj/item/stack/sheet/mineral/bananium(get_turf(loc)) - M.amount = sheet_amount - bananium -= sheet_amount * 2000 - user << "You retrieve [sheet_amount] sheets of bananium." + var/sheet_amount = bananium.retrieve_all() + if(sheet_amount) + user << "You retrieve [sheet_amount] sheets of bananium from the prototype shoes." + else + user << "You cannot retrieve any bananium from the prototype shoes." /obj/item/clothing/shoes/clown_shoes/banana_shoes/attackby(obj/item/O, mob/user, params) - if(istype(O,/obj/item/stack/sheet/mineral/bananium)) - var/obj/item/stack/sheet/mineral/bananium/M = O - bananium += 2000 * M.amount - user << "You insert [M.amount] bananium sheets into the prototype shoes." - M.use(M.amount) + var/sheet_amount = bananium.insert_sheet(O) + if(sheet_amount > 0) + user << "You insert [sheet_amount] bananium sheets into the prototype shoes." + var/obj/item/stack/sheet/S = O + S.use(sheet_amount) + else if(sheet_amount < 0) + user << "You can only fit bananium sheets into these shoes!" + else + user << "You cannot insert more bananium into the prototype shoes." /obj/item/clothing/shoes/clown_shoes/banana_shoes/examine(mob/user) ..() - user << "The shoes are [on ? "enabled" : "disabled"]. There is [bananium] bananium left." + user << "The shoes are [on ? "enabled" : "disabled"]. There is [bananium.amount] bananium left." /obj/item/clothing/shoes/clown_shoes/banana_shoes/ui_action_click() - if(bananium > 0) + if(bananium.amount) on = !on update_icon() - usr << "You [on ? "activate" : "deactivate"] the prototype shoes." + loc << "You [on ? "activate" : "deactivate"] the prototype shoes." else - usr << "You need bananium to turn the prototype shoes on!" + loc << "You need bananium to turn the prototype shoes on!" /obj/item/clothing/shoes/clown_shoes/banana_shoes/update_icon() if(on) icon_state = "clown_prototype_on" else icon_state = "clown_prototype_off" - usr.update_inv_shoes() \ No newline at end of file + usr.update_inv_shoes() diff --git a/code/modules/clothing/shoes/magboots.dm b/code/modules/clothing/shoes/magboots.dm index 8d742f983db..843f69e25c5 100644 --- a/code/modules/clothing/shoes/magboots.dm +++ b/code/modules/clothing/shoes/magboots.dm @@ -8,7 +8,7 @@ action_button_name = "Toggle Magboots" strip_delay = 70 put_on_delay = 70 - + burn_state = -1 //Won't burn in fires /obj/item/clothing/shoes/magboots/verb/toggle() set name = "Toggle Magboots" diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm index 1a0a0a4f98c..58101dca40a 100644 --- a/code/modules/clothing/shoes/miscellaneous.dm +++ b/code/modules/clothing/shoes/miscellaneous.dm @@ -15,6 +15,7 @@ permeability_coefficient = 0.05 flags = NOSLIP origin_tech = "syndicate=3" + burn_state = -1 //Won't burn in fires /obj/item/clothing/shoes/sneakers/mime name = "mime shoes" @@ -28,6 +29,7 @@ item_state = "jackboots" armor = list(melee = 25, bullet = 25, laser = 25, energy = 25, bomb = 50, bio = 10, rad = 0) strip_delay = 70 + burn_state = -1 //Won't burn in fires /obj/item/clothing/shoes/combat/swat //overpowered boots for death squads name = "\improper SWAT boots" @@ -58,6 +60,7 @@ slowdown = SHOES_SLOWDOWN+1 strip_delay = 50 put_on_delay = 50 + burn_state = -1 //Won't burn in fires /obj/item/clothing/shoes/clown_shoes desc = "The prankster's standard-issue clowning shoes. Damn, they're huge!" @@ -83,6 +86,7 @@ item_color = "hosred" strip_delay = 50 put_on_delay = 50 + burn_state = -1 //Won't burn in fires /obj/item/clothing/shoes/winterboots name = "winter boots" diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm index 352482476a1..06bdfc347d6 100644 --- a/code/modules/clothing/spacesuits/hardsuit.dm +++ b/code/modules/clothing/spacesuits/hardsuit.dm @@ -12,7 +12,8 @@ var/on = 0 item_color = "engineering" //Determines used sprites: hardsuit[on]-[color] and hardsuit[on]-[color]2 (lying down sprite) action_button_name = "Toggle Helmet Light" - flags = HEADCOVERSEYES | BLOCKHAIR | HEADCOVERSMOUTH | STOPSPRESSUREDMAGE | THICKMATERIAL | NODROP + flags = BLOCKHAIR | STOPSPRESSUREDMAGE | THICKMATERIAL | NODROP + flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH /obj/item/clothing/head/helmet/space/hardsuit/attack_self(mob/user) @@ -162,7 +163,8 @@ on = 0 var/obj/item/clothing/suit/space/hardsuit/syndi/linkedsuit = null action_button_name = "Toggle Helmet Mode" - flags = HEADCOVERSEYES | BLOCKHAIR | HEADCOVERSMOUTH | STOPSPRESSUREDMAGE | THICKMATERIAL | NODROP + flags = BLOCKHAIR | STOPSPRESSUREDMAGE | THICKMATERIAL | NODROP + flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH /obj/item/clothing/head/helmet/space/hardsuit/syndi/update_icon() icon_state = "hardsuit[on]-[item_color]" @@ -182,7 +184,8 @@ name = initial(name) desc = initial(desc) user.AddLuminosity(brightness_on) - flags |= HEADCOVERSEYES | HEADCOVERSMOUTH | STOPSPRESSUREDMAGE + flags |= STOPSPRESSUREDMAGE + flags_cover |= HEADCOVERSEYES | HEADCOVERSMOUTH flags_inv |= HIDEMASK|HIDEEYES|HIDEFACE cold_protection |= HEAD else @@ -190,7 +193,8 @@ name += " (combat)" desc = alt_desc user.AddLuminosity(-brightness_on) - flags &= ~(HEADCOVERSEYES| HEADCOVERSMOUTH | STOPSPRESSUREDMAGE) + flags &= ~(STOPSPRESSUREDMAGE) + flags_cover &= ~(HEADCOVERSEYES | HEADCOVERSMOUTH) flags_inv &= ~(HIDEMASK|HIDEEYES|HIDEFACE) cold_protection &= ~HEAD update_icon() diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm index 9fedcc0e3a8..2f7f85299e6 100644 --- a/code/modules/clothing/spacesuits/miscellaneous.dm +++ b/code/modules/clothing/spacesuits/miscellaneous.dm @@ -96,7 +96,8 @@ name = "Santa's hat" desc = "Ho ho ho. Merrry X-mas!" icon_state = "santahat" - flags = HEADCOVERSEYES | BLOCKHAIR | STOPSPRESSUREDMAGE + flags = BLOCKHAIR | STOPSPRESSUREDMAGE + flags_cover = HEADCOVERSEYES /obj/item/clothing/suit/space/santa name = "Santa's suit" @@ -115,9 +116,10 @@ icon_state = "pirate" item_state = "pirate" armor = list(melee = 30, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30) - flags = HEADCOVERSEYES | BLOCKHAIR | STOPSPRESSUREDMAGE + flags = BLOCKHAIR | STOPSPRESSUREDMAGE strip_delay = 40 put_on_delay = 20 + flags_cover = HEADCOVERSEYES /obj/item/clothing/suit/space/pirate name = "pirate coat" @@ -141,8 +143,9 @@ item_color = "ert_commander" armor = list(melee = 65, bullet = 50, laser = 50, energy = 50, bomb = 50, bio = 100, rad = 100) strip_delay = 130 - flags = HEADCOVERSEYES | BLOCKHAIR | HEADCOVERSMOUTH | STOPSPRESSUREDMAGE | THICKMATERIAL | NODROP + flags = BLOCKHAIR | STOPSPRESSUREDMAGE | THICKMATERIAL | NODROP brightness_on = 7 + flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH /obj/item/clothing/suit/space/hardsuit/ert name = "emergency response team suit" diff --git a/code/modules/clothing/spacesuits/plasmamen.dm b/code/modules/clothing/spacesuits/plasmamen.dm index b3e05df12ce..51ff7384a99 100644 --- a/code/modules/clothing/spacesuits/plasmamen.dm +++ b/code/modules/clothing/spacesuits/plasmamen.dm @@ -39,9 +39,10 @@ icon_state = "plasmaman_helmet0-plasma" item_color = "plasma" //needed for the helmet lighting item_state = "plasmaman_helmet0" - flags = HEADCOVERSEYES | BLOCKHAIR | HEADCOVERSMOUTH | STOPSPRESSUREDMAGE | THICKMATERIAL + flags = BLOCKHAIR | STOPSPRESSUREDMAGE | THICKMATERIAL //Removed the NODROP from /helmet/space/hardsuit. flags_inv = HIDEMASK|HIDEEARS|HIDEEYES //Removed the HIDEFACE from /helmet/space/hardsuit basestate = "plasmaman_helmet" + flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index 26e08d66b64..d3b65c48e3a 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -7,6 +7,7 @@ max_heat_protection_temperature = ARMOR_MAX_TEMP_PROTECT strip_delay = 60 put_on_delay = 40 + burn_state = -1 //Won't burn in fires /obj/item/clothing/suit/armor/vest name = "armor" @@ -45,6 +46,7 @@ cold_protection = CHEST|GROIN|ARMS|HANDS heat_protection = CHEST|GROIN|ARMS|HANDS strip_delay = 70 + burn_state = 0 //Burnable /obj/item/clothing/suit/armor/vest/warden/alt name = "warden's armored jacket" @@ -112,7 +114,7 @@ desc = "An armored vest with a detective's badge on it." icon_state = "detective-armor" allowed = list(/obj/item/weapon/tank/internals/emergency_oxygen,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/device/flashlight,/obj/item/weapon/gun/energy,/obj/item/weapon/gun/projectile,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/lighter,/obj/item/device/detective_scanner,/obj/item/device/taperecorder) - + burn_state = 0 //Burnable //Reactive armor @@ -200,4 +202,4 @@ name = "thunderdome suit" desc = "Pukish armor." //classy. icon_state = "tdgreen" - item_state = "tdgreen" \ No newline at end of file + item_state = "tdgreen" diff --git a/code/modules/clothing/suits/bio.dm b/code/modules/clothing/suits/bio.dm index 7d75bef57d4..093b14d0a1f 100644 --- a/code/modules/clothing/suits/bio.dm +++ b/code/modules/clothing/suits/bio.dm @@ -4,10 +4,12 @@ icon_state = "bio" desc = "A hood that protects the head and face from biological comtaminants." permeability_coefficient = 0.01 - flags = HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR|THICKMATERIAL + flags = BLOCKHAIR|THICKMATERIAL armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 20) flags_inv = HIDEMASK|HIDEEARS|HIDEEYES unacidable = 1 + burn_state = -1 //Not Burnable + flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH /obj/item/clothing/suit/bio_suit name = "bio suit" @@ -26,6 +28,7 @@ strip_delay = 70 put_on_delay = 70 unacidable = 1 + burn_state = -1 //Not Burnable //Standard biosuit, orange stripe /obj/item/clothing/head/bio_hood/general diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm index 7bad9b13400..1ae33b0de80 100644 --- a/code/modules/clothing/suits/jobs.dm +++ b/code/modules/clothing/suits/jobs.dm @@ -100,6 +100,7 @@ item_state = "hazard" blood_overlay_type = "armor" allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals/emergency_oxygen,/obj/item/device/t_scanner,) + burn_state = -1 //Won't burn in fires //Lawyer /obj/item/clothing/suit/toggle/lawyer diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index ba5549140ca..015e70defc7 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -16,6 +16,7 @@ blood_overlay_type = "armor" body_parts_covered = CHEST allowed = list (/obj/item/weapon/gun/energy/laser/bluetag) + burn_state = -1 //Won't burn in fires /obj/item/clothing/suit/redtag name = "red laser tag armor" @@ -25,6 +26,7 @@ blood_overlay_type = "armor" body_parts_covered = CHEST allowed = list (/obj/item/weapon/gun/energy/laser/redtag) + burn_state = -1 //Won't burn in fires /* * Costume @@ -88,7 +90,7 @@ w_class = 3 allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals/emergency_oxygen,/obj/item/toy) flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT - + burn_state = -1 //Won't burn in fires /obj/item/clothing/suit/hastur name = "\improper Hastur's robe" @@ -236,6 +238,8 @@ desc = "Pompadour not included." icon_state = "leatherjacket" item_state = "hostrench" + burn_state = -1 //Not Burnable + max_heat_protection_temperature = ARMOR_MAX_TEMP_PROTECT /obj/item/clothing/suit/jacket/leather/overcoat name = "leather overcoat" @@ -244,6 +248,22 @@ body_parts_covered = CHEST|GROIN|ARMS|LEGS cold_protection = CHEST|GROIN|ARMS|LEGS +/obj/item/clothing/suit/jacket/puffer + name = "puffer jacket" + desc = "A thick jacket with a rubbery, water-resistant shell." + icon_state = "pufferjacket" + item_state = "hostrench" + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 50, rad = 0) + +/obj/item/clothing/suit/jacket/puffer/vest + name = "puffer vest" + desc = "A thick vest with a rubbery, water-resistant shell." + icon_state = "puffervest" + item_state = "armor" + body_parts_covered = CHEST|GROIN + cold_protection = CHEST|GROIN + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 30, rad = 0) + /obj/item/clothing/suit/xenos name = "xenos suit" desc = "A suit made out of chitinous alien hide." @@ -252,6 +272,8 @@ body_parts_covered = CHEST|GROIN|LEGS|ARMS|HANDS flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT + + // WINTER COATS /obj/item/clothing/suit/hooded/wintercoat @@ -324,3 +346,9 @@ icon_state = "coatminer" allowed = list(/obj/item/weapon/pickaxe,/obj/item/device/flashlight,/obj/item/weapon/tank/internals/emergency_oxygen,/obj/item/toy,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/lighter) armor = list(melee = 10, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) + +/obj/item/clothing/suit/miljacket + name = "military jacket" + desc = "A canvas jacket styled after classical American military garb. Feels sturdy, yet comfortable." + icon_state = "militaryjacket" + item_state = "militaryjacket" diff --git a/code/modules/clothing/suits/toggles.dm b/code/modules/clothing/suits/toggles.dm index 44e2d98abf6..24989946279 100644 --- a/code/modules/clothing/suits/toggles.dm +++ b/code/modules/clothing/suits/toggles.dm @@ -8,6 +8,10 @@ MakeHood() ..() +/obj/item/clothing/suit/hooded/Destroy() + qdel(hood) + ..() + /obj/item/clothing/suit/hooded/proc/MakeHood() if(!hood) var/obj/item/clothing/head/winterhood/W = new hoodtype(src) @@ -93,6 +97,9 @@ verbs -= /obj/item/clothing/suit/space/hardsuit/verb/Jetpack verbs -= /obj/item/clothing/suit/space/hardsuit/verb/Jetpack_Rockets ..() +/obj/item/clothing/suit/space/hardsuit/Destroy() + qdel(helmet) + ..() /obj/item/clothing/suit/space/hardsuit/proc/MakeHelmet() if(!helmettype) diff --git a/code/modules/clothing/suits/utility.dm b/code/modules/clothing/suits/utility.dm index c32db545664..2236cf7f230 100644 --- a/code/modules/clothing/suits/utility.dm +++ b/code/modules/clothing/suits/utility.dm @@ -28,6 +28,7 @@ min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT strip_delay = 60 put_on_delay = 60 + burn_state = -1 //Not Burnable /obj/item/clothing/suit/fire/firefighter icon_state = "firesuit" @@ -55,7 +56,7 @@ name = "bomb hood" desc = "Use in case of bomb." icon_state = "bombsuit" - flags = HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR|THICKMATERIAL + flags = BLOCKHAIR|THICKMATERIAL armor = list(melee = 20, bullet = 0, laser = 20,energy = 10, bomb = 100, bio = 0, rad = 0) flags_inv = HIDEMASK|HIDEEARS|HIDEEYES cold_protection = HEAD @@ -64,7 +65,8 @@ max_heat_protection_temperature = HELMET_MAX_TEMP_PROTECT strip_delay = 70 put_on_delay = 70 - + flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH + burn_state = -1 //Not Burnable /obj/item/clothing/suit/bomb_suit name = "bomb suit" @@ -85,7 +87,7 @@ min_cold_protection_temperature = ARMOR_MIN_TEMP_PROTECT strip_delay = 70 put_on_delay = 70 - + burn_state = -1 //Not Burnable /obj/item/clothing/head/bomb_hood/security @@ -105,11 +107,12 @@ name = "radiation hood" icon_state = "rad" desc = "A hood with radiation protective properties. The label reads, 'Made with lead. Please do not consume insulation.'" - flags = HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR|THICKMATERIAL + flags = BLOCKHAIR|THICKMATERIAL armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 60, rad = 100) strip_delay = 60 put_on_delay = 60 - + flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH + burn_state = -1 //Not Burnable /obj/item/clothing/suit/radiation name = "radiation suit" @@ -127,3 +130,4 @@ strip_delay = 60 put_on_delay = 60 flags_inv = HIDEJUMPSUIT + burn_state = -1 //Not Burnable \ No newline at end of file diff --git a/code/modules/clothing/suits/wiz_robe.dm b/code/modules/clothing/suits/wiz_robe.dm index dd22a1e9f5c..299daf63152 100644 --- a/code/modules/clothing/suits/wiz_robe.dm +++ b/code/modules/clothing/suits/wiz_robe.dm @@ -8,6 +8,7 @@ strip_delay = 50 put_on_delay = 50 unacidable = 1 + burn_state = -1 //Won't burn in fires /obj/item/clothing/head/wizard/red name = "red wizard hat" @@ -63,7 +64,7 @@ strip_delay = 50 put_on_delay = 50 unacidable = 1 - + burn_state = -1 //Won't burn in fires /obj/item/clothing/suit/wizrobe/red name = "red wizard robe" @@ -117,6 +118,7 @@ permeability_coefficient = 1 armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) unacidable = 0 + burn_state = 0 //Burnable /obj/item/clothing/head/wizard/marisa/fake name = "witch hat" @@ -126,6 +128,7 @@ permeability_coefficient = 1 armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) unacidable = 0 + burn_state = 0 //Burnable /obj/item/clothing/suit/wizrobe/marisa/fake name = "witch robe" @@ -136,3 +139,4 @@ permeability_coefficient = 1 armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) unacidable = 0 + burn_state = 0 //Burnable \ No newline at end of file diff --git a/code/modules/clothing/under/chameleon.dm b/code/modules/clothing/under/chameleon.dm index 20acefb09d6..578a9d51ab5 100644 --- a/code/modules/clothing/under/chameleon.dm +++ b/code/modules/clothing/under/chameleon.dm @@ -7,8 +7,11 @@ desc = "It's a plain jumpsuit. It has a small dial on the wrist." action_button_name = "Change" origin_tech = "syndicate=3" + sensor_mode = 0 //Hey who's this guy on the Syndicate Shuttle?? + random_sensor = 0 var/list/clothing_choices = list() var/malfunctioning = 0 + burn_state = -1 //Won't burn in fires /obj/item/clothing/under/chameleon/New() ..() diff --git a/code/modules/clothing/under/color.dm b/code/modules/clothing/under/color.dm index 84355443233..c5bc98a2cc1 100644 --- a/code/modules/clothing/under/color.dm +++ b/code/modules/clothing/under/color.dm @@ -16,6 +16,7 @@ icon_state = "black" item_state = "bl_suit" item_color = "black" + burn_state = -1 //Won't burn in fires /obj/item/clothing/under/color/grey name = "grey jumpsuit" diff --git a/code/modules/clothing/under/jobs/engineering.dm b/code/modules/clothing/under/jobs/engineering.dm index bdd52e6ba23..57709b5bdfe 100644 --- a/code/modules/clothing/under/jobs/engineering.dm +++ b/code/modules/clothing/under/jobs/engineering.dm @@ -6,6 +6,7 @@ item_state = "gy_suit" item_color = "chief" armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 10) + burn_state = -1 //Won't burn in fires /obj/item/clothing/under/rank/atmospheric_technician desc = "It's a jumpsuit worn by atmospheric technicians." @@ -13,6 +14,7 @@ icon_state = "atmos" item_state = "atmos_suit" item_color = "atmos" + burn_state = -1 //Won't burn in fires /obj/item/clothing/under/rank/engineer desc = "It's an orange high visibility jumpsuit worn by engineers. It has minor radiation shielding." diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm index 42dae95f077..f62fd57bc30 100644 --- a/code/modules/clothing/under/miscellaneous.dm +++ b/code/modules/clothing/under/miscellaneous.dm @@ -37,6 +37,7 @@ item_state = "armor" can_adjust = 0 strip_delay = 100 + burn_state = -1 //Won't burn in fires /obj/item/clothing/under/waiter name = "waiter's outfit" @@ -54,6 +55,7 @@ item_color = "prisoner" has_sensor = 2 sensor_mode = 3 + random_sensor = 0 /obj/item/clothing/under/rank/mailman name = "mailman's jumpsuit" @@ -115,6 +117,7 @@ heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS max_heat_protection_temperature = SPACE_SUIT_MAX_TEMP_PROTECT can_adjust = 0 + burn_state = -1 //Won't burn in fires /obj/item/clothing/under/acj name = "administrative cybernetic jumpsuit" @@ -131,6 +134,7 @@ heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS max_heat_protection_temperature = SPACE_SUIT_MAX_TEMP_PROTECT can_adjust = 0 + burn_state = -1 //Won't burn in fires /obj/item/clothing/under/owl name = "owl uniform" @@ -338,6 +342,7 @@ body_parts_covered = CHEST|GROIN|ARMS fitted = NO_FEMALE_UNIFORM can_adjust = 0 + burn_state = -1 //Won't burn in fires /obj/item/clothing/under/sundress name = "sundress" diff --git a/code/modules/clothing/under/ties.dm b/code/modules/clothing/under/ties.dm index 1dda5f2ebd2..e828b3fe049 100644 --- a/code/modules/clothing/under/ties.dm +++ b/code/modules/clothing/under/ties.dm @@ -84,6 +84,7 @@ desc = "A bronze medal." icon_state = "bronze" item_color = "bronze" + burn_state = -1 //Won't burn in fires //Pinning medals on people /obj/item/clothing/tie/medal/attack(mob/living/carbon/human/M, mob/living/user) diff --git a/code/modules/crafting/table.dm b/code/modules/crafting/table.dm index 7f6e111599a..15aaca5671c 100644 --- a/code/modules/crafting/table.dm +++ b/code/modules/crafting/table.dm @@ -80,7 +80,7 @@ check_table() var/send_feedback = 1 if(check_contents(R) && check_tools(user, R)) - if(do_after(user, R.time)) + if(do_after(user, R.time, target = src)) if(!check_contents(R) || !check_tools(user, R)) return 0 var/atom/movable/I = new R.result (loc) diff --git a/code/modules/detectivework/footprints_and_rag.dm b/code/modules/detectivework/footprints_and_rag.dm index 022c1130ce7..73849b4b366 100644 --- a/code/modules/detectivework/footprints_and_rag.dm +++ b/code/modules/detectivework/footprints_and_rag.dm @@ -30,7 +30,7 @@ user.visible_message("[user] has smothered \the [A] with \the [src]!", "You smother \the [A] with \the [src]!", "You hear some struggling and muffled cries of surprise.") else if(istype(A) && src in user) user.visible_message("[user] starts to wipe down [A] with [src]!", "You start to wipe down [A] with [src]...") - if(do_after(user,30)) + if(do_after(user,30, target = A)) user.visible_message("[user] finishes wiping off the [A]!", "You finish wiping off the [A].") A.clean_blood() return diff --git a/code/modules/events/vent_clog.dm b/code/modules/events/vent_clog.dm index 7703be7fc73..6a9fcf140e5 100644 --- a/code/modules/events/vent_clog.dm +++ b/code/modules/events/vent_clog.dm @@ -33,7 +33,7 @@ R.my_atom = vent R.add_reagent(pick(gunk), 50) - var/datum/effect/effect/system/chem_smoke_spread/smoke = new + var/datum/effect/effect/system/smoke_spread/chem/smoke = new smoke.set_up(R, rand(1, 2), 0, vent, 0, silent = 1) playsound(vent.loc, 'sound/effects/smoke.ogg', 50, 1, -3) smoke.start() diff --git a/code/modules/events/wizard/curseditems.dm b/code/modules/events/wizard/curseditems.dm index c057de5b96e..32447e21cce 100644 --- a/code/modules/events/wizard/curseditems.dm +++ b/code/modules/events/wizard/curseditems.dm @@ -10,10 +10,11 @@ //item you want to equip to the hand, and set its slots_flags = null. Only items equiped to hands need do this. /datum/round_event/wizard/cursed_items/start() - var/item_set = pick("wizardmimic", "swords", "bigfatdoobie", "boxing", "voicemodulators") + var/item_set = pick("wizardmimic", "swords", "bigfatdoobie", "boxing", "voicemodulators", "catgirls2015") var/list/wearslots = list(slot_wear_suit, slot_shoes, slot_head, slot_wear_mask, slot_r_hand, slot_gloves, slot_ears) var/list/loadout = list() var/ruins_spaceworthiness + var/ruins_wizard_loadout loadout.len = 7 switch(item_set) @@ -29,9 +30,16 @@ loadout[6] = /obj/item/clothing/gloves/boxing ruins_spaceworthiness = 1 if("voicemodulators") loadout[4] = /obj/item/clothing/mask/gas/voice + if("catgirls2015") + loadout[3] = /obj/item/clothing/head/kitty + ruins_spaceworthiness = 1 + ruins_wizard_loadout = 1 for(var/mob/living/carbon/human/H in living_mob_list) if(ruins_spaceworthiness && (H.z != 1 || istype(H.loc, /turf/space))) continue //#savetheminers + if(ruins_wizard_loadout && H.mind && H.mind in ticker.mode.wizards) continue + if(item_set == "catgirls2015") //Wizard code means never having to say you're sorry + H.gender = FEMALE var/list/slots = list(H.wear_suit, H.shoes, H.head, H.wear_mask, H.r_hand, H.gloves, H.ears) //add new slots as needed to back for(var/i = 1, i <= loadout.len, i++) if(loadout[i]) @@ -43,6 +51,6 @@ I.name = "cursed " + I.name for(var/mob/living/carbon/human/H in living_mob_list) - var/datum/effect/effect/system/harmless_smoke_spread/smoke = new /datum/effect/effect/system/harmless_smoke_spread() + var/datum/effect/effect/system/smoke_spread/smoke = new smoke.set_up(max(1,1), 0, H.loc) - smoke.start() \ No newline at end of file + smoke.start() diff --git a/code/modules/events/wizard/imposter.dm b/code/modules/events/wizard/imposter.dm index 5d3567a9d47..cda6dc2d41f 100644 --- a/code/modules/events/wizard/imposter.dm +++ b/code/modules/events/wizard/imposter.dm @@ -14,7 +14,7 @@ if(!candidates) return //Sad Trombone var/client/C = pick(candidates) - PoolOrNew(/obj/effect/effect/harmless_smoke, W.loc) + PoolOrNew(/obj/effect/effect/smoke, W.loc) var/mob/living/carbon/human/I = new /mob/living/carbon/human(W.loc) I.real_name = W.real_name diff --git a/code/modules/events/wizard/shuffle.dm b/code/modules/events/wizard/shuffle.dm index 4315f3a4261..df271b96ef1 100644 --- a/code/modules/events/wizard/shuffle.dm +++ b/code/modules/events/wizard/shuffle.dm @@ -28,7 +28,7 @@ moblocs.len -= 1 for(var/mob/living/carbon/human/H in living_mob_list) - var/datum/effect/effect/system/harmless_smoke_spread/smoke = new /datum/effect/effect/system/harmless_smoke_spread() + var/datum/effect/effect/system/smoke_spread/smoke = new smoke.set_up(max(1,1), 0, H.loc) smoke.start() @@ -60,7 +60,7 @@ mobnames.len -= 1 for(var/mob/living/carbon/human/H in living_mob_list) - var/datum/effect/effect/system/harmless_smoke_spread/smoke = new /datum/effect/effect/system/harmless_smoke_spread() + var/datum/effect/effect/system/smoke_spread/smoke = new smoke.set_up(max(1,1), 0, H.loc) smoke.start() @@ -92,6 +92,6 @@ mobs -= mobs[mobs.len] for(var/mob/living/carbon/human/H in living_mob_list) - var/datum/effect/effect/system/harmless_smoke_spread/smoke = new /datum/effect/effect/system/harmless_smoke_spread() + var/datum/effect/effect/system/smoke_spread/smoke = new smoke.set_up(max(1,1), 0, H.loc) smoke.start() diff --git a/code/modules/food&drinks/drinks/drinks.dm b/code/modules/food&drinks/drinks/drinks.dm index 1f07766a523..e510ce8ac5e 100644 --- a/code/modules/food&drinks/drinks/drinks.dm +++ b/code/modules/food&drinks/drinks/drinks.dm @@ -10,6 +10,7 @@ var/gulp_size = 5 //This is now officially broken ... need to think of a nice way to fix it. possible_transfer_amounts = list(5,10,25) volume = 50 + burn_state = -1 /obj/item/weapon/reagent_containers/food/drinks/New() ..() @@ -34,24 +35,19 @@ if(M == user) M << "You swallow a gulp of [src]." - if(reagents.total_volume) - reagents.reaction(M, INGEST) - spawn(5) - reagents.trans_to(M, gulp_size) + else - playsound(M.loc,'sound/items/drink.ogg', rand(10,50), 1) - return 1 - - user.visible_message("[user] attempts to feed [src] to [M].", "You attempt to feed [src] to [M].") - if(!do_mob(user, M)) return - if(!reagents.total_volume) return // The drink might be empty after the delay, such as by spam-feeding - user.visible_message("[user] feeds [src] to [M].", "You feed [src] to [M].") - add_logs(user, M, "fed", object="[reagentlist(src)]") - if(reagents.total_volume) - reagents.reaction(M, INGEST) - spawn(5) - reagents.trans_to(M, gulp_size) + user.visible_message("[user] attempts to feed [src] to [M].", "You attempt to feed [src] to [M].") + if(!do_mob(user, M)) + return + if(!reagents || !reagents.total_volume) + return // The drink might be empty after the delay, such as by spam-feeding + user.visible_message("[user] feeds [src] to [M].", "You feed [src] to [M].") + add_logs(user, M, "fed", object="[reagentlist(src)]") + var/fraction = min(gulp_size/reagents.total_volume, 1) + reagents.reaction(M, INGEST, fraction) + reagents.trans_to(M, gulp_size) playsound(M.loc,'sound/items/drink.ogg', rand(10,50), 1) return 1 diff --git a/code/modules/food&drinks/drinks/drinks/bottle.dm b/code/modules/food&drinks/drinks/drinks/bottle.dm index 72debadb487..366339e6be9 100644 --- a/code/modules/food&drinks/drinks/drinks/bottle.dm +++ b/code/modules/food&drinks/drinks/drinks/bottle.dm @@ -77,7 +77,7 @@ armor_duration /= 10 //Apply the damage! - armor_block = max(90,armor_block) + armor_block = min(90,armor_block) target.apply_damage(force, BRUTE, affecting, armor_block) // You are going to knock someone out for longer if they are not wearing a helmet. diff --git a/code/modules/food&drinks/drinks/drinks/drinkingglass.dm b/code/modules/food&drinks/drinks/drinks/drinkingglass.dm index 911362474c1..d145ef39fb3 100644 --- a/code/modules/food&drinks/drinks/drinks/drinkingglass.dm +++ b/code/modules/food&drinks/drinks/drinks/drinkingglass.dm @@ -6,6 +6,20 @@ icon_state = "glass_empty" amount_per_transfer_from_this = 10 volume = 50 + burn_state = 0 //Burnable + burntime = 5 + +/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/fire_act() + if(!reagents.total_volume) + return + ..() + +/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/burn() + reagents.total_volume = 0 //Burns away all the alcohol :( + reagents.reagent_list.Cut() + on_reagent_change() + extinguish() + return /obj/item/weapon/reagent_containers/food/drinks/drinkingglass/on_reagent_change() overlays.Cut() diff --git a/code/modules/food&drinks/food.dm b/code/modules/food&drinks/food.dm index 20f54c684eb..5a7dbde5102 100644 --- a/code/modules/food&drinks/food.dm +++ b/code/modules/food&drinks/food.dm @@ -4,6 +4,7 @@ /obj/item/weapon/reagent_containers/food possible_transfer_amounts = null volume = 50 //Sets the default container amount for all food items. + burn_state = 0 //Burnable /obj/item/weapon/reagent_containers/food/New() ..() diff --git a/code/modules/food&drinks/food/condiment.dm b/code/modules/food&drinks/food/condiment.dm index bff39b0e262..a20b7e078cd 100644 --- a/code/modules/food&drinks/food/condiment.dm +++ b/code/modules/food&drinks/food/condiment.dm @@ -30,9 +30,8 @@ return /obj/item/weapon/reagent_containers/food/condiment/attack(mob/M as mob, mob/user as mob, def_zone) - var/datum/reagents/R = src.reagents - if(!R || !R.total_volume) + if(!reagents || !reagents.total_volume) user << "None of [src] left, oh no!" return 0 @@ -41,28 +40,20 @@ if(M == user) M << "You swallow some of contents of \the [src]." - if(reagents.total_volume) - reagents.reaction(M, INGEST) - spawn(5) - reagents.trans_to(M, 10) - playsound(M.loc,'sound/items/drink.ogg', rand(10,50), 1) - return 1 - else user.visible_message("[user] attempts to feed [M] from [src].") - if(!do_mob(user, M)) return + if(!do_mob(user, M)) + return + if(!reagents || !reagents.total_volume) + return // The condiment might be empty after the delay. user.visible_message("[user] feeds [M] from [src].") - add_logs(user, M, "fed", object="[reagentlist(src)]") - if(reagents.total_volume) - reagents.reaction(M, INGEST) - spawn(5) - reagents.trans_to(M, 10) - - playsound(M.loc,'sound/items/drink.ogg', rand(10,50), 1) - return 1 - return 0 + var/fraction = min(10/reagents.total_volume, 1) + reagents.reaction(M, INGEST, fraction) + reagents.trans_to(M, 10) + playsound(M.loc,'sound/items/drink.ogg', rand(10,50), 1) + return 1 /obj/item/weapon/reagent_containers/food/condiment/afterattack(obj/target, mob/user , proximity) if(!proximity) return diff --git a/code/modules/food&drinks/food/snacks.dm b/code/modules/food&drinks/food/snacks.dm index 919e6e0a62b..7f8d06dd703 100644 --- a/code/modules/food&drinks/food/snacks.dm +++ b/code/modules/food&drinks/food/snacks.dm @@ -105,14 +105,11 @@ M.satiety -= junkiness playsound(M.loc,'sound/items/eatfood.ogg', rand(10,50), 1) if(reagents.total_volume) - reagents.reaction(M, INGEST) - spawn(5) - if(reagents.total_volume > bitesize) //pretty sure this is unnecessary - reagents.trans_to(M, bitesize) - else - reagents.trans_to(M, reagents.total_volume) - bitecount++ - On_Consume() + var/fraction = min(bitesize/reagents.total_volume, 1) + reagents.reaction(M, INGEST, fraction) + reagents.trans_to(M, bitesize) + bitecount++ + On_Consume() return 1 return 0 diff --git a/code/modules/food&drinks/kitchen machinery/gibber.dm b/code/modules/food&drinks/kitchen machinery/gibber.dm index e5111bfb000..ca40eb15486 100644 --- a/code/modules/food&drinks/kitchen machinery/gibber.dm +++ b/code/modules/food&drinks/kitchen machinery/gibber.dm @@ -106,7 +106,7 @@ user.visible_message("[user] starts to put [G.affecting] into the gibber!") src.add_fingerprint(user) - if(do_after(user, gibtime) && G && G.affecting && !occupant) + if(do_after(user, gibtime, target = src) && G && G.affecting && !occupant) user.visible_message("[user] stuffs [G.affecting] into the gibber!") var/mob/M = G.affecting if(M.client) diff --git a/code/modules/food&drinks/kitchen machinery/microwave.dm b/code/modules/food&drinks/kitchen machinery/microwave.dm index b04ac183825..2bfe5e836ce 100644 --- a/code/modules/food&drinks/kitchen machinery/microwave.dm +++ b/code/modules/food&drinks/kitchen machinery/microwave.dm @@ -67,7 +67,7 @@ "[user] starts to fix part of the microwave.", \ "You start to fix part of the microwave..." \ ) - if (do_after(user,20)) + if (do_after(user,20, target = src)) user.visible_message( \ "[user] fixes part of the microwave.", \ "You fix part of the microwave." \ @@ -78,7 +78,7 @@ "[user] starts to fix part of the microwave.", \ "You start to fix part of the microwave..." \ ) - if (do_after(user,20)) + if (do_after(user,20, target = src)) user.visible_message( \ "[user] fixes the microwave.", \ "You fix the microwave." \ @@ -116,7 +116,7 @@ "[user] starts to clean the microwave.", \ "You start to clean the microwave..." \ ) - if (do_after(user, P.cleanspeed)) + if (do_after(user, P.cleanspeed, target = src)) user.visible_message( \ "[user] has cleaned the microwave.", \ "You clean the microwave." \ diff --git a/code/modules/games/cards.dm b/code/modules/games/cards.dm new file mode 100644 index 00000000000..379adeecace --- /dev/null +++ b/code/modules/games/cards.dm @@ -0,0 +1,252 @@ +/datum/playingcard + var/name = "playing card" + var/card_icon = "card_back" + var/suit + var/number + +/* Deck */ + +/obj/item/weapon/deck + name = "deck of cards" + desc = "A simple deck of playing cards." + icon = 'playing_cards.dmi' + icon_state = "deck" + w_class = 2 + + var/list/cards = list() + +/obj/item/weapon/deck/New() + . = ..() + + var/color + var/datum/playingcard/card + + for (var/suit in list("spades", "clubs", "diamonds", "hearts")) + if (suit == "spades" || suit == "clubs") color = "black_" + else color = "red_" + + for (var/number in list("ace", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten")) + card = new() + card.name = "[number] of [suit]" + card.card_icon = "[color]num" + card.suit = suit + card.number = number + + src.cards.Add(card) + + for (var/number in list("jack", "queen", "king")) + card = new() + card.name = "[number] of [suit]" + card.card_icon = "[color]col" + card.suit = suit + card.number = number + + src.cards.Add(card) + + for (var/i = 0, i < 2, i++) + card = new() + card.name = "joker" + card.card_icon = "joker" + card.suit = "joker" + card.number = "" + + src.cards.Add(card) + +/obj/item/weapon/deck/attackby(obj/O as obj, mob/user as mob) + if (istype(O,/obj/item/weapon/hand)) + var/obj/item/weapon/hand/H = O + + for (var/datum/playingcard/P in H.cards) src.cards.Add(P) + + qdel (O) + + user.show_message("You place your cards on the bottom of the deck.") + else return ..() + +/obj/item/weapon/deck/attack_self(var/mob/user as mob) + var/list/newcards = list() + var/datum/playingcard/card + + while (cards.len) + card = pick(cards) + newcards.Add(card) + src.cards.Remove(card) + + src.cards = newcards + + user.visible_message("\The [user] shuffles [src].") + +/obj/item/weapon/deck/afterattack(atom/A as mob|obj|turf|area, mob/living/user as mob|obj, flag, params) + if(flag) return //It's adjacent, is the user, or is on the user's person + + if (istype(A, /mob/living)) src.dealTo(A, user) + else return ..() + +/obj/item/weapon/deck/attack(mob/living/M as mob, mob/living/user as mob, def_zone) + if (istype(M)) src.dealTo(M, user) + else return ..() + +/obj/item/weapon/deck/proc/dealTo(mob/living/target, mob/living/source) + if (!src.cards.len) + source.show_message("There are no cards in the deck.") + return + + var/datum/playingcard/card = src.cards[1] + + src.cards.Remove(card) + + var/obj/item/weapon/hand/H = new(get_turf(src)) + + H.concealed = 1 + H.update_conceal() + + H.cards.Add(card) + H.update_icon() + + source.visible_message("\The [source] deals a card to \the [target].") + H.throw_at(get_step(target, target.dir), 10, 1, H) + +/* Hand */ + +/obj/item/weapon/hand + name = "hand of cards" + desc = "Some playing cards." + icon = 'playing_cards.dmi' + icon_state = "empty" + w_class = 1 + + var/concealed = 0 + var/list/cards = list() + var/datum/html_interface/hi + +/obj/item/weapon/hand/New(loc) + . = ..() + + src.hi = new/datum/html_interface/cards(src, "Your hand", 540, 302) + src.update_conceal() + +/obj/item/weapon/hand/Destroy() + if (src.hi) qdel(src.hi) + + return ..() + +/obj/item/weapon/hand/attackby(obj/O as obj, mob/user as mob) + if(istype(O,/obj/item/weapon/hand)) + var/obj/item/weapon/hand/H = O + + for(var/datum/playingcard/P in src.cards) H.cards.Add(P) + + H.update_icon() + + qdel(src) + else return ..() + +/obj/item/weapon/hand/verb/discard(datum/playingcard/card in cards) + set category = "Object" + set name = "Discard" + set desc = "Place a card from your hand in front of you." + + if (!card) return + + var/obj/item/weapon/hand/H = new(src.loc) + + H.concealed = 0 + H.update_conceal() + + H.cards.Add(card) + src.cards.Remove(card) + + H.update_icon() + + ASSERT(H) + + usr.visible_message("\The [usr] plays \the [card.name].") + H.loc = get_step(usr,usr.dir) + + src.update_icon() + +/obj/item/weapon/hand/verb/toggle_conceal() + set category = "Object" + set name = "Toggle conceal" + set desc = "Toggle concealment of your hand" + + src.concealed = !src.concealed + + src.update_conceal() + + usr.visible_message("\The [usr] [concealed ? "conceals" : "reveals"] their hand.") + + src.update_icon() + +/obj/item/weapon/hand/attack_self(var/mob/user as mob) + src.hi.show(user) + +/obj/item/weapon/hand/examine() + . = ..() + + if((!concealed || src.loc == usr) && cards.len) + usr.show_message("It contains: ") + + for (var/datum/playingcard/card in cards) + usr.show_message("The [card.name].") + +/obj/item/weapon/hand/proc/update_conceal() + if (src.concealed) src.hi.updateContent("headbar", "You are currently concealing your hand. Reveal your hand.") + else src.hi.updateContent("headbar", "You are currently revealing your hand. Conceal your hand.") + +/obj/item/weapon/hand/update_icon() + if (!cards.len) qdel (src) + else + if(cards.len > 1) + name = "hand of cards" + desc = "Some playing cards." + else + name = "a playing card" + desc = "A playing card." + + overlays.len = 0 + + if (cards.len == 1) + var/datum/playingcard/P = cards[1] + var/image/I = new(src.icon, (concealed ? "card_back" : "[P.card_icon]") ) + + I.pixel_x = I.pixel_x + (-5 + rand(10)) + I.pixel_y = I.pixel_y + (-5 + rand(10)) + + overlays.Add(I) + else + var/origin = -12 + var/offset = round(32 / cards.len) + + var/i = 0 + var/image/I + + for(var/datum/playingcard/P in cards) + I = new(src.icon, (concealed ? "card_back" : "[P.card_icon]") ) + I.pixel_x = origin + (offset * i) + + overlays.Add(I) + + i = i + 1 + + var/html = "" + + for(var/datum/playingcard/card in cards) + html = html + "" + + src.hi.updateContent("hand", html) + +/obj/item/weapon/hand/Topic(href, href_list[], datum/html_interface_client/hclient) + if (istype(hclient)) + switch (href_list["action"]) + if ("play_card") + var/datum/playingcard/card = locate(href_list["card"]) + + if (card in src.cards) + src.discard(card) + if ("toggle_conceal") + src.toggle_conceal() + +// Hook for html_interface module to prevent updates to clients who don't have this in their inventory. +/obj/item/weapon/hand/proc/hiIsValidClient(datum/html_interface_client/hclient, datum/html_interface/hi) + return (hclient.client.mob && hclient.client.mob.stat == 0 && (src in hclient.client.mob.contents)) diff --git a/code/modules/games/playing_cards.dmi b/code/modules/games/playing_cards.dmi new file mode 100644 index 00000000000..47b5b3e745a Binary files /dev/null and b/code/modules/games/playing_cards.dmi differ diff --git a/code/modules/html_interface/bootstrap.min.css b/code/modules/html_interface/bootstrap.min.css new file mode 100644 index 00000000000..f3e39a0bffb --- /dev/null +++ b/code/modules/html_interface/bootstrap.min.css @@ -0,0 +1,10 @@ +/*! + * Bootstrap v3.2.0 (http://getbootstrap.com) + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +/*! + * Generated using the Bootstrap Customizer (http://getbootstrap.com/customize/?id=979b48f103c9d446c891) + * Config saved to config.json and https://gist.github.com/979b48f103c9d446c891 + *//*! normalize.css v3.0.1 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}@media print{*{text-shadow:none !important;color:#000 !important;background:transparent !important;box-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff !important}.navbar{display:none}.table td,.table th{background-color:#fff !important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#428bca;text-decoration:none}a:hover,a:focus{color:#2a6496;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;width:100% \9;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;width:100% \9;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#777}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:240px){.lead{font-size:21px}}small,.small{font-size:85%}cite{font-style:normal}mark,.mark{background-color:#fcf8e3;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#428bca}a.text-primary:hover{color:#3071a9}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#428bca}a.bg-primary:hover{background-color:#3071a9}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:bold}dd{margin-left:0}@media (min-width:240px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}blockquote:before,blockquote:after{content:""}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#333;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:240px){.container{width:750px}}@media (min-width:600px){.container{width:970px}}@media (min-width:960px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:240px){.col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:600px){.col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:960px){.col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f5f5f5}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}@media screen and (max-width:239px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;overflow-x:auto;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd;-webkit-overflow-scrolling:touch}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s, box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s, box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s, box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6)}.form-control::-moz-placeholder{color:#777;opacity:1}.form-control:-ms-input-placeholder{color:#777}.form-control::-webkit-input-placeholder{color:#777}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee;opacity:1}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}input[type="date"],input[type="time"],input[type="datetime-local"],input[type="month"]{line-height:34px;line-height:1.42857143 \0}input[type="date"].input-sm,input[type="time"].input-sm,input[type="datetime-local"].input-sm,input[type="month"].input-sm{line-height:30px}input[type="date"].input-lg,input[type="time"].input-lg,input[type="datetime-local"].input-lg,input[type="month"].input-lg{line-height:46px}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;min-height:20px;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"].disabled,input[type="checkbox"].disabled,fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.input-sm,.form-horizontal .form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.input-lg,.form-horizontal .form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg{height:46px;line-height:46px}textarea.input-lg,select[multiple].input-lg{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:25px;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center}.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback{color:#a94442}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:240px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}@media (min-width:240px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:7px}}.form-horizontal .has-feedback .form-control-feedback{top:0;right:15px}@media (min-width:240px){.form-horizontal .form-group-lg .control-label{padding-top:14.3px}}@media (min-width:240px){.form-horizontal .form-group-sm .control-label{padding-top:6px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus{color:#333;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;pointer-events:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#3071a9;border-color:#285e8e}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#428bca;border-color:#357ebd}.btn-primary .badge{color:#428bca;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{color:#428bca;font-weight:normal;cursor:pointer;border-radius:0}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#2a6496;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#777;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#428bca}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#777}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:240px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group>.btn:focus,.btn-group-vertical>.btn:focus{outline:0}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn>input[type="radio"],[data-toggle="buttons"]>.btn>input[type="checkbox"]{position:absolute;z-index:-1;opacity:0;filter:alpha(opacity=0)}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:normal;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#777;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#428bca}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:240px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:240px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#428bca}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:240px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:240px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:240px){.navbar{border-radius:4px}}@media (min-width:240px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:240px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-width:180px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:240px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:240px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}@media (min-width:240px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px 15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}@media (min-width:240px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:240px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:239px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:240px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.navbar-nav.navbar-right:last-child{margin-right:-15px}}@media (min-width:240px){.navbar-left{float:left !important}.navbar-right{float:right !important}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:8px;margin-bottom:8px}@media (min-width:240px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:239px){.navbar-form .form-group{margin-bottom:5px}}@media (min-width:240px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}.navbar-form.navbar-right:last-child{margin-right:-15px}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:240px){.navbar-text{float:left;margin-left:15px;margin-right:15px}.navbar-text.navbar-right:last-child{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#e7e7e7;color:#555}@media (max-width:239px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#333}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#777}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#777}.navbar-inverse .navbar-nav>li>a{color:#777}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#080808;color:#fff}@media (max-width:239px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#777}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#777}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#ccc}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.42857143;text-decoration:none;color:#428bca;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{color:#2a6496;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#777;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#777;background-color:#fff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:hover,.label-default[href]:focus{background-color:#5e5e5e}.label-primary{background-color:#428bca}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#3071a9}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;color:#fff;line-height:1;vertical-align:baseline;white-space:nowrap;text-align:center;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}a.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#428bca;background-color:#fff}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:240px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#428bca}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar[aria-valuenow="1"],.progress-bar[aria-valuenow="2"]{min-width:30px}.progress-bar[aria-valuenow="0"]{color:#777;min-width:30px;background-color:transparent;background-image:none;box-shadow:none}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.media,.media-body{overflow:hidden;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{text-decoration:none;color:#555;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#eee;color:#777}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#e1edf7}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group{margin-bottom:0}.panel>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#428bca}.panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#428bca}.panel-primary>.panel-heading .badge{color:#428bca;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#428bca}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate3d(0, -25%, 0);transform:translate3d(0, -25%, 0);-webkit-transition:-webkit-transform 0.3s ease-out;-moz-transition:-moz-transform 0.3s ease-out;-o-transition:-o-transform 0.3s ease-out;transition:transform 0.3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.42857143px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:240px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width:600px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;visibility:visible;font-size:12px;line-height:1.4;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;right:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;text-align:left;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);white-space:normal}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,0.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,0.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:.5;filter:alpha(opacity=50);font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-control.left{background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #fff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#fff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:240px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important;visibility:hidden !important}.affix{position:fixed;-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width:239px){.visible-xs{display:block !important}table.visible-xs{display:table}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width:239px){.visible-xs-block{display:block !important}}@media (max-width:239px){.visible-xs-inline{display:inline !important}}@media (max-width:239px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width:240px) and (max-width:599px){.visible-sm{display:block !important}table.visible-sm{display:table}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width:240px) and (max-width:599px){.visible-sm-block{display:block !important}}@media (min-width:240px) and (max-width:599px){.visible-sm-inline{display:inline !important}}@media (min-width:240px) and (max-width:599px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width:600px) and (max-width:959px){.visible-md{display:block !important}table.visible-md{display:table}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width:600px) and (max-width:959px){.visible-md-block{display:block !important}}@media (min-width:600px) and (max-width:959px){.visible-md-inline{display:inline !important}}@media (min-width:600px) and (max-width:959px){.visible-md-inline-block{display:inline-block !important}}@media (min-width:960px){.visible-lg{display:block !important}table.visible-lg{display:table}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width:960px){.visible-lg-block{display:block !important}}@media (min-width:960px){.visible-lg-inline{display:inline !important}}@media (min-width:960px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width:239px){.hidden-xs{display:none !important}}@media (min-width:240px) and (max-width:599px){.hidden-sm{display:none !important}}@media (min-width:600px) and (max-width:959px){.hidden-md{display:none !important}}@media (min-width:960px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}} \ No newline at end of file diff --git a/code/modules/html_interface/bootstrap.min.js b/code/modules/html_interface/bootstrap.min.js new file mode 100644 index 00000000000..e33d8a53249 --- /dev/null +++ b/code/modules/html_interface/bootstrap.min.js @@ -0,0 +1,11 @@ +/*! + * Bootstrap v3.2.0 (http://getbootstrap.com) + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +/*! + * Generated using the Bootstrap Customizer (http://getbootstrap.com/customize/?id=d0f6f16a67c7502ee009) + * Config saved to config.json and https://gist.github.com/d0f6f16a67c7502ee009 + */ +if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(t){"use strict";function e(e){return this.each(function(){var i=t(this),s=i.data("bs.alert");s||i.data("bs.alert",s=new o(this)),"string"==typeof e&&s[e].call(i)})}var i='[data-dismiss="alert"]',o=function(e){t(e).on("click",i,this.close)};o.VERSION="3.2.0",o.prototype.close=function(e){function i(){n.detach().trigger("closed.bs.alert").remove()}var o=t(this),s=o.attr("data-target");s||(s=o.attr("href"),s=s&&s.replace(/.*(?=#[^\s]*$)/,""));var n=t(s);e&&e.preventDefault(),n.length||(n=o.hasClass("alert")?o:o.parent()),n.trigger(e=t.Event("close.bs.alert")),e.isDefaultPrevented()||(n.removeClass("in"),t.support.transition&&n.hasClass("fade")?n.one("bsTransitionEnd",i).emulateTransitionEnd(150):i())};var s=t.fn.alert;t.fn.alert=e,t.fn.alert.Constructor=o,t.fn.alert.noConflict=function(){return t.fn.alert=s,this},t(document).on("click.bs.alert.data-api",i,o.prototype.close)}(jQuery),+function(t){"use strict";function e(e){return this.each(function(){var o=t(this),s=o.data("bs.button"),n="object"==typeof e&&e;s||o.data("bs.button",s=new i(this,n)),"toggle"==e?s.toggle():e&&s.setState(e)})}var i=function(e,o){this.$element=t(e),this.options=t.extend({},i.DEFAULTS,o),this.isLoading=!1};i.VERSION="3.2.0",i.DEFAULTS={loadingText:"loading..."},i.prototype.setState=function(e){var i="disabled",o=this.$element,s=o.is("input")?"val":"html",n=o.data();e+="Text",null==n.resetText&&o.data("resetText",o[s]()),o[s](null==n[e]?this.options[e]:n[e]),setTimeout(t.proxy(function(){"loadingText"==e?(this.isLoading=!0,o.addClass(i).attr(i,i)):this.isLoading&&(this.isLoading=!1,o.removeClass(i).removeAttr(i))},this),0)},i.prototype.toggle=function(){var t=!0,e=this.$element.closest('[data-toggle="buttons"]');if(e.length){var i=this.$element.find("input");"radio"==i.prop("type")&&(i.prop("checked")&&this.$element.hasClass("active")?t=!1:e.find(".active").removeClass("active")),t&&i.prop("checked",!this.$element.hasClass("active")).trigger("change")}t&&this.$element.toggleClass("active")};var o=t.fn.button;t.fn.button=e,t.fn.button.Constructor=i,t.fn.button.noConflict=function(){return t.fn.button=o,this},t(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(i){var o=t(i.target);o.hasClass("btn")||(o=o.closest(".btn")),e.call(o,"toggle"),i.preventDefault()})}(jQuery),+function(t){"use strict";function e(e){return this.each(function(){var o=t(this),s=o.data("bs.carousel"),n=t.extend({},i.DEFAULTS,o.data(),"object"==typeof e&&e),r="string"==typeof e?e:n.slide;s||o.data("bs.carousel",s=new i(this,n)),"number"==typeof e?s.to(e):r?s[r]():n.interval&&s.pause().cycle()})}var i=function(e,i){this.$element=t(e).on("keydown.bs.carousel",t.proxy(this.keydown,this)),this.$indicators=this.$element.find(".carousel-indicators"),this.options=i,this.paused=this.sliding=this.interval=this.$active=this.$items=null,"hover"==this.options.pause&&this.$element.on("mouseenter.bs.carousel",t.proxy(this.pause,this)).on("mouseleave.bs.carousel",t.proxy(this.cycle,this))};i.VERSION="3.2.0",i.DEFAULTS={interval:5e3,pause:"hover",wrap:!0},i.prototype.keydown=function(t){switch(t.which){case 37:this.prev();break;case 39:this.next();break;default:return}t.preventDefault()},i.prototype.cycle=function(e){return e||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(t.proxy(this.next,this),this.options.interval)),this},i.prototype.getItemIndex=function(t){return this.$items=t.parent().children(".item"),this.$items.index(t||this.$active)},i.prototype.to=function(e){var i=this,o=this.getItemIndex(this.$active=this.$element.find(".item.active"));return e>this.$items.length-1||0>e?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){i.to(e)}):o==e?this.pause().cycle():this.slide(e>o?"next":"prev",t(this.$items[e]))},i.prototype.pause=function(e){return e||(this.paused=!0),this.$element.find(".next, .prev").length&&t.support.transition&&(this.$element.trigger(t.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},i.prototype.next=function(){return this.sliding?void 0:this.slide("next")},i.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},i.prototype.slide=function(e,i){var o=this.$element.find(".item.active"),s=i||o[e](),n=this.interval,r="next"==e?"left":"right",a="next"==e?"first":"last",l=this;if(!s.length){if(!this.options.wrap)return;s=this.$element.find(".item")[a]()}if(s.hasClass("active"))return this.sliding=!1;var h=s[0],p=t.Event("slide.bs.carousel",{relatedTarget:h,direction:r});if(this.$element.trigger(p),!p.isDefaultPrevented()){if(this.sliding=!0,n&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var c=t(this.$indicators.children()[this.getItemIndex(s)]);c&&c.addClass("active")}var d=t.Event("slid.bs.carousel",{relatedTarget:h,direction:r});return t.support.transition&&this.$element.hasClass("slide")?(s.addClass(e),s[0].offsetWidth,o.addClass(r),s.addClass(r),o.one("bsTransitionEnd",function(){s.removeClass([e,r].join(" ")).addClass("active"),o.removeClass(["active",r].join(" ")),l.sliding=!1,setTimeout(function(){l.$element.trigger(d)},0)}).emulateTransitionEnd(1e3*o.css("transition-duration").slice(0,-1))):(o.removeClass("active"),s.addClass("active"),this.sliding=!1,this.$element.trigger(d)),n&&this.cycle(),this}};var o=t.fn.carousel;t.fn.carousel=e,t.fn.carousel.Constructor=i,t.fn.carousel.noConflict=function(){return t.fn.carousel=o,this},t(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(i){var o,s=t(this),n=t(s.attr("data-target")||(o=s.attr("href"))&&o.replace(/.*(?=#[^\s]+$)/,""));if(n.hasClass("carousel")){var r=t.extend({},n.data(),s.data()),a=s.attr("data-slide-to");a&&(r.interval=!1),e.call(n,r),a&&n.data("bs.carousel").to(a),i.preventDefault()}}),t(window).on("load",function(){t('[data-ride="carousel"]').each(function(){var i=t(this);e.call(i,i.data())})})}(jQuery),+function(t){"use strict";function e(e){e&&3===e.which||(t(s).remove(),t(n).each(function(){var o=i(t(this)),s={relatedTarget:this};o.hasClass("open")&&(o.trigger(e=t.Event("hide.bs.dropdown",s)),e.isDefaultPrevented()||o.removeClass("open").trigger("hidden.bs.dropdown",s))}))}function i(e){var i=e.attr("data-target");i||(i=e.attr("href"),i=i&&/#[A-Za-z]/.test(i)&&i.replace(/.*(?=#[^\s]*$)/,""));var o=i&&t(i);return o&&o.length?o:e.parent()}function o(e){return this.each(function(){var i=t(this),o=i.data("bs.dropdown");o||i.data("bs.dropdown",o=new r(this)),"string"==typeof e&&o[e].call(i)})}var s=".dropdown-backdrop",n='[data-toggle="dropdown"]',r=function(e){t(e).on("click.bs.dropdown",this.toggle)};r.VERSION="3.2.0",r.prototype.toggle=function(o){var s=t(this);if(!s.is(".disabled, :disabled")){var n=i(s),r=n.hasClass("open");if(e(),!r){"ontouchstart"in document.documentElement&&!n.closest(".navbar-nav").length&&t('