diff --git a/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm b/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm index 852a8761a24..d92376912a4 100644 --- a/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm +++ b/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm @@ -749,7 +749,7 @@ "aou" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating,/area/maintenance/fore) "aov" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/maintenance/fore) "aow" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/fore) -"aox" = (/obj/machinery/door/airlock/maintenance{icon = 'icons/obj/doors/Doorint.dmi'; name = "Brig Emergency Storage"; req_access_txt = "63"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/security/brig) +"aox" = (/turf/simulated/wall/r_wall,/area/engine/mechanic_workshop) "aoy" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/security/brig) "aoz" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light/small,/turf/simulated/floor{dir = 10; icon_state = "whitered"},/area/security/brig) "aoA" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/iv_drip{density = 0},/turf/simulated/floor{icon_state = "whitered"},/area/security/brig) @@ -2817,7 +2817,7 @@ "bci" = (/obj/machinery/light{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/storage/tech) "bcj" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/circuitboard/message_monitor{pixel_y = -5},/obj/item/weapon/circuitboard/arcade/battle{pixel_x = -4; pixel_y = 2},/obj/item/weapon/circuitboard/arcade/orion_trail{pixel_x = 4},/turf/simulated/floor{icon_state = "dark"},/area/storage/tech) "bck" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/circuitboard/autolathe{pixel_x = 3; pixel_y = -3},/turf/simulated/floor{icon_state = "dark"},/area/storage/tech) -"bcl" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/circuitboard/pandemic{pixel_x = -3; pixel_y = 3},/obj/item/weapon/circuitboard/rdconsole,/obj/item/weapon/circuitboard/rdserver{pixel_x = 3; pixel_y = -3},/obj/item/weapon/circuitboard/destructive_analyzer,/obj/item/weapon/circuitboard/protolathe,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "dark"},/area/storage/tech) +"bcl" = (/obj/structure/spacepoddoor{dir = 4; icon_state = "n_beam"; tag = ""},/turf/simulated/floor/engine,/area/engine/mechanic_workshop) "bcm" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/storage/tech) "bcn" = (/obj/structure/table,/obj/item/weapon/module/power_control,/obj/item/weapon/airlock_electronics,/turf/simulated/floor{icon_state = "dark"},/area/storage/tech) "bco" = (/obj/machinery/door_control{id = "transittube"; name = "Transit Tube Lockdown"; pixel_x = -24; pixel_y = -5; req_access_txt = "24"},/obj/machinery/door_control{desc = "A remote control-switch for secure storage."; id = "Secure Storage"; name = "Engineering Secure Storage"; pixel_x = -24; pixel_y = 5; req_access_txt = "11"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engine/chiefs_office) @@ -3181,7 +3181,7 @@ "bji" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor{dir = 1; icon_state = "yellowcorner"},/area/hallway/primary/starboard) "bjj" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/structure/sign/securearea{pixel_y = 32},/turf/simulated/floor{dir = 1; icon_state = "yellowcorner"},/area/hallway/primary/starboard) "bjk" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/power/apc{dir = 1; name = "Starboard Hallway APC"; pixel_x = 0; pixel_y = 26},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{dir = 1; icon_state = "yellowcorner"},/area/hallway/primary/starboard) -"bjl" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/landmark/start{name = "Mechanic"},/turf/simulated/floor{dir = 4; icon_state = "cautioncorner"},/area/hallway/primary/starboard) +"bjl" = (/obj/machinery/door/poddoor/three_tile_hor{id_tag = "mechpodbay"},/obj/structure/spacepoddoor{dir = 4; icon_state = "n_beam"; tag = ""},/turf/simulated/floor/engine,/area/engine/mechanic_workshop) "bjm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=14-Starboard-Central"; location = "13.3-Engineering-Central"},/turf/simulated/floor{dir = 4; icon_state = "cautioncorner"},/area/hallway/primary/starboard) "bjn" = (/turf/simulated/wall/r_wall,/area/engine/break_room) "bjo" = (/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/table/glass,/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/engine/break_room) @@ -3513,7 +3513,7 @@ "bpC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Port Primary Hallway"},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/port) "bpD" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central) "bpE" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=4-Customs"; location = "3-Central-Port"},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/hallway/primary/central) -"bpF" = (/obj/machinery/door/airlock{icon = 'icons/obj/doors/Doorint.dmi'; name = "Starboard Emergency Storage"; req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/starboard) +"bpF" = (/turf/simulated/floor/engine,/area/engine/mechanic_workshop) "bpG" = (/obj/item/weapon/folder/blue,/obj/item/weapon/stamp/hop,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/crew_quarters/heads) "bpH" = (/obj/effect/landmark/start{name = "Head of Personnel"},/obj/structure/stool/bed/chair/office/dark{dir = 8},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/wood,/area/crew_quarters/heads) "bpI" = (/obj/machinery/newscaster/security_unit{pixel_x = 32; pixel_y = 0},/obj/item/weapon/storage/box/PDAs{pixel_x = 4; pixel_y = 4},/obj/structure/table/woodentable,/obj/item/weapon/storage/box/ids,/obj/item/weapon/storage/box/ids,/turf/simulated/floor/wood,/area/crew_quarters/heads) @@ -4578,12 +4578,12 @@ "bKb" = (/obj/item/stack/sheet/rglass{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/rods{amount = 50},/obj/item/device/flashlight,/obj/structure/closet/crate,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "bot"},/area/teleporter{name = "\improper Teleporter Room"}) "bKc" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "delivery"},/area/teleporter{name = "\improper Teleporter Room"}) "bKd" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/closet/crate,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/teleporter{name = "\improper Teleporter Room"}) -"bKe" = (/obj/machinery/light{dir = 1},/obj/structure/flora/kirbyplants,/obj/machinery/newscaster/security_unit{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/wood,/area/blueshield) +"bKe" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/engine,/area/engine/mechanic_workshop) "bKf" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/wood,/area/blueshield) "bKg" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/wood,/area/blueshield) "bKh" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/wood,/area/blueshield) "bKi" = (/obj/machinery/light{dir = 1},/obj/machinery/power/apc{dir = 4; name = "Blueshield Office APC"; pixel_x = 24; pixel_y = -3},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/wood,/area/blueshield) -"bKj" = (/obj/machinery/light{dir = 1},/obj/structure/flora/kirbyplants,/obj/machinery/newscaster/security_unit{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/wood,/area/ntrep) +"bKj" = (/obj/machinery/door/airlock/maintenance{icon = 'icons/obj/doors/doorint.dmi'; name = "Brig Emergency Storage"; req_access_txt = "63"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/security/brig) "bKk" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/wood,/area/ntrep) "bKl" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/wood,/area/ntrep) "bKm" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/wood,/area/ntrep) @@ -4663,11 +4663,11 @@ "bLI" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "delivery"},/area/teleporter{name = "\improper Teleporter Room"}) "bLJ" = (/obj/machinery/shieldwallgen,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/teleporter{name = "\improper Teleporter Room"}) "bLK" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/obj/machinery/atmospherics/pipe/manifold/visible/cyan{dir = 4; initialize_directions = 11},/turf/simulated/floor/plating,/area/atmos) -"bLL" = (/obj/machinery/photocopier,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor/wood,/area/blueshield) +"bLL" = (/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engine/mechanic_workshop) "bLM" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "bcarpet05"},/area/blueshield) "bLN" = (/obj/machinery/light_switch{pixel_x = 27},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/wood,/area/blueshield) "bLO" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall,/area/ntrep) -"bLP" = (/obj/machinery/photocopier,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/wood,/area/ntrep) +"bLP" = (/obj/structure/table,/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/rods{amount = 50},/obj/item/stack/sheet/mineral/plasma{amount = 30},/obj/machinery/cell_charger,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engine/mechanic_workshop) "bLQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/carpet,/area/ntrep) "bLR" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/turf/simulated/floor/carpet,/area/ntrep) "bLS" = (/obj/machinery/light_switch{pixel_x = 27},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/wood,/area/ntrep) @@ -4910,8 +4910,8 @@ "bQv" = (/obj/structure/table/woodentable,/obj/item/ashtray/glass{pixel_x = -4; pixel_y = -4},/obj/item/weapon/lighter/zippo/fluff/li_matsuda_1{pixel_x = 7; pixel_y = 4},/turf/simulated/floor{icon_state = "bcarpet05"},/area/blueshield) "bQw" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin,/obj/item/weapon/pen/blue,/obj/item/weapon/folder/blue{pixel_x = 4; pixel_y = 6},/obj/item/weapon/paper/blueshield,/turf/simulated/floor{icon_state = "bcarpet05"},/area/blueshield) "bQx" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; layer = 2.4; on = 1},/turf/simulated/floor{icon_state = "bcarpet05"},/area/blueshield) -"bQy" = (/obj/structure/sign/poster/legit{pixel_x = 32},/turf/simulated/floor/wood,/area/blueshield) -"bQz" = (/obj/structure/sign/poster/legit{pixel_x = -32},/turf/simulated/floor/wood,/area/ntrep) +"bQy" = (/obj/structure/table,/obj/item/pod_parts/core,/obj/item/weapon/circuitboard/mecha/pod,/obj/item/clothing/glasses/welding{pixel_y = 12},/obj/machinery/door_control{id = "mechpodbay"; name = "Pod Door Control"; pixel_x = 24},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engine/mechanic_workshop) +"bQz" = (/obj/effect/landmark/start{name = "Mechanic"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engine/mechanic_workshop) "bQA" = (/obj/structure/table/woodentable,/obj/machinery/computer/skills{req_access_txt = "57"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/carpet,/area/ntrep) "bQB" = (/obj/structure/table/woodentable,/obj/item/weapon/folder,/obj/item/weapon/stamp/centcom,/obj/item/weapon/pen/fluff/fountainpen,/turf/simulated/floor/carpet,/area/ntrep) "bQC" = (/obj/machinery/door/window{dir = 1; name = "Desk Door"; req_access_txt = "73"},/obj/machinery/keycard_auth{pixel_x = 24; pixel_y = 0},/turf/simulated/floor/wood,/area/ntrep) @@ -4964,7 +4964,7 @@ "bRx" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/telecomms/server/presets/service,/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "bRy" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/telecomms/server/presets/supply,/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "bRz" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/hallway/secondary/entry{name = "Arrivals"}) -"bRA" = (/turf/space,/area/hallway/secondary/entry{name = "Arrivals"}) +"bRA" = (/obj/machinery/spod_part_fabricator,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engine/mechanic_workshop) "bRB" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bRC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor/plating{tag = "icon-platingdmg2"; icon_state = "platingdmg2"},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bRD" = (/obj/structure/closet/crate,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/item/weapon/contraband/poster/legit,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) @@ -5046,7 +5046,7 @@ "bTb" = (/obj/machinery/light/small,/obj/machinery/power/terminal{dir = 4},/obj/machinery/camera{c_tag = "Telecoms - Server Room - Aft"; dir = 1; network = list("SS13","tcomm")},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "bTc" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable,/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) "bTd" = (/obj/machinery/light/small,/obj/machinery/telecomms/broadcaster/preset_right,/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server) -"bTe" = (/obj/structure/lattice,/turf/space,/area/hallway/secondary/entry{name = "Arrivals"}) +"bTe" = (/obj/structure/rack{dir = 1},/obj/item/weapon/extinguisher,/obj/item/weapon/storage/belt/utility,/obj/item/weapon/storage/toolbox/electrical,/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/item/device/radio{pixel_y = 6},/obj/machinery/light{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engine/mechanic_workshop) "bTf" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bTg" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/fpmaint2{name = "Port Maintenance"}) "bTh" = (/obj/item/trash/cheesie,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"}) @@ -5069,11 +5069,11 @@ "bTy" = (/obj/machinery/teleport/hub,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/teleporter{name = "\improper Teleporter Room"}) "bTz" = (/obj/structure/closet/secure_closet/blueshield,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/wood,/area/blueshield) "bTA" = (/obj/machinery/door_control{id = "blueshield"; name = "Privacy Shutters Control"; pixel_x = 0; pixel_y = -24; req_access_txt = "67"},/obj/machinery/computer/crew,/turf/simulated/floor/wood,/area/blueshield) -"bTB" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp,/obj/machinery/camera{c_tag = "Blueshield's Office"; dir = 1; network = list("SS13")},/turf/simulated/floor/wood,/area/blueshield) +"bTB" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engine/mechanic_workshop) "bTC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/wood,/area/blueshield) "bTD" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass,/turf/simulated/floor/wood,/area/blueshield) "bTE" = (/obj/structure/filingcabinet,/turf/simulated/floor/wood,/area/ntrep) -"bTF" = (/obj/machinery/camera{c_tag = "NT Representative's Office"; dir = 1; network = list("SS13")},/obj/structure/table/woodentable,/obj/machinery/photocopier/faxmachine{department = "NT Representative's Office"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/wood,/area/ntrep) +"bTF" = (/obj/machinery/computer/rdconsole/mechanics,/obj/machinery/power/apc{dir = 8; name = "Mechanic Workshop APC"; pixel_x = -25; pixel_y = 3},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engine/mechanic_workshop) "bTG" = (/obj/machinery/door_control{id = "representative"; name = "Privacy Shutters Control"; pixel_x = 0; pixel_y = -24; req_access_txt = "73"},/obj/machinery/computer/secure_data,/turf/simulated/floor/wood,/area/ntrep) "bTH" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/obj/structure/closet/secure_closet/ntrep,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/wood,/area/ntrep) "bTI" = (/obj/structure/table,/obj/item/weapon/storage/fancy/donut_box,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/gateway) @@ -7978,7 +7978,25 @@ "cXv" = (/obj/machinery/smartfridge,/turf/simulated/wall,/area/crew_quarters/bar) "cXw" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/door/poddoor/preopen{id_tag = "Xenolab"; name = "test chamber blast door"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/toxins/xenobiology{name = "\improper Secure Lab"}) "cXx" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/door/poddoor/preopen{id_tag = "Xenolab"; name = "test chamber blast door"},/turf/simulated/floor/plating,/area/toxins/xenobiology{name = "\improper Secure Lab"}) - +"cXy" = (/obj/machinery/computer/podtracker,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engine/mechanic_workshop) +"cXz" = (/obj/machinery/door/airlock/glass_engineering{name = "Mechanic Workshop"; req_access_txt = "70"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/engine/mechanic_workshop) +"cXA" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/starboard) +"cXB" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/starboard) +"cXC" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/starboard) +"cXD" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/starboard) +"cXE" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{tag = "icon-platingdmg1"; icon_state = "platingdmg1"},/area/maintenance/starboard) +"cXF" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/circuitboard/rdconsole,/obj/item/weapon/circuitboard/rdserver{pixel_x = 3; pixel_y = -3},/obj/item/weapon/circuitboard/destructive_analyzer,/obj/item/weapon/circuitboard/protolathe,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "dark"},/area/storage/tech) +"cXG" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "cautioncorner"},/area/hallway/primary/starboard) +"cXH" = (/obj/machinery/door/airlock{icon = 'icons/obj/doors/doorint.dmi'; name = "Starboard Emergency Storage"; req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/starboard) +"cXI" = (/obj/machinery/light{dir = 1},/obj/structure/flora/kirbyplants,/turf/simulated/floor/wood,/area/blueshield) +"cXJ" = (/obj/machinery/light{dir = 1},/obj/structure/flora/kirbyplants,/turf/simulated/floor/wood,/area/ntrep) +"cXK" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor/wood,/area/blueshield) +"cXL" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/wood,/area/ntrep) +"cXM" = (/obj/machinery/photocopier,/turf/simulated/floor/wood,/area/blueshield) +"cXN" = (/obj/structure/sign/poster/legit{pixel_x = -32},/obj/machinery/photocopier,/turf/simulated/floor/wood,/area/ntrep) +"cXO" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp,/obj/machinery/camera{c_tag = "Blueshield's Office"; dir = 1; network = list("SS13")},/obj/machinery/newscaster/security_unit{pixel_y = -32},/turf/simulated/floor/wood,/area/blueshield) +"cXP" = (/obj/machinery/camera{c_tag = "NT Representative's Office"; dir = 1; network = list("SS13")},/obj/structure/table/woodentable,/obj/machinery/photocopier/faxmachine{department = "NT Representative's Office"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/newscaster/security_unit{pixel_y = -32},/turf/simulated/floor/wood,/area/ntrep) + (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -8055,20 +8073,20 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaDaaDaaDaaDaaDaaDaaDaaDaaDaaDaaDaaDaaDaaDaaDaaDaaDaaDaaDaaDaaaaaaaaaaaiaaiaaaaaaaaaaaaaaiaaaaaiaaiaakaaiaaiaaiaaiaaQadSadTadUadVadWadzadXabJadYadZaeaaebaecabgaedabJaecabgaclabgaeeaefaegaawaaaaaiaaiaehaehaehaehaehaaaaaiaaaaaaaeiaeiaekaejaelaeiaeiaaaaaiaaaaaaaaiaaaaaaaaaaaiaaaaaaaaaaaiaaaaaaaaaaaaaaiaaaaaaaaaaaaacWaemaenadsadsaeoaaaaaiaaaaaaaaaaaiaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaiaaaaaaaaaabWaaaaaaaaaaaiaaaaaaaaaaafaaaaaaabBabBabBabBabBabBabBabBabBabBabBabBabBabBabBabBabBabBabBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaDaaDaaDaaDaaDaaDaaDaaDaaDaepaaDaaDaaDaaDaaDaaDaaDaaDaaDaaDaaaaaaaaaaaaaaiaaaaaiaaiaaaaaiaaaaaiaeqaeraeqaaiaaaaaaaaQaesaetaeuaaQaevadzaewaexabgadjabgaeyadjabgaewaezadjabgacEabgadjaeAaewaawaaiaaiaehaehaeBaeCaeDaehaehaaiaaiaeiaeiaeEaeFaeGaeHaeIaeiaeiaaiaeJaeJaeKaeJaeJaaiaaiaaiaaiacWacXacWacXacXacXacWacXacXacXacWacWaeLacWaeMaeNaeNaeOaeNaeNaePaaaaaiaaaaaaaaaaaaaaaaaaaaaaaaaahaaaabzabzabzabzabzaaiaeQaaiabzabzabzabzabzaaiaahaaaaaaabBabBabBabBabBabBabBabBabBabBabBabBabBabBabBabBabBabBabBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaDaaDaaDaaaaaaaaDaaDaaDaaDaaDaaDaaDaaaaaaaaDaaDaaDaaDaaaaaaaaaaaaaaaaaiaaaaaiaaaaaaaaiaaiaaiaeqaeRaeqaaiaaiaaaaaQaaQaaQaaQaaQaeSaeTaeUaeVaeWaeXaeYaeZafaafbafcafdafeaffafgafhafiafjafkaflaaiaehaehafmafnafoafoafpaehaehaaiaeiafqafrafsaftafuafvafwaeiaaiaeJafxafyafzaeJaaaaaaaaaaaiacWafAacWafBafCafDacWafEafFafGacWafHafIafJafKafLafLafLafLafLafKaaiaaiaaiaaiaaiaaaaaaaaaaaaaaaaahaaiabTabUabUabUabUabVabWabXabYabYabYabYabZaaiaahaaaaaaabBabBabBabBabBabBabBabBabBabBabBabBabBabBabBabBabBabBabBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaDaaDaaDaaDaaDaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaiaaiaaiaaiaaiaaiaaiaaiaeqaeqafMaeqaeqaaiaaiaaiaaiaaiaaiaaEafNafOafPafQafRafSafTafOafUafVafWafXafYafZafOagaagbagcagdageaaiaehagfaggaghagiagjagkaglaehaaiagmagnagoagpagqagragsagtaguaaiaeKagvagwagxaeKaaaagyagyagyacWagzagAagBagCagCagDagCagEagFagGagHagHagHafKafLafLafLafLafLafKaaaaaaaaaaaaaaiaaaaaaaaaaaaaaaaahaaiacracracracracraaiabWaaiacracracracracraaaaagaaaabBabBabBabBabBabBabBabBabBabBabBabBabBabBabBabBabBabBabBabBabBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaDaaDaaDaaDaaDaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaaaaiaaaaaaaaaaaaaaaaaiagIagJagKagLagIaaaaaiaaaaaaaaaaaiaawaawagMagNagOaawagPagQagPabgabgabgabgagRagSagTagUagVagWagXaawaaiaehagYaggagZahaahbagkahcaehaaiahdaheahfahgahhahiahfahjahdaaiaeJagvahkagxaeJagyagyahlahmacWacWacWahnahoahpahpahqahrahsahtahtahuahvafKafLafLafLafLafLahwacWacWacWaaaaaiaaaaaaaaaaaaaaaaagaaaaaaaaaaaiaaaaaaaaaabWaaaaaaaaiaaaaaaaaiaaaaahaaaabBabBabBabBabBabBabBabBabBabBabBabBabBabBabBabBabBabBabBabBabBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaDaaDaaDaaDaaDaaDaaaaaaaaaaaaaaaaaaaaaaaaaaiaaiaaiahxahxahyahyahyahyahyagIahzahAahBagIahCahDahCahCaaaaaiaaaaawaawageaawaawaawageaawaawahEahFahGahHahIahJahKahLahLahLaehaehaehahMahNahOahPahQahRahSaehaaiaeiahTahUahVahWahXahYahZaeiaaiaeJagvahkagxaeJaiaagyaibaicaidaieacWaifahoahpaigaihaihaihaiiahtaijaikailafLafLafLafLafLaimainaioacXaaaaaiaaiaaiaaiaaiaaiaahaaiaaiaaiaaiaaiaaaaaaabWaaaaaaaaaaaaaaaaaiaaaaagaaaaaaabBabBabBabBaaaaaaabBabBabBabBabBabBabBaaaaaaabBabBabBabBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaDaaDaaDaaDaaDaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaipaiqahyairaisaitaiuagIaivaiwaixagIaiyaizaiAahCahCaaiaaaaaaaaaaaiaaaaaaaaaaaiaaiaiBaiCaiDaiCaiEaiFaiGaiHahLaiIaiJaiKaehaehaehaiLaiMaehaehaehaehaehaiNaeiaeiaiOaiPaiQaiSaiRaeiaeiaiNaiTaiUaiVaiWaeJagyagyaiXaiXaiYaiZacWajaahoajbajcajdajdajeajfajgajhajiacXafLafLafLafLafLacXajjajkacXaaaaaiaaaaaiaaaajlajlajlajlajlajlajlaaiaaiaaiabWaaiaaiaaiaaiaaiaahaaiaahaaaaaaaaaaaaaaaaaaaaaaaaabBabBabBabBabBabBabBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaDaaDaaDaaDaaDaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaiahxajmahxajnajoajpajqagIagIajrajsagIajtajuajvajwahCaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiajxahHahHahHahHajyajzajAahLajBajCajDaehajEajFajGajHajIajJajKajLaehajMajNajOajPajQajRajSajTajOajUajVaiTajWajXajYaeJajZaiXaiXakaaiXagyacWakbakcakdakeakfakfakgajfajkakhajiacXafLafLafLafLafLacXakiakjacXaaiaaiaaiaaiaaiajlakkaklakmaknakkajlaaiaaaakoakpakoaaaaaaaaiaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaabBabBabBabBabBabBabBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaDaaDaaDaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaaahyakqakraksaktakuakvakwakxakyakzahCakAakBakCakDahDaaiaaaaaaaaiaaaaaaaaaagyagyagyajxakEakFakGakHakIakJakKahLakLajCakMaehakNakOakPakQakRakSakTakUakVakWakXakYakZalaalbalcaldalealfalgalhalialjalkaeJallalmalnaloalpagyalqalrahoalsajcaltajdaluajfalvajhalwalxafLafLafLafLafLalyalzalAalBalCalBaaaaaiaaaajlalDalEakkalEalFajlaaiaaaalGalHalGaaaaaaaaiaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaabBabBabBabBabBabBabBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaaahxalIahxalJalKalLalMahxalNalOalPalQalRalSalTalUahCaaialValVahDalValVaaaagyalWalWajxalXalYalZamaambamcamdameamfamgamfamhamiamiamjamkamlammamnamnamoampamqamramsamtamuamvamwamxamyamzamAamBamCamDaeJamEaiXaiXamFaicagyamGalrahoagHamHamIamJamKamLamMajhamNamOafLafLafLafLafLamPacWamQalBamRamSacqacqaaiajlamTamUamVamWamXajlaaiakoalGamYalGakoaaaaaiaaaaaaaaaaaiaaaaaaaaaaaaaaaaaaaaaaaaabBabBabBabBabBabBabBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaiahxamZanaanaanaanbancahxandaneanfahCanganhanianjahCalValVankanlakzalVagyagyanmannajxanoanpanqanransantanuahLanvanwanxaehanyanzanAanBanCanDanEanFahLanGanHanIamsanJanKanLanManNanOanPaiTaiTanQaeJaeJagyagyagyanRagyagyagyanSanTagHagHanUanVanWanXanXanYamNamOafLafLafLafLafLamPanZaoaalBamSalBalBalCalBajlaobaocakkaodaoeajlaaialGalGalHalGalGaaiaaiaaaaaaaaaaaiaaaaaaaaaaaaaaaaaaaaaaaaabBabBabBabBabBabBabBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaofaogaaaaaaaofaaaaofaaaaaaaaiaaiaaiaaaaaaaaaaaaaaaaaiaaaaaiaaaaaiaaaahxaohaoiaojaokaolaomahxakCanealTalVaonalTalTalTaooalVaopaoqaoraosalVaotaouaovaowaoxaoyaozaoAaoBaoCaoDaoEaehajIaoFajIaehaehaoGaoHaoGaehaoIaoJaoKaoLaoManHaoNaoOaoPaoQaoRaoSaoTanOaoUaoVaoWaoXaoYaoZaoYapaapbapcapdapbapeapfapgaphaphapiapjapkaplaplaplapmamOafLafLafLafLafLamPapnapoalBaoaappapqaprapsajlapuaptapvapwapxajlaaiapyapzapAapBapyaaaaaiaaaaaaaaaaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaabBabBabBabBabBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaofaofaaiaaiaofaofaofaaiaaaaofaofapCaofaofaaaaaialValVahDalVaaiaaaaaiaaiaaiaaiaaialVahDahxahxapDapEapFahxahxahxalTapGalPapHalRapIapJalTapKalValNapLapMalValVapNapOapPapQajxajxajxahHahHapRapSapTapUapVapWapXapYapZaqaanDaqbaehanDakTaqcahLaqdanHaqeaqfaqgaqhaqiaqjaqkanOaqlaqmaqmajOajOajOajOaqnagyagyagyagyagyaqoaqpaqqaqraqsaqtaquaqvaqwaqxaqyaqzaqAaqAaqAaqAaqAaqBaqCaqDalBapoapoapoapoaqEajlaqFaqGaqHaqIaqJajlaaiapyaqKaqLaqMapyaaaaaiaaiaaiacqaaiaaiaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaogaqNaaiaofaaiaqNaaiaofaofaaiaofaofaofaofaofaaaaaaaaaalVaqOaqPalVaqQaqRaqRaqRaqRaqRaqSalVaopaqTalVaqUaqValNaqWaqXalVaqYaqZaraalVaonapLarbarcardalVareapJarfalVargapOahlarhariagyarjajxarkarlansapSamdarmarnaroarparqarrarsartaruarvanDarwarxahLaryarzarAarBarCarDarEarFarEarGarHarIarJarJarKarLajOaqnagyarMarNarOarParParParParParQarRarSarTarTarTarTarTarUalBarVarWarXalBalBapoalBarYarZasaapoasbascasdaseasfasgashajlalCapyasiasjaskapyaaaaaiaaaaaaacqaaiaaaaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaofaaiaofaaiaofaofaofapCaaiaaiaaiaofaofaaiaaaaaiaaiahDaslasmasnasoaspaspaspaspaspasqasrassastasuasvaswaspasxaspasyaszasAagyagyagyagyagyagyagyagyagyagyasBagyasCagyagyagyagyagyagyajxasDasEansapSapTapUasFasGasHasIasJasKasLasManCasNasOasPaoLasQasRasSasTasUasVasWasXasYasZataaqmatbatcatbatdajOateatfatgathaiXarPcXuatjauvatlatmatnatoarTatpatqatrarTalBalBapoaqCarZapnalBapoalBarXapoatsapoalBattatuajlajlatvatwajlatxapyapyatyatzapyatAalCatAatAatBatAaaaaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaofaofaofaofaofaaiaofaofaaiaqNaofaofaaiaaiaaiaaialValVatCalValVatDatEatEatEatEatEatFalValValValVatGatHatIatIatIatIatJatKagyatLatMatNatOatPatQatRatSatTatUatVatWagyatXatYatYatYatZajzauaaubansaucaudaueanCaufaehaehaugauhauiaoLaehaujaugahLahLajOaukaulaumaukajOauoaunajOaupaqmaqmauqauqauqajOajOauragyaiXausautarPatkauuatkatlauwauxauyauzauAauBauCarTauDalBauEauFauGauHalBapralBalBalBauIalBalBauJauKauLajlajlajlajlaprapnapoauMauNatAauOauPauQatAaoaatAaaiaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaogaaiaofaofaofaofaofaofaofaofaofaofaofauRaofaaiaqNalValValVauSauTalVaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaialVankauUalTalNauValNauWauXauYauZavaavbagyagyagyavdavcavcavcaveagyagyavfavgavhaviavfajzajzahHavjavkamdavlavlavmavnavlavoavlavnavlavpavlavoavqavravsavnavtavuavlavlavlavnavlavvajxavwavxavxavxavxahHaqnagyautaiXaiXarPavyavzavAarPavBavCavDavEavFarTarTarTavGalBapnavHatsapoalBapoalBavIalBavJavKavLavMavNavOavPavQavRavSavTavUavRavVapoapoavHapoavWatBavXatBacqacqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaDaaDaaDaaDaaDaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaiaaiaaiaaiaaiaaiaaiaaiaeqaeqafMaeqaeqaaiaaiaaiaaiaaiaaiaaEafNafOafPafQafRafSafTafOafUafVafWafXafYafZafOagaagbagcagdageaaiaehagfaggaghagiagjagkaglaehaaiagmagnagoagpagqagragsagtaguaaiaeKagvagwagxaeKaaaagyagyagyacWagzagAagBagCagCagDagCagEagFagGagHagHagHafKafLafLafLafLafLafKaaaaaaaaaaaaaaiaaaaaaaaaaaaaaaaahaaiacracracracracraaiabWaaiacracracracracraaiaagaaiabBabBabBabBabBabBabBabBabBabBabBabBabBabBabBabBabBabBabBabBabBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaDaaDaaDaaDaaDaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaaaaiaaaaaaaaaaaaaaaaaiagIagJagKagLagIaaaaaiaaaaaaaaaaaiaawaawagMagNagOaawagPagQagPabgabgabgabgagRagSagTagUagVagWagXaawaaiaehagYaggagZahaahbagkahcaehaaiahdaheahfahgahhahiahfahjahdaaiaeJagvahkagxaeJagyagyahlahmacWacWacWahnahoahpahpahqahrahsahtahtahuahvafKafLafLafLafLafLahwacWacWacWaaaaaiaaaaaaaaaaaaaaaaagaaaaaaaaaaaiaaaaaaaaaabWaaaaaiaaaaaaaaaaaaaaaaaaaaaabBabBabBabBabBabBabBabBabBabBabBabBabBabBabBabBabBabBabBabBabBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaDaaDaaDaaDaaDaaDaaaaaaaaaaaaaaaaaaaaaaaaaaiaaiaaiahxahxahyahyahyahyahyagIahzahAahBagIahCahDahCahCaaaaaiaaaaawaawageaawaawaawageaawaawahEahFahGahHahIahJahKahLahLahLaehaehaehahMahNahOahPahQahRahSaehaaiaeiahTahUahVahWahXahYahZaeiaaiaeJagvahkagxaeJaiaagyaibaicaidaieacWaifahoahpaigaihaihaihaiiahtaijaikailafLafLafLafLafLaimainaioacXaaaaaiaaiaaiaaiaaiaaiaahaaiaaiaaiaaiaaiaaaaaaabWaaaaaiaaaaaaaaaaaaaaaaaaaaaaaaabBabBabBabBaaaaaaabBabBabBabBabBabBabBaaaaaaabBabBabBabBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaDaaDaaDaaDaaDaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaipaiqahyairaisaitaiuagIaivaiwaixagIaiyaizaiAahCahCaaiaaaaaaaaaaaiaaaaaaaaaaaiaaiaiBaiCaiDaiCaiEaiFaiGaiHahLaiIaiJaiKaehaehaehaiLaiMaehaehaehaehaehaiNaeiaeiaiOaiPaiQaiSaiRaeiaeiaiNaiTaiUaiVaiWaeJagyagyaiXaiXaiYaiZacWajaahoajbajcajdajdajeajfajgajhajiacXafLafLafLafLafLacXajjajkacXaaaaaiaaaaaiaaaajlajlajlajlajlajlajlaaiaaiaaiabWaaiaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBabBabBabBabBabBabBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaDaaDaaDaaDaaDaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaiahxajmahxajnajoajpajqagIagIajrajsagIajtajuajvajwahCaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiajxahHahHahHahHajyajzajAahLajBajCajDaehajEajFajGajHajIajJajKajLaehajMajNajOajPajQajRajSajTajOajUajVaiTajWajXajYaeJajZaiXaiXakaaiXagyacWakbakcakdakeakfakfakgajfajkakhajiacXafLafLafLafLafLacXakiakjacXaaiaaiaaiaaiaaiajlakkaklakmaknakkajlaaiaaaakoakpakoaoxbjlbclbclaoxaaiaagaaiaaaaaaaaaaaaaaaaaaaaaabBabBabBabBabBabBabBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDaaDaaDaaDaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaaahyakqakraksaktakuakvakwakxakyakzahCakAakBakCakDahDaaiaaaaaaaaiaaaaaaaaaagyagyagyajxakEakFakGakHakIakJakKahLakLajCakMaehakNakOakPakQakRakSakTakUakVakWakXakYakZalaalbalcaldalealfalgalhalialjalkaeJallalmalnaloalpagyalqalrahoalsajcaltajdaluajfalvajhalwalxafLafLafLafLafLalyalzalAalBalCalBaaaaaiaaaajlalDalEakkalEalFajlaaiaaaalGalHalGaoxbpFbpFbpFaoxaaaaahaaaaaaaaaaaaaaaaaaaaaaaaabBabBabBabBabBabBabBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaaahxalIahxalJalKalLalMahxalNalOalPalQalRalSalTalUahCaaialValVahDalValVaaaagyalWalWajxalXalYalZamaambamcamdameamfamgamfamhamiamiamjamkamlammamnamnamoampamqamramsamtamuamvamwamxamyamzamAamBamCamDaeJamEaiXaiXamFaicagyamGalrahoagHamHamIamJamKamLamMajhamNamOafLafLafLafLafLamPacWamQalBamRamSacqacqaaiajlamTamUamVamWamXajlaaiakoalGamYalGaoxbKebpFbpFaoxaaaaaiaaaaaaaaaaaaaaaaaaaaaaaaabBabBabBabBabBabBabBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaiahxamZanaanaanaanbancahxandaneanfahCanganhanianjahCalValVankanlakzalVagyagyanmannajxanoanpanqanransantanuahLanvanwanxaehanyanzanAanBanCanDanEanFahLanGanHanIamsanJanKanLanManNanOanPaiTaiTanQaeJaeJagyagyagyanRagyagyagyanSanTagHagHanUanVanWanXanXanYamNamOafLafLafLafLafLamPanZaoaalBamSalBalBalCalBajlaobaocakkaodaoeajlaaialGalGalHalGaoxbpFbpFbpFaoxaaaaaiaaaaaaaaaaaaaaaaaaaaaaaaabBabBabBabBabBabBabBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaofaogaaaaaaaofaaaaofaaaaaaaaiaaiaaiaaaaaaaaaaaaaaaaaiaaaaaiaaaaaiaaaahxaohaoiaojaokaolaomahxakCanealTalVaonalTalTalTaooalVaopaoqaoraosalVaotaouaovaowbKjaoyaozaoAaoBaoCaoDaoEaehajIaoFajIaehaehaoGaoHaoGaehaoIaoJaoKaoLaoManHaoNaoOaoPaoQaoRaoSaoTanOaoUaoVaoWaoXaoYaoZaoYapaapbapcapdapbapeapfapgaphaphapiapjapkaplaplaplapmamOafLafLafLafLafLamPapnapoalBaoaappapqaprapsajlapuaptapvapwapxajlaaiapyapzapAapBaoxbLPbLLbQyaoxaaaaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaabBabBabBabBabBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaofaofaaiaaiaofaofaofaaiaaaaofaofapCaofaofaaaaaialValVahDalVaaiaaaaaiaaiaaiaaiaaialVahDahxahxapDapEapFahxahxahxalTapGalPapHalRapIapJalTapKalValNapLapMalValVapNapOapPapQajxajxajxahHahHapRapSapTapUapVapWapXapYapZaqaanDaqbaehanDakTaqcahLaqdanHaqeaqfaqgaqhaqiaqjaqkanOaqlaqmaqmajOajOajOajOaqnagyagyagyagyagyaqoaqpaqqaqraqsaqtaquaqvaqwaqxaqyaqzaqAaqAaqAaqAaqAaqBaqCaqDalBapoapoapoapoaqEajlaqFaqGaqHaqIaqJajlaaiapyaqKaqLaqMaoxbRAbQzbTeaoxaaaaaiaaiaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaogaqNaaiaofaaiaqNaaiaofaofaaiaofaofaofaofaofaaaaaaaaaalVaqOaqPalVaqQaqRaqRaqRaqRaqRaqSalVaopaqTalVaqUaqValNaqWaqXalVaqYaqZaraalVaonapLarbarcardalVareapJarfalVargapOahlarhariagyarjajxarkarlansapSamdarmarnaroarparqarrarsartaruarvanDarwarxahLaryarzarAarBarCarDarEarFarEarGarHarIarJarJarKarLajOaqnagyarMarNarOarParParParParParQarRarSarTarTarTarTarTarUalBarVarWarXalBalBapoalBarYarZasaapoasbascasdaseasfasgashajlalCapyasiasjaskaoxbTFbTBcXyaoxaaaaaiaaaaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaofaaiaofaaiaofaofaofapCaaiaaiaaiaofaofaaiaaaaaiaaiahDaslasmasnasoaspaspaspaspaspasqasrassastasuasvaswaspasxaspasyaszasAagyagyagyagyagyagyagyagyagyagyasBagyasCagyagyagyagyagyagyajxasDasEansapSapTapUasFasGasHasIasJasKasLasManCasNasOasPaoLasQasRasSasTasUasVasWasXasYasZataaqmatbatcatbatdajOateatfatgathaiXarPcXuatjauvatlatmatnatoarTatpatqatrarTalBalBapoaqCarZapnalBapoalBarXapoatsapoalBattatuajlajlatvatwajlatxapyapyatyatzaoxaoxcXzaoxaoxatBatAaaaaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaofaofaofaofaofaaiaofaofaaiaqNaofaofaaiaaiaaiaaialValVatCalValVatDatEatEatEatEatEatFalValValValVatGatHatIatIatIatIatJatKagyatLatMatNatOatPatQatRatSatTatUatVatWagyatXatYatYatYatZajzauaaubansaucaudaueanCaufaehaehaugauhauiaoLaehaujaugahLahLajOaukaulaumaukajOauoaunajOaupaqmaqmauqauqauqajOajOauragyaiXausautarPatkauuatkatlauwauxauyauzauAauBauCarTauDalBauEauFauGauHalBapralBalBalBauIalBalBauJauKauLajlajlajlajlaprapnauPauMauNatAauOcXAauQatAaoaatAaaiaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaogaaiaofaofaofaofaofaofaofaofaofaofaofauRaofaaiaqNalValValVauSauTalVaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaialVankauUalTalNauValNauWauXauYauZavaavbagyagyagyavdavcavcavcaveagyagyavfavgavhaviavfajzajzahHavjavkamdavlavlavmavnavlavoavlavnavlavpavlavoavqavravsavnavtavuavlavlavlavnavlavvajxavwavxavxavxavxahHaqnagyautaiXaiXarPavyavzavAarPavBavCavDavEavFarTarTarTavGalBapnavHatsapoalBapoalBavIalBavJavKavLavMavNavOavPavQavRavSavTavUavRcXBcXCcXCcXEcXDavWatBavXatBacqacqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqNaaiaofapCaofaofaofaofavYaaiaofaofaofaofaofaofavZawaavZawbawcalValVaaiaaaaaaaaaaaaaaaaaaaaaaaaaaialValValVapJalNalTalNawdaweawfawgawhawiagyaaaaaiaaaaaaaaaaaaaaaaaiaaaawjawkawlawmawnawoawpawqawrawsawtawuawuawvawtawuawwawxawtawyawzawuawAawBawCawuawDawEawFawGawGawHawIawJawKawLawMawNawOawPawQahHaqnagyawRahlawSarPawTawUawVawWawXawYawZarTaxaaxbaxcarTaxdalBalBalBauIalBalBapoalBaqDalBaxeatAatAattaxfajlatAatAatAatAatAatAatAatAatAanZatAatAatAatAatAaxgatAaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaofaofaofaofaofaofaofaofaofaofaofaaiaofaofaofaaialValValVaxhawialTalVaaaaxiaxjaxkaxjaxlaaiaaiaaiaaialVaxmalVaxnaspaspaspaxoaxpalVaxqaxraxsagyaaaaxtaxtaxtaxtaxtaxtaxtaaaavfaxuaxvaxwavfajzajzahHaxxaxyaxzaxAaxBaxCaxzaxDaxBaxyaxEaxFaxGaxHaxIaxJaxKaxLaxMaxNaxOaxPaxQaxOaxRaxSaxTaxUaxVaxWaxXaxYaxZahHaqnayaayaayaayaarPatiaybaycaydayeayfauyaygayhayiayjarTaykaylaymaynayoaynaypaynayqaynaynayraysaytayuayvaywayxayyayxayzayAayBayAayCatAatAatAayzayAayCayDayDayxaaiaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaiaaiaaiaaiaofaofaofaofaofaofaofayEaofaaiaaiaaiaaialValNawiaonahDaaaayFayGayHayIayFayJayJayJayKayKayKayKayLayKayKayMayMayMayMayNayMayOagyaaiaxtayPayQayRaySayTaxtaaaavfayUayUayVavfaaaaaaayWayXayYayZahHayXazaayZahHayXazbayZahHazcajzazdahHajzazeazfajzajzazgazgazhaziazjazgazgazkahHahHahHahHahHaqnayaazlazmaznarParParParParPazoazpazqavEavFarTarTarTalBazrapnanZapoapnazsapoatAatAatAatAatAaztazuazvazwazxazyazxazzazAazBazAazCayAazDayAazEazAazBazAayDazFazGaaiaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -8092,14 +8110,14 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaaaaaaWXaWwaWxaWyaWzaWAaWBaWCaWDaWEaWDaWFaWGaWDaWHaWIaWJaWKaWLalVaaaaaaaHWaHWaHWaHWaHWaaaaaiaVqaWMaSQaLRaNwaNwaWNaWOaKEaWPaWQaWRaWSaWTaWUaWVaWWalVawiaKKaKKaKKaOOaOOaXFaKPaWYaWZaKPaXaaXbaXcaVIaXdaXeaXfaVIaXgaXhaXiaXjaXkaXlaXmaXnaXoaXpaXqaIxaIxaUBaXraUBaIxaIxaUyaXsaXtaUyaXuaXvaXwaXxaXyaXzalBalBalBalBaXAalBalBalBalBalBalBaDmapnapoaXBaXBaXBaXBaXBaXBaXBaWiaXCaXDaXEaWiaXWaXGaWiaXHaXIaCiaCiaXJaXKaXLazxaXMazxaXNazAaXOazAayzayAaXPayAayCazAaXOazAayDazFazGaaiaaiaahaahaagaaiaagaahaahaagaagaahaahaahaagaaiaaiaaiaaiaaiaogaSAaXQaXRaXRaXRaXRaXRaXSaXSaXSaXTaXSaXSaXSaXRaXUaXRaXRaXRaXVaSHaogaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaiaaaaZZaXXaXYaXYaXZaXYaXYaXYaYaaYbaYcaYdaYeaYeaYeaYfaYgaYhaYialVaaaaaaaaiaaiaaaaaaaaiaaiaaiaVqaYjaYkaYlaYmaNwaYnaYoaYpaYqaYraYsaYtaYuaYvaYwaYxalVaYyaYzaYAaYBaYCaYDaYEaYFaYGaYHaYIaYJaYKaYJaYLaYMaYNaYOaYPaYJaYQaYRaYRaYSaYTaYUaYRaYRaYVaYWaYWaYWaYXaYYaYWaYWaYZaYWaZaaZbaYWaYWaYWaZcaZdalBaZeaZfaZgaZhaZiaZjaZiaZkaZiaZlavUaWhavVaqCapoaXBaZmaZnaZoaZpaZqaZraWiaZsaZtaZtaZuaZtaZvaWiaZwaWnaZxaZyaZyaZyaZyaZyaZzayxaZAayAaZBayAazEayxayxayxaZAayAazEayDayDayxaaiaaiaaaaaaaaaaaaaaiaaaaaaaaaaaaaaaaaaaaiaaaaaaaaaaaaaaaaaaaaaaogaTMaTNaTTaaaaTQaZCaZCaZDaZEaZFaZGaZHaZEaZIaZCaZJaTQaaaaViaTNaTTaogaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaiaZZaZZaZKaZZaSIaZZaZLaZZaXXaXYaZMaZNaZZaZLaZZaZOaZPaZQaZRalValValValVahDahDahDalValValVaVqaZSaZTaZTaZTaZTaZUaNwaZVaZWaZXaZYaUoaUoaUoaUobcUalValVbaaalValVbabbacbadbaebafbagbahbaebafbaibajbagbakbaebaebaebafbaebaebalbambaebaebaebaebaebaebaebanbaobaebaebahbapbaqbaebaebaebaebarbasbatbatbatbaubatbatbatalBbavalBaDmalBalBbawbawbawbawbaxbaybaybazbaAbaBaWibaCbaDbaEbaFbaGbaHaWibaIbaJbaKaZybaLbaMbaNaZybaOayxayxayxayxayxayxayxbaPayxayxayxayxayxaHLayxaaiaogaogaagaogaogaogaogaagaogaogaogaogaagaogaogaogaogaogaogaogaogaSAaTNaTTaaaaTQaZCaZFbaQbaRbaSbaTbaUbaRbaVaZFaZJaTQaaaaViaTNaTTbaWbaWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaaaZZaaiaaaaaiaaaaZZbaXaZZbaYbaYbaZbbaaZZbaXaZZaZZaSIbbbbbcbbdasoaspbbeaspbbfaspbbgbbhasqbbibbjbbkbbkbblbbmbbnbbobbpbbqbbrbbsbbqbbtbbubbqbbvbbwbbxbbybbzbbAbbBbbCbbDbbEbbEbbFbbGbbHbbIbbJbbKbbLbbMbbMbbMbbMbbMbbMbbMbbNbbObbPbbPbbPbbPbbPbbPbbPbbPbbQbbRbbSbbTbbPbbUbbQbbPbbPbbVbbWbbXbatbbYbbZbcabcbbccbatbcdbcealBbcfalBaaabawbcgbchbawbcibcjbckbclbcmbcnaWibcobcpbcqbcrbcsbctaWibcubcvbcwaZybcxbcybczaZybcAaKoaKobcBaKobcCaKoaKoaKobcDaKobcEbcFbcEbcFacqacqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaogaaaaRbbcGaTNaTTaaaaTQaZCbcHbcIaZCbcJbcKbcLaZCbcMbcNaZJaTQaaaaViaTNbcOaaabaWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaaaZZaaiaaaaaiaaaaZZbaXaZZbaYbaYbaZbbaaZZbaXaZZaZZaSIbbbbbcbbdasoaspbbeaspbbfaspbbgbbhasqbbibbjbbkbbkbblbbmbbnbbobbpbbqbbrbbsbbqbbtbbubbqbbvbbwbbxbbybbzbbAbbBbbCbbDbbEbbEbbFbbGbbHbbIbbJbbKbbLbbMbbMbbMbbMbbMbbMbbMbbNbbObbPbbPbbPbbPbbPbbPbbPbbPbbQbbRbbSbbTbbPbbUbbQbbPbbPbbVbbWbbXbatbbYbbZbcabcbbccbatbcdbcealBbcfalBaaabawbcgbchbawbcibcjbckcXFbcmbcnaWibcobcpbcqbcrbcsbctaWibcubcvbcwaZybcxbcybczaZybcAaKoaKobcBaKobcCaKoaKoaKobcDaKobcEbcFbcEbcFacqacqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaogaaaaRbbcGaTNaTTaaaaTQaZCbcHbcIaZCbcJbcKbcLaZCbcMbcNaZJaTQaaaaViaTNbcOaaabaWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaiaaiaaiaaiaaiaaaaZZaZLaZZaZZaZZaZZaZZaZZaZLaZZaaaaSIbcPbcQbcRbcRbcRbcRbcRbcRbcRbcRbcSbcTbbqbbqbdpbcVbdpbbqbbqbbqbcWbbqbcXbcYbcZbdabdbbdcbddbdebdfbdgbdhbbAbdibbCbdjbdkbdkbdlbdkbdmbdkbdnbdobdnbdBbdBbdBbdBbdBbdBbdBbdBbdBbdBbdBbdBbdBbdBbdBbdBbdBbdqbdqbdrbdqbdqbdqbdqbdqbdqbdsbbCbdtbatbdubdvbdwbdxbdybatbdzbdAalBaDmalCaaabeIbdCbdDbdEbdFbdGbdHbdIbdJbdKaWibdLbdMbdNbdNbdObdPaWibdQbdRbdQaZybdSbdTbdUaZybdVayxayxayxayxayxayxayxayxayxaEhayxayxaZzayxaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaiaaiaogbdWbdXbdYbdZaTQaTQaTQaZCbeabebbecaZCaZCaZCbedbeebefaZJaTQaTQaTQbegaSGaSHaogaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabehbeibejbeibekbeibeibekbeibejbelbemaSIbcPbenbeobepbeqberbesbetbeubcRbevbewbexbeybezbeAbezbeAbeBbeAbeCbbqbeDbeEbeFbeGbeHbeObeJbeKbeLbeMbeNbgebePbeQbeRbdkbeSbeTbeUbeVbdkbeWbeXbeYaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaibdqbeZbfabfbbfcbfdbfebffbdqbfgbfhbfibatbfjbfkbflbfmbfnbatalBalBalBbfoalBaaabawbfpbfqbawbfrbfsbftbfubfvbfwaWibfxbfybfzbfAbfBbfCaWiaCibfDaCiaZybfEbfFbfGaZybfHbfHbfHacYaaZaaaaaaaaaaaaaaiaaaaaaayxbcFayxaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaRaaRabfIbfJaTNbfKbfLaaaaaaaTQbfMbfNbfOaZCaZCbfPaZCaZCbcMbfQbfRaTQaaaaaabfSaTNaTTaogaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabehbeibeibfTbfUbfVbfWbfXbfYbfZbgabgbbfVbgcbgdaZZbcPbcQbgLbgfbggbghbgibgjbgkbglbgmbgnbgobgpbgpbgqbgrbgsbbqbbqbbqbbqbgtbgubgvbgwbgxbdpbgybdebdfbgzbgAbgBbgCbbCbgDbdkbgEbgFbgGbgHbgIbgJbgKbgMaaiaaibgNbgPbgObgRbgQbgSbgPbgRbgQbgSbgObgObhcaaiaaibdqbgTbgUbgVbgWbgVbgXbgYbdqbgZbbCbhabhbbatbhebhdbhlbatbatbhfbhgalBbhhalBbhibawbawbawbawaXBaXBaXBbhjbhkaXBaWiaWiaWiaWiaWibhpbhmaWibhnbhobhnaZybhrbhqbiBaZybhsbhtbhubhvbhvbhwaaaaaaaaaaaiaaaaaaaaaacqaaaaaiaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaiaaiacqbhxbhybhzbhybhAaTTaaaaaaaaaaTQbhBaZFbhCbhDbhEbhFbhGbhDbhHaZFaZJaTQaaaaaaaViaTNaTTaogaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhIbhJbhKbhLbfVbhMbhNbhMbhNbhMbhNbhMbfVbhObhPaZZbcPbhQbcRbhRbhSbhTbhUbhVbhWbcRbhXbhYbhZbiabibbicbidbiebifbigbihbiibijbikbilbimbinbiobipbiqbirbisbitbiubePbbCbgDbdkbivbiwbixbiybdkbizbiAbeYaaiaaibiNbiCbiDbiEbiFbiGbiHbiIbiJbiKbiLbiMbjyaaiaaibdqbiObiPbiQbiRbiSbiTbiUbdqbdsbiVbiWbiXbiYbiZbiYbjabjbbjcbiYbiYbiYbjdbiYbjebjfbjgbjhbiYbiYbjibjebjabjdbjjbjkbjibjlbjmbjnbjobjpbjqbjrbjsbjtbjubjvbjwbjxbjVbjzbjzbjAbjBbjCbjDaaaaaaaaaaaiaaaaaaaaaacqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaiaaiaaiacqbhxbhybjEbhybjFaTTaaaaaaaaaaTQbjGbjHaZDbjIbjJbjKbjLbjMbjNaZCaZJaTQaTQaTQaTQbjOaSHaogaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhIbhJbhKbhLbfVbhMbhNbhMbhNbhMbhNbhMbfVbhObhPaZZbcPbhQbcRbhRbhSbhTbhUbhVbhWbcRbhXbhYbhZbiabibbicbidbiebifbigbihbiibijbikbilbimbinbiobipbiqbirbisbitbiubePbbCbgDbdkbivbiwbixbiybdkbizbiAbeYaaiaaibiNbiCbiDbiEbiFbiGbiHbiIbiJbiKbiLbiMbjyaaiaaibdqbiObiPbiQbiRbiSbiTbiUbdqbdsbiVbiWbiXbiYbiZbiYbjabjbbjcbiYbiYbiYbjdbiYbjebjfbjgbjhbiYbiYbjibjebjabjdbjjbjkbjicXGbjmbjnbjobjpbjqbjrbjsbjtbjubjvbjwbjxbjVbjzbjzbjAbjBbjCbjDaaaaaaaaaaaiaaaaaaaaaacqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaiaaiaaiacqbhxbhybjEbhybjFaTTaaaaaaaaaaTQbjGbjHaZDbjIbjJbjKbjLbjMbjNaZCaZJaTQaTQaTQaTQbjOaSHaogaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabekbfVbfVbejbfVbhMbhNbhMbjPbhMbhNbhMbfVbhObhPaZZbjQbjRbjSbjTbjUbkubjWbkubeobeobjXbjYbcWbbqbjZbkabkbbkcbkdbkebkfbbqbkgbkhbkdbgwbkibbqbkjbkkbklbkmbknbgebgCbbCbgDbdkbkobkpbkqbkrbdkbksbktbeYbgQbmHbgQbkvbkwbkxbkybkxbkzbkxbkybkxbkAbkBbgQbmHbgQbdqbkCbkCbkCbkDbkEbkFbkGbdqbkHbkIbkJbkKbkLbkMbkLbkNbkLbkObkLbkLbkLbkPbkLbkQbkRbkSbkTbkLbkLbkUbkVbkWbkPbkXbkPbkYbkZblabjnblbblcblcbldbleblcblcblfblgblhblibjzbjzbljbhvbhvblkaaaaaaaaaaaiaaaaaaaaaaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaibllaaaaaaaaaaaibfLbfLbfIblmaTNaTTaaaaaaaaaaTQaTQbhBaZCaZCaZCblnaZCaZCaZCaZCbloaXUblpaaaaViaTNaTTaogaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhIblqblrbhLbfVbhMbhNbhMbhNbhMbhNbhMbfVbhObhPaZZblsbltblublvblwblxblxblyblzblvblAblBblCbbqblDblEblFblGblHblIblJbbqblKblLblMblNblObbqblPblQblRblSblTbbAblUbfhblVblWblWblWblWblWbdnblXblYbdnbgQblZbmabmbbkybkybkybkybmcbkybkybkybkybmdbmebmfbgQbmgbmhbmibmjbmkbmlbmlbmmbdqbmnbmobmpbmqbmrbmsbmrbmtbmrbmubmrbmrbmvbmrbmrbmwbmxbmrbmybmvbmzbmAbmwbmBbmrbmCbmDbmEbmFbmGbnCbmIbmJbmKbmLblhbmMbmMbmNbmObmPbmQbjnbjnbjnacYbmRaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaabmSbmTbmUbmVbmWbmXbmYbmZaTNaTQaTQaTQaTQaTQbnabnbbnabnabncbndbncbnebnebnfbngbnhaTRaaaaViaTNaTTaogaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabnibeibeibfTbnjbfVbnkbfVbnlbnmbfVbnnbfVbgcbnoaZZbcPbnpbnqbnrbnsbntbnubnvbnwbnrbnxbnybnzbbqbnAbdpbnBbnEbbqbbqbbqbbqbbqbdpbnDbohbbqbbqbgebnFbnGbgebgebnHbabbbCbnIblWbnJbnKbnLblWbnMbnNbnObnPbnQbnRbnSbnTbnUbnVbnWbnXbnYbnWbnWbnZbnUboabobbocbgQbdqbkCbkCbkCbodbkCbkCbkCbdqboebbCbofbogbomboibombogbojbojbojbojbojbojalBalBbokalBalBalBbolbpFalBalBalBbonalBboobopboqborbosbotboubovbmMbowbowboxbmOboybfHbjnbozboAboBboCboDboDboEboFaaiaaaaaaaaiaaaaaaaaaaaaaaaaaaaaiaaaaaaaaaaaaaaaaaaaaiaaabmSboGboHaaaaaiboIboJboKboLboMboNbnaboOboPboQboRboSboTbnaboUboVboWboXboYboZboZbpaaTRaaaaViaTNaTTaogaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabnibeibeibfTbnjbfVbnkbfVbnlbnmbfVbnnbfVbgcbnoaZZbcPbnpbnqbnrbnsbntbnubnvbnwbnrbnxbnybnzbbqbnAbdpbnBbnEbbqbbqbbqbbqbbqbdpbnDbohbbqbbqbgebnFbnGbgebgebnHbabbbCbnIblWbnJbnKbnLblWbnMbnNbnObnPbnQbnRbnSbnTbnUbnVbnWbnXbnYbnWbnWbnZbnUboabobbocbgQbdqbkCbkCbkCbodbkCbkCbkCbdqboebbCbofbogbomboibombogbojbojbojbojbojbojalBalBbokalBalBalBbolcXHalBalBalBbonalBboobopboqborbosbotboubovbmMbowbowboxbmOboybfHbjnbozboAboBboCboDboDboEboFaaiaaaaaaaaiaaaaaaaaaaaaaaaaaaaaiaaaaaaaaaaaaaaaaaaaaiaaabmSboGboHaaaaaiboIboJboKboLboMboNbnaboOboPboQboRboSboTbnaboUboVboWboXboYboZboZbpaaTRaaaaViaTNaTTaogaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabnibeibpbbeibekbeibeibekbeibejbpcbpdaSIbpebpfbpgbbAbphbpibpjbpibpkbbAbplbpmbpnbpobppbpqbprbpsbptbpqbpubpvbpqbppbppbpwbppbpxbpybpzbpAbpBbppbpCbpDbpEbgDbqfbpGbpHbpIblWbeYbeYbeYbeYbgQbpJbpKbpLbpMbpNbpObkybpPbpQbpRbpSbpMbpTbpUbpVbpWbdqbpXbpYbpZbqabqbbkCbqcbdqbqdbbCbqebvFbqgbqhbqibogbqjbqkbqlbqmbqnbqobqpbqqbqralBbqsbqtbqubqvbqwalBatxbqxalBbqybqzbqAbjVbqBbqBbqBbqCbqDbmMbmMbqEbqFbqGbqHbqIbqJbqKbqLbqMbqNbqNbqObqPbqQbqQbqQbqRbqQbqQbqQbqQbqQbqQbqRbqQbqQbqQbqQbqQbqQbqRbqQbqSbqTbqNbqNbqNbqUbqVbqWbqXbqXbqYbqZbrabrbbrcbrdbrebrfbrgbrhbribrjbrkbrlbrmbrnbrobrpaXRaXRbrqaSHaogaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaiaaiaaiaaiaaaaZZaZLaZZaZZaZZaZZaZZaZZaZLaZZaaaaSIbrrbrsbrtbbAbrubrvbrwbrvbrxbbAbrybrzbrAbrBbrBbrCbrDbrBbrBbrEbrFbrGbrHbrBbrBbrIbrBbrBbrBbrJbrKbrLbrLbrMbrNbrObrPblWbrQbrRbrSblWbrTbrUbrVbrWbrXbpSbrYbpNbrZbsabsbbscbsdbscbsebsfbsgbshbsibsjbskbdqbslbsmbsnbsobspbdqbdqbdqbdsbsqbsrbogbssbstbsubogbsvbswbsxbsybszbsAbsBbsCbsDbsEbsFbsGbsHbsIbsJbsKbsLbsMalBboobsNbsObjnbsPbsQbsRbsSbsTbsUbsVbsWbsXbmObsYbsZbtabtbbtcaSHaaaaaabtdboHaaiaaaaaaaaiaaaaaaaaaaaaaaaaaaaaiaaaaaaaaaaaaaaaaaaaaiaaabtebtfboFaaaaaiaVibtgbthbtibtjbtkbtlbtmbtnbtobtpbtqbtrbtsbttbtubtvbtwbtxboZbtybtzaTRaaaaViaTNaTTaogaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaiaZZaaiaaaaaiaaaaZZbtAaZZbtBbtCbaYbtDaZZbtAaZZaZZaSIbcPbtEbtFbbAbtGbrvbtHbrvbtIbbAbtJbtKbtLbtMbtNbtObtPbtQbtRbtSbtTbtUbtNbtNbtNbtVbtNbtWbtXbtPbtYbtNbtNbtZbuabubbrPblWbucbudbuebufbugbuhbugbugbrXbuibujbukbukbukbulbumbunbuobupbukbukbukbuqburbgQbdqbusbutbuubuvbuwbdqbuxbuybuzbuAbsrbombuBbuCbuDbogbuEbuFbuGbuHbojbojalBalBbuIalBalBalBbuJbuKalBalBbuLbuMalBbuNbsNbuObjnbfHbfHbfHbfHbuPbfHbfHbuQbuRbuSbjnbjnbuTbuUbuVbuWaaabmSbuXaaaaaiaaaaaaaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaabtebtfboFaaibuYbuZbvabvbbvcbvdbnabvebvfbvgbvhbvibvjbnabvkbvlbvmbnebvnbvoboZbpaaTRaaaaViaTNaTTaogaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -8111,13 +8129,13 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabCPbCPbCPbCPbCPbCPbCPbCPbCPbCPbCPbCPbFWaZZaZZbcPbEwalVbExbEybEzbBjbEAbCUbCVbEBbECbEDbBjbEEbEFbEGbEHbxEbxEbxEbBoapLbvEbEIbEJbxKbxLbxKbxKbxKbxKbxKbEKbxKbvGbELbEMbENbEObEPbEQbEPbERbEPbEQbEPbESbETbEUbEVbEWbEXbEYbEZbEZbFabFbbEZbFcbFdbFebFfbFgbFhbEYbFibFjbEYbFkbFlbEYbFmbFnbFobFpbsrbFqbysbFrbysbFsbysbFtbysbFubApbApbFvbApbApbFwbFxbDJbFybAwbDMbFzbAAbyCalBbFAbFBbuObDnbFCbDSbFDbDSbFEbFFbFGbFHbFIbFJbCnbFKbFRbFMbFNbFObFPbFQbCnaaibCnbFSbFLbHRbCEaaiaaabAWaaabAVaaabAWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaogaVibAXaTTaaaaaaaaaaaabFTbFUbFVbFVbGGbFXbGGbFVbFVbFYblpaTQaTQbjObFZbGaaaaaogaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabCPbCPbCPbCPbCPbCPbCPbCPbCPbCPbCPbCPbGbbGcbGbbcPbGdalVbGebGfakzbBjbGgbCUbCVbGhbCUbGibBjbxEbGjbxEbDbbGkbGlbxEbBoapJbvEbGmbDgbGnbGobGpbGpbGpbGpbGpbGqbGpbGrbuabGsbGtbGubGvbGwbGvbGxbGybGzbGAbGBbGCbGDbGEbGvbGLbGFbGMbGHbGIbGJbGMbGKbHObIAbGNbGObGPbGQbGRbGSbGTbGUbGVbGObGWbGXbGYbGZbHabHbbHcbHdbHebHebHfbHgbHcbHhbHibHjbHkbyBbHlbyBbHmbHnbHobHpbHqbHrbHsbHtalBbHubHvbHwbHxbHybHzbHAbHBbHCbCnbHDbHEbHFbHGbHHbHIbEdbHJbHKbHLbHMbHNbICbHPbHQbHSbFLbKRbCEaaiaaabAWaaabAVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaogaVibAXbHTaRaaRaaaaaaaaTRbHUbHVbHWbGGbHXbGGbHYbHZbIaaTRaaaaViaTNaTTbaWaogaogaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabCPbCPbCPbCPbCPbCPbCPbCPbCPbCPbCPbCPaZZaZZaZZbcPbIbalVbIcalValVbBjbIdbIebIfbCUbCUbCUbBjbIgbIhbxEbIibxEbxEbxEbIjbIkbIlbBqbBqbEKbImbInbBqbBqbBqbBqbIobIpbzLbvJbIqbIrbIsbIsbItbIubIvbIsbIsbIwbIwbIxbIybIwbIzbIEbIBbIGbIzbIDbIDbISbIFbJrbIDbIHbIIbIJbIKbIHbIHbILbIMbINbIHbIObdnbIPbIQbIRbJsbITbIUbITbIVbIWbysbysbDGbDHbApbIXbIYbIZbIYbHjbJabJbbJcbJdbJebAAbJfalBbJgbJhbJibJjbJkbJlbJmbJnbyKbJobJpbJqbCBbCybCnbJtbJvbJubJvbJubLTbLKbCnaaibCEbCEbCEbCEbCEaaiaaabAWaaabAVaaabAWaahaagaaiaagaahaahaagaagaahaahaahaogaogaogaogbdWbJwaSCaSCbJxbmYbmYaTRbJybJzbJAbGGbFXbGGbJAbJzbJBaTRaaaaViaTNaTTaogaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaibCPbCPbCPbCPbCPbCPbCPbCPbCPbCPbCPaaiaZZbJCbcPbJDalVbBoapLbJEbBjbJFbCVbJGbJHbGibCUbBjbJIbJJbxEbEEbJKbJLbxEbBoalTbvEbJMbJMbEKbxLbJNbJNbJObJPbJQbJRbvEbvEbELbJSbJTbIsbJUbJVbJWbJXbJYbJZbKabKbbKcbKdbIwbKebKfbKgbKhbKibIDbKjbKkbKlbKmbKnbIHbKobKpbKqbKrbIHbIHbIHbIHbIHbKsbdnbIPbKtbKubojbKvbKwbDDbKxbKybDDbKzbojbDHbKAbApbApbApbApbApbKBbKCbKDbKEbKFbAAbKGatAbKHbKIbKJbKKbKLbKMbKNbKObKPbKQbMxbKSbKTbKUbKUbKVbKWbKXbEebKYbKZbLabEvbEjbEkbLbbLcbLcbCEaaiaaibLdaaibLeaaibAWaaaaaaaaiaaaaaaaaaaaaaaaaaaaaiaaaaaaaaaaaaaogaaabLfaTPaTSaTNaTTaaaaTRbLgbJzbJzbJzbLhbJzbJzbJzbLiaTRaaaaViaTNaTTaogaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaiaZZaZZaSIaZZaZKaZZaSIaZZaZZaZZaSIaZZaSIaSIaSIbLjbLkbLlbLmbLnbLobBjbLpbLqbJGbLrbLsbLtbBjbxEbxEbxEbxEbxEbxEbxEbBoakCbvEbLubLvbEKbxLbBqbBqbLwbBqbLxbLybvEbLzbvJbbCbLAbIsbLBbLCbLDbLEbLFbJZbLGbLHbLIbLJbLYbLLbLMbLMbLMbLNbLObLPbLQbLRbLQbLSbNJbLUbLVbLWbLXbPwbLZbMabMbbIHbMcbdnbMdbMebMfbMgbMgbMgbMhbMibMjbMkbMlbMgbMmbMgbMnbMobMpbMqbMrbAAbAAbMsbAAbAAbAAbJfbMtbMubMvbMtbyGbyGbyGbyGbyGbMwbyKbRsbMybMzbCzbMAbMBbMCbMDbEcbMEbMFbMGbCnaaibCnbMHbMIbMJbCEaaiaaabAWaaabAVaaabMKaogaogaogaogaagaogaogaogaogaagaogaaiaagaogaogaogaogaogaViaTNaTTaaaaTRbMLbMMbMNbJzbMObJzbMPbMQbMRaTRaaaaViaTNaTTaogaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaibCPbCPbCPbCPbCPbCPbCPbCPbCPbCPbCPaaiaZZbJCbcPbJDalVbBoapLbJEbBjbJFbCVbJGbJHbGibCUbBjbJIbJJbxEbEEbJKbJLbxEbBoalTbvEbJMbJMbEKbxLbJNbJNbJObJPbJQbJRbvEbvEbELbJSbJTbIsbJUbJVbJWbJXbJYbJZbKabKbbKcbKdbIwcXIbKfbKgbKhbKibIDcXJbKkbKlbKmbKnbIHbKobKpbKqbKrbIHbIHbIHbIHbIHbKsbdnbIPbKtbKubojbKvbKwbDDbKxbKybDDbKzbojbDHbKAbApbApbApbApbApbKBbKCbKDbKEbKFbAAbKGatAbKHbKIbKJbKKbKLbKMbKNbKObKPbKQbMxbKSbKTbKUbKUbKVbKWbKXbEebKYbKZbLabEvbEjbEkbLbbLcbLcbCEaaiaaibLdaaibLeaaibAWaaaaaaaaiaaaaaaaaaaaaaaaaaaaaiaaaaaaaaaaaaaogaaabLfaTPaTSaTNaTTaaaaTRbLgbJzbJzbJzbLhbJzbJzbJzbLiaTRaaaaViaTNaTTaogaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaiaZZaZZaSIaZZaZKaZZaSIaZZaZZaZZaSIaZZaSIaSIaSIbLjbLkbLlbLmbLnbLobBjbLpbLqbJGbLrbLsbLtbBjbxEbxEbxEbxEbxEbxEbxEbBoakCbvEbLubLvbEKbxLbBqbBqbLwbBqbLxbLybvEbLzbvJbbCbLAbIsbLBbLCbLDbLEbLFbJZbLGbLHbLIbLJbLYcXKbLMbLMbLMbLNbLOcXLbLQbLRbLQbLSbNJbLUbLVbLWbLXbPwbLZbMabMbbIHbMcbdnbMdbMebMfbMgbMgbMgbMhbMibMjbMkbMlbMgbMmbMgbMnbMobMpbMqbMrbAAbAAbMsbAAbAAbAAbJfbMtbMubMvbMtbyGbyGbyGbyGbyGbMwbyKbRsbMybMzbCzbMAbMBbMCbMDbEcbMEbMFbMGbCnaaibCnbMHbMIbMJbCEaaiaaabAWaaabAVaaabMKaogaogaogaogaagaogaogaogaogaagaogaaiaagaogaogaogaogaogaViaTNaTTaaaaTRbMLbMMbMNbJzbMObJzbMPbMQbMRaTRaaaaViaTNaTTaogaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaaaZZbMSbvtaWybMTaWyaWBaWBbMUaWBbvtaWBbMVbvtaWBbvubMWalVbMXalNapMbBjbMYbMZbCUbCUbCUbNabBjbNbbNcbNdbNebNfbNgalVbBoarabvEbNhbNibEKbNjbNkbNkbNlbBqbBqbNmbvEbNnbvJbbCbJTbIsbNobNpbNqbNrbNsbJZbNtbNubNvbNwbIwbNxbNybNzbNybNAbIDbNBbNCbNDbNCbNEbIHbNFbNGbNHbNIbQGbNKbNLbNMbIHbNNbdnbNOaXlbKubMgbNPbNQbNRbNSbNTbNUbNUbNVbNWbMgbMgbMgbMgbMgbMgbMgbAAbNXbNYbNZbAAbOabMtbObbOcbOdbMtbOebOfaprbOgbyGbOhbOibOjbOkbOlbOmbOnbOobOpbOqbMEbOrbOsbICbHPbHQbOtbLcbOubCEaaiaaabAWaaabAVaaabAWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaWbdWbOvaXRaXRbOwblpbOxbOybJzbOzbJzbOAbOBbFTbOwaXRaXRbOCaSHaogaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaaaZZaXXaXYaXYaXYaXYaXYbODbOEbOFbzhbzhbOGbOHbOIbOJbOKalVbcSaqWapMbBjbCWbOLbCUbCUbOLbOMbBjbONaooaoqbOObLobNfalVbBobOPbvEbOQbORbOSbOTbBqbOUbOVbOWbOXbOYbvEbOZbvJbbCbPabIsbPbbPcbPdbPebJZbJZbPfbPgbPhbPibIwbNxbNybNybNybPjbIDbNBbNCbPkbPlbPmbIHbPnbNGbPobPpbIHbPqbPrbPsbIHbPtbdnbPuaXlbPvbQMbPxbPybPzbPAbPBbNRbNRbPCbPDbMgbPEbPFbPGbPFbPHbMgbPIbPJbPKbPLbAAbJfbMtbPMbPNbPObMtarZapoapobPPbyGbOhbPQbPRbyHbyHbyHbPSbCzbPTbCzbMEbPUbMGbCnaaibCEbCEbCEbCEbCEaaiaaaaagaaabAVaaabAWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaogaViaTNaTTaaaaaaaTRbPVbJzbJzbJzbPWbPXbPYaTRaaaaaaaViaTNaTTaogaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaiaZZaZZbPZbPZaZZaZZaZZaSIaZZaSIaZZaSIaSIalVbQaalValValVbcSaraapMbBjbOMbQbbQcbCUbQcbQdbBjbQeapJalTapLbQfanfalVbBoalNbvEbvEbzLbQgbQhbzLbvEbvEbvEbvEbQibvEbvEbQjbfhbQkbIsbQlbQmbQnbQobQpbJZbQqbQrbQsbQtbIwbQubQvbQwbQxbQybIDbQzbNCbQAbQBbQCbIHbQDbNGbQEbQFbWfbQHbQIbQJbIHbQKbdnbQLaXlbKubZHbQNbQObQPbQQbQRbQSbQObPCbQTbMgbQUbQVbQWbQXbPHbMgbQYbQZbRabRbbRcbRdbMtbRebRfbRgbMtbRhbRibRjbRkbyGbRlbRmbMybRnbyHbRobOpbCzbOnbRpbRqbRrbLabEvbEjbEkbRtbSYbSXbCEaaiaaabAWaaabAVaaabAWaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaogaViaTNaTTaaaaaaaTRbRubRvbRwbJzbRxbRybRuaTRaaaaaaaViaTNaTTaogaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaaaaaaZZbRzbaXaZZaaaaaibRAbRAbRAaaiaaaaaaalVbRBbRCbRDbREbRFbREbRGbBjbBjbBjbBjbRHbBjbBjbBjbRIaqWalNalTbRJbRKalVbRLbRMbvEbRNbRObRPbRQbRRbRSbRTbvEbRUbRVbRWbvEbvJbbCbRXbIsbLBbPcbRYbRZbLBbJZbSabSbbScbSdbIwbSebSfbSgbShbSibSjbSkbSlbSmbSnbSobIHbSpbSqbSrbSsbStbSubSvbSwbSxbSybdnbSzaXlbKubZHbSAbSBbSBbSCbSDbSEbSFbSGbSHbMgbSIbQVbSJbSKbSLbMgbSMbSNbSObSPbAAbJfbMtbMtbMtbMtbMtbSQapoapobSRbyGbRlbRmbMybSSbSTbRobSUbEcbOnbSVbMEbSWbMGbCnaaibCnbUmbWIbUnbCEaaiaaabAWaaabAVaaabAWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaogaViaTNaTTaaaaaaaTRbSZbFVbTabTbbTcbFVbTdaTRaaaaaaaViaTNaSHaogaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaiaaiaZZbPZbPZaZZaaiaaibTebTebTeaaiaaiaaialVbTfaspaspaspbzFapJapMalNankauUakCbTgbTharaalValValValValVbTialValVbBoapLbvEbTjbTkbTlbTlbRQbTmbTnbvEbTobTpbTqbvEbzKbbCbTrbIsbLBbTsbTtbTubTvbJZbTwbTxbTybIwbIwbTzbTAbTBbTCbTDbIDbTEbNBbTFbTGbTHbIHbTIbTJbTKbTLbQGbTMbTMbTNbIHbTObdnbTPaXlbKubMgbTQbTRbTSbNRbTTbTUbPAbTVbTWbTXbTYbTZbUabUbbUcbMgbAAbAAbAAbAAbAAbUdalBbUebPPaqDapobUfaqCbUgapobyGbyGbUhbJqbRnbyHbUibUjbCzbUkbRpbMEbUlbOsbICbHPbHQbXEbSYbXFbCEaaiaaabAWaaabAVaaabAWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaogbdWbUoaTQaTQaTQbloaXRaXRaXRaXUaXRaXRaXRbzdaTQaTQaTQbjOaTTaogaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaiaZZaZZbPZbPZaZZaZZaZZaSIaZZaSIaZZaSIaSIalVbQaalValValVbcSaraapMbBjbOMbQbbQcbCUbQcbQdbBjbQeapJalTapLbQfanfalVbBoalNbvEbvEbzLbQgbQhbzLbvEbvEbvEbvEbQibvEbvEbQjbfhbQkbIsbQlbQmbQnbQobQpbJZbQqbQrbQsbQtbIwbQubQvbQwbQxcXMbIDcXNbNCbQAbQBbQCbIHbQDbNGbQEbQFbWfbQHbQIbQJbIHbQKbdnbQLaXlbKubZHbQNbQObQPbQQbQRbQSbQObPCbQTbMgbQUbQVbQWbQXbPHbMgbQYbQZbRabRbbRcbRdbMtbRebRfbRgbMtbRhbRibRjbRkbyGbRlbRmbMybRnbyHbRobOpbCzbOnbRpbRqbRrbLabEvbEjbEkbRtbSYbSXbCEaaiaaabAWaaabAVaaabAWaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaogaViaTNaTTaaaaaaaTRbRubRvbRwbJzbRxbRybRuaTRaaaaaaaViaTNaTTaogaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaaaaaaZZbRzbaXaZZaaaaaiaaaaaaaaaaaiaaaaaaalVbRBbRCbRDbREbRFbREbRGbBjbBjbBjbBjbRHbBjbBjbBjbRIaqWalNalTbRJbRKalVbRLbRMbvEbRNbRObRPbRQbRRbRSbRTbvEbRUbRVbRWbvEbvJbbCbRXbIsbLBbPcbRYbRZbLBbJZbSabSbbScbSdbIwbSebSfbSgbShbSibSjbSkbSlbSmbSnbSobIHbSpbSqbSrbSsbStbSubSvbSwbSxbSybdnbSzaXlbKubZHbSAbSBbSBbSCbSDbSEbSFbSGbSHbMgbSIbQVbSJbSKbSLbMgbSMbSNbSObSPbAAbJfbMtbMtbMtbMtbMtbSQapoapobSRbyGbRlbRmbMybSSbSTbRobSUbEcbOnbSVbMEbSWbMGbCnaaibCnbUmbWIbUnbCEaaiaaabAWaaabAVaaabAWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaogaViaTNaTTaaaaaaaTRbSZbFVbTabTbbTcbFVbTdaTRaaaaaaaViaTNaSHaogaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaiaaiaZZbPZbPZaZZaaiaaiaaiaaiaaiaaiaaiaaialVbTfaspaspaspbzFapJapMalNankauUakCbTgbTharaalValValValValVbTialValVbBoapLbvEbTjbTkbTlbTlbRQbTmbTnbvEbTobTpbTqbvEbzKbbCbTrbIsbLBbTsbTtbTubTvbJZbTwbTxbTybIwbIwbTzbTAcXObTCbTDbIDbTEbNBcXPbTGbTHbIHbTIbTJbTKbTLbQGbTMbTMbTNbIHbTObdnbTPaXlbKubMgbTQbTRbTSbNRbTTbTUbPAbTVbTWbTXbTYbTZbUabUbbUcbMgbAAbAAbAAbAAbAAbUdalBbUebPPaqDapobUfaqCbUgapobyGbyGbUhbJqbRnbyHbUibUjbCzbUkbRpbMEbUlbOsbICbHPbHQbXEbSYbXFbCEaaiaaabAWaaabAVaaabAWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaogbdWbUoaTQaTQaTQbloaXRaXRaXRaXUaXRaXRaXRbzdaTQaTQaTQbjOaTTaogaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalValValValVbRKbUpaspbUqbUrbUsbUtbUtbUtbUubUvbUtbUrbUtbUwbUtbUxbUtaMcbUyalTbvEbUzbUAbUBbUCbDgbUDbUEbvEbvEbvEbvEbvEbUFbbCbJTbUGbIsbUHbUHbUHbIsbIsbIwbIwbUIbIwbIwbUJbUJbUJbUKbUJbULbULbUMbUNbULbULbIHbIHbIHbIHbIHbIHbUObUObUObIHbUPbdnbUQaXlbURbUSbUTbUTbUTbUUbUTbUTbUVbUWbUTbUTbUTbUTbMgbUXbUYbUZbVabVbbVcapobVdbVealBbRjbVfbVgapobUfapoapoanZbyGbVhbFGbVibyHbyHbyHbVjbCzbVkbVlbMEbPUbMGbCnaaibCEbCEbCEbCEbCEaaiaaibMKaaibLeaaiaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaogaViaTNaTTaaaaaaaaaaaaaaaaaabVmaaaaaaaaaaaaaaaaaaaViaTNaTTaogaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaabVnbVnbVobVpbVqalVbVralValValVaUfbVsbVsbVsbVsbVsbVsbVsalTbVtbVubVvbvEbVwbVxbVybVzbDgbRQbVAbVBbVCauUalVbVDbvJbVEbVFbVGbVHbVIbVIbVIbVJbVKbVLbVMbVIbVNbVObVGbVGbVPbVQbVPbVPbVRbVPbVSbVTbVTbVUbVVbVWbVXbVYbVZbVIbVIbVIbWabWbbVTbWcaXlbWdbWecahbWgbWhbWibWjbWkbWlbWibWmbWnbWobWpbMgbWqbWrbWsbWtbWubWvbWwbVebWxalBalBalBalBalBbWybWzbyGbyGbyGbWAbFGbJqbWBbWCbWDbFKbWEbWFbWGbRqbWHbLabEvbEjbEkbYVbYWbYWbCEaaiaaabAWaaabAVaaabAWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaogaViaTNbHTaRaaRaaRaaRaaRaaRabVmaRaaRaaRaaRaaRaaRabfJaTNaSHaogaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaabVqbWJbWKbWLbVqalTbWMbLobWNalVbWObVsbWPbWQbWRbWSbWTbVsalTalNbVualNbvEbvEbvEbvEbvEbvEbvEbvEbvEatKalNalVbWUbvJbWVbWWbaebaebaebaebaebaebahbaebWXbWYbWZbagbaebaebaebrNbXabXbbXcbaebaebaebaebaebXdbXebaebaebahbaebaebaebaebXfbaebWXbXgbXhbXibXjbXkbXlbXkbXmbXmbXnbXobXpbXmbXlbXqbMgbMgbMgbMgbXrbXsapnanZbXtbXuapnbXubXvbXwalBauIalBbyGbXxbXybXzbXAbXBbXCbXCbXCbHIbCzbCzbCzbMEbXDbMGbCnaaibCnckEckGckFbCEaaiaaabAWaaabAVaaabAWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaogaVibXGaSCaSCaSCaSCaSCaSCaSCbXHaSCaSCaSCaSCaSCaSCaSCbXIaTTaogaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/_maps/map_files/cyberiad/cyberiad.dmm b/_maps/map_files/cyberiad/cyberiad.dmm index 739c4370d6b..44a7bb9f455 100644 --- a/_maps/map_files/cyberiad/cyberiad.dmm +++ b/_maps/map_files/cyberiad/cyberiad.dmm @@ -3794,8 +3794,8 @@ "buX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/space,/area/space) "buY" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/obj/structure/lattice,/turf/space,/area/space) "buZ" = (/obj/item/device/radio/intercom{anyai = 1; broadcasting = 0; freerange = 1; listening = 1; name = "Captain's Intercom"; pixel_x = -27; pixel_y = -3},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/rack,/obj/item/weapon/tank/emergency_oxygen/double,/obj/item/weapon/tank/jetpack/oxygen,/obj/item/clothing/suit/space/captain,/obj/item/clothing/mask/gas,/obj/item/clothing/head/helmet/space/capspace,/turf/simulated/floor/wood,/area/crew_quarters/captain) -"bva" = (/obj/machinery/computer/card,/obj/item/weapon/card/id/captains_spare,/turf/simulated/floor/wood,/area/crew_quarters/captain) -"bvb" = (/obj/structure/table/woodentable,/obj/machinery/recharger{pixel_y = 4},/obj/item/weapon/melee/chainofcommand,/turf/simulated/floor/wood,/area/crew_quarters/captain) +"bva" = (/obj/structure/table/woodentable,/obj/machinery/recharger{pixel_y = 4},/obj/item/weapon/melee/chainofcommand,/obj/item/weapon/card/id/captains_spare,/turf/simulated/floor/wood,/area/crew_quarters/captain) +"bvb" = (/obj/machinery/computer/card,/turf/simulated/floor/wood,/area/crew_quarters/captain) "bvc" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/wood,/area/crew_quarters/captain) "bvd" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central/sw) "bve" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/hallway/primary/central/sw) @@ -8092,7 +8092,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaboPboPboPboPboPboPboPboPboPboPboPaHRaAvaAvbpQbpRbpSbpSbpSbpTbpSbpSbpUbpVbpWaZOaZOaZObpXbjlbkFbpYbpZbntbjlbqabsubqaaZKaZKaZKaZKbqcaZKbqdbkQbkRbqebqfbnzbqgbqhbkRbmobkXbqibnCbnCbnCbqjbkXbqkbnHbmuaHVbqmbpqbprbqnbqobpubnNbqpbjPbqqbqrblgbqsbqtbqubmEbqvdavbqxbqybqzbqAbqBbqCbqDbnVbqEbllbqFbqGbocbodboebofbohbqHbohbohbohbohbqIbqJbqJbqJbqJbqKbohbohbohbohbqLbohbqHbqMbohbqNbqObqPbohbqQbqRbqRbqSbqTbqUbqVbkobkobkobkobkobkobkobqWbqXbqYbkobkobkobkobkobkobkobkobkobkobqZbrabrabrbbrcbrdbrebrfbrfbrfbrfbrgbrhaFTaabaaaaaaaabaNtaNtaNtaNtaNtaNtaaaaNtaNtaNtaNtdcdaNtaaaaaaaaaaaaaaaaaaaaabkxbkxbkxbkxbkxbkxbkxbkxbkxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaboPboPboPboPboPboPboPboPboPboPboPbrjbrkbrlbrmbrnbpSbrobrpbrqbrqbrrbrsbrtbrubrvbrvbrwbrxbjlbjlbjlbmdbrybmcaZOaZOaZOaZObrzbbKbbKbrAbjybrBbrCbrDbrEbrFbrGbrHbrIbkRbrJbkXbrKbnCbnCbnCbrLaIgbrNbnHbrOblbbrPbrQbnLbnLbnLbnLbnNbrRbjPbrSbrTbjPbjPbjPbjPbjPbjPbjPblkbllbrUbrVbrWbrXbrYbrZbsabllbsbbscbscbsdbsdbsdbsdbsdbsdbsdbsebsebsfbsgbshbshbsgbsfbsebsebsibsibsibsibsibsibsjbsjbskbsjbsjbsjbsjbsjbslbsmbsnbsobkobkobspbspbsqbsqbsqbsqbsqbsrbrabrabqZbrabkobrabrabrabrabssbstbstbstbstbsFbsvbsvbsvbsvbsvbsvbsvbsvbsvaaaaaaaaaaaaaNtaNtaNtaNtaNtaNtaaaaNtaNtaNtaNtaNtaNtaaaaaaaaaaaaaaaaaaaaabkxbkxbkxbkxbkxbkxbkxbkxbkxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaboPboPboPboPboPboPboPboPboPboPboPaAvaAvaAvbpQbswbpSbsxbpSaIhaIhbpSbpUbpUbdabsAbsBbsBbsCbjlbkFbsDbmdbsEbmcbsHbsGbujbsIbsJbsKbsKbsLbsKbsMbsNbkRbsObsPbsQbsRbsSbrDbsTbkXbsUbnCbnCbsVbsWbsXbrNbnHbsYblbbsZbtabtbbtcbtdbtebtfblbblbbtgbthbtibtjbtkbtjbtlbthaaabtmbllbtnbtobtpbtqbrYbnVbtrbllbtsbttbtubsdbtvbtwbtxbtybtzbtAbtBbtCbtDbtEbtFbtFbtEbtGbtHbtIbsibtJbtLbtKbtMbsibtNbtObtPbtQbtRbtSbtSbtTbslbtUbtVbtWbtXbtWbtYbtYbsqbtZbuabubbsqaImbudaImbsqbuebrabssbstaInbugaInbstbuhbuibstbuwbukbulbumaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNtaNtaNtaNtaNtaNtaaaaNtaNtaNtaNtaNtaNtaaaaaaaaaaaaaaaaaaaaabkxbkxbkxbkxbkxbkxbkxbkxbkxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaboPboPboPboPboPboPboPboPboPboPaaabunaAvbuoblUbupbpSbuqbpSburbusbutbuubpSbuvbwHbuxbuybsCbjlbjlbjlbjlbjlbjlbuzbuAbuBbuCbuDbkRbkRbkRbkRbkRbkRbkRbuEbkRbkRbkRbuFbkRbuGbuHbuIbnCbnCbnCbuJaIgbuKbnHbuLblbbuMbtablcblcblcblbbuNblbbuObuPbuQbuRbuSbuTbuUbuVbuWbuXbuYbllbuZbnVbvabvbbrYbvcbnVbllbvdbvebvfbsdbvgbvhbvibvjbvkbvlbvmbtFbtFbtFbtFbtFbtFbtFbvnbvobvpbvqbvrbvsbvtbsibvubvvbvwbvxbxqbvzbvvbEbbslbvAbtVbvBbvCbvDbvEbvEbvFbvGbvHbvIbvJbvKbvLbvMbsqbvNbvObvPbstbvQbvRbvSbvTbvTbvUbstbvVbvWbvXbumaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNtaNtaNtaNtaNtaNtaaaaNtaNtaNtaNtaNtaNtaaaaaaaaaaaaaaaaaaaaabkxbkxbkxbkxbkxbkxbkxbkxbkxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaboPboPboPboPboPboPboPboPboPboPaaabunaAvbuoblUbupbpSbuqbpSburbusbutbuubpSbuvbwHbuxbuybsCbjlbjlbjlbjlbjlbjlbuzbuAbuBbuCbuDbkRbkRbkRbkRbkRbkRbkRbuEbkRbkRbkRbuFbkRbuGbuHbuIbnCbnCbnCbuJaIgbuKbnHbuLblbbuMbtablcblcblcblbbuNblbbuObuPbuQbuRbuSbuTbuUbuVbuWbuXbuYbllbuZbnVbvbbvabrYbvcbnVbllbvdbvebvfbsdbvgbvhbvibvjbvkbvlbvmbtFbtFbtFbtFbtFbtFbtFbvnbvobvpbvqbvrbvsbvtbsibvubvvbvwbvxbxqbvzbvvbEbbslbvAbtVbvBbvCbvDbvEbvEbvFbvGbvHbvIbvJbvKbvLbvMbsqbvNbvObvPbstbvQbvRbvSbvTbvTbvUbstbvVbvWbvXbumaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNtaNtaNtaNtaNtaNtaaaaNtaNtaNtaNtaNtaNtaaaaaaaaaaaaaaaaaaaaabkxbkxbkxbkxbkxbkxbkxbkxbkxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIfazEaBmaBmaAvaAvaAvaAvaAvaAvaAvaGTbwabwbbpSbwcbwdbwebwfbwgbwhbwibgebbKbbKbbKbwjbrvbrvbrvbrvbrvbrvbwkbwlbwlbwmbwnbkRbwobwpbwqbwrbwsbwtbwubwvbkRbwwbwxbwybsTaIgbuIbnCbnCbwzbkXbkXbwAbwBbwCbwDbwEbwFbwGbzDbwIbwJbwKbwLbwMbwNbuWbwObwPbwObwPbwQbuWbuXbwRbwSbwTbwUbwVbwWbwXbwYbwZbwSbxabttbttbsdbxbbxcbxdbxebxfbsdbvmbtFbtFbtFbtFbtFbtFbtFbxgbxhbxibxjbxkbvqbxlbsibxmbxnbxobvxbEbbvzbxpbTrbslbxrbxsbxtbxubxubxvbxwbxxbxybxzbxzbxzbxAbxzbxBbxCbxDbxEbxFbxGbxHbxIbxJbxJbxJbxKbstbxLbvWbxMbumaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNtaNtaNtaNtaNtaaaaNtaNtaNtaNtaNtaaaaaaaaaaaaaaaaaaaaaaaabkxbkxbkxbkxbkxbkxbkxbkxbkxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAvbxObxPbxQbxRbxSbxSbxTbxUaFzbpSbxVaIhbwfbxXbpSbpSbpSaZOaJkaJkbyabybbyabyabyabybbyaaZOaZObkRbkRbkRbycbkRbydbydbydbydbydbydbwubyeaJlbygbyhbyibyjbykbylbymbynbyobypbyqbyrbysbytbyubyvbyvbywbyxbyybyzbyAbyBbyCbyDbthbyEbuUbyFbuSbyGbthaaabyHbyIbyJbyKbyIbyIbyIbyIbyLbllbyMbttbyNbyObyPbyQbyRbySbyTbsdbyUbyVbyWbyXbyYbyZbzabzbbvnbzcbsibzdbxkbzebzfbsibzgbzhbvwbvxbEbbvzbvvbEbbslbvAbtVbzibzjbzkbzlbzmaJmbzobzpbzqbzrbzsbztbzubsqbzvbzwbzxbstbzybzzbzAbvTbzBbzCbstbxLbvWbAhbumaaaaaaaaaaaaaabaabaabaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkxbkxbkxbkxbkxbkxbkxbkxbkxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAvbzEbzFbzGaFyaFybzHbzIaFybzJbpSbzKaJMaKbbzNbpSaaaaaaaaaaabaabbzObzObzObzObzObzObzOaaaaaaaKcbzQbzRbzSbzTbydbydbydbydbydbydbzUbzVbzWbzXbzYbzZbAaaKdbkXbkXbAcbkXbkXbkXbAdbAebAfbAgbBubAibAibAjbAibAkbAlbAmbAnbyDbthbAobtjbtjbtjbApbthaaabyHbyIbAqbArbAsbAtbAubAvbAwbAxbAybttbAzbsdbtvbAAbABbACbADbAEbAFbAGbAHbAIbAJbAKbALbAMbANbAObAPbAQbxkbARbASbsibATbAUbAVbAWbAXbAYbAZbtTbslbBabBbbBcbBdbBdbBebBfaKjbBhbBibBjbBkbBlbBmbBnbsqbBobzwbBpbstbBqbBrbBsbvTbvTbBtbstbvVbvWbEGbumaaaaaaaaaaaaaabbBvbBwbBxbBwbBxbBwbByaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkxbkxbkxbkxbkxbkxbkxbkxbkxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/code/ATMOSPHERICS/atmospherics.dm b/code/ATMOSPHERICS/atmospherics.dm index 9102ceb7164..0887540ef36 100644 --- a/code/ATMOSPHERICS/atmospherics.dm +++ b/code/ATMOSPHERICS/atmospherics.dm @@ -195,4 +195,4 @@ obj/machinery/atmospherics/proc/check_connect_types_construction(obj/machinery/a /obj/machinery/atmospherics/singularity_pull(S, current_size) if(current_size >= STAGE_FIVE) - Destroy() \ No newline at end of file + qdel(src) \ No newline at end of file diff --git a/code/ATMOSPHERICS/components/binary_devices/binary_atmos_base.dm b/code/ATMOSPHERICS/components/binary_devices/binary_atmos_base.dm index fa529041cd0..1b801ad3e13 100644 --- a/code/ATMOSPHERICS/components/binary_devices/binary_atmos_base.dm +++ b/code/ATMOSPHERICS/components/binary_devices/binary_atmos_base.dm @@ -49,15 +49,15 @@ obj/machinery/atmospherics/binary if(node1) node1.disconnect(src) - del(network1) + qdel(network1) if(node2) node2.disconnect(src) - del(network2) + qdel(network2) node1 = null node2 = null - ..() + return ..() initialize() if(node1 && node2) return @@ -85,7 +85,7 @@ obj/machinery/atmospherics/binary update_icon() update_underlays() - + build_network() if(!network1 && node1) network1 = new /datum/pipe_network() @@ -135,7 +135,7 @@ obj/machinery/atmospherics/binary else if(reference==node2) del(network2) node2 = null - + update_icon() update_underlays() diff --git a/code/ATMOSPHERICS/components/omni_devices/filter.dm b/code/ATMOSPHERICS/components/omni_devices/filter.dm index d6c881fd4e4..a3b5c63d05a 100644 --- a/code/ATMOSPHERICS/components/omni_devices/filter.dm +++ b/code/ATMOSPHERICS/components/omni_devices/filter.dm @@ -9,11 +9,11 @@ var/datum/omni_port/input var/datum/omni_port/output -/obj/machinery/atmospherics/omni/filter/Del() +/obj/machinery/atmospherics/omni/filter/Destroy() input = null output = null filters.Cut() - ..() + return ..() /obj/machinery/atmospherics/omni/filter/sort_ports() for(var/datum/omni_port/P in ports) @@ -46,7 +46,7 @@ ..() if(!on) return 0 - + if(!input || !output) return @@ -54,7 +54,7 @@ var/datum/gas_mixture/input_air = input.air // it's completely happy with them if they're in a loop though i.e. "P.air.return_pressure()"... *shrug* var/output_pressure = output_air.return_pressure() - + if(output_pressure >= target_pressure) return for(var/datum/omni_port/P in filters) @@ -68,14 +68,14 @@ if(input.transfer_moles > 0) var/datum/gas_mixture/removed = input_air.remove(input.transfer_moles) - + if(!removed) return - + for(var/datum/omni_port/P in filters) var/datum/gas_mixture/filtered_out = new filtered_out.temperature = removed.return_temperature() - + switch(P.mode) if(ATM_O2) filtered_out.oxygen = removed.oxygen @@ -97,15 +97,15 @@ filtered_out.trace_gases += trace_gas else filtered_out = null - + P.air.merge(filtered_out) if(P.network) P.network.update = 1 - + output_air.merge(removed) if(output.network) output.network.update = 1 - + input.transfer_moles = 0 if(input.network) input.network.update = 1 diff --git a/code/ATMOSPHERICS/components/omni_devices/mixer.dm b/code/ATMOSPHERICS/components/omni_devices/mixer.dm index 64af4057b00..dd1ee03b624 100644 --- a/code/ATMOSPHERICS/components/omni_devices/mixer.dm +++ b/code/ATMOSPHERICS/components/omni_devices/mixer.dm @@ -9,7 +9,7 @@ var/datum/omni_port/output //setup tags for initial concentration values (must be decimal) - var/tag_north_con + var/tag_north_con var/tag_south_con var/tag_east_con var/tag_west_con @@ -44,10 +44,10 @@ tag_east_con = null tag_west_con = null -/obj/machinery/atmospherics/omni/mixer/Del() +/obj/machinery/atmospherics/omni/mixer/Destroy() inputs.Cut() output = null - ..() + return ..() /obj/machinery/atmospherics/omni/mixer/sort_ports() for(var/datum/omni_port/P in ports) diff --git a/code/ATMOSPHERICS/components/omni_devices/omni_base.dm b/code/ATMOSPHERICS/components/omni_devices/omni_base.dm index dbc1e1420b7..d7756ee51ca 100644 --- a/code/ATMOSPHERICS/components/omni_devices/omni_base.dm +++ b/code/ATMOSPHERICS/components/omni_devices/omni_base.dm @@ -28,7 +28,7 @@ /obj/machinery/atmospherics/omni/New() ..() icon_state = "base" - + ports = new() for(var/d in cardinal) var/datum/omni_port/new_port = new(src, d) @@ -44,7 +44,7 @@ if(new_port.mode > 0) initialize_directions |= d ports += new_port - + build_icons() /obj/machinery/atmospherics/omni/update_icon() @@ -173,7 +173,7 @@ if(ATM_O2 to ATM_N2O) ic_on += "_filter" ic_off += "_out" - + ic_on = icon_manager.get_atmos_icon("omni", , , ic_on) ic_off = icon_manager.get_atmos_icon("omni", , , ic_off) @@ -223,16 +223,16 @@ return null -/obj/machinery/atmospherics/omni/Del() +/obj/machinery/atmospherics/omni/Destroy() loc = null for(var/datum/omni_port/P in ports) if(P.node) P.node.disconnect(src) - del(P.network) + qdel(P.network) P.node = null - ..() + return ..() /obj/machinery/atmospherics/omni/initialize() for(var/datum/omni_port/P in ports) @@ -287,7 +287,7 @@ P.node = null P.update = 1 break - + update_ports() return null \ No newline at end of file diff --git a/code/ATMOSPHERICS/components/portables_connector.dm b/code/ATMOSPHERICS/components/portables_connector.dm index fda49cd6efc..b2d51336007 100644 --- a/code/ATMOSPHERICS/components/portables_connector.dm +++ b/code/ATMOSPHERICS/components/portables_connector.dm @@ -60,7 +60,7 @@ return null -/obj/machinery/atmospherics/portables_connector/Del() +/obj/machinery/atmospherics/portables_connector/Destroy() loc = null if(connected_device) @@ -68,11 +68,11 @@ if(node) node.disconnect(src) - del(network) + qdel(network) node = null - ..() + return ..() /obj/machinery/atmospherics/portables_connector/initialize() if(node) return @@ -127,7 +127,7 @@ if(reference==node) del(network) node = null - + update_underlays() return null diff --git a/code/ATMOSPHERICS/components/trinary_devices/trinary_base.dm b/code/ATMOSPHERICS/components/trinary_devices/trinary_base.dm index 655e58ea384..a2ab2ad9163 100644 --- a/code/ATMOSPHERICS/components/trinary_devices/trinary_base.dm +++ b/code/ATMOSPHERICS/components/trinary_devices/trinary_base.dm @@ -2,7 +2,7 @@ obj/machinery/atmospherics/trinary dir = SOUTH initialize_directions = SOUTH|NORTH|WEST use_power = 1 - + var/on = 0 var/datum/gas_mixture/air1 @@ -54,24 +54,24 @@ obj/machinery/atmospherics/trinary return null - Del() + Destroy() loc = null if(node1) node1.disconnect(src) - del(network1) + qdel(network1) if(node2) node2.disconnect(src) - del(network2) + qdel(network2) if(node3) node3.disconnect(src) - del(network3) + qdel(network3) node1 = null node2 = null node3 = null - ..() + return ..() initialize() if(node1 && node2 && node3) return @@ -163,7 +163,7 @@ obj/machinery/atmospherics/trinary else if(reference==node3) del(network3) node3 = null - + update_underlays() return null \ No newline at end of file diff --git a/code/ATMOSPHERICS/components/tvalve.dm b/code/ATMOSPHERICS/components/tvalve.dm index c97367f0529..70be99d73c3 100644 --- a/code/ATMOSPHERICS/components/tvalve.dm +++ b/code/ATMOSPHERICS/components/tvalve.dm @@ -101,24 +101,24 @@ return null -/obj/machinery/atmospherics/tvalve/Del() +/obj/machinery/atmospherics/tvalve/Destroy() loc = null if(node1) node1.disconnect(src) - del(network_node1) + qdel(network_node1) if(node2) node2.disconnect(src) - del(network_node2) + qdel(network_node2) if(node3) node3.disconnect(src) - del(network_node3) + qdel(network_node3) node1 = null node2 = null node3 = null - ..() + return ..() /obj/machinery/atmospherics/tvalve/proc/go_to_side() diff --git a/code/ATMOSPHERICS/components/unary/unary_base.dm b/code/ATMOSPHERICS/components/unary/unary_base.dm index 46b6ee9a708..5ec065f4ebd 100644 --- a/code/ATMOSPHERICS/components/unary/unary_base.dm +++ b/code/ATMOSPHERICS/components/unary/unary_base.dm @@ -33,11 +33,11 @@ if(node) node.disconnect(src) - del(network) + qdel(network) node = null - ..() + return ..() initialize() if(node) return diff --git a/code/ATMOSPHERICS/components/valve.dm b/code/ATMOSPHERICS/components/valve.dm index 481b3ecd062..88a83d13b13 100644 --- a/code/ATMOSPHERICS/components/valve.dm +++ b/code/ATMOSPHERICS/components/valve.dm @@ -75,20 +75,20 @@ return null -/obj/machinery/atmospherics/valve/Del() +/obj/machinery/atmospherics/valve/Destroy() loc = null if(node1) node1.disconnect(src) - del(network_node1) + qdel(network_node1) if(node2) node2.disconnect(src) - del(network_node2) + qdel(network_node2) node1 = null node2 = null - ..() + return ..() /obj/machinery/atmospherics/valve/proc/open() if(open) return 0 diff --git a/code/ATMOSPHERICS/datum_pipeline.dm b/code/ATMOSPHERICS/datum_pipeline.dm index 18a27f9c18d..4b056c645e4 100644 --- a/code/ATMOSPHERICS/datum_pipeline.dm +++ b/code/ATMOSPHERICS/datum_pipeline.dm @@ -10,15 +10,15 @@ datum/pipeline var/alert_pressure = 0 - Del() + Destroy() if(network) - del(network) + qdel(network) if(air && air.volume) temporarily_store_air() - del(air) + qdel(air) - ..() + return ..() proc/process()//This use to be called called from the pipe networks diff --git a/code/ATMOSPHERICS/mainspipe.dm b/code/ATMOSPHERICS/mainspipe.dm index 631f3530a24..2c0a7989533 100644 --- a/code/ATMOSPHERICS/mainspipe.dm +++ b/code/ATMOSPHERICS/mainspipe.dm @@ -37,7 +37,7 @@ obj/machinery/atmospherics/mains_pipe layer = 2.4 //under wires with their 2.5 force = 20 - + var/volume = 0 var/alert_pressure = 80*ONE_ATMOSPHERE @@ -99,9 +99,9 @@ obj/machinery/atmospherics/mains_pipe for(var/obj/machinery/atmospherics/pipe/mains_component/node in nodes) node.disconnect() - Del() + Destroy() disconnect() - ..() + return ..() initialize() for(var/i = 1 to nodes.len) diff --git a/code/ATMOSPHERICS/pipes.dm b/code/ATMOSPHERICS/pipes.dm index f035e75c5da..e01ca491233 100644 --- a/code/ATMOSPHERICS/pipes.dm +++ b/code/ATMOSPHERICS/pipes.dm @@ -57,7 +57,7 @@ /obj/machinery/atmospherics/pipe/Destroy() - del(parent) + qdel(parent) if(air_temporary && loc) loc.assume_air(air_temporary) diff --git a/code/LINDA/LINDA_fire.dm b/code/LINDA/LINDA_fire.dm index bdfa2971881..adb59f7f0fe 100644 --- a/code/LINDA/LINDA_fire.dm +++ b/code/LINDA/LINDA_fire.dm @@ -30,7 +30,7 @@ if(air_contents.oxygen < 0.5 || air_contents.toxins < 0.5) return 0 - active_hotspot = new(src) + active_hotspot = PoolOrNew(/obj/effect/hotspot, src) active_hotspot.temperature = exposed_temperature active_hotspot.volume = exposed_volume @@ -98,18 +98,18 @@ var/turf/simulated/location = loc if(!istype(location)) - Kill() + qdel(src) return if(location.excited_group) location.excited_group.reset_cooldowns() if((temperature < FIRE_MINIMUM_TEMPERATURE_TO_EXIST) || (volume <= 1)) - Kill() + qdel(src) return if(!(location.air) || location.air.toxins < 0.5 || location.air.oxygen < 0.5) - Kill() + qdel(src) return perform_exposure() @@ -151,19 +151,16 @@ // Garbage collect itself by nulling reference to it -/obj/effect/hotspot/proc/Kill() +/obj/effect/hotspot/Destroy() air_master.hotspots -= src DestroyTurf() - qdel(src) - -/obj/effect/hotspot/Destroy() set_light(0) if(istype(loc, /turf/simulated)) var/turf/simulated/T = loc if(T.active_hotspot == src) T.active_hotspot = null - loc = null - return ..() + ..() + return QDEL_HINT_PUTINPOOL /obj/effect/hotspot/proc/DestroyTurf() diff --git a/code/__DEFINES/preferences.dm b/code/__DEFINES/preferences.dm index 4ea37560a7f..94c476cb367 100644 --- a/code/__DEFINES/preferences.dm +++ b/code/__DEFINES/preferences.dm @@ -20,6 +20,8 @@ #define CHAT_LOOC 256 #define CHAT_GHOSTRADIO 512 #define SHOW_TYPING 1024 +#define DISABLE_SCOREBOARD 2048 +#define DISABLE_KARMA_REMINDER 4096 #define TOGGLES_DEFAULT (CHAT_OOC|CHAT_DEAD|CHAT_GHOSTEARS|CHAT_GHOSTSIGHT|CHAT_PRAYER|CHAT_RADIO|CHAT_ATTACKLOGS|CHAT_LOOC) diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm index f4e9ef1133d..1c1639d676d 100644 --- a/code/__HELPERS/global_lists.dm +++ b/code/__HELPERS/global_lists.dm @@ -37,12 +37,6 @@ surgery_steps += S sort_surgeries() - //Medical side effects. List all effects by their names - paths = typesof(/datum/medical_effect)-/datum/medical_effect - for(var/T in paths) - var/datum/medical_effect/M = new T - side_effects[M.name] = T - //List of job. I can't believe this was calculated multiple times per tick! paths = typesof(/datum/job) -list(/datum/job,/datum/job/ai,/datum/job/cyborg) for(var/T in paths) diff --git a/code/_globalvars/lists/objects.dm b/code/_globalvars/lists/objects.dm index 03b16f38efe..510be54c75c 100644 --- a/code/_globalvars/lists/objects.dm +++ b/code/_globalvars/lists/objects.dm @@ -10,6 +10,7 @@ var/global/list/spacepods_list = list() //list of all space pods. Used by hos var/global/list/joblist = list() //list of all jobstypes, minus borg and AI var/global/list/flag_list = list() //list of flags during Nations gamemode var/global/list/airlocks = list() //list of all airlocks +var/global/list/singularities = list() //list of all singularities var/global/list/aibots = list() // AI controlled bots var/global/list/table_recipes = list() //list of all table craft recipes diff --git a/code/datums/medical_effects.dm b/code/datums/medical_effects.dm deleted file mode 100644 index d6392582ef1..00000000000 --- a/code/datums/medical_effects.dm +++ /dev/null @@ -1,147 +0,0 @@ -// MEDICAL SIDE EFFECT BASE -// ======================== -/datum/medical_effect - var/name = "None" - var/strength = 0 - var/start = 0 - var/list/triggers - var/list/cures - var/cure_message - -/datum/medical_effect/proc/manifest(mob/living/carbon/human/H) - for(var/R in cures) - if(H.reagents.has_reagent(R)) - return 0 - for(var/R in triggers) - if(H.reagents.get_reagent_amount(R) >= triggers[R]) - return 1 - return 0 - -/datum/medical_effect/proc/on_life(mob/living/carbon/human/H, strength) - return - -/datum/medical_effect/proc/cure(mob/living/carbon/human/H) - for(var/R in cures) - if(H.reagents.has_reagent(R)) - if (cure_message) - H <<"\blue [cure_message]" - return 1 - return 0 - -// MOB HELPERS -// =========== -/mob/living/carbon/human/var/list/datum/medical_effect/side_effects = list() -/mob/proc/add_side_effect(name, strength = 0) -/mob/living/carbon/human/add_side_effect(name, strength = 0) - for(var/datum/medical_effect/M in src.side_effects) - if(M.name == name) - M.strength = max(M.strength, 10) - M.start = life_tick - return - - var/T = side_effects[name] - if (!T) - return - - var/datum/medical_effect/M = new T - if(M.name == name) - M.strength = strength - M.start = life_tick - side_effects += M - -/mob/living/carbon/human/proc/handle_medical_side_effects() - //Going to handle those things only every few ticks. - if(life_tick % 15 != 0) - return 0 - - var/list/L = typesof(/datum/medical_effect)-/datum/medical_effect - for(var/T in L) - var/datum/medical_effect/M = new T - if (M.manifest(src)) - src.add_side_effect(M.name) - - // One full cycle(in terms of strength) every 10 minutes - for (var/datum/medical_effect/M in side_effects) - if (!M) continue - var/strength_percent = sin((life_tick - M.start) / 2) - - // Only do anything if the effect is currently strong enough - if(strength_percent >= 0.4) - if (M.cure(src) || M.strength > 50) - side_effects -= M - M = null - else - if(life_tick % 45 == 0) - M.on_life(src, strength_percent*M.strength) - // Effect slowly growing stronger - M.strength+=0.08 - -// HEADACHE -// ======== -/datum/medical_effect/headache - name = "Headache" - triggers = list("cryoxadone" = 10) - cures = list("mannitol", "morphine", "sal_acid", "hydrocodone") - cure_message = "Your head stops throbbing..." - -/datum/medical_effect/headache/on_life(mob/living/carbon/human/H, strength) - switch(strength) - if(1 to 10) - H.custom_pain("You feel a light pain in your head.",0) - if(11 to 30) - H.custom_pain("You feel a throbbing pain in your head!",1) - if(31 to INFINITY) - H.custom_pain("You feel an excrutiating pain in your head!",1) - -// BAD STOMACH -// =========== -/datum/medical_effect/bad_stomach - name = "Bad Stomach" - triggers = list() - cures = list() - cure_message = "Your stomach feels a little better now..." - -/datum/medical_effect/bad_stomach/on_life(mob/living/carbon/human/H, strength) - switch(strength) - if(1 to 10) - H.custom_pain("You feel a bit light around the stomach.",0) - if(11 to 30) - H.custom_pain("Your stomach hurts.",0) - if(31 to INFINITY) - H.custom_pain("You feel sick.",1) - -// CRAMPS -// ====== -/datum/medical_effect/cramps - name = "Cramps" - triggers = list("morphine" = 15) - cures = list("epinephrine") - cure_message = "The cramps let up..." - -/datum/medical_effect/cramps/on_life(mob/living/carbon/human/H, strength) - switch(strength) - if(1 to 10) - H.custom_pain("The muscles in your body hurt a little.",0) - if(11 to 30) - H.custom_pain("The muscles in your body cramp up painfully.",0) - if(31 to INFINITY) - H.emote("me",1,"flinches as all the muscles in their body cramp up.") - H.custom_pain("There's pain all over your body.",1) - -// ITCH -// ==== -/datum/medical_effect/itch - name = "Itch" - triggers = list("space_drugs" = 10) - cures = list("epinephrine") - cure_message = "The itching stops..." - -/datum/medical_effect/itch/on_life(mob/living/carbon/human/H, strength) - switch(strength) - if(1 to 10) - H.custom_pain("You feel a slight itch.",0) - if(11 to 30) - H.custom_pain("You want to scratch your itch badly.",0) - if(31 to INFINITY) - H.emote("me",1,"shivers slightly.") - H.custom_pain("This itch makes it really hard to concentrate.",1) \ No newline at end of file diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 73b92eda82d..d8221483127 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -625,7 +625,7 @@ datum/mind for(var/obj/item/weapon/implant/loyalty/I in H.contents) for(var/obj/item/organ/external/organs in H.organs) if(I in organs.implants) - I.Destroy() + qdel(I) H << "\blue Your loyalty implant has been deactivated." if("add") var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H) diff --git a/code/datums/spells/ethereal_jaunt.dm b/code/datums/spells/ethereal_jaunt.dm index 6174d2d8d58..cb164405a5b 100644 --- a/code/datums/spells/ethereal_jaunt.dm +++ b/code/datums/spells/ethereal_jaunt.dm @@ -59,8 +59,8 @@ break target.canmove = 1 target.client.eye = target - del(animation) - del(holder) + qdel(animation) + qdel(holder) else flick("liquify",animation) target.loc = holder @@ -85,8 +85,8 @@ break target.canmove = 1 target.client.eye = target - del(animation) - del(holder) + qdel(animation) + qdel(holder) /obj/effect/dummy/spell_jaunt name = "water" @@ -97,6 +97,12 @@ anchored = 1 invisibility = INVISIBILITY_OBSERVER +/obj/effect/dummy/spell_jaunt/Destroy() + // Eject contents if deleted somehow + for(var/atom/movable/AM in src) + AM.loc = get_turf(src) + return ..() + /obj/effect/dummy/spell_jaunt/relaymove(var/mob/user, direction) if (!src.canmove) return var/turf/newLoc = get_step(src,direction) diff --git a/code/datums/spells/trigger.dm b/code/datums/spells/trigger.dm index 194110c384c..0ac488f9307 100644 --- a/code/datums/spells/trigger.dm +++ b/code/datums/spells/trigger.dm @@ -14,8 +14,9 @@ /obj/effect/proc_holder/spell/wizard/targeted/trigger/Destroy() for(var/spell in contents) - del(spell) - + qdel(spell) + linked_spells = null + starting_spells = null return ..() /obj/effect/proc_holder/spell/wizard/targeted/trigger/cast(list/targets) diff --git a/code/defines/procs/sd_Alert.dm b/code/defines/procs/sd_Alert.dm index c63cab8f8b7..a6927491092 100644 --- a/code/defines/procs/sd_Alert.dm +++ b/code/defines/procs/sd_Alert.dm @@ -93,9 +93,9 @@ sd_alert response list/validation - Del() + Destroy() target << browse(null,"window=\ref[src]") - ..() + return ..() New(who, tag) ..() diff --git a/code/game/dna/dna_modifier.dm b/code/game/dna/dna_modifier.dm index 3416568d359..9f44fb2542e 100644 --- a/code/game/dna/dna_modifier.dm +++ b/code/game/dna/dna_modifier.dm @@ -317,7 +317,8 @@ name = "DNA Modifier Access Console" desc = "Allows you to scan and modify DNA." icon = 'icons/obj/computer.dmi' - icon_state = "scanner" + icon_screen = "dna" + icon_keyboard = "med_key" density = 1 circuit = /obj/item/weapon/circuitboard/scan_consolenew var/selected_ui_block = 1.0 @@ -371,17 +372,6 @@ if(prob(75)) qdel(src) -/obj/machinery/computer/scan_consolenew/power_change() - if(stat & BROKEN) - icon_state = "broken" - else if(powered()) - icon_state = initial(icon_state) - stat &= ~NOPOWER - else - spawn(rand(0, 15)) - src.icon_state = "c_unpowered" - stat |= NOPOWER - /obj/machinery/computer/scan_consolenew/New() ..() for(var/i=0;i<3;i++) diff --git a/code/game/gamemodes/blob/blobs/core.dm b/code/game/gamemodes/blob/blobs/core.dm index 2dd69860b14..fc96912fadf 100644 --- a/code/game/gamemodes/blob/blobs/core.dm +++ b/code/game/gamemodes/blob/blobs/core.dm @@ -23,10 +23,9 @@ Destroy() blob_cores -= src if(overmind) - del(overmind) + qdel(overmind) processing_objects.Remove(src) - ..() - return + return ..() update_icon() if(health <= 0) diff --git a/code/game/gamemodes/blob/blobs/node.dm b/code/game/gamemodes/blob/blobs/node.dm index 8934582a6d4..a74d6d04f83 100644 --- a/code/game/gamemodes/blob/blobs/node.dm +++ b/code/game/gamemodes/blob/blobs/node.dm @@ -14,8 +14,7 @@ Destroy() blob_nodes -= src processing_objects.Remove(src) - ..() - return + return ..() Life() for(var/i = 1; i < 8; i += i) diff --git a/code/game/gamemodes/blob/overmind.dm b/code/game/gamemodes/blob/overmind.dm index a7a194885ef..80481cfa39c 100644 --- a/code/game/gamemodes/blob/overmind.dm +++ b/code/game/gamemodes/blob/overmind.dm @@ -30,7 +30,7 @@ /mob/camera/blob/Destroy() if (ghostimage) ghost_darkness_images -= ghostimage - del(ghostimage) + qdel(ghostimage) ghostimage = null; updateallghostimages() return ..() diff --git a/code/game/gamemodes/blob/theblob.dm b/code/game/gamemodes/blob/theblob.dm index 1ad62999ecf..b6656b349db 100644 --- a/code/game/gamemodes/blob/theblob.dm +++ b/code/game/gamemodes/blob/theblob.dm @@ -25,8 +25,7 @@ Destroy() blobs -= src - ..() - return + return ..() CanPass(atom/movable/mover, turf/target, height=0, air_group=0) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index adf28b1e8d2..5bb92c6c748 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -74,9 +74,9 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology", AI.client.images += blood cult_viewpoints += src -/obj/effect/rune/Del() - ..() +/obj/effect/rune/Destroy() cult_viewpoints -= src + return ..() /obj/effect/rune/examine() set src in view(2) diff --git a/code/game/gamemodes/events/biomass.dm b/code/game/gamemodes/events/biomass.dm index e820c1880e6..c338c34815e 100644 --- a/code/game/gamemodes/events/biomass.dm +++ b/code/game/gamemodes/events/biomass.dm @@ -18,7 +18,7 @@ if(master) master.vines -= src master.growth_queue -= src - ..() + return ..() /obj/effect/biomass/attackby(obj/item/weapon/W as obj, mob/user as mob, params) if (!W || !user || !W.type) return diff --git a/code/game/gamemodes/gameticker.dm b/code/game/gamemodes/gameticker.dm index 2fb4d7745a1..a56351e2e94 100644 --- a/code/game/gamemodes/gameticker.dm +++ b/code/game/gamemodes/gameticker.dm @@ -339,10 +339,9 @@ var/global/datum/controller/gameticker/ticker M.death()//No mercy //If its actually the end of the round, wait for it to end. //Otherwise if its a verb it will continue on afterwards. - sleep(300) - - if(cinematic) del(cinematic) //end the cinematic - if(temp_buckle) del(temp_buckle) //release everybody + spawn(300) + if(cinematic) del(cinematic) //end the cinematic + if(temp_buckle) del(temp_buckle) //release everybody return @@ -454,11 +453,12 @@ var/global/datum/controller/gameticker/ticker if(player.client) if(player.client.karma_spent == 0) - var/dat - dat += {"Karma Reminder

Karma Reminder


- You have not yet spent your karma for the round, surely there is a player who was worthy of receiving
- your reward? Look under 'Special Verbs' for the 'Award Karma' button, and use it once a round for best results!"} - player << browse(dat, "window=karmareminder;size=400x300") + if(player.client.prefs && !(player.client.prefs.toggles & DISABLE_KARMA_REMINDER)) + var/dat + dat += {"Karma Reminder

Karma Reminder


+ You have not yet spent your karma for the round, surely there is a player who was worthy of receiving
+ your reward? Look under 'Special Verbs' for the 'Award Karma' button, and use it once a round for best results!"} + player << browse(dat, "window=karmareminder;size=400x300") /datum/controller/gameticker/proc/declare_completion() diff --git a/code/game/gamemodes/meteor/meteors.dm b/code/game/gamemodes/meteor/meteors.dm index ff04ec4d190..87e44fc04a9 100644 --- a/code/game/gamemodes/meteor/meteors.dm +++ b/code/game/gamemodes/meteor/meteors.dm @@ -115,7 +115,7 @@ /obj/effect/meteor/Destroy() walk(src,0) //this cancels the walk_towards() proc - ..() + return ..() /obj/effect/meteor/New() ..() diff --git a/code/game/gamemodes/nuclear/pinpointer.dm b/code/game/gamemodes/nuclear/pinpointer.dm index 6fb2fb349a5..833f161f541 100644 --- a/code/game/gamemodes/nuclear/pinpointer.dm +++ b/code/game/gamemodes/nuclear/pinpointer.dm @@ -12,6 +12,10 @@ var/obj/item/weapon/disk/nuclear/the_disk = null var/active = 0 + Destroy() + active = 0 + the_disk = null + return ..() attack_self() if(!active) @@ -377,7 +381,7 @@ /obj/item/weapon/pinpointer/operative/proc/workop() scan_for_ops() point_at(nearest_op, 0) - if(active && nearest_op) + if(active && nearest_op) spawn(5) .() diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm index 08d1eea5ca7..e49914896ad 100644 --- a/code/game/gamemodes/objective.dm +++ b/code/game/gamemodes/objective.dm @@ -20,9 +20,9 @@ datum/objective if(text) explanation_text = text - Del() + Destroy() all_objectives -= src - ..() + return ..() proc/check_completion() return completed diff --git a/code/game/gamemodes/scoreboard.dm b/code/game/gamemodes/scoreboard.dm index acf8c879c3e..04d4021f9d2 100644 --- a/code/game/gamemodes/scoreboard.dm +++ b/code/game/gamemodes/scoreboard.dm @@ -211,7 +211,9 @@ world << "The crew's final score is:" world << "[score_crewscore]" for(var/mob/E in player_list) - if(E.client) E.scorestats() + if(E.client) + if(E.client.prefs && !(E.client.prefs.toggles & DISABLE_SCOREBOARD)) + E.scorestats() return diff --git a/code/game/jobs/job_objective.dm b/code/game/jobs/job_objective.dm index 43a15d88ea7..1efb8ba0c76 100644 --- a/code/game/jobs/job_objective.dm +++ b/code/game/jobs/job_objective.dm @@ -22,7 +22,7 @@ owner=new_owner owner.job_objectives += src -/datum/job_objective/Del() +/datum/job_objective/Destroy() /datum/job_objective/proc/get_description() return "Placeholder objective." diff --git a/code/game/machinery/Beacon.dm b/code/game/machinery/Beacon.dm index 9bc03867dc9..f6b39cb5f38 100644 --- a/code/game/machinery/Beacon.dm +++ b/code/game/machinery/Beacon.dm @@ -24,8 +24,9 @@ Destroy() if(Beacon) - del(Beacon) - ..() + qdel(Beacon) + Beacon = null + return ..() // update the invisibility and icon hide(var/intact) diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm index 91eaa41821d..ccc40f29e84 100644 --- a/code/game/machinery/alarm.dm +++ b/code/game/machinery/alarm.dm @@ -147,6 +147,10 @@ first_run() +/obj/machinery/alarm/Destroy() + if(radio_controller) + radio_controller.remove_object(src, frequency) + return ..() /obj/machinery/alarm/proc/first_run() alarm_area = get_area(src) diff --git a/code/game/machinery/atmo_control.dm b/code/game/machinery/atmo_control.dm index 79ba3448c90..941e520a3d5 100644 --- a/code/game/machinery/atmo_control.dm +++ b/code/game/machinery/atmo_control.dm @@ -134,9 +134,16 @@ obj/machinery/air_sensor if(radio_controller) set_frequency(frequency) + Destroy() + if(radio_controller) + radio_controller.remove_object(src,frequency) + return ..() + + /obj/machinery/computer/general_air_control icon = 'icons/obj/computer.dmi' - icon_state = "tank" + icon_screen = "tank" + icon_keyboard = "atmos_key" circuit = "/obj/item/weapon/circuitboard/air_management" req_one_access_txt = "24;10" diff --git a/code/game/machinery/atmoalter/area_atmos_computer.dm b/code/game/machinery/atmoalter/area_atmos_computer.dm index fbebcbeca44..b95e1e1ea0c 100644 --- a/code/game/machinery/atmoalter/area_atmos_computer.dm +++ b/code/game/machinery/atmoalter/area_atmos_computer.dm @@ -1,7 +1,8 @@ /obj/machinery/computer/area_atmos name = "Area Air Control" desc = "A computer used to control the stationary scrubbers and pumps in the area." - icon_state = "area_atmos" + icon_screen = "area_atmos" + icon_keyboard = "atmos_key" circuit = "/obj/item/weapon/circuitboard/area_atmos" var/list/connectedscrubbers = new() diff --git a/code/game/machinery/atmoalter/meter.dm b/code/game/machinery/atmoalter/meter.dm index 4301e311c58..0c6deb622a9 100644 --- a/code/game/machinery/atmoalter/meter.dm +++ b/code/game/machinery/atmoalter/meter.dm @@ -23,6 +23,10 @@ id_tag = id return 1 +/obj/machinery/meter/Destroy() + src.target = null + return ..() + /obj/machinery/meter/initialize() if (!target) src.target = locate(/obj/machinery/atmospherics/pipe) in loc @@ -86,13 +90,13 @@ /obj/machinery/meter/examine() var/t = "A gas flow meter. " - + if(get_dist(usr, src) > 3 && !(istype(usr, /mob/living/silicon/ai) || istype(usr, /mob/dead))) t += "\blue You are too far away to read it." - + else if(stat & (NOPOWER|BROKEN)) - t += "\red The display is off." - + t += "\red The display is off." + else if(src.target) var/datum/gas_mixture/environment = target.return_air() if(environment) @@ -101,14 +105,14 @@ t += "The sensor error light is blinking." else t += "The connect error light is blinking." - + usr << t /obj/machinery/meter/Click() if(istype(usr, /mob/living/silicon/ai)) // ghosts can call ..() for examine src.examine() return 1 - + return ..() /obj/machinery/meter/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob, params) diff --git a/code/game/machinery/atmoalter/portable_atmospherics.dm b/code/game/machinery/atmoalter/portable_atmospherics.dm index 1e6ce7e1253..b1b13220d56 100644 --- a/code/game/machinery/atmoalter/portable_atmospherics.dm +++ b/code/game/machinery/atmoalter/portable_atmospherics.dm @@ -35,9 +35,9 @@ update_icon() Destroy() - del(air_contents) + qdel(air_contents) - ..() + return ..() update_icon() return null diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index 10835470300..0c16939a97f 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -59,7 +59,7 @@ if(bug.current == src) bug.current = null bug = null - del(wires) + qdel(wires) cameranet.removeCamera(src) //Will handle removal from the camera network and the chunks, so we don't need to worry about that return ..() diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index f3fd4eba26d..08e60558d38 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -447,7 +447,6 @@ src.icon_state = "pod_0" src.eject_wait = 0 //If it's still set somehow. domutcheck(src.occupant) //Waiting until they're out before possible notransform. - src.occupant.add_side_effect("Bad Stomach") // Give them an extra side-effect for free. src.occupant = null return diff --git a/code/game/machinery/computer/HolodeckControl.dm b/code/game/machinery/computer/HolodeckControl.dm index c8d2addfc09..b6381ea5eb0 100644 --- a/code/game/machinery/computer/HolodeckControl.dm +++ b/code/game/machinery/computer/HolodeckControl.dm @@ -1,7 +1,8 @@ /obj/machinery/computer/HolodeckControl name = "Holodeck Control Computer" desc = "A computer used to control a nearby holodeck." - icon_state = "holocontrol" + icon_keyboard = "tech_key" + icon_screen = "holocontrol" var/area/linkedholodeck = null var/area/target = null var/active = 0 diff --git a/code/game/machinery/computer/Operating.dm b/code/game/machinery/computer/Operating.dm index ea74d862e95..e3fd6038368 100644 --- a/code/game/machinery/computer/Operating.dm +++ b/code/game/machinery/computer/Operating.dm @@ -4,7 +4,8 @@ name = "Operating Computer" density = 1 anchored = 1.0 - icon_state = "operating" + icon_keyboard = "med_key" + icon_screen = "crew" circuit = "/obj/item/weapon/circuitboard/operating" var/mob/living/carbon/human/victim = null var/obj/machinery/optable/table = null diff --git a/code/game/machinery/computer/aifixer.dm b/code/game/machinery/computer/aifixer.dm index f171a8262b1..d291c65ac78 100644 --- a/code/game/machinery/computer/aifixer.dm +++ b/code/game/machinery/computer/aifixer.dm @@ -1,7 +1,8 @@ /obj/machinery/computer/aifixer name = "AI System Integrity Restorer" icon = 'icons/obj/computer.dmi' - icon_state = "ai-fixer" + icon_keyboard = "rd_key" + icon_screen = "ai-fixer" circuit = /obj/item/weapon/circuitboard/aifixer req_access = list(access_captain, access_robotics, access_heads) var/mob/living/silicon/ai/occupant = null diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index 7a79329ab8d..7a732bac213 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -3,6 +3,8 @@ desc = "random arcade machine" icon = 'icons/obj/computer.dmi' icon_state = "arcade" + icon_keyboard = null + icon_screen = "invaders" light_color = "#00FF00" var/list/prizes = list( /obj/item/weapon/storage/box/snappops = 2, @@ -42,7 +44,8 @@ /obj/item/weapon/id_decal/emag = 2, /obj/item/weapon/spellbook/oneuse/fake_gib = 2, /obj/item/toy/foamblade = 2, - /obj/item/toy/flash = 2 + /obj/item/toy/flash = 2, + /obj/item/toy/minigibber = 2 ) /obj/machinery/computer/arcade/power_change() diff --git a/code/game/machinery/computer/atmos_alert.dm b/code/game/machinery/computer/atmos_alert.dm index 1ba23d9b2ed..09830ef180f 100644 --- a/code/game/machinery/computer/atmos_alert.dm +++ b/code/game/machinery/computer/atmos_alert.dm @@ -5,7 +5,8 @@ name = "Atmospheric Alert Computer" desc = "Used to access the station's atmospheric sensors." circuit = "/obj/item/weapon/circuitboard/atmos_alert" - icon_state = "alert:0" + icon_keyboard = "atmos_key" + icon_screen = "alert:0" var/list/priority_alarms = list() var/list/minor_alarms = list() var/receive_frequency = 1437 @@ -60,13 +61,14 @@ if(stat & (NOPOWER|BROKEN)) return if(priority_alarms.len) - icon_state = "alert:2" + icon_screen = "alert:2" else if(minor_alarms.len) - icon_state = "alert:1" + icon_screen = "alert:1" else - icon_state = "alert:0" + icon_screen = "alert:0" + return @@ -117,5 +119,6 @@ return /obj/machinery/computer/atmos_alert/Destroy() - radio_controller.remove_object(src, receive_frequency) + if(radio_controller) + radio_controller.remove_object(src, receive_frequency) return ..() diff --git a/code/game/machinery/computer/atmos_control.dm b/code/game/machinery/computer/atmos_control.dm index 81545418638..1a4b2412e29 100644 --- a/code/game/machinery/computer/atmos_control.dm +++ b/code/game/machinery/computer/atmos_control.dm @@ -5,7 +5,8 @@ /obj/machinery/computer/atmoscontrol name = "\improper Central Atmospherics Computer" icon = 'icons/obj/computer.dmi' - icon_state = "tank" + icon_keyboard = "atmos_key" + icon_screen = "tank" density = 1 anchored = 1.0 circuit = "/obj/item/weapon/circuitboard/atmoscontrol" diff --git a/code/game/machinery/computer/camera.dm b/code/game/machinery/computer/camera.dm index 35745965926..2a20e5c0521 100644 --- a/code/game/machinery/computer/camera.dm +++ b/code/game/machinery/computer/camera.dm @@ -6,7 +6,8 @@ var/camera_cache_id = 1 /obj/machinery/computer/security name = "Camera Monitor" desc = "Used to access the various cameras networks on the station." - icon_state = "cameras" + icon_keyboard = "security_key" + icon_screen = "cameras" circuit = "/obj/item/weapon/circuitboard/camera" var/obj/machinery/camera/current = null var/list/network = list("") @@ -264,6 +265,7 @@ var/camera_cache_id = 1 desc = "Used for watching camera networks." icon = 'icons/obj/stationobjs.dmi' icon_state = "telescreen" + light_range_on = 0 network = list("SS13") density = 0 @@ -279,14 +281,16 @@ var/camera_cache_id = 1 icon = 'icons/obj/status_display.dmi' icon_state = "entertainment" light_color = "#FFEEDB" - light_range_on = 2 + light_range_on = 0 network = list("news") luminosity = 0 /obj/machinery/computer/security/wooden_tv name = "Security Camera Monitor" desc = "An old TV hooked into the stations camera network." - icon_state = "security_det" + icon_state = "television" + icon_keyboard = null + icon_screen = "detective_tv" light_color = "#3848B3" light_power_on = 0.5 network = list("SS13") @@ -294,13 +298,15 @@ var/camera_cache_id = 1 /obj/machinery/computer/security/mining name = "Outpost Camera Monitor" desc = "Used to access the various cameras on the outpost." - icon_state = "miningcameras" + icon_keyboard = "mining_key" + icon_screen = "mining" light_color = "#F9BBFC" network = list("Mining Outpost") /obj/machinery/computer/security/engineering name = "Engineering Camera Monitor" desc = "Used to monitor fires and breaches." - icon_state = "engineeringcameras" + icon_keyboard = "power_key" + icon_screen = "engie_cams" light_color = "#FAC54B" network = list("Power Alarms","Atmosphere Alarms","Fire Alarms") \ No newline at end of file diff --git a/code/game/machinery/computer/card.dm b/code/game/machinery/computer/card.dm index 6d07202395d..152f2d36a85 100644 --- a/code/game/machinery/computer/card.dm +++ b/code/game/machinery/computer/card.dm @@ -3,7 +3,8 @@ /obj/machinery/computer/card name = "Identification Computer" desc = "Terminal for programming Nanotrasen employee ID cards to access parts of the station." - icon_state = "id" + icon_keyboard = "id_key" + icon_screen = "id" req_access = list(access_change_ids) circuit = "/obj/item/weapon/circuitboard/card" var/obj/item/weapon/card/id/scan = null diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm index d97d9701321..9bdaec41633 100644 --- a/code/game/machinery/computer/cloning.dm +++ b/code/game/machinery/computer/cloning.dm @@ -1,7 +1,8 @@ /obj/machinery/computer/cloning name = "Cloning Console" icon = 'icons/obj/computer.dmi' - icon_state = "dna" + icon_keyboard = "med_key" + icon_screen = "dna" circuit = "/obj/item/weapon/circuitboard/cloning" req_access = list(access_heads) //Only used for record deletion right now. var/obj/machinery/dna_scannernew/scanner = null //Linked scanner. For scanning. @@ -372,16 +373,4 @@ if (R.ckey == find_key) selected_record = R break - return selected_record - -/obj/machinery/computer/cloning/update_icon() - - if(stat & BROKEN) - icon_state = "commb" - else - if(stat & NOPOWER) - src.icon_state = "c_unpowered" - stat |= NOPOWER - else - icon_state = initial(icon_state) - stat &= ~NOPOWER + return selected_record \ No newline at end of file diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index 0b83144b356..f42a70498db 100644 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -36,7 +36,8 @@ var/shuttle_call/shuttle_calls[0] /obj/machinery/computer/communications name = "Communications Console" desc = "This can be used for various important functions. Still under developement." - icon_state = "comm" + icon_keyboard = "tech_key" + icon_screen = "comm" req_access = list(access_heads) circuit = "/obj/item/weapon/circuitboard/communications" var/prints_intercept = 1 diff --git a/code/game/machinery/computer/computer.dm b/code/game/machinery/computer/computer.dm index d6a71a72080..bb377cca260 100644 --- a/code/game/machinery/computer/computer.dm +++ b/code/game/machinery/computer/computer.dm @@ -1,6 +1,7 @@ /obj/machinery/computer name = "computer" icon = 'icons/obj/computer.dmi' + icon_state = "computer" density = 1 anchored = 1.0 use_power = 1 @@ -8,9 +9,10 @@ active_power_usage = 300 var/obj/item/weapon/circuitboard/circuit = null //if circuit==null, computer can't disassembly var/processing = 0 - - var/light_range_on = 3 - var/light_power_on = 2 + var/icon_keyboard = "generic_key" + var/icon_screen = "generic" + var/light_range_on = 2 + var/light_power_on = 1 /obj/machinery/computer/New() ..() @@ -19,6 +21,7 @@ /obj/machinery/computer/initialize() power_change() + update_icon() /obj/machinery/computer/process() if(stat & (NOPOWER|BROKEN)) @@ -65,18 +68,18 @@ density = 0 /obj/machinery/computer/update_icon() - ..() - icon_state = initial(icon_state) - // Broken + overlays.Cut() + + var/overlay_layer = LIGHTING_LAYER+0.1 + + if(stat & NOPOWER) + overlays += image(icon,"[icon_keyboard]_off",overlay_layer) + return + overlays += image(icon, icon_keyboard ,overlay_layer) if(stat & BROKEN) - icon_state += "b" - - // Powered - else if(stat & NOPOWER) - icon_state = initial(icon_state) - icon_state += "0" - luminosity = 0 - + overlays += image(icon,"[icon_state]_broken",overlay_layer) + else + overlays += image(icon,icon_screen,overlay_layer) /obj/machinery/computer/power_change() diff --git a/code/game/machinery/computer/crew.dm b/code/game/machinery/computer/crew.dm index 048aab3a39e..f7f0e7a8fa1 100644 --- a/code/game/machinery/computer/crew.dm +++ b/code/game/machinery/computer/crew.dm @@ -1,7 +1,8 @@ /obj/machinery/computer/crew name = "crew monitoring computer" desc = "Used to monitor active health sensors built into most of the crew's uniforms." - icon_state = "crew" + icon_keyboard = "med_key" + icon_screen = "crew" use_power = 1 idle_power_usage = 250 active_power_usage = 500 @@ -28,17 +29,5 @@ /obj/machinery/computer/crew/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) crew_monitor.ui_interact(user, ui_key, ui, force_open) -/obj/machinery/computer/crew/update_icon() - - if(stat & BROKEN) - icon_state = "crewb" - else - if(stat & NOPOWER) - src.icon_state = "c_unpowered" - stat |= NOPOWER - else - icon_state = initial(icon_state) - stat &= ~NOPOWER - /obj/machinery/computer/crew/interact(mob/user) crew_monitor.ui_interact(user) \ No newline at end of file diff --git a/code/game/machinery/computer/hologram.dm b/code/game/machinery/computer/hologram.dm index 36e8cb54456..4b799535f23 100644 --- a/code/game/machinery/computer/hologram.dm +++ b/code/game/machinery/computer/hologram.dm @@ -4,7 +4,8 @@ name = "Hologram Computer" desc = "Rumoured to control holograms." icon = 'icons/obj/stationobjs.dmi' - icon_state = "holo_console0" + icon_keyboard = "tech_key" + icon_screen = "holocontrol" var/obj/machinery/hologram/projector/projector = null var/temp = null var/lumens = 0.0 diff --git a/code/game/machinery/computer/honkputer.dm b/code/game/machinery/computer/honkputer.dm index f4eec63fc7a..aba29ec0802 100644 --- a/code/game/machinery/computer/honkputer.dm +++ b/code/game/machinery/computer/honkputer.dm @@ -2,7 +2,9 @@ name = "HONKputer Mark I" desc = "A yellow computer used in case of critically low levels of HONK." icon = 'icons/obj/machines/HONKputer.dmi' - icon_state = "honk" + icon_state = "honkputer" + icon_keyboard = "key_honk" + icon_screen = "honkcomms" light_color = LIGHT_COLOR_PINK req_access = list(access_clown) circuit = "/obj/item/weapon/circuitboard/HONKputer" diff --git a/code/game/machinery/computer/law.dm b/code/game/machinery/computer/law.dm index 8137fd53a60..6f7aaf2006b 100644 --- a/code/game/machinery/computer/law.dm +++ b/code/game/machinery/computer/law.dm @@ -3,7 +3,8 @@ /obj/machinery/computer/aiupload name = "AI Upload" desc = "Used to upload laws to the AI." - icon_state = "command" + icon_screen = "command" + icon_keyboard = "med_key" circuit = "/obj/item/weapon/circuitboard/aiupload" var/mob/living/silicon/ai/current = null var/opened = 0 @@ -60,7 +61,8 @@ /obj/machinery/computer/borgupload name = "Cyborg Upload" desc = "Used to upload laws to Cyborgs." - icon_state = "command" + icon_screen = "command" + icon_keyboard = "med_key" circuit = "/obj/item/weapon/circuitboard/borgupload" var/mob/living/silicon/robot/current = null diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm index ab8a43b4973..4c61d7d705f 100644 --- a/code/game/machinery/computer/medical.dm +++ b/code/game/machinery/computer/medical.dm @@ -3,7 +3,8 @@ /obj/machinery/computer/med_data//TODO:SANITY name = "Medical Records" desc = "This can be used to check medical records." - icon_state = "medcomp" + icon_keyboard = "med_key" + icon_screen = "medcomp" req_one_access = list(access_medical, access_forensics_lockers) circuit = "/obj/item/weapon/circuitboard/med_data" var/obj/item/weapon/card/id/scan = null @@ -518,4 +519,6 @@ /obj/machinery/computer/med_data/laptop name = "Medical Laptop" desc = "Cheap Nanotrasen Laptop." - icon_state = "medlaptop" + icon_state = "laptop" + icon_keyboard = "laptop_key" + icon_screen = "medlaptop" diff --git a/code/game/machinery/computer/message.dm b/code/game/machinery/computer/message.dm index caf0ead1a8b..f3a87b30ad0 100644 --- a/code/game/machinery/computer/message.dm +++ b/code/game/machinery/computer/message.dm @@ -7,9 +7,9 @@ /obj/machinery/computer/message_monitor name = "Message Monitor Console" desc = "Used to Monitor the crew's messages, that are sent via PDA. Can also be used to view Request Console messages." - icon_state = "comm_logs" + icon_screen = "comm_logs" light_color = LIGHT_COLOR_GREEN - var/hack_icon = "comm_logsc" + var/hack_icon = "tcboss" var/normal_icon = "comm_logs" circuit = "/obj/item/weapon/circuitboard/message_monitor" //Server linked to. @@ -55,7 +55,7 @@ // It'll take more time if there's more characters in the password.. if(!emag) if(!isnull(src.linkedServer)) - icon_state = hack_icon // An error screen I made in the computers.dmi + icon_screen = hack_icon // An error screen I made in the computers.dmi emag = 1 screen = 2 spark_system.set_up(5, 0, src) @@ -70,13 +70,14 @@ user << "A no server error appears on the screen." /obj/machinery/computer/message_monitor/update_icon() - ..() if(stat & (NOPOWER|BROKEN)) return if(emag || hacking) - icon_state = hack_icon + icon_screen = hack_icon else - icon_state = normal_icon + icon_screen = normal_icon + + ..() /obj/machinery/computer/message_monitor/initialize() //Is the server isn't linked to a server, and there's a server available, default it to the first one in the list. @@ -261,11 +262,11 @@ var/currentKey = src.linkedServer.decryptkey user << "Brute-force completed! The key is '[currentKey]'." src.hacking = 0 - src.icon_state = normal_icon + src.icon_screen = normal_icon src.screen = 0 // Return the screen back to normal /obj/machinery/computer/message_monitor/proc/UnmagConsole() - src.icon_state = normal_icon + src.icon_screen = normal_icon src.emag = 0 /obj/machinery/computer/message_monitor/proc/ResetMessage() @@ -358,7 +359,7 @@ if((istype(usr, /mob/living/silicon/ai) || istype(usr, /mob/living/silicon/robot)) && (usr.mind.special_role && usr.mind.original == usr)) src.hacking = 1 src.screen = 2 - src.icon_state = hack_icon + src.icon_screen = hack_icon //Time it takes to bruteforce is dependant on the password length. spawn(100*length(src.linkedServer.decryptkey)) if(src && src.linkedServer && usr) diff --git a/code/game/machinery/computer/pod.dm b/code/game/machinery/computer/pod.dm index e8b160d26f9..981a81a15d0 100644 --- a/code/game/machinery/computer/pod.dm +++ b/code/game/machinery/computer/pod.dm @@ -3,7 +3,7 @@ /obj/machinery/computer/pod name = "Mass Drivers and Pod Doors Control" desc = "A controll for launching pods. Some people prefer firing Mechas." - icon_state = "mass_drivers" + icon_screen = "mass_driver" light_color = "#555555" circuit = /obj/item/weapon/circuitboard/pod var/list/id_tags = list() @@ -90,9 +90,6 @@ visible_message("Cannot locate any mass driver of that ID. Cancelling firing sequence!") return - if(icon_state != "old") - flick("mass_drivers_timing", src) - for(var/obj/machinery/door/poddoor/M in world) if(M.z != src.z) continue if(M.id_tag == ident_tag) @@ -170,12 +167,10 @@ /obj/machinery/computer/pod/process() if(!..()) return - var/timing = 0 for(var/ident_tag in id_tags) if(timings[ident_tag]) if(times[ident_tag] > 0) times[ident_tag] = round(times[ident_tag]) - 1 - timing = 1 else spawn() launch_sequence(ident_tag) @@ -187,11 +182,6 @@ else times[ident_tag] = maxtimes[ident_tag] updateDialog() - if(icon_state != "old") - if(timing) - icon_state = "mass_drivers_timing" - else - icon_state = "mass_drivers" return @@ -270,7 +260,9 @@ /obj/machinery/computer/pod/old - icon_state = "old" + icon_state = "oldcomp" + icon_screen = "library" + icon_keyboard = null name = "DoorMex Control Computer" circuit = /obj/item/weapon/circuitboard/olddoor @@ -312,9 +304,6 @@ visible_message("Cannot locate any mass driver of that ID. Cancelling firing sequence!") return - if(icon_state != "old") - flick("mass_drivers_timing", src) - if(teleporter_dest) for(var/obj/structure/deathsquad_tele/D in world) if(D.z != src.z) continue diff --git a/code/game/machinery/computer/pod_tracking_console.dm b/code/game/machinery/computer/pod_tracking_console.dm index 5e5a4b8df9c..5c40d9a11f8 100644 --- a/code/game/machinery/computer/pod_tracking_console.dm +++ b/code/game/machinery/computer/pod_tracking_console.dm @@ -1,7 +1,8 @@ /obj/machinery/computer/podtracker name = "Pod Tracking Console" icon = 'icons/obj/computer.dmi' - icon_state = "podtracking" + icon_keyboard = "tech_key" + icon_screen = "rdcomp" light_color = LIGHT_COLOR_PURPLE req_access = list(access_robotics) circuit = "/obj/item/weapon/circuitboard/pod_locater" diff --git a/code/game/machinery/computer/prisoner.dm b/code/game/machinery/computer/prisoner.dm index 0e575139ede..d144eebac2c 100644 --- a/code/game/machinery/computer/prisoner.dm +++ b/code/game/machinery/computer/prisoner.dm @@ -3,7 +3,8 @@ /obj/machinery/computer/prisoner name = "Prisoner Management" icon = 'icons/obj/computer.dmi' - icon_state = "explosive" + icon_keyboard = "security_key" + icon_screen = "explosive" req_access = list(access_armory) circuit = "/obj/item/weapon/circuitboard/prisoner" var/id = 0.0 diff --git a/code/game/machinery/computer/prisonshuttle.dm b/code/game/machinery/computer/prisonshuttle.dm index 6d646b9ebbd..8d9c206e97f 100644 --- a/code/game/machinery/computer/prisonshuttle.dm +++ b/code/game/machinery/computer/prisonshuttle.dm @@ -13,7 +13,8 @@ var/prison_shuttle_timeleft = 0 /obj/machinery/computer/prison_shuttle name = "Prison Shuttle Console" icon = 'icons/obj/computer.dmi' - icon_state = "shuttle" + icon_keyboard = "security_key" + icon_screen = "syndishuttle" light_color = LIGHT_COLOR_PURE_CYAN req_access = list(access_security) circuit = "/obj/item/weapon/circuitboard/prison_shuttle" diff --git a/code/game/machinery/computer/robot.dm b/code/game/machinery/computer/robot.dm index fb9c89bbcae..2d5a375b23a 100644 --- a/code/game/machinery/computer/robot.dm +++ b/code/game/machinery/computer/robot.dm @@ -5,7 +5,8 @@ name = "robotics control console" desc = "Used to remotely lockdown or detonate linked Cyborgs." icon = 'icons/obj/computer.dmi' - icon_state = "robot" + icon_keyboard = "tech_key" + icon_screen = "robot" req_access = list(access_robotics) circuit = /obj/item/weapon/circuitboard/robotics var/temp = null diff --git a/code/game/machinery/computer/salvage_ship.dm b/code/game/machinery/computer/salvage_ship.dm index 9c2e2b853c4..adeddde427b 100644 --- a/code/game/machinery/computer/salvage_ship.dm +++ b/code/game/machinery/computer/salvage_ship.dm @@ -4,7 +4,8 @@ /obj/machinery/computer/salvage_ship name = "salvage ship terminal" icon = 'icons/obj/computer.dmi' - icon_state = "syndishuttle" + icon_keyboard = "syndie_key" + icon_screen = "syndishuttle" req_access = list(access_salvage_captain) var/area/curr_location var/moving = 0 diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm index b7e009730e5..a9599578d0f 100644 --- a/code/game/machinery/computer/security.dm +++ b/code/game/machinery/computer/security.dm @@ -3,7 +3,8 @@ /obj/machinery/computer/secure_data//TODO:SANITY name = "Security Records" desc = "Used to view and edit personnel's security records" - icon_state = "security" + icon_keyboard = "security_key" + icon_screen = "security" req_one_access = list(access_security, access_forensics_lockers) circuit = "/obj/item/weapon/circuitboard/secure_data" var/obj/item/weapon/card/id/scan = null diff --git a/code/game/machinery/computer/shuttle.dm b/code/game/machinery/computer/shuttle.dm index 5af7663db5d..96949ac7fa0 100644 --- a/code/game/machinery/computer/shuttle.dm +++ b/code/game/machinery/computer/shuttle.dm @@ -1,7 +1,8 @@ /obj/machinery/computer/shuttle name = "Shuttle" desc = "For shuttle control." - icon_state = "shuttle" + icon_keyboard = "tech_key" + icon_screen = "shuttle" var/auth_need = 3.0 var/list/authorized = list( ) diff --git a/code/game/machinery/computer/skills.dm b/code/game/machinery/computer/skills.dm index 21f10e359fc..b5c49c4b165 100644 --- a/code/game/machinery/computer/skills.dm +++ b/code/game/machinery/computer/skills.dm @@ -3,7 +3,9 @@ /obj/machinery/computer/skills//TODO:SANITY name = "Employment Records" desc = "Used to view personnel's employment records" - icon_state = "medlaptop" + icon_state = "laptop" + icon_keyboard = "laptop_key" + icon_screen = "medlaptop" light_color = LIGHT_COLOR_GREEN req_one_access = list(access_heads) circuit = "/obj/item/weapon/circuitboard/skills" diff --git a/code/game/machinery/computer/specops_shuttle.dm b/code/game/machinery/computer/specops_shuttle.dm index 4c765ecc1b3..9b455111d6d 100644 --- a/code/game/machinery/computer/specops_shuttle.dm +++ b/code/game/machinery/computer/specops_shuttle.dm @@ -14,7 +14,8 @@ var/specops_shuttle_timeleft = 0 /obj/machinery/computer/specops_shuttle name = "Spec. Ops. Shuttle Console" icon = 'icons/obj/computer.dmi' - icon_state = "shuttle" + icon_keyboard = "security_key" + icon_screen = "syndishuttle" light_color = LIGHT_COLOR_PURE_CYAN req_access = list(access_cent_specops) // req_access = list(ACCESS_CENT_SPECOPS) diff --git a/code/game/machinery/computer/station_alert.dm b/code/game/machinery/computer/station_alert.dm index eb9709470c6..f81deb6c9a5 100644 --- a/code/game/machinery/computer/station_alert.dm +++ b/code/game/machinery/computer/station_alert.dm @@ -2,7 +2,8 @@ /obj/machinery/computer/station_alert name = "Station Alert Computer" desc = "Used to access the station's automated alert system." - icon_state = "alert:0" + icon_keyboard = "tech_key" + icon_screen = "alert:0" circuit = "/obj/item/weapon/circuitboard/stationalert" var/alarms = list("Fire"=list(), "Atmosphere"=list(), "Power"=list()) @@ -102,15 +103,15 @@ process() if(stat & (BROKEN|NOPOWER)) - icon_state = "atmos0" + icon_screen = "alert:0" 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) - icon_state = "alert:2" + icon_screen = "alert:2" else - icon_state = "alert:0" + icon_screen = "alert:0" ..() return diff --git a/code/game/machinery/computer/store.dm b/code/game/machinery/computer/store.dm index 2950ca87f11..42760e1b3e4 100644 --- a/code/game/machinery/computer/store.dm +++ b/code/game/machinery/computer/store.dm @@ -1,7 +1,7 @@ /obj/machinery/computer/merch name = "Merch Computer" icon = 'icons/obj/computer.dmi' - icon_state = "comm_logs" + icon_screen = "comm_logs" circuit = "/obj/item/weapon/circuitboard/merch" light_color = LIGHT_COLOR_GREEN @@ -145,15 +145,3 @@ td.cost.toomuch { usr << "\blue You've successfully purchased the item. It should be in your hands or on the floor." src.updateUsrDialog() return - -/obj/machinery/computer/merch/update_icon() - - if(stat & BROKEN) - icon_state = "comm_logsb" - else - if(stat & NOPOWER) - src.icon_state = "comm_logs0" - stat |= NOPOWER - else - icon_state = initial(icon_state) - stat &= ~NOPOWER diff --git a/code/game/machinery/computer/syndicate_specops_shuttle.dm b/code/game/machinery/computer/syndicate_specops_shuttle.dm index 5ddc7fcaf13..ba547692036 100644 --- a/code/game/machinery/computer/syndicate_specops_shuttle.dm +++ b/code/game/machinery/computer/syndicate_specops_shuttle.dm @@ -13,7 +13,8 @@ var/syndicate_elite_shuttle_timeleft = 0 /obj/machinery/computer/syndicate_elite_shuttle name = "Elite Syndicate Squad Shuttle Console" icon = 'icons/obj/computer.dmi' - icon_state = "syndishuttle" + icon_keyboard = "syndie_key" + icon_screen = "syndishuttle" light_color = LIGHT_COLOR_PURE_CYAN req_access = list(access_syndicate) var/temp = null diff --git a/code/game/machinery/computer/telecrystalconsoles.dm b/code/game/machinery/computer/telecrystalconsoles.dm index f65ad4aae49..84b99e4dfe5 100644 --- a/code/game/machinery/computer/telecrystalconsoles.dm +++ b/code/game/machinery/computer/telecrystalconsoles.dm @@ -6,7 +6,6 @@ var/list/possible_uplinker_IDs = list("Alfa","Bravo","Charlie","Delta","Echo","F /obj/machinery/computer/telecrystals name = "\improper Telecrystal assignment station" desc = "A device used to manage telecrystals during group operations. You shouldn't be looking at this particular one..." - icon_state = "tcstation" ///////////////////////////////////////////// /obj/machinery/computer/telecrystals/uplinker @@ -14,6 +13,8 @@ var/list/possible_uplinker_IDs = list("Alfa","Bravo","Charlie","Delta","Echo","F desc = "A device used to manage telecrystals during group operations. To use, simply insert your uplink. With your uplink installed \ you can upload your telecrystals to the group's pool using the console, or be assigned additional telecrystals by your lieutenant." icon_state = "tcstation" + icon_keyboard = "tcstation_key" + icon_screen = "syndie" var/obj/item/uplinkholder = null var/obj/machinery/computer/telecrystals/boss/linkedboss = null @@ -51,6 +52,7 @@ var/list/possible_uplinker_IDs = list("Alfa","Bravo","Charlie","Delta","Echo","F /obj/machinery/computer/telecrystals/uplinker/update_icon() overlays.Cut() + ..() if(uplinkholder) overlays += "[initial(icon_state)]-closed" @@ -126,7 +128,8 @@ var/list/possible_uplinker_IDs = list("Alfa","Bravo","Charlie","Delta","Echo","F desc = "A device used to manage telecrystals during group operations. To use, simply initialize the machine by scanning for nearby uplink stations. \ Once the consoles are linked up, you can assign any telecrystals amongst your operatives; be they donated by your agents or rationed to the squad \ based on the danger rating of the mission." - icon_state = "tcboss" + icon_keyboard = "syndie_key" + icon_screen = "tcboss" var/virgin = 1 var/scanrange = 10 var/storedcrystals = 0 diff --git a/code/game/machinery/computer/xenos_shuttle.dm b/code/game/machinery/computer/xenos_shuttle.dm index 0577b0aca7d..fd58beadaf4 100644 --- a/code/game/machinery/computer/xenos_shuttle.dm +++ b/code/game/machinery/computer/xenos_shuttle.dm @@ -4,7 +4,8 @@ /obj/machinery/computer/xenos_station name = "xenos shuttle terminal" icon = 'icons/obj/computer.dmi' - icon_state = "xenocontrol" + icon_keyboard = "telesci_key" + icon_screen = "telesci" req_access = list() var/area/curr_location var/moving = 0 diff --git a/code/game/machinery/cryo.dm b/code/game/machinery/cryo.dm index ae3b91c3ca3..982f0e415ff 100644 --- a/code/game/machinery/cryo.dm +++ b/code/game/machinery/cryo.dm @@ -72,6 +72,7 @@ var/obj/item/weapon/reagent_containers/glass/B = beaker if(beaker) B.loc = get_step(T, SOUTH) //Beaker is carefully ejected from the wreckage of the cryotube + beaker = null return ..() /obj/machinery/atmospherics/unary/cryo_cell/MouseDrop_T(atom/movable/O as mob|obj, mob/user as mob) diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 6702399aad3..c62976ec171 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -262,11 +262,6 @@ operating = 0 air_update_turf(1) update_freelok_sight() - - //I shall not add a check every x ticks if a door has closed over some fire. - var/obj/effect/hotspot/fire = locate() in loc - if(fire) - qdel(fire) return /obj/machinery/door/proc/crush() diff --git a/code/game/machinery/doors/poddoor.dm b/code/game/machinery/doors/poddoor.dm index eb40421beb6..b14fd005674 100644 --- a/code/game/machinery/doors/poddoor.dm +++ b/code/game/machinery/doors/poddoor.dm @@ -453,9 +453,9 @@ f2.set_opacity(opacity) Destroy() - del f1 - del f2 - ..() + qdel(f1) + qdel(f2) + return ..() /obj/machinery/door/poddoor/two_tile_ver var/obj/machinery/door/poddoor/filler_object/f1 @@ -472,9 +472,9 @@ f2.set_opacity(opacity) Destroy() - del f1 - del f2 - ..() + qdel(f1) + qdel(f2) + return ..() /obj/machinery/door/poddoor/three_tile_hor var/obj/machinery/door/poddoor/filler_object/f1 @@ -495,10 +495,10 @@ f3.set_opacity(opacity) Destroy() - del f1 - del f2 - del f3 - ..() + qdel(f1) + qdel(f2) + qdel(f3) + return ..() /obj/machinery/door/poddoor/three_tile_ver var/obj/machinery/door/poddoor/filler_object/f1 @@ -519,10 +519,10 @@ f3.set_opacity(opacity) Destroy() - del f1 - del f2 - del f3 - ..() + qdel(f1) + qdel(f2) + qdel(f3) + return ..() /obj/machinery/door/poddoor/four_tile_hor var/obj/machinery/door/poddoor/filler_object/f1 @@ -547,11 +547,11 @@ f4.set_opacity(opacity) Destroy() - del f1 - del f2 - del f3 - del f4 - ..() + qdel(f1) + qdel(f2) + qdel(f3) + qdel(f4) + return ..() /obj/machinery/door/poddoor/four_tile_ver var/obj/machinery/door/poddoor/filler_object/f1 @@ -576,11 +576,11 @@ f4.set_opacity(opacity) Destroy() - del f1 - del f2 - del f3 - del f4 - ..() + qdel(f1) + qdel(f2) + qdel(f3) + qdel(f4) + return ..() /obj/machinery/door/poddoor/filler_object name = "" diff --git a/code/game/machinery/doors/spacepod.dm b/code/game/machinery/doors/spacepod.dm index 2aae6ed5f6d..244642021ad 100644 --- a/code/game/machinery/doors/spacepod.dm +++ b/code/game/machinery/doors/spacepod.dm @@ -7,23 +7,18 @@ density = 0 anchored = 1 - New() //set the turf below the flaps to block air - var/turf/T = get_turf(loc) - if(T) - T.blocks_air = 1 - ..() +/obj/structure/spacepoddoor/New() + ..() + air_update_turf(1) - Destroy() //lazy hack to set the turf to allow air to pass if it's a simulated floor - var/turf/T = get_turf(loc) - if(T) - if(istype(T, /turf/simulated/floor)) - T.blocks_air = 0 - ..() +/obj/structure/spacepoddoor/CanAtmosPass(turf/T) + return 0 +/obj/structure/spacepoddoor/Destroy() + air_update_turf(1) + return ..() - -/obj/structure/spacepoddoor/CanPass(atom/A, turf/T) +/obj/structure/spacepoddoor/CanPass(atom/movable/A, turf/T) if(istype(A, /obj/spacepod)) return ..() - else return 0 - + else return 0 \ No newline at end of file diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index e731689cbba..a8c2491ab04 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -25,6 +25,9 @@ density = 0 if(health == 0) playsound(src, "shatter", 70, 1) + if(electronics) + qdel(electronics) + electronics = null return ..() diff --git a/code/game/machinery/guestpass.dm b/code/game/machinery/guestpass.dm index 65510c1d5aa..623336050aa 100644 --- a/code/game/machinery/guestpass.dm +++ b/code/game/machinery/guestpass.dm @@ -42,6 +42,8 @@ /obj/machinery/computer/guestpass name = "guest pass terminal" icon_state = "guest" + icon_screen = "pass" + icon_keyboard = null density = 0 diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index e65f470a0d6..ecce6d98767 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -196,10 +196,10 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ del(src) return -/obj/machinery/hologram/Del() +/obj/machinery/hologram/Destroy() if(hologram) src:clear_holo() - ..() + return ..() /* Holographic project of everything else. diff --git a/code/game/machinery/kitchen/gibber.dm b/code/game/machinery/kitchen/gibber.dm index 7912a307c91..33000bbfc21 100644 --- a/code/game/machinery/kitchen/gibber.dm +++ b/code/game/machinery/kitchen/gibber.dm @@ -20,6 +20,13 @@ idle_power_usage = 2 active_power_usage = 500 +/obj/machinery/gibber/Destroy() + if(contents.len) + for(var/atom/movable/A in contents) + A.loc = get_turf(src) + if(occupant) occupant = null + return ..() + //gibs anything that stands on it's input /obj/machinery/gibber/autogibber @@ -281,52 +288,50 @@ return /obj/machinery/gibber/proc/feedinTopanim() - if(!src.occupant) - return + if(!occupant) return - src.layer = MOB_LAYER + 0.1 + var/arbitrary_delay = 16 //arbitrary delay for animating going down + locked = 1 //lock gibber - src.locked = 1 - - var/image/gibberoverlay = new + var/image/gibberoverlay = new //used to simulate 3D effects gibberoverlay.icon = src.icon gibberoverlay.icon_state = "grinderoverlay" gibberoverlay.overlays += image('icons/obj/kitchen.dmi', "gridle") var/image/feedee = new occupant.dir = 2 - feedee.icon = getFlatIcon(occupant, 2) - feedee.pixel_y = 25 - feedee.pixel_x = 2 + feedee.icon = getFlatIcon(occupant, 2) //makes the image a copy of the occupant - overlays += feedee - overlays += gibberoverlay + var/atom/movable/holder = new //holder for occupant image + holder.name = null //make unclickable + holder.overlays += feedee //add occupant to holder overlays + holder.pixel_y = 25 //above the gibber + holder.pixel_x = 2 + holder.loc = get_turf(src) + holder.layer = MOB_LAYER //simulate mob-like layering + holder.anchored = 1 - var/i //our counter - for(i=0,i<30,i++) //32 tenths of a second (3.2seconds), counting from 0 to 31 - overlays -= gibberoverlay - overlays -= feedee + var/atom/movable/holder2 = new //holder for gibber overlay, used to simulate 3D effect + holder2.name = null + holder2.overlays += gibberoverlay + holder2.loc = get_turf(src) + holder2.layer = MOB_LAYER + 0.1 //3D, it's above the mob, rest of the gibber is behind + holder2.anchored = 1 - feedee.pixel_y-- + animate(holder, pixel_y = 16, time = arbitrary_delay) //animate going down - if(feedee.pixel_y == 16) - feedee.icon += icon('icons/obj/kitchen.dmi', "footicon") - continue + sleep(arbitrary_delay) - if(feedee.pixel_y == -5) - overlays -= feedee - overlays -= gibberoverlay - src.locked = 0 - break + holder.overlays -= feedee //reset static icon + feedee.icon += icon('icons/obj/kitchen.dmi', "footicon") //this is some byond magic; += to the icon var with a black and white image will mask it + holder.overlays += feedee + animate(holder, pixel_y = -3, time = arbitrary_delay) //animate going down further - overlays += feedee - overlays += gibberoverlay + sleep(arbitrary_delay) //time everything right, animate doesn't prevent proc from continuing - sleep(1) - - overlays -= feedee - overlays -= gibberoverlay - src.layer = 3 + qdel(holder) //get rid of holder object + qdel(holder2) //get rid of holder object + locked = 0 //unlock /obj/machinery/gibber/proc/startgibbing(var/mob/user, var/UserOverride=0) if(!istype(user) && !UserOverride) diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm index 876e1404411..eef7223d15b 100644 --- a/code/game/machinery/newscaster.dm +++ b/code/game/machinery/newscaster.dm @@ -116,6 +116,8 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co /obj/machinery/newscaster/Destroy() allCasters -= src + viewing_channel = null + photo = null return ..() /obj/machinery/newscaster/update_icon() diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm index 65c41918e6c..0a71b73e8ef 100644 --- a/code/game/machinery/portable_turret.dm +++ b/code/game/machinery/portable_turret.dm @@ -157,6 +157,7 @@ /obj/machinery/porta_turret/Destroy() //deletes its own cover with it qdel(cover) // qdel + cover = null return ..() /obj/machinery/porta_turret/proc/isLocked(mob/user) diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm index c5c61e87c69..cb0c9707b32 100644 --- a/code/game/machinery/shieldgen.dm +++ b/code/game/machinery/shieldgen.dm @@ -140,6 +140,7 @@ /obj/machinery/shieldgen/Destroy() for(var/obj/machinery/shield/shield_tile in deployed_shields) qdel(shield_tile) + deployed_shields = null return ..() diff --git a/code/game/machinery/status_display.dm b/code/game/machinery/status_display.dm index 133432de77c..94030dc5cd4 100644 --- a/code/game/machinery/status_display.dm +++ b/code/game/machinery/status_display.dm @@ -1,4 +1,4 @@ -#define FONT_SIZE "4pt" +#define FONT_SIZE "5pt" #define FONT_COLOR "#09f" #define FONT_STYLE "Arial Black" #define SCROLL_SPEED 2 @@ -35,7 +35,7 @@ var/ignore_friendc = 0 var/spookymode = 0 - + maptext_height = 26 maptext_width = 32 @@ -222,7 +222,7 @@ density = 0 var/spookymode = 0 - + var/mode = 0 // 0 = Blank // 1 = AI emoticon // 2 = Blue screen of death diff --git a/code/game/machinery/syndicatebeacon.dm b/code/game/machinery/syndicatebeacon.dm index ab65c5a1e3d..667ebfddde8 100644 --- a/code/game/machinery/syndicatebeacon.dm +++ b/code/game/machinery/syndicatebeacon.dm @@ -127,7 +127,7 @@ if(surplus() < 1500) if(user) user << "The connected wire doesn't have enough current." return - for(var/obj/singularity/singulo in world) + for(var/obj/singularity/singulo in singularities) if(singulo.z == z) singulo.target = src icon_state = "[icontype]1" diff --git a/code/game/machinery/telecomms/broadcaster.dm b/code/game/machinery/telecomms/broadcaster.dm index aced6424633..7823dabea92 100644 --- a/code/game/machinery/telecomms/broadcaster.dm +++ b/code/game/machinery/telecomms/broadcaster.dm @@ -97,11 +97,11 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept /* --- Do a snazzy animation! --- */ flick("broadcaster_send", src) -/obj/machinery/telecomms/broadcaster/Del() +/obj/machinery/telecomms/broadcaster/Destroy() // In case message_delay is left on 1, otherwise it won't reset the list and people can't say the same thing twice anymore. if(message_delay) message_delay = 0 - ..() + return ..() /* diff --git a/code/game/machinery/telecomms/logbrowser.dm b/code/game/machinery/telecomms/logbrowser.dm index 732affcaa17..04a8d95e4cd 100644 --- a/code/game/machinery/telecomms/logbrowser.dm +++ b/code/game/machinery/telecomms/logbrowser.dm @@ -5,7 +5,7 @@ /obj/machinery/computer/telecomms/server name = "Telecommunications Server Monitor" - icon_state = "comm_logs" + icon_screen = "comm_logs" var/screen = 0 // the screen number: diff --git a/code/game/machinery/telecomms/telecomunications.dm b/code/game/machinery/telecomms/telecomunications.dm index 0450905528f..79be894bf42 100644 --- a/code/game/machinery/telecomms/telecomunications.dm +++ b/code/game/machinery/telecomms/telecomunications.dm @@ -160,9 +160,9 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() add_link(T) -/obj/machinery/telecomms/Del() +/obj/machinery/telecomms/Destroy() telecomms_list -= src - ..() + return ..() // Used in auto linking /obj/machinery/telecomms/proc/add_link(var/obj/machinery/telecomms/T) diff --git a/code/game/machinery/telecomms/telemonitor.dm b/code/game/machinery/telecomms/telemonitor.dm index e6e60cfe5a2..91b258abd23 100644 --- a/code/game/machinery/telecomms/telemonitor.dm +++ b/code/game/machinery/telecomms/telemonitor.dm @@ -9,7 +9,7 @@ /obj/machinery/computer/telecomms/monitor name = "Telecommunications Monitor" - icon_state = "comm_monitor" + icon_screen = "comm_monitor" var/screen = 0 // the screen number: var/list/machinelist = list() // the machines located by the computer diff --git a/code/game/machinery/telecomms/traffic_control.dm b/code/game/machinery/telecomms/traffic_control.dm index 6149c7989f3..b46cefa9e80 100644 --- a/code/game/machinery/telecomms/traffic_control.dm +++ b/code/game/machinery/telecomms/traffic_control.dm @@ -1,6 +1,5 @@ /obj/machinery/computer/telecomms/traffic name = "Telecommunications Traffic Control" - icon_state = "computer_generic" var/screen = 0 // the screen number: var/list/servers = list() // the servers located by the computer diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm index d9b57fcbf16..7285c12ccd9 100644 --- a/code/game/machinery/teleporter.dm +++ b/code/game/machinery/teleporter.dm @@ -1,7 +1,8 @@ /obj/machinery/computer/teleporter name = "Teleporter Control Console" desc = "Used to control a linked teleportation Hub and Station." - icon_state = "teleport" + icon_screen = "teleport" + icon_keyboard = "teleport_key" circuit = "/obj/item/weapon/circuitboard/teleporter" var/obj/item/device/gps/locked = null var/regime_set = "Teleporter" @@ -21,6 +22,12 @@ /obj/machinery/computer/teleporter/initialize() link_power_station() +/obj/machinery/computer/teleporter/Destroy() + if (power_station) + power_station.teleporter_console = null + power_station = null + return ..() + /obj/machinery/computer/teleporter/proc/link_power_station() if(power_station) return @@ -35,14 +42,11 @@ var/obj/item/device/gps/L = I if(L.locked_location && !(stat & (NOPOWER|BROKEN))) if(!user.unEquip(L)) - user << "\the [I] is stuck to your hand, you cannot put it in \the [src]" + user << "\the [I] is stuck to your hand, you cannot put it in \the [src]" return L.loc = src locked = L user << "You insert the GPS device into the [name]'s slot." - src.attack_hand(user) - else - user << "No useable data was found on te GPS device." else ..() return @@ -164,7 +168,7 @@ /obj/machinery/computer/teleporter/proc/eject() if(locked) - locked.loc = src.loc + locked.loc = loc locked = null /obj/machinery/computer/teleporter/proc/set_target(mob/user) @@ -290,6 +294,12 @@ /obj/machinery/teleport/hub/initialize() link_power_station() +/obj/machinery/teleport/hub/Destroy() + if (power_station) + power_station.teleporter_hub = null + power_station = null + return ..() + /obj/machinery/teleport/hub/RefreshParts() var/A = 0 for(var/obj/item/weapon/stock_parts/matter_bin/M in component_parts) @@ -339,7 +349,7 @@ if (!com) return if (!com.target) - visible_message("Cannot authenticate locked on coordinates. Please reinstate coordinate matrix.") + visible_message("Cannot authenticate locked on coordinates. Please reinstate coordinate matrix.") return if (istype(M, /atom/movable)) if(!calibrated && prob(25 - ((accurate) * 10))) //oh dear a problem @@ -407,7 +417,12 @@ /obj/machinery/teleport/station/Destroy() if(teleporter_hub) + teleporter_hub.power_station = null teleporter_hub.update_icon() + teleporter_hub = null + if (teleporter_console) + teleporter_console.power_station = null + teleporter_console = null return ..() /obj/machinery/teleport/station/attackby(var/obj/item/weapon/W, mob/user, params) @@ -419,8 +434,9 @@ M.buffer = null user << "You upload the data from the [W.name]'s buffer." else - user << "This station cant hold more information, try to use better parts." + user << "This station can't hold more information, try to use better parts." if(default_deconstruction_screwdriver(user, "controller-o", "controller", W)) + update_icon() return if(exchange_parts(user, W)) @@ -467,10 +483,9 @@ /obj/machinery/teleport/station/power_change() ..() - if(stat & NOPOWER) - update_icon() - if(teleporter_hub) - teleporter_hub.update_icon() + update_icon() + if(teleporter_hub) + teleporter_hub.update_icon() /obj/machinery/teleport/station/update_icon() if(panel_open) diff --git a/code/game/machinery/turret_control.dm b/code/game/machinery/turret_control.dm index 55399f8b199..545033aa718 100644 --- a/code/game/machinery/turret_control.dm +++ b/code/game/machinery/turret_control.dm @@ -37,12 +37,12 @@ lethal = 1 icon_state = "control_kill" -/obj/machinery/turretid/Del() +/obj/machinery/turretid/Destroy() if(control_area) var/area/A = control_area if(A && istype(A)) A.turret_controls -= src - ..() + return ..() /obj/machinery/turretid/initialize() if(!control_area) diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index 01fb3ddd701..cefb8a194b4 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -146,10 +146,10 @@ src.product_records.Add(product) /obj/machinery/vending/Destroy() - del(wires) // qdel + qdel(wires) // qdel wires = null if(coin) - del(coin) // qdel + qdel(coin) // qdel coin = null return ..() diff --git a/code/game/mecha/mech_bay.dm b/code/game/mecha/mech_bay.dm index 2116c56faed..5ce08a47ad4 100644 --- a/code/game/mecha/mech_bay.dm +++ b/code/game/mecha/mech_bay.dm @@ -98,7 +98,8 @@ density = 1 anchored = 1 icon = 'icons/obj/computer.dmi' - icon_state = "recharge_comp" + icon_keyboard = "tech_key" + icon_screen = "recharge_comp" light_color = LIGHT_COLOR_FADEDPURPLE circuit = /obj/item/weapon/circuitboard/mech_bay_power_console var/obj/machinery/mech_bay_recharge_port/recharge_port @@ -160,9 +161,10 @@ /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)) - icon_state = "recharge_comp" + icon_screen = "recharge_comp" else - icon_state = "recharge_comp_on" + icon_screen = "recharge_comp_on" + ..() /obj/machinery/computer/mech_bay_power_console/initialize() reconnect() diff --git a/code/game/mecha/mecha_control_console.dm b/code/game/mecha/mecha_control_console.dm index 3608b06c25d..1b37a6ce3d1 100644 --- a/code/game/mecha/mecha_control_console.dm +++ b/code/game/mecha/mecha_control_console.dm @@ -1,7 +1,8 @@ /obj/machinery/computer/mecha name = "Exosuit Control" icon = 'icons/obj/computer.dmi' - icon_state = "mecha" + icon_keyboard = "rd_key" + icon_screen = "mecha" light_color = LIGHT_COLOR_FADEDPURPLE req_access = list(access_robotics) circuit = "/obj/item/weapon/circuitboard/mecha_control" diff --git a/code/game/objects/effects/aliens.dm b/code/game/objects/effects/aliens.dm index 8312fc0f328..e895e2f3ad2 100644 --- a/code/game/objects/effects/aliens.dm +++ b/code/game/objects/effects/aliens.dm @@ -72,7 +72,7 @@ /obj/structure/alien/resin/proc/healthcheck() if(health <=0) - del(src) + qdel(src) /obj/structure/alien/resin/bullet_act(obj/item/projectile/Proj) @@ -167,7 +167,7 @@ ..() linked_node = node if(istype(loc, /turf/space)) - del(src) + qdel(src) return if(icon_state == "weeds") icon_state = pick("weeds", "weeds1", "weeds2") @@ -178,9 +178,9 @@ /obj/structure/alien/weeds/Destroy() var/turf/T = loc - loc = null for (var/obj/structure/alien/weeds/W in range(1,T)) W.updateWeedOverlays() + linked_node = null return ..() /obj/structure/alien/weeds/proc/Life() @@ -188,7 +188,7 @@ var/turf/U = get_turf(src) if(istype(U, /turf/space)) - del(src) + qdel(src) return direction_loop: @@ -232,7 +232,7 @@ /obj/structure/alien/weeds/proc/healthcheck() if(health <= 0) - del(src) + qdel(src) /obj/structure/alien/weeds/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) @@ -315,7 +315,7 @@ if(BURST) user << "You clear the hatched egg." playsound(loc, 'sound/effects/attackblob.ogg', 100, 1) - del(src) + qdel(src) return if(GROWING) user << "The child is not developed yet." @@ -390,7 +390,7 @@ if(status != BURST && status != BURSTING) Burst() else if(status == BURST && prob(50)) - del(src) //Remove the egg after it has been hit after bursting. + qdel(src) //Remove the egg after it has been hit after bursting. /obj/structure/alien/egg/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) @@ -453,7 +453,7 @@ /obj/effect/acid/proc/tick() if(!target) - del(src) + qdel(src) ticks++ @@ -464,9 +464,9 @@ var/turf/simulated/wall/W = target W.dismantle_wall(1) else - del(target) + qdel(target) - del(src) + qdel(src) return x = target.x diff --git a/code/game/objects/effects/decals/Cleanable/humans.dm b/code/game/objects/effects/decals/Cleanable/humans.dm index 66c5b3a3e0b..c2945ca8b9b 100644 --- a/code/game/objects/effects/decals/Cleanable/humans.dm +++ b/code/game/objects/effects/decals/Cleanable/humans.dm @@ -21,11 +21,6 @@ var/global/list/image/splatter_cache=list() var/list/datum/disease2/disease/virus2 = list() var/amount = 5 -/obj/effect/decal/cleanable/blood/Del() - for(var/datum/disease2/disease/D in viruses) - D.cure(0) - ..() - /obj/effect/decal/cleanable/blood/New() ..() update_icon() diff --git a/code/game/objects/effects/effect_system.dm b/code/game/objects/effects/effect_system.dm index b897b1899dc..3e4abc7c5b7 100644 --- a/code/game/objects/effects/effect_system.dm +++ b/code/game/objects/effects/effect_system.dm @@ -176,7 +176,7 @@ steam.start() -- spawns the effect if (istype(T, /turf)) T.hotspot_expose(1000, 100) spawn (100) - delete() + qdel(src) /obj/effect/effect/sparks/Destroy() var/turf/T = src.loc @@ -223,8 +223,7 @@ steam.start() -- spawns the effect sleep(5) step(sparks,direction) spawn(20) - if(sparks) - sparks.delete() + qdel(sparks) src.total_sparks-- ///////////////////////////////////////////// @@ -1079,10 +1078,9 @@ steam.start() -- spawns the effect air_update_turf(1) Destroy() - density = 0 air_update_turf(1) - ..() + return ..() Move() var/turf/T = loc diff --git a/code/game/objects/effects/explosion_particles.dm b/code/game/objects/effects/explosion_particles.dm index 2666b8e9fd6..51e467644d3 100644 --- a/code/game/objects/effects/explosion_particles.dm +++ b/code/game/objects/effects/explosion_particles.dm @@ -9,7 +9,7 @@ /obj/effect/expl_particles/New() ..() spawn (15) - src.loc = null + qdel(src) return /obj/effect/expl_particles/Move() @@ -32,8 +32,7 @@ spawn(0) var/obj/effect/expl_particles/expl = new /obj/effect/expl_particles(src.location) var/direct = pick(alldirs) - var/a = 0 - for(a=0, a 0) T.ex_act(dist) diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index c0a5bce63b2..667c37c882f 100755 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -812,73 +812,6 @@ var/global/list/obj/item/device/pda/PDAs = list() return 1 // return 1 tells it to refresh the UI in NanoUI - -/obj/item/device/pda/proc/detonate_act(var/obj/item/device/pda/P) - //TODO: sometimes these attacks show up on the message server - var/i = rand(1,100) - var/j = rand(0,1) //Possibility of losing the PDA after the detonation - var/message = "" - var/mob/living/M = null - if(ismob(P.loc)) - M = P.loc - - //switch(i) //Yes, the overlapping cases are intended. - if(i<=10) //The traditional explosion - P.explode() - j=1 - message += "Your [P] suddenly explodes!" - if(i>=10 && i<= 20) //The PDA burns a hole in the holder. - j=1 - if(M && isliving(M)) - M.apply_damage( rand(30,60) , BURN) - message += "You feel a searing heat! Your [P] is burning!" - if(i>=20 && i<=25) //EMP - empulse(P.loc, 3, 6, 1) - message += "Your [P] emits a wave of electromagnetic energy!" - if(i>=25 && i<=40) //Smoke - var/datum/effect/effect/system/harmless_smoke_spread/S = new /datum/effect/effect/system/harmless_smoke_spread //Why was this chem_smoke_spread when there are no chems involved? - S.attach(P.loc) - S.set_up(P, 10, 0, P.loc) - playsound(P.loc, 'sound/effects/smoke.ogg', 50, 1, -3) - S.start() - message += "Large clouds of smoke billow forth from your [P]!" - if(i>=40 && i<=45) //Bad smoke - var/datum/effect/effect/system/bad_smoke_spread/B = new /datum/effect/effect/system/bad_smoke_spread - B.attach(P.loc) - B.set_up(P, 10, 0, P.loc) - playsound(P.loc, 'sound/effects/smoke.ogg', 50, 1, -3) - B.start() - message += "Large clouds of noxious smoke billow forth from your [P]!" - if(i>=65 && i<=75) //Weaken - if(M && isliving(M)) - M.apply_effects(0,1) - message += "Your [P] flashes with a blinding white light! You feel weaker." - if(i>=75 && i<=85) //Stun and stutter - if(M && isliving(M)) - M.apply_effects(1,0,0,0,1) - message += "Your [P] flashes with a blinding white light! You feel weaker." - if(i>=85) //Sparks - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread - s.set_up(2, 1, P.loc) - s.start() - message += "Your [P] begins to spark violently!" - if(i>45 && i<65 && prob(50)) //Nothing happens - message += "Your [P] bleeps loudly." - j = prob(10) - - if(j) //This kills the PDA - P.Del() - if(message) - message += "It melts in a puddle of plastic." - else - message += "Your [P] shatters in a thousand pieces!" - - JFLOG("[M]'s PDA Detonated >>> [message]") - - if(M && isliving(M)) - message = "\red" + message - M.show_message(message, 1) - /obj/item/device/pda/proc/remove_id() if (id) if (ismob(loc)) diff --git a/code/game/objects/items/devices/chameleonproj.dm b/code/game/objects/items/devices/chameleonproj.dm index de79a855768..0e83d0fa1ce 100644 --- a/code/game/objects/items/devices/chameleonproj.dm +++ b/code/game/objects/items/devices/chameleonproj.dm @@ -123,4 +123,4 @@ else spawn(25) can_move = 1 step(src,direction) - return \ No newline at end of file + return diff --git a/code/game/objects/items/devices/guitar.dm b/code/game/objects/items/devices/guitar.dm index e8aa4e3dd6d..fa6a7dbc3f3 100644 --- a/code/game/objects/items/devices/guitar.dm +++ b/code/game/objects/items/devices/guitar.dm @@ -16,7 +16,7 @@ song.instrumentExt = "ogg" /obj/item/device/guitar/Destroy() - del(song) + qdel(song) song = null return ..() diff --git a/code/game/objects/items/devices/multitool.dm b/code/game/objects/items/devices/multitool.dm index 9c1072cfa65..32d5984f8b9 100644 --- a/code/game/objects/items/devices/multitool.dm +++ b/code/game/objects/items/devices/multitool.dm @@ -36,9 +36,9 @@ processing_objects += src -/obj/item/device/multitool/ai_detect/Del() +/obj/item/device/multitool/ai_detect/Destroy() processing_objects -= src - ..() + return ..() /obj/item/device/multitool/ai_detect/process() diff --git a/code/game/objects/items/devices/powersink.dm b/code/game/objects/items/devices/powersink.dm index 143bf9fd2e3..7b0ea895654 100644 --- a/code/game/objects/items/devices/powersink.dm +++ b/code/game/objects/items/devices/powersink.dm @@ -65,7 +65,7 @@ processing_objects.Remove(src) // attached.attached = null attached = null - ..() + return ..() attack_ai() diff --git a/code/game/objects/items/devices/uplinks.dm b/code/game/objects/items/devices/uplinks.dm index 67571efdba3..c358afce2d9 100644 --- a/code/game/objects/items/devices/uplinks.dm +++ b/code/game/objects/items/devices/uplinks.dm @@ -26,9 +26,9 @@ var/list/world_uplinks = list() welcome = ticker.mode.uplink_welcome uses = ticker.mode.uplink_uses -/obj/item/device/uplink/Del() +/obj/item/device/uplink/Destroy() world_uplinks-=src - ..() + return ..() //Let's build a menu! /obj/item/device/uplink/proc/generate_menu(mob/user as mob) @@ -105,7 +105,7 @@ var/list/world_uplinks = list() /obj/item/device/uplink/Topic(href, href_list) if(..()) return 1 - + if(!active) return @@ -252,8 +252,8 @@ var/list/world_uplinks = list() src.hidden_uplink.trigger(user) return 1 return 0 - -//Refund proc for the borg teleporter (later I'll make a general refund proc if there is demand for it) + +//Refund proc for the borg teleporter (later I'll make a general refund proc if there is demand for it) /obj/item/device/radio/uplink/attackby(obj/item/weapon/W as obj, mob/user as mob, params) if(istype(W, /obj/item/weapon/antag_spawner/borg_tele)) var/obj/item/weapon/antag_spawner/borg_tele/S = W diff --git a/code/game/objects/items/devices/violin.dm b/code/game/objects/items/devices/violin.dm index 99288450a9b..5891b163794 100644 --- a/code/game/objects/items/devices/violin.dm +++ b/code/game/objects/items/devices/violin.dm @@ -15,7 +15,7 @@ song.instrumentExt = "ogg" /obj/item/device/violin/Destroy() - del(song) + qdel(song) song = null return ..() diff --git a/code/game/objects/items/shooting_range.dm b/code/game/objects/items/shooting_range.dm index a40cc5674d7..5b131c93fb7 100644 --- a/code/game/objects/items/shooting_range.dm +++ b/code/game/objects/items/shooting_range.dm @@ -16,7 +16,7 @@ T.pinned_target = null T.density = 1 break - ..() // delete target + return ..() // delete target Move() ..() diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index 18283f81efe..2736ccd4260 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -22,7 +22,7 @@ return /obj/item/stack/Destroy() - if (src && usr && usr.machine==src) + if (usr && usr.machine==src) usr << browse(null, "window=stack") return ..() diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index 2b76b4750a3..937ef75df2f 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -7,15 +7,16 @@ * Toy crossbow * Toy Tommy Gun * Toy swords - * Toy mechs + * Toy mechs * Snap pops * Water flower * Toy Nuke * Card Deck - * Therapy dolls - * Toddler doll - * Inflatable duck + * Therapy dolls + * Toddler doll + * Inflatable duck * Foam armblade + * Mini Gibber */ @@ -1277,4 +1278,45 @@ obj/item/toy/cards/deck/syndicate/black /obj/item/toy/pet_rock/roxie name = "roxie" desc = "Roxie, the bestest girl pet in the whole wide universe!" - icon_state = "roxie" \ No newline at end of file + icon_state = "roxie" + +//minigibber, so cute + +/obj/item/toy/minigibber + name = "miniature gibber" + desc = "A miniature recreation of NanoTrasen's famous meat grinder." + icon = 'icons/obj/toy.dmi' + icon_state = "minigibber" + attack_verb = list("grinded", "gibbed") + w_class = 2.0 + var/cooldown = 0 + var/obj/stored_minature = null + +/obj/item/toy/minigibber/attack_self(var/mob/user) + + if(stored_minature) + user << "\The [src] makes a violent grinding noise as it tears apart the miniature figure inside!" + qdel(stored_minature) + stored_minature = null + playsound(user, 'sound/effects/gib.ogg', 20, 1) + cooldown = world.time + + if(cooldown < world.time - 8) + user << "You hit the gib button on \the [src]." + playsound(user, 'sound/effects/gib.ogg', 20, 1) + cooldown = world.time + +/obj/item/toy/minigibber/attackby(var/obj/O, var/mob/user, params) + if(istype(O,/obj/item/toy/character) && O.loc == user) + user << "You start feeding \the [O] \icon[O] into \the [src]'s mini-input." + if(do_after(user,10)) + if(O.loc != user) + user << "\The [O] is too far away to feed into \the [src]!" + else + user << "You feed \the [O] \icon[O] into \the [src]!" + user.unEquip(O) + O.forceMove(src) + stored_minature = O + else + user << "You stop feeding \the [O] into \the [src]'s mini-input." + else ..() \ No newline at end of file diff --git a/code/game/objects/items/weapons/cigs.dm b/code/game/objects/items/weapons/cigs.dm index efa5684027d..8724d2663ee 100644 --- a/code/game/objects/items/weapons/cigs.dm +++ b/code/game/objects/items/weapons/cigs.dm @@ -37,8 +37,8 @@ LIGHTERS ARE IN LIGHTERS.DM create_reagents(chem_volume) // making the cigarrete a chemical holder with a maximum volume of 30 /obj/item/clothing/mask/cigarette/Destroy() - . = ..() - del(reagents) + qdel(reagents) + return ..() /obj/item/clothing/mask/cigarette/attackby(obj/item/weapon/W as obj, mob/user as mob, params) ..() diff --git a/code/game/objects/items/weapons/defib.dm b/code/game/objects/items/weapons/defib.dm index 2faf8a19083..1cea34da688 100644 --- a/code/game/objects/items/weapons/defib.dm +++ b/code/game/objects/items/weapons/defib.dm @@ -165,8 +165,13 @@ if(on) var/M = get(paddles, /mob) remove_paddles(M) - . = ..() - update_icon() + if(paddles) + qdel(paddles) + paddles = null + if(bcell) + qdel(bcell) + bcell = null + return ..() /obj/item/weapon/defibrillator/proc/deductcharge(var/chrgdeductamt) if(bcell) diff --git a/code/game/objects/items/weapons/implants/implant.dm b/code/game/objects/items/weapons/implants/implant.dm index 2b901819b0b..4dec738bb56 100644 --- a/code/game/objects/items/weapons/implants/implant.dm +++ b/code/game/objects/items/weapons/implants/implant.dm @@ -47,7 +47,7 @@ Destroy() if(part) part.implants.Remove(src) - ..() + return ..() /obj/item/weapon/implant/tracking name = "tracking" diff --git a/code/game/objects/items/weapons/shards.dm b/code/game/objects/items/weapons/shards.dm index 0707df46608..e6f38335a82 100644 --- a/code/game/objects/items/weapons/shards.dm +++ b/code/game/objects/items/weapons/shards.dm @@ -36,6 +36,7 @@ ..() /obj/item/weapon/shard/Destroy() + ..() return QDEL_HINT_PUTINPOOL /obj/item/weapon/shard/attackby(obj/item/I, mob/user, params) diff --git a/code/game/objects/items/weapons/storage/fancy.dm b/code/game/objects/items/weapons/storage/fancy.dm index e7986575e8e..200115be01d 100644 --- a/code/game/objects/items/weapons/storage/fancy.dm +++ b/code/game/objects/items/weapons/storage/fancy.dm @@ -182,7 +182,7 @@ /obj/item/weapon/storage/fancy/cigarettes/Destroy() - del(reagents) + qdel(reagents) return ..() diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm index eb5717f43ff..40782759603 100644 --- a/code/game/objects/items/weapons/storage/storage.dm +++ b/code/game/objects/items/weapons/storage/storage.dm @@ -441,6 +441,11 @@ orient2hud() return +/obj/item/weapon/storage/Destroy() + qdel(boxes) + qdel(closer) + return ..() + /obj/item/weapon/storage/emp_act(severity) if(!istype(src.loc, /mob/living)) for(var/obj/O in contents) diff --git a/code/game/objects/items/weapons/tanks/tanks.dm b/code/game/objects/items/weapons/tanks/tanks.dm index 624c1c345c0..f493fa53726 100644 --- a/code/game/objects/items/weapons/tanks/tanks.dm +++ b/code/game/objects/items/weapons/tanks/tanks.dm @@ -33,7 +33,7 @@ /obj/item/weapon/tank/Destroy() if(air_contents) - del(air_contents) + qdel(air_contents) processing_objects.Remove(src) diff --git a/code/game/objects/items/weapons/tanks/watertank.dm b/code/game/objects/items/weapons/tanks/watertank.dm index ff76e6259d3..7dd5365e20a 100644 --- a/code/game/objects/items/weapons/tanks/watertank.dm +++ b/code/game/objects/items/weapons/tanks/watertank.dm @@ -357,7 +357,7 @@ G.temperature = 2 T.air_update_turf() for(var/obj/effect/hotspot/H in T) - H.Kill() + qdel(H) if(G.toxins) G.nitrogen += (G.toxins) G.toxins = 0 diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index 9af24b455f8..7845a7a5217 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -37,6 +37,7 @@ icon='icons/fence-ns.dmi' /obj/structure/grille/Destroy() + ..() return QDEL_HINT_PUTINPOOL //pool grilles /obj/structure/grille/ex_act(severity) @@ -44,7 +45,7 @@ /obj/structure/grille/blob_act() qdel(src) - + /obj/structure/grille/Bumped(atom/user) if(ismob(user)) shock(user, 70) diff --git a/code/game/objects/structures/inflatable.dm b/code/game/objects/structures/inflatable.dm index fe5171d84c9..bbce5440dd8 100644 --- a/code/game/objects/structures/inflatable.dm +++ b/code/game/objects/structures/inflatable.dm @@ -30,9 +30,9 @@ ..() air_update_turf() - Del() + Destroy() air_update_turf() - ..() + return ..() CanPass(atom/movable/mover, turf/target, height=0, air_group=0) return 0 diff --git a/code/game/objects/structures/lattice.dm b/code/game/objects/structures/lattice.dm index 3b23f7df034..b2172cce699 100644 --- a/code/game/objects/structures/lattice.dm +++ b/code/game/objects/structures/lattice.dm @@ -84,4 +84,4 @@ /obj/structure/lattice/singularity_pull(S, current_size) if(current_size >= STAGE_FOUR) - Destroy() \ No newline at end of file + qdel(src) \ No newline at end of file diff --git a/code/game/objects/structures/mineral_doors.dm b/code/game/objects/structures/mineral_doors.dm index 51b0cfb5ea6..37c18f020b1 100644 --- a/code/game/objects/structures/mineral_doors.dm +++ b/code/game/objects/structures/mineral_doors.dm @@ -23,8 +23,9 @@ air_update_turf(1) Destroy() + density = 0 air_update_turf(1) - ..() + return ..() Move() var/turf/T = loc diff --git a/code/game/objects/structures/musician.dm b/code/game/objects/structures/musician.dm index 165436ba3ee..b1a47c474d9 100644 --- a/code/game/objects/structures/musician.dm +++ b/code/game/objects/structures/musician.dm @@ -318,7 +318,7 @@ icon_state = "piano" /obj/structure/piano/Destroy() - del(song) + qdel(song) song = null return ..() diff --git a/code/game/objects/structures/segway.dm b/code/game/objects/structures/segway.dm index a9821c99238..834f7d1c81e 100644 --- a/code/game/objects/structures/segway.dm +++ b/code/game/objects/structures/segway.dm @@ -112,7 +112,7 @@ if(health <= 0) if(buckled_mob) buckled_mob << "The [src.name] was destroyed!" - Destroy() + qdel(src) /obj/item/sec_seg_key name = "security segway key" diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index de51f62114d..06e878f5d2f 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -36,7 +36,7 @@ ..() for(var/obj/structure/table/T in src.loc) if(T != src) - del(T) + qdel(T) update_icon() update_adjacent() @@ -410,7 +410,7 @@ G.affecting.loc = src.loc G.affecting.Weaken(5) visible_message("\red [G.assailant] puts [G.affecting] on \the [src].") - del(W) + qdel(W) return if (istype(W, /obj/item/weapon/wrench)) @@ -562,9 +562,9 @@ /obj/structure/table/woodentable/attackby(obj/item/I as obj, mob/user as mob, params) if (istype(I, /obj/item/stack/tile/grass)) - del(I) + qdel(I) new /obj/structure/table/woodentable/poker( src.loc ) - del(src) + qdel(src) visible_message("[user] adds the grass to the wooden table") @@ -581,7 +581,7 @@ G.affecting.loc = src.loc G.affecting.Weaken(5) visible_message("\red [G.assailant] puts [G.affecting] on the table.") - del(I) + qdel(I) return if (istype(I, /obj/item/weapon/wrench)) user << "\blue Now disassembling the wooden table" @@ -589,7 +589,7 @@ sleep(50) new /obj/item/weapon/table_parts/wood( src.loc ) playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) - del(src) + qdel(src) return if(isrobot(user)) @@ -603,7 +603,7 @@ for(var/mob/O in viewers(user, 4)) O.show_message("\blue The wooden table was sliced apart by [user]!", 1, "\red You hear wood coming apart.", 2) new /obj/item/weapon/table_parts/wood( src.loc ) - del(src) + qdel(src) return if(!(I.flags & ABSTRACT)) @@ -640,7 +640,7 @@ G.affecting.loc = src.loc G.affecting.Weaken(5) visible_message("\red [G.assailant] puts [G.affecting] on the table.") - del(W) + qdel(W) return if (istype(W, /obj/item/weapon/wrench)) user << "\blue Now disassembling the wooden table" @@ -649,7 +649,7 @@ new /obj/item/weapon/table_parts/wood( src.loc ) new /obj/item/stack/tile/grass( src.loc) playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) - del(src) + qdel(src) return if(isrobot(user)) @@ -664,7 +664,7 @@ O.show_message("\blue The wooden table was sliced apart by [user]!", 1, "\red You hear wood coming apart.", 2) new /obj/item/weapon/table_parts/wood( src.loc ) new /obj/item/stack/tile/grass( src.loc) - del(src) + qdel(src) return if(!(W.flags & ABSTRACT)) @@ -697,7 +697,7 @@ user << "You add the glass to \the [src]." playsound(get_turf(src), 'sound/items/Deconstruct.ogg', 50, 1) new /obj/structure/table/glass(loc) - del(src) + qdel(src) else user << "You don't have enough glass! You need at least 2 sheets." return @@ -710,7 +710,7 @@ user << "You dismantle \the [src]." new /obj/item/stack/sheet/metal(loc) new /obj/item/stack/sheet/metal(loc) - del(src) + qdel(src) /obj/structure/table/glass name = "glass table" @@ -745,7 +745,7 @@ G.affecting.loc = src.loc G.affecting.Weaken(7) visible_message("[G.assailant] smashes [G.affecting] onto \the [src]!") - del(I) + qdel(I) src.collapse() return @@ -756,7 +756,7 @@ new /obj/item/weapon/table_parts/glass( src.loc ) new /obj/item/stack/sheet/glass( src.loc ) playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) - del(src) + qdel(src) return if(isrobot(user)) @@ -771,7 +771,7 @@ O.show_message("\The [src] was sliced apart by [user]!", 1, "You hear glass being sliced apart.", 2) new /obj/item/weapon/table_parts/glass( src.loc ) new /obj/item/stack/sheet/glass( src.loc ) - del(src) + qdel(src) return if(!(I.flags & ABSTRACT)) @@ -848,7 +848,7 @@ /obj/structure/rack/proc/destroy() new parts(loc) density = 0 - del(src) + qdel(src) /obj/structure/rack/ex_act(severity) switch(severity) @@ -865,11 +865,11 @@ /obj/structure/rack/blob_act() if(prob(75)) - del(src) + qdel(src) return else if(prob(50)) new /obj/item/weapon/rack_parts(src.loc) - del(src) + qdel(src) return /obj/structure/rack/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) @@ -896,7 +896,7 @@ if (istype(W, /obj/item/weapon/wrench)) new /obj/item/weapon/rack_parts( src.loc ) playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) - del(src) + qdel(src) return if(isrobot(user)) return diff --git a/code/game/supplyshuttle.dm b/code/game/supplyshuttle.dm index 6aefe7468db..407c58f2ae6 100644 --- a/code/game/supplyshuttle.dm +++ b/code/game/supplyshuttle.dm @@ -87,24 +87,22 @@ var/list/mechtoys = list( name = "\improper Airtight plastic flaps" desc = "Heavy duty, airtight, plastic flaps." - New() //set the turf below the flaps to block air - var/turf/T = get_turf(loc) - if(T) - T.blocks_air = 1 + New() + air_update_turf(1) ..() - Destroy() //lazy hack to set the turf to allow air to pass if it's a simulated floor - var/turf/T = get_turf(loc) - if(T) - if(istype(T, /turf/simulated/floor)) - T.blocks_air = 0 - ..() + Destroy() + air_update_turf(1) + return ..() + + CanAtmosPass(turf/T) + return 0 /obj/machinery/computer/supplycomp name = "Supply Shuttle Console" desc = "Used to order supplies." icon = 'icons/obj/computer.dmi' - icon_state = "supply" + icon_screen = "supply" req_access = list(access_cargo) circuit = "/obj/item/weapon/circuitboard/supplycomp" var/temp = null @@ -117,7 +115,7 @@ var/list/mechtoys = list( name = "Supply Ordering Console" desc = "Used to order supplies from cargo staff." icon = 'icons/obj/computer.dmi' - icon_state = "request" + icon_screen = "request" circuit = "/obj/item/weapon/circuitboard/ordercomp" var/temp = null var/reqtime = 0 //Cooldown for requisitions - Quarxink diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm index 1ffea6a4d93..8771ce02bd4 100644 --- a/code/game/turfs/simulated/walls.dm +++ b/code/game/turfs/simulated/walls.dm @@ -34,7 +34,9 @@ /turf/simulated/wall/Del() - for(var/obj/effect/E in src) if(E.name == "Wallrot") del E + for(var/obj/effect/E in src) + if(E.name == "Wallrot") + qdel(E) /turf/simulated/wall/ChangeTurf(var/newtype) for(var/obj/effect/E in src) if(E.name == "Wallrot") del E diff --git a/code/game/turfs/space/space.dm b/code/game/turfs/space/space.dm index 4855c0d1f84..f69fc7d05a7 100644 --- a/code/game/turfs/space/space.dm +++ b/code/game/turfs/space/space.dm @@ -21,6 +21,9 @@ if(config) update_starlight() //MC will initialize all the space turfs that get created before config +/turf/space/Destroy() + return QDEL_HINT_LETMELIVE + /turf/space/proc/update_starlight() if(!config) return if(!config.starlight) diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index 114dbf21cc8..1d212cdc7f6 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -1,7 +1,7 @@ /turf icon = 'icons/turf/floors.dmi' level = 1.0 - luminosity = 0 + luminosity = 1 //for floors, use is_plating(), is_plasteel_floor() and is_light_floor() var/intact = 1 @@ -40,9 +40,8 @@ src.Entered(AM) return - var/area/A = loc - if(!dynamic_lighting || !A.lighting_use_dynamic) - luminosity = 1 +/turf/Destroy() + return QDEL_HINT_HARDDEL_NOW // Adds the adjacent turfs to the current atmos processing /turf/Del() diff --git a/code/modules/assembly/assembly.dm b/code/modules/assembly/assembly.dm index 5cb9211ac07..71cdc55269e 100644 --- a/code/modules/assembly/assembly.dm +++ b/code/modules/assembly/assembly.dm @@ -70,8 +70,8 @@ else if(A.a_right == src) A.a_right = null src.holder = null - ..() - + return ..() + pulsed(var/radio = 0) if(holder && (wires & WIRE_RECEIVE)) activate() diff --git a/code/modules/assembly/holder.dm b/code/modules/assembly/holder.dm index 19fe8d84219..be2516b923d 100644 --- a/code/modules/assembly/holder.dm +++ b/code/modules/assembly/holder.dm @@ -29,7 +29,7 @@ a_left.holder = null if(a_right) a_right.holder = null - ..() + return ..() attach(var/obj/item/device/D, var/obj/item/device/D2, var/mob/user) if((!D)||(!D2)) return 0 diff --git a/code/modules/assembly/shock_kit.dm b/code/modules/assembly/shock_kit.dm index 049b87640ee..885b163e47a 100644 --- a/code/modules/assembly/shock_kit.dm +++ b/code/modules/assembly/shock_kit.dm @@ -10,8 +10,8 @@ flags = CONDUCT /obj/item/assembly/shock_kit/Destroy() - del(part1) - del(part2) + qdel(part1) + qdel(part2) return ..() /obj/item/assembly/shock_kit/attackby(obj/item/weapon/W as obj, mob/user as mob, params) diff --git a/code/modules/atmos_automation/console.dm b/code/modules/atmos_automation/console.dm index 486894179bf..0a558747523 100644 --- a/code/modules/atmos_automation/console.dm +++ b/code/modules/atmos_automation/console.dm @@ -1,6 +1,7 @@ /obj/machinery/computer/general_air_control/atmos_automation icon = 'icons/obj/computer.dmi' - icon_state = "aac" + icon_screen = "area_atmos" + icon_keyboard = "atmos_key" circuit = "/obj/item/weapon/circuitboard/atmos_automation" req_one_access_txt = "24;10" Mtoollink = 1 diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 4f56edeff9d..c8e174573d4 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -407,11 +407,11 @@ datum/preferences dat += "" // user << browse(dat, "window=preferences;size=560x580") - var/datum/browser/popup = new(user, "preferences", "
Character Setup
", 610, 650) + var/datum/browser/popup = new(user, "preferences", "
Character Setup
", 640, 750) popup.set_content(dat) popup.open(0) - proc/SetChoices(mob/user, limit = 14, list/splitJobs = list("Chief Engineer","Research Director","Captain"), width = 1025, height = 800) + proc/SetChoices(mob/user, limit = 12, list/splitJobs = list("Civilian","Research Director","AI","Bartender"), width = 755, height = 780) if(!job_master) return @@ -444,7 +444,6 @@ datum/preferences for(var/i = 0, i < (limit - index), i += 1) HTML += "  " HTML += "" - HTML += "
" index = 0 HTML += "
" diff --git a/code/modules/client/preferences_toggles.dm b/code/modules/client/preferences_toggles.dm index 2831d63a652..b407b153374 100644 --- a/code/modules/client/preferences_toggles.dm +++ b/code/modules/client/preferences_toggles.dm @@ -69,6 +69,24 @@ src << "You will [(prefs.toggles & CHAT_PRAYER) ? "now" : "no longer"] see prayerchat." feedback_add_details("admin_verb","TP") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! +/client/verb/togglescoreboard() + set name = "Hide/Display End Round Scoreboard" + set category = "Preferences" + set desc = "Toggles displaying end of round scoreboard" + prefs.toggles ^= DISABLE_SCOREBOARD + prefs.save_preferences(src) + src << "You will [(prefs.toggles & DISABLE_SCOREBOARD) ? "no longer" : "now"] see the end of round scoreboard." + feedback_add_details("admin_verb","TScoreboard") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + +/client/verb/togglekarmareminder() + set name = "Hide/Display End Round Karma Reminder" + set category = "Preferences" + set desc = "Toggles displaying end of round karma reminder" + prefs.toggles ^= DISABLE_KARMA_REMINDER + prefs.save_preferences(src) + src << "You will [(prefs.toggles & DISABLE_KARMA_REMINDER) ? "no longer" : "now"] see the end of round karma reminder." + feedback_add_details("admin_verb","TKarmabugger") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + /client/verb/toggletitlemusic() set name = "Hear/Silence LobbyMusic" set category = "Preferences" diff --git a/code/modules/computer3/laptop.dm b/code/modules/computer3/laptop.dm index bd45c044748..6880935e495 100644 --- a/code/modules/computer3/laptop.dm +++ b/code/modules/computer3/laptop.dm @@ -180,13 +180,13 @@ else stat &= ~NOPOWER - Del() + Destroy() if(istype(loc,/obj/item/device/laptop)) var/obj/O = loc spawn(5) if(O) - del O - ..() + qdel(O) + return ..() AltClick() diff --git a/code/modules/customitems/item_defines.dm b/code/modules/customitems/item_defines.dm index fa908263eac..20dcb930e92 100644 --- a/code/modules/customitems/item_defines.dm +++ b/code/modules/customitems/item_defines.dm @@ -75,6 +75,16 @@ icon_state = "zeldacrowbar" item_state = "crowbar" +/obj/item/weapon/claymore/fluff //MrBarrelrolll: Maximus Greenwood + name = "Greenwood's Blade" + desc = "A replica claymore with strange markings scratched into the blade." + force = 5 + sharp = 0 + edge = 0 + +/obj/item/weapon/claymore/fluff/IsShield() + return 0 + ////////////////////////////////// //////////// Clothing //////////// ////////////////////////////////// diff --git a/code/modules/food/customizables.dm b/code/modules/food/customizables.dm index 0616f036bab..c1bbcdb50dc 100644 --- a/code/modules/food/customizables.dm +++ b/code/modules/food/customizables.dm @@ -377,10 +377,10 @@ T.pixel_y = (ingredients.len * 2)+1 overlays += T -/obj/item/weapon/reagent_containers/food/snacks/customizable/Del() +/obj/item/weapon/reagent_containers/food/snacks/customizable/Destroy() for(var/obj/item/O in ingredients) - del(O) - ..() + qdel(O) + return ..() /obj/item/weapon/reagent_containers/food/snacks/customizable/examine() ..() diff --git a/code/modules/lighting/lighting_overlay.dm b/code/modules/lighting/lighting_overlay.dm index 56d05576f45..d40997a6fcd 100644 --- a/code/modules/lighting/lighting_overlay.dm +++ b/code/modules/lighting/lighting_overlay.dm @@ -25,6 +25,9 @@ . = ..() verbs.Cut() + var/turf/T = loc //If this runtimes atleast we'll know what's creating overlays outside of turfs. + T.luminosity = 0 + /atom/movable/lighting_overlay/proc/get_clamped_lum(var/minlum = 0, var/maxlum = 1) var/lum = max(lum_r, lum_g, lum_b) if(lum <= minlum) diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index deec9c8ea7e..713a6dcc6b3 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -89,7 +89,7 @@ var/list/image/ghost_darkness_images = list() //this is a list of images for thi /mob/dead/observer/Destroy() if (ghostimage) ghost_darkness_images -= ghostimage - del(ghostimage) + qdel(ghostimage) ghostimage = null updateallghostimages() return ..() diff --git a/code/modules/mob/holder.dm b/code/modules/mob/holder.dm index a441cfcf5b6..f67b3b9f7e1 100644 --- a/code/modules/mob/holder.dm +++ b/code/modules/mob/holder.dm @@ -9,9 +9,9 @@ ..() processing_objects.Add(src) -/obj/item/weapon/holder/Del() +/obj/item/weapon/holder/Destroy() processing_objects.Remove(src) - ..() + return ..() /obj/item/weapon/holder/process() diff --git a/code/modules/mob/living/carbon/brain/MMI.dm b/code/modules/mob/living/carbon/brain/MMI.dm index 8b2060cf554..937fe0a0ad7 100644 --- a/code/modules/mob/living/carbon/brain/MMI.dm +++ b/code/modules/mob/living/carbon/brain/MMI.dm @@ -165,3 +165,12 @@ if(3) brainmob.emp_damage += rand(0,10) ..() + +/obj/item/device/mmi/Destroy() + if(isrobot(loc)) + var/mob/living/silicon/robot/borg = loc + borg.mmi = null + if(brainmob) + qdel(brainmob) + brainmob = null + return ..() diff --git a/code/modules/mob/living/carbon/brain/brain.dm b/code/modules/mob/living/carbon/brain/brain.dm index 84e92b2efa9..7dedb49e812 100644 --- a/code/modules/mob/living/carbon/brain/brain.dm +++ b/code/modules/mob/living/carbon/brain/brain.dm @@ -20,7 +20,7 @@ if(stat!=DEAD) //If not dead. death(1) //Brains can die again. AND THEY SHOULD AHA HA HA HA HA HA ghostize() //Ghostize checks for key so nothing else is necessary. - ..() + return ..() say_understands(var/other)//Goddamn is this hackish, but this say code is so odd if (istype(other, /mob/living/silicon/ai)) diff --git a/code/modules/mob/living/carbon/brain/brain_item.dm b/code/modules/mob/living/carbon/brain/brain_item.dm index 4472f9329c9..22e38613553 100644 --- a/code/modules/mob/living/carbon/brain/brain_item.dm +++ b/code/modules/mob/living/carbon/brain/brain_item.dm @@ -88,4 +88,10 @@ name = "chem" desc = "A tightly furled roll of paper, covered with indecipherable runes." icon = 'icons/obj/wizard.dmi' - icon_state = "scroll" \ No newline at end of file + icon_state = "scroll" + +/obj/item/organ/brain/Destroy() //copypasted from MMIs. + if(brainmob) + qdel(brainmob) + brainmob = null + return ..() diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 609c5afe269..aec5a9ad082 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -6,6 +6,13 @@ mob/living update_hud() return +/mob/living/carbon/Destroy() + for(var/atom/movable/guts in internal_organs) + qdel(guts) + for(var/atom/movable/food in stomach_contents) + qdel(food) + return ..() + /mob/living/carbon/Life() ..() diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 93199dce0c2..3fabd2ef851 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -50,6 +50,12 @@ dna.ready_dna(src) UpdateAppearance() +/mob/living/carbon/human/Destroy() + for(var/atom/movable/organelle in organs) + qdel(organelle) + organs = list() + return ..() + /mob/living/carbon/human/dummy real_name = "Test Dummy" status_flags = GODMODE|CANPUSH diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 2cbe1e9f8ce..951e9f03563 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -118,8 +118,6 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc handle_pain() - handle_medical_side_effects() - handle_heartbeat() handle_heartattack() diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index ca944feb713..4d9661c92d7 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -1,4 +1,8 @@ +/mob/living/Destroy() + ..() + return QDEL_HINT_HARDDEL_NOW + /mob/living/Life() ..() if (notransform) return diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 5324628ef90..63573fb70b0 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -243,7 +243,7 @@ var/list/ai_verbs_default = list( /obj/machinery/ai_powersupply/New(var/mob/living/silicon/ai/ai=null) powered_ai = ai if(isnull(powered_ai)) - Del() + qdel(src) loc = powered_ai.loc use_power(1) // Just incase we need to wake up the power system. @@ -252,7 +252,7 @@ var/list/ai_verbs_default = list( /obj/machinery/ai_powersupply/process() if(!powered_ai || powered_ai.stat & DEAD) - Del() + qdel(src) if(!powered_ai.anchored) loc = powered_ai.loc use_power = 0 diff --git a/code/modules/mob/living/silicon/ai/freelook/eye.dm b/code/modules/mob/living/silicon/ai/freelook/eye.dm index bc775bfeb42..dfa605a1fa6 100644 --- a/code/modules/mob/living/silicon/ai/freelook/eye.dm +++ b/code/modules/mob/living/silicon/ai/freelook/eye.dm @@ -26,7 +26,7 @@ /mob/aiEye/Destroy() if (ghostimage) ghost_darkness_images -= ghostimage - del(ghostimage) + qdel(ghostimage) ghostimage = null; updateallghostimages() return ..() @@ -100,10 +100,10 @@ spawn(5) eyeobj.loc = src.loc -/mob/living/silicon/ai/Del() +/mob/living/silicon/ai/Destroy() eyeobj.ai = null - del(eyeobj) // No AI, no Eye - ..() + qdel(eyeobj) // No AI, no Eye + return ..() /atom/proc/move_camera_by_click() if(istype(usr, /mob/living/silicon/ai)) diff --git a/code/modules/mob/living/silicon/ai/freelook/update_triggers.dm b/code/modules/mob/living/silicon/ai/freelook/update_triggers.dm index 328bd8c28c9..44e358da9d6 100644 --- a/code/modules/mob/living/silicon/ai/freelook/update_triggers.dm +++ b/code/modules/mob/living/silicon/ai/freelook/update_triggers.dm @@ -23,10 +23,10 @@ // STRUCTURES -/obj/structure/Del() +/obj/structure/Destroy() if(ticker) cameranet.updateVisibility(src) - ..() + return ..() /obj/structure/New() ..() @@ -35,10 +35,10 @@ // EFFECTS -/obj/effect/Del() +/obj/effect/Destroy() if(ticker) cameranet.updateVisibility(src) - ..() + return ..() /obj/effect/New() ..() @@ -99,11 +99,11 @@ if(open_networks.len) //If there is at least one open network, chunk is available for AI usage. cameranet.addCamera(src) -/obj/machinery/camera/Del() +/obj/machinery/camera/Destroy() cameranet.cameras -= src var/list/open_networks = difflist(network,restricted_camera_networks) if(open_networks.len) cameranet.removeCamera(src) - ..() + return ..() #undef BORG_CAMERA_BUFFER \ No newline at end of file diff --git a/code/modules/mob/living/silicon/robot/component.dm b/code/modules/mob/living/silicon/robot/component.dm index 25b6cddc1c7..9673a766f72 100644 --- a/code/modules/mob/living/silicon/robot/component.dm +++ b/code/modules/mob/living/silicon/robot/component.dm @@ -24,7 +24,7 @@ /datum/robot_component/proc/destroy() if(wrapped) - del wrapped + qdel(wrapped) wrapped = new/obj/item/broken_device diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 3ae26fea4cf..b826e2e0a34 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -174,11 +174,19 @@ var/list/robot_verbs_default = list( //If there's an MMI in the robot, have it ejected when the mob goes away. --NEO //Improved /N /mob/living/silicon/robot/Destroy() - if(mmi)//Safety for when a cyborg gets dust()ed. Or there is no MMI inside. + if(mmi && mind)//Safety for when a cyborg gets dust()ed. Or there is no MMI inside. var/turf/T = get_turf(loc)//To hopefully prevent run time errors. if(T) mmi.loc = T - if(mind) mind.transfer_to(mmi.brainmob) + if(mmi.brainmob) + mind.transfer_to(mmi.brainmob) + mmi.update_icon() + else + src << "Oops! Something went very wrong, your MMI was unable to receive your mind. You have been ghosted. Please make a bug report so we can fix this bug." + ghostize() + error("A borg has been destroyed, but its MMI lacked a brainmob, so the mind could not be transferred. Player: [ckey].") mmi = null + if(connected_ai) + connected_ai.connected_robots -= src return ..() /mob/living/silicon/robot/proc/pick_module() diff --git a/code/modules/mob/living/simple_animal/friendly/spiderbot.dm b/code/modules/mob/living/simple_animal/friendly/spiderbot.dm index e66fa1754c7..a09f843b118 100644 --- a/code/modules/mob/living/simple_animal/friendly/spiderbot.dm +++ b/code/modules/mob/living/simple_animal/friendly/spiderbot.dm @@ -216,8 +216,8 @@ held_item = null robogibs(src.loc, viruses) - src.Destroy() - return + qdel(src) + //Cannibalized from the parrot mob. ~Zuhayr /mob/living/simple_animal/spiderbot/verb/drop_held_item() diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm index ee95a6d06d3..2d2327c190c 100644 --- a/code/modules/mob/living/simple_animal/parrot.dm +++ b/code/modules/mob/living/simple_animal/parrot.dm @@ -74,11 +74,10 @@ var/obj/parrot_perch = null var/obj/desired_perches = list(/obj/structure/computerframe, /obj/structure/displaycase, \ /obj/structure/filingcabinet, /obj/machinery/teleport, \ - /obj/machinery/computer, /obj/machinery/clonepod, \ + /obj/machinery/suit_storage_unit, /obj/machinery/clonepod, \ /obj/machinery/dna_scannernew, /obj/machinery/telecomms, \ /obj/machinery/nuclearbomb, /obj/machinery/particle_accelerator, \ - /obj/machinery/recharge_station, /obj/machinery/smartfridge, \ - /obj/machinery/suit_storage_unit) + /obj/machinery/recharge_station, /obj/machinery/smartfridge) //Parrots are kleptomaniacs. This variable ... stores the item a parrot is holding. var/obj/item/held_item = null diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index e0c6b9128de..1a42d6f9614 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -2,6 +2,9 @@ mob_list -= src dead_mob_list -= src living_mob_list -= src + qdel(hud_used) + if(mind && mind.current == src) + spellremove(src) ghostize() return ..() diff --git a/code/modules/mob/mob_grab.dm b/code/modules/mob/mob_grab.dm index de745ec80b4..a49656dbe59 100644 --- a/code/modules/mob/mob_grab.dm +++ b/code/modules/mob/mob_grab.dm @@ -404,18 +404,13 @@ /obj/item/weapon/grab/dropped() qdel(src) -/obj/item/weapon/grab/Del() - //make sure the grabbed_by list doesn't fill up with nulls - if(affecting) affecting.grabbed_by -= src - ..() - /obj/item/weapon/grab/Destroy() if(affecting) affecting.pixel_x = 0 affecting.pixel_y = 0 //used to be an animate, not quick enough for del'ing affecting.layer = initial(affecting.layer) affecting.grabbed_by -= src - del(hud) + qdel(hud) return ..() #undef EAT_TIME_XENO diff --git a/code/modules/mob/spirit/spirit.dm b/code/modules/mob/spirit/spirit.dm index c90f0f569b7..b5295a0d85f 100644 --- a/code/modules/mob/spirit/spirit.dm +++ b/code/modules/mob/spirit/spirit.dm @@ -29,38 +29,38 @@ mob/spirit/is_active() if (client && client.inactivity <= 10 * 60 * 10) return TRUE return FALSE - - + + mob/spirit/New() sight |= SEE_TURFS | SEE_MOBS | SEE_OBJS | SEE_SELF see_invisible = SEE_SPIRITS see_in_dark = 100 loc = pick(latejoin) - + // no nameless spirits if (!name) name = "Boogyman" - + spirits+=src - + ..() - -mob/spirit/Del() + +mob/spirit/Destroy() spirits-=src - ..() - - + return ..() + + mob/spirit/Topic(href, href_list) - + if(usr != src) return ..() - + usr << "Spirit Href = [href]" for (var/tempref in href_list) usr << "Spirit href list [tempref] = [href_list[tempref]]" - + if (href_list["track"]) usr << "Got to tracking." var/mob/target = locate(href_list["track"]) in mob_list diff --git a/code/modules/mob/spirit/viewpoint.dm b/code/modules/mob/spirit/viewpoint.dm index 15c4937b43d..85599a52b62 100644 --- a/code/modules/mob/spirit/viewpoint.dm +++ b/code/modules/mob/spirit/viewpoint.dm @@ -23,11 +23,10 @@ var/obj/cult_viewpoint/list/cult_viewpoints = list() ..() -/obj/cult_viewpoint/Del() +/obj/cult_viewpoint/Destroy() processing_objects.Remove(src) cult_viewpoints-=src - ..() - return + return ..() // VERBS diff --git a/code/modules/ninja/energy_katana.dm b/code/modules/ninja/energy_katana.dm index 61269d6b85a..2acb3109769 100644 --- a/code/modules/ninja/energy_katana.dm +++ b/code/modules/ninja/energy_katana.dm @@ -73,12 +73,6 @@ spark_system.set_up(5, 0, src) spark_system.attach(src) - -/obj/item/weapon/katana/energy/Del() - qdel(spark_system) - spark_system = null - ..() - /obj/item/weapon/katana/energy/Destroy() qdel(spark_system) spark_system = null diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index d8570e289d2..78bda4169b3 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -1330,6 +1330,9 @@ obj/machinery/power/apc/proc/autoset(var/val, var/on) area.power_change() if(occupant) malfvacate(1) + qdel(wires) + if(cell) + qdel(cell) return ..() /obj/machinery/power/apc/proc/shock(mob/user, prb) diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index f6fa448bb3e..e5951e82c79 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -201,7 +201,7 @@ /obj/structure/cable/singularity_pull(S, current_size) if(current_size >= STAGE_FIVE) - Destroy() + qdel(src) // the cable coil object, used for laying cable diff --git a/code/modules/power/singularity/field_generator.dm b/code/modules/power/singularity/field_generator.dm index 826f75c140e..a616a7b3381 100644 --- a/code/modules/power/singularity/field_generator.dm +++ b/code/modules/power/singularity/field_generator.dm @@ -344,10 +344,10 @@ field_generator power level display //I want to avoid using global variables. spawn(1) var/temp = 1 //stops spam - for(var/obj/singularity/O in machines) + for(var/obj/singularity/O in singularities) if(O.last_warning && temp) if((world.time - O.last_warning) > 50) //to stop message-spam temp = 0 msg_admin_attack("A singulo exists and a containment field has failed.",1) investigate_log("has failed whilst a singulo exists.","singulo") - O.last_warning = world.time + O.last_warning = world.time \ No newline at end of file diff --git a/code/modules/power/singularity/generator.dm b/code/modules/power/singularity/generator.dm index ef3fb514b52..0a27b24e45e 100644 --- a/code/modules/power/singularity/generator.dm +++ b/code/modules/power/singularity/generator.dm @@ -27,7 +27,7 @@ investigate_log("[admin_message] at [x],[y],[z]","singulo") new /obj/singularity/(T, 50) - if(src) del(src) + if(src) qdel(src) /obj/machinery/the_singularitygen/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/weapon/wrench)) diff --git a/code/modules/power/singularity/particle_accelerator/particle.dm b/code/modules/power/singularity/particle_accelerator/particle.dm index 540aee0b692..5f858d92448 100644 --- a/code/modules/power/singularity/particle_accelerator/particle.dm +++ b/code/modules/power/singularity/particle_accelerator/particle.dm @@ -8,15 +8,7 @@ anchored = 1 density = 1 var/movement_range = 10 - var/energy = 10 //energy in eV - var/mega_energy = 0 //energy in MeV - var/frequency = 1 - var/ionizing = 0 - var/particle_type - var/additional_particles = 0 - var/turf/target - var/turf/source - var/movetotarget = 1 + var/energy = 10 /obj/effect/accelerated_particle/weak movement_range = 8 @@ -26,10 +18,15 @@ movement_range = 15 energy = 15 +/obj/effect/accelerated_particle/powerful + movement_range = 20 + energy = 50 + /obj/effect/accelerated_particle/New(loc, dir = 2) src.loc = loc src.dir = dir + if(movement_range > 20) movement_range = 20 spawn(0) @@ -43,22 +40,6 @@ toxmob(A) if((istype(A,/obj/machinery/the_singularitygen))||(istype(A,/obj/singularity/))) A:energy += energy -/* - else if( istype(A,/obj/effect/rust_particle_catcher) ) - var/obj/effect/rust_particle_catcher/collided_catcher = A - if(particle_type && particle_type != "neutron") - if(collided_catcher.AddParticles(particle_type, 1 + additional_particles)) - collided_catcher.parent.AddEnergy(energy,mega_energy) - del (src) - else if( istype(A,/obj/machinery/power/rust_core) ) - var/obj/machinery/power/rust_core/collided_core = A - if(particle_type && particle_type != "neutron") - if(collided_core.AddParticles(particle_type, 1 + additional_particles)) - var/energy_loss_ratio = abs(collided_core.owned_field.frequency - frequency) / 1e9 - collided_core.owned_field.mega_energy += mega_energy - mega_energy * energy_loss_ratio - collided_core.owned_field.energy += energy - energy * energy_loss_ratio - del (src) -*/ return @@ -75,35 +56,17 @@ /obj/effect/accelerated_particle/proc/toxmob(var/mob/living/M) - /*var/radiation = (energy*2) - if(istype(M,/mob/living/carbon/human)) - if(M:wear_suit) //TODO: check for radiation protection - radiation = round(radiation/2,1) - if(istype(M,/mob/living/carbon/monkey)) - if(M:wear_suit) //TODO: check for radiation protection - radiation = round(radiation/2,1)*/ M.apply_effect((energy*6),IRRADIATE,0) M.updatehealth() - //M << "\red You feel odd." return /obj/effect/accelerated_particle/proc/move(var/lag) - if(target) - if(movetotarget) - if(!step_towards(src,target)) - src.loc = get_step(src, get_dir(src,target)) - if(get_dist(src,target) < 1) - movetotarget = 0 - else - if(!step(src, get_step_away(src,source))) - src.loc = get_step(src, get_step_away(src,source)) - else - if(!step(src,dir)) - src.loc = get_step(src,dir) + if(!step(src,dir)) + src.loc = get_step(src,dir) movement_range-- if(movement_range <= 0) - del(src) + qdel(src) else sleep(lag) move(lag) diff --git a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm index 0163786e65e..09390df300c 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm @@ -71,6 +71,12 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin var/strength = null var/desc_holder = null +/obj/structure/particle_accelerator/Destroy() + construction_state = 0 + if(master) + master.part_scan() + return ..() + /obj/structure/particle_accelerator/end_cap name = "Alpha Particle Generation Array" desc_holder = "This is where Alpha particles are generated from \[REDACTED\]" @@ -87,7 +93,9 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin set category = "Object" set src in oview(1) - if (src.anchored || usr:stat) + if(usr.stat || !usr.canmove || usr.restrained()) + return + if (src.anchored) usr << "It is fastened to the floor!" return 0 src.dir = turn(src.dir, 270) @@ -98,7 +106,9 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin set category = "Object" set src in oview(1) - if (src.anchored || usr:stat) + if(usr.stat || !usr.canmove || usr.restrained()) + return + if (src.anchored) usr << "It is fastened to the floor!" return 0 src.dir = turn(src.dir, 90) @@ -119,7 +129,6 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin ..() return - /obj/structure/particle_accelerator/attackby(obj/item/W, mob/user, params) if(istool(W)) if(src.process_tool_hit(W,user)) @@ -134,6 +143,7 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin master.toggle_power() investigate_log("was moved whilst active; it powered down.","singulo") + /obj/structure/particle_accelerator/ex_act(severity) switch(severity) if(1.0) @@ -153,7 +163,7 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin /obj/structure/particle_accelerator/blob_act() if(prob(50)) - del(src) + qdel(src) return @@ -206,7 +216,7 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin switch(src.construction_state)//TODO:Might be more interesting to have it need several parts rather than a single list of steps if(0) - if(iswrench(O)) + if(iswrench(O) && !isinspace()) playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1) src.anchored = 1 user.visible_message("[user.name] secures the [src.name] to the floor.", \ @@ -220,10 +230,14 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin "You remove the external bolts.") temp_state-- else if(iscoil(O)) - if(O:use(1,user)) + var/obj/item/stack/cable_coil/C = O + if(C.use(1)) user.visible_message("[user.name] adds wires to the [src.name].", \ "You add some wires.") temp_state++ + else + user << "You need one length of cable to wire the [src.name]!" + return if(2) if(iswirecutter(O))//TODO:Shock user if its on? user.visible_message("[user.name] removes some wires from the [src.name].", \ @@ -273,7 +287,9 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin set category = "Object" set src in oview(1) - if (src.anchored || usr:stat) + if(usr.stat || !usr.canmove || usr.restrained()) + return + if (src.anchored) usr << "It is fastened to the floor!" return 0 src.dir = turn(src.dir, 270) @@ -284,7 +300,9 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin set category = "Object" set src in oview(1) - if (src.anchored || usr:stat) + if(usr.stat || !usr.canmove || usr.restrained()) + return + if (src.anchored) usr << "It is fastened to the floor!" return 0 src.dir = turn(src.dir, 90) @@ -308,7 +326,6 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin ..() return - /obj/machinery/particle_accelerator/attackby(obj/item/W, mob/user, params) if(istool(W)) if(src.process_tool_hit(W,user)) @@ -335,7 +352,7 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin /obj/machinery/particle_accelerator/blob_act() if(prob(50)) - del(src) + qdel(src) return diff --git a/code/modules/power/singularity/particle_accelerator/particle_control.dm b/code/modules/power/singularity/particle_accelerator/particle_control.dm index 5501b56010f..51c3f2ab769 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_control.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_control.dm @@ -1,7 +1,7 @@ //This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:33 /obj/machinery/particle_accelerator/control_box - name = "Particle Accelerator Control Computer" + name = "Particle Accelerator Control Console" desc = "This controls the density of the particles." icon = 'icons/obj/machines/particle_accelerator.dmi' icon_state = "control_box" @@ -26,6 +26,10 @@ connected_parts = list() ..() +/obj/machinery/particle_accelerator/control_box/Destroy() + if(active) + toggle_power() + return ..() /obj/machinery/particle_accelerator/control_box/attack_hand(mob/user as mob) if(construction_state >= 3) @@ -87,8 +91,10 @@ if(href_list["togglep"]) if(!wires.IsIndexCut(PARTICLE_TOGGLE_WIRE)) src.toggle_power() + else if(href_list["scan"]) src.part_scan() + else if(href_list["strengthup"]) if(!wires.IsIndexCut(PARTICLE_STRENGTH_WIRE)) add_strength() @@ -233,9 +239,8 @@ user.set_machine(src) var/dat = "" - dat += "Particle Accelerator Control Panel
" dat += "Close

" - dat += "Status:
" + dat += "

Status

" if(!assembled) dat += "Unable to detect all parts!
" dat += "Run Scan

" @@ -250,6 +255,10 @@ dat += "Particle Strength: [src.strength] " dat += "--|++

" - user << browse(dat, "window=pacontrol;size=420x500") - onclose(user, "pacontrol") + //user << browse(dat, "window=pacontrol;size=420x500") + //onclose(user, "pacontrol") + var/datum/browser/popup = new(user, "pacontrol", name, 420, 500) + popup.set_content(dat) + popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) + popup.open() return \ No newline at end of file diff --git a/code/modules/power/singularity/particle_accelerator/particle_emitter.dm b/code/modules/power/singularity/particle_accelerator/particle_emitter.dm index f91b92a55e9..8e260a1115d 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_emitter.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_emitter.dm @@ -43,6 +43,8 @@ A = new/obj/effect/accelerated_particle(T, dir) if(2) A = new/obj/effect/accelerated_particle/strong(T, dir) + if(3) + A = new/obj/effect/accelerated_particle/powerful(T, dir) if(A) A.dir = src.dir return 1 diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm index a1d86e5f6dd..fa8c14fe1b0 100644 --- a/code/modules/power/singularity/singularity.dm +++ b/code/modules/power/singularity/singularity.dm @@ -30,6 +30,7 @@ /obj/singularity/New(loc, var/starting_energy = 50, var/temp = 0) //CARN: admin-alert for chuckle-fuckery. + singularities += src admin_investigate_setup() src.energy = starting_energy @@ -43,6 +44,7 @@ /obj/singularity/Destroy() processing_objects.Remove(src) + singularities -= src return ..() /obj/singularity/Move(atom/newloc, direct) diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index 482395a852d..8b309343c5f 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -72,7 +72,7 @@ /obj/machinery/power/supermatter_shard/Destroy() investigate_log("has been destroyed.", "supermatter") qdel(radio) - . = ..() + return ..() /obj/machinery/power/supermatter_shard/proc/explode() investigate_log("has exploded.", "supermatter") diff --git a/code/modules/projectiles/guns/alien.dm b/code/modules/projectiles/guns/alien.dm index 2f369244afc..0c649df0ca9 100644 --- a/code/modules/projectiles/guns/alien.dm +++ b/code/modules/projectiles/guns/alien.dm @@ -20,9 +20,9 @@ processing_objects.Add(src) last_regen = world.time -/obj/item/weapon/gun/launcher/spikethrower/Del() +/obj/item/weapon/gun/launcher/spikethrower/Destroy() processing_objects.Remove(src) - ..() + return ..() /obj/item/weapon/gun/launcher/spikethrower/process() diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm index 73ae2c07d27..25a83332d9a 100644 --- a/code/modules/projectiles/guns/energy/laser.dm +++ b/code/modules/projectiles/guns/energy/laser.dm @@ -135,7 +135,7 @@ obj/item/weapon/gun/energy/laser/retro Destroy() processing_objects.Remove(src) - ..() + return ..() process() @@ -172,7 +172,7 @@ obj/item/weapon/gun/energy/laser/retro Destroy() processing_objects.Remove(src) - ..() + return ..() process() diff --git a/code/modules/projectiles/guns/energy/nuclear.dm b/code/modules/projectiles/guns/energy/nuclear.dm index 31add5f22c9..5f49ec3f86f 100644 --- a/code/modules/projectiles/guns/energy/nuclear.dm +++ b/code/modules/projectiles/guns/energy/nuclear.dm @@ -54,7 +54,7 @@ Destroy() processing_objects.Remove(src) - ..() + return ..() process() diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index c34048c6970..9f49dcf7fb6 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -48,9 +48,9 @@ ..() processing_objects.Add(src) -/obj/item/weapon/gun/energy/floragun/Del() +/obj/item/weapon/gun/energy/floragun/Destroy() processing_objects.Remove(src) - ..() + return ..() /obj/item/weapon/gun/energy/floragun/process() charge_tick++ @@ -109,7 +109,7 @@ Destroy() processing_objects.Remove(src) - ..() + return ..() process() charge_tick++ diff --git a/code/modules/projectiles/guns/energy/temperature.dm b/code/modules/projectiles/guns/energy/temperature.dm index ffc680a151a..5db53cc5a84 100644 --- a/code/modules/projectiles/guns/energy/temperature.dm +++ b/code/modules/projectiles/guns/energy/temperature.dm @@ -19,7 +19,7 @@ Destroy() processing_objects.Remove(src) - ..() + return ..() attack_self(mob/living/user as mob) diff --git a/code/modules/projectiles/guns/projectile/crossbow.dm b/code/modules/projectiles/guns/projectile/crossbow.dm index 012f0f7dc3e..3ddce50ceac 100644 --- a/code/modules/projectiles/guns/projectile/crossbow.dm +++ b/code/modules/projectiles/guns/projectile/crossbow.dm @@ -45,7 +45,7 @@ user << "[src] shatters into a scattering of overstressed metal shards as it leaves the crossbow." var/obj/item/weapon/shard/shrapnel/S = new() S.loc = get_turf(src) - src.Destroy() + qdel(src) /obj/item/weapon/arrow/baguette name = "baguette" diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm index cf74904bed0..f8d2cfd5620 100644 --- a/code/modules/projectiles/projectile/beams.dm +++ b/code/modules/projectiles/projectile/beams.dm @@ -76,6 +76,7 @@ return //don't want the emitters to miss /obj/item/projectile/beam/emitter/Destroy() + ..() return QDEL_HINT_PUTINPOOL /obj/item/projectile/lasertag diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index 11fb7facc5f..63e1d384a4d 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -104,7 +104,7 @@ /obj/item/projectile/bullet/incendiary/shell/Move() ..() var/turf/location = get_turf(src) - new/obj/effect/hotspot(location) + PoolOrNew(/obj/effect/hotspot, location) location.hotspot_expose(700, 50, 1) /obj/item/projectile/bullet/incendiary/shell/dragonsbreath diff --git a/code/modules/reagents/Chemistry-Holder.dm b/code/modules/reagents/Chemistry-Holder.dm index b96939ac697..2acbe837400 100644 --- a/code/modules/reagents/Chemistry-Holder.dm +++ b/code/modules/reagents/Chemistry-Holder.dm @@ -637,7 +637,7 @@ atom/proc/create_reagents(var/max_vol) /datum/reagents/Destroy() for(var/datum/reagent/reagent in reagent_list) - reagent.Destroy() + qdel(reagent) if(my_atom) my_atom = null diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index ef6d0f4437e..9ce3ac077ba 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -166,7 +166,7 @@ datum if(src.data["virus"]) var/datum/disease/D = src.data["virus"] D.cure(0) - ..() + return ..() */ /* diff --git a/code/modules/reagents/newchem/drugs.dm b/code/modules/reagents/newchem/drugs.dm index 82d945c5403..3ace84f1a5c 100644 --- a/code/modules/reagents/newchem/drugs.dm +++ b/code/modules/reagents/newchem/drugs.dm @@ -90,7 +90,7 @@ /datum/chemical_reaction/crank/on_reaction(var/datum/reagents/holder, var/created_volume) var/turf/T = get_turf(holder.my_atom) for(var/turf/turf in range(1,T)) - new /obj/effect/hotspot(turf) + PoolOrNew(/obj/effect/hotspot, turf) explosion(T,0,0,2) return diff --git a/code/modules/reagents/newchem/pyro.dm b/code/modules/reagents/newchem/pyro.dm index 089a7088f66..2f245243bb5 100644 --- a/code/modules/reagents/newchem/pyro.dm +++ b/code/modules/reagents/newchem/pyro.dm @@ -46,7 +46,7 @@ /datum/chemical_reaction/clf3/on_reaction(var/datum/reagents/holder, var/created_volume) var/turf/T = get_turf(holder.my_atom) for(var/turf/turf in range(1,T)) - new /obj/effect/hotspot(turf) + PoolOrNew(/obj/effect/hotspot, turf) return /datum/reagent/clf3/reaction_turf(var/turf/simulated/T, var/volume) @@ -59,13 +59,13 @@ if(prob(volume/10)) F.make_plating() if(istype(F, /turf/simulated/floor/)) - new /obj/effect/hotspot(F) + PoolOrNew(/obj/effect/hotspot, F) if(istype(T, /turf/simulated/wall/)) var/turf/simulated/wall/W = T if(prob(volume/10)) W.ChangeTurf(/turf/simulated/floor) if(istype(T, /turf/simulated/shuttle/)) - new /obj/effect/hotspot(T) + PoolOrNew(/obj/effect/hotspot, T) return /datum/reagent/clf3/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume) @@ -429,7 +429,7 @@ datum/reagent/blackpowder/reaction_turf(var/turf/T, var/volume) //oh shit return var/turf/simulated/T = get_turf(holder.my_atom) for(var/turf/simulated/turf in range(created_volume/10,T)) - new /obj/effect/hotspot(turf) + PoolOrNew(/obj/effect/hotspot, turf) return /datum/reagent/phlogiston/on_mob_life(var/mob/living/M as mob) @@ -593,7 +593,7 @@ datum/reagent/firefighting_foam/reaction_obj(var/obj/O, var/volume) lowertemp.temperature = max( min(lowertemp.temperature-2000,lowertemp.temperature / 2) ,0) lowertemp.react() T.assume_air(lowertemp) - del(hotspot) + qdel(hotspot) return /datum/chemical_reaction/clf3_firefighting diff --git a/code/modules/reagents/reagent_containers/food/condiment.dm b/code/modules/reagents/reagent_containers/food/condiment.dm index 49316a33e92..f79dc8ded09 100644 --- a/code/modules/reagents/reagent_containers/food/condiment.dm +++ b/code/modules/reagents/reagent_containers/food/condiment.dm @@ -190,16 +190,16 @@ if(istype(target, /obj/item/weapon/reagent_containers/food/snacks)) if(!reagents.total_volume) user << "You tear open [src], but there's nothing in it." - Destroy() + qdel(src) return if(target.reagents.total_volume >= target.reagents.maximum_volume) user << "You tear open [src], but [target] is stacked so high that it just drips off!" //Not sure if food can ever be full, but better safe than sorry. - Destroy() + qdel(src) return else user << "You tear open [src] above [target] and the condiments drip onto it." src.reagents.trans_to(target, amount_per_transfer_from_this) - Destroy() + qdel(src) /obj/item/weapon/reagent_containers/food/condiment/pack/on_reagent_change() if(reagents.reagent_list.len > 0) diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index 1aef00f1965..3b57147aba8 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -481,7 +481,7 @@ singularity_pull(S, current_size) if(current_size >= STAGE_FIVE) - Destroy() + qdel(src) // virtual disposal object // travels through pipes in lieu of actual items @@ -678,18 +678,18 @@ for(var/atom/movable/AM in H) AM.loc = T AM.pipe_eject(0) - del(H) + qdel(H) ..() return // otherwise, do normal expel from turf if(H) expel(H, T, 0) - ..() + return ..() singularity_pull(S, current_size) if(current_size >= STAGE_FIVE) - Destroy() + qdel(src) // returns the direction of the next pipe object, given the entrance dir // by default, returns the bitmask of remaining directions diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index f9cb57a852d..964af1cea1f 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -33,7 +33,8 @@ won't update every console in existence) but it's more of a hassle to do. Also, /obj/machinery/computer/rdconsole name = "R&D Console" - icon_state = "rdcomp" + icon_screen = "rdcomp" + icon_keyboard = "rd_key" light_color = LIGHT_COLOR_FADEDPURPLE circuit = /obj/item/weapon/circuitboard/rdconsole var/datum/research/files //Stores all the collected research data. diff --git a/code/modules/research/server.dm b/code/modules/research/server.dm index 295094b7856..c191a8a2eca 100644 --- a/code/modules/research/server.dm +++ b/code/modules/research/server.dm @@ -175,7 +175,8 @@ /obj/machinery/computer/rdservercontrol name = "R&D Server Controller" - icon_state = "rdcomp" + icon_screen = "rdcomp" + icon_keyboard = "rd_key" light_color = LIGHT_COLOR_FADEDPURPLE circuit = /obj/item/weapon/circuitboard/rdservercontrol var/screen = 0 diff --git a/code/modules/research/xenoarchaeology/genetics/reconstitutor.dm b/code/modules/research/xenoarchaeology/genetics/reconstitutor.dm index a100d159d4b..1503e4e9c90 100644 --- a/code/modules/research/xenoarchaeology/genetics/reconstitutor.dm +++ b/code/modules/research/xenoarchaeology/genetics/reconstitutor.dm @@ -13,7 +13,8 @@ datum/genesequence /obj/machinery/computer/reconstitutor name = "Flora reconstitution console" icon = 'icons/obj/computer.dmi' - icon_state = "dna" + icon_keyboard = "med_key" + icon_screen = "dna" circuit = "/obj/item/weapon/circuitboard/reconstitutor" req_access = list(access_heads) //Only used for record deletion right now. var/obj/machinery/clonepod/pod1 = 1 //Linked cloning pod. diff --git a/code/modules/shuttles/antagonist.dm b/code/modules/shuttles/antagonist.dm index c59063217be..c5152734570 100644 --- a/code/modules/shuttles/antagonist.dm +++ b/code/modules/shuttles/antagonist.dm @@ -2,16 +2,20 @@ name = "skipjack control console" req_access = list(access_vox) shuttle_tag = "Vox Skipjack" - + icon_screen = "syndishuttle" + icon_keyboard = "syndie_key" + /obj/machinery/computer/shuttle_control/multi/vox/attack_ai(user as mob) user << "\red Access Denied." - return 1 + return 1 /obj/machinery/computer/shuttle_control/multi/syndicate name = "Syndicate control console" req_access = list(access_syndicate) shuttle_tag = "Syndicate" - + icon_screen = "syndishuttle" + icon_keyboard = "syndie_key" + /obj/machinery/computer/shuttle_control/multi/syndicate/attack_ai(user as mob) user << "\red Access Denied." - return 1 \ No newline at end of file + return 1 \ No newline at end of file diff --git a/code/modules/shuttles/shuttle_console.dm b/code/modules/shuttles/shuttle_console.dm index e6e7a8d4112..8a27eae5531 100644 --- a/code/modules/shuttles/shuttle_console.dm +++ b/code/modules/shuttles/shuttle_console.dm @@ -1,7 +1,8 @@ /obj/machinery/computer/shuttle_control name = "shuttle control console" icon = 'icons/obj/computer.dmi' - icon_state = "shuttle" + icon_screen = "shuttle" + icon_keyboard = "med_key" circuit = null var/shuttle_tag // Used to coordinate data in shuttle controller. @@ -15,7 +16,7 @@ if(!allowed(user)) user << "\red Access Denied." return 1 - + ui_interact(user) /obj/machinery/computer/shuttle_control/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) @@ -84,7 +85,7 @@ if (!istype(shuttle)) return shuttle.launch(user) - + /obj/machinery/computer/shuttle_control/proc/force_launch(var/mob/user) var/datum/shuttle/ferry/shuttle = shuttle_controller.shuttles[shuttle_tag] if (!istype(shuttle)) diff --git a/code/modules/shuttles/shuttle_specops.dm b/code/modules/shuttles/shuttle_specops.dm index 13badb74ca7..5a2afe30182 100644 --- a/code/modules/shuttles/shuttle_specops.dm +++ b/code/modules/shuttles/shuttle_specops.dm @@ -1,6 +1,8 @@ /obj/machinery/computer/shuttle_control/specops name = "special operations shuttle console" shuttle_tag = "Special Operations" + icon_screen = "syndishuttle" + icon_keyboard = "syndie_key" req_access = list(access_cent_specops) /obj/machinery/computer/shuttle_control/specops/attack_ai(user as mob) diff --git a/code/modules/shuttles/shuttles_multi.dm b/code/modules/shuttles/shuttles_multi.dm index bac0384a4d3..b3da5fdf98e 100644 --- a/code/modules/shuttles/shuttles_multi.dm +++ b/code/modules/shuttles/shuttles_multi.dm @@ -43,7 +43,8 @@ command_announcement.Announce(arrival_message,(announcer ? announcer : "Central Command")) /obj/machinery/computer/shuttle_control/multi - icon_state = "syndishuttle" + icon_screen = "syndishuttle" + icon_keyboard = "syndie_key" /obj/machinery/computer/shuttle_control/multi/attack_hand(user as mob) @@ -84,7 +85,7 @@ var/datum/shuttle/multi_shuttle/MS = shuttle_controller.shuttles[shuttle_tag] if(!istype(MS)) return - + //world << "multi_shuttle: last_departed=[MS.last_departed], origin=[MS.origin], interim=[MS.interim], travel_time=[MS.move_time]" if (MS.moving_status != SHUTTLE_IDLE) @@ -102,7 +103,7 @@ //TODO: Actually end the mission. MS.return_warning = 1 return - + MS.long_jump(MS.last_departed,MS.origin,MS.interim,MS.move_time) MS.last_departed = MS.origin MS.at_origin = 1 @@ -127,7 +128,7 @@ MS.last_departed = MS.origin MS.at_origin = 0 - + MS.long_jump(MS.last_departed, MS.destinations[choice], MS.interim, MS.move_time) MS.last_departed = MS.destinations[choice] return diff --git a/code/modules/store/items.dm b/code/modules/store/items.dm index 39629f10131..f578e17bab2 100644 --- a/code/modules/store/items.dm +++ b/code/modules/store/items.dm @@ -75,6 +75,12 @@ typepath = /obj/item/weapon/storage/fancy/candle_box/full cost = 200 +/datum/storeitem/minigibber + name = "miniature gibber" + desc = "A miniature recreation of NanoTrasen's famous meat grinder." + typepath = /obj/item/toy/minigibber + cost = 400 + /datum/storeitem/katana name = "replica katana" desc = "Woefully underpowered in D20." diff --git a/code/modules/telesci/telesci_computer.dm b/code/modules/telesci/telesci_computer.dm index 6ed06571eed..49721e2e2f2 100644 --- a/code/modules/telesci/telesci_computer.dm +++ b/code/modules/telesci/telesci_computer.dm @@ -1,7 +1,8 @@ /obj/machinery/computer/telescience name = "\improper Telepad Control Console" desc = "Used to teleport objects to and from the telescience telepad." - icon_state = "teleport" + icon_keyboard = "telesci_key" + icon_screen = "telesci" circuit = /obj/item/weapon/circuitboard/telesci_console req_access = list(access_research) var/sending = 1 @@ -318,8 +319,10 @@ return /obj/machinery/computer/telescience/proc/eject() + for(var/obj/item/I in crystals) - I.loc = src.loc + I.loc = loc + I.pixel_y = -9 crystals -= I power = 0 @@ -360,7 +363,7 @@ if(href_list["ejectGPS"]) if(inserted_gps) - inserted_gps.loc = loc + usr.put_in_hands(inserted_gps) inserted_gps = null if(href_list["setMemory"]) diff --git a/code/modules/virus2/diseasesplicer.dm b/code/modules/virus2/diseasesplicer.dm index 5a407e37908..7173b063b73 100644 --- a/code/modules/virus2/diseasesplicer.dm +++ b/code/modules/virus2/diseasesplicer.dm @@ -1,7 +1,8 @@ /obj/machinery/computer/diseasesplicer name = "Disease Splicer" icon = 'icons/obj/computer.dmi' - icon_state = "crew" + icon_screen = "crew" + icon_keyboard = "med_key" var/datum/disease2/effectholder/memorybank = null var/list/species_buffer = null diff --git a/icons/effects/fire.dmi b/icons/effects/fire.dmi index 5f5cfe3a2f9..9814c4606d9 100644 Binary files a/icons/effects/fire.dmi and b/icons/effects/fire.dmi differ diff --git a/icons/effects/genetics.dmi b/icons/effects/genetics.dmi index 59df7dcbe2a..99e50c5f555 100644 Binary files a/icons/effects/genetics.dmi and b/icons/effects/genetics.dmi differ diff --git a/icons/effects/species.dmi b/icons/effects/species.dmi index f057ac2ba40..f82c24fcefd 100644 Binary files a/icons/effects/species.dmi and b/icons/effects/species.dmi differ diff --git a/icons/mob/OnFire.dmi b/icons/mob/OnFire.dmi index a4327f071c6..134b5de5a3b 100644 Binary files a/icons/mob/OnFire.dmi and b/icons/mob/OnFire.dmi differ diff --git a/icons/mob/actions.dmi b/icons/mob/actions.dmi index 400db51debe..7103c823a4e 100644 Binary files a/icons/mob/actions.dmi and b/icons/mob/actions.dmi differ diff --git a/icons/mob/belt_mirror.dmi b/icons/mob/belt_mirror.dmi index 36392855550..7b4899106d2 100644 Binary files a/icons/mob/belt_mirror.dmi and b/icons/mob/belt_mirror.dmi differ diff --git a/icons/mob/critter.dmi b/icons/mob/critter.dmi index f63949af792..a5f7341bc1c 100644 Binary files a/icons/mob/critter.dmi and b/icons/mob/critter.dmi differ diff --git a/icons/mob/human.dmi b/icons/mob/human.dmi index cc7cd462bab..a7bbaf50f7c 100644 Binary files a/icons/mob/human.dmi and b/icons/mob/human.dmi differ diff --git a/icons/mob/human_races/r_def_kidan.dmi b/icons/mob/human_races/r_def_kidan.dmi index 24e3423e1f4..14cbbf0d870 100644 Binary files a/icons/mob/human_races/r_def_kidan.dmi and b/icons/mob/human_races/r_def_kidan.dmi differ diff --git a/icons/mob/human_races/r_kidan.dmi b/icons/mob/human_races/r_kidan.dmi index 24e3423e1f4..14cbbf0d870 100644 Binary files a/icons/mob/human_races/r_kidan.dmi and b/icons/mob/human_races/r_kidan.dmi differ diff --git a/icons/mob/otherHuman/human.dmi b/icons/mob/otherHuman/human.dmi index ef7bddb8235..eee787a3997 100644 Binary files a/icons/mob/otherHuman/human.dmi and b/icons/mob/otherHuman/human.dmi differ diff --git a/icons/mob/screen1_action.dmi b/icons/mob/screen1_action.dmi deleted file mode 100644 index cc98ef17f6b..00000000000 Binary files a/icons/mob/screen1_action.dmi and /dev/null differ diff --git a/icons/obj/computer.dmi b/icons/obj/computer.dmi index fe8df6fd93c..4576c253f01 100644 Binary files a/icons/obj/computer.dmi and b/icons/obj/computer.dmi differ diff --git a/icons/obj/machines/HONKputer.dmi b/icons/obj/machines/HONKputer.dmi index e960a822ac0..4cacf08f1a6 100644 Binary files a/icons/obj/machines/HONKputer.dmi and b/icons/obj/machines/HONKputer.dmi differ diff --git a/icons/obj/toy.dmi b/icons/obj/toy.dmi index 0bd2935fe91..4cf08668bee 100644 Binary files a/icons/obj/toy.dmi and b/icons/obj/toy.dmi differ diff --git a/paradise.dme b/paradise.dme index d8227531d48..ec2b8734ae6 100644 --- a/paradise.dme +++ b/paradise.dme @@ -166,7 +166,6 @@ #include "code\datums\datumvars.dm" #include "code\datums\gas_mixture.dm" #include "code\datums\martial.dm" -#include "code\datums\medical_effects.dm" #include "code\datums\mind.dm" #include "code\datums\mixed.dm" #include "code\datums\modules.dm"