diff --git a/_maps/map_files/cyberiad/cyberiad.dmm b/_maps/map_files/cyberiad/cyberiad.dmm index 44a7bb9f455..a6748ac7718 100644 --- a/_maps/map_files/cyberiad/cyberiad.dmm +++ b/_maps/map_files/cyberiad/cyberiad.dmm @@ -2820,13 +2820,13 @@ "bcl" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/turf/simulated/floor/wood,/area/crew_quarters/bar) "bcm" = (/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen) "bcn" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen) -"bco" = (/obj/machinery/camera{c_tag = "Kitchen"; network = list("SS13")},/obj/item/device/radio/intercom{broadcasting = 0; name = "Station Intercom (General)"; pixel_y = 20},/obj/machinery/candy_maker,/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen) -"bcp" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/grill,/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen) +"bco" = (/obj/structure/table,/obj/machinery/kitchen_machine/microwave{pixel_x = -3; pixel_y = 6},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen) +"bcp" = (/obj/machinery/camera{c_tag = "Kitchen"; network = list("SS13")},/obj/item/device/radio/intercom{broadcasting = 0; name = "Station Intercom (General)"; pixel_y = 20},/obj/machinery/kitchen_machine/candy_maker,/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen) "bcq" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen) -"bcr" = (/obj/structure/table,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen) -"bcs" = (/obj/structure/table,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen) +"bcr" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/kitchen_machine/grill,/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen) +"bcs" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/kitchen_machine/oven,/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen) "bct" = (/obj/machinery/cooker/deepfryer,/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen) -"bcu" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/oven,/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen) +"bcu" = (/obj/structure/table,/obj/machinery/kitchen_machine/microwave{pixel_x = -3; pixel_y = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen) "bcv" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/item/weapon/reagent_containers/glass/bucket,/turf/simulated/floor{icon_state = "dark"},/area/hydroponics) "bcw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "green"; dir = 8},/area/hydroponics) "bcx" = (/turf/simulated/floor,/area/hydroponics) @@ -8079,7 +8079,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAvaWraBmaBmaBmaBmaBmaBmaWraAvaJnazEaWuaWvaAvaWxaWyaWzaWzaWAaAyaWBaUCaWCaWDaYgcZRaWFaWGaWHaWHaWIaWJaWJaWJaWKaWLaWLaWMaWNaWOaWHaWHaWPaWQaWRaWSaWTaWTaWUbdkaWVaWQaWQaWQaWWaUWaUXaUYaUZaUZaUZaUZaWXaUZaUZaUZaUZaUZaUZaWYaWZaXaaXbaXcaXdaXeaXfaXgaXhaXiaXiaXiaXjaXkaXkaXkaXlaVyaVyaVyaXmaXnaVyaINaXoaXpaVDaVDaXqaVDaXraXsaVGaXtaSdaXuaXvaXwaXxaXyaSdaXzaXAaXBaXCaXDaXEaSlaFSaXGaFSaSlaSlaSlaSoaSlaSlaSqaLHaOQaXHaQFaQFaQFaXIaQFaXJaOVaOVaOVaOVaOVaOVaOVaXKaOVaPfaPfaPeaPfaXLaXMaNqaXNaXOaXPaXQaXRaXSaXTaXUaFTaaaaaaaaaaaaaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaIfazEaAvaCzaBmaXWaXXaXYaXZaBmaCzaAvaAvazEaYcaSPaAvaYdaYeaWzaWzaWAaAyaYfaUCaFzaWDaYgaUGaYhaYiaUGaUGaYjaYkaYlaUGaYmaYnaYoaYnaYpaYqaYnaYnaYraYnaYnaYsaYtaYnaYuaYsaYvaVTaUGaUGaYwaYxaYyaYzaYAaYBaYAaYCaYDaYCaYCaYCaYCaYCaYCaYEaYFaYGaYGaYGaYGaYHaYGaYIaYJaYGaYGaYKaYLaYMaYMaYMaYMaYMaYMaYMaYNaVyaVyaINaYOaYPaYQaYRaYRaYSaYTaXsaVGaYUaSdaSdaSdaSdaSdaYVaSdaYWaYXaYYaYZaTQaZaaSlaZbaZcaZdaZeaZfaZgaZhaZiaSlaSqaWaaOQaZjaZkaQFaZlaZmaQFaZnaZnaOQaZoaZpbeKaNqaZraZsaZtaPfaPfaZuaZvaNqaZwaNqaZxaXOaZyaZzaZAaXOaXOaZBaFTaaaaaaaaaaaaaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaAyaAvaWraBmaGTaFzaFzaGUaBmaWraBmaZDaZEaZFaZGaAvaZHaZHaUzaZHaUAaAyaZIaUCaFzaAyaSUaSUaZJaZKaZKaZKaZKaZKaZKaZLaZMaZKaZKaZKaZKaZKaZKaZNaZOaZPaZPaZQaZPaJaaGCaKiaJaaJaaZUaZVaZWaSUaZXaZXaZYaZYaZYaGEaGEaGEaGEaGEaGEaGEaGEbacaGFaGFaGGaGFaGRaGRaGRaGRaHeaGZaGRbacaHgaHgaHgaHgaHgaHgaHgaHgbaobaobaoaINbapbaqbarbarbarbarbasbatbaubavbawbaxbcjbazbaAbaBaSdaSdbaCaHhaHoaHhaHhaSlbaHbaIbaJbaJbaJbaJbaKbaLaSlbaMdcjaOQbaNaQFaZlaZlaZmaZlaQFbaOaOQbaPbaQbaRaNqaPfbaSbaTbaUbaUbaVbaWbaXbaYbaZbbabbbbbcbbdaXQaXOaXObbeaFTaaaaaaaaaaaaaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtdcdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHvbbfaFzbbgbbhbbibbjbbkbblbbjbbmbbnbbjbbjbbobbpbbqbbrbbsbbsbbsbbtbbsbbubbvaAybbwbbxbbyaZKbbzbbAbbBbbCbbDbbBbbEbbFbbGbbHbbIbbJaZKbbKbbLaZPbdjbdgbdiaJabdhbbObbNaJabbQaHEbbSbbQbbQbbQbbTaUZaVeaGEaaaaaaaaaaaaaaaaaaaaabacbbVbbWbbXbbYbbZbcabcbbccbcdbcebcfbacaaaaaaaaaaaaaaaaaaaaaaHgbchaVybciaINcrgbaqbavbavbavbavbavbckbclbavbavbavbaybcmbcmbcnbcobcpbcqbcrbcsbctbcuaSlbcvbcwbcxbcybcybcxbczbcAaSlaSqaLHaOQbcCbcDaQFaZlaZmaQFbcEbcEaOQaOQbcFaOQaNqbcGaZsaZvbcHbcHbcIaZvaNqaNqaNqbcJaXObcKbcKbcLbcKaXObcMaFTaabaaaaaabcNaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHvbbfaFzbbgbbhbbibbjbbkbblbbjbbmbbnbbjbbjbbobbpbbqbbrbbsbbsbbsbbtbbsbbubbvaAybbwbbxbbyaZKbbzbbAbbBbbCbbDbbBbbEbbFbbGbbHbbIbbJaZKbbKbbLaZPbdjbdgbdiaJabdhbbObbNaJabbQaHEbbSbbQbbQbbQbbTaUZaVeaGEaaaaaaaaaaaaaaaaaaaaabacbbVbbWbbXbbYbbZbcabcbbccbcdbcebcfbacaaaaaaaaaaaaaaaaaaaaaaHgbchaVybciaINcrgbaqbavbavbavbavbavbckbclbavbavbavbaybcmbcmbcnbcpbcrbcqbcobcubctbcsaSlbcvbcwbcxbcybcybcxbczbcAaSlaSqaLHaOQbcCbcDaQFaZlaZmaQFbcEbcEaOQaOQbcFaOQaNqbcGaZsaZvbcHbcHbcIaZvaNqaNqaNqbcJaXObcKbcKbcLbcKaXObcMaFTaabaaaaaabcNaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHvbcObcPbcObcObcObcObcObcObcPbcObcObcQaFzbcRbcSbcTaFzbcUaFzbcVbcWbcXbcYbcZaAybbxbbxbdaaZKbdbbbBbbBbbBbbBbbBbbEbdcbbBbbBbbBbddaZKbbKbdeaZPbdfbbMbeFaJaaZTaZSaZRaJabdlbdmbdnbdobdpaHEbbTaUZaVeaGEaaaaaaaaaaaabacbacbacbacbdrbdsbdtbdubdvbdwbdxbdybdzbdAbdBbacbacbacbacaaaaaaaaaaaaaHgbchaVyaVyaHFbavbdDbdEbdFbavbdGbdHaLmbdIbdJbdKbavbaybdLbcmbdMbdNbcmbdObdPbdQbdRbcmbdSbdTbdUbcxbcybcybcxbdVbdWaSlaSqdauaOQbaNaQFaZlaZlaZmaZlaQFaQFbdYbdZaQFbeaaNqbebbecbedbcHbcHbeebedbefaNqbegbehaXObeibeibejbeiaXObbeaFTaHPaFTaFTaFTaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazEazEaAvaAvaAvaAvaAvaAvaAvaAvaAvazEaAybeqberbesbesbesbesbesbesbetbesbesbesaAybbxbbKbeuaZKbevbbBbbBbewbexbeybezbewbbBbbBbbBbeAaZKbbKbbLaZPbeBbqwbbPaJabeEcePcZXaJabeGbeHbeIbeJbnEaHEbeMbeNaVeaGEaGEbeQbacbacbacbeRbeSbeTbeUbeVbeVbeWbeXbeVbeYbeVbeZbfabfbbfcbfdbfebacbacbacbeQaHgaHgbchaVyaVyaINbfgbdDbdJbdFbavbfhbfibavbfjbfkbdKbavbaybcmbcmbflbfmbfnbfobfpbfqbfrbcmbfsbdTbftbcxbcybcybfubfvbdWaSlaSqaLHaOQbfxbfybfzaZlaZmbfAaQFaQFbfBaQFbfCbfDaNqbfEbfFbfGbcHbcHbfHbfGbfIaNqbfJbehaXOaXOaXOaXQaXOaXObfKbfLbfMbfNbfObfPaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfQbfQbfQbfQbfQbfQbfQbfQbfQbfQbfQbfQaabaAvaIiaFBbfSbesbfTbfUbfVbfWbfXbfYbfZbgabesbjjbgcbgdbgeaZKbgfbbBbbBbewbeybggbghbewbbBbbBbgibgjaZKbbKbbLaZPaZPbgkaZPaJabeEbeDbhSaJabglbeJbgmbeJbgnaHEbbTbgoaVeaVfaVfbgpaHQbgrbacbgsbdtbgtbeVbeVbgubgvbgwbgxbgwbgybgzbgAbgBbgCbgDbgEbacbgFaHQbgGbgHbgIbchaVyaVyaHFbavbgJbavbavbavbgKbgLbavbfjbgMbdKbavbaybcmbcmbgNbgObgPbgQbgRbgSbfrbgTaSlbgUbftbcxbcybcybcxbfvbgVaSlbgWbgXaOQbgYaOQaOQbgZaZmbhabhbaQFbhcbhdaUgbhebaZbhfbhgbhhbhibhibhjbhkbhlbaZbhmbhnaXObhoaXOaXQaXOaXObhpaFTaHPaFTaFTaHPaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/_maps/map_files/cyberiad/z2.dmm b/_maps/map_files/cyberiad/z2.dmm index 2227af646e6..8c044214861 100644 --- a/_maps/map_files/cyberiad/z2.dmm +++ b/_maps/map_files/cyberiad/z2.dmm @@ -281,7 +281,7 @@ "fu" = (/turf/unsimulated/floor{icon_state = "dark"},/area/ninja/outpost) "fv" = (/obj/structure/ninjatele{pixel_y = 25},/turf/unsimulated/floor{icon_state = "dark"},/area/ninja/outpost) "fw" = (/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/ninja/outpost) -"fx" = (/obj/structure/table,/obj/machinery/microwave/upgraded,/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/ninja/holding) +"fx" = (/obj/structure/table,/obj/machinery/kitchen_machine/microwave/upgraded,/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/ninja/holding) "fy" = (/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/ninja/holding) "fz" = (/obj/structure/closet/secure_closet/bar{req_access_txt = "25"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/ninja/holding) "fA" = (/obj/structure/reagent_dispensers/beerkeg,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/ninja/holding) @@ -311,7 +311,7 @@ "fY" = (/turf/space/transit/east/shuttlespace_ew15,/area/shuttle/escape_pod3/transit) "fZ" = (/turf/space/transit/east/shuttlespace_ew1,/area/shuttle/escape_pod3/transit) "ga" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; stopper = 0; tiles = 0},/turf/space/transit/east/shuttlespace_ew10,/area/space) -"gb" = (/obj/structure/table,/obj/machinery/microwave/upgraded,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/ninja/holding) +"gb" = (/obj/structure/table,/obj/machinery/kitchen_machine/microwave/upgraded,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/ninja/holding) "gc" = (/obj/structure/table,/obj/item/clothing/head/that{pixel_x = 4; pixel_y = 6},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/ninja/holding) "gd" = (/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/ninja/holding) "ge" = (/obj/structure/stool{pixel_y = 8},/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/ninja/holding) @@ -748,7 +748,7 @@ "ot" = (/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id_tag = "syndieshutters"; name = "Blast Shutters"; opacity = 0},/obj/structure/grille,/obj/structure/shuttle/window{tag = "icon-window5_end (NORTH)"; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5_end"; dir = 1},/turf/simulated/shuttle/plating,/area/syndicate_station/start) "ou" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/syndicate_station/start) "ov" = (/turf/simulated/shuttle/wall{dir = 4; icon_state = "wall3"},/area/syndicate_station/start) -"ow" = (/obj/structure/table,/obj/machinery/microwave,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) +"ow" = (/obj/structure/table,/obj/machinery/kitchen_machine/microwave,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "ox" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "oy" = (/obj/structure/table,/obj/item/device/flashlight/lamp{pixel_x = 4; pixel_y = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "oz" = (/obj/machinery/computer/shuttle_control/multi/syndicate{req_access_txt = "0"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) @@ -1005,7 +1005,7 @@ "tq" = (/obj/structure/table,/obj/item/weapon/card/id/centcom,/obj/machinery/light/spot{tag = "icon-tube1 (EAST)"; icon_state = "tube1"; dir = 4},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/centcom/control) "tr" = (/obj/machinery/vending/dinnerware{req_access_txt = "102"},/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/control) "ts" = (/obj/structure/table,/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/food/condiment/enzyme,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/control) -"tt" = (/obj/structure/table,/obj/machinery/microwave/upgraded,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/control) +"tt" = (/obj/structure/table,/obj/machinery/kitchen_machine/microwave/upgraded,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/control) "tu" = (/obj/machinery/mech_bay_recharge_port/upgraded,/turf/unsimulated/floor{icon_state = "bot"},/area/centcom/specops) "tv" = (/obj/machinery/camera{c_tag = "CentCom Special Ops. Assault Armor North"; dir = 2; network = list("ERT","CentCom")},/obj/mecha/combat/marauder/seraph/loaded,/turf/unsimulated/floor{icon_state = "delivery"; dir = 6},/area/centcom/specops) "tw" = (/obj/item/device/radio/intercom{broadcasting = 1; dir = 1; frequency = 1441; name = "Spec Ops Intercom"; pixel_y = 28},/turf/unsimulated/floor{dir = 4; heat_capacity = 1; icon_state = "warning"},/area/centcom/specops) @@ -1445,7 +1445,7 @@ "Cl" = (/obj/machinery/light/spot{tag = "icon-tube1 (WEST)"; icon_state = "tube1"; dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) "Cm" = (/obj/item/stack/sheet/metal,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) "Cn" = (/obj/item/stack/sheet/glass,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) -"Co" = (/obj/machinery/microwave/upgraded,/obj/structure/table,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) +"Co" = (/obj/machinery/kitchen_machine/microwave/upgraded,/obj/structure/table,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) "Cp" = (/obj/machinery/door/window/northright{name = "bar"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) "Cq" = (/obj/structure/table,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) "Cr" = (/obj/item/ashtray/glass,/obj/structure/table,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) @@ -1759,7 +1759,7 @@ "It" = (/obj/structure/window/reinforced{dir = 1; layer = 2.9},/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) "Iu" = (/obj/machinery/door/window{dir = 1; name = "Cell A"; req_access_txt = "101"},/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) "Iv" = (/obj/structure/table{icon_state = "tabledir"; dir = 9},/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/turf/unsimulated/floor{icon_state = "white"},/area/tdome) -"Iw" = (/obj/structure/table,/obj/machinery/microwave/upgraded,/turf/unsimulated/floor{icon_state = "white"},/area/tdome) +"Iw" = (/obj/structure/table,/obj/machinery/kitchen_machine/microwave/upgraded,/turf/unsimulated/floor{icon_state = "white"},/area/tdome) "Ix" = (/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "white"},/area/tdome) "Iy" = (/obj/item/device/camera,/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/tdome/tdomeobserve) "Iz" = (/obj/structure/toilet{dir = 8},/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/admin) diff --git a/_maps/map_files/cyberiad/z4.dmm b/_maps/map_files/cyberiad/z4.dmm index b99f5a3ab8f..9fa62f5aeb2 100644 --- a/_maps/map_files/cyberiad/z4.dmm +++ b/_maps/map_files/cyberiad/z4.dmm @@ -67,6 +67,7 @@ "bo" = (/turf/simulated/wall,/area/engiestation) "bp" = (/obj/machinery/door/airlock/engineering{name = "Construction Area"; req_access_txt = "32"},/turf/simulated/floor{icon_state = "dark"},/area/engiestation) "bq" = (/turf/simulated/wall/r_wall,/area/space) +"br" = (/obj/structure/table,/obj/machinery/kitchen_machine/microwave{pixel_x = -3; pixel_y = 6},/obj/machinery/newscaster{pixel_y = 32},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/engiestation) "bs" = (/obj/structure/table,/obj/machinery/cell_charger,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor{icon_state = "dark"},/area/engiestation) "bt" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "dark"},/area/engiestation) "bu" = (/obj/machinery/telecomms/relay/preset/ruskie,/obj/machinery/light{dir = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/status_display{pixel_x = 0; pixel_y = 32},/turf/simulated/floor{dir = 8; icon_state = "vault"; tag = "icon-vault (WEST)"},/area/engiestation) @@ -80,6 +81,7 @@ "bC" = (/turf/simulated/floor/plating/airless,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk4"; icon_state = "catwalk4"},/area/engiestation/solars) "bD" = (/turf/simulated/floor/plating/airless,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk12"; icon_state = "catwalk12"},/area/engiestation/solars) "bE" = (/turf/simulated/floor/plating/airless,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk8"; icon_state = "catwalk8"},/area/engiestation/solars) +"bF" = (/obj/structure/table,/obj/machinery/kitchen_machine/microwave,/turf/simulated/floor/plating,/area/exploration/methlab) "bG" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor{icon_state = "dark"},/area/engiestation) "bH" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/engiestation) "bI" = (/obj/machinery/power/terminal,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/engiestation) @@ -131,7 +133,6 @@ "cE" = (/obj/machinery/door/poddoor{id_tag = "constructiondriver2"; name = "Construction Driver Door"},/turf/simulated/floor/plating,/area/engiestation) "cF" = (/obj/machinery/recharge_station,/turf/simulated/floor/plating/airless,/area/constructionsite/ai) "cH" = (/obj/structure/table,/obj/item/weapon/lighter/random,/obj/item/weapon/reagent_containers/food/snacks/icecreamsandwich,/obj/item/clothing/head/chefhat,/obj/item/weapon/storage/box/donkpockets,/obj/structure/sign/fire{pixel_y = 32},/turf/simulated/floor{dir = 9; icon_state = "blue"},/area/engiestation) -"cI" = (/obj/structure/table,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/obj/machinery/newscaster{pixel_y = 32},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/engiestation) "cJ" = (/obj/structure/flora/kirbyplants,/obj/machinery/light{dir = 1},/obj/machinery/status_display{pixel_x = 0; pixel_y = 32},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/engiestation) "cK" = (/obj/structure/stool/bed/chair/office/dark{dir = 4},/obj/structure/sign/singulo{pixel_y = 32},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/engiestation) "cL" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/snacks/meatballsoup,/turf/simulated/floor{dir = 5; icon_state = "blue"},/area/engiestation) @@ -330,7 +331,6 @@ "gF" = (/obj/machinery/chem_heater,/turf/simulated/floor/plating,/area/exploration/methlab) "gG" = (/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating,/area/exploration/methlab) "gH" = (/obj/machinery/door/airlock/maintenance_hatch{name = "SMES Access"; req_access_txt = "11"},/turf/simulated/floor/plating/airless,/area/constructionsite/engineering) -"gI" = (/obj/structure/table,/obj/machinery/microwave,/turf/simulated/floor/plating,/area/exploration/methlab) "gJ" = (/obj/machinery/power/smes,/turf/simulated/floor/plating/airless,/area/constructionsite/engineering) "gK" = (/obj/machinery/power/terminal{dir = 8},/turf/simulated/floor/plating/airless,/area/constructionsite/engineering) "gL" = (/obj/machinery/power/terminal{dir = 4},/turf/simulated/floor/plating/airless,/area/constructionsite/engineering) @@ -439,7 +439,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLaaaM aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLabaMcbcccccdblbvcfcgchciblcjckckclbncmbybybPcnbRcoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalabalalalalalalalalalalalalalaeaeaeaeaeaeaeaeaeaeaeaeapaoaoauauauauauauaoauauapaZaZaZaYbTbTaZbaaZbTbTaYaZaZaZapauauaoauauauauaoauauaoapaeaealalalalalalalalalalalalaaaaabaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaavavaLabaMaNaNaNaNbkcqcrcsbfctbkaNaNaNaNbncubybycvboboaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababalalalalalababalalabalabalabalabalabalcwaecwaeaeaeaeaeaeaeaeaeapauauauauauauauaoauauaucxbababacyaZaZaZbaaZaZaZczbababacAaoauaoaoaoaoaoaoauauauapaeaealalalalalalalalalabalabalabalalalabalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaavaIbhaSbobobobobobobobobocBbobobobobobobocCbybybPcDbRcEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababalalalalalalalabalabalalalalalaeaeaecwaeaeaeaeaeaeaeaeapaoaoauaoaoaoaoaoaoaoaoapaZaZaZaYbTbTaZbaaZbTbTaYcFcFcFapauauaoauauauauauauaoaoapaeaealalalalalalalalalalalalalalalalabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaLabaUcHcIcJcKcLaUcMcNcObycPcQcRbybycScQcTcUcVcWaSaSaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaavavavabababababavavavavavavavavavavavacacacacacacacacacacacacapaoaoapcXapapapcYaucYauapaYaYaYaYaZbTaZaZaZbTaZaYaYaYaYapauauaoauapapapaqapauaoapacacavavavavavababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaLabaUcHbrcJcKcLaUcMcNcObycPcQcRbybycScQcTcUcVcWaSaSaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaavavavabababababavavavavavavavavavavavacacacacacacacacacacacacapaoaoapcXapapapcYaucYauapaYaYaYaYaZbTaZaZaZbTaZaYaYaYaYapauauaoauapapapaqapauaoapacacavavavavavababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLabaUdabybydbdcaUdddddebydfboboboboboaSaSaSaSaSbqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababaccwdgdhdhdgaeaeaedgdididididgdgababaYaYbTbTaZbTbTaYaYababdgdgdididididgaeaeaedgdhdhdiaeacababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLabaUdjbybydbdkaUdldldmbybyaUdndodpdqaUabdsdsavabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaababaccwdgdhdhdgacacaedgdgdidtdidtdgabababaYaYaYbBaYaYaYabababdgdididhdidgdgaeacacdgdhdhdgaeacabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLabaUdubybybydvaUdxdxdybybyaUdAdBdCdCaUabaaaadEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaababaccwdgdhdhdFabacaeaedgdididididgdgabababaYaZbaaZaYabababdgdgdididhdidgaeaeacabdFdhdhdgaeacabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -530,7 +530,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagk aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagkgkgkgAgsgBgCgkgrgsgkgkgkgkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagjgfgfgfgfgfgfgjghgdgfgdghgjgfgfgfgfgfgfgjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagkgkgkgDgEgsgkgkgsgsgkgkgkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagdgdgfgfgfgfgfgdgdgdgegdgdgdgfgfgfgfgfgdgdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagkgkgkgFgsgsgkgkgGgGgkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagigdgdgdgHgdgdgdgfgfgfgfgfgdgdgdgegdgdgdgiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagkgkgkgIgkgkgkgkgkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagigigjgfgfgfgjgfgfgfgfgfgfgfgjgfgfgfgjgigiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagkgkgkbFgkgkgkgkgkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagigigjgfgfgfgjgfgfgfgfgfgfgfgjgfgfgfgjgigiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagkgkgkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagigigjgfgfgfgjgJgKgfgfgfgLgJgjgfgfgfgjgigiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagkgkgkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagigigjgfgfgfgjgJgKgfgfgfgLgJgjgfgfgfgjgigiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagkgkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagigigjgfgfgfgjgfgfgfgfgfgfgfgjgfgfgfgjgigiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/_maps/map_files/cyberiad/z6.dmm b/_maps/map_files/cyberiad/z6.dmm index 8be2571bced..29886ded2b3 100644 --- a/_maps/map_files/cyberiad/z6.dmm +++ b/_maps/map_files/cyberiad/z6.dmm @@ -5,6 +5,7 @@ "ae" = (/obj/structure/lattice,/turf/space,/area/space) "af" = (/turf/simulated/wall,/area/djstation) "ag" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/djstation) +"ah" = (/obj/structure/table,/obj/machinery/kitchen_machine/microwave{pixel_y = 8},/turf/simulated/floor{icon_state = "bar"},/area/djstation) "aj" = (/turf/simulated/floor/plating,/area/djstation) "ak" = (/obj/machinery/light{dir = 1},/obj/machinery/telecomms/relay/preset/ruskie,/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plating,/area/djstation) "am" = (/obj/machinery/power/terminal,/turf/simulated/floor/plating,/area/djstation) @@ -33,7 +34,6 @@ "aL" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "grimy"},/area/djstation) "aM" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet,/turf/simulated/floor{icon_state = "grimy"},/area/djstation) "aN" = (/obj/structure/table,/obj/structure/safe/floor,/obj/item/weapon/gun/projectile/automatic/pistol,/turf/simulated/floor{icon_state = "grimy"},/area/djstation) -"aQ" = (/obj/structure/table,/obj/machinery/microwave{pixel_y = 8},/turf/simulated/floor{icon_state = "bar"},/area/djstation) "aR" = (/obj/machinery/door/airlock/glass{name = "Kitchen"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/djstation) "aS" = (/obj/structure/table,/obj/item/device/radio/intercom{broadcasting = 0; dir = 8; freerange = 1; listening = 1; name = "Pirate Radio Listening Channel"; pixel_x = 0},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/djstation) "aT" = (/obj/structure/stool/bed/chair/office/light,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/djstation) @@ -740,7 +740,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafaxafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayayaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafafafafazaAaAaAaBafafafafafafaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeaeayaCayaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaFaGaHaIagaAaAaAaAaAagaKaLaMaNagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaaaeayayaCaCaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaQaHaHaHaRaAaSaTaSaAaUaVaVaVaVagaaaaaaaaaaaeaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaaayayayaCaCayaXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagahaHaHaHaRaAaSaTaSaAaUaVaVaVaVagaaaaaaaaaaaeaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaaayayayaCaCayaXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaZbabbaHagaAbcbdbeaAagbfbgbhbiagaeaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayayayayaCaCaCayayaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafbjafafbkafaAaAaAaAblafafafafafafaeaeaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDbmbmbnbmbmbmaDaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaboaeafbpafafbqaAbrbsafaaaeaeaebtaaaeaeaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabubvbvbwbvbuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/_maps/map_files/cyberiad/z8.dmm b/_maps/map_files/cyberiad/z8.dmm index 5a4bb1d9e7b..c705cab7733 100644 --- a/_maps/map_files/cyberiad/z8.dmm +++ b/_maps/map_files/cyberiad/z8.dmm @@ -29,6 +29,7 @@ "aC" = (/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/power/apc{dir = 1; pixel_y = 24},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/empty) "aD" = (/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/empty) "aE" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/traitor/radio) +"aF" = (/obj/structure/table,/obj/machinery/kitchen_machine/microwave{pixel_x = -3; pixel_y = 6},/turf/simulated/floor,/area/traitor/kitchen) "aG" = (/obj/structure/table,/obj/item/weapon/reagent_containers/dropper,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/chem) "aH" = (/obj/machinery/chem_master,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/chem) "aI" = (/obj/structure/table,/obj/machinery/reagentgrinder,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/chem) @@ -84,7 +85,6 @@ "bK" = (/obj/machinery/vending/dinnerware,/obj/machinery/light_switch{pixel_x = -24; pixel_y = 0},/turf/simulated/floor,/area/traitor/kitchen) "bL" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/condiment/saltshaker{pixel_x = -3; pixel_y = 0},/obj/item/weapon/reagent_containers/food/condiment/peppermill{pixel_x = 3},/turf/simulated/floor,/area/traitor/kitchen) "bM" = (/obj/structure/table,/obj/item/weapon/kitchen/rollingpin,/turf/simulated/floor,/area/traitor/kitchen) -"bN" = (/obj/structure/table,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/turf/simulated/floor,/area/traitor/kitchen) "bO" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor,/area/traitor/kitchen) "bP" = (/obj/structure/computerframe,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/empty) "bQ" = (/obj/machinery/teleport/station,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/empty) @@ -472,7 +472,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanaGaHaIaJaKaLaMaNaOaPaQaRaSaTazaUajaVaDaDaDaDamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanaWaXaYaZbababbbcbdbebfbgbhbibjbkblbmaDaDaDaDamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanbnbobpbqbrbsbtbubvbwbxbybzbAazbBajbCaDaDaDaDamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaananananavavavavbHbIbJajbKbLbMbNbOajaDbPbQbRaDaoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaananananavavavavbHbIbJajbKbLbMaFbOajaDbPbQbRaDaoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbHbIbSajajalalalajajaoamamamaoaoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapapapapapapbXbXbXbHbYbZcacbcccccccccdcccccccecfcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapchchchchcicjckbXclcmcncacccococpcpcccqcrcsctcuaqcwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/code/ATMOSPHERICS/chiller.dm b/code/ATMOSPHERICS/chiller.dm index 80b0a06e9c6..e2e4bd471e6 100644 --- a/code/ATMOSPHERICS/chiller.dm +++ b/code/ATMOSPHERICS/chiller.dm @@ -62,13 +62,13 @@ C.loc = src C.add_fingerprint(usr) - user.visible_message("\blue [user] inserts a power cell into [src].", "\blue You insert the power cell into [src].") + user.visible_message("[user] inserts a power cell into [src].", "You insert the power cell into [src].") else user << "The hatch must be open to insert a power cell." return else if(istype(I, /obj/item/weapon/screwdriver)) open = !open - user.visible_message("\blue [user] [open ? "opens" : "closes"] the hatch on the [src].", "\blue You [open ? "open" : "close"] the hatch on the [src].") + user.visible_message("[user] [open ? "opens" : "closes"] the hatch on the [src].", "You [open ? "open" : "close"] the hatch on the [src].") update_icon() if(!open && user.machine == src) user << browse(null, "window=aircond") @@ -106,7 +106,7 @@ onclose(user, "aircond") else on = !on - user.visible_message("\blue [user] switches [on ? "on" : "off"] the [src].","\blue You switch [on ? "on" : "off"] the [src].") + user.visible_message("[user] switches [on ? "on" : "off"] the [src].","You switch [on ? "on" : "off"] the [src].") update_icon() return @@ -131,7 +131,7 @@ usr.put_in_hands(cell) cell.add_fingerprint(usr) cell = null - usr.visible_message("\blue [usr] removes the power cell from \the [src].", "\blue You remove the power cell from \the [src].") + usr.visible_message("[usr] removes the power cell from \the [src].", "You remove the power cell from \the [src].") if("cellinstall") @@ -143,7 +143,7 @@ C.loc = src C.add_fingerprint(usr) - usr.visible_message("\blue [usr] inserts a power cell into \the [src].", "\blue You insert the power cell into \the [src].") + usr.visible_message("[usr] inserts a power cell into \the [src].", "You insert the power cell into \the [src].") src.updateDialog() else diff --git a/code/ATMOSPHERICS/components/binary_devices/binary_atmos_base.dm b/code/ATMOSPHERICS/components/binary_devices/binary_atmos_base.dm index 1b801ad3e13..8aabd24722b 100644 --- a/code/ATMOSPHERICS/components/binary_devices/binary_atmos_base.dm +++ b/code/ATMOSPHERICS/components/binary_devices/binary_atmos_base.dm @@ -1,4 +1,4 @@ -obj/machinery/atmospherics/binary +/obj/machinery/atmospherics/binary dir = SOUTH initialize_directions = SOUTH|NORTH use_power = 1 @@ -12,131 +12,131 @@ obj/machinery/atmospherics/binary var/datum/pipe_network/network1 var/datum/pipe_network/network2 - New() - ..() - switch(dir) - if(NORTH) - initialize_directions = NORTH|SOUTH - if(SOUTH) - initialize_directions = NORTH|SOUTH - if(EAST) - initialize_directions = EAST|WEST - if(WEST) - initialize_directions = EAST|WEST - air1 = new - air2 = new +/obj/machinery/atmospherics/binary/New() + ..() + switch(dir) + if(NORTH) + initialize_directions = NORTH|SOUTH + if(SOUTH) + initialize_directions = NORTH|SOUTH + if(EAST) + initialize_directions = EAST|WEST + if(WEST) + initialize_directions = EAST|WEST + air1 = new + air2 = new - air1.volume = 200 - air2.volume = 200 + air1.volume = 200 + air2.volume = 200 + +/obj/machinery/atmospherics/binary/Destroy() + loc = null + + if(node1) + node1.disconnect(src) + qdel(network1) + if(node2) + node2.disconnect(src) + qdel(network2) + + node1 = null + node2 = null + + return ..() // Housekeeping and pipe network stuff below - network_expand(datum/pipe_network/new_network, obj/machinery/atmospherics/pipe/reference) - if(reference == node1) - network1 = new_network +/obj/machinery/atmospherics/binary/network_expand(datum/pipe_network/new_network, obj/machinery/atmospherics/pipe/reference) + if(reference == node1) + network1 = new_network - else if(reference == node2) - network2 = new_network + else if(reference == node2) + network2 = new_network - if(new_network.normal_members.Find(src)) - return 0 + if(new_network.normal_members.Find(src)) + return 0 - new_network.normal_members += src + new_network.normal_members += src - return null + return null - Destroy() - loc = null +/obj/machinery/atmospherics/binary/initialize() + if(node1 && node2) return - if(node1) - node1.disconnect(src) - qdel(network1) - if(node2) - node2.disconnect(src) - qdel(network2) + var/node2_connect = dir + var/node1_connect = turn(dir, 180) + for(var/obj/machinery/atmospherics/target in get_step(src,node1_connect)) + if(target.initialize_directions & get_dir(target,src)) + var/c = check_connect_types(target,src) + if (c) + target.connected_to = c + src.connected_to = c + node1 = target + break + + for(var/obj/machinery/atmospherics/target in get_step(src,node2_connect)) + if(target.initialize_directions & get_dir(target,src)) + var/c = check_connect_types(target,src) + if (c) + target.connected_to = c + src.connected_to = c + node2 = target + break + + update_icon() + update_underlays() + +/obj/machinery/atmospherics/binary/build_network() + if(!network1 && node1) + network1 = new /datum/pipe_network() + network1.normal_members += src + network1.build_network(node1, src) + + if(!network2 && node2) + network2 = new /datum/pipe_network() + network2.normal_members += src + network2.build_network(node2, src) + + +/obj/machinery/atmospherics/binary/return_network(obj/machinery/atmospherics/reference) + build_network() + + if(reference==node1) + return network1 + + if(reference==node2) + return network2 + + return null + +/obj/machinery/atmospherics/binary/reassign_network(datum/pipe_network/old_network, datum/pipe_network/new_network) + if(network1 == old_network) + network1 = new_network + if(network2 == old_network) + network2 = new_network + + return 1 + +/obj/machinery/atmospherics/binary/return_network_air(datum/pipe_network/reference) + var/list/results = list() + + if(network1 == reference) + results += air1 + if(network2 == reference) + results += air2 + + return results + +/obj/machinery/atmospherics/binary/disconnect(obj/machinery/atmospherics/reference) + if(reference==node1) + qdel(network1) node1 = null + + else if(reference==node2) + qdel(network2) node2 = null - return ..() + update_icon() + update_underlays() - initialize() - if(node1 && node2) return - - var/node2_connect = dir - var/node1_connect = turn(dir, 180) - - for(var/obj/machinery/atmospherics/target in get_step(src,node1_connect)) - if(target.initialize_directions & get_dir(target,src)) - var/c = check_connect_types(target,src) - if (c) - target.connected_to = c - src.connected_to = c - node1 = target - break - - for(var/obj/machinery/atmospherics/target in get_step(src,node2_connect)) - if(target.initialize_directions & get_dir(target,src)) - var/c = check_connect_types(target,src) - if (c) - target.connected_to = c - src.connected_to = c - node2 = target - break - - update_icon() - update_underlays() - - build_network() - if(!network1 && node1) - network1 = new /datum/pipe_network() - network1.normal_members += src - network1.build_network(node1, src) - - if(!network2 && node2) - network2 = new /datum/pipe_network() - network2.normal_members += src - network2.build_network(node2, src) - - - return_network(obj/machinery/atmospherics/reference) - build_network() - - if(reference==node1) - return network1 - - if(reference==node2) - return network2 - - return null - - reassign_network(datum/pipe_network/old_network, datum/pipe_network/new_network) - if(network1 == old_network) - network1 = new_network - if(network2 == old_network) - network2 = new_network - - return 1 - - return_network_air(datum/pipe_network/reference) - var/list/results = list() - - if(network1 == reference) - results += air1 - if(network2 == reference) - results += air2 - - return results - - disconnect(obj/machinery/atmospherics/reference) - if(reference==node1) - del(network1) - node1 = null - - else if(reference==node2) - del(network2) - node2 = null - - update_icon() - update_underlays() - - return null \ No newline at end of file + return null \ No newline at end of file diff --git a/code/ATMOSPHERICS/components/binary_devices/circulator.dm b/code/ATMOSPHERICS/components/binary_devices/circulator.dm index 843b7dc6518..3d45a89d791 100644 --- a/code/ATMOSPHERICS/components/binary_devices/circulator.dm +++ b/code/ATMOSPHERICS/components/binary_devices/circulator.dm @@ -73,7 +73,7 @@ /obj/machinery/atmospherics/binary/circulator/attackby(obj/item/weapon/W as obj, mob/user as mob, params) if(istype(W, /obj/item/weapon/wrench)) anchored = !anchored - user << "\blue You [anchored ? "secure" : "unsecure"] the bolts holding [src] to the floor." + user << "You [anchored ? "secure" : "unsecure"] the bolts holding [src] to the floor." if(anchored) if(dir & (NORTH|SOUTH)) @@ -92,10 +92,10 @@ else if(node1) node1.disconnect(src) - del(network1) + qdel(network1) if(node2) node2.disconnect(src) - del(network2) + qdel(network2) node1 = null node2 = null diff --git a/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm b/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm index 38f7af1a658..c13d0f5580c 100644 --- a/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm +++ b/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm @@ -265,7 +265,7 @@ if(istype(W, /obj/item/weapon/weldingtool)) var/obj/item/weapon/weldingtool/WT = W if (WT.remove_fuel(0,user)) - user << "\blue Now welding the vent." + user << "Now welding the vent." if(do_after(user, 20)) if(!src || !WT.isOn()) return playsound(get_turf(src), 'sound/items/Welder2.ogg', 50, 1) @@ -278,9 +278,9 @@ welded = 0 update_icon() else - user << "\blue The welding tool needs to be on to start this task." + user << "The welding tool needs to be on to start this task." else - user << "\blue You need more welding fuel to complete this task." + user << "You need more welding fuel to complete this task." return 1*/ if(istype(W, /obj/item/device/multitool)) update_multitool_menu(user) @@ -288,24 +288,24 @@ if (!istype(W, /obj/item/weapon/wrench)) return ..() if (!(stat & NOPOWER) && on) - user << "\red You cannot unwrench this [src], turn it off first." + user << "You cannot unwrench this [src], turn it off first." return 1 var/turf/T = src.loc if (level==1 && isturf(T) && T.intact) - user << "\red You must remove the plating first." + user << "You must remove the plating first." return 1 var/datum/gas_mixture/int_air = return_air() var/datum/gas_mixture/env_air = loc.return_air() if ((int_air.return_pressure()-env_air.return_pressure()) > 2*ONE_ATMOSPHERE) - user << "\red You cannot unwrench this [src], it too exerted due to internal pressure." + user << "You cannot unwrench \the [src], it is too exerted due to internal pressure." add_fingerprint(user) return 1 playsound(get_turf(src), 'sound/items/Ratchet.ogg', 50, 1) - user << "\blue You begin to unfasten \the [src]..." + user << "You begin to unfasten \the [src]..." if (do_after(user, 40)) user.visible_message( \ "[user] unfastens \the [src].", \ - "\blue You have unfastened \the [src].", \ - "You hear ratchet.") + "You have unfastened \the [src].", \ + "You hear a ratchet.") new /obj/item/pipe(loc, make_from=src) - del(src) + qdel(src) diff --git a/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm b/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm index 9da08d5b117..78fcd687b8f 100644 --- a/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm +++ b/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm @@ -134,7 +134,7 @@ return src.add_fingerprint(usr) if(!src.allowed(user)) - user << "\red Access denied." + user << "Access denied." return usr.set_machine(src) interact(user) @@ -156,20 +156,20 @@ if (!istype(W, /obj/item/weapon/wrench)) return ..() if (on) - user << "\red You cannot unwrench this [src], turn it off first." + user << "You cannot unwrench this [src], turn it off first." return 1 var/datum/gas_mixture/int_air = return_air() var/datum/gas_mixture/env_air = loc.return_air() if ((int_air.return_pressure()-env_air.return_pressure()) > 2*ONE_ATMOSPHERE) - user << "\red You cannot unwrench this [src], it too exerted due to internal pressure." + user << "You cannot unwrench \the [src], it is too exerted due to internal pressure." add_fingerprint(user) return 1 playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) - user << "\blue You begin to unfasten \the [src]..." + user << "You begin to unfasten \the [src]..." if (do_after(user, 40)) user.visible_message( \ "[user] unfastens \the [src].", \ - "\blue You have unfastened \the [src].", \ - "You hear ratchet.") + "You have unfastened \the [src].", \ + "You hear a ratchet.") new /obj/item/pipe(loc, make_from=src) - del(src) \ No newline at end of file + qdel(src) \ No newline at end of file diff --git a/code/ATMOSPHERICS/components/binary_devices/pump.dm b/code/ATMOSPHERICS/components/binary_devices/pump.dm index 6091f7240cc..e191bb85b9a 100644 --- a/code/ATMOSPHERICS/components/binary_devices/pump.dm +++ b/code/ATMOSPHERICS/components/binary_devices/pump.dm @@ -160,7 +160,7 @@ Thus, the two variables affect pump operation are set in New(): return src.add_fingerprint(usr) if(!src.allowed(user)) - user << "\red Access denied." + user << "Access denied." return usr.set_machine(src) interact(user) @@ -188,20 +188,20 @@ Thus, the two variables affect pump operation are set in New(): if (!istype(W, /obj/item/weapon/wrench)) return ..() if (!(stat & NOPOWER) && on) - user << "\red You cannot unwrench this [src], turn it off first." + user << "You cannot unwrench this [src], turn it off first." return 1 var/datum/gas_mixture/int_air = return_air() var/datum/gas_mixture/env_air = loc.return_air() if ((int_air.return_pressure()-env_air.return_pressure()) > 2*ONE_ATMOSPHERE) - user << "\red You cannot unwrench this [src], it too exerted due to internal pressure." + user << "You cannot unwrench \the [src], it is too exerted due to internal pressure." add_fingerprint(user) return 1 playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) - user << "\blue You begin to unfasten \the [src]..." + user << "You begin to unfasten \the [src]..." if (do_after(user, 40)) user.visible_message( \ "[user] unfastens \the [src].", \ - "\blue You have unfastened \the [src].", \ - "You hear ratchet.") + "You have unfastened \the [src].", \ + "You hear a ratchet.") new /obj/item/pipe(loc, make_from=src) - del(src) \ No newline at end of file + qdel(src) \ No newline at end of file diff --git a/code/ATMOSPHERICS/components/binary_devices/volume_pump.dm b/code/ATMOSPHERICS/components/binary_devices/volume_pump.dm index cd30bf8cd2f..6ea82979dcd 100644 --- a/code/ATMOSPHERICS/components/binary_devices/volume_pump.dm +++ b/code/ATMOSPHERICS/components/binary_devices/volume_pump.dm @@ -147,7 +147,7 @@ Thus, the two variables affect pump operation are set in New(): return src.add_fingerprint(usr) if(!src.allowed(user)) - user << "\red Access denied." + user << "Access denied." return usr.set_machine(src) interact(user) @@ -175,20 +175,20 @@ Thus, the two variables affect pump operation are set in New(): if (!istype(W, /obj/item/weapon/wrench)) return ..() if (!(stat & NOPOWER) && on) - user << "\red You cannot unwrench this [src], turn it off first." + user << "You cannot unwrench this [src], turn it off first." return 1 var/datum/gas_mixture/int_air = return_air() var/datum/gas_mixture/env_air = loc.return_air() if ((int_air.return_pressure()-env_air.return_pressure()) > 2*ONE_ATMOSPHERE) - user << "\red You cannot unwrench this [src], it too exerted due to internal pressure." + user << "You cannot unwrench \the [src], it is too exerted due to internal pressure." add_fingerprint(user) return 1 playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) - user << "\blue You begin to unfasten \the [src]..." + user << "You begin to unfasten \the [src]..." if (do_after(user, 40)) user.visible_message( \ "[user] unfastens \the [src].", \ - "\blue You have unfastened \the [src].", \ - "You hear ratchet.") + "You have unfastened \the [src].", \ + "You hear a ratchet.") new /obj/item/pipe(loc, make_from=src) - del(src) \ No newline at end of file + qdel(src) \ No newline at end of file diff --git a/code/ATMOSPHERICS/components/omni_devices/omni_base.dm b/code/ATMOSPHERICS/components/omni_devices/omni_base.dm index d7756ee51ca..6f4d880a67d 100644 --- a/code/ATMOSPHERICS/components/omni_devices/omni_base.dm +++ b/code/ATMOSPHERICS/components/omni_devices/omni_base.dm @@ -79,18 +79,18 @@ int_pressure += P.air.return_pressure() var/datum/gas_mixture/env_air = loc.return_air() if ((int_pressure - env_air.return_pressure()) > 2*ONE_ATMOSPHERE) - user << "You cannot unwrench [src], it is too exerted due to internal pressure." + user << "You cannot unwrench [src], it is too exerted due to internal pressure." add_fingerprint(user) return 1 - user << "\blue You begin to unfasten \the [src]..." + user << "You begin to unfasten \the [src]..." playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) if(do_after(user, 40)) user.visible_message( \ "[user] unfastens \the [src].", \ - "\blue You have unfastened \the [src].", \ + "You have unfastened \the [src].", \ "You hear a ratchet.") new /obj/item/pipe(loc, make_from=src) - del(src) + qdel(src) /obj/machinery/atmospherics/omni/attack_hand(user as mob) if(..()) @@ -283,7 +283,7 @@ /obj/machinery/atmospherics/omni/disconnect(obj/machinery/atmospherics/reference) for(var/datum/omni_port/P in ports) if(reference == P.node) - del(P.network) + qdel(P.network) P.node = null P.update = 1 break diff --git a/code/ATMOSPHERICS/components/portables_connector.dm b/code/ATMOSPHERICS/components/portables_connector.dm index b2d51336007..64c0cdec852 100644 --- a/code/ATMOSPHERICS/components/portables_connector.dm +++ b/code/ATMOSPHERICS/components/portables_connector.dm @@ -125,7 +125,7 @@ /obj/machinery/atmospherics/portables_connector/disconnect(obj/machinery/atmospherics/reference) if(reference==node) - del(network) + qdel(network) node = null update_underlays() @@ -137,22 +137,22 @@ if (!istype(W, /obj/item/weapon/wrench)) return ..() if (connected_device) - user << "\red You cannot unwrench this [src], detach [connected_device] first." + user << "You cannot unwrench this [src], detach [connected_device] first." return 1 if (locate(/obj/machinery/portable_atmospherics, src.loc)) return 1 var/datum/gas_mixture/int_air = return_air() var/datum/gas_mixture/env_air = loc.return_air() if ((int_air.return_pressure()-env_air.return_pressure()) > 2*ONE_ATMOSPHERE) - user << "\red You cannot unwrench this [src], it too exerted due to internal pressure." + user << "You cannot unwrench \the [src], it is too exerted due to internal pressure." add_fingerprint(user) return 1 playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) - user << "\blue You begin to unfasten \the [src]..." + user << "You begin to unfasten \the [src]..." if (do_after(user, 40)) user.visible_message( \ "[user] unfastens \the [src].", \ - "\blue You have unfastened \the [src].", \ - "You hear ratchet.") + "You have unfastened \the [src].", \ + "You hear a ratchet.") new /obj/item/pipe(loc, make_from=src) - del(src) + qdel(src) diff --git a/code/ATMOSPHERICS/components/trinary_devices/filter.dm b/code/ATMOSPHERICS/components/trinary_devices/filter.dm index 24ce446edb7..5e1fabcebd3 100755 --- a/code/ATMOSPHERICS/components/trinary_devices/filter.dm +++ b/code/ATMOSPHERICS/components/trinary_devices/filter.dm @@ -41,7 +41,7 @@ Filter types: icon_state = "m" else icon_state = "" - + if(!powered()) icon_state += "off" else if(node2 && node3 && node1) @@ -162,18 +162,18 @@ Filter types: var/datum/gas_mixture/int_air = return_air() var/datum/gas_mixture/env_air = loc.return_air() if ((int_air.return_pressure()-env_air.return_pressure()) > 2*ONE_ATMOSPHERE) - user << "\red You cannot unwrench this [src], it too exerted due to internal pressure." + user << "You cannot unwrench \the [src], it is too exerted due to internal pressure." add_fingerprint(user) return 1 playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) - user << "\blue You begin to unfasten \the [src]..." + user << "You begin to unfasten \the [src]..." if (do_after(user, 40)) user.visible_message( \ "[user] unfastens \the [src].", \ - "\blue You have unfastened \the [src].", \ - "You hear ratchet.") + "You have unfastened \the [src].", \ + "You hear a ratchet.") new /obj/item/pipe(loc, make_from=src) - del(src) + qdel(src) /obj/machinery/atmospherics/trinary/filter/attack_hand(user as mob) // -- TLE @@ -181,7 +181,7 @@ Filter types: return if(!src.allowed(user)) - user << "\red Access denied." + user << "Access denied." return var/dat @@ -272,7 +272,7 @@ obj/machinery/atmospherics/trinary/filter/m_filter/New() /obj/machinery/atmospherics/trinary/filter/m_filter/initialize() set_frequency(frequency) - + if(node1 && node2 && node3) return var/node1_connect = turn(dir, -180) diff --git a/code/ATMOSPHERICS/components/trinary_devices/mixer.dm b/code/ATMOSPHERICS/components/trinary_devices/mixer.dm index 841e9761231..796ec44afb9 100644 --- a/code/ATMOSPHERICS/components/trinary_devices/mixer.dm +++ b/code/ATMOSPHERICS/components/trinary_devices/mixer.dm @@ -19,7 +19,7 @@ icon_state = "t" else icon_state = "" - + if(!powered()) icon_state += "off" else if(node2 && node3 && node1) @@ -120,25 +120,25 @@ var/datum/gas_mixture/int_air = return_air() var/datum/gas_mixture/env_air = loc.return_air() if ((int_air.return_pressure()-env_air.return_pressure()) > 2*ONE_ATMOSPHERE) - user << "\red You cannot unwrench this [src], it too exerted due to internal pressure." + user << "You cannot unwrench \the [src], it is too exerted due to internal pressure." add_fingerprint(user) return 1 playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) - user << "\blue You begin to unfasten \the [src]..." + user << "You begin to unfasten \the [src]..." if (do_after(user, 40)) user.visible_message( \ "[user] unfastens \the [src].", \ - "\blue You have unfastened \the [src].", \ - "You hear ratchet.") + "You have unfastened \the [src].", \ + "You hear a ratchet.") new /obj/item/pipe(loc, make_from=src) - del(src) + qdel(src) /obj/machinery/atmospherics/trinary/mixer/attack_hand(user as mob) if(..()) return src.add_fingerprint(usr) if(!src.allowed(user)) - user << "\red Access denied." + user << "Access denied." return usr.set_machine(src) var/dat = {"Power: [on?"On":"Off"]
@@ -183,7 +183,7 @@ src.updateUsrDialog() return -obj/machinery/atmospherics/trinary/mixer/t_mixer +/obj/machinery/atmospherics/trinary/mixer/t_mixer icon_state = "tmap" dir = SOUTH @@ -191,7 +191,7 @@ obj/machinery/atmospherics/trinary/mixer/t_mixer //node 3 is the outlet, nodes 1 & 2 are intakes -obj/machinery/atmospherics/trinary/mixer/t_mixer/New() +/obj/machinery/atmospherics/trinary/mixer/t_mixer/New() ..() switch(dir) if(NORTH) @@ -203,7 +203,7 @@ obj/machinery/atmospherics/trinary/mixer/t_mixer/New() if(WEST) initialize_directions = WEST|NORTH|SOUTH -obj/machinery/atmospherics/trinary/mixer/t_mixer/initialize() +/obj/machinery/atmospherics/trinary/mixer/t_mixer/initialize() if(node1 && node2 && node3) return var/node1_connect = turn(dir, -90) @@ -228,7 +228,7 @@ obj/machinery/atmospherics/trinary/mixer/t_mixer/initialize() update_icon() update_underlays() -obj/machinery/atmospherics/trinary/mixer/m_mixer +/obj/machinery/atmospherics/trinary/mixer/m_mixer icon_state = "mmap" dir = SOUTH @@ -236,7 +236,7 @@ obj/machinery/atmospherics/trinary/mixer/m_mixer //node 3 is the outlet, nodes 1 & 2 are intakes -obj/machinery/atmospherics/trinary/mixer/m_mixer/New() +/obj/machinery/atmospherics/trinary/mixer/m_mixer/New() ..() switch(dir) if(NORTH) @@ -248,7 +248,7 @@ obj/machinery/atmospherics/trinary/mixer/m_mixer/New() if(WEST) initialize_directions = WEST|SOUTH|EAST -obj/machinery/atmospherics/trinary/mixer/m_mixer/initialize() +/obj/machinery/atmospherics/trinary/mixer/m_mixer/initialize() if(node1 && node2 && node3) return var/node1_connect = turn(dir, -180) diff --git a/code/ATMOSPHERICS/components/trinary_devices/trinary_base.dm b/code/ATMOSPHERICS/components/trinary_devices/trinary_base.dm index a2ab2ad9163..8b166799ec0 100644 --- a/code/ATMOSPHERICS/components/trinary_devices/trinary_base.dm +++ b/code/ATMOSPHERICS/components/trinary_devices/trinary_base.dm @@ -1,4 +1,4 @@ -obj/machinery/atmospherics/trinary +/obj/machinery/atmospherics/trinary dir = SOUTH initialize_directions = SOUTH|NORTH|WEST use_power = 1 @@ -17,153 +17,153 @@ obj/machinery/atmospherics/trinary var/datum/pipe_network/network2 var/datum/pipe_network/network3 - New() - ..() - switch(dir) - if(NORTH) - initialize_directions = EAST|NORTH|SOUTH - if(SOUTH) - initialize_directions = SOUTH|WEST|NORTH - if(EAST) - initialize_directions = EAST|WEST|SOUTH - if(WEST) - initialize_directions = WEST|NORTH|EAST - air1 = new - air2 = new - air3 = new +/obj/machinery/atmospherics/trinary/New() + ..() + switch(dir) + if(NORTH) + initialize_directions = EAST|NORTH|SOUTH + if(SOUTH) + initialize_directions = SOUTH|WEST|NORTH + if(EAST) + initialize_directions = EAST|WEST|SOUTH + if(WEST) + initialize_directions = WEST|NORTH|EAST + air1 = new + air2 = new + air3 = new - air1.volume = 200 - air2.volume = 200 - air3.volume = 200 + air1.volume = 200 + air2.volume = 200 + air3.volume = 200 + +/obj/machinery/atmospherics/trinary/Destroy() + loc = null + + if(node1) + node1.disconnect(src) + qdel(network1) + if(node2) + node2.disconnect(src) + qdel(network2) + if(node3) + node3.disconnect(src) + qdel(network3) + + node1 = null + node2 = null + node3 = null + + return ..() // Housekeeping and pipe network stuff below - network_expand(datum/pipe_network/new_network, obj/machinery/atmospherics/pipe/reference) - if(reference == node1) - network1 = new_network +/obj/machinery/atmospherics/trinary/network_expand(datum/pipe_network/new_network, obj/machinery/atmospherics/pipe/reference) + if(reference == node1) + network1 = new_network - else if(reference == node2) - network2 = new_network + else if(reference == node2) + network2 = new_network - else if (reference == node3) - network3 = new_network + else if (reference == node3) + network3 = new_network - if(new_network.normal_members.Find(src)) - return 0 + if(new_network.normal_members.Find(src)) + return 0 - new_network.normal_members += src + new_network.normal_members += src - return null + return null - Destroy() - loc = null +/obj/machinery/atmospherics/trinary/initialize() + if(node1 && node2 && node3) return - if(node1) - node1.disconnect(src) - qdel(network1) - if(node2) - node2.disconnect(src) - qdel(network2) - if(node3) - node3.disconnect(src) - qdel(network3) + var/node1_connect = turn(dir, -180) + var/node2_connect = turn(dir, -90) + var/node3_connect = dir + for(var/obj/machinery/atmospherics/target in get_step(src,node1_connect)) + if(target.initialize_directions & get_dir(target,src)) + node1 = target + break + + for(var/obj/machinery/atmospherics/target in get_step(src,node2_connect)) + if(target.initialize_directions & get_dir(target,src)) + node2 = target + break + + for(var/obj/machinery/atmospherics/target in get_step(src,node3_connect)) + if(target.initialize_directions & get_dir(target,src)) + node3 = target + break + + update_icon() + update_underlays() + +/obj/machinery/atmospherics/trinary/build_network() + if(!network1 && node1) + network1 = new /datum/pipe_network() + network1.normal_members += src + network1.build_network(node1, src) + + if(!network2 && node2) + network2 = new /datum/pipe_network() + network2.normal_members += src + network2.build_network(node2, src) + + if(!network3 && node3) + network3 = new /datum/pipe_network() + network3.normal_members += src + network3.build_network(node3, src) + + +/obj/machinery/atmospherics/trinary/return_network(obj/machinery/atmospherics/reference) + build_network() + + if(reference==node1) + return network1 + + if(reference==node2) + return network2 + + if(reference==node3) + return network3 + + return null + +/obj/machinery/atmospherics/trinary/reassign_network(datum/pipe_network/old_network, datum/pipe_network/new_network) + if(network1 == old_network) + network1 = new_network + if(network2 == old_network) + network2 = new_network + if(network3 == old_network) + network3 = new_network + + return 1 + +/obj/machinery/atmospherics/trinary/return_network_air(datum/pipe_network/reference) + var/list/results = list() + + if(network1 == reference) + results += air1 + if(network2 == reference) + results += air2 + if(network3 == reference) + results += air3 + + return results + +/obj/machinery/atmospherics/trinary/disconnect(obj/machinery/atmospherics/reference) + if(reference==node1) + qdel(network1) node1 = null + + else if(reference==node2) + qdel(network2) node2 = null + + else if(reference==node3) + qdel(network3) node3 = null - return ..() + update_underlays() - initialize() - if(node1 && node2 && node3) return - - var/node1_connect = turn(dir, -180) - var/node2_connect = turn(dir, -90) - var/node3_connect = dir - - for(var/obj/machinery/atmospherics/target in get_step(src,node1_connect)) - if(target.initialize_directions & get_dir(target,src)) - node1 = target - break - - for(var/obj/machinery/atmospherics/target in get_step(src,node2_connect)) - if(target.initialize_directions & get_dir(target,src)) - node2 = target - break - - for(var/obj/machinery/atmospherics/target in get_step(src,node3_connect)) - if(target.initialize_directions & get_dir(target,src)) - node3 = target - break - - update_icon() - update_underlays() - - build_network() - if(!network1 && node1) - network1 = new /datum/pipe_network() - network1.normal_members += src - network1.build_network(node1, src) - - if(!network2 && node2) - network2 = new /datum/pipe_network() - network2.normal_members += src - network2.build_network(node2, src) - - if(!network3 && node3) - network3 = new /datum/pipe_network() - network3.normal_members += src - network3.build_network(node3, src) - - - return_network(obj/machinery/atmospherics/reference) - build_network() - - if(reference==node1) - return network1 - - if(reference==node2) - return network2 - - if(reference==node3) - return network3 - - return null - - reassign_network(datum/pipe_network/old_network, datum/pipe_network/new_network) - if(network1 == old_network) - network1 = new_network - if(network2 == old_network) - network2 = new_network - if(network3 == old_network) - network3 = new_network - - return 1 - - return_network_air(datum/pipe_network/reference) - var/list/results = list() - - if(network1 == reference) - results += air1 - if(network2 == reference) - results += air2 - if(network3 == reference) - results += air3 - - return results - - disconnect(obj/machinery/atmospherics/reference) - if(reference==node1) - del(network1) - node1 = null - - else if(reference==node2) - del(network2) - node2 = null - - else if(reference==node3) - del(network3) - node3 = null - - update_underlays() - - return null \ No newline at end of file + return null \ No newline at end of file diff --git a/code/ATMOSPHERICS/components/tvalve.dm b/code/ATMOSPHERICS/components/tvalve.dm index 70be99d73c3..ce4dcf1fb48 100644 --- a/code/ATMOSPHERICS/components/tvalve.dm +++ b/code/ATMOSPHERICS/components/tvalve.dm @@ -128,9 +128,9 @@ update_icon() if(network_node1) - del(network_node1) + qdel(network_node1) if(network_node3) - del(network_node3) + qdel(network_node3) build_network() if(network_node1&&network_node2) @@ -153,9 +153,9 @@ update_icon() if(network_node1) - del(network_node1) + qdel(network_node1) if(network_node2) - del(network_node2) + qdel(network_node2) build_network() if(network_node1&&network_node3) @@ -271,15 +271,15 @@ /obj/machinery/atmospherics/tvalve/disconnect(obj/machinery/atmospherics/reference) if(reference==node1) - del(network_node1) + qdel(network_node1) node1 = null else if(reference==node2) - del(network_node2) + qdel(network_node2) node2 = null else if(reference==node3) - del(network_node3) + qdel(network_node3) node2 = null update_underlays() @@ -317,7 +317,7 @@ if(!powered()) return if(!src.allowed(user)) - user << "\red Access denied." + user << "Access denied." return ..() @@ -359,23 +359,23 @@ if (!istype(W, /obj/item/weapon/wrench)) return ..() if (istype(src, /obj/machinery/atmospherics/tvalve/digital)) - user << "\red You cannot unwrench this [src], it's too complicated." + user << "You cannot unwrench this [src], it's too complicated." return 1 var/datum/gas_mixture/int_air = return_air() var/datum/gas_mixture/env_air = loc.return_air() if ((int_air.return_pressure()-env_air.return_pressure()) > 2*ONE_ATMOSPHERE) - user << "\red You cannot unwrench this [src], it too exerted due to internal pressure." + user << "You cannot unwrench \the [src], it is too exerted due to internal pressure." add_fingerprint(user) return 1 playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) - user << "\blue You begin to unfasten \the [src]..." + user << "You begin to unfasten \the [src]..." if (do_after(user, 40)) user.visible_message( \ "[user] unfastens \the [src].", \ - "\blue You have unfastened \the [src].", \ - "You hear ratchet.") + "You have unfastened \the [src].", \ + "You hear a ratchet.") new /obj/item/pipe(loc, make_from=src) - del(src) + qdel(src) /obj/machinery/atmospherics/tvalve/mirrored icon_state = "map_tvalvem0" @@ -457,7 +457,7 @@ if(!powered()) return if(!src.allowed(user)) - user << "\red Access denied." + user << "Access denied." return ..() diff --git a/code/ATMOSPHERICS/components/unary/cold_sink.dm b/code/ATMOSPHERICS/components/unary/cold_sink.dm index b1fa6a21b47..6e0a6e53259 100644 --- a/code/ATMOSPHERICS/components/unary/cold_sink.dm +++ b/code/ATMOSPHERICS/components/unary/cold_sink.dm @@ -12,30 +12,30 @@ var/current_temperature = T20C var/current_heat_capacity = 50000 //totally random - update_icon() - if(node) - icon_state = "intact_[on?("on"):("off")]" - else - icon_state = "exposed" +/obj/machinery/atmospherics/unary/cold_sink/update_icon() + if(node) + icon_state = "intact_[on?("on"):("off")]" + else + icon_state = "exposed" - on = 0 + on = 0 - return + return - process() - ..() - if(!on || !network) - return 0 - var/air_heat_capacity = air_contents.heat_capacity() - var/combined_heat_capacity = current_heat_capacity + air_heat_capacity - var/old_temperature = air_contents.temperature +/obj/machinery/atmospherics/unary/cold_sink/process() + ..() + if(!on || !network) + return 0 + var/air_heat_capacity = air_contents.heat_capacity() + var/combined_heat_capacity = current_heat_capacity + air_heat_capacity + var/old_temperature = air_contents.temperature - if(combined_heat_capacity > 0) - var/combined_energy = current_temperature*current_heat_capacity + air_heat_capacity*air_contents.temperature - air_contents.temperature = combined_energy/combined_heat_capacity + if(combined_heat_capacity > 0) + var/combined_energy = current_temperature*current_heat_capacity + air_heat_capacity*air_contents.temperature + air_contents.temperature = combined_energy/combined_heat_capacity - //todo: have current temperature affected. require power to bring down current temperature again + //todo: have current temperature affected. require power to bring down current temperature again - if(abs(old_temperature-air_contents.temperature) > 1) - network.update = 1 - return 1 \ No newline at end of file + if(abs(old_temperature-air_contents.temperature) > 1) + network.update = 1 + return 1 \ No newline at end of file diff --git a/code/ATMOSPHERICS/components/unary/generator_input.dm b/code/ATMOSPHERICS/components/unary/generator_input.dm index 2b31097dc41..bcbd124eca5 100644 --- a/code/ATMOSPHERICS/components/unary/generator_input.dm +++ b/code/ATMOSPHERICS/components/unary/generator_input.dm @@ -8,14 +8,13 @@ var/update_cycle - update_icon() - if(node) - icon_state = "intact" - else - icon_state = "exposed" +/obj/machinery/atmospherics/unary/generator_input/update_icon() + if(node) + icon_state = "intact" + else + icon_state = "exposed" - return + return - proc - return_exchange_air() - return air_contents \ No newline at end of file +/obj/machinery/atmospherics/unary/generator_input/proc/return_exchange_air() + return air_contents diff --git a/code/ATMOSPHERICS/components/unary/heat_exchanger.dm b/code/ATMOSPHERICS/components/unary/heat_exchanger.dm index 54e49e89378..7e3509d2979 100644 --- a/code/ATMOSPHERICS/components/unary/heat_exchanger.dm +++ b/code/ATMOSPHERICS/components/unary/heat_exchanger.dm @@ -10,80 +10,80 @@ var/obj/machinery/atmospherics/unary/heat_exchanger/partner = null var/update_cycle - update_icon() - if(node) - icon_state = "intact" - else - icon_state = "exposed" +/obj/machinery/atmospherics/unary/heat_exchanger/update_icon() + if(node) + icon_state = "intact" + else + icon_state = "exposed" - return + return - initialize() - if(!partner) - var/partner_connect = turn(dir,180) +/obj/machinery/atmospherics/unary/heat_exchanger/initialize() + if(!partner) + var/partner_connect = turn(dir,180) - for(var/obj/machinery/atmospherics/unary/heat_exchanger/target in get_step(src,partner_connect)) - if(target.dir & get_dir(src,target)) - partner = target - partner.partner = src - break + for(var/obj/machinery/atmospherics/unary/heat_exchanger/target in get_step(src,partner_connect)) + if(target.dir & get_dir(src,target)) + partner = target + partner.partner = src + break - ..() + ..() - process() - ..() - if(!partner) - return 0 +/obj/machinery/atmospherics/unary/heat_exchanger/process() + ..() + if(!partner) + return 0 - if(!air_master || air_master.current_cycle <= update_cycle) - return 0 + if(!air_master || air_master.current_cycle <= update_cycle) + return 0 - update_cycle = air_master.current_cycle - partner.update_cycle = air_master.current_cycle + update_cycle = air_master.current_cycle + partner.update_cycle = air_master.current_cycle - var/air_heat_capacity = air_contents.heat_capacity() - var/other_air_heat_capacity = partner.air_contents.heat_capacity() - var/combined_heat_capacity = other_air_heat_capacity + air_heat_capacity + var/air_heat_capacity = air_contents.heat_capacity() + var/other_air_heat_capacity = partner.air_contents.heat_capacity() + var/combined_heat_capacity = other_air_heat_capacity + air_heat_capacity - var/old_temperature = air_contents.temperature - var/other_old_temperature = partner.air_contents.temperature + var/old_temperature = air_contents.temperature + var/other_old_temperature = partner.air_contents.temperature - if(combined_heat_capacity > 0) - var/combined_energy = partner.air_contents.temperature*other_air_heat_capacity + air_heat_capacity*air_contents.temperature + if(combined_heat_capacity > 0) + var/combined_energy = partner.air_contents.temperature*other_air_heat_capacity + air_heat_capacity*air_contents.temperature - var/new_temperature = combined_energy/combined_heat_capacity - air_contents.temperature = new_temperature - partner.air_contents.temperature = new_temperature + var/new_temperature = combined_energy/combined_heat_capacity + air_contents.temperature = new_temperature + partner.air_contents.temperature = new_temperature - if(network) - if(abs(old_temperature-air_contents.temperature) > 1) - network.update = 1 + if(network) + if(abs(old_temperature-air_contents.temperature) > 1) + network.update = 1 - if(partner.network) - if(abs(other_old_temperature-partner.air_contents.temperature) > 1) - partner.network.update = 1 + if(partner.network) + if(abs(other_old_temperature-partner.air_contents.temperature) > 1) + partner.network.update = 1 + return 1 + +/obj/machinery/atmospherics/unary/heat_exchanger/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob, params) + if (!istype(W, /obj/item/weapon/wrench)) + return ..() + var/turf/T = src.loc + if (level==1 && isturf(T) && T.intact) + user << "You must remove the plating first." return 1 - - attackby(var/obj/item/weapon/W as obj, var/mob/user as mob, params) - if (!istype(W, /obj/item/weapon/wrench)) - return ..() - var/turf/T = src.loc - if (level==1 && isturf(T) && T.intact) - user << "\red You must remove the plating first." - return 1 - var/datum/gas_mixture/int_air = return_air() - var/datum/gas_mixture/env_air = loc.return_air() - if ((int_air.return_pressure()-env_air.return_pressure()) > 2*ONE_ATMOSPHERE) - user << "\red You cannot unwrench this [src], it too exerted due to internal pressure." - add_fingerprint(user) - return 1 - playsound(get_turf(src), 'sound/items/Ratchet.ogg', 50, 1) - user << "\blue You begin to unfasten \the [src]..." - if (do_after(user, 40)) - user.visible_message( \ - "[user] unfastens \the [src].", \ - "\blue You have unfastened \the [src].", \ - "You hear ratchet.") - new /obj/item/pipe(loc, make_from=src) - del(src) \ No newline at end of file + var/datum/gas_mixture/int_air = return_air() + var/datum/gas_mixture/env_air = loc.return_air() + if ((int_air.return_pressure()-env_air.return_pressure()) > 2*ONE_ATMOSPHERE) + user << "You cannot unwrench \the [src], it is too exerted due to internal pressure." + add_fingerprint(user) + return 1 + playsound(get_turf(src), 'sound/items/Ratchet.ogg', 50, 1) + user << "You begin to unfasten \the [src]..." + if (do_after(user, 40)) + user.visible_message( \ + "[user] unfastens \the [src].", \ + "You have unfastened \the [src].", \ + "You hear a ratchet.") + new /obj/item/pipe(loc, make_from=src) + qdel(src) \ No newline at end of file diff --git a/code/ATMOSPHERICS/components/unary/heat_source.dm b/code/ATMOSPHERICS/components/unary/heat_source.dm index 2d3e9b67a8e..2837bcf188d 100644 --- a/code/ATMOSPHERICS/components/unary/heat_source.dm +++ b/code/ATMOSPHERICS/components/unary/heat_source.dm @@ -14,30 +14,30 @@ var/current_temperature = T20C var/current_heat_capacity = 50000 //totally random - update_icon() - if(node) - icon_state = "intact_[on?("on"):("off")]" - else - icon_state = "exposed" +/obj/machinery/atmospherics/unary/heat_reservoir/update_icon() + if(node) + icon_state = "intact_[on?("on"):("off")]" + else + icon_state = "exposed" - on = 0 + on = 0 - return + return - process() - ..() - if(!on || !network) - return 0 - var/air_heat_capacity = air_contents.heat_capacity() - var/combined_heat_capacity = current_heat_capacity + air_heat_capacity - var/old_temperature = air_contents.temperature +/obj/machinery/atmospherics/unary/heat_reservoir/process() + ..() + if(!on || !network) + return 0 + var/air_heat_capacity = air_contents.heat_capacity() + var/combined_heat_capacity = current_heat_capacity + air_heat_capacity + var/old_temperature = air_contents.temperature - if(combined_heat_capacity > 0) - var/combined_energy = current_temperature*current_heat_capacity + air_heat_capacity*air_contents.temperature - air_contents.temperature = combined_energy/combined_heat_capacity + if(combined_heat_capacity > 0) + var/combined_energy = current_temperature*current_heat_capacity + air_heat_capacity*air_contents.temperature + air_contents.temperature = combined_energy/combined_heat_capacity - //todo: have current temperature affected. require power to bring up current temperature again + //todo: have current temperature affected. require power to bring up current temperature again - if(abs(old_temperature-air_contents.temperature) > 1) - network.update = 1 - return 1 \ No newline at end of file + if(abs(old_temperature-air_contents.temperature) > 1) + network.update = 1 + return 1 \ No newline at end of file diff --git a/code/ATMOSPHERICS/components/unary/outlet_injector.dm b/code/ATMOSPHERICS/components/unary/outlet_injector.dm index 990fba75e02..43c9a84d988 100644 --- a/code/ATMOSPHERICS/components/unary/outlet_injector.dm +++ b/code/ATMOSPHERICS/components/unary/outlet_injector.dm @@ -174,27 +174,27 @@ if (!istype(W, /obj/item/weapon/wrench)) return ..() if (!(stat & NOPOWER) && on) - user << "\red You cannot unwrench this [src], turn it off first." + user << "You cannot unwrench this [src], turn it off first." return 1 var/turf/T = src.loc if (level==1 && isturf(T) && T.intact) - user << "\red You must remove the plating first." + user << "You must remove the plating first." return 1 var/datum/gas_mixture/int_air = return_air() var/datum/gas_mixture/env_air = loc.return_air() if ((int_air.return_pressure()-env_air.return_pressure()) > 2*ONE_ATMOSPHERE) - user << "\red You cannot unwrench this [src], it too exerted due to internal pressure." + user << "You cannot unwrench \the [src], it is too exerted due to internal pressure." add_fingerprint(user) return 1 playsound(get_turf(src), 'sound/items/Ratchet.ogg', 50, 1) - user << "\blue You begin to unfasten \the [src]..." + user << "You begin to unfasten \the [src]..." if (do_after(user, 40)) user.visible_message( \ "[user] unfastens \the [src].", \ - "\blue You have unfastened \the [src].", \ - "You hear ratchet.") + "You have unfastened \the [src].", \ + "You hear a ratchet.") new /obj/item/pipe(loc, make_from=src) - del(src) + qdel(src) /obj/machinery/atmospherics/unary/outlet_injector/interact(mob/user as mob) update_multitool_menu(user) diff --git a/code/ATMOSPHERICS/components/unary/oxygen_generator.dm b/code/ATMOSPHERICS/components/unary/oxygen_generator.dm index 9a58be7c302..805079db234 100644 --- a/code/ATMOSPHERICS/components/unary/oxygen_generator.dm +++ b/code/ATMOSPHERICS/components/unary/oxygen_generator.dm @@ -1,4 +1,4 @@ -obj/machinery/atmospherics/unary/oxygen_generator +/obj/machinery/atmospherics/unary/oxygen_generator icon = 'icons/obj/atmospherics/oxygen_generator.dmi' icon_state = "intact_off" density = 1 @@ -13,37 +13,37 @@ obj/machinery/atmospherics/unary/oxygen_generator var/oxygen_content = 10 - update_icon() - if(node) - icon_state = "intact_[on?("on"):("off")]" - else - icon_state = "exposed_off" +/obj/machinery/atmospherics/unary/oxygen_generator/update_icon() + if(node) + icon_state = "intact_[on?("on"):("off")]" + else + icon_state = "exposed_off" - on = 0 + on = 0 - return + return - New() - ..() +/obj/machinery/atmospherics/unary/oxygen_generator/New() + ..() - air_contents.volume = 50 + air_contents.volume = 50 - process() - ..() - if(!on) - return 0 +/obj/machinery/atmospherics/unary/oxygen_generator/process() + ..() + if(!on) + return 0 - var/total_moles = air_contents.total_moles() + var/total_moles = air_contents.total_moles() - if(total_moles < oxygen_content) - var/current_heat_capacity = air_contents.heat_capacity() + if(total_moles < oxygen_content) + var/current_heat_capacity = air_contents.heat_capacity() - var/added_oxygen = oxygen_content - total_moles + var/added_oxygen = oxygen_content - total_moles - air_contents.temperature = (current_heat_capacity*air_contents.temperature + 20*added_oxygen*T0C)/(current_heat_capacity+20*added_oxygen) - air_contents.oxygen += added_oxygen + air_contents.temperature = (current_heat_capacity*air_contents.temperature + 20*added_oxygen*T0C)/(current_heat_capacity+20*added_oxygen) + air_contents.oxygen += added_oxygen - if(network) - network.update = 1 + if(network) + network.update = 1 - return 1 \ No newline at end of file + return 1 \ No newline at end of file diff --git a/code/ATMOSPHERICS/components/unary/thermal_plate.dm b/code/ATMOSPHERICS/components/unary/thermal_plate.dm index 1f5c78de6cf..65e37feff34 100644 --- a/code/ATMOSPHERICS/components/unary/thermal_plate.dm +++ b/code/ATMOSPHERICS/components/unary/thermal_plate.dm @@ -12,102 +12,101 @@ name = "Thermal Transfer Plate" desc = "Transfers heat to and from an area" - update_icon() - var/prefix="" - //var/suffix="_idle" // Also available: _heat, _cool - if(level == 1 && istype(loc, /turf/simulated)) - prefix="h" - icon_state = "[prefix]off" +/obj/machinery/atmospherics/unary/thermal_plate/update_icon() + var/prefix="" + //var/suffix="_idle" // Also available: _heat, _cool + if(level == 1 && istype(loc, /turf/simulated)) + prefix="h" + icon_state = "[prefix]off" - process() - ..() +/obj/machinery/atmospherics/unary/thermal_plate/process() + ..() - var/datum/gas_mixture/environment = loc.return_air() + var/datum/gas_mixture/environment = loc.return_air() - //Get processable air sample and thermal info from environment + //Get processable air sample and thermal info from environment - var/transfer_moles = 0.25 * environment.total_moles() - var/datum/gas_mixture/external_removed = environment.remove(transfer_moles) + var/transfer_moles = 0.25 * environment.total_moles() + var/datum/gas_mixture/external_removed = environment.remove(transfer_moles) - if (!external_removed) - return radiate() + if (!external_removed) + return radiate() - if (external_removed.total_moles() < 10) - return radiate() + if (external_removed.total_moles() < 10) + return radiate() - //Get same info from connected gas + //Get same info from connected gas - var/internal_transfer_moles = 0.25 * air_contents.total_moles() - var/datum/gas_mixture/internal_removed = air_contents.remove(internal_transfer_moles) + var/internal_transfer_moles = 0.25 * air_contents.total_moles() + var/datum/gas_mixture/internal_removed = air_contents.remove(internal_transfer_moles) - if (!internal_removed) - environment.merge(external_removed) - return 1 - - var/combined_heat_capacity = internal_removed.heat_capacity() + external_removed.heat_capacity() - var/combined_energy = internal_removed.temperature * internal_removed.heat_capacity() + external_removed.heat_capacity() * external_removed.temperature - - if(!combined_heat_capacity) combined_heat_capacity = 1 - var/final_temperature = combined_energy / combined_heat_capacity - - external_removed.temperature = final_temperature + if (!internal_removed) environment.merge(external_removed) - - internal_removed.temperature = final_temperature - air_contents.merge(internal_removed) - - network.update = 1 - return 1 - hide(var/i) //to make the little pipe section invisible, the icon changes. - var/prefix="" - //var/suffix="_idle" // Also available: _heat, _cool - if(i == 1 && istype(loc, /turf/simulated)) - prefix="h" - icon_state = "[prefix]off" - return + var/combined_heat_capacity = internal_removed.heat_capacity() + external_removed.heat_capacity() + var/combined_energy = internal_removed.temperature * internal_removed.heat_capacity() + external_removed.heat_capacity() * external_removed.temperature - attackby(var/obj/item/weapon/W as obj, var/mob/user as mob, params) - if (!istype(W, /obj/item/weapon/wrench)) - return ..() - var/turf/T = src.loc - if (level==1 && isturf(T) && T.intact) - user << "\red You must remove the plating first." - return 1 - var/datum/gas_mixture/int_air = return_air() - var/datum/gas_mixture/env_air = loc.return_air() - if ((int_air.return_pressure()-env_air.return_pressure()) > 2*ONE_ATMOSPHERE) - user << "\red You cannot unwrench this [src], it too exerted due to internal pressure." - add_fingerprint(user) - return 1 - playsound(get_turf(src), 'sound/items/Ratchet.ogg', 50, 1) - user << "\blue You begin to unfasten \the [src]..." - if (do_after(user, 40)) - user.visible_message( \ - "[user] unfastens \the [src].", \ - "\blue You have unfastened \the [src].", \ - "You hear ratchet.") - new /obj/item/pipe(loc, make_from=src) - del(src) + if(!combined_heat_capacity) combined_heat_capacity = 1 + var/final_temperature = combined_energy / combined_heat_capacity - proc/radiate() + external_removed.temperature = final_temperature + environment.merge(external_removed) - var/internal_transfer_moles = 0.25 * air_contents.total_moles() - var/datum/gas_mixture/internal_removed = air_contents.remove(internal_transfer_moles) + internal_removed.temperature = final_temperature + air_contents.merge(internal_removed) - if (!internal_removed) - return 1 + network.update = 1 - var/combined_heat_capacity = internal_removed.heat_capacity() + RADIATION_CAPACITY - var/combined_energy = internal_removed.temperature * internal_removed.heat_capacity() + (RADIATION_CAPACITY * 6.4) + return 1 - var/final_temperature = combined_energy / combined_heat_capacity +/obj/machinery/atmospherics/unary/thermal_plate/hide(var/i) //to make the little pipe section invisible, the icon changes. + var/prefix="" + //var/suffix="_idle" // Also available: _heat, _cool + if(i == 1 && istype(loc, /turf/simulated)) + prefix="h" + icon_state = "[prefix]off" + return - internal_removed.temperature = final_temperature - air_contents.merge(internal_removed) +/obj/machinery/atmospherics/unary/thermal_plate/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob, params) + if (!istype(W, /obj/item/weapon/wrench)) + return ..() + var/turf/T = src.loc + if (level==1 && isturf(T) && T.intact) + user << "You must remove the plating first." + return 1 + var/datum/gas_mixture/int_air = return_air() + var/datum/gas_mixture/env_air = loc.return_air() + if ((int_air.return_pressure()-env_air.return_pressure()) > 2*ONE_ATMOSPHERE) + user << "You cannot unwrench \the [src], it is too exerted due to internal pressure." + add_fingerprint(user) + return 1 + playsound(get_turf(src), 'sound/items/Ratchet.ogg', 50, 1) + user << "You begin to unfasten \the [src]..." + if (do_after(user, 40)) + user.visible_message( \ + "[user] unfastens \the [src].", \ + "You have unfastened \the [src].", \ + "You hear a ratchet.") + new /obj/item/pipe(loc, make_from=src) + qdel(src) - if (network) - network.update = 1 +/obj/machinery/atmospherics/unary/thermal_plate/proc/radiate() + var/internal_transfer_moles = 0.25 * air_contents.total_moles() + var/datum/gas_mixture/internal_removed = air_contents.remove(internal_transfer_moles) - return 1 \ No newline at end of file + if (!internal_removed) + return 1 + + var/combined_heat_capacity = internal_removed.heat_capacity() + RADIATION_CAPACITY + var/combined_energy = internal_removed.temperature * internal_removed.heat_capacity() + (RADIATION_CAPACITY * 6.4) + + var/final_temperature = combined_energy / combined_heat_capacity + + internal_removed.temperature = final_temperature + air_contents.merge(internal_removed) + + if (network) + network.update = 1 + + return 1 \ No newline at end of file diff --git a/code/ATMOSPHERICS/components/unary/unary_base.dm b/code/ATMOSPHERICS/components/unary/unary_base.dm index 5ec065f4ebd..b1fbdb29937 100644 --- a/code/ATMOSPHERICS/components/unary/unary_base.dm +++ b/code/ATMOSPHERICS/components/unary/unary_base.dm @@ -9,88 +9,88 @@ var/datum/pipe_network/network - New() - ..() - initialize_directions = dir - air_contents = new +/obj/machinery/atmospherics/unary/New() + ..() + initialize_directions = dir + air_contents = new - air_contents.volume = 200 + air_contents.volume = 200 + +/obj/machinery/atmospherics/unary/Destroy() + loc = null + + if(node) + node.disconnect(src) + qdel(network) + + node = null + + return ..() // Housekeeping and pipe network stuff below - network_expand(datum/pipe_network/new_network, obj/machinery/atmospherics/pipe/reference) - if(reference == node) - network = new_network +/obj/machinery/atmospherics/unary/network_expand(datum/pipe_network/new_network, obj/machinery/atmospherics/pipe/reference) + if(reference == node) + network = new_network - if(new_network.normal_members.Find(src)) - return 0 + if(new_network.normal_members.Find(src)) + return 0 - new_network.normal_members += src + new_network.normal_members += src - return null + return null - Destroy() - loc = null +/obj/machinery/atmospherics/unary/initialize() + if(node) return - if(node) - node.disconnect(src) - qdel(network) + var/node_connect = dir + for(var/obj/machinery/atmospherics/target in get_step(src,node_connect)) + if(target.initialize_directions & get_dir(target,src)) + var/c = check_connect_types(target,src) + if (c) + target.connected_to = c + src.connected_to = c + node = target + break + + update_icon() + update_underlays() + +/obj/machinery/atmospherics/unary/build_network() + if(!network && node) + network = new /datum/pipe_network() + network.normal_members += src + network.build_network(node, src) + + +/obj/machinery/atmospherics/unary/return_network(obj/machinery/atmospherics/reference) + build_network() + + if(reference == node || reference == src) + return network + + return null + +/obj/machinery/atmospherics/unary/reassign_network(datum/pipe_network/old_network, datum/pipe_network/new_network) + if(network == old_network) + network = new_network + + return 1 + +/obj/machinery/atmospherics/unary/return_network_air(datum/pipe_network/reference) + var/list/results = list() + + if(network == reference) + results += air_contents + + return results + +/obj/machinery/atmospherics/unary/disconnect(obj/machinery/atmospherics/reference) + if(reference==node) + qdel(network) node = null - return ..() + update_icon() + update_underlays() - initialize() - if(node) return - - var/node_connect = dir - - for(var/obj/machinery/atmospherics/target in get_step(src,node_connect)) - if(target.initialize_directions & get_dir(target,src)) - var/c = check_connect_types(target,src) - if (c) - target.connected_to = c - src.connected_to = c - node = target - break - - update_icon() - update_underlays() - - build_network() - if(!network && node) - network = new /datum/pipe_network() - network.normal_members += src - network.build_network(node, src) - - - return_network(obj/machinery/atmospherics/reference) - build_network() - - if(reference == node || reference == src) - return network - - return null - - reassign_network(datum/pipe_network/old_network, datum/pipe_network/new_network) - if(network == old_network) - network = new_network - - return 1 - - return_network_air(datum/pipe_network/reference) - var/list/results = list() - - if(network == reference) - results += air_contents - - return results - - disconnect(obj/machinery/atmospherics/reference) - if(reference==node) - del(network) - node = null - - update_icon() - update_underlays() - - return null \ No newline at end of file + return null \ No newline at end of file diff --git a/code/ATMOSPHERICS/components/unary/vent_pump.dm b/code/ATMOSPHERICS/components/unary/vent_pump.dm index 6e8377ab2db..307b98f0ad7 100644 --- a/code/ATMOSPHERICS/components/unary/vent_pump.dm +++ b/code/ATMOSPHERICS/components/unary/vent_pump.dm @@ -324,7 +324,7 @@ if(istype(W, /obj/item/weapon/weldingtool)) var/obj/item/weapon/weldingtool/WT = W if (WT.remove_fuel(0,user)) - user << "\blue Now welding the vent." + user << "Now welding the vent." if(do_after(user, 20)) if(!src || !WT.isOn()) return playsound(src.loc, 'sound/items/Welder2.ogg', 50, 1) @@ -338,9 +338,9 @@ update_icon() else - user << "\blue The welding tool needs to be on to start this task." + user << "The welding tool needs to be on to start this task." else - user << "\blue You need more welding fuel to complete this task." + user << "You need more welding fuel to complete this task." return 1 else if(istype(W, /obj/item/device/multitool)) update_multitool_menu(user) @@ -399,25 +399,25 @@ if (!istype(W, /obj/item/weapon/wrench)) return ..() if (!(stat & NOPOWER) && on) - user << "\red You cannot unwrench this [src], turn it off first." + user << "You cannot unwrench this [src], turn it off first." return 1 var/turf/T = src.loc if (node && node.level==1 && isturf(T) && T.intact) - user << "\red You must remove the plating first." + user << "You must remove the plating first." return 1 var/datum/gas_mixture/int_air = return_air() var/datum/gas_mixture/env_air = loc.return_air() if ((int_air.return_pressure()-env_air.return_pressure()) > 2*ONE_ATMOSPHERE) - user << "\red You cannot unwrench this [src], it too exerted due to internal pressure." + user << "You cannot unwrench \the [src], it is too exerted due to internal pressure." add_fingerprint(user) return 1 playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) - user << "\blue You begin to unfasten \the [src]..." + user << "You begin to unfasten \the [src]..." if (do_after(user, 40)) user.visible_message( \ "[user] unfastens \the [src].", \ - "\blue You have unfastened \the [src].", \ - "You hear ratchet.") + "You have unfastened \the [src].", \ + "You hear a ratchet.") new /obj/item/pipe(loc, make_from=src) qdel(src) diff --git a/code/ATMOSPHERICS/components/unary/vent_scrubber.dm b/code/ATMOSPHERICS/components/unary/vent_scrubber.dm index 2d2f87c7935..5a6220a48ee 100644 --- a/code/ATMOSPHERICS/components/unary/vent_scrubber.dm +++ b/code/ATMOSPHERICS/components/unary/vent_scrubber.dm @@ -348,25 +348,25 @@ if (!istype(W, /obj/item/weapon/wrench)) return ..() if (!(stat & NOPOWER) && on) - user << "\red You cannot unwrench this [src], turn it off first." + user << "You cannot unwrench this [src], turn it off first." return 1 var/turf/T = src.loc if (node && node.level==1 && isturf(T) && T.intact) - user << "\red You must remove the plating first." + user << "You must remove the plating first." return 1 var/datum/gas_mixture/int_air = return_air() var/datum/gas_mixture/env_air = loc.return_air() if ((int_air.return_pressure()-env_air.return_pressure()) > 2*ONE_ATMOSPHERE) - user << "\red You cannot unwrench this [src], it too exerted due to internal pressure." + user << "You cannot unwrench \the [src], it is too exerted due to internal pressure." add_fingerprint(user) return 1 playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) - user << "\blue You begin to unfasten \the [src]..." + user << "You begin to unfasten \the [src]..." if (do_after(user, 40)) user.visible_message( \ "[user] unfastens \the [src].", \ - "\blue You have unfastened \the [src].", \ - "You hear ratchet.") + "You have unfastened \the [src].", \ + "You hear a ratchet.") new /obj/item/pipe(loc, make_from=src) qdel(src) diff --git a/code/ATMOSPHERICS/components/valve.dm b/code/ATMOSPHERICS/components/valve.dm index 88a83d13b13..3706560e15c 100644 --- a/code/ATMOSPHERICS/components/valve.dm +++ b/code/ATMOSPHERICS/components/valve.dm @@ -115,9 +115,9 @@ update_icon() if(network_node1) - del(network_node1) + qdel(network_node1) if(network_node2) - del(network_node2) + qdel(network_node2) build_network() @@ -222,11 +222,11 @@ /obj/machinery/atmospherics/valve/disconnect(obj/machinery/atmospherics/reference) if(reference==node1) - del(network_node1) + qdel(network_node1) node1 = null else if(reference==node2) - del(network_node2) + qdel(network_node2) node2 = null update_underlays() @@ -250,7 +250,7 @@ if(!powered()) return if(!src.allowed(user)) - user << "\red Access denied." + user << "Access denied." return ..() @@ -319,18 +319,18 @@ var/datum/gas_mixture/int_air = return_air() var/datum/gas_mixture/env_air = loc.return_air() if ((int_air.return_pressure()-env_air.return_pressure()) > 2*ONE_ATMOSPHERE) - user << "\red You cannot unwrench this [src], it too exerted due to internal pressure." + user << "You cannot unwrench \the [src], it is too exerted due to internal pressure." add_fingerprint(user) return 1 playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) - user << "\blue You begin to unfasten \the [src]..." + user << "You begin to unfasten \the [src]..." if (do_after(user, 40)) user.visible_message( \ "[user] unfastens \the [src].", \ - "\blue You have unfastened \the [src].", \ - "You hear ratchet.") + "You have unfastened \the [src].", \ + "You hear a ratchet.") new /obj/item/pipe(loc, make_from=src) - del(src) + qdel(src) /obj/machinery/atmospherics/valve/digital/multitool_menu(var/mob/user,var/obj/item/device/multitool/P) return {" diff --git a/code/ATMOSPHERICS/datum_pipe_network.dm b/code/ATMOSPHERICS/datum_pipe_network.dm index 3b4cbb996e4..0b81de0ead0 100644 --- a/code/ATMOSPHERICS/datum_pipe_network.dm +++ b/code/ATMOSPHERICS/datum_pipe_network.dm @@ -1,6 +1,6 @@ var/global/list/datum/pipe_network/pipe_networks = list() -datum/pipe_network +/datum/pipe_network var/list/datum/gas_mixture/gases = list() //All of the gas_mixtures continuously connected in this network var/list/obj/machinery/atmospherics/normal_members = list() @@ -10,134 +10,134 @@ datum/pipe_network var/update = 1 var/datum/gas_mixture/air_transient = null - New() - air_transient = new() +/datum/pipe_network/New() + air_transient = new() - ..() + ..() - proc/process() - //Equalize gases amongst pipe if called for - if(update) - update = 0 - reconcile_air() //equalize_gases(gases) +/datum/pipe_network/proc/process() + //Equalize gases amongst pipe if called for + if(update) + update = 0 + reconcile_air() //equalize_gases(gases) - //Give pipelines their process call for pressure checking and what not. Have to remove pressure checks for the time being as pipes dont radiate heat - Mport - //for(var/datum/pipeline/line_member in line_members) - // line_member.process() + //Give pipelines their process call for pressure checking and what not. Have to remove pressure checks for the time being as pipes dont radiate heat - Mport + //for(var/datum/pipeline/line_member in line_members) + // line_member.process() - proc/build_network(obj/machinery/atmospherics/start_normal, obj/machinery/atmospherics/reference) - //Purpose: Generate membership roster - //Notes: Assuming that members will add themselves to appropriate roster in network_expand() +/datum/pipe_network/proc/build_network(obj/machinery/atmospherics/start_normal, obj/machinery/atmospherics/reference) + //Purpose: Generate membership roster + //Notes: Assuming that members will add themselves to appropriate roster in network_expand() - if(!start_normal) - qdel(src) + if(!start_normal) + qdel(src) - start_normal.network_expand(src, reference) + start_normal.network_expand(src, reference) - update_network_gases() + update_network_gases() + + if((normal_members.len>0)||(line_members.len>0)) + pipe_networks += src + else + qdel(src) + +/datum/pipe_network/proc/merge(datum/pipe_network/giver) + if(giver==src) return 0 + + normal_members |= giver.normal_members + + line_members |= giver.line_members + + for(var/obj/machinery/atmospherics/normal_member in giver.normal_members) + normal_member.reassign_network(giver, src) + + for(var/datum/pipeline/line_member in giver.line_members) + line_member.network = src + + update_network_gases() + return 1 + +/datum/pipe_network/proc/update_network_gases() + //Go through membership roster and make sure gases is up to date + + gases = list() + + for(var/obj/machinery/atmospherics/normal_member in normal_members) + var/result = normal_member.return_network_air(src) + if(result) gases += result + + for(var/datum/pipeline/line_member in line_members) + gases += line_member.air + +/datum/pipe_network/proc/reconcile_air() + //Perfectly equalize all gases members instantly + + //Calculate totals from individual components + var/total_thermal_energy = 0 + var/total_heat_capacity = 0 + + air_transient.volume = 0 + + air_transient.oxygen = 0 + air_transient.nitrogen = 0 + air_transient.toxins = 0 + air_transient.carbon_dioxide = 0 + + + air_transient.trace_gases = list() + + for(var/datum/gas_mixture/gas in gases) + air_transient.volume += gas.volume + var/temp_heatcap = gas.heat_capacity() + total_thermal_energy += gas.temperature*temp_heatcap + total_heat_capacity += temp_heatcap + + air_transient.oxygen += gas.oxygen + air_transient.nitrogen += gas.nitrogen + air_transient.toxins += gas.toxins + air_transient.carbon_dioxide += gas.carbon_dioxide + + if(gas.trace_gases.len) + for(var/datum/gas/trace_gas in gas.trace_gases) + var/datum/gas/corresponding = locate(trace_gas.type) in air_transient.trace_gases + if(!corresponding) + corresponding = new trace_gas.type() + air_transient.trace_gases += corresponding + + corresponding.moles += trace_gas.moles + + if(air_transient.volume > 0) + + if(total_heat_capacity > 0) + air_transient.temperature = total_thermal_energy/total_heat_capacity + + //Allow air mixture to react + if(air_transient.react()) + update = 1 - if((normal_members.len>0)||(line_members.len>0)) - pipe_networks += src else - qdel(src) - - proc/merge(datum/pipe_network/giver) - if(giver==src) return 0 - - normal_members |= giver.normal_members - - line_members |= giver.line_members - - for(var/obj/machinery/atmospherics/normal_member in giver.normal_members) - normal_member.reassign_network(giver, src) - - for(var/datum/pipeline/line_member in giver.line_members) - line_member.network = src - - update_network_gases() - return 1 - - proc/update_network_gases() - //Go through membership roster and make sure gases is up to date - - gases = list() - - for(var/obj/machinery/atmospherics/normal_member in normal_members) - var/result = normal_member.return_network_air(src) - if(result) gases += result - - for(var/datum/pipeline/line_member in line_members) - gases += line_member.air - - proc/reconcile_air() - //Perfectly equalize all gases members instantly - - //Calculate totals from individual components - var/total_thermal_energy = 0 - var/total_heat_capacity = 0 - - air_transient.volume = 0 - - air_transient.oxygen = 0 - air_transient.nitrogen = 0 - air_transient.toxins = 0 - air_transient.carbon_dioxide = 0 - - - air_transient.trace_gases = list() + air_transient.temperature = 0 + //Update individual gas_mixtures by volume ratio for(var/datum/gas_mixture/gas in gases) - air_transient.volume += gas.volume - var/temp_heatcap = gas.heat_capacity() - total_thermal_energy += gas.temperature*temp_heatcap - total_heat_capacity += temp_heatcap + gas.oxygen = air_transient.oxygen*gas.volume/air_transient.volume + gas.nitrogen = air_transient.nitrogen*gas.volume/air_transient.volume + gas.toxins = air_transient.toxins*gas.volume/air_transient.volume + gas.carbon_dioxide = air_transient.carbon_dioxide*gas.volume/air_transient.volume - air_transient.oxygen += gas.oxygen - air_transient.nitrogen += gas.nitrogen - air_transient.toxins += gas.toxins - air_transient.carbon_dioxide += gas.carbon_dioxide + gas.temperature = air_transient.temperature - if(gas.trace_gases.len) - for(var/datum/gas/trace_gas in gas.trace_gases) - var/datum/gas/corresponding = locate(trace_gas.type) in air_transient.trace_gases + if(air_transient.trace_gases.len) + for(var/datum/gas/trace_gas in air_transient.trace_gases) + var/datum/gas/corresponding = locate(trace_gas.type) in gas.trace_gases if(!corresponding) corresponding = new trace_gas.type() - air_transient.trace_gases += corresponding + gas.trace_gases += corresponding - corresponding.moles += trace_gas.moles + corresponding.moles = trace_gas.moles*gas.volume/air_transient.volume + return 1 - if(air_transient.volume > 0) - - if(total_heat_capacity > 0) - air_transient.temperature = total_thermal_energy/total_heat_capacity - - //Allow air mixture to react - if(air_transient.react()) - update = 1 - - else - air_transient.temperature = 0 - - //Update individual gas_mixtures by volume ratio - for(var/datum/gas_mixture/gas in gases) - gas.oxygen = air_transient.oxygen*gas.volume/air_transient.volume - gas.nitrogen = air_transient.nitrogen*gas.volume/air_transient.volume - gas.toxins = air_transient.toxins*gas.volume/air_transient.volume - gas.carbon_dioxide = air_transient.carbon_dioxide*gas.volume/air_transient.volume - - gas.temperature = air_transient.temperature - - if(air_transient.trace_gases.len) - for(var/datum/gas/trace_gas in air_transient.trace_gases) - var/datum/gas/corresponding = locate(trace_gas.type) in gas.trace_gases - if(!corresponding) - corresponding = new trace_gas.type() - gas.trace_gases += corresponding - - corresponding.moles = trace_gas.moles*gas.volume/air_transient.volume - return 1 - -proc/equalize_gases(datum/gas_mixture/list/gases) +/proc/equalize_gases(datum/gas_mixture/list/gases) //Perfectly equalize all gases members instantly //Calculate totals from individual components diff --git a/code/ATMOSPHERICS/datum_pipeline.dm b/code/ATMOSPHERICS/datum_pipeline.dm index 4b056c645e4..533633e9e14 100644 --- a/code/ATMOSPHERICS/datum_pipeline.dm +++ b/code/ATMOSPHERICS/datum_pipeline.dm @@ -1,6 +1,6 @@ #define STEFAN_BOLTZMANN_CONSTANT 0.0000000567 -datum/pipeline +/datum/pipeline var/datum/gas_mixture/air var/list/obj/machinery/atmospherics/pipe/members @@ -10,187 +10,187 @@ datum/pipeline var/alert_pressure = 0 - Destroy() - if(network) - qdel(network) +/datum/pipeline/Destroy() + if(network) + qdel(network) - if(air && air.volume) - temporarily_store_air() - qdel(air) + if(air && air.volume) + temporarily_store_air() + qdel(air) - return ..() + return ..() - proc/process()//This use to be called called from the pipe networks - - //Check to see if pressure is within acceptable limits - var/pressure = air.return_pressure() - if(pressure > alert_pressure) - for(var/obj/machinery/atmospherics/pipe/member in members) - if(!member.check_pressure(pressure)) - break //Only delete 1 pipe per process - - //Allow for reactions - //air.react() //Should be handled by pipe_network now - - proc/temporarily_store_air() - //Update individual gas_mixtures by volume ratio +/datum/pipeline/proc/process()//This use to be called called from the pipe networks + //Check to see if pressure is within acceptable limits + var/pressure = air.return_pressure() + if(pressure > alert_pressure) for(var/obj/machinery/atmospherics/pipe/member in members) - member.air_temporary = new - member.air_temporary.volume = member.volume + if(!member.check_pressure(pressure)) + break //Only delete 1 pipe per process - member.air_temporary.oxygen = air.oxygen*member.volume/air.volume - member.air_temporary.nitrogen = air.nitrogen*member.volume/air.volume - member.air_temporary.toxins = air.toxins*member.volume/air.volume - member.air_temporary.carbon_dioxide = air.carbon_dioxide*member.volume/air.volume + //Allow for reactions + //air.react() //Should be handled by pipe_network now - member.air_temporary.temperature = air.temperature +/datum/pipeline/proc/temporarily_store_air() + //Update individual gas_mixtures by volume ratio - if(air.trace_gases.len) - for(var/datum/gas/trace_gas in air.trace_gases) - var/datum/gas/corresponding = new trace_gas.type() - member.air_temporary.trace_gases += corresponding + for(var/obj/machinery/atmospherics/pipe/member in members) + member.air_temporary = new + member.air_temporary.volume = member.volume - corresponding.moles = trace_gas.moles*member.volume/air.volume + member.air_temporary.oxygen = air.oxygen*member.volume/air.volume + member.air_temporary.nitrogen = air.nitrogen*member.volume/air.volume + member.air_temporary.toxins = air.toxins*member.volume/air.volume + member.air_temporary.carbon_dioxide = air.carbon_dioxide*member.volume/air.volume - proc/build_pipeline(obj/machinery/atmospherics/pipe/base) + member.air_temporary.temperature = air.temperature + + if(air.trace_gases.len) + for(var/datum/gas/trace_gas in air.trace_gases) + var/datum/gas/corresponding = new trace_gas.type() + member.air_temporary.trace_gases += corresponding + + corresponding.moles = trace_gas.moles*member.volume/air.volume + +/datum/pipeline/proc/build_pipeline(obj/machinery/atmospherics/pipe/base) + air = new + + var/list/possible_expansions = list(base) + members = list(base) + edges = list() + + var/volume = base.volume + base.parent = src + alert_pressure = base.alert_pressure + + if(base.air_temporary) + air = base.air_temporary + base.air_temporary = null + else air = new - var/list/possible_expansions = list(base) - members = list(base) - edges = list() + while(possible_expansions.len>0) + for(var/obj/machinery/atmospherics/pipe/borderline in possible_expansions) - var/volume = base.volume - base.parent = src - alert_pressure = base.alert_pressure + var/list/result = borderline.pipeline_expansion() + var/edge_check = result.len - if(base.air_temporary) - air = base.air_temporary - base.air_temporary = null - else - air = new + if(result.len>0) + for(var/obj/machinery/atmospherics/pipe/item in result) + if(!members.Find(item)) + members += item + possible_expansions += item - while(possible_expansions.len>0) - for(var/obj/machinery/atmospherics/pipe/borderline in possible_expansions) + volume += item.volume + item.parent = src - var/list/result = borderline.pipeline_expansion() - var/edge_check = result.len + alert_pressure = min(alert_pressure, item.alert_pressure) - if(result.len>0) - for(var/obj/machinery/atmospherics/pipe/item in result) - if(!members.Find(item)) - members += item - possible_expansions += item + if(item.air_temporary) + air.merge(item.air_temporary) - volume += item.volume - item.parent = src + edge_check-- - alert_pressure = min(alert_pressure, item.alert_pressure) + if(edge_check>0) + edges += borderline - if(item.air_temporary) - air.merge(item.air_temporary) + possible_expansions -= borderline - edge_check-- + air.volume = volume - if(edge_check>0) - edges += borderline +/datum/pipeline/proc/network_expand(datum/pipe_network/new_network, obj/machinery/atmospherics/pipe/reference) - possible_expansions -= borderline + if(new_network.line_members.Find(src)) + return 0 - air.volume = volume + new_network.line_members += src - proc/network_expand(datum/pipe_network/new_network, obj/machinery/atmospherics/pipe/reference) + network = new_network - if(new_network.line_members.Find(src)) - return 0 + for(var/obj/machinery/atmospherics/pipe/edge in edges) + for(var/obj/machinery/atmospherics/result in edge.pipeline_expansion()) + if(!istype(result,/obj/machinery/atmospherics/pipe) && (result!=reference)) + result.network_expand(new_network, edge) - new_network.line_members += src + return 1 - network = new_network +/datum/pipeline/proc/return_network(obj/machinery/atmospherics/reference) + if(!network) + network = new /datum/pipe_network() + network.build_network(src, null) + //technically passing these parameters should not be allowed + //however pipe_network.build_network(..) and pipeline.network_extend(...) + // were setup to properly handle this case - for(var/obj/machinery/atmospherics/pipe/edge in edges) - for(var/obj/machinery/atmospherics/result in edge.pipeline_expansion()) - if(!istype(result,/obj/machinery/atmospherics/pipe) && (result!=reference)) - result.network_expand(new_network, edge) + return network - return 1 +/datum/pipeline/proc/mingle_with_turf(turf/simulated/target, mingle_volume) + var/datum/gas_mixture/air_sample = air.remove_ratio(mingle_volume/air.volume) + air_sample.volume = mingle_volume - proc/return_network(obj/machinery/atmospherics/reference) - if(!network) - network = new /datum/pipe_network() - network.build_network(src, null) - //technically passing these parameters should not be allowed - //however pipe_network.build_network(..) and pipeline.network_extend(...) - // were setup to properly handle this case + var/datum/gas_mixture/turf_air = target.return_air() - return network + equalize_gases(list(air_sample, turf_air)) + air.merge(air_sample) + //turf_air already modified by equalize_gases() - proc/mingle_with_turf(turf/simulated/target, mingle_volume) - var/datum/gas_mixture/air_sample = air.remove_ratio(mingle_volume/air.volume) - air_sample.volume = mingle_volume + if(istype(target)) + if(target.air) + if(target.air.check_tile_graphic()) + target.update_visuals(target.air) + if(network) + network.update = 1 - var/datum/gas_mixture/turf_air = target.return_air() +/datum/pipeline/proc/temperature_interact(turf/target, share_volume, thermal_conductivity) + var/total_heat_capacity = air.heat_capacity() + var/partial_heat_capacity = total_heat_capacity*(share_volume/air.volume) - equalize_gases(list(air_sample, turf_air)) - air.merge(air_sample) - //turf_air already modified by equalize_gases() + if(istype(target, /turf/simulated)) + var/turf/simulated/modeled_location = target - if(istype(target)) - if(target.air) - if(target.air.check_tile_graphic()) - target.update_visuals(target.air) - if(network) - network.update = 1 + if(modeled_location.blocks_air) - proc/temperature_interact(turf/target, share_volume, thermal_conductivity) - var/total_heat_capacity = air.heat_capacity() - var/partial_heat_capacity = total_heat_capacity*(share_volume/air.volume) - - if(istype(target, /turf/simulated)) - var/turf/simulated/modeled_location = target - - if(modeled_location.blocks_air) - - if((modeled_location.heat_capacity>0) && (partial_heat_capacity>0)) - var/delta_temperature = air.temperature - modeled_location.temperature - - var/heat = thermal_conductivity*delta_temperature* \ - (partial_heat_capacity*modeled_location.heat_capacity/(partial_heat_capacity+modeled_location.heat_capacity)) - - air.temperature -= heat/total_heat_capacity - modeled_location.temperature += heat/modeled_location.heat_capacity - - else - var/delta_temperature = 0 - var/sharer_heat_capacity = 0 - - delta_temperature = (air.temperature - modeled_location.air.temperature) - sharer_heat_capacity = modeled_location.air.heat_capacity() - - var/self_temperature_delta = 0 - var/sharer_temperature_delta = 0 - - if((sharer_heat_capacity>0) && (partial_heat_capacity>0)) - var/heat = thermal_conductivity*delta_temperature* \ - (partial_heat_capacity*sharer_heat_capacity/(partial_heat_capacity+sharer_heat_capacity)) - - self_temperature_delta = -heat/total_heat_capacity - sharer_temperature_delta = heat/sharer_heat_capacity - else - return 1 - - air.temperature += self_temperature_delta - - modeled_location.air.temperature += sharer_temperature_delta - - - else - if((target.heat_capacity>0) && (partial_heat_capacity>0)) - var/delta_temperature = air.temperature - target.temperature + if((modeled_location.heat_capacity>0) && (partial_heat_capacity>0)) + var/delta_temperature = air.temperature - modeled_location.temperature var/heat = thermal_conductivity*delta_temperature* \ - (partial_heat_capacity*target.heat_capacity/(partial_heat_capacity+target.heat_capacity)) + (partial_heat_capacity*modeled_location.heat_capacity/(partial_heat_capacity+modeled_location.heat_capacity)) air.temperature -= heat/total_heat_capacity - if(network) - network.update = 1 \ No newline at end of file + modeled_location.temperature += heat/modeled_location.heat_capacity + + else + var/delta_temperature = 0 + var/sharer_heat_capacity = 0 + + delta_temperature = (air.temperature - modeled_location.air.temperature) + sharer_heat_capacity = modeled_location.air.heat_capacity() + + var/self_temperature_delta = 0 + var/sharer_temperature_delta = 0 + + if((sharer_heat_capacity>0) && (partial_heat_capacity>0)) + var/heat = thermal_conductivity*delta_temperature* \ + (partial_heat_capacity*sharer_heat_capacity/(partial_heat_capacity+sharer_heat_capacity)) + + self_temperature_delta = -heat/total_heat_capacity + sharer_temperature_delta = heat/sharer_heat_capacity + else + return 1 + + air.temperature += self_temperature_delta + + modeled_location.air.temperature += sharer_temperature_delta + + + else + if((target.heat_capacity>0) && (partial_heat_capacity>0)) + var/delta_temperature = air.temperature - target.temperature + + var/heat = thermal_conductivity*delta_temperature* \ + (partial_heat_capacity*target.heat_capacity/(partial_heat_capacity+target.heat_capacity)) + + air.temperature -= heat/total_heat_capacity + if(network) + network.update = 1 \ No newline at end of file diff --git a/code/ATMOSPHERICS/he_pipes.dm b/code/ATMOSPHERICS/he_pipes.dm index ab6e2e2c8eb..e69de29bb2d 100644 --- a/code/ATMOSPHERICS/he_pipes.dm +++ b/code/ATMOSPHERICS/he_pipes.dm @@ -1,119 +0,0 @@ - -/obj/machinery/atmospherics/pipe/simple/heat_exchanging - icon = 'icons/atmos/heat.dmi' - icon_state = "intact" - pipe_icon = "hepipe" - level = 2 - var/initialize_directions_he - var/surface = 2 - - minimum_temperature_difference = 20 - thermal_conductivity = OPEN_HEAT_TRANSFER_COEFFICIENT - -/obj/machinery/atmospherics/pipe/simple/heat_exchanging/process() - if(!parent) - ..() - else - var/environment_temperature = 0 - if(istype(loc, /turf/simulated/)) - if(loc:blocks_air) - environment_temperature = loc:temperature - else - var/datum/gas_mixture/environment = loc.return_air() - environment_temperature = environment.temperature - else - environment_temperature = loc:temperature - var/datum/gas_mixture/pipe_air = return_air() - if(abs(environment_temperature-pipe_air.temperature) > minimum_temperature_difference) - parent.temperature_interact(loc, volume, thermal_conductivity) - - - -// BubbleWrap -/obj/machinery/atmospherics/pipe/simple/heat_exchanging/New() - ..() - initialize_directions_he = initialize_directions // The auto-detection from /pipe is good enough for a simple HE pipe - // BubbleWrap END - -/obj/machinery/atmospherics/pipe/simple/heat_exchanging/initialize() - normalize_dir() - var/node1_dir - var/node2_dir - - for(var/direction in cardinal) - if(direction&initialize_directions_he) - if (!node1_dir) - node1_dir = direction - else if (!node2_dir) - node2_dir = direction - - for(var/obj/machinery/atmospherics/pipe/simple/heat_exchanging/target in get_step(src,node1_dir)) - if(target.initialize_directions_he & get_dir(target,src)) - node1 = target - break - for(var/obj/machinery/atmospherics/pipe/simple/heat_exchanging/target in get_step(src,node2_dir)) - if(target.initialize_directions_he & get_dir(target,src)) - node2 = target - break - - if(!node1 && !node2) - del(src) - return - - update_icon() - return - - -/obj/machinery/atmospherics/pipe/simple/heat_exchanging/hidden - level=1 - icon_state="intact-f" - -///////////////////////////////// -// JUNCTION -///////////////////////////////// -/obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction - icon = 'icons/atmos/junction.dmi' - icon_state = "intact" - pipe_icon = "hejunction" - level = 2 - minimum_temperature_difference = 300 - thermal_conductivity = WALL_HEAT_TRANSFER_COEFFICIENT - - // BubbleWrap -/obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction/New() - .. () - switch ( dir ) - if ( SOUTH ) - initialize_directions = NORTH - initialize_directions_he = SOUTH - if ( NORTH ) - initialize_directions = SOUTH - initialize_directions_he = NORTH - if ( EAST ) - initialize_directions = WEST - initialize_directions_he = EAST - if ( WEST ) - initialize_directions = EAST - initialize_directions_he = WEST - // BubbleWrap END - -/obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction/initialize() - for(var/obj/machinery/atmospherics/target in get_step(src,initialize_directions)) - if(target.initialize_directions & get_dir(target,src)) - node1 = target - break - for(var/obj/machinery/atmospherics/pipe/simple/heat_exchanging/target in get_step(src,initialize_directions_he)) - if(target.initialize_directions_he & get_dir(target,src)) - node2 = target - break - - if(!node1 && !node2) - qdel(src) - return - - update_icon() - return - -/obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction/hidden - level=1 - icon_state="intact-f" diff --git a/code/ATMOSPHERICS/mainspipe.dm b/code/ATMOSPHERICS/mainspipe.dm index 2c0a7989533..3dea472524d 100644 --- a/code/ATMOSPHERICS/mainspipe.dm +++ b/code/ATMOSPHERICS/mainspipe.dm @@ -649,7 +649,7 @@ obj/machinery/atmospherics/mains_pipe/valve attack_hand(mob/user as mob) if(!src.allowed(user)) - user << "\red Access denied." + user << "", "You hear \a [src].") + src.operating = 1 + src.icon_state = on_icon + src.updateUsrDialog() + +/obj/machinery/kitchen_machine/proc/abort() + src.operating = 0 // Turn it off again aferwards + src.icon_state = off_icon + src.updateUsrDialog() + +/obj/machinery/kitchen_machine/proc/stop() + playsound(src.loc, 'sound/machines/ding.ogg', 50, 1) + src.operating = 0 // Turn it off again aferwards + src.icon_state = off_icon + src.updateUsrDialog() + +/obj/machinery/kitchen_machine/proc/dispose() + for (var/obj/O in contents) + O.loc = src.loc + if (src.reagents.total_volume) + src.dirty++ + src.reagents.clear_reagents() + usr << "You dispose of \the [src]'s contents." + src.updateUsrDialog() + +/obj/machinery/kitchen_machine/proc/muck_start() + playsound(src.loc, 'sound/effects/splat.ogg', 50, 1) // Play a splat sound + src.icon_state = dirty_icon // Make it look dirty!! + +/obj/machinery/kitchen_machine/proc/muck_finish() + playsound(src.loc, 'sound/machines/ding.ogg', 50, 1) + src.visible_message("\The [src] gets covered in muck!") + src.dirty = 100 // Make it dirty so it can't be used util cleaned + src.flags = null //So you can't add condiments + src.icon_state = dirty_icon // Make it look dirty too + src.operating = 0 // Turn it off again aferwards + src.updateUsrDialog() + +/obj/machinery/kitchen_machine/proc/broke() + var/datum/effect/effect/system/spark_spread/s = new + s.set_up(2, 1, src) + s.start() + src.icon_state = broken_icon // Make it look all busted up and shit + src.visible_message("The [src] breaks!") //Let them know they're stupid + src.broken = 2 // Make it broken so it can't be used util fixed + src.flags = null //So you can't add condiments + src.operating = 0 // Turn it off again aferwards + src.updateUsrDialog() + +/obj/machinery/kitchen_machine/proc/fail() + var/obj/item/weapon/reagent_containers/food/snacks/badrecipe/ffuu = new(src) + var/amount = 0 + for (var/obj/O in contents-ffuu) + amount++ + if (O.reagents) + var/id = O.reagents.get_master_reagent_id() + if (id) + amount+=O.reagents.get_reagent_amount(id) + qdel(O) + src.reagents.clear_reagents() + ffuu.reagents.add_reagent("carbon", amount) + ffuu.reagents.add_reagent("????", amount/10) + ffuu.loc = get_turf(src) + +/obj/machinery/kitchen_machine/Topic(href, href_list) + if(..() || panel_open) + return + + usr.set_machine(src) + if(src.operating) + src.updateUsrDialog() + return + + switch(href_list["action"]) + if ("cook") + cook() + + if ("dispose") + dispose() + return \ No newline at end of file diff --git a/code/game/machinery/kitchen/microwave.dm b/code/game/machinery/kitchen/microwave.dm index dc4e21f9296..988edaf8580 100644 --- a/code/game/machinery/kitchen/microwave.dm +++ b/code/game/machinery/kitchen/microwave.dm @@ -1,24 +1,16 @@ -/obj/machinery/microwave +/obj/machinery/kitchen_machine/microwave name = "Microwave" + desc = "A microwave, perfect for reheating things with radiation." icon = 'icons/obj/kitchen.dmi' icon_state = "mw" - layer = 2.9 - density = 1 - anchored = 1 - use_power = 1 - idle_power_usage = 5 - active_power_usage = 100 - flags = OPENCONTAINER | NOREACT - var/operating = 0 // Is it on? - var/dirty = 0 // = {0..100} Does it need cleaning? - var/broken = 0 // ={0,1,2} How broken is it??? - var/global/list/datum/recipe/available_recipes // List of the recipes you can use - var/global/list/acceptable_items // List of the items you can put in - var/global/list/acceptable_reagents // List of the reagents you can put in - var/global/max_n_of_items = 0 - var/efficiency - + cook_verbs = list("Microwaving", "Reheating", "Heating") + recipe_type = /datum/recipe/microwave + off_icon = "mw" + on_icon = "mw1" + broken_icon = "mwb" + dirty_icon = "mwbloody" + open_icon = "mw-o" // see code/modules/food/recipes_microwave.dm for recipes @@ -26,29 +18,8 @@ * Initialising ********************/ -/obj/machinery/microwave/New() - //..() //do not need this - reagents = new/datum/reagents(100) - reagents.my_atom = src - if (!available_recipes) - available_recipes = new - for (var/type in (typesof(/datum/recipe/microwave)-/datum/recipe/microwave)) - var/datum/recipe/recipe = new type - if(recipe.result) // Ignore recipe subtypes that lack a result - available_recipes += recipe - else - del(recipe) - acceptable_items = new - acceptable_reagents = new - for (var/datum/recipe/microwave/recipe in available_recipes) - for (var/item in recipe.items) - acceptable_items |= item - for (var/reagent in recipe.reagents) - acceptable_reagents |= reagent - if (recipe.items) - max_n_of_items = max(max_n_of_items,recipe.items.len) - acceptable_items |= /obj/item/weapon/reagent_containers/food/snacks/grown - +/obj/machinery/kitchen_machine/microwave/New() + ..() component_parts = list() component_parts += new /obj/item/weapon/circuitboard/microwave(null) component_parts += new /obj/item/weapon/stock_parts/micro_laser(null) @@ -56,8 +27,7 @@ component_parts += new /obj/item/stack/cable_coil(null, 2) RefreshParts() - -/obj/machinery/microwave/upgraded/New() +/obj/machinery/kitchen_machine/microwave/upgraded/New() ..() component_parts = list() component_parts += new /obj/item/weapon/circuitboard/microwave(null) @@ -66,358 +36,20 @@ component_parts += new /obj/item/stack/cable_coil(null, 2) RefreshParts() -/obj/machinery/microwave/RefreshParts() +/obj/machinery/kitchen_machine/microwave/RefreshParts() var/E for(var/obj/item/weapon/stock_parts/micro_laser/M in component_parts) E += M.rating efficiency = E -/******************* -* Item Adding -********************/ +// The following code is present as temporary assurance for compatibility and to avoid merge conflicts for the TG mining port +// Please delete this portion once all maps are updated to use the new object path: /obj/machinery/kitchen_machine/microwave -/obj/machinery/microwave/attackby(var/obj/item/O as obj, var/mob/user as mob, params) - if(operating) - return - if(!broken && dirty < 100) - if(default_deconstruction_screwdriver(user, "mw-o", "mw", O)) - return - if(exchange_parts(user, O)) - return - if(!broken && istype(O, /obj/item/weapon/wrench)) - playsound(src, 'sound/items/Ratchet.ogg', 50, 1) - if(anchored) - anchored = 0 - user << "The [src] can now be moved." - return - else if(!anchored) - anchored = 1 - user << "The [src] is now secured." - return +/obj/machinery/microwave + name = "Microwave spawner" + icon = 'icons/obj/kitchen.dmi' + icon_state = "mw" - default_deconstruction_crowbar(O) - - if(src.broken > 0) - if(src.broken == 2 && istype(O, /obj/item/weapon/screwdriver)) // If it's broken and they're using a screwdriver - user.visible_message( \ - "\blue [user] starts to fix part of the microwave.", \ - "\blue You start to fix part of the microwave." \ - ) - if (do_after(user,20)) - user.visible_message( \ - "\blue [user] fixes part of the microwave.", \ - "\blue You have fixed part of the microwave." \ - ) - src.broken = 1 // Fix it a bit - else if(src.broken == 1 && istype(O, /obj/item/weapon/wrench)) // If it's broken and they're doing the wrench - user.visible_message( \ - "\blue [user] starts to fix part of the microwave.", \ - "\blue You start to fix part of the microwave." \ - ) - if (do_after(user,20)) - user.visible_message( \ - "\blue [user] fixes the microwave.", \ - "\blue You have fixed the microwave." \ - ) - src.icon_state = "mw" - src.broken = 0 // Fix it! - src.dirty = 0 // just to be sure - src.flags = OPENCONTAINER - else - user << "\red It's broken!" - return 1 - else if(src.dirty==100) // The microwave is all dirty so can't be used! - if(istype(O, /obj/item/weapon/reagent_containers/spray/cleaner) || istype(O, /obj/item/weapon/soap)) // If they're trying to clean it then let them - user.visible_message( \ - "\blue [user] starts to clean the microwave.", \ - "\blue You start to clean the microwave." \ - ) - if (do_after(user,20)) - user.visible_message( \ - "\blue [user] has cleaned the microwave.", \ - "\blue You have cleaned the microwave." \ - ) - src.dirty = 0 // It's clean! - src.broken = 0 // just to be sure - src.icon_state = "mw" - src.flags = OPENCONTAINER - else //Otherwise bad luck!! - user << "\red It's dirty!" - return 1 - else if(is_type_in_list(O,acceptable_items)) - if (contents.len>=max_n_of_items) - user << "\red This [src] is full of ingredients, you cannot put more." - return 1 - if (istype(O,/obj/item/stack) && O:amount>1) - new O.type (src) - O:use(1) - user.visible_message( \ - "\blue [user] has added one of [O] to \the [src].", \ - "\blue You add one of [O] to \the [src].") - else - // user.unEquip(O) //This just causes problems so far as I can tell. -Pete - if(!user.drop_item()) - user << "\the [O] is stuck to your hand, you cannot put it in \the [src]" - return 0 - O.loc = src - user.visible_message( \ - "\blue [user] has added \the [O] to \the [src].", \ - "\blue You add \the [O] to \the [src].") - else if(istype(O,/obj/item/weapon/reagent_containers/glass) || \ - istype(O,/obj/item/weapon/reagent_containers/food/drinks) || \ - istype(O,/obj/item/weapon/reagent_containers/food/condiment) \ - ) - if (!O.reagents) - return 1 - for (var/datum/reagent/R in O.reagents.reagent_list) - if (!(R.id in acceptable_reagents)) - user << "\red Your [O] contains components unsuitable for cookery." - return 1 - //G.reagents.trans_to(src,G.amount_per_transfer_from_this) - else if(istype(O,/obj/item/weapon/grab)) - var/obj/item/weapon/grab/G = O - user << "\red This is ridiculous. You can not fit \the [G.affecting] in this [src]." - return 1 - else - user << "\red You have no idea what you can cook with this [O]." - return 1 - src.updateUsrDialog() - -/obj/machinery/microwave/attack_ai(mob/user as mob) - return 0 - -/obj/machinery/microwave/attack_hand(mob/user as mob) - user.set_machine(src) - interact(user) - -/******************* -* Microwave Menu -********************/ - -/obj/machinery/microwave/interact(mob/user as mob) // The microwave Menu - if(panel_open || !anchored) - return - var/dat = "" - if(src.broken > 0) - dat = {"Bzzzzttttt"} - else if(src.operating) - dat = {"Microwaving in progress!
Please wait...!
"} - else if(src.dirty==100) - dat = {"This microwave is dirty!
Please clean it before use!
"} - else - var/list/items_counts = new - var/list/items_measures = new - var/list/items_measures_p = new - for (var/obj/O in contents) - var/display_name = O.name - if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/egg)) - items_measures[display_name] = "egg" - items_measures_p[display_name] = "eggs" - if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/tofu)) - items_measures[display_name] = "tofu chunk" - items_measures_p[display_name] = "tofu chunks" - if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/meat)) //any meat - items_measures[display_name] = "slab of meat" - items_measures_p[display_name] = "slabs of meat" - if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/donkpocket)) - display_name = "Turnovers" - items_measures[display_name] = "turnover" - items_measures_p[display_name] = "turnovers" - if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/carpmeat)) - items_measures[display_name] = "fillet of meat" - items_measures_p[display_name] = "fillets of meat" - items_counts[display_name]++ - for (var/O in items_counts) - var/N = items_counts[O] - if (!(O in items_measures)) - dat += {"[capitalize(O)]: [N] [lowertext(O)]\s
"} - else - if (N==1) - dat += {"[capitalize(O)]: [N] [items_measures[O]]
"} - else - dat += {"[capitalize(O)]: [N] [items_measures_p[O]]
"} - - for (var/datum/reagent/R in reagents.reagent_list) - var/display_name = R.name - if (R.id == "capsaicin") - display_name = "Hotsauce" - if (R.id == "frostoil") - display_name = "Coldsauce" - dat += {"[display_name]: [R.volume] unit\s
"} - - if (items_counts.len==0 && reagents.reagent_list.len==0) - dat = {"The microwave is empty
"} - else - dat = {"Ingredients:
[dat]"} - dat += {"

\ -
Turn on!
\ -
Eject ingredients!
\ -"} - - user << browse("Microwave Controls[dat]", "window=microwave") - onclose(user, "microwave") - return - - - -/*********************************** -* Microwave Menu Handling/Cooking -************************************/ - -/obj/machinery/microwave/proc/cook() - if(stat & (NOPOWER|BROKEN)) - return - start() - if (reagents.total_volume==0 && !(locate(/obj) in contents)) //dry run - if (!wzhzhzh(10)) - abort() - return - stop() - return - - var/datum/recipe/recipe = select_recipe(available_recipes,src) - var/obj/cooked - if (!recipe) - dirty += 1 - if (prob(max(10,dirty*5))) - if (!wzhzhzh(4)) - abort() - return - muck_start() - wzhzhzh(4) - muck_finish() - cooked = fail() - cooked.loc = src.loc - return - else if (has_extra_item()) - if (!wzhzhzh(4)) - abort() - return - broke() - cooked = fail() - cooked.loc = src.loc - return - else - if (!wzhzhzh(10)) - abort() - return - stop() - cooked = fail() - cooked.loc = src.loc - return - else - var/halftime = round(recipe.time/10/2) - if (!wzhzhzh(halftime)) - abort() - return - if (!wzhzhzh(halftime)) - abort() - cooked = fail() - cooked.loc = src.loc - return - cooked = recipe.make_food(src) - stop() - if(cooked) - cooked.loc = src.loc - for(var/i=1,iYou detach the plasteel sheets from each others." new /obj/item/stack/sheet/plasteel(get_turf(src),3) - del(src) + qdel(src) return 1 if(istype(W, /obj/item/weapon/wrench)) user << "You begin to anchor \the [src] on the floor." @@ -199,7 +199,7 @@ playsound(get_turf(src), 'sound/items/Screwdriver.ogg', 50, 1) var/obj/machinery/mass_driver/M = new(get_turf(src)) M.dir = src.dir - del(src) + qdel(src) return 1 ..() diff --git a/code/game/machinery/overview.dm b/code/game/machinery/overview.dm index 35954c0c8b6..1f1395431d9 100644 --- a/code/game/machinery/overview.dm +++ b/code/game/machinery/overview.dm @@ -180,8 +180,8 @@ HI.Insert(I, frame=1, delay = 5) HI.Insert(J, frame=2, delay = 5) - del(I) - del(J) + qdel(I) + qdel(J) H.icon = HI H.layer = 25 usr.mapobjs += H @@ -306,7 +306,7 @@ var/icon/I = imap[i+1] H.icon = I - del(I) + qdel(I) H.layer = 25 usr.mapobjs += H @@ -353,7 +353,7 @@ proc/getb(col) /mob/proc/clearmap() src.client.screen -= src.mapobjs for(var/obj/screen/O in mapobjs) - del(O) + qdel(O) mapobjs = null src.unset_machine() diff --git a/code/game/machinery/pipe/construction.dm b/code/game/machinery/pipe/construction.dm index 169641a452c..9d70a9def90 100644 --- a/code/game/machinery/pipe/construction.dm +++ b/code/game/machinery/pipe/construction.dm @@ -1152,7 +1152,7 @@ Buildable meters if(machineReference) transfer_fingerprints_to(machineReference) machineReference.add_fingerprint(user) - del(src) // remove the pipe item + qdel(src) // remove the pipe item return //TODO: DEFERRED @@ -1180,7 +1180,7 @@ Buildable meters new/obj/machinery/meter( src.loc ) playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) user << "\blue You have fastened the meter to the pipe" - del(src) + qdel(src) /obj/item/pipe_gsensor name = "gas sensor" @@ -1197,7 +1197,7 @@ Buildable meters new/obj/machinery/air_sensor( src.loc ) playsound(get_turf(src), 'sound/items/Ratchet.ogg', 50, 1) user << "\blue You have fastened the gas sensor" - del(src) + qdel(src) //not sure why these are necessary #undef PIPE_SIMPLE_STRAIGHT #undef PIPE_SIMPLE_BENT diff --git a/code/game/machinery/pipe/pipe_dispenser.dm b/code/game/machinery/pipe/pipe_dispenser.dm index 43050cab6ae..49bdac91c98 100644 --- a/code/game/machinery/pipe/pipe_dispenser.dm +++ b/code/game/machinery/pipe/pipe_dispenser.dm @@ -101,7 +101,7 @@ if (istype(W, /obj/item/pipe) || istype(W, /obj/item/pipe_meter)) usr << "\blue You put [W] back to [src]." user.drop_item() - del(W) + qdel(W) return else if (istype(W, /obj/item/weapon/wrench)) if (unwrenched==0) @@ -160,7 +160,7 @@ Nah if (pipe.anchored) return - del(pipe) + qdel(pipe) /obj/machinery/pipedispenser/disposal/attack_hand(user as mob) if(..()) diff --git a/code/game/machinery/portable_tag_turret.dm b/code/game/machinery/portable_tag_turret.dm index c6da942645a..963dc0c803a 100644 --- a/code/game/machinery/portable_tag_turret.dm +++ b/code/game/machinery/portable_tag_turret.dm @@ -82,13 +82,13 @@ if(lasercolor == "b" && disabled == 0) if(istype(Proj, /obj/item/weapon/gun/energy/laser/redtag)) disabled = 1 - del(Proj) // qdel + qdel(Proj) // qdel sleep(100) disabled = 0 if(lasercolor == "r" && disabled == 0) if(istype(Proj, /obj/item/weapon/gun/energy/laser/bluetag)) disabled = 1 - del(Proj) // qdel + qdel(Proj) // qdel sleep(100) disabled = 0 diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm index 0a71b73e8ef..c1f9d960d14 100644 --- a/code/game/machinery/portable_turret.dm +++ b/code/game/machinery/portable_turret.dm @@ -416,7 +416,7 @@ spark_system.start() //creates some sparks because they look cool density = 1 update_icon() - del(cover) //deletes the cover - no need on keeping it there! - del + qdel(cover) //deletes the cover - no need on keeping it there! - del /obj/machinery/porta_turret/proc/create_cover() if(cover == null && anchored) diff --git a/code/game/machinery/programmable_unloader.dm b/code/game/machinery/programmable_unloader.dm index 2af4c5e0fbf..1076467f187 100644 --- a/code/game/machinery/programmable_unloader.dm +++ b/code/game/machinery/programmable_unloader.dm @@ -100,9 +100,9 @@ for(var/datum/cargoprofile/p in emag_overrides + overrides + profiles) p.master = src - del C + qdel(C) else - del O + qdel(O) /obj/machinery/programmable/attack_hand(mob/user as mob) if(stat) // moved, or something else diff --git a/code/game/machinery/recycler.dm b/code/game/machinery/recycler.dm index 3cc7919424b..03ac7ba2460 100644 --- a/code/game/machinery/recycler.dm +++ b/code/game/machinery/recycler.dm @@ -40,7 +40,7 @@ var/const/SAFETY_COOLDOWN = 100 ..() return add_fingerprint(user) - + /obj/machinery/recycler/emag_act(user as mob) if(!emagged) emagged = 1 @@ -93,7 +93,7 @@ var/const/SAFETY_COOLDOWN = 100 /obj/machinery/recycler/proc/recycle(var/obj/item/I, var/sound = 1) I.loc = src.loc if(!istype(I, /obj/item/weapon/disk/nuclear) && !istype(I,/obj/item/flag/nation)) - del(I) + qdel(I) if(prob(15)) new /obj/item/stack/sheet/metal(loc) if(prob(10)) diff --git a/code/game/machinery/robot_fabricator.dm b/code/game/machinery/robot_fabricator.dm index 4465fdccf81..86e6dd5e700 100644 --- a/code/game/machinery/robot_fabricator.dm +++ b/code/game/machinery/robot_fabricator.dm @@ -26,7 +26,7 @@ count++ if (O:amount < 1) - del(O) + qdel(O) user << "You insert [count] metal sheet\s into the fabricator." src.overlays -= "fab-load-metal" diff --git a/code/game/machinery/seed_extractor.dm b/code/game/machinery/seed_extractor.dm index 6934ee0ac6c..913464b8295 100644 --- a/code/game/machinery/seed_extractor.dm +++ b/code/game/machinery/seed_extractor.dm @@ -31,7 +31,7 @@ obj/machinery/seed_extractor/attackby(var/obj/item/O as obj, var/mob/user as mob else user << "[O] doesn't seem to have any usable seeds inside it." - del(O) + qdel(O) //Grass. else if(istype(O, /obj/item/stack/tile/grass)) diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm index cb0c9707b32..4cce116c3bc 100644 --- a/code/game/machinery/shieldgen.dm +++ b/code/game/machinery/shieldgen.dm @@ -47,7 +47,7 @@ if (src.health <= 0) visible_message("\blue The [src] dissipates") - del(src) + qdel(src) return opacity = 1 @@ -60,7 +60,7 @@ ..() if(health <=0) visible_message("\blue The [src] dissipates") - del(src) + qdel(src) return opacity = 1 spawn(20) if(src) opacity = 0 @@ -81,13 +81,13 @@ /obj/machinery/shield/emp_act(severity) switch(severity) if(1) - del(src) + qdel(src) if(2) if(prob(50)) - del(src) + qdel(src) /obj/machinery/shield/blob_act() - del(src) + qdel(src) /obj/machinery/shield/hitby(AM as mob|obj) @@ -107,7 +107,7 @@ //Handle the destruction of the shield if (src.health <= 0) visible_message("\blue The [src] dissipates") - del(src) + qdel(src) return //The shield becomes dense to absorb the blow.. purely asthetic. @@ -162,12 +162,12 @@ update_icon() for(var/obj/machinery/shield/shield_tile in deployed_shields) - del(shield_tile) + qdel(shield_tile) /obj/machinery/shieldgen/process() if(malfunction && active) if(deployed_shields.len && prob(5)) - del(pick(deployed_shields)) + qdel(pick(deployed_shields)) return @@ -175,7 +175,7 @@ if(health <= 30) src.malfunction = 1 if(health <= 0) - del(src) + qdel(src) update_icon() return @@ -491,7 +491,7 @@ T2 = T if(locate(/obj/machinery/shieldwall) in T) F = (locate(/obj/machinery/shieldwall) in T) - del(F) + qdel(F) if(locate(/obj/machinery/shieldwallgen) in T) G = (locate(/obj/machinery/shieldwallgen) in T) @@ -544,11 +544,11 @@ /obj/machinery/shieldwall/process() if(needs_power) if(isnull(gen_primary)||isnull(gen_secondary)) - del(src) + qdel(src) return if(!(gen_primary.active)||!(gen_secondary.active)) - del(src) + qdel(src) return // if(prob(50)) diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index a4a785baa00..efbef9c5670 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -508,7 +508,7 @@ //for(var/obj/O in src) // O.loc = src.loc src.add_fingerprint(user) - del(G) + qdel(G) src.updateUsrDialog() src.update_icon() return @@ -663,7 +663,7 @@ src.occupant = M src.add_fingerprint(user) - del(G) + qdel(G) src.updateUsrDialog() diff --git a/code/game/machinery/syndicatebomb.dm b/code/game/machinery/syndicatebomb.dm index 1cb98f35541..05173045a96 100644 --- a/code/game/machinery/syndicatebomb.dm +++ b/code/game/machinery/syndicatebomb.dm @@ -222,7 +222,7 @@ holder.loc.visible_message("\icon[holder] Alert: Bomb has detonated. Your score is now [defusals] for [attempts]. Resetting wires...") reset() else - del(src) + qdel(src) /obj/item/weapon/bombcore/training/defuse() var/obj/machinery/syndicatebomb/holder = src.loc @@ -241,8 +241,8 @@ /obj/item/weapon/bombcore/badmin/defuse() //because we wouldn't want them being harvested by players var/obj/machinery/syndicatebomb/B = src.loc - del(B) - del(src) + qdel(B) + qdel(src) /obj/item/weapon/bombcore/badmin/summon/ var/summon_path = /obj/item/weapon/reagent_containers/food/snacks/cookie @@ -256,8 +256,8 @@ if(prob(50)) for(var/j = 1, j <= rand(1, 3), j++) step(X, pick(NORTH,SOUTH,EAST,WEST)) - del(B) - del(src) + qdel(B) + qdel(src) /obj/item/weapon/bombcore/badmin/summon/clown summon_path = /mob/living/simple_animal/hostile/retaliate/clown diff --git a/code/game/machinery/telecomms/logbrowser.dm b/code/game/machinery/telecomms/logbrowser.dm index 04a8d95e4cd..824dc21db76 100644 --- a/code/game/machinery/telecomms/logbrowser.dm +++ b/code/game/machinery/telecomms/logbrowser.dm @@ -101,7 +101,7 @@ race = "Unidentifiable" language = race - del(M) + qdel(M) // -- If the orator is a human, or universal translate is active, OR mob has universal speech on -- @@ -194,7 +194,7 @@ temp = "- DELETED ENTRY: [D.name] -" SelectedServer.log_entries.Remove(D) - del(D) + qdel(D) else temp = "- FAILED: NO SELECTED MACHINE -" @@ -232,7 +232,7 @@ A.state = 3 A.icon_state = "3" A.anchored = 1 - del(src) + qdel(src) else user << "\blue You disconnect the monitor." var/obj/structure/computerframe/A = new /obj/structure/computerframe( src.loc ) @@ -243,7 +243,7 @@ A.state = 4 A.icon_state = "4" A.anchored = 1 - del(src) + qdel(src) src.updateUsrDialog() return diff --git a/code/game/machinery/telecomms/machine_interactions.dm b/code/game/machinery/telecomms/machine_interactions.dm index 1fbfdb1c1fe..fd6f2fe97eb 100644 --- a/code/game/machinery/telecomms/machine_interactions.dm +++ b/code/game/machinery/telecomms/machine_interactions.dm @@ -67,7 +67,7 @@ A.amount -= 5 if(A.amount <= 0) user.drop_item() - del(A) + qdel(A) construct_op -- stat &= ~BROKEN // the machine's not borked anymore! if(istype(P, /obj/item/weapon/crowbar)) @@ -103,7 +103,7 @@ // Create a machine frame and delete the current machine var/obj/machinery/constructable_frame/machine_frame/F = new F.loc = src.loc - del(src) + qdel(src) /obj/machinery/telecomms/proc/formatInput(var/label,var/varname, var/input) var/value = vars[varname] diff --git a/code/game/machinery/telecomms/telecomunications.dm b/code/game/machinery/telecomms/telecomunications.dm index 79be894bf42..3657410b400 100644 --- a/code/game/machinery/telecomms/telecomunications.dm +++ b/code/game/machinery/telecomms/telecomunications.dm @@ -103,7 +103,7 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list() copy.data["original"] = signal.data["original"] else - del(copy) + qdel(copy) send_count++ diff --git a/code/game/machinery/telecomms/telemonitor.dm b/code/game/machinery/telecomms/telemonitor.dm index 91b258abd23..cdade74f121 100644 --- a/code/game/machinery/telecomms/telemonitor.dm +++ b/code/game/machinery/telecomms/telemonitor.dm @@ -141,7 +141,7 @@ A.state = 3 A.icon_state = "3" A.anchored = 1 - del(src) + qdel(src) else user << "\blue You disconnect the monitor." var/obj/structure/computerframe/A = new /obj/structure/computerframe( src.loc ) @@ -152,7 +152,7 @@ A.state = 4 A.icon_state = "4" A.anchored = 1 - del(src) + qdel(src) src.updateUsrDialog() return diff --git a/code/game/machinery/telecomms/traffic_control.dm b/code/game/machinery/telecomms/traffic_control.dm index b46cefa9e80..be8b0b5c57f 100644 --- a/code/game/machinery/telecomms/traffic_control.dm +++ b/code/game/machinery/telecomms/traffic_control.dm @@ -220,7 +220,7 @@ A.state = 3 A.icon_state = "3" A.anchored = 1 - del(src) + qdel(src) else user << "\blue You disconnect the monitor." var/obj/structure/computerframe/A = new /obj/structure/computerframe( src.loc ) @@ -231,7 +231,7 @@ A.state = 4 A.icon_state = "4" A.anchored = 1 - del(src) + qdel(src) src.updateUsrDialog() return diff --git a/code/game/machinery/turntable.dm b/code/game/machinery/turntable.dm index 2fe0c313a6a..12e946a8110 100644 --- a/code/game/machinery/turntable.dm +++ b/code/game/machinery/turntable.dm @@ -188,7 +188,7 @@ var/area/AA = get_area(F) var/turf/T = get_turf(F) if(T.density == 1 || AA.name != A.name) - del(F) + qdel(F) return cycle++ if(cycle > 3) @@ -203,7 +203,7 @@ var/area/AA = get_area(F) var/turf/T = get_turf(F) if(T.density == 1 || AA.name != A.name) - del(F) + qdel(F) return cycle++ if(cycle > 3) @@ -218,7 +218,7 @@ var/area/AA = get_area(F) var/turf/T = get_turf(F) if(T.density == 1 || AA.name != A.name) - del(F) + qdel(F) return cycle++ if(cycle > 3) @@ -235,7 +235,7 @@ var/area/AA = get_area(F) var/turf/T = get_turf(F) if(T.density == 1 || AA.name != A.name) - del(F) + qdel(F) return cycle++ if(cycle > 3) @@ -250,7 +250,7 @@ var/area/AA = get_area(F) var/turf/T = get_turf(F) if(T.density == 1 || AA.name != A.name) - del(F) + qdel(F) return cycle++ if(cycle > 3) @@ -265,7 +265,7 @@ var/area/AA = get_area(F) var/turf/T = get_turf(F) if(T.density == 1 || AA.name != A.name) - del(F) + qdel(F) return cycle++ if(cycle > 3) @@ -277,4 +277,4 @@ /obj/machinery/party/lasermachine/proc/turnoff() var/area/A = src.loc.loc for(var/obj/effects/laser/F in A) - del(F) + qdel(F) diff --git a/code/game/machinery/turrets.dm b/code/game/machinery/turrets.dm index 18f41d604a7..c644c4c5a85 100644 --- a/code/game/machinery/turrets.dm +++ b/code/game/machinery/turrets.dm @@ -284,7 +284,7 @@ src.health -= Proj.damage ..() if(prob(45) && Proj.damage > 0) src.spark_system.start() - del(Proj) + qdel(Proj) if (src.health <= 0) src.die() return @@ -317,7 +317,7 @@ src.stat |= BROKEN src.icon_state = "destroyed_target_prism" if (cover!=null) - del(cover) + qdel(cover) sleep(3) flick("explosion", src) spawn(13) diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index cefb8a194b4..98ef44fdfc6 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -22,7 +22,7 @@ if(!name) var/atom/tmp = new path src.product_name = initial(tmp.name) - del(tmp) + qdel(tmp) else src.product_name = name @@ -176,7 +176,7 @@ if(prob(75)) malfunction() else - del(src) + qdel(src) /obj/machinery/vending/proc/refill_inventory(obj/item/weapon/vending_refill/refill, datum/data/vending_product/machine, mob/user) var/total = 0 @@ -306,7 +306,7 @@ visible_message("[usr] inserts a credit chip into [src].") var/left = cashmoney.worth - currently_vending.price usr.unEquip(cashmoney) - del(cashmoney) + qdel(cashmoney) if(left) dispense_cash(left, src.loc, user) @@ -560,10 +560,10 @@ user << "\blue You successfully pull the coin out before the [src] could swallow it." else user << "\blue You weren't able to pull the coin out fast enough, the machine ate it, string and all." - del(coin) + qdel(coin) categories &= ~CAT_COIN else - del(coin) + qdel(coin) categories &= ~CAT_COIN R.amount-- diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm index 02597fed7d7..724643ed751 100644 --- a/code/game/machinery/washing_machine.dm +++ b/code/game/machinery/washing_machine.dm @@ -48,7 +48,7 @@ for(var/obj/item/stack/sheet/hairlesshide/HH in contents) var/obj/item/stack/sheet/wetleather/WL = new(src) WL.amount = HH.amount - del(HH) + qdel(HH) if(crayon) @@ -81,10 +81,10 @@ new_jumpsuit_icon_state = J.icon_state new_jumpsuit_item_state = J.item_state new_jumpsuit_name = J.name - del(J) + qdel(J) //world << "DEBUG: YUP! [new_icon_state] and [new_item_state]" break - del(J) + qdel(J) for(var/T in typesof(/obj/item/clothing/gloves/color)) var/obj/item/clothing/gloves/color/G = new T //world << "DEBUG: [color] == [J.color]" @@ -92,40 +92,40 @@ new_glove_icon_state = G.icon_state new_glove_item_state = G.item_state new_glove_name = G.name - del(G) + qdel(G) //world << "DEBUG: YUP! [new_icon_state] and [new_item_state]" break - del(G) + qdel(G) for(var/T in typesof(/obj/item/clothing/shoes)) var/obj/item/clothing/shoes/S = new T //world << "DEBUG: [color] == [J.color]" if(_color == S._color) new_shoe_icon_state = S.icon_state new_shoe_name = S.name - del(S) + qdel(S) //world << "DEBUG: YUP! [new_icon_state] and [new_item_state]" break - del(S) + qdel(S) for(var/T in typesof(/obj/item/weapon/bedsheet)) var/obj/item/weapon/bedsheet/B = new T //world << "DEBUG: [color] == [J.color]" if(_color == B._color) new_sheet_icon_state = B.icon_state new_sheet_name = B.name - del(B) + qdel(B) //world << "DEBUG: YUP! [new_icon_state] and [new_item_state]" break - del(B) + qdel(B) for(var/T in typesof(/obj/item/clothing/head/soft)) var/obj/item/clothing/head/soft/H = new T //world << "DEBUG: [color] == [J.color]" if(_color == H._color) new_softcap_icon_state = H.icon_state new_softcap_name = H.name - del(H) + qdel(H) //world << "DEBUG: YUP! [new_icon_state] and [new_item_state]" break - del(H) + qdel(H) if(new_jumpsuit_icon_state && new_jumpsuit_item_state && new_jumpsuit_name) for(var/obj/item/clothing/under/J in contents) //world << "DEBUG: YUP! FOUND IT!" @@ -168,7 +168,7 @@ H._color = _color H.name = new_softcap_name H.desc = new_desc - del(crayon) + qdel(crayon) crayon = null @@ -211,7 +211,7 @@ var/obj/item/weapon/grab/G = W if(ishuman(G.assailant) && iscorgi(G.affecting)) G.affecting.loc = src - del(G) + qdel(G) state = 3 else ..() diff --git a/code/game/mecha/combat/marauder.dm b/code/game/mecha/combat/marauder.dm index 8ae16a4e054..d5820f7d661 100644 --- a/code/game/mecha/combat/marauder.dm +++ b/code/game/mecha/combat/marauder.dm @@ -79,7 +79,7 @@ if(equipment.len)//Now to remove it and equip anew. for(ME in equipment) equipment -= ME - del(ME) + qdel(ME) ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot(src) ME.attach(src) ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack(src) diff --git a/code/game/mecha/equipment/mecha_equipment.dm b/code/game/mecha/equipment/mecha_equipment.dm index 4ca4d89acfb..15f0b7e8aa9 100644 --- a/code/game/mecha/equipment/mecha_equipment.dm +++ b/code/game/mecha/equipment/mecha_equipment.dm @@ -58,7 +58,7 @@ else chassis.occupant << sound('sound/mecha/critdestr.ogg',volume=50) spawn - del src + qdel(src) return /obj/item/mecha_parts/mecha_equipment/proc/critfail() diff --git a/code/game/mecha/equipment/tools/tools.dm b/code/game/mecha/equipment/tools/tools.dm index dd13db06290..4e35a0b1e72 100644 --- a/code/game/mecha/equipment/tools/tools.dm +++ b/code/game/mecha/equipment/tools/tools.dm @@ -323,7 +323,7 @@ if(do_after_cooldown(target)) if(disabled) return chassis.spark_system.start() - del(target) + qdel(target) playsound(target, 'sound/items/Deconstruct.ogg', 50, 1) chassis.use_power(energy_drain) if(1) @@ -446,7 +446,7 @@ do_after_cooldown() src = null spawn(rand(150,300)) - del(P) + qdel(P) return /obj/item/mecha_parts/mecha_equipment/gravcatapult diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm index a9ef99f5676..f76c7ee63db 100644 --- a/code/game/mecha/equipment/weapons/weapons.dm +++ b/code/game/mecha/equipment/weapons/weapons.dm @@ -100,7 +100,7 @@ M.attack_log += "\[[time_stamp()]\] UNKNOWN SUBJECT (No longer exists) shot [M]/[M.ckey] with a [src]" log_attack("UNKNOWN shot [M] ([M.ckey]) with a [src]") if(life <= 0) - del(src) + qdel(src) return diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index f40127bf46b..27fe49e746d 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -883,7 +883,7 @@ src.reset_icon() user.drop_item() - del(P) + qdel(P) else call((proc_res["dynattackby"]||src), "dynattackby")(W,user) @@ -1840,7 +1840,7 @@ if(t_air) t_air.merge(removed) else //just delete the cabin gas, we're in space or some shit - del(removed) + qdel(removed) else return stop() return @@ -1883,7 +1883,7 @@ if(mecha.loc && hascall(mecha.loc,"assume_air")) mecha.loc.assume_air(leaked_gas) else - del(leaked_gas) + qdel(leaked_gas) if(mecha.hasInternalDamage(MECHA_INT_SHORT_CIRCUIT)) if(mecha.get_charge()) mecha.spark_system.start() diff --git a/code/game/mecha/mecha_construction_paths.dm b/code/game/mecha/mecha_construction_paths.dm index 223f6d4aa24..b201b83993d 100644 --- a/code/game/mecha/mecha_construction_paths.dm +++ b/code/game/mecha/mecha_construction_paths.dm @@ -91,7 +91,7 @@ const_holder.icon_state = "ripley0" const_holder.density = 1 const_holder.overlays.len = 0 - del(src) + qdel(src) return @@ -300,7 +300,7 @@ const_holder.icon = 'icons/mecha/mech_construction.dmi' const_holder.icon_state = "gygax0" const_holder.density = 1 - del(src) + qdel(src) return @@ -579,7 +579,7 @@ const_holder.icon = 'icons/mecha/mech_construction.dmi' const_holder.icon_state = "fireripley0" const_holder.density = 1 - del(src) + qdel(src) return @@ -801,7 +801,7 @@ var/obj/item/mecha_parts/chassis/const_holder = holder const_holder.construct = new /datum/construction/mecha/honker(const_holder) const_holder.density = 1 - del(src) + qdel(src) return @@ -879,7 +879,7 @@ const_holder.icon = 'icons/mecha/mech_construction.dmi' const_holder.icon_state = "durand0" const_holder.density = 1 - del src + qdel(src) return /datum/construction/reversible/mecha/durand @@ -1161,7 +1161,7 @@ const_holder.icon = 'icons/mecha/mech_construction.dmi' const_holder.icon_state = "phazon0" const_holder.density = 1 - del src + qdel(src) return /datum/construction/reversible/mecha/phazon @@ -1477,7 +1477,7 @@ const_holder.icon = 'icons/mecha/mech_construction.dmi' const_holder.icon_state = "odysseus0" const_holder.density = 1 - del src + qdel(src) return diff --git a/code/game/mecha/mecha_control_console.dm b/code/game/mecha/mecha_control_console.dm index 1b37a6ce3d1..036872780b2 100644 --- a/code/game/mecha/mecha_control_console.dm +++ b/code/game/mecha/mecha_control_console.dm @@ -108,7 +108,7 @@ var/obj/mecha/M = in_mecha() if(M) M.emp_act(2) - del(src) + qdel(src) proc/get_mecha_log() if(!src.in_mecha()) diff --git a/code/game/mecha/working/ripley.dm b/code/game/mecha/working/ripley.dm index dd9a4480e3d..a50b3e5d225 100644 --- a/code/game/mecha/working/ripley.dm +++ b/code/game/mecha/working/ripley.dm @@ -101,7 +101,7 @@ var/obj/item/mecha_parts/mecha_equipment/tool/hydraulic_clamp/HC = new /obj/item/mecha_parts/mecha_equipment/tool/hydraulic_clamp HC.attach(src) for(var/obj/item/mecha_parts/mecha_tracking/B in src.contents)//Deletes the beacon so it can't be found easily - del (B) + qdel(B) /obj/mecha/working/ripley/Exit(atom/movable/O) if(O in cargo) diff --git a/code/game/objects/effects/decals/Cleanable/fuel.dm b/code/game/objects/effects/decals/Cleanable/fuel.dm index 5cc3ebd3fe0..aad9f5ab4bf 100644 --- a/code/game/objects/effects/decals/Cleanable/fuel.dm +++ b/code/game/objects/effects/decals/Cleanable/fuel.dm @@ -14,7 +14,7 @@ obj/effect/decal/cleanable/liquid_fuel if(other != src) other.amount += src.amount spawn other.Spread() - del src + qdel(src) Spread() . = ..() diff --git a/code/game/objects/effects/decals/Cleanable/humans.dm b/code/game/objects/effects/decals/Cleanable/humans.dm index c2945ca8b9b..859834960ff 100644 --- a/code/game/objects/effects/decals/Cleanable/humans.dm +++ b/code/game/objects/effects/decals/Cleanable/humans.dm @@ -32,7 +32,7 @@ var/global/list/image/splatter_cache=list() if(B != src) if (B.blood_DNA) blood_DNA |= B.blood_DNA.Copy() - del(B) + qdel(B) spawn(DRYING_TIME * (amount+1)) dry() diff --git a/code/game/objects/effects/decals/warning_stripes.dm b/code/game/objects/effects/decals/warning_stripes.dm index 3270e9882a9..dbec481e944 100644 --- a/code/game/objects/effects/decals/warning_stripes.dm +++ b/code/game/objects/effects/decals/warning_stripes.dm @@ -53,7 +53,7 @@ /obj/effect/decal/warning_stripes/New() . = ..() loc.overlays += src - del src + qdel(src) // Credit to Neinhaus for making these into individual decals. diff --git a/code/game/objects/effects/effect_system.dm b/code/game/objects/effects/effect_system.dm index 3e4abc7c5b7..1d25b822d9b 100644 --- a/code/game/objects/effects/effect_system.dm +++ b/code/game/objects/effects/effect_system.dm @@ -40,11 +40,7 @@ would spawn and follow the beaker, even if it is carried or thrown. var/amount = 8.0 /obj/effect/proc/delete() - loc = null - if(reagents) - reagents.my_atom = null - reagents.delete() - return + qdel(src) /obj/effect/effect/water/New() @@ -431,7 +427,7 @@ steam.start() -- spawns the effect if(seed_name && plant_controller) seed = plant_controller.seeds[seed_name] if(!seed) - del(src) + qdel(src) ..() @@ -685,7 +681,7 @@ steam.start() -- spawns the effect /obj/effect/effect/mustard_gas/New() ..() spawn (100) - del(src) + qdel(src) return /obj/effect/effect/mustard_gas/Move() @@ -752,7 +748,7 @@ steam.start() -- spawns the effect sleep(10) step(smoke,direction) spawn(100) - del(smoke) + qdel(smoke) src.total_smoke-- @@ -1238,7 +1234,7 @@ steam.start() -- spawns the effect if (istype(T, /turf)) T.hotspot_expose(3000,100) spawn (100) - del(src) + qdel(src) return /obj/effects/sparkels/Destroy() @@ -1294,5 +1290,5 @@ steam.start() -- spawns the effect sleep(5) step(sparks,direction) spawn(20) - del(sparks) + qdel(sparks) src.total_sparks-- diff --git a/code/game/objects/effects/glowshroom.dm b/code/game/objects/effects/glowshroom.dm index 2fdad42d3c7..ea03fea46bc 100644 --- a/code/game/objects/effects/glowshroom.dm +++ b/code/game/objects/effects/glowshroom.dm @@ -163,4 +163,4 @@ /obj/effect/glowshroom/proc/CheckEndurance() if(endurance <= 0) - del(src) \ No newline at end of file + qdel(src) \ No newline at end of file diff --git a/code/game/objects/effects/manifest.dm b/code/game/objects/effects/manifest.dm index bee6174f123..ec45c7a0894 100644 --- a/code/game/objects/effects/manifest.dm +++ b/code/game/objects/effects/manifest.dm @@ -17,5 +17,5 @@ P.info = dat P.name = "paper- 'Crew Manifest'" //SN src = null - del(src) + qdel(src) return \ No newline at end of file diff --git a/code/game/objects/effects/mines.dm b/code/game/objects/effects/mines.dm index dbb891ca337..b5ea74ec8e9 100644 --- a/code/game/objects/effects/mines.dm +++ b/code/game/objects/effects/mines.dm @@ -33,7 +33,7 @@ randmutb(obj) domutcheck(obj,null) spawn(0) - del(src) + qdel(src) /obj/effect/mine/proc/triggerstun(obj) if(ismob(obj)) @@ -43,30 +43,30 @@ s.set_up(3, 1, src) s.start() spawn(0) - del(src) + qdel(src) /obj/effect/mine/proc/triggern2o(obj) atmos_spawn_air(SPAWN_N2O, 360) spawn(0) - del(src) + qdel(src) /obj/effect/mine/proc/triggerplasma(obj) atmos_spawn_air(SPAWN_HEAT | SPAWN_TOXINS, 360) spawn(0) - del(src) + qdel(src) /obj/effect/mine/proc/triggerkick(obj) var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(3, 1, src) s.start() - del(obj:client) + qdel(obj:client) spawn(0) - del(src) + qdel(src) /obj/effect/mine/proc/explode(obj) explosion(loc, 0, 1, 2, 3) spawn(0) - del(src) + qdel(src) /obj/effect/mine/dnascramble name = "Radiation Mine" diff --git a/code/game/objects/effects/portals.dm b/code/game/objects/effects/portals.dm index 9440163b460..7dcfbe425cc 100644 --- a/code/game/objects/effects/portals.dm +++ b/code/game/objects/effects/portals.dm @@ -44,7 +44,7 @@ if (icon_state == "portal1") return if (!( target )) - del(src) + qdel(src) return if (istype(M, /atom/movable)) if(prob(failchance)) //oh dear a problem, put em in deep space diff --git a/code/game/objects/explosion.dm b/code/game/objects/explosion.dm index f6167259e0b..71ce05beffc 100644 --- a/code/game/objects/explosion.dm +++ b/code/game/objects/explosion.dm @@ -1,11 +1,5 @@ //TODO: Flash range does nothing currently -//A very crude linear approximatiaon of pythagoras theorem. -/proc/cheap_pythag(var/dx, var/dy) - dx = abs(dx); dy = abs(dy); - if(dx>=dy) return dx + (0.5*dy) //The longest side add half the shortest side approximates the hypotenuse - else return dy + (0.5*dx) - /proc/trange(var/Dist=0,var/turf/Center=null)//alternative to range (ONLY processes turfs and thus less intensive) if(Center==null) return @@ -73,14 +67,12 @@ far_volume += (dist <= far_dist * 0.5 ? 50 : 0) // add 50 volume if the mob is pretty close to the explosion M.playsound_local(epicenter, 'sound/effects/explosionfar.ogg', far_volume, 1, frequency, falloff = 5) - - //Pause the lighting updates for a bit - var/datum/controller/process/lighting = processScheduler.getProcess("lighting") - lighting.disable() - - var/powernet_rebuild_was_deferred_already = defer_powernet_rebuild - if(defer_powernet_rebuild != 2) - defer_powernet_rebuild = 1 + var/close = range(world.view+round(devastation_range,1), epicenter) + // to all distanced mobs play a different sound + for(var/mob/M in world) if(M.z == epicenter.z) if(!(M in close)) + // check if the mob can hear + if(M.ear_deaf <= 0 || !M.ear_deaf) if(!istype(M.loc,/turf/space)) + M << 'sound/effects/explosionfar.ogg' if(heavy_impact_range > 1) var/datum/effect/system/explosion/E = new/datum/effect/system/explosion() @@ -93,7 +85,7 @@ for(var/turf/T in trange(max_range, epicenter)) - var/dist = cheap_pythag(T.x - x0,T.y - y0) + var/dist = cheap_hypotenuse(T.x, T.y, x0, y0) if(config.reactionary_explosions) var/turf/Trajectory = T @@ -107,7 +99,7 @@ dist += D.explosion_block var/flame_dist = 0 - var/throw_dist = dist +// var/throw_dist = max_range - dist if(dist < flame_range) flame_dist = 1 @@ -122,23 +114,25 @@ if(T) for(var/atom_movable in T.contents) //bypass type checking since only atom/movable can be contained by turfs anyway var/atom/movable/AM = atom_movable - if(AM) AM.ex_act(dist) + if(AM && AM.simulated) AM.ex_act(dist) if(flame_dist && prob(40) && !istype(T, /turf/space) && !T.density) PoolOrNew(/obj/effect/hotspot, T) //Mostly for ambience! if(dist > 0) T.ex_act(dist) //--- THROW ITEMS AROUND --- - - var/throw_dir = get_dir(epicenter,T) - for(var/obj/item/I in T) - spawn(0) //Simultaneously not one at a time - if(I && !I.anchored) - var/throw_range = rand(throw_dist, max_range) - var/turf/throw_at = get_ranged_target_turf(I, throw_dir, throw_range) - I.throw_speed = 4 //Temporarily change their throw_speed for embedding purposes (Reset when it finishes throwing, regardless of hitting anything) - I.throw_at(throw_at, throw_range, 2)//Throw it at 2 speed, this is purely visual anyway. - +/* + if(throw_dist > 0) + var/throw_dir = get_dir(epicenter,T) + for(var/obj/item/I in T) + spawn(0) //Simultaneously not one at a time + if(I && !I.anchored) + var/throw_mult = 0.5 + (0.5 * rand()) // Between 0.5 and 1.0 + var/throw_range = round((throw_dist + 1) * throw_mult) // Roughly 50% to 100% of throw_dist + if(throw_range > 0) + var/turf/throw_at = get_ranged_target_turf(I, throw_dir, throw_range) + I.throw_at(throw_at, throw_range, 2, no_spin = 1) //Throw it at 2 speed, this is purely visual anyway; don't spin the thrown items, it's very costly. +*/ var/took = (world.timeofday-start)/10 //You need to press the DebugGame verb to see these now....they were getting annoying and we've collected a fair bit of data. Just -test- changes to explosion code using this please so we can compare if(Debug2) world.log << "## DEBUG: Explosion([x0],[y0],[z0])(d[devastation_range],h[heavy_impact_range],l[light_impact_range]): Took [took] seconds." @@ -149,14 +143,6 @@ if(Array) Array.sense_explosion(x0,y0,z0,devastation_range,heavy_impact_range,light_impact_range,took,orig_dev_range,orig_heavy_range,orig_light_range) - sleep(8) - - lighting.enable() - - if(!powernet_rebuild_was_deferred_already) - if(defer_powernet_rebuild != 2) - defer_powernet_rebuild = 0 - return 1 @@ -205,7 +191,7 @@ var/list/wipe_colours = list() for(var/turf/T in trange(max_range, epicenter)) wipe_colours += T - var/dist = cheap_pythag(T.x - x0, T.y - y0) + var/dist = cheap_hypotenuse(T.x, T.y, x0, y0) if(newmode == "Yes") var/turf/TT = T diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index e1b8e41baf8..0914bc7b855 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -12,7 +12,7 @@ var/w_class = 3.0 var/slot_flags = 0 //This is used to determine on which slots an item can fit. pass_flags = PASSTABLE - pressure_resistance = 5 + pressure_resistance = 3 // causeerrorheresoifixthis var/obj/item/master = null @@ -52,17 +52,9 @@ var/list/species_fit = null //This object has a different appearance when worn by these species /obj/item/Destroy() - if(istype(src.loc, /mob)) - var/mob/H = src.loc - H.unEquip(src) // items at the very least get unequipped from their mob before being deleted - if(reagents && istype(reagents)) - reagents.my_atom = null - reagents.delete() - if(hasvar(src, "holder")) - src:holder = null - /* BROKEN, FUCK BYOND - if(hasvar(src, "my_atom")) - src:my_atom = null*/ + if(ismob(loc)) + var/mob/m = loc + m.unEquip(src, 1) return ..() /obj/item/device @@ -85,7 +77,7 @@ return /obj/item/blob_act() - del(src) + qdel(src) //user: The mob that is suiciding //damagetype: The type of damage the item will inflict on the user diff --git a/code/game/objects/items/ashtray.dm b/code/game/objects/items/ashtray.dm index bf554463a42..d064bee3e4f 100644 --- a/code/game/objects/items/ashtray.dm +++ b/code/game/objects/items/ashtray.dm @@ -31,7 +31,7 @@ processing_objects.Remove(cig) var/obj/item/butt = new cig.type_butt(src) cig.transfer_fingerprints_to(butt) - del(cig) + qdel(cig) else if (cig.lit == 0) user << "You place [cig] in [src] without even smoking it. Why would you do that?" diff --git a/code/game/objects/items/bodybag.dm b/code/game/objects/items/bodybag.dm index 8eaf699205d..3c36ea9dfe8 100644 --- a/code/game/objects/items/bodybag.dm +++ b/code/game/objects/items/bodybag.dm @@ -79,15 +79,17 @@ visible_message("[usr] folds up the [src.name]") new item_path(get_turf(src)) spawn(0) - del(src) + qdel(src) return -/obj/structure/closet/bodybag/update_icon() - if(!opened) - icon_state = icon_closed - else - icon_state = icon_opened +/obj/structure/closet/body_bag/relaymove(mob/user as mob) + if(user.stat) + return + // Make it possible to escape from bodybags in morgues and crematoriums + if(loc && (isturf(loc) || istype(loc, /obj/structure/morgue) || istype(loc, /obj/structure/crematorium))) + if(!open()) + user << "It won't budge!" /obj/item/bodybag/cryobag name = "stasis bag" @@ -98,7 +100,7 @@ attack_self(mob/user) var/obj/structure/closet/body_bag/cryobag/R = new /obj/structure/closet/body_bag/cryobag(user.loc) R.add_fingerprint(user) - del(src) + qdel(src) @@ -119,7 +121,7 @@ O.icon = src.icon O.icon_state = "bodybag_used" O.desc = "Pretty useless now.." - del(src) + qdel(src) MouseDrop(over_object, src_location, over_location) if((over_object == usr && (in_range(src, usr) || usr.contents.Find(src)))) diff --git a/code/game/objects/items/candle.dm b/code/game/objects/items/candle.dm index c1be809fe5f..9a46a843a56 100644 --- a/code/game/objects/items/candle.dm +++ b/code/game/objects/items/candle.dm @@ -63,7 +63,7 @@ if(istype(src.loc, /mob)) var/mob/M = src.loc M.unEquip(src, 1) //src is being deleted anyway - del(src) + qdel(src) update_icon() if(istype(loc, /turf)) //start a fire if possible var/turf/T = loc diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index 667c37c882f..ac5afb75b07 100755 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -1072,7 +1072,7 @@ var/global/list/obj/item/device/pda/PDAs = list() if ( !(C:blood_DNA) ) user << "\blue No blood found on [C]" if(C:blood_DNA) - del(C:blood_DNA) + qdel(C:blood_DNA) else user << "\blue Blood found on [C]. Analysing..." spawn(15) diff --git a/code/game/objects/items/devices/aicard.dm b/code/game/objects/items/devices/aicard.dm index b2107561a60..ff16cf9e43c 100644 --- a/code/game/objects/items/devices/aicard.dm +++ b/code/game/objects/items/devices/aicard.dm @@ -132,7 +132,7 @@ /obj/item/device/aicard/ex_act(severity) switch(severity) if(1.0) - del(src) + qdel(src) if(2.0) if(prob(50)) qdel(src) if(3.0) diff --git a/code/game/objects/items/devices/autopsy.dm b/code/game/objects/items/devices/autopsy.dm index d0e9ba8fcdf..6f815fee0c9 100644 --- a/code/game/objects/items/devices/autopsy.dm +++ b/code/game/objects/items/devices/autopsy.dm @@ -68,7 +68,7 @@ else D.organ_names += ", [O.name]" - del D.organs_scanned[O.name] + qdel(D.organs_scanned[O.name]) D.organs_scanned[O.name] = W.copy() for(var/V in O.trace_chemicals) diff --git a/code/game/objects/items/devices/chameleonproj.dm b/code/game/objects/items/devices/chameleonproj.dm index 0e83d0fa1ce..034fdb53ebc 100644 --- a/code/game/objects/items/devices/chameleonproj.dm +++ b/code/game/objects/items/devices/chameleonproj.dm @@ -5,82 +5,85 @@ slot_flags = SLOT_BELT item_state = "electronic" throwforce = 5.0 - throw_speed = 1 + throw_speed = 3 throw_range = 5 w_class = 2.0 origin_tech = "syndicate=4;magnets=4" var/can_use = 1 var/obj/effect/dummy/chameleon/active_dummy = null - var/saved_item = "/obj/item/weapon/cigbutt" + var/saved_item = /obj/item/weapon/cigbutt + var/saved_icon = 'icons/obj/clothing/masks.dmi' + var/saved_icon_state = "cigbutt" + var/saved_overlays = null + var/saved_underlays = null - dropped() - disrupt() +/obj/item/device/chameleon/dropped() + disrupt() - attack_self() - toggle() +/obj/item/device/chameleon/equipped() + disrupt() - afterattack(atom/target, mob/user, proximity) - if(!proximity) return - if(istype(target,/obj/item/toy/cards/singlecard)) - user << "\red Unable to scan [target]." - return - if(istype(target,/obj/item)) - playsound(src, 'sound/weapons/flash.ogg', 100, 1, 1) - user << "\blue Scanned [target]." +/obj/item/device/chameleon/attack_self() + toggle() + +/obj/item/device/chameleon/afterattack(atom/target, mob/user , proximity) + if(!proximity) return + if(!active_dummy) + if(istype(target,/obj/item) && !istype(target, /obj/item/weapon/disk/nuclear)) + playsound(get_turf(src), 'sound/weapons/flash.ogg', 100, 1, -6) + user << "Scanned [target]." saved_item = target.type + saved_icon = target.icon + saved_icon_state = target.icon_state + saved_overlays = target.overlays + saved_underlays = target.underlays - proc/toggle() - if(!can_use || !saved_item) return - if(active_dummy) - playsound(src, 'sound/effects/pop.ogg', 100, 1, 1) - for(var/atom/movable/A in active_dummy) - A.loc = active_dummy.loc - if(ismob(A)) - if(A:client) - A:client:eye = A - del(active_dummy) - active_dummy = null - usr << "\blue You deactivate the [src]." - var/obj/effect/overlay/T = new/obj/effect/overlay(get_turf(src)) - T.icon = 'icons/effects/effects.dmi' - flick("emppulse",T) - spawn(8) T.delete() - else - playsound(src, 'sound/effects/pop.ogg', 100, 1, 1) - var/obj/O = new saved_item(src) - if(!O) return - var/obj/effect/dummy/chameleon/C = new/obj/effect/dummy/chameleon(usr.loc) - C.name = O.name - C.desc = O.desc - C.icon = O.icon - C.icon_state = O.icon_state - C.dir = O.dir - usr.loc = C - C.master = src - src.active_dummy = C - del(O) - usr << "\blue You activate the [src]." - var/obj/effect/overlay/T = new/obj/effect/overlay(get_turf(src)) - T.icon = 'icons/effects/effects.dmi' - flick("emppulse",T) - spawn(8) T.delete() +/obj/item/device/chameleon/proc/toggle() + if(!can_use || !saved_item) return + if(active_dummy) + eject_all() + playsound(get_turf(src), 'sound/effects/pop.ogg', 100, 1, -6) + qdel(active_dummy) + active_dummy = null + usr << "You deactivate \the [src]." + var/obj/effect/overlay/T = new/obj/effect/overlay(get_turf(src)) + T.icon = 'icons/effects/effects.dmi' + flick("emppulse",T) + spawn(8) + qdel(T) + else + playsound(get_turf(src), 'sound/effects/pop.ogg', 100, 1, -6) + var/obj/O = new saved_item(src) + if(!O) return + var/obj/effect/dummy/chameleon/C = new/obj/effect/dummy/chameleon(usr.loc) + C.activate(O, usr, saved_icon, saved_icon_state, saved_overlays, saved_underlays, src) + qdel(O) + usr << "You activate \the [src]." + var/obj/effect/overlay/T = new/obj/effect/overlay(get_turf(src)) + T.icon = 'icons/effects/effects.dmi' + flick("emppulse",T) + spawn(8) + qdel(T) - proc/disrupt() - if(active_dummy) - var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread - spark_system.set_up(5, 0, src) - spark_system.attach(src) - spark_system.start() - for(var/atom/movable/A in active_dummy) - A.loc = active_dummy.loc - if(ismob(A)) - if(A:client) - A:client:eye = A - del(active_dummy) - active_dummy = null - can_use = 0 - spawn(100) can_use = 1 +/obj/item/device/chameleon/proc/disrupt(var/delete_dummy = 1) + if(active_dummy) + var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread + spark_system.set_up(5, 0, src) + spark_system.attach(src) + spark_system.start() + eject_all() + if(delete_dummy) + qdel(active_dummy) + active_dummy = null + can_use = 0 + spawn(50) can_use = 1 +/obj/item/device/chameleon/proc/eject_all() + for(var/atom/movable/A in active_dummy) + A.loc = active_dummy.loc + if(ismob(A)) + var/mob/M = A + M.reset_view(null) /obj/effect/dummy/chameleon name = "" @@ -89,38 +92,60 @@ anchored = 1 var/can_move = 1 var/obj/item/device/chameleon/master = null - attackby() - for(var/mob/M in src) - M << "\red Your chameleon-projector deactivates." - master.disrupt() - attack_hand() - for(var/mob/M in src) - M << "\red Your chameleon-projector deactivates." - master.disrupt() - ex_act() - for(var/mob/M in src) - M << "\red Your chameleon-projector deactivates." - master.disrupt() - bullet_act() - for(var/mob/M in src) - M << "\red Your chameleon-projector deactivates." - ..() - master.disrupt() - relaymove(var/mob/user, direction) - if(istype(loc, /turf/space)) return //No magical space movement! - if(can_move) - can_move = 0 - switch(usr.bodytemperature) - if(300 to INFINITY) - spawn(10) can_move = 1 - if(295 to 300) - spawn(13) can_move = 1 - if(280 to 295) - spawn(16) can_move = 1 - if(260 to 280) - spawn(20) can_move = 1 - else - spawn(25) can_move = 1 - step(src,direction) - return +/obj/effect/dummy/chameleon/proc/activate(var/obj/O, var/mob/M, new_icon, new_iconstate, new_overlays, new_underlays, var/obj/item/device/chameleon/C) + name = O.name + desc = O.desc + icon = new_icon + icon_state = new_iconstate + overlays = new_overlays + underlays = new_underlays + dir = O.dir + M.loc = src + master = C + master.active_dummy = src + +/obj/effect/dummy/chameleon/attackby() + for(var/mob/M in src) + M << "Your chameleon-projector deactivates." + master.disrupt() + +/obj/effect/dummy/chameleon/attack_hand() + for(var/mob/M in src) + M << "Your chameleon-projector deactivates." + master.disrupt() + +/obj/effect/dummy/chameleon/ex_act() //ok now THATS some serious protection against explosions right here + for(var/mob/M in src) + M << "Your chameleon-projector deactivates." + master.disrupt() + +/obj/effect/dummy/chameleon/bullet_act() + for(var/mob/M in src) + M << "Your chameleon-projector deactivates." + ..() + master.disrupt() + +/obj/effect/dummy/chameleon/relaymove(var/mob/user, direction) + if(istype(loc, /turf/space) || !direction) + return //No magical space movement! + + if(can_move) + can_move = 0 + switch(user.bodytemperature) + if(300 to INFINITY) + spawn(10) can_move = 1 + if(295 to 300) + spawn(13) can_move = 1 + if(280 to 295) + spawn(16) can_move = 1 + if(260 to 280) + spawn(20) can_move = 1 + else + spawn(25) can_move = 1 + step(src, direction) + return + +/obj/effect/dummy/chameleon/Destroy() + master.disrupt(0) + return ..() \ No newline at end of file diff --git a/code/game/objects/items/devices/lightreplacer.dm b/code/game/objects/items/devices/lightreplacer.dm index bb94f55b571..087f1fa209b 100644 --- a/code/game/objects/items/devices/lightreplacer.dm +++ b/code/game/objects/items/devices/lightreplacer.dm @@ -82,7 +82,7 @@ G.amount = remaining if(!G.amount) user.drop_item() - del(G) + qdel(G) AddUses(increment) user << "You insert a piece of glass into the [src.name]. You have [uses] lights remaining." return @@ -94,7 +94,7 @@ AddUses(1) user << "You insert the [L.name] into the [src.name]. You have [uses] lights remaining." user.drop_item() - del(L) + qdel(L) return else user << "You need a working light." @@ -167,7 +167,7 @@ target.brightness_color = L2.brightness_color target.on = target.has_power() target.update() - del(L2) + qdel(L2) if(target.on && target.rigged) target.explode() diff --git a/code/game/objects/items/devices/modkit.dm b/code/game/objects/items/devices/modkit.dm index 61c83fdc462..a0359e62362 100644 --- a/code/game/objects/items/devices/modkit.dm +++ b/code/game/objects/items/devices/modkit.dm @@ -24,7 +24,7 @@ if(!parts) user << "This kit has no parts for this modification left." user.unEquip(src) - del(src) + qdel(src) return var/allowed = 0 @@ -60,7 +60,7 @@ if(!parts) user.unEquip(src) - del(src) + qdel(src) /obj/item/device/modkit/examine() ..() diff --git a/code/game/objects/items/devices/radio/beacon.dm b/code/game/objects/items/devices/radio/beacon.dm index 146be0a57ed..f370cf3dd01 100644 --- a/code/game/objects/items/devices/radio/beacon.dm +++ b/code/game/objects/items/devices/radio/beacon.dm @@ -38,7 +38,7 @@ /obj/item/device/radio/beacon/bacon //Probably a better way of doing this, I'm lazy. proc/digest_delay() spawn(600) - del(src) + qdel(src) // SINGULO BEACON SPAWNER @@ -54,7 +54,7 @@ user << "\blue Locked In" new /obj/machinery/power/singularity_beacon/syndicate( user.loc ) playsound(src, 'sound/effects/pop.ogg', 100, 1, 1) - del(src) + qdel(src) return /obj/item/device/radio/beacon/syndicate/bomb @@ -67,7 +67,7 @@ user << "\blue Locked In" new /obj/machinery/syndicatebomb( user.loc ) playsound(src, 'sound/effects/pop.ogg', 100, 1, 1) - del(src) + qdel(src) return @@ -84,5 +84,5 @@ user << "\blue Locked In" new /obj/machinery/telepad_cargo(user.loc) playsound(src, 'sound/effects/pop.ogg', 100, 1, 1) - del(src) + qdel(src) return \ No newline at end of file diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index ec45cb5e814..7aafc777268 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -191,7 +191,7 @@ 0, "*garbled automated announcement*", src, message, from, "Automated Announcement", from, "synthesized voice", 4, 0, zlevel, connection.frequency, follow_target=follow_target) - del(A) + qdel(A) return // Interprets the message mode when talking into a radio, possibly returning a connection datum diff --git a/code/game/objects/items/flag.dm b/code/game/objects/items/flag.dm index 5ee645ff75b..d3d58525acd 100644 --- a/code/game/objects/items/flag.dm +++ b/code/game/objects/items/flag.dm @@ -22,17 +22,17 @@ if(istype(src.loc,/turf)) new /obj/effect/decal/cleanable/ash(src.loc) new /obj/item/stack/rods(src.loc) - del(src) + qdel(src) return if(istype(src.loc,/mob/living/carbon)) var/mob/living/carbon/C = src.loc var/turf/location = get_turf(C) new /obj/effect/decal/cleanable/ash(location) new /obj/item/stack/rods(location) - del(src) + qdel(src) return else - del(src) + qdel(src) return /obj/item/flag/attackby(obj/item/weapon/W as obj, mob/user as mob, params) diff --git a/code/game/objects/items/policetape.dm b/code/game/objects/items/policetape.dm index 95430e24238..3420dd3acbd 100644 --- a/code/game/objects/items/policetape.dm +++ b/code/game/objects/items/policetape.dm @@ -198,10 +198,10 @@ var/list/tape_roll_applications = list() for (var/obj/item/tape/P in cur) if(P.icon_state == icon_dir) N = 0 - del(P) + qdel(P) cur = get_step(cur,dir[i]) - del(src) + qdel(src) return diff --git a/code/game/objects/items/random_items.dm b/code/game/objects/items/random_items.dm index 1d63ff3e972..5ad2f715f65 100644 --- a/code/game/objects/items/random_items.dm +++ b/code/game/objects/items/random_items.dm @@ -9,7 +9,7 @@ var/T = pick(types) new T(loc) spawn(1) - del src + qdel(src) // ------------------------------------- // Random cleanables, clearly this makes sense @@ -23,7 +23,7 @@ var/T = pick(list) new T(loc) spawn(0) - del src + qdel(src) /obj/item/stack/sheet/animalhide/random @@ -34,7 +34,7 @@ var/htype = pick(/obj/item/stack/sheet/animalhide/cat,/obj/item/stack/sheet/animalhide/corgi,/obj/item/stack/sheet/animalhide/human,/obj/item/stack/sheet/animalhide/lizard,/obj/item/stack/sheet/animalhide/monkey) var/obj/item/stack/S = new htype(loc) S.amount = amount - del src + qdel(src) // ------------------------------------- // Not yet identified chemical. @@ -115,7 +115,7 @@ pixel_x = rand(-5,5) pixel_y = rand(-5,5) spawn(0) - del src + qdel(src) /obj/item/weapon/storage/pill_bottle/random_meds name = "unlabelled pillbottle" @@ -311,9 +311,9 @@ Cat2.desc = "It's was alive the whole time!" sleep(2) if(prob(50)) - del Cat1 + qdel(Cat1) else - del Cat2 + qdel(Cat2) ..() // -------------------------------------- diff --git a/code/game/objects/items/robot/robot_parts.dm b/code/game/objects/items/robot/robot_parts.dm index aec027bc1b8..fd8963f9b02 100644 --- a/code/game/objects/items/robot/robot_parts.dm +++ b/code/game/objects/items/robot/robot_parts.dm @@ -131,7 +131,7 @@ if (user.get_inactive_hand()==src) user.unEquip(src) user.put_in_inactive_hand(B) - del(src) + qdel(src) if(istype(W, /obj/item/robot_parts/l_leg)) if(src.l_leg) return user.drop_item() @@ -254,7 +254,7 @@ callHook("borgify", list(O)) O.Namepick() - del(src) + qdel(src) else user << "\blue The MMI must go in after everything else!" @@ -314,8 +314,8 @@ user << "\blue You install some manipulators and modify the head, creating a functional spider-bot!" new /mob/living/simple_animal/spiderbot(get_turf(loc)) user.drop_item() - del(W) - del(src) + qdel(W) + qdel(src) return return diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index 41520fabb93..f871087dd6f 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -30,7 +30,7 @@ R.uneq_all() R.hands.icon_state = "nomod" R.icon_state = "robot" - del(R.module) + qdel(R.module) R.module = null R.camera.network.Remove(list("Engineering","Medical","Mining Outpost")) R.updatename("Default") diff --git a/code/game/objects/items/shooting_range.dm b/code/game/objects/items/shooting_range.dm index 5b131c93fb7..7bc0e7c052c 100644 --- a/code/game/objects/items/shooting_range.dm +++ b/code/game/objects/items/shooting_range.dm @@ -97,7 +97,7 @@ for(var/mob/O in oviewers()) if ((O.client && !( O.blinded ))) O << "\red [src] breaks into tiny pieces and collapses!" - del(src) + qdel(src) // Create a temporary object to represent the damage var/obj/bmark = new diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index 937ef75df2f..b6bc04227a7 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -63,7 +63,7 @@ if(O.reagents.has_reagent("facid", 1)) user << "The acid chews through the balloon!" O.reagents.reaction(user) - del(src) + qdel(src) else src.desc = "A translucent balloon with some form of liquid sloshing around in it." user << "\blue You fill the balloon with the contents of [O]." @@ -80,7 +80,7 @@ src.icon_state = "burst" spawn(5) if(src) - del(src) + qdel(src) return /obj/item/toy/balloon/update_icon() @@ -223,7 +223,7 @@ if(istype(I, /obj/item/toy/ammo/crossbow)) if(bullets <= 4) user.drop_item() - del(I) + qdel(I) bullets++ user << "\blue You load the foam dart into the crossbow." else @@ -254,21 +254,21 @@ if(M == user) continue D.visible_message("[M] was hit by the foam dart!") new /obj/item/toy/ammo/crossbow(M.loc) - del(D) + qdel(D) return for(var/atom/A in D.loc) if(A == user) continue if(A.density) new /obj/item/toy/ammo/crossbow(A.loc) - del(D) + qdel(D) sleep(1) spawn(10) if(D) new /obj/item/toy/ammo/crossbow(D.loc) - del(D) + qdel(D) return else if (bullets == 0) @@ -332,7 +332,7 @@ if(istype(I, /obj/item/toy/ammo/crossbow)) if(bullets <= 19) user.drop_item() - del(I) + qdel(I) bullets++ user << "You load the foam dart into the tommy gun." else @@ -389,8 +389,8 @@ new /obj/item/weapon/twohanded/dualsaber/toy(user.loc) user.unEquip(W) user.unEquip(src) - del(W) - del(src) + qdel(W) + qdel(src) /* * Subtype of Double-Bladed Energy Swords @@ -457,7 +457,7 @@ playsound(src, 'sound/effects/snap.ogg', 50, 1) - del(src) + qdel(src) @@ -481,7 +481,7 @@ new /obj/effect/decal/cleanable/ash(src.loc) src.visible_message("\red The [src.name] explodes!","\red You hear a snap!") playsound(src, 'sound/effects/snap.ogg', 50, 1) - del(src) + qdel(src) /obj/item/toy/snappop/Crossed(H as mob|obj) if((ishuman(H))) //i guess carp and shit shouldn't set them off @@ -495,7 +495,7 @@ new /obj/effect/decal/cleanable/ash(src.loc) src.visible_message("\red The [src.name] explodes!","\red You hear a snap!") playsound(src, 'sound/effects/snap.ogg', 50, 1) - del(src) + qdel(src) @@ -691,7 +691,7 @@ obj/item/toy/cards/deck/attackby(obj/item/toy/cards/singlecard/C, mob/living/use return src.cards += C.cardname user.visible_message("[user] adds a card to the bottom of the deck.","You add the card to the bottom of the deck.") - del(C) + qdel(C) else user << "You can't mix cards from other decks." if(cards.len > 26) @@ -711,7 +711,7 @@ obj/item/toy/cards/deck/attackby(obj/item/toy/cards/cardhand/C, mob/living/user, return src.cards += C.currenthand user.visible_message("[user] puts their hand of cards in the deck.", "You put the hand of cards in the deck.") - del(C) + qdel(C) else user << "You can't mix cards from other decks." if(cards.len > 26) @@ -803,7 +803,7 @@ obj/item/toy/cards/cardhand/Topic(href, href_list) cardUser.put_in_any_hand_if_possible(N) cardUser << "You also take [currenthand[1]] and hold it." cardUser << browse(null, "window=cardhand") - del(src) + qdel(src) return obj/item/toy/cards/cardhand/attackby(obj/item/toy/cards/singlecard/C, mob/living/user, params) @@ -819,7 +819,7 @@ obj/item/toy/cards/cardhand/attackby(obj/item/toy/cards/singlecard/C, mob/living src.icon_state = "[deckstyle]_hand4" else if(currenthand.len > 2) src.icon_state = "[deckstyle]_hand3" - del(C) + qdel(C) else user << "You can't mix cards from other decks." @@ -890,8 +890,8 @@ obj/item/toy/cards/singlecard/attackby(obj/item/I, mob/living/user, params) H.pickup(user) user.put_in_active_hand(H) user << "You combine the [C.cardname] and the [src.cardname] into a hand." - del(C) - del(src) + qdel(C) + qdel(src) else user << "You can't mix cards from other decks." @@ -908,7 +908,7 @@ obj/item/toy/cards/singlecard/attackby(obj/item/I, mob/living/user, params) H.icon_state = "[deckstyle]_hand4" else if(H.currenthand.len > 2) H.icon_state = "[deckstyle]_hand3" - del(src) + qdel(src) else user << "You can't mix cards from other decks." @@ -1068,7 +1068,7 @@ obj/item/toy/cards/deck/syndicate/black for(var/mob/M in range(10, src)) if(!M.stat && !istype(M, /mob/living/silicon/ai))\ shake_camera(M, 3, 1) - del(src) + qdel(src) /* * Carp plushie diff --git a/code/game/objects/items/weapons/AI_modules.dm b/code/game/objects/items/weapons/AI_modules.dm index 1d83bf272c6..5180ae09658 100755 --- a/code/game/objects/items/weapons/AI_modules.dm +++ b/code/game/objects/items/weapons/AI_modules.dm @@ -369,7 +369,7 @@ AI MODULES if(!laws.len) //Failsafe if something goes wrong with silicon_laws.txt. warning("ERROR: empty custom board created, empty custom board deleted. Please check silicon_laws.txt.") - del(src) + qdel(src) /****************** T.Y.R.A.N.T. *****************/ diff --git a/code/game/objects/items/weapons/RCD.dm b/code/game/objects/items/weapons/RCD.dm index f6c7e99a05c..24788c42a0e 100644 --- a/code/game/objects/items/weapons/RCD.dm +++ b/code/game/objects/items/weapons/RCD.dm @@ -46,7 +46,7 @@ RCD return matter += R.ammoamt user.drop_item() - del(W) + qdel(W) playsound(src.loc, 'sound/machines/click.ogg', 50, 1) user << "The RCD now holds [matter]/[max_matter] matter-units." desc = "A RCD. It currently holds [matter]/[max_matter] matter-units." diff --git a/code/game/objects/items/weapons/RSF.dm b/code/game/objects/items/weapons/RSF.dm index 055b28ede27..1d43d93fae9 100644 --- a/code/game/objects/items/weapons/RSF.dm +++ b/code/game/objects/items/weapons/RSF.dm @@ -25,7 +25,7 @@ RSF if ((matter + 10) > 30) user << "The RSF cant hold any more matter." return - del(W) + qdel(W) matter += 10 playsound(src.loc, 'sound/machines/click.ogg', 10, 1) user << "The RSF now holds [matter]/30 fabrication-units." diff --git a/code/game/objects/items/weapons/chrono_eraser.dm b/code/game/objects/items/weapons/chrono_eraser.dm index b3cbbcd7421..02f1e5d9cee 100644 --- a/code/game/objects/items/weapons/chrono_eraser.dm +++ b/code/game/objects/items/weapons/chrono_eraser.dm @@ -18,7 +18,7 @@ /obj/item/weapon/chrono_eraser/dropped() if(PA) - del(PA) + qdel(PA) /obj/item/weapon/chrono_eraser/Destroy() dropped() @@ -28,7 +28,7 @@ var/mob/living/carbon/user = src.loc if(iscarbon(user) && (user.back == src)) if(PA) - del(PA) + qdel(PA) else PA = new(src) user.put_in_hands(PA) @@ -58,10 +58,10 @@ TED = T else //admin must have spawned it TED = new(src.loc) - del(src) + qdel(src) /obj/item/weapon/gun/energy/chrono_gun/dropped() - del(src) + qdel(src) /obj/item/weapon/gun/energy/chrono_gun/update_icon() return @@ -193,7 +193,7 @@ if(tickstokill > initial(tickstokill)) for(var/atom/movable/AM in contents) AM.loc = loc - del(src) + qdel(src) else if(tickstokill <= 0) captured << "As the last essence of your being is erased from time, you begin to re-experience your most enjoyable memory. You feel happy..." var/mob/dead/observer/ghost = captured.ghostize(1) @@ -202,8 +202,8 @@ ghost.mind = null if(gun) gun.pass_mind(captured.mind) - del(captured) - del(src) + qdel(captured) + qdel(src) else captured.Paralyse(4) if(captured.reagents) @@ -222,7 +222,7 @@ else tickstokill++ else - del(src) + qdel(src) /obj/effect/chrono_field/bullet_act(var/obj/item/projectile/P) if(istype(P, /obj/item/projectile/energy/chrono_beam)) diff --git a/code/game/objects/items/weapons/cigs.dm b/code/game/objects/items/weapons/cigs.dm index 8724d2663ee..df5a6af8cf3 100644 --- a/code/game/objects/items/weapons/cigs.dm +++ b/code/game/objects/items/weapons/cigs.dm @@ -102,7 +102,7 @@ LIGHTERS ARE IN LIGHTERS.DM if(ismob(loc)) var/mob/M = loc M.unEquip(src, 1) - del(src) + qdel(src) return if(reagents.get_reagent_amount("fuel")) // the fuel explodes, too, but much less violently var/datum/effect/effect/system/reagents_explosion/e = new() @@ -111,7 +111,7 @@ LIGHTERS ARE IN LIGHTERS.DM if(ismob(loc)) var/mob/M = loc M.unEquip(src, 1) - del(src) + qdel(src) return flags &= ~NOREACT // allowing reagents to react after being lit reagents.handle_reactions() @@ -174,7 +174,7 @@ LIGHTERS ARE IN LIGHTERS.DM M << "Your [name] goes out." M.unEquip(src, 1) //Force the un-equip so the overlays update processing_objects.Remove(src) - del(src) + qdel(src) /obj/item/clothing/mask/cigarette/joint @@ -383,7 +383,7 @@ obj/item/weapon/rollingpaperpack/attack_self(mob/user) var/obj/item/weapon/rollingpaper/P = new /obj/item/weapon/rollingpaper() user.put_in_inactive_hand(P) user << "You take the last paper out of the pack, and throw the pack away." - del(src) + qdel(src) /obj/item/weapon/rollingpaperpack/MouseDrop(atom/over_object) var/mob/M = usr diff --git a/code/game/objects/items/weapons/clown_items.dm b/code/game/objects/items/weapons/clown_items.dm index 50fe4d8ad3d..413f93f02f9 100644 --- a/code/game/objects/items/weapons/clown_items.dm +++ b/code/game/objects/items/weapons/clown_items.dm @@ -63,13 +63,13 @@ user.visible_message("[user] begins to scrub \the [target.name] out with [src].") if(do_after(user, src.cleanspeed) && target) user << "You scrub \the [target.name] out." - del(target) + qdel(target) else user.visible_message("[user] begins to clean \the [target.name] with [src].") if(do_after(user, src.cleanspeed)) user << "You clean \the [target.name]." var/obj/effect/decal/cleanable/C = locate() in target - del(C) + qdel(C) target.clean_blood() return diff --git a/code/game/objects/items/weapons/dna_injector.dm b/code/game/objects/items/weapons/dna_injector.dm index 7c92cdc2249..9fadc35d668 100644 --- a/code/game/objects/items/weapons/dna_injector.dm +++ b/code/game/objects/items/weapons/dna_injector.dm @@ -91,7 +91,7 @@ spawn(0)//this prevents the collapse of space-time continuum if (user) user.unEquip(src) - del(src) + qdel(src) return uses /obj/item/weapon/dnainjector/attack(mob/M as mob, mob/user as mob) diff --git a/code/game/objects/items/weapons/fireworks.dm b/code/game/objects/items/weapons/fireworks.dm index 9a90c3ae205..dbd765b0fdd 100644 --- a/code/game/objects/items/weapons/fireworks.dm +++ b/code/game/objects/items/weapons/fireworks.dm @@ -18,7 +18,7 @@ obj/item/weapon/firework/attackby(obj/item/weapon/W,mob/user, params) if(ismob(src.loc) || isobj(src.loc)) S.attach(src.loc) S.start() - del(src) + qdel(src) obj/item/weapon/sparkler name = "sparkler" @@ -42,7 +42,7 @@ obj/item/weapon/sparkler/attackby(obj/item/weapon/W,mob/user, params) S.attach(src.loc) S.start() sleep(10) - del(src) + qdel(src) /obj/crate/fireworks name = "Fireworks!" /obj/crate/fireworks/New() diff --git a/code/game/objects/items/weapons/gift_wrappaper.dm b/code/game/objects/items/weapons/gift_wrappaper.dm index c972821fcb0..db3d8a38092 100644 --- a/code/game/objects/items/weapons/gift_wrappaper.dm +++ b/code/game/objects/items/weapons/gift_wrappaper.dm @@ -31,7 +31,7 @@ src.gift.add_fingerprint(user) else user << "\blue The gift was empty!" - del(src) + qdel(src) return /obj/item/weapon/a_gift/ex_act() @@ -58,7 +58,7 @@ M.client.eye = M.client.mob M.client.perspective = MOB_PERSPECTIVE - del(src) + qdel(src) /obj/item/weapon/a_gift/attack_self(mob/M as mob) var/gift_type = pick(/obj/item/weapon/sord, @@ -112,7 +112,7 @@ M.unEquip(src, 1) M.put_in_hands(I) I.add_fingerprint(M) - del(src) + qdel(src) return /* diff --git a/code/game/objects/items/weapons/grenades.dm b/code/game/objects/items/weapons/grenades.dm index dae50bb302a..b8badd98707 100644 --- a/code/game/objects/items/weapons/grenades.dm +++ b/code/game/objects/items/weapons/grenades.dm @@ -409,7 +409,7 @@ new /obj/item/weapon/grenade/clusterbuster/segment(src.loc,payload,name)//Creates a 'segment' that launches more payloads playsound(src.loc, 'sound/weapons/armbomb.ogg', 75, 1, -3) spawn(0) - del(src) + qdel(src) return /obj/item/weapon/grenade/clusterbuster/segment @@ -440,7 +440,7 @@ new /obj/item/weapon/grenade/clusterbuster/node(src.loc,payload) spawn(0) playsound(src.loc, 'sound/weapons/armbomb.ogg', 75, 1, -3) - del(src) + qdel(src) return /obj/item/weapon/grenade/clusterbuster/node/New(var/turf/newloc,var/T,var/N) @@ -458,4 +458,4 @@ A:prime() if(istype(A,/obj/singularity)) // I can't emphasize enough how much you should never use this grenade A:energy = 200 - del src + qdel(src) diff --git a/code/game/objects/items/weapons/grenades/bananade.dm b/code/game/objects/items/weapons/grenades/bananade.dm index c3fd3acf87f..cdaa19066f2 100644 --- a/code/game/objects/items/weapons/grenades/bananade.dm +++ b/code/game/objects/items/weapons/grenades/bananade.dm @@ -29,7 +29,7 @@ var/turf/T - del(src) + qdel(src) return /obj/item/weapon/grenade/bananade/casing @@ -44,7 +44,7 @@ var/turf/T if(fillamt < 9) usr << "You add another banana peel to the assembly." fillamt += 1 - del(I) + qdel(I) else usr << "The bananade is full, screwdriver it shut to lock it down." if(istype(I, /obj/item/weapon/screwdriver)) @@ -54,7 +54,7 @@ var/turf/T user.put_in_hands(G) G.deliveryamt = src.fillamt user << "You lock the assembly shut, readying it for HONK." - del(src) + qdel(src) else usr << "You need to add banana peels before you can ready the grenade!." else diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm index 9adf9cf5d4b..28bea3240a3 100644 --- a/code/game/objects/items/weapons/grenades/chem_grenade.dm +++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm @@ -266,7 +266,7 @@ update_mob() invisibility = INVISIBILITY_MAXIMUM //kaboom - del nadeassembly // do this now to stop infrared beams + qdel(nadeassembly) // do this now to stop infrared beams var/end_temp = 0 for(var/obj/item/weapon/reagent_containers/glass/G in beakers) G.reagents.trans_to(src, G.reagents.total_volume) @@ -285,7 +285,7 @@ spawn(15) //Making sure all reagents can work - del(src) //correctly before deleting the grenade. + qdel(src) //correctly before deleting the grenade. /obj/item/weapon/grenade/chem_grenade/proc/CreateDefaultTrigger(var/typekey) if(ispath(typekey,/obj/item/device/assembly)) @@ -364,7 +364,7 @@ invisibility = INVISIBILITY_MAXIMUM //Why am i doing this? spawn(50) //To make sure all reagents can work - del(src) //correctly before deleting the grenade. + qdel(src) //correctly before deleting the grenade. //I tried to just put it in the allowed_containers list but diff --git a/code/game/objects/items/weapons/grenades/clowngrenade.dm b/code/game/objects/items/weapons/grenades/clowngrenade.dm index 9d0cc3fca2c..f2d438df310 100644 --- a/code/game/objects/items/weapons/grenades/clowngrenade.dm +++ b/code/game/objects/items/weapons/grenades/clowngrenade.dm @@ -40,7 +40,7 @@ else step(peel,direction) new /obj/item/weapon/bananapeel/traitorpeel(get_turf(src.loc)) - del(src) + qdel(src) return /* proc/banana(turf/T as turf) diff --git a/code/game/objects/items/weapons/grenades/emgrenade.dm b/code/game/objects/items/weapons/grenades/emgrenade.dm index 8e66d4b70de..d4d90b3f094 100644 --- a/code/game/objects/items/weapons/grenades/emgrenade.dm +++ b/code/game/objects/items/weapons/grenades/emgrenade.dm @@ -8,6 +8,6 @@ prime() ..() if(empulse(src, 4, 10)) - del(src) + qdel(src) return diff --git a/code/game/objects/items/weapons/grenades/flashbang.dm b/code/game/objects/items/weapons/grenades/flashbang.dm index 91479c961a7..fbe12bd5342 100644 --- a/code/game/objects/items/weapons/grenades/flashbang.dm +++ b/code/game/objects/items/weapons/grenades/flashbang.dm @@ -18,7 +18,7 @@ var/damage = round(30/(get_dist(B,get_turf(src))+1)) B.health -= damage B.update_icon() - del(src) + qdel(src) /obj/item/weapon/grenade/flashbang/proc/bang(var/turf/T , var/mob/living/M) M.show_message("BANG", 2) @@ -96,7 +96,7 @@ playsound(src.loc, 'sound/weapons/armbomb.ogg', 75, 1, -3) - del(src) + qdel(src) ////////////////////// @@ -126,7 +126,7 @@ playsound(src.loc, 'sound/weapons/armbomb.ogg', 75, 1, -3) - del(src) + qdel(src) //////////////////////////////// //Clusterbang spawned flashbang diff --git a/code/game/objects/items/weapons/grenades/ghettobomb.dm b/code/game/objects/items/weapons/grenades/ghettobomb.dm index bc07fb389b9..bdbfd1fd4ea 100644 --- a/code/game/objects/items/weapons/grenades/ghettobomb.dm +++ b/code/game/objects/items/weapons/grenades/ghettobomb.dm @@ -10,8 +10,8 @@ user.put_in_hands(W) user << "You stuff the [I] in the [src], emptying the contents beforehand." W.underlays += image(src.icon, icon_state = src.icon_state) - del(I) - del(src) + qdel(I) + qdel(src) /obj/item/weapon/grenade/iedcasing diff --git a/code/game/objects/items/weapons/grenades/smokebomb.dm b/code/game/objects/items/weapons/grenades/smokebomb.dm index 95a5fbbd387..fc216a1e455 100644 --- a/code/game/objects/items/weapons/grenades/smokebomb.dm +++ b/code/game/objects/items/weapons/grenades/smokebomb.dm @@ -31,5 +31,5 @@ B.health -= damage B.update_icon() sleep(80) - del(src) + qdel(src) return diff --git a/code/game/objects/items/weapons/grenades/spawnergrenade.dm b/code/game/objects/items/weapons/grenades/spawnergrenade.dm index 7929896ddcd..224624549c7 100644 --- a/code/game/objects/items/weapons/grenades/spawnergrenade.dm +++ b/code/game/objects/items/weapons/grenades/spawnergrenade.dm @@ -30,7 +30,7 @@ // Spawn some hostile syndicate critters - del(src) + qdel(src) return /obj/item/weapon/grenade/spawnergrenade/manhacks diff --git a/code/game/objects/items/weapons/implants/implant.dm b/code/game/objects/items/weapons/implants/implant.dm index 4dec738bb56..e9a58e5307d 100644 --- a/code/game/objects/items/weapons/implants/implant.dm +++ b/code/game/objects/items/weapons/implants/implant.dm @@ -153,7 +153,7 @@ Implant Specifics:
"} msg = sanitize_simple(msg, replacechars) if(findtext(msg,phrase)) activate() - del(src) + qdel(src) activate() if (malfunction == MALFUNCTION_PERMANENT) @@ -177,11 +177,11 @@ Implant Specifics:
"} istype(part,/obj/item/organ/external/head)) part.createwound(BRUISE, 60) //mangle them instead explosion(get_turf(imp_in), -1, -1, 2, 3) - del(src) + qdel(src) else explosion(get_turf(imp_in), -1, -1, 2, 3) part.droplimb() - del(src) + qdel(src) if (elevel == "Destroy Body") explosion(get_turf(T), -1, 0, 1, 6) T.gib() @@ -247,7 +247,7 @@ Implant Specifics:
"} else part.droplimb() explosion(get_turf(imp_in), -1, -1, 2, 3) - del(src) + qdel(src) /obj/item/weapon/implant/chem name = "chem" @@ -294,7 +294,7 @@ the implant may become unstable and either pre-maturely inject the subject or si if(!src.reagents.total_volume) R << "You hear a faint click from your chest." spawn(0) - del(src) + qdel(src) return emp_act(severity) @@ -484,17 +484,17 @@ the implant may become unstable and either pre-maturely inject the subject or si a.autosay("[mobname] has died in Space!", "[mobname]'s Death Alarm") else a.autosay("[mobname] has died in [t.name]!", "[mobname]'s Death Alarm") - del(a) + qdel(a) processing_objects.Remove(src) if ("emp") var/obj/item/device/radio/headset/a = new /obj/item/device/radio/headset(null) var/name = prob(50) ? t.name : pick(teleportlocs) a.autosay("[mobname] has died in [name]!", "[mobname]'s Death Alarm") - del(a) + qdel(a) else var/obj/item/device/radio/headset/a = new /obj/item/device/radio/headset(null) a.autosay("[mobname] has died-zzzzt in-in-in...", "[mobname]'s Death Alarm") - del(a) + qdel(a) processing_objects.Remove(src) emp_act(severity) //for some reason alarms stop going off in case they are emp'd, even without this @@ -552,7 +552,7 @@ the implant may become unstable and either pre-maturely inject the subject or si imp_in.put_in_hands(scanned) else scanned.loc = t - del src + qdel(src) implanted(mob/source as mob) src.activation_emote = input("Choose activation emote:") in list("blink", "blink_r", "eyebrow", "chuckle", "twitch_s", "frown", "nod", "blush", "giggle", "grin", "groan", "shrug", "smile", "pale", "sniff", "whimper", "wink") diff --git a/code/game/objects/items/weapons/implants/implantchair.dm b/code/game/objects/items/weapons/implants/implantchair.dm index d03f499a26c..dc9f95ad322 100644 --- a/code/game/objects/items/weapons/implants/implantchair.dm +++ b/code/game/objects/items/weapons/implants/implantchair.dm @@ -84,7 +84,7 @@ return var/mob/M = G:affecting if(put_mob(M)) - del(G) + qdel(G) src.updateUsrDialog() return diff --git a/code/game/objects/items/weapons/mop.dm b/code/game/objects/items/weapons/mop.dm index 5581eaf3bd5..acbe349fc8e 100644 --- a/code/game/objects/items/weapons/mop.dm +++ b/code/game/objects/items/weapons/mop.dm @@ -24,7 +24,7 @@ A.clean_blood() for(var/obj/effect/O in A) if(istype(O,/obj/effect/decal/cleanable) || istype(O,/obj/effect/overlay) || istype(O,/obj/effect/rune)) - del(O) + qdel(O) reagents.reaction(A, TOUCH, 10) //10 is the multiplier for the reaction effect. probably needed to wet the floor properly. reagents.remove_any(1) //reaction() doesn't use up the reagents diff --git a/code/game/objects/items/weapons/shards.dm b/code/game/objects/items/weapons/shards.dm index e6f38335a82..bc7c6dca09a 100644 --- a/code/game/objects/items/weapons/shards.dm +++ b/code/game/objects/items/weapons/shards.dm @@ -67,6 +67,8 @@ if( !H.shoes && ( !H.wear_suit || !(H.wear_suit.body_parts_covered & FEET) ) ) var/obj/item/organ/external/affecting = H.get_organ(pick("l_foot", "r_foot")) + if(!affecting) + return if(affecting.status & ORGAN_ROBOT) return H.Weaken(3) diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm index b06ea04e671..4a57227afa0 100644 --- a/code/game/objects/items/weapons/storage/backpack.dm +++ b/code/game/objects/items/weapons/storage/backpack.dm @@ -40,12 +40,12 @@ if(istype(W, /obj/item/weapon/storage/backpack/holding) && !W.crit_fail) investigate_log("has become a singularity. Caused by [user.key]","singulo") user << "\red The Bluespace interfaces of the two devices catastrophically malfunction!" - del(W) + qdel(W) var/obj/singularity/singulo = new /obj/singularity (get_turf(src)) singulo.energy = 300 //should make it a bit bigger~ message_admins("[key_name_admin(user)] detonated a bag of holding") log_game("[key_name(user)] detonated a bag of holding") - del(src) + qdel(src) return ..() @@ -57,7 +57,7 @@ else user << "\red The Bluespace generator malfunctions!" for (var/obj/O in src.contents) //it broke, delete what was in it - del(O) + qdel(O) crit_fail = 1 icon_state = "brokenpack" diff --git a/code/game/objects/items/weapons/storage/bags.dm b/code/game/objects/items/weapons/storage/bags.dm index bbf73054abb..7a6c2a708d4 100644 --- a/code/game/objects/items/weapons/storage/bags.dm +++ b/code/game/objects/items/weapons/storage/bags.dm @@ -233,7 +233,7 @@ usr.client.screen -= S S.dropped(usr) if(!S.amount) - del S + del(S) else S.loc = src @@ -278,7 +278,7 @@ N.amount = stacksize S.amount -= stacksize if(!S.amount) - del S // todo: there's probably something missing here + del(S) // todo: there's probably something missing here orient2hud(usr) if(usr.s_active) usr.s_active.show_to(usr) diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm index df4c53b6224..b760ae038ad 100644 --- a/code/game/objects/items/weapons/storage/belt.dm +++ b/code/game/objects/items/weapons/storage/belt.dm @@ -361,7 +361,7 @@ else user << "\red The Bluespace generator malfunctions!" for (var/obj/O in src.contents) //it broke, delete what was in it - del(O) + qdel(O) crit_fail = 1 return 0 diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm index 40782759603..6aa5340245d 100644 --- a/code/game/objects/items/weapons/storage/storage.dm +++ b/code/game/objects/items/weapons/storage/storage.dm @@ -190,7 +190,7 @@ New(obj/item/sample as obj) if(!istype(sample)) - del(src) + qdel(src) sample_object = sample number = 1 @@ -479,7 +479,7 @@ // Now make the cardboard user << "You fold [src] flat." new src.foldable(get_turf(src)) - del(src) + qdel(src) //BubbleWrap END //Returns the storage depth of an atom. This is the number of storage items the atom is contained in before reaching toplevel (the area). diff --git a/code/game/objects/items/weapons/storage/toolbox.dm b/code/game/objects/items/weapons/storage/toolbox.dm index a50dd50f6fb..0ec557bc163 100644 --- a/code/game/objects/items/weapons/storage/toolbox.dm +++ b/code/game/objects/items/weapons/storage/toolbox.dm @@ -18,7 +18,7 @@ ..() if (src.type == /obj/item/weapon/storage/toolbox) world << "BAD: [src] ([src.type]) spawned at [src.x] [src.y] [src.z]" - del(src) + qdel(src) /obj/item/weapon/storage/toolbox/emergency name = "emergency toolbox" diff --git a/code/game/objects/items/weapons/swords_axes_etc.dm b/code/game/objects/items/weapons/swords_axes_etc.dm index 639b6770f9b..d0619606d57 100644 --- a/code/game/objects/items/weapons/swords_axes_etc.dm +++ b/code/game/objects/items/weapons/swords_axes_etc.dm @@ -73,8 +73,8 @@ if(src.hacked) // That's right, we'll only check the "original" esword. newSaber.hacked = 1 newSaber.blade_color = "rainbow" - del(W) - del(src) + qdel(W) + qdel(src) else if(istype(W, /obj/item/device/multitool)) if(hacked == 0) @@ -201,11 +201,11 @@ return /obj/item/weapon/melee/energy/blade/dropped() - del(src) + qdel(src) return /obj/item/weapon/melee/energy/blade/proc/toss() - del(src) + qdel(src) return /* diff --git a/code/game/objects/items/weapons/table_rack_parts.dm b/code/game/objects/items/weapons/table_rack_parts.dm index 560d5c2e754..22a31ae1dc8 100644 --- a/code/game/objects/items/weapons/table_rack_parts.dm +++ b/code/game/objects/items/weapons/table_rack_parts.dm @@ -52,20 +52,20 @@ if (istype(W, /obj/item/weapon/wrench)) new /obj/item/stack/sheet/metal( user.loc ) //SN src = null - del(src) + qdel(src) if (istype(W, /obj/item/stack/rods)) if (W:amount >= 4) new /obj/item/weapon/table_parts/reinforced( user.loc ) user << "\blue You reinforce the [name]." W:use(4) - del(src) + qdel(src) else if (W:amount < 4) user << "\red You need at least four rods to do this." /obj/item/weapon/table_parts/attack_self(mob/user as mob) new /obj/structure/table( user.loc ) user.drop_item() - del(src) + qdel(src) return @@ -76,12 +76,12 @@ if (istype(W, /obj/item/weapon/wrench)) new /obj/item/stack/sheet/metal( user.loc ) new /obj/item/stack/rods( user.loc ) - del(src) + qdel(src) /obj/item/weapon/table_parts/reinforced/attack_self(mob/user as mob) new /obj/structure/table/reinforced( user.loc ) user.drop_item() - del(src) + qdel(src) return /* @@ -90,12 +90,12 @@ /obj/item/weapon/table_parts/wood/attackby(obj/item/weapon/W as obj, mob/user as mob, params) if (istype(W, /obj/item/weapon/wrench)) new /obj/item/stack/sheet/wood( user.loc ) - del(src) + qdel(src) /obj/item/weapon/table_parts/wood/attack_self(mob/user as mob) new /obj/structure/table/woodentable( user.loc ) user.drop_item() - del(src) + qdel(src) return /* @@ -105,12 +105,12 @@ if (istype(W, /obj/item/weapon/wrench)) new /obj/item/stack/sheet/metal( user.loc ) new /obj/item/stack/sheet/metal( user.loc ) - del(src) + qdel(src) /obj/item/weapon/table_parts/glass/attack_self(mob/user as mob) new /obj/structure/glasstable_frame( user.loc ) user.drop_item() - del(src) + qdel(src) return /* @@ -120,7 +120,7 @@ ..() if (istype(W, /obj/item/weapon/wrench)) new /obj/item/stack/sheet/metal( user.loc ) - del(src) + qdel(src) return return @@ -128,5 +128,5 @@ var/obj/structure/rack/R = new /obj/structure/rack( user.loc ) R.add_fingerprint(user) user.drop_item() - del(src) + qdel(src) return \ No newline at end of file diff --git a/code/game/objects/items/weapons/tanks/jetpack.dm b/code/game/objects/items/weapons/tanks/jetpack.dm index 54d03fabd4c..14edc242cc2 100644 --- a/code/game/objects/items/weapons/tanks/jetpack.dm +++ b/code/game/objects/items/weapons/tanks/jetpack.dm @@ -65,7 +65,7 @@ if(allgases >= 0.005) return 1 - del(G) + qdel(G) return ui_action_click() diff --git a/code/game/objects/items/weapons/tanks/tanks.dm b/code/game/objects/items/weapons/tanks/tanks.dm index f493fa53726..5fb04ffbafb 100644 --- a/code/game/objects/items/weapons/tanks/tanks.dm +++ b/code/game/objects/items/weapons/tanks/tanks.dm @@ -71,12 +71,12 @@ if(prob(50)) var/turf/location = src.loc if (!( istype(location, /turf) )) - del(src) + qdel(src) if(src.air_contents) location.assume_air(air_contents) - del(src) + qdel(src) /obj/item/weapon/tank/attackby(obj/item/weapon/W as obj, mob/user as mob, params) ..() diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm index b996695dc81..2582a42c214 100644 --- a/code/game/objects/items/weapons/twohanded.dm +++ b/code/game/objects/items/weapons/twohanded.dm @@ -115,10 +115,10 @@ flags = ABSTRACT /obj/item/weapon/twohanded/offhand/unwield() - del(src) + qdel(src) /obj/item/weapon/twohanded/offhand/wield() - del(src) + qdel(src) /obj/item/weapon/twohanded/offhand/IsShield()//if the actual twohanded weapon is a shield, we count as a shield too! var/mob/user = loc diff --git a/code/game/objects/items/weapons/weaponry.dm b/code/game/objects/items/weapons/weaponry.dm index 91e8d1259be..56a31ed5284 100644 --- a/code/game/objects/items/weapons/weaponry.dm +++ b/code/game/objects/items/weapons/weaponry.dm @@ -175,8 +175,8 @@ obj/item/weapon/wirerod/attackby(var/obj/item/I, mob/user as mob, params) user.put_in_hands(S) user << "You fasten the glass shard to the top of the rod with the cable." - del(I) - del(src) + qdel(I) + qdel(src) else if(istype(I, /obj/item/weapon/wirecutters)) var/obj/item/weapon/melee/baton/cattleprod/P = new /obj/item/weapon/melee/baton/cattleprod @@ -186,8 +186,8 @@ obj/item/weapon/wirerod/attackby(var/obj/item/I, mob/user as mob, params) user.put_in_hands(P) user << "You fasten the wirecutters to the top of the rod with the cable, prongs outward." - del(I) - del(src) + qdel(I) + qdel(src) /obj/item/weapon/spear/kidan diff --git a/code/game/objects/random/random.dm b/code/game/objects/random/random.dm index 7e330c7c0f2..7b54984399a 100644 --- a/code/game/objects/random/random.dm +++ b/code/game/objects/random/random.dm @@ -11,7 +11,7 @@ ..() if (!prob(spawn_nothing_percentage)) spawn_item() - del src + qdel(src) // this function should return a specific item to spawn diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm index 88649ff62fa..ef365fdd059 100644 --- a/code/game/objects/structures.dm +++ b/code/game/objects/structures.dm @@ -1,11 +1,12 @@ /obj/structure icon = 'icons/obj/structures.dmi' + pressure_resistance = 8 var/climbable var/mob/climber /obj/structure/blob_act() if(prob(50)) - del(src) + qdel(src) /obj/structure/ex_act(severity) switch(severity) diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index edc99071fb4..3bfd507483e 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -157,7 +157,7 @@ if(health <= 0) for(var/atom/movable/A as mob|obj in src) A.loc = src.loc - del(src) + qdel(src) return /obj/structure/closet/attack_animal(mob/living/simple_animal/user as mob) @@ -166,14 +166,14 @@ visible_message("\red [user] destroys the [src]. ") for(var/atom/movable/A as mob|obj in src) A.loc = src.loc - del(src) + qdel(src) // this should probably use dump_contents() /obj/structure/closet/blob_act() if(prob(75)) for(var/atom/movable/A as mob|obj in src) A.loc = src.loc - del(src) + qdel(src) /obj/structure/closet/attackby(obj/item/weapon/W as obj, mob/user as mob, params) if(istype(W, /obj/item/weapon/rcs) && !src.opened) @@ -254,7 +254,7 @@ new /obj/item/stack/sheet/metal(src.loc) for(var/mob/M in viewers(src)) M.show_message("\The [src] has been cut apart by [user] with \the [WT].", 3, "You hear welding.", 2) - del(src) + qdel(src) return if(isrobot(user)) return diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index 863be182e04..ff4f66c9bae 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -188,6 +188,7 @@ new /obj/item/weapon/storage/belt/security/sec(src) new /obj/item/clothing/mask/gas/sechailer(src) new /obj/item/clothing/glasses/sunglasses/sechud(src) + new /obj/item/clothing/head/helmet(src) new /obj/item/weapon/melee/baton/loaded(src) new /obj/item/taperoll/police(src) return diff --git a/code/game/objects/structures/crates_lockers/closets/statue.dm b/code/game/objects/structures/crates_lockers/closets/statue.dm index e4249321488..6a5bf87680e 100644 --- a/code/game/objects/structures/crates_lockers/closets/statue.dm +++ b/code/game/objects/structures/crates_lockers/closets/statue.dm @@ -41,7 +41,7 @@ desc = "If it takes forever, I will wait for you..." if(health == 0) //meaning if the statue didn't find a valid target - del(src) + qdel(src) return processing_objects.Add(src) @@ -57,7 +57,7 @@ if (timer <= 0) dump_contents() processing_objects.Remove(src) - del(src) + qdel(src) /obj/structure/closet/statue/dump_contents() @@ -151,7 +151,7 @@ user.dust() dump_contents() visible_message("\red [src] shatters!. ") - del(src) + qdel(src) /obj/structure/statue diff --git a/code/game/objects/structures/crates_lockers/closets/utility_closets.dm b/code/game/objects/structures/crates_lockers/closets/utility_closets.dm index 65581b09232..0fc9a950580 100644 --- a/code/game/objects/structures/crates_lockers/closets/utility_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/utility_closets.dm @@ -48,7 +48,7 @@ // teehee - Ah, tg coders... if ("delete") - del(src) + qdel(src) //If you want to re-add fire, just add "fire" = 15 to the pick list. /*if ("fire") diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index 115f4a0b5d2..6549a0fc9f6 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -160,7 +160,7 @@ return user << "You rig [src]." user.drop_item() - del(W) + qdel(W) rigged = 1 return else if(istype(W, /obj/item/device/radio/electropack)) diff --git a/code/game/objects/structures/crates_lockers/largecrate.dm b/code/game/objects/structures/crates_lockers/largecrate.dm index 4c1a4c8ab88..df4457c5c37 100644 --- a/code/game/objects/structures/crates_lockers/largecrate.dm +++ b/code/game/objects/structures/crates_lockers/largecrate.dm @@ -43,7 +43,7 @@ user.visible_message("[user] pries \the [src] open.", \ "You pry open \the [src].", \ "You hear splitting wood.") - del(src) + qdel(src) else return attack_hand(user) diff --git a/code/game/objects/structures/curtains.dm b/code/game/objects/structures/curtains.dm index 53cc69d98ae..a7175857ef9 100644 --- a/code/game/objects/structures/curtains.dm +++ b/code/game/objects/structures/curtains.dm @@ -17,7 +17,7 @@ /obj/structure/curtain/bullet_act(obj/item/projectile/P, def_zone) if(!P.nodamage) visible_message("[P] tears [src] down!") - del(src) + qdel(src) else ..(P, def_zone) diff --git a/code/game/objects/structures/displaycase.dm b/code/game/objects/structures/displaycase.dm index b33bb093469..0e34ed14e68 100644 --- a/code/game/objects/structures/displaycase.dm +++ b/code/game/objects/structures/displaycase.dm @@ -19,7 +19,7 @@ if(istype(W, /obj/item/weapon/crowbar)) new /obj/machinery/constructable_frame/machine_frame(T) new /obj/item/stack/sheet/glass(T) - del(src) + qdel(src) playsound(get_turf(src), 'sound/items/Crowbar.ogg', 50, 1) return @@ -33,7 +33,7 @@ C.req_access = circuit.conf_access C.req_one_access = null playsound(get_turf(src), 'sound/items/Screwdriver.ogg', 50, 1) - del(src) + qdel(src) return if(istype(W, /obj/item/weapon/crowbar)) circuit.loc=T @@ -123,8 +123,8 @@ if (prob(75)) PoolOrNew(/obj/item/weapon/shard, loc) if(occupant) dump() - del(src) - + qdel(src) + /obj/structure/displaycase/proc/healthcheck() if (src.health <= 0) if (!( src.destroyed )) @@ -194,7 +194,7 @@ C.loc=T circuit=null new /obj/machinery/constructable_frame/machine_frame(T) - del(src) + qdel(src) if(user.a_intent == "harm") src.health -= W.force src.healthcheck() diff --git a/code/game/objects/structures/door_assembly.dm b/code/game/objects/structures/door_assembly.dm index eff4159c867..698592e9c5f 100644 --- a/code/game/objects/structures/door_assembly.dm +++ b/code/game/objects/structures/door_assembly.dm @@ -174,7 +174,7 @@ obj/structure/door_assembly if(!src || !WT.isOn()) return user << "\blue You dissasembled the airlock assembly!" new /obj/item/stack/sheet/metal(src.loc, 4) - del (src) + qdel(src) else user << "\blue You need more welding fuel." return @@ -290,7 +290,7 @@ obj/structure/door_assembly else door.name = "[istext(glass) ? "[glass] airlock" : base_name]" src.electronics.loc = door - del(src) + qdel(src) else ..() update_state() diff --git a/code/game/objects/structures/electricchair.dm b/code/game/objects/structures/electricchair.dm index fd0c12f00c0..03d0df1c669 100644 --- a/code/game/objects/structures/electricchair.dm +++ b/code/game/objects/structures/electricchair.dm @@ -29,7 +29,7 @@ part.loc = loc part.master = null part = null - del(src) + qdel(src) return return @@ -87,4 +87,3 @@ A.power_light = light A.updateicon() return - \ No newline at end of file diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm index 8057ce7e922..585b1991a91 100644 --- a/code/game/objects/structures/girders.dm +++ b/code/game/objects/structures/girders.dm @@ -15,14 +15,14 @@ if(!src) return user << "\blue You dissasembled the girder!" new /obj/item/stack/sheet/metal(get_turf(src)) - del(src) + qdel(src) else if(!anchored) playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1) user << "\blue Now securing the girder" if(get_turf(user, 40)) user << "\blue You secured the girder!" new/obj/structure/girder( src.loc ) - del(src) + qdel(src) else if(istype(W, /obj/item/weapon/pickaxe/plasmacutter)) user << "\blue Now slicing apart the girder" @@ -30,12 +30,12 @@ if(!src) return user << "\blue You slice apart the girder!" new /obj/item/stack/sheet/metal(get_turf(src)) - del(src) + qdel(src) else if(istype(W, /obj/item/weapon/pickaxe/diamonddrill)) user << "\blue You drill through the girder!" new /obj/item/stack/sheet/metal(get_turf(src)) - del(src) + qdel(src) else if(istype(W, /obj/item/weapon/screwdriver) && state == 2 && istype(src,/obj/structure/girder/reinforced)) playsound(src.loc, 'sound/items/Screwdriver.ogg', 100, 1) @@ -52,7 +52,7 @@ if(!src) return user << "\blue You removed the support struts!" new/obj/structure/girder( src.loc ) - del(src) + qdel(src) else if(istype(W, /obj/item/weapon/crowbar) && state == 0 && anchored ) playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1) @@ -61,7 +61,7 @@ if(!src) return user << "\blue You dislodged the girder!" new/obj/structure/girder/displaced( src.loc ) - del(src) + qdel(src) else if(istype(W, /obj/item/stack/sheet)) @@ -74,7 +74,7 @@ S.use(2) user << "\blue You create a false wall! Push on it to open or close the passage." new /obj/structure/falsewall (src.loc) - del(src) + qdel(src) else if(S.amount < 2) return ..() user << "\blue Now adding plating..." @@ -86,7 +86,7 @@ Tsrc.ChangeTurf(/turf/simulated/wall) for(var/turf/simulated/wall/X in Tsrc.loc) if(X) X.add_hiddenprint(usr) - del(src) + qdel(src) return if(/obj/item/stack/sheet/plasteel) @@ -95,7 +95,7 @@ S.use(2) user << "\blue You create a false wall! Push on it to open or close the passage." new /obj/structure/falsewall/reinforced (src.loc) - del(src) + qdel(src) else if (src.icon_state == "reinforced") //I cant believe someone would actually write this line of code... if(S.amount < 1) return ..() @@ -108,7 +108,7 @@ Tsrc.ChangeTurf(/turf/simulated/wall/r_wall) for(var/turf/simulated/wall/r_wall/X in Tsrc.loc) if(X) X.add_hiddenprint(usr) - del(src) + qdel(src) return else if(S.amount < 1) return ..() @@ -118,7 +118,7 @@ S.use(1) user << "\blue Girders reinforced!" new/obj/structure/girder/reinforced( src.loc ) - del(src) + qdel(src) return if(S.sheettype) @@ -129,7 +129,7 @@ user << "\blue You create a false wall! Push on it to open or close the passage." var/F = text2path("/obj/structure/falsewall/[M]") new F (src.loc) - del(src) + qdel(src) else if(S.amount < 2) return ..() user << "\blue Now adding plating..." @@ -141,7 +141,7 @@ Tsrc.ChangeTurf(text2path("/turf/simulated/wall/mineral/[M]")) for(var/turf/simulated/wall/mineral/X in Tsrc.loc) if(X) X.add_hiddenprint(usr) - del(src) + qdel(src) return add_hiddenprint(usr) @@ -157,7 +157,7 @@ /obj/structure/girder/blob_act() if(prob(40)) - del(src) + qdel(src) /obj/structure/girder/bullet_act(var/obj/item/projectile/Proj) if(istype(Proj, /obj/item/projectile/beam)) @@ -165,7 +165,7 @@ ..() if(health <= 0) new /obj/item/stack/sheet/metal(get_turf(src)) - del(src) + qdel(src) if(istype(Proj ,/obj/item/projectile/beam/pulse)) src.ex_act(2) diff --git a/code/game/objects/structures/inflatable.dm b/code/game/objects/structures/inflatable.dm index bbce5440dd8..14b51d03498 100644 --- a/code/game/objects/structures/inflatable.dm +++ b/code/game/objects/structures/inflatable.dm @@ -11,7 +11,7 @@ var/obj/structure/inflatable/R = new /obj/structure/inflatable(user.loc) src.transfer_fingerprints_to(R) R.add_fingerprint(user) - del(src) + qdel(src) /obj/structure/inflatable name = "inflatable wall" @@ -48,7 +48,7 @@ ex_act(severity) switch(severity) if(1.0) - del(src) + qdel(src) return if(2.0) deflate(1) @@ -118,14 +118,14 @@ visible_message("[src] rapidly deflates!") var/obj/item/inflatable/torn/R = new /obj/item/inflatable/torn(loc) src.transfer_fingerprints_to(R) - del(src) + qdel(src) else //user << "\blue You slowly deflate the inflatable wall." visible_message("[src] slowly deflates.") spawn(50) var/obj/item/inflatable/R = new /obj/item/inflatable(loc) src.transfer_fingerprints_to(R) - del(src) + qdel(src) verb/hand_deflate() set name = "Deflate" @@ -149,7 +149,7 @@ var/obj/structure/inflatable/door/R = new /obj/structure/inflatable/door(user.loc) src.transfer_fingerprints_to(R) R.add_fingerprint(user) - del(src) + qdel(src) /obj/structure/inflatable/door //Based on mineral door code name = "inflatable door" @@ -242,14 +242,14 @@ visible_message("[src] rapidly deflates!") var/obj/item/inflatable/door/torn/R = new /obj/item/inflatable/door/torn(loc) src.transfer_fingerprints_to(R) - del(src) + qdel(src) else //user << "\blue You slowly deflate the inflatable wall." visible_message("[src] slowly deflates.") spawn(50) var/obj/item/inflatable/door/R = new /obj/item/inflatable/door(loc) src.transfer_fingerprints_to(R) - del(src) + qdel(src) /obj/item/inflatable/torn diff --git a/code/game/objects/structures/kitchen_spike.dm b/code/game/objects/structures/kitchen_spike.dm index de2fef2875e..e865805991b 100644 --- a/code/game/objects/structures/kitchen_spike.dm +++ b/code/game/objects/structures/kitchen_spike.dm @@ -20,8 +20,8 @@ else if(spike(G.affecting)) visible_message("[user] has forced [G.affecting] onto the spike, killing them instantly!") - del(G.affecting) - del(G) + qdel(G.affecting) + qdel(G) else user << "They are too big for the spike, try something smaller!" diff --git a/code/game/objects/structures/lattice.dm b/code/game/objects/structures/lattice.dm index b2172cce699..b12907a150f 100644 --- a/code/game/objects/structures/lattice.dm +++ b/code/game/objects/structures/lattice.dm @@ -60,7 +60,7 @@ if(WT.remove_fuel(0, user)) user << "\blue Slicing lattice joints ..." new /obj/item/stack/rods(src.loc) - del(src) + qdel(src) return diff --git a/code/game/objects/structures/mineral_doors.dm b/code/game/objects/structures/mineral_doors.dm index 37c18f020b1..69508a41940 100644 --- a/code/game/objects/structures/mineral_doors.dm +++ b/code/game/objects/structures/mineral_doors.dm @@ -243,7 +243,7 @@ if(!devastated) for(var/i = 1, i <= oreAmount, i++) new/obj/item/stack/sheet/wood(get_turf(src)) - del(src) + qdel(src) /obj/structure/mineral_door/resin mineralType = "resin" @@ -281,7 +281,7 @@ isSwitchingStates = 0 Dismantle(devastated = 0) - del(src) + qdel(src) CheckHardness() playsound(loc, 'sound/effects/attackblob.ogg', 100, 1) diff --git a/code/game/objects/structures/mop_bucket.dm b/code/game/objects/structures/mop_bucket.dm index 424f7aba13f..fd3372692e6 100644 --- a/code/game/objects/structures/mop_bucket.dm +++ b/code/game/objects/structures/mop_bucket.dm @@ -4,7 +4,6 @@ icon = 'icons/obj/janitor.dmi' icon_state = "mopbucket" density = 1 - pressure_resistance = 5 flags = OPENCONTAINER var/amount_per_transfer_from_this = 5 //shit I dunno, adding this so syringes stop runtime erroring. --NeoFite @@ -12,7 +11,7 @@ var/datum/reagents/R = new/datum/reagents(100) reagents = R R.my_atom = src - + /obj/structure/mopbucket/full/New() ..() reagents.add_reagent("water", 100) diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm index ce743717f32..88ba3e7adf3 100644 --- a/code/game/objects/structures/morgue.dm +++ b/code/game/objects/structures/morgue.dm @@ -21,10 +21,10 @@ anchored = 1.0 /obj/structure/morgue/proc/update() - if(src.connected) - src.icon_state = "morgue0" + if(connected) + icon_state = "morgue0" else - if(src.contents.len) + if(contents.len) var/mob/living/M = locate() in contents @@ -35,14 +35,14 @@ var/mob/dead/observer/G = M.get_ghost() if(M.client) - src.icon_state = "morgue3" + icon_state = "morgue3" else if(G && G.client) //There is a ghost and it is connected to the server - src.icon_state = "morgue5" + icon_state = "morgue5" else - src.icon_state = "morgue2" + icon_state = "morgue2" - else src.icon_state = "morgue4" - else src.icon_state = "morgue1" + else icon_state = "morgue4" + else icon_state = "morgue1" return @@ -50,94 +50,99 @@ switch(severity) if(1.0) for(var/atom/movable/A as mob|obj in src) - A.loc = src.loc + A.forceMove(loc) ex_act(severity) qdel(src) return if(2.0) if (prob(50)) for(var/atom/movable/A as mob|obj in src) - A.loc = src.loc + A.forceMove(loc) ex_act(severity) qdel(src) return if(3.0) if (prob(5)) for(var/atom/movable/A as mob|obj in src) - A.loc = src.loc + A.forceMove(loc) ex_act(severity) qdel(src) return return /obj/structure/morgue/alter_health() - return src.loc + return loc /obj/structure/morgue/attack_hand(mob/user as mob) - if (src.connected) - for(var/atom/movable/A as mob|obj in src.connected.loc) + if (connected) + for(var/atom/movable/A as mob|obj in connected.loc) if (!( A.anchored )) - A.loc = src - playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) - //src.connected = null - del(src.connected) + A.forceMove(src) + playsound(loc, 'sound/items/Deconstruct.ogg', 50, 1) + qdel(connected) + connected = null else - playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) - src.connected = new /obj/structure/m_tray( src.loc ) - step(src.connected, src.dir) - src.connected.layer = OBJ_LAYER - var/turf/T = get_step(src, src.dir) - if (T.contents.Find(src.connected)) - src.connected.connected = src - src.icon_state = "morgue0" + playsound(loc, 'sound/items/Deconstruct.ogg', 50, 1) + connected = new /obj/structure/m_tray( loc ) + step(connected, dir) + connected.layer = OBJ_LAYER + var/turf/T = get_step(src, dir) + if (T.contents.Find(connected)) + connected.connected = src + icon_state = "morgue0" for(var/atom/movable/A as mob|obj in src) - A.loc = src.connected.loc - src.connected.icon_state = "morguet" - src.connected.dir = src.dir + A.forceMove(connected.loc) + connected.icon_state = "morguet" + connected.dir = dir else - //src.connected = null - del(src.connected) - src.add_fingerprint(user) + qdel(connected) + connected = null + add_fingerprint(user) update() return /obj/structure/morgue/attackby(P as obj, mob/user as mob, params) if (istype(P, /obj/item/weapon/pen)) - var/t = input(user, "What would you like the label to be?", text("[]", src.name), null) as text + var/t = input(user, "What would you like the label to be?", text("[]", name), null) as text if (user.get_active_hand() != P) return - if ((!in_range(src, usr) && src.loc != user)) + if ((!in_range(src, usr) && loc != user)) return t = sanitize(copytext(t,1,MAX_MESSAGE_LEN)) if (t) - src.name = text("Morgue- '[]'", t) - src.overlays += image(src.icon, "morgue_label") + name = text("Morgue- '[]'", t) + overlays += image(icon, "morgue_label") else - src.name = "Morgue" - src.overlays.Cut() - src.add_fingerprint(user) + name = "Morgue" + overlays.Cut() + add_fingerprint(user) return /obj/structure/morgue/relaymove(mob/user as mob) if (user.stat) return - src.connected = new /obj/structure/m_tray( src.loc ) - step(src.connected, EAST) - src.connected.layer = OBJ_LAYER - var/turf/T = get_step(src, EAST) - if (T.contents.Find(src.connected)) - src.connected.connected = src - src.icon_state = "morgue0" + connected = new /obj/structure/m_tray( loc ) + step(connected, dir) + connected.layer = OBJ_LAYER + var/turf/T = get_step(src, dir) + if (T.contents.Find(connected)) + connected.connected = src + icon_state = "morgue0" for(var/atom/movable/A as mob|obj in src) - A.loc = src.connected.loc - //Foreach goto(106) - src.connected.icon_state = "morguet" + A.forceMove(connected.loc) + connected.icon_state = "morguet" else - //src.connected = null - del(src.connected) + qdel(connected) + connected = null return +/obj/structure/morgue/Destroy() + if(connected) + qdel(connected) + connected = null + return ..() + /* * Morgue tray @@ -155,16 +160,14 @@ /obj/structure/m_tray/attack_hand(mob/user as mob) - if (src.connected) - for(var/atom/movable/A as mob|obj in src.loc) + if (connected) + for(var/atom/movable/A as mob|obj in loc) if (!( A.anchored )) - A.loc = src.connected - //Foreach goto(26) - src.connected.connected = null - src.connected.update() + A.forceMove(connected) + connected.connected = null + connected.update() add_fingerprint(user) - //SN src = null - del(src) + qdel(src) return return @@ -175,13 +178,19 @@ return if (!ismob(user) || user.stat || user.lying || user.stunned) return - O.loc = src.loc + O.forceMove(loc) if (user != O) for(var/mob/B in viewers(user, 3)) if ((B.client && !( B.blinded ))) B << text("\red [] stuffs [] into []!", user, O, src) return +/obj/structure/m_tray/Destroy() + if(connected && connected.connected == src) + connected.connected = null + connected = null + return ..() + /* * Crematorium @@ -200,116 +209,106 @@ var/locked = 0 /obj/structure/crematorium/proc/update() - if (src.connected) - src.icon_state = "crema0" + if (connected) + icon_state = "crema0" else - if (src.contents.len) - src.icon_state = "crema2" + if (contents.len) + icon_state = "crema2" else - src.icon_state = "crema1" + icon_state = "crema1" return /obj/structure/crematorium/ex_act(severity) switch(severity) if(1.0) for(var/atom/movable/A as mob|obj in src) - A.loc = src.loc + A.forceMove(loc) ex_act(severity) qdel(src) return if(2.0) if (prob(50)) for(var/atom/movable/A as mob|obj in src) - A.loc = src.loc + A.forceMove(loc) ex_act(severity) qdel(src) return if(3.0) if (prob(5)) for(var/atom/movable/A as mob|obj in src) - A.loc = src.loc + A.forceMove(loc) ex_act(severity) qdel(src) return return /obj/structure/crematorium/alter_health() - return src.loc + return loc /obj/structure/crematorium/attack_hand(mob/user as mob) -// if (cremating) AWW MAN! THIS WOULD BE SO MUCH MORE FUN ... TO WATCH -// user.show_message("\red Uh-oh, that was a bad idea.", 1) -// //usr << "Uh-oh, that was a bad idea." -// src:loc:poison += 20000000 -// src:loc:firelevel = src:loc:poison -// return if (cremating) usr << "\red It's locked." return - if ((src.connected) && (src.locked == 0)) - for(var/atom/movable/A as mob|obj in src.connected.loc) + if ((connected) && (locked == 0)) + for(var/atom/movable/A as mob|obj in connected.loc) if (!( A.anchored )) - A.loc = src - playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) - //src.connected = null - del(src.connected) - else if (src.locked == 0) - playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) - src.connected = new /obj/structure/c_tray( src.loc ) - step(src.connected, SOUTH) - src.connected.layer = OBJ_LAYER + A.forceMove(src) + playsound(loc, 'sound/items/Deconstruct.ogg', 50, 1) + qdel(connected) + connected = null + else if (locked == 0) + playsound(loc, 'sound/items/Deconstruct.ogg', 50, 1) + connected = new /obj/structure/c_tray( loc ) + step(connected, SOUTH) + connected.layer = OBJ_LAYER var/turf/T = get_step(src, SOUTH) - if (T.contents.Find(src.connected)) - src.connected.connected = src - src.icon_state = "crema0" + if (T.contents.Find(connected)) + connected.connected = src + icon_state = "crema0" for(var/atom/movable/A as mob|obj in src) - A.loc = src.connected.loc - src.connected.icon_state = "cremat" + A.forceMove(connected.loc) + connected.icon_state = "cremat" else - //src.connected = null - del(src.connected) - src.add_fingerprint(user) + qdel(connected) + connected = null + add_fingerprint(user) update() /obj/structure/crematorium/attackby(P as obj, mob/user as mob, params) if (istype(P, /obj/item/weapon/pen)) - var/t = input(user, "What would you like the label to be?", text("[]", src.name), null) as text + var/t = input(user, "What would you like the label to be?", text("[]", name), null) as text if (user.get_active_hand() != P) return - if ((!in_range(src, usr) > 1 && src.loc != user)) + if ((!in_range(src, usr) > 1 && loc != user)) return t = sanitize(copytext(t,1,MAX_MESSAGE_LEN)) if (t) - src.name = text("Crematorium- '[]'", t) + name = text("Crematorium- '[]'", t) else - src.name = "Crematorium" - src.add_fingerprint(user) + name = "Crematorium" + add_fingerprint(user) return /obj/structure/crematorium/relaymove(mob/user as mob) if (user.stat || locked) return - src.connected = new /obj/structure/c_tray( src.loc ) - step(src.connected, SOUTH) - src.connected.layer = OBJ_LAYER + connected = new /obj/structure/c_tray( loc ) + step(connected, SOUTH) + connected.layer = OBJ_LAYER var/turf/T = get_step(src, SOUTH) - if (T.contents.Find(src.connected)) - src.connected.connected = src - src.icon_state = "crema0" + if (T.contents.Find(connected)) + connected.connected = src + icon_state = "crema0" for(var/atom/movable/A as mob|obj in src) - A.loc = src.connected.loc - //Foreach goto(106) - src.connected.icon_state = "cremat" + A.forceMove(connected.loc) + connected.icon_state = "cremat" else - //src.connected = null - del(src.connected) + qdel(connected) + connected = null return -/obj/structure/crematorium/proc/cremate(atom/A, mob/user as mob) -// for(var/obj/machinery/crema_switch/O in src) //trying to figure a way to call the switch, too drunk to sort it out atm -// if(var/on == 1) -// return +/obj/structure/crematorium/proc/cremate(mob/user as mob) if(cremating) return //don't let you cremate something twice or w/e @@ -319,10 +318,10 @@ return else - if(!isemptylist(src.search_contents_for(/obj/item/weapon/disk/nuclear))) + if(!isemptylist(search_contents_for(/obj/item/weapon/disk/nuclear))) usr << "You get the feeling that you shouldn't cremate one of the items in the cremator." return - if(!isemptylist(src.search_contents_for(/obj/item/flag/nation))) + if(!isemptylist(search_contents_for(/obj/item/flag/nation))) usr << "You get the feeling that you shouldn't cremate one of the items in the cremator." return for (var/mob/M in viewers(src)) @@ -332,28 +331,36 @@ locked = 1 icon_state = "crema_active" - for(var/mob/living/M in contents) + for(var/mob/living/M in search_contents_for(/mob/living)) + if(!M || !isnull(M.gcDestroyed)) + continue if (M.stat!=2) M.emote("scream") - //Logging for this causes runtimes resulting in the cremator locking up. Commenting it out until that's figured out. - //M.attack_log += "\[[time_stamp()]\] Has been cremated by [user]/[user.ckey]" //No point in this when the mob's about to be deleted - //user.attack_log +="\[[time_stamp()]\] Cremated [M]/[M.ckey]" - //log_attack("\[[time_stamp()]\] [user]/[user.ckey] cremated [M]/[M.ckey]") + if(istype(user)) + M.attack_log += "\[[time_stamp()]\] Has been cremated by [user.name] ([user.ckey])" + user.attack_log +="\[[time_stamp()]\] Cremated [M.name] ([M.ckey])" + log_attack("[user.name] ([user.ckey]) cremated [M.name] ([M.ckey])") M.death(1) M.ghostize() - del(M) + qdel(M) for(var/obj/O in contents) //obj instead of obj/item so that bodybags and ashes get destroyed. We dont want tons and tons of ash piling up - del(O) + qdel(O) new /obj/effect/decal/cleanable/ash(src) sleep(30) cremating = 0 locked = 0 update() - playsound(src.loc, 'sound/machines/ding.ogg', 50, 1) + playsound(loc, 'sound/machines/ding.ogg', 50, 1) return +/obj/structure/crematorium/Destroy() + if(connected) + qdel(connected) + connected = null + return ..() + /* * Crematorium tray @@ -370,16 +377,15 @@ throwpass = 1 /obj/structure/c_tray/attack_hand(mob/user as mob) - if (src.connected) - for(var/atom/movable/A as mob|obj in src.loc) + if (connected) + for(var/atom/movable/A as mob|obj in loc) if (!( A.anchored )) - A.loc = src.connected + A.forceMove(connected) //Foreach goto(26) - src.connected.connected = null - src.connected.update() + connected.connected = null + connected.update() add_fingerprint(user) - //SN src = null - del(src) + qdel(src) return return @@ -390,7 +396,7 @@ return if (!ismob(user) || user.stat || user.lying || user.stunned) return - O.loc = src.loc + O.forceMove(loc) if (user != O) for(var/mob/B in viewers(user, 3)) if ((B.client && !( B.blinded ))) @@ -398,8 +404,14 @@ //Foreach goto(99) return +/obj/structure/c_tray/Destroy() + if(connected && connected.connected == src) + connected.connected = null + connected = null + return ..() + /obj/machinery/crema_switch/attack_hand(mob/user as mob) - if(src.allowed(usr)) + if(allowed(usr)) for (var/obj/structure/crematorium/C in world) if (C.id == id) if (!C.cremating) diff --git a/code/game/objects/structures/signs.dm b/code/game/objects/structures/signs.dm index 6a325830a7a..8eb555152f2 100644 --- a/code/game/objects/structures/signs.dm +++ b/code/game/objects/structures/signs.dm @@ -33,7 +33,7 @@ //var/icon/I = icon('icons/obj/decals.dmi', icon_state) //S.icon = I.Scale(24, 24) S.sign_state = icon_state - del(src) + qdel(src) else ..() /obj/item/sign @@ -62,7 +62,7 @@ S.desc = desc S.icon_state = sign_state user << "You fasten \the [S] with your [tool]." - del(src) + qdel(src) else ..() /obj/structure/sign/double/map diff --git a/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm b/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm index 6551676fea1..b7745c60374 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm @@ -80,5 +80,5 @@ /obj/structure/stool/bed/nest/proc/healthcheck() if(health <=0) density = 0 - del(src) + qdel(src) return diff --git a/code/game/objects/structures/stool_bed_chair_nest/bed.dm b/code/game/objects/structures/stool_bed_chair_nest/bed.dm index 58723261562..559a63d0d1a 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/bed.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/bed.dm @@ -42,7 +42,7 @@ /obj/structure/stool/bed/attack_animal(var/mob/living/simple_animal/M)//No more buckling hostile mobs to chairs to render them immobile forever if(M.environment_smash) new /obj/item/stack/sheet/metal(src.loc) - del(src) + qdel(src) /obj/structure/stool/bed/MouseDrop_T(mob/M as mob, mob/user as mob) @@ -133,7 +133,7 @@ visible_message("[user] collapses \the [src.name].") new/obj/item/roller(get_turf(src)) spawn(0) - del(src) + qdel(src) return ..() @@ -147,7 +147,7 @@ /obj/item/roller/attack_self(mob/user) var/obj/structure/stool/bed/roller/R = new /obj/structure/stool/bed/roller(user.loc) R.add_fingerprint(user) - del(src) + qdel(src) /obj/item/roller/attackby(obj/item/weapon/W as obj, mob/user as mob, params) @@ -181,7 +181,7 @@ user << "\blue You deploy the roller bed." var/obj/structure/stool/bed/roller/R = new /obj/structure/stool/bed/roller(user.loc) R.add_fingerprint(user) - del(held) + qdel(held) held = null @@ -223,5 +223,5 @@ visible_message("[usr] collapses \the [src.name]") new/obj/item/roller(get_turf(src)) spawn(0) - del(src) + qdel(src) return diff --git a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm index 85e47ec0c40..44ac7b6497b 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm @@ -30,7 +30,7 @@ E.part = SK SK.loc = E SK.master = E - del(src) + qdel(src) /obj/structure/stool/bed/chair/attack_tk(mob/user as mob) if(buckled_mob) @@ -89,7 +89,7 @@ if(istype(W, /obj/item/weapon/wrench)) playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) new /obj/item/stack/sheet/wood(src.loc) - del(src) + qdel(src) else ..() diff --git a/code/game/objects/structures/stool_bed_chair_nest/stools.dm b/code/game/objects/structures/stool_bed_chair_nest/stools.dm index 69397b22d2b..00e267a48f5 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/stools.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/stools.dm @@ -4,7 +4,6 @@ icon = 'icons/obj/objects.dmi' icon_state = "stool" anchored = 1.0 - pressure_resistance = 15 /obj/structure/stool/ex_act(severity) switch(severity) @@ -24,13 +23,13 @@ /obj/structure/stool/blob_act() if(prob(75)) new /obj/item/stack/sheet/metal(src.loc) - del(src) + qdel(src) /obj/structure/stool/attackby(obj/item/weapon/W as obj, mob/user as mob, params) if(istype(W, /obj/item/weapon/wrench)) playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) new /obj/item/stack/sheet/metal(src.loc) - del(src) + qdel(src) return /obj/structure/stool/MouseDrop(atom/over_object) @@ -58,7 +57,7 @@ origin.loc = get_turf(src) user.unEquip(src) user.visible_message("\blue [user] puts [src] down.", "\blue You put [src] down.") - del src + qdel(src) /obj/item/weapon/stool/attack(mob/M as mob, mob/user as mob) if (prob(5) && istype(M,/mob/living)) @@ -66,7 +65,7 @@ user.unEquip(src) var/obj/item/stack/sheet/metal/m = new/obj/item/stack/sheet/metal m.loc = get_turf(src) - del src + qdel(src) var/mob/living/T = M T.Weaken(5) return diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index 6aba8357e12..0d44c405cb7 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -171,7 +171,7 @@ /obj/machinery/shower/update_icon() //this is terribly unreadable, but basically it makes the shower mist up overlays.Cut() //once it's been on for a while, in addition to handling the water overlay. if(mymist) - del(mymist) + qdel(mymist) if(on) overlays += image('icons/obj/watercloset.dmi', src, "water", MOB_LAYER + 1, dir) @@ -190,7 +190,7 @@ mymist = new /obj/effect/mist(loc) spawn(250) if(src && !on) - del(mymist) + qdel(mymist) ismist = 0 /obj/machinery/shower/Crossed(atom/movable/O) @@ -300,7 +300,7 @@ loc.clean_blood() for(var/obj/effect/E in tile) if(istype(E,/obj/effect/rune) || istype(E,/obj/effect/decal/cleanable) || istype(E,/obj/effect/overlay)) - del(E) + qdel(E) /obj/machinery/shower/process() if(!on || !mobpresent) return diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index ac2efbe2866..f04ce3ab802 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -171,7 +171,7 @@ var/global/wcCommon = pick(list("#379963", "#0d8395", "#58b5c3", "#49e46e", "#8f if(istype(G.affecting,/mob/living)) var/mob/living/M = G.affecting var/state = G.state - del(W) //gotta delete it here because if window breaks, it won't get deleted + qdel(W) //gotta delete it here because if window breaks, it won't get deleted switch (state) if(1) M.visible_message("[user] slams [M] against \the [src]!") @@ -241,7 +241,7 @@ var/global/wcCommon = pick(list("#379963", "#0d8395", "#58b5c3", "#49e46e", "#8f density = 0 air_update_turf(1) update_nearby_icons() - del(src) + qdel(src) else if(W.damtype == BRUTE || W.damtype == BURN) user.changeNext_move(CLICK_CD_MELEE) diff --git a/code/game/supplyshuttle.dm b/code/game/supplyshuttle.dm index 407c58f2ae6..12bb8f07092 100644 --- a/code/game/supplyshuttle.dm +++ b/code/game/supplyshuttle.dm @@ -164,7 +164,7 @@ var/list/mechtoys = list( for(var/typepath in (typesof(/datum/supply_packs) - /datum/supply_packs)) var/datum/supply_packs/P = new typepath() if(P.name == "HEADER") - del(P) + qdel(P) continue supply_packs[P.name] = P diff --git a/code/game/turfs/simulated/floor.dm b/code/game/turfs/simulated/floor.dm index 5a2fcbe719c..5d263e17005 100644 --- a/code/game/turfs/simulated/floor.dm +++ b/code/game/turfs/simulated/floor.dm @@ -344,7 +344,7 @@ var/list/wood_icons = list("wood","wood-broken") FF.update_icon() //so siding get updated properly if(!floor_tile) return - del(floor_tile) + qdel(floor_tile) icon_plating = "plating" set_light(0) floor_tile = null @@ -465,7 +465,7 @@ var/list/wood_icons = list("wood","wood-broken") var/obj/item/stack/tile/light/T = floor_tile if(T.state) user.drop_item(C) - del(C) + qdel(C) T.state = C //fixing it by bashing it with a light bulb, fun eh? update_icon() user << "\blue You replace the light bulb." diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm index 8771ce02bd4..5ee2a50cf87 100644 --- a/code/game/turfs/simulated/walls.dm +++ b/code/game/turfs/simulated/walls.dm @@ -39,7 +39,9 @@ qdel(E) /turf/simulated/wall/ChangeTurf(var/newtype) - 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) var/dsr=0 if(del_suppress_resmoothing) dsr=1 ..(newtype) @@ -239,7 +241,7 @@ user << "The thermite starts melting through the wall." spawn(100) - if(O) del(O) + if(O) qdel(O) // F.sd_LumReset() //TODO: ~Carn return @@ -300,7 +302,7 @@ user << "You burn away the fungi with \the [WT]." playsound(src, 'sound/items/Welder.ogg', 10, 1) for(var/obj/effect/E in src) if(E.name == "Wallrot") - del E + qdel(E) rotting = 0 return else if(!is_sharp(W) && W.force >= 10 || W.force >= 20) diff --git a/code/game/turfs/simulated/walls_reinforced.dm b/code/game/turfs/simulated/walls_reinforced.dm index 93a7f289eb4..6d7a6d9e5e9 100644 --- a/code/game/turfs/simulated/walls_reinforced.dm +++ b/code/game/turfs/simulated/walls_reinforced.dm @@ -50,7 +50,7 @@ user << "You burn away the fungi with \the [WT]." playsound(src, 'sound/items/Welder.ogg', 10, 1) for(var/obj/effect/E in src) if(E.name == "Wallrot") - del E + qdel(E) rotting = 0 return else if(!is_sharp(W) && W.force >= 10 || W.force >= 20) @@ -135,7 +135,7 @@ if (O.amount > 1) O.amount-- else - del(O) + qdel(O) return if(2) @@ -281,7 +281,7 @@ if (MS.amount > 1) MS.amount-- else - del(MS) + qdel(MS) //APC else if(istype(W,/obj/item/mounted)) diff --git a/code/game/turfs/space/space.dm b/code/game/turfs/space/space.dm index f69fc7d05a7..bef369ee672 100644 --- a/code/game/turfs/space/space.dm +++ b/code/game/turfs/space/space.dm @@ -65,7 +65,7 @@ user << "\blue You build a catwalk!" R.use(2) ChangeTurf(/turf/simulated/floor/plating/airless/catwalk) - del(L) + qdel(L) return user << "\blue Constructing support lattice ..." @@ -78,7 +78,7 @@ var/obj/structure/lattice/L = locate(/obj/structure/lattice, src) if(L) var/obj/item/stack/tile/plasteel/S = C - del(L) + qdel(L) playsound(src, 'sound/weapons/Genhit.ogg', 50, 1) S.build(src) S.use(1) @@ -154,7 +154,7 @@ if(src.x <= 1) if(istype(A, /obj/effect/meteor)||istype(A, /obj/effect/space_dust)) - del(A) + qdel(A) return var/list/cur_pos = src.get_global_map_pos() @@ -179,7 +179,7 @@ A.loc.Entered(A) else if (src.x >= world.maxx) if(istype(A, /obj/effect/meteor)) - del(A) + qdel(A) return var/list/cur_pos = src.get_global_map_pos() @@ -204,7 +204,7 @@ A.loc.Entered(A) else if (src.y <= 1) if(istype(A, /obj/effect/meteor)) - del(A) + qdel(A) return var/list/cur_pos = src.get_global_map_pos() if(!cur_pos) return @@ -229,7 +229,7 @@ else if (src.y >= world.maxy) if(istype(A, /obj/effect/meteor)||istype(A, /obj/effect/space_dust)) - del(A) + qdel(A) return var/list/cur_pos = src.get_global_map_pos() if(!cur_pos) return diff --git a/code/game/vehicles/spacepods/spacepod.dm b/code/game/vehicles/spacepods/spacepod.dm index d5e46566fbb..077af478135 100644 --- a/code/game/vehicles/spacepods/spacepod.dm +++ b/code/game/vehicles/spacepods/spacepod.dm @@ -731,7 +731,7 @@ obj/spacepod/verb/toggleLights() if(t_air) t_air.merge(removed) else //just delete the cabin gas, we're in space or some shit - del(removed) + qdel(removed) else return stop() return diff --git a/code/game/verbs/atom_verbs.dm b/code/game/verbs/atom_verbs.dm index aa55f33da0a..b758f11cea1 100644 --- a/code/game/verbs/atom_verbs.dm +++ b/code/game/verbs/atom_verbs.dm @@ -31,6 +31,6 @@ var/P = new /obj/effect/decal/point(tile) usr.changeNext_move(CLICK_CD_POINT) spawn (20) - if(P) del(P) + if(P) qdel(P) usr.visible_message("[usr] points to [this]") diff --git a/code/game/verbs/ooc.dm b/code/game/verbs/ooc.dm index 2f8249c8401..1cf5e73bc19 100644 --- a/code/game/verbs/ooc.dm +++ b/code/game/verbs/ooc.dm @@ -75,6 +75,17 @@ var/global/normal_ooc_colour = "#002eb8" C << "OOC: [src.key]: [msg]" */ +/proc/toggle_ooc() + ooc_allowed = !( ooc_allowed ) + if (ooc_allowed) + world << "The OOC channel has been globally enabled!" + else + world << "The OOC channel has been globally disabled!" + +/proc/auto_toggle_ooc(var/on) + if(config.auto_toggle_ooc_during_round && ooc_allowed != on) + toggle_ooc() + /client/proc/set_ooc(newColor as color) set name = "Set Player OOC Colour" set desc = "Set to yellow for eye burning goodness." diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 9cd97ddcb42..39304707b44 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -629,11 +629,7 @@ var/global/nologevent = 0 set category = "Server" set desc="Globally Toggles OOC" set name="Toggle OOC" - ooc_allowed = !( ooc_allowed ) - if (ooc_allowed) - world << "The OOC channel has been globally enabled!" - else - world << "The OOC channel has been globally disabled!" + toggle_ooc() log_admin("[key_name(usr)] toggled OOC.") message_admins("[key_name_admin(usr)] toggled OOC.", 1) feedback_add_details("admin_verb","TOOC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! diff --git a/code/modules/admin/buildmode.dm b/code/modules/admin/buildmode.dm index fa900c1634b..eaf5fdb8818 100644 --- a/code/modules/admin/buildmode.dm +++ b/code/modules/admin/buildmode.dm @@ -15,7 +15,7 @@ M.client.show_popup_menus = 1 for(var/obj/effect/bmode/buildholder/H) if(H.cl == M.client) - del(H) + qdel(H) else message_admins("[key_name(usr)] has entered build mode.") log_admin("[key_name(usr)] has entered build mode.") diff --git a/code/modules/admin/player_notes.dm b/code/modules/admin/player_notes.dm index 3a74da5fca6..8b439ea6fe9 100644 --- a/code/modules/admin/player_notes.dm +++ b/code/modules/admin/player_notes.dm @@ -126,7 +126,7 @@ datum/admins/proc/notes_gethtml(var/ckey) message_admins("\blue [key_name_admin(usr)] has edited [key]'s notes.") log_admin("[key_name(usr)] has edited [key]'s notes.") - del info + del(info) //Updating list of keys with notes on them var/savefile/note_list = new("data/player_notes.sav") @@ -135,7 +135,7 @@ datum/admins/proc/notes_gethtml(var/ckey) if(!note_keys) note_keys = list() if(!note_keys.Find(key)) note_keys += key note_list << note_keys - del note_list + del(note_list) /proc/notes_del(var/key, var/index) @@ -151,7 +151,7 @@ datum/admins/proc/notes_gethtml(var/ckey) message_admins("\blue [key_name_admin(usr)] deleted one of [key]'s notes.") log_admin("[key_name(usr)] deleted one of [key]'s notes.") - del info + del(info) /proc/show_player_info_irc(var/key as text) var/dat = " Info on [key]%0D%0A" diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index fc6bfa4ed53..d2b3dada0e2 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1574,7 +1574,7 @@ S.victim = M S.loc = M.loc spawn(20) - del(S) + qdel(S) var/turf/simulated/floor/T = get_turf(M) if(istype(T)) @@ -1706,7 +1706,7 @@ var/list/departmentoptions = alldepartments + "All Departments" destination = input(usr, "To which department?", "Choose a department", "") as null|anything in departmentoptions if(!destination) - del(P) + qdel(P) return for(var/obj/machinery/photocopier/faxmachine/F in allfaxes) @@ -1716,7 +1716,7 @@ var/input = input(src.owner, "Please enter a message to send a fax via secure connection. Use
for line breaks. Both pencode and HTML work.", "Outgoing message from Centcomm", "") as message|null if(!input) - del(P) + qdel(P) return input = P.parsepencode(input) // Encode everything from pencode to html @@ -1753,7 +1753,7 @@ else if(stamptype == "none") stamptype = "" else - del(P) + qdel(P) return sendername = input(src.owner, "What organization does the fax come from? This determines the prefix of the paper (i.e. Central Command- Title). This is optional.", "Organization") as text|null @@ -2031,21 +2031,21 @@ feedback_inc("admin_secrets_fun_used",1) feedback_add_details("admin_secrets_fun_used","SC") for(var/obj/item/clothing/under/O in world) - del(O) + qdel(O) ok = 1 if("sec_all_clothes") feedback_inc("admin_secrets_fun_used",1) feedback_add_details("admin_secrets_fun_used","SAC") for(var/obj/item/clothing/O in world) - del(O) + qdel(O) ok = 1 if("sec_classic1") feedback_inc("admin_secrets_fun_used",1) feedback_add_details("admin_secrets_fun_used","SC1") for(var/obj/item/clothing/suit/fire/O in world) - del(O) + qdel(O) for(var/obj/structure/grille/O in world) - del(O) + qdel(O) /* for(var/obj/machinery/vehicle/pod/O in world) for(var/mob/M in src) M.loc = src.loc diff --git a/code/modules/admin/verbs/BrokenInhands.dm b/code/modules/admin/verbs/BrokenInhands.dm index 58a59567944..d3256579191 100644 --- a/code/modules/admin/verbs/BrokenInhands.dm +++ b/code/modules/admin/verbs/BrokenInhands.dm @@ -29,7 +29,7 @@ // if(!istates.Find(O.item_state)) // text += "[O.type] MISSING NORMAL ICON CALLED\n\"[O.item_state]\" IN \"[O.icon]\"\n" //text+="\n" - del(O) + qdel(O) if(text) var/F = file("broken_hand_icons.txt") fdel(F) diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index c3f0bdb0b01..93dc0fba5b9 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -400,7 +400,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that if(hsbitem) for(var/atom/O in world) if(istype(O, hsbitem)) - del(O) + qdel(O) log_admin("[key_name(src)] has deleted all instances of [hsbitem].") message_admins("[key_name_admin(src)] has deleted all instances of [hsbitem].", 0) feedback_add_details("admin_verb","DELA") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -461,7 +461,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that var/mob/adminmob = src.mob M.ckey = src.ckey if( isobserver(adminmob) ) - del(adminmob) + qdel(adminmob) feedback_add_details("admin_verb","ADC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -615,7 +615,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that continue if(istype(I, /obj/item/organ)) continue - del(I) + qdel(I) switch(dresscode) if ("strip") //do nothing @@ -1111,7 +1111,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that if(G.anchored) var/obj/singularity/S = new /obj/singularity(get_turf(G), 50) spawn(0) - del(G) + qdel(G) S.energy = 1750 S.current_size = 7 S.icon = 'icons/effects/224x224.dmi' diff --git a/code/modules/admin/verbs/getlogs.dm b/code/modules/admin/verbs/getlogs.dm index eac11fcac0a..cf939c0ae9f 100644 --- a/code/modules/admin/verbs/getlogs.dm +++ b/code/modules/admin/verbs/getlogs.dm @@ -52,7 +52,7 @@ return message_admins("[key_name_admin(src)] accessed file: [path]") - src << run( file(path) ) + src << ftp( file(path) ) src << "Attempting to send file, this may take a fair few minutes if the file is very large." return @@ -72,7 +72,7 @@ return message_admins("[key_name_admin(src)] accessed file: [path]") - src << run( file(path) ) + src << ftp( file(path) ) src << "Attempting to send file, this may take a fair few minutes if the file is very large." return @@ -87,7 +87,7 @@ var/path = "data/logs/[time2text(world.realtime,"YYYY/MM-Month/DD-Day")].log" if( fexists(path) ) - src << run( file(path) ) + src << ftp( file(path) ) else src << "Error: view_txt_log(): File not found/Invalid path([path])." return @@ -102,7 +102,7 @@ var/path = "data/logs/[time2text(world.realtime,"YYYY/MM-Month/DD-Day")] Attack.log" if( fexists(path) ) - src << run( file(path) ) + src << ftp( file(path) ) else src << "Error: view_atk_log(): File not found/Invalid path([path])." return diff --git a/code/modules/admin/verbs/one_click_antag.dm b/code/modules/admin/verbs/one_click_antag.dm index 30a00193f26..6bb2f96ba06 100644 --- a/code/modules/admin/verbs/one_click_antag.dm +++ b/code/modules/admin/verbs/one_click_antag.dm @@ -292,7 +292,7 @@ client/proc/one_click_antag() if(synd_mind.current.client) for(var/image/I in synd_mind.current.client.images) if(I.icon_state == "synd") - del(I) + qdel(I) for(var/datum/mind/synd_mind in ticker.mode.syndicates) if(synd_mind.current) @@ -367,7 +367,7 @@ client/proc/one_click_antag() candidates.Remove(theghost) if(!theghost) - del(new_syndicate_commando) + qdel(new_syndicate_commando) break new_syndicate_commando.key = theghost.key @@ -487,7 +487,7 @@ client/proc/one_click_antag() candidates.Remove(theghost) if(!theghost) - del(new_vox) + qdel(new_vox) break new_vox.key = theghost.key diff --git a/code/modules/admin/verbs/onlyone.dm b/code/modules/admin/verbs/onlyone.dm index 8f8ba84d670..8064542ede8 100644 --- a/code/modules/admin/verbs/onlyone.dm +++ b/code/modules/admin/verbs/onlyone.dm @@ -32,7 +32,7 @@ continue if(istype(I, /obj/item/organ)) continue - del(I) + qdel(I) H.equip_to_slot_or_del(new /obj/item/clothing/under/kilt(H), slot_w_uniform) H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/captain(H), slot_l_ear) diff --git a/code/modules/admin/verbs/onlyoneteam.dm b/code/modules/admin/verbs/onlyoneteam.dm index ea37f9da5cf..2d53fef466b 100644 --- a/code/modules/admin/verbs/onlyoneteam.dm +++ b/code/modules/admin/verbs/onlyoneteam.dm @@ -17,7 +17,7 @@ continue if(istype (I, /obj/item/organ)) continue - del(I) + qdel(I) H << "You are part of the [station_name()] dodgeball tournament. Throw dodgeballs at crewmembers wearing a different color than you. OOC: Use THROW on an EMPTY-HAND to catch thrown dodgeballs." diff --git a/code/modules/assembly/holder.dm b/code/modules/assembly/holder.dm index be2516b923d..59531610b27 100644 --- a/code/modules/assembly/holder.dm +++ b/code/modules/assembly/holder.dm @@ -173,7 +173,7 @@ a_right:holder = null a_right.loc = T spawn(0) - del(src) + qdel(src) return diff --git a/code/modules/assembly/shock_kit.dm b/code/modules/assembly/shock_kit.dm index 885b163e47a..70a822cd8fb 100644 --- a/code/modules/assembly/shock_kit.dm +++ b/code/modules/assembly/shock_kit.dm @@ -25,7 +25,7 @@ part2.master = null part1 = null part2 = null - del(src) + qdel(src) return if(istype(W, /obj/item/weapon/screwdriver)) status = !status diff --git a/code/modules/awaymissions/trigger.dm b/code/modules/awaymissions/trigger.dm index 7080179b9a6..c31b37fbd8b 100644 --- a/code/modules/awaymissions/trigger.dm +++ b/code/modules/awaymissions/trigger.dm @@ -6,7 +6,7 @@ if(M.client) M << "[message]" if(once) - del(src) + qdel(src) /obj/effect/step_trigger/teleport_fancy var/locationx @@ -41,4 +41,4 @@ uses-- if(uses == 0) - del(src) \ No newline at end of file + qdel(src) \ No newline at end of file diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 21124c4bda3..965c8699e0e 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -87,7 +87,7 @@ O = (H.l_ear == src ? H.r_ear : H.l_ear) user.unEquip(O) if(!istype(src,/obj/item/clothing/ears/offear)) - del(O) + qdel(O) O = src else O = src @@ -99,7 +99,7 @@ O.add_fingerprint(user) if(istype(src,/obj/item/clothing/ears/offear)) - del(src) + qdel(src) /obj/item/clothing/ears/offear name = "Other ear" diff --git a/code/modules/clothing/shoes/colour.dm b/code/modules/clothing/shoes/colour.dm index e5db1e0280f..eac5aa33530 100644 --- a/code/modules/clothing/shoes/colour.dm +++ b/code/modules/clothing/shoes/colour.dm @@ -105,7 +105,7 @@ if ((istype(H, /obj/item/weapon/restraints/handcuffs) && !( src.chained ))) //H = null if (src.icon_state != "orange") return - del(H) + qdel(H) src.chained = 1 src.slowdown = 15 src.icon_state = "orange1" diff --git a/code/modules/clothing/spacesuits/breaches.dm b/code/modules/clothing/spacesuits/breaches.dm index 0c83d8e7464..f232676a0d7 100644 --- a/code/modules/clothing/spacesuits/breaches.dm +++ b/code/modules/clothing/spacesuits/breaches.dm @@ -152,7 +152,7 @@ var/global/list/breach_burn_descriptors = list( for(var/datum/breach/B in breaches) if(!B.class) src.breaches -= B - del(B) + qdel(B) else damage += B.class if(B.damtype == BRUTE) diff --git a/code/modules/clothing/spacesuits/chronosuit.dm b/code/modules/clothing/spacesuits/chronosuit.dm index c0b47824979..88428822184 100644 --- a/code/modules/clothing/spacesuits/chronosuit.dm +++ b/code/modules/clothing/spacesuits/chronosuit.dm @@ -36,7 +36,7 @@ /obj/item/clothing/suit/space/chronos/proc/new_camera(var/mob/user) if(camera) - del(camera) + qdel(camera) camera = new /obj/effect/chronos_cam(get_turf(user)) camera.holder = user user.remote_control = camera @@ -104,11 +104,11 @@ user.client.eye = camera else user.client.eye = user - del(holder) + qdel(holder) else if(user) user.loc = from_turf if(phaseanim) - del(phaseanim) + qdel(phaseanim) teleporting = 0 if(user && !user.loc) //ubersanity user.loc = locate(0,0,1) @@ -163,7 +163,7 @@ user << "\nroot@ChronosuitMK4# chronowalk4 --stop\n" if(camera) user << "\[ ok \] Sending TERM signal to chronowalk4-view" //yes I know they aren't a different color when shutting down, but they were too similar at a glance - del(camera) + qdel(camera) if(helmet) user << "\[ ok \] Stopping ui display driver" user << "\[ ok \] Stopping brainwave scanner" @@ -201,7 +201,7 @@ else src.loc = step else - del(src) + qdel(src) /obj/effect/chronos_cam/Destroy() if(holder) diff --git a/code/modules/computer3/buildandrepair.dm b/code/modules/computer3/buildandrepair.dm index 277d0f538c8..7a75e590f92 100644 --- a/code/modules/computer3/buildandrepair.dm +++ b/code/modules/computer3/buildandrepair.dm @@ -95,7 +95,7 @@ if(!src || !WT.isOn()) return user << "\blue You deconstruct the frame." new /obj/item/stack/sheet/metal( src.loc, 5 ) - del(src) + qdel(src) if(1) if(istype(P, /obj/item/weapon/wrench)) playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) @@ -160,7 +160,7 @@ if(do_after(user, 20)) if(P) P:amount -= 5 - if(!P:amount) del(P) + if(!P:amount) qdel(P) user << "\blue You add cables to the frame." src.state = 3 src.icon_state = "3" @@ -212,7 +212,7 @@ if(circuit.OS) circuit.OS.computer = B B.RefreshParts() // todo - del(src) + qdel(src) /* This will remove peripherals if you specify one, but the main function is to diff --git a/code/modules/computer3/computers/HolodeckControl.dm b/code/modules/computer3/computers/HolodeckControl.dm index d53946fa12c..0e04ed50d59 100644 --- a/code/modules/computer3/computers/HolodeckControl.dm +++ b/code/modules/computer3/computers/HolodeckControl.dm @@ -160,7 +160,7 @@ if(!silent) var/obj/oldobj = obj obj.visible_message("The [oldobj.name] fades away!") - del(obj) + qdel(obj) proc/checkInteg(var/area/A) for(var/turf/T in A) @@ -213,10 +213,10 @@ derez(item) for(var/obj/effect/decal/cleanable/blood/B in linkedholodeck) - del(B) + qdel(B) for(var/mob/living/simple_animal/hostile/carp/C in linkedholodeck) - del(C) + qdel(C) holographic_items = A.copy_contents_to(linkedholodeck , 1) diff --git a/code/modules/computer3/computers/medical.dm b/code/modules/computer3/computers/medical.dm index af2a3340ae3..a2aba803e5d 100644 --- a/code/modules/computer3/computers/medical.dm +++ b/code/modules/computer3/computers/medical.dm @@ -253,7 +253,7 @@ if (href_list["del_all2"]) for(var/datum/data/record/R in data_core.medical) //R = null - del(R) + qdel(R) //Foreach goto(494) src.temp = "All records deleted." @@ -419,7 +419,7 @@ if (href_list["del_r2"]) if (src.active2) //src.active2 = null - del(src.active2) + qdel(src.active2) if (href_list["d_rec"]) var/datum/data/record/R = locate(href_list["d_rec"]) diff --git a/code/modules/computer3/computers/security.dm b/code/modules/computer3/computers/security.dm index cccfaca2d6e..4f9d2088074 100644 --- a/code/modules/computer3/computers/security.dm +++ b/code/modules/computer3/computers/security.dm @@ -397,7 +397,7 @@ What a mess.*/ if ("Purge All Records") for(var/datum/data/record/R in data_core.security) - del(R) + qdel(R) temp = "All Security records deleted." if ("Add Entry") @@ -581,17 +581,17 @@ What a mess.*/ if ("Delete Record (Security) Execute") if (active2) - del(active2) + qdel(active2) if ("Delete Record (ALL) Execute") if (active1) for(var/datum/data/record/R in data_core.medical) if ((R.fields["name"] == active1.fields["name"] || R.fields["id"] == active1.fields["id"])) - del(R) + qdel(R) else - del(active1) + qdel(active1) if (active2) - del(active2) + qdel(active2) else temp = "This function does not appear to be working at the moment. Our apologies." @@ -622,7 +622,7 @@ What a mess.*/ continue else if(prob(1)) - del(R) + qdel(R) continue ..(severity) diff --git a/code/modules/computer3/laptop.dm b/code/modules/computer3/laptop.dm index 6880935e495..e4e3876e89f 100644 --- a/code/modules/computer3/laptop.dm +++ b/code/modules/computer3/laptop.dm @@ -52,7 +52,7 @@ O.loc = loc usr << "\The [src] crumbles to pieces." spawn(5) - del src + qdel(src) return if(!stored_computer.manipulating) @@ -65,7 +65,7 @@ spawn(5) stored_computer.manipulating = 0 - del src + qdel(src) else usr << "\red You are already opening the computer!" diff --git a/code/modules/computer3/lapvend.dm b/code/modules/computer3/lapvend.dm index a87bc08c4f0..4d96d94878e 100644 --- a/code/modules/computer3/lapvend.dm +++ b/code/modules/computer3/lapvend.dm @@ -31,7 +31,7 @@ /obj/machinery/lapvend/blob_act() if (prob(50)) spawn(0) - del(src) + qdel(src) return return @@ -201,10 +201,10 @@ if (network == 3) newlap.spawn_parts += (/obj/item/part/computer/networking/cable) if (power == 1) - del(newlap.battery) + qdel(newlap.battery) newlap.battery = new /obj/item/weapon/stock_parts/cell/high(newlap) if (power == 2) - del(newlap.battery) + qdel(newlap.battery) newlap.battery = new /obj/item/weapon/stock_parts/cell/super(newlap) newlap.spawn_parts() @@ -394,7 +394,7 @@ T.time = worldtime2text() vendor_account.transaction_log.Add(T) - del(relap) + qdel(relap) vendmode = 0 cardreader = 0 diff --git a/code/modules/computer3/program.dm b/code/modules/computer3/program.dm index ebead299e1e..f1f68c0890d 100644 --- a/code/modules/computer3/program.dm +++ b/code/modules/computer3/program.dm @@ -111,7 +111,7 @@ Programs are a file that can be executed update_icon() if(popup) popup.close() - del popup + qdel(popup) return /* diff --git a/code/modules/crafting/guncrafting.dm b/code/modules/crafting/guncrafting.dm index e29a1b47e64..095dfcbe360 100644 --- a/code/modules/crafting/guncrafting.dm +++ b/code/modules/crafting/guncrafting.dm @@ -24,8 +24,8 @@ var/obj/item/weaponcrafting/ishotgunconstruction/I = new /obj/item/weaponcrafting/ishotgunconstruction user.unEquip(src) user.put_in_hands(I) - del(W) - del(src) + qdel(W) + qdel(src) return // SHOTGUN // @@ -57,8 +57,8 @@ var/obj/item/weaponcrafting/ishotgunconstruction3/I = new /obj/item/weaponcrafting/ishotgunconstruction3 user.unEquip(src) user.put_in_hands(I) - del(W) - del(src) + qdel(W) + qdel(src) return /obj/item/weaponcrafting/ishotgunconstruction3 diff --git a/code/modules/customitems/item_spawning.dm b/code/modules/customitems/item_spawning.dm index 3818786a3e6..c1b1e5f644e 100644 --- a/code/modules/customitems/item_spawning.dm +++ b/code/modules/customitems/item_spawning.dm @@ -77,7 +77,7 @@ I.fingerprint_hash = C.fingerprint_hash //I.pin = C.pin //replace old ID - del(C) + qdel(C) ok = M.equip_if_possible(I, slot_wear_id, 0) //if 1, last argument deletes on fail break testing("Replaced ID!") diff --git a/code/modules/economy/ATM.dm b/code/modules/economy/ATM.dm index fad9c88110b..e09a3b887c5 100644 --- a/code/modules/economy/ATM.dm +++ b/code/modules/economy/ATM.dm @@ -115,7 +115,7 @@ log transactions user << "You insert [I] into [src]." src.attack_hand(user) - del I + qdel(I) else ..() diff --git a/code/modules/events/carp_migration.dm b/code/modules/events/carp_migration.dm index 06098e5e34f..9bcec386386 100644 --- a/code/modules/events/carp_migration.dm +++ b/code/modules/events/carp_migration.dm @@ -23,4 +23,4 @@ if(!C.stat) var/turf/T = get_turf(C) if(istype(T, /turf/space)) - del(C) + qdel(C) diff --git a/code/modules/events/rogue_drones.dm b/code/modules/events/rogue_drones.dm index d96c80f60f8..92619024056 100644 --- a/code/modules/events/rogue_drones.dm +++ b/code/modules/events/rogue_drones.dm @@ -45,7 +45,7 @@ D.z = 2 D.has_loot = 0 - del(D) + qdel(D) num_recovered++ if(num_recovered > drones_list.len * 0.75) diff --git a/code/modules/events/sayuevents/meaty_ores.dm b/code/modules/events/sayuevents/meaty_ores.dm index b5cb7e390cc..0694b932a2c 100644 --- a/code/modules/events/sayuevents/meaty_ores.dm +++ b/code/modules/events/sayuevents/meaty_ores.dm @@ -50,4 +50,4 @@ else new /mob/living/simple_animal/cow(loc) - del(src) \ No newline at end of file + qdel(src) \ No newline at end of file diff --git a/code/modules/events/tear.dm b/code/modules/events/tear.dm index 4efd8e87582..718b86edeed 100644 --- a/code/modules/events/tear.dm +++ b/code/modules/events/tear.dm @@ -19,7 +19,7 @@ /datum/event/tear/end() if(TE) - del(TE) + qdel(TE) /obj/effect/tear name="Dimensional Tear" @@ -40,7 +40,7 @@ animation.master = src // flick("newtear",usr) spawn(15) - if(animation) del(animation) + if(animation) qdel(animation) spawn(rand(30,120)) diff --git a/code/modules/events/tgevents/dust.dm b/code/modules/events/tgevents/dust.dm index 17523a92e8e..7bfb719e677 100644 --- a/code/modules/events/tgevents/dust.dm +++ b/code/modules/events/tgevents/dust.dm @@ -88,7 +88,7 @@ if(life <= 0) walk(src,0) spawn(1) - del(src) + qdel(src) return 0 return diff --git a/code/modules/events/tgevents/immovable_rod.dm b/code/modules/events/tgevents/immovable_rod.dm index d1a09d8633d..cdfdde48afc 100644 --- a/code/modules/events/tgevents/immovable_rod.dm +++ b/code/modules/events/tgevents/immovable_rod.dm @@ -67,7 +67,7 @@ In my current plan for it, 'solid' will be defined as anything with density == 1 Move() if(z != z_original || loc == destination) - spawn(0) del(src) + spawn(0) qdel(src) return ..() Bump(atom/clong) @@ -87,7 +87,7 @@ In my current plan for it, 'solid' will be defined as anything with density == 1 if(clong.density || prob(10)) clong.ex_act(2) else - del(src) + qdel(src) if(clong && prob(25)) src.loc = clong.loc diff --git a/code/modules/events/tgevents/vent_clog.dm b/code/modules/events/tgevents/vent_clog.dm index 4fac3d0f9fa..092bc544484 100755 --- a/code/modules/events/tgevents/vent_clog.dm +++ b/code/modules/events/tgevents/vent_clog.dm @@ -33,4 +33,4 @@ smoke.set_up(R, rand(1, 2), 0, vent, 0, silent = 1) playsound(vent.loc, 'sound/effects/smoke.ogg', 50, 1, -3) smoke.start(3) - R.delete() //GC the reagents + qdel(R) diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm index 24a1cb6cc16..a0c9ddef418 100644 --- a/code/modules/flufftext/Hallucination.dm +++ b/code/modules/flufftext/Hallucination.dm @@ -443,16 +443,16 @@ Gunshots/explosions/opening doors/less rare audio (done) /obj/effect/fake_attacker/proc/updateimage() // del src.currentimage if(src.dir == NORTH) - del src.currentimage + del(src.currentimage) src.currentimage = new /image(up,src) else if(src.dir == SOUTH) - del src.currentimage + del(src.currentimage) src.currentimage = new /image(down,src) else if(src.dir == EAST) - del src.currentimage + del(src.currentimage) src.currentimage = new /image(right,src) else if(src.dir == WEST) - del src.currentimage + del(src.currentimage) src.currentimage = new /image(left,src) my_target << currentimage diff --git a/code/modules/food/candy_maker.dm b/code/modules/food/candy_maker.dm index b9afb48ad77..1452df3ea70 100644 --- a/code/modules/food/candy_maker.dm +++ b/code/modules/food/candy_maker.dm @@ -1,24 +1,16 @@ -/obj/machinery/candy_maker +/obj/machinery/kitchen_machine/candy_maker name = "candy machine" desc = "The stuff of nightmares for a dentist." icon = 'icons/obj/cooking_machines.dmi' icon_state = "candymaker_off" - layer = 2.9 - density = 1 - anchored = 1 - use_power = 1 - idle_power_usage = 5 - active_power_usage = 100 - flags = OPENCONTAINER | NOREACT - var/operating = 0 // Is it on? - var/dirty = 0 // = {0..100} Does it need cleaning? - var/broken = 0 // ={0,1,2} How broken is it??? - var/global/list/datum/recipe/available_recipes // List of the recipes you can use - var/global/list/acceptable_items // List of the items you can put in - var/global/list/acceptable_reagents // List of the reagents you can put in - var/global/max_n_of_items = 0 - var/efficiency + cook_verbs = list("Wonderizing", "Scrumpdiddlyumptiousification", "Miracle-coating", "Flavorifaction") + recipe_type = /datum/recipe/candy + off_icon = "candymaker_off" + on_icon = "candymaker_on" + broken_icon = "candymaker_broke" + dirty_icon = "candymaker_dirty" + open_icon = "candymaker_open" // see code/modules/food/recipes_candy.dm for recipes @@ -26,29 +18,8 @@ * Initialising ********************/ -/obj/machinery/candy_maker/New() - //..() //do not need this - reagents = new/datum/reagents(100) - reagents.my_atom = src - if (!available_recipes) - available_recipes = new - for (var/type in (typesof(/datum/recipe/candy)-/datum/recipe/candy)) - var/datum/recipe/recipe = new type - if(recipe.result) // Ignore recipe subtypes that lack a result - available_recipes += recipe - else - del(recipe) - acceptable_items = new - acceptable_reagents = new - for (var/datum/recipe/candy/recipe in available_recipes) - for (var/item in recipe.items) - acceptable_items |= item - for (var/reagent in recipe.reagents) - acceptable_reagents |= reagent - if (recipe.items) - max_n_of_items = max(max_n_of_items,recipe.items.len) - acceptable_items |= /obj/item/weapon/reagent_containers/food/snacks/grown - +/obj/machinery/kitchen_machine/candy_maker/New() + ..() component_parts = list() component_parts += new /obj/item/weapon/circuitboard/candy_maker(null) component_parts += new /obj/item/weapon/stock_parts/manipulator(null) @@ -56,8 +27,7 @@ component_parts += new /obj/item/stack/cable_coil(null, 5) RefreshParts() - -/obj/machinery/candy_maker/upgraded/New() +/obj/machinery/kitchen_machine/candy_maker/upgraded/New() ..() component_parts = list() component_parts += new /obj/item/weapon/circuitboard/candy_maker(null) @@ -66,363 +36,8 @@ component_parts += new /obj/item/stack/cable_coil(null, 5) RefreshParts() -/obj/machinery/candy_maker/RefreshParts() +/obj/machinery/kitchen_machine/candy_maker/RefreshParts() var/E for(var/obj/item/weapon/stock_parts/manipulator/M in component_parts) E += M.rating efficiency = E - -/******************* -* Item Adding -********************/ - -/obj/machinery/candy_maker/attackby(var/obj/item/O as obj, var/mob/user as mob, params) - if(operating) - return - if(!broken && dirty < 100) - if(default_deconstruction_screwdriver(user, "candymaker_open", "candymaker_off", O)) - return - if(exchange_parts(user, O)) - return - if(!broken && istype(O, /obj/item/weapon/wrench)) - playsound(src, 'sound/items/Ratchet.ogg', 50, 1) - if(anchored) - anchored = 0 - user << "The [src] can now be moved." - return - else if(!anchored) - anchored = 1 - user << "The [src] is now secured." - return - - default_deconstruction_crowbar(O) - - if(src.broken > 0) - if(src.broken == 2 && istype(O, /obj/item/weapon/screwdriver)) // If it's broken and they're using a screwdriver - user.visible_message( \ - "\blue [user] starts to fix part of the candy maker.", \ - "\blue You start to fix part of the candy maker." \ - ) - if (do_after(user,20)) - user.visible_message( \ - "\blue [user] fixes part of the candy maker.", \ - "\blue You have fixed part of the candy maker." \ - ) - src.broken = 1 // Fix it a bit - else if(src.broken == 1 && istype(O, /obj/item/weapon/wrench)) // If it's broken and they're doing the wrench - user.visible_message( \ - "\blue [user] starts to fix part of the candy maker.", \ - "\blue You start to fix part of the candy maker." \ - ) - if (do_after(user,20)) - user.visible_message( \ - "\blue [user] fixes the candy maker.", \ - "\blue You have fixed the candy maker." \ - ) - src.icon_state = "candymaker_off" - src.broken = 0 // Fix it! - src.dirty = 0 // just to be sure - src.flags = OPENCONTAINER - else - user << "\red It's broken!" - return 1 - else if(src.dirty==100) // The candy_maker is all dirty so can't be used! - if(istype(O, /obj/item/weapon/reagent_containers/spray/cleaner) || istype(O, /obj/item/weapon/soap)) // If they're trying to clean it then let them - user.visible_message( \ - "\blue [user] starts to clean the candy maker.", \ - "\blue You start to clean the candy maker." \ - ) - if (do_after(user,20)) - user.visible_message( \ - "\blue [user] has cleaned the candy maker.", \ - "\blue You have cleaned the candy maker." \ - ) - src.dirty = 0 // It's clean! - src.broken = 0 // just to be sure - src.icon_state = "candymaker_off" - src.flags = OPENCONTAINER - else //Otherwise bad luck!! - user << "\red It's dirty!" - return 1 - else if(is_type_in_list(O,acceptable_items)) - if (contents.len>=max_n_of_items) - user << "\red This [src] is full of ingredients, you cannot put more." - return 1 - if (istype(O,/obj/item/stack) && O:amount>1) - new O.type (src) - O:use(1) - user.visible_message( \ - "\blue [user] has added one of [O] to \the [src].", \ - "\blue You add one of [O] to \the [src].") - else - // user.unEquip(O) //This just causes problems so far as I can tell. -Pete - if(!user.drop_item()) - user << "\the [O] is stuck to your hand, you cannot put it in \the [src]" - return 0 - O.loc = src - user.visible_message( \ - "\blue [user] has added \the [O] to \the [src].", \ - "\blue You add \the [O] to \the [src].") - else if(istype(O,/obj/item/weapon/reagent_containers/glass) || \ - istype(O,/obj/item/weapon/reagent_containers/food/drinks) || \ - istype(O,/obj/item/weapon/reagent_containers/food/condiment) \ - ) - if (!O.reagents) - return 1 - for (var/datum/reagent/R in O.reagents.reagent_list) - if (!(R.id in acceptable_reagents)) - user << "\red Your [O] contains components unsuitable for cookery." - return 1 - //G.reagents.trans_to(src,G.amount_per_transfer_from_this) - else if(istype(O,/obj/item/weapon/grab)) - var/obj/item/weapon/grab/G = O - user << "\red This is ridiculous. You can not fit \the [G.affecting] in this [src]." - return 1 - else - user << "\red You have no idea what you can cook with this [O]." - return 1 - src.updateUsrDialog() - -/obj/machinery/candy_maker/attack_ai(mob/user as mob) - return 0 - -/obj/machinery/candy_maker/attack_hand(mob/user as mob) - user.set_machine(src) - interact(user) - -/******************* -* candy_maker Menu -********************/ - -/obj/machinery/candy_maker/interact(mob/user as mob) // The Candy Maker Menu - if(panel_open || !anchored) - return - var/dat = "" - if(src.broken > 0) - dat = {"Bzzzzttttt"} - else if(src.operating) - var/whimsy_word = pick("Wonderizing", "Scrumpdiddlyumptiousification", "Miracle-coating", "Flavorifaction") - dat = {"[whimsy_word] in progress!
Please wait...!
"} - else if(src.dirty==100) - dat = {"This candy maker is dirty!
Please clean it before use!
"} - else - var/list/items_counts = new - var/list/items_measures = new - var/list/items_measures_p = new - for (var/obj/O in contents) - var/display_name = O.name - if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/egg)) - items_measures[display_name] = "egg" - items_measures_p[display_name] = "eggs" - if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/tofu)) - items_measures[display_name] = "tofu chunk" - items_measures_p[display_name] = "tofu chunks" - if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/meat)) //any meat - items_measures[display_name] = "slab of meat" - items_measures_p[display_name] = "slabs of meat" - if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/donkpocket)) - display_name = "Turnovers" - items_measures[display_name] = "turnover" - items_measures_p[display_name] = "turnovers" - if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/carpmeat)) - items_measures[display_name] = "fillet of meat" - items_measures_p[display_name] = "fillets of meat" - items_counts[display_name]++ - for (var/O in items_counts) - var/N = items_counts[O] - if (!(O in items_measures)) - dat += {"[capitalize(O)]: [N] [lowertext(O)]\s
"} - else - if (N==1) - dat += {"[capitalize(O)]: [N] [items_measures[O]]
"} - else - dat += {"[capitalize(O)]: [N] [items_measures_p[O]]
"} - - for (var/datum/reagent/R in reagents.reagent_list) - var/display_name = R.name - if (R.id == "capsaicin") - display_name = "Hotsauce" - if (R.id == "frostoil") - display_name = "Coldsauce" - dat += {"[display_name]: [R.volume] unit\s
"} - - if (items_counts.len==0 && reagents.reagent_list.len==0) - dat = {"The candy maker is empty
"} - else - dat = {"Ingredients:
[dat]"} - dat += {"

\ -
Turn on!
\ -
Eject ingredients!
\ -"} - - user << browse("Candy Maker Controls[dat]", "window=candy_maker") - onclose(user, "candy_maker") - return - - - -/*********************************** -* candy_maker Menu Handling/Cooking -************************************/ - -/obj/machinery/candy_maker/proc/cook() - if(stat & (NOPOWER|BROKEN)) - return - start() - if (reagents.total_volume==0 && !(locate(/obj) in contents)) //dry run - if (!wzhzhzh(10)) - abort() - return - stop() - return - - var/datum/recipe/recipe = select_recipe(available_recipes,src) - var/obj/cooked - var/obj/byproduct - if (!recipe) - dirty += 1 - if (prob(max(10,dirty*5))) - if (!wzhzhzh(4)) - abort() - return - muck_start() - wzhzhzh(4) - muck_finish() - cooked = fail() - cooked.loc = src.loc - return - else if (has_extra_item()) - if (!wzhzhzh(4)) - abort() - return - broke() - cooked = fail() - cooked.loc = src.loc - return - else - if (!wzhzhzh(10)) - abort() - return - stop() - cooked = fail() - cooked.loc = src.loc - return - else - var/halftime = round(recipe.time/10/2) - if (!wzhzhzh(halftime)) - abort() - return - if (!wzhzhzh(halftime)) - abort() - cooked = fail() - cooked.loc = src.loc - return - cooked = recipe.make_food(src) - byproduct = recipe.get_byproduct() - stop() - if(cooked) - cooked.loc = src.loc - for(var/i=1,iThe [src] can now be moved." - return - else if(!anchored) - anchored = 1 - user << "The [src] is now secured." - return - - default_deconstruction_crowbar(O) - - if(src.broken > 0) - if(src.broken == 2 && istype(O, /obj/item/weapon/screwdriver)) // If it's broken and they're using a screwdriver - user.visible_message( \ - "\blue [user] starts to fix part of the grill.", \ - "\blue You start to fix part of the grill." \ - ) - if (do_after(user,20)) - user.visible_message( \ - "\blue [user] fixes part of the grill.", \ - "\blue You have fixed part of the grill." \ - ) - src.broken = 1 // Fix it a bit - else if(src.broken == 1 && istype(O, /obj/item/weapon/wrench)) // If it's broken and they're doing the wrench - user.visible_message( \ - "\blue [user] starts to fix part of the grill.", \ - "\blue You start to fix part of the grill." \ - ) - if (do_after(user,20)) - user.visible_message( \ - "\blue [user] fixes the grill.", \ - "\blue You have fixed the grill." \ - ) - src.icon_state = "grill_off" - src.broken = 0 // Fix it! - src.dirty = 0 // just to be sure - src.flags = OPENCONTAINER - else - user << "\red It's broken!" - return 1 - else if(src.dirty==100) // The grill is all dirty so can't be used! - if(istype(O, /obj/item/weapon/reagent_containers/spray/cleaner) || istype(O, /obj/item/weapon/soap)) // If they're trying to clean it then let them - user.visible_message( \ - "\blue [user] starts to clean the grill.", \ - "\blue You start to clean the grill." \ - ) - if (do_after(user,20)) - user.visible_message( \ - "\blue [user] has cleaned the grill.", \ - "\blue You have cleaned the grill." \ - ) - src.dirty = 0 // It's clean! - src.broken = 0 // just to be sure - src.icon_state = "grill_off" - src.flags = OPENCONTAINER - else //Otherwise bad luck!! - user << "\red It's dirty!" - return 1 - else if(is_type_in_list(O,acceptable_items)) - if (contents.len>=max_n_of_items) - user << "\red This [src] is full of ingredients, you cannot put more." - return 1 - if (istype(O,/obj/item/stack) && O:amount>1) - new O.type (src) - O:use(1) - user.visible_message( \ - "\blue [user] has added one of [O] to \the [src].", \ - "\blue You add one of [O] to \the [src].") - else - // user.unEquip(O) //This just causes problems so far as I can tell. -Pete - if(!user.drop_item()) - user << "\the [O] is stuck to your hand, you cannot put it in \the [src]" - return 0 - O.loc = src - user.visible_message( \ - "\blue [user] has added \the [O] to \the [src].", \ - "\blue You add \the [O] to \the [src].") - else if(istype(O,/obj/item/weapon/reagent_containers/glass) || \ - istype(O,/obj/item/weapon/reagent_containers/food/drinks) || \ - istype(O,/obj/item/weapon/reagent_containers/food/condiment) \ - ) - if (!O.reagents) - return 1 - for (var/datum/reagent/R in O.reagents.reagent_list) - if (!(R.id in acceptable_reagents)) - user << "\red Your [O] contains components unsuitable for cookery." - return 1 - //G.reagents.trans_to(src,G.amount_per_transfer_from_this) - else if(istype(O,/obj/item/weapon/grab)) - var/obj/item/weapon/grab/G = O - user << "\red This is ridiculous. You can not fit \the [G.affecting] in this [src]." - return 1 - else - user << "\red You have no idea what you can cook with this [O]." - return 1 - src.updateUsrDialog() - -/obj/machinery/grill/attack_ai(mob/user as mob) - return 0 - -/obj/machinery/grill/attack_hand(mob/user as mob) - user.set_machine(src) - interact(user) - -/******************* -* grill Menu -********************/ - -/obj/machinery/grill/interact(mob/user as mob) // The grill Menu - if(panel_open || !anchored) - return - var/dat = "" - if(src.broken > 0) - dat = {"Bzzzzttttt"} - else if(src.operating) - dat = {"Grilling in progress!
Please wait...!
"} - else if(src.dirty==100) - dat = {"This grill is dirty!
Please clean it before use!
"} - else - var/list/items_counts = new - var/list/items_measures = new - var/list/items_measures_p = new - for (var/obj/O in contents) - var/display_name = O.name - if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/egg)) - items_measures[display_name] = "egg" - items_measures_p[display_name] = "eggs" - if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/tofu)) - items_measures[display_name] = "tofu chunk" - items_measures_p[display_name] = "tofu chunks" - if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/meat)) //any meat - items_measures[display_name] = "slab of meat" - items_measures_p[display_name] = "slabs of meat" - if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/donkpocket)) - display_name = "Turnovers" - items_measures[display_name] = "turnover" - items_measures_p[display_name] = "turnovers" - if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/carpmeat)) - items_measures[display_name] = "fillet of meat" - items_measures_p[display_name] = "fillets of meat" - items_counts[display_name]++ - for (var/O in items_counts) - var/N = items_counts[O] - if (!(O in items_measures)) - dat += {"[capitalize(O)]: [N] [lowertext(O)]\s
"} - else - if (N==1) - dat += {"[capitalize(O)]: [N] [items_measures[O]]
"} - else - dat += {"[capitalize(O)]: [N] [items_measures_p[O]]
"} - - for (var/datum/reagent/R in reagents.reagent_list) - var/display_name = R.name - if (R.id == "capsaicin") - display_name = "Hotsauce" - if (R.id == "frostoil") - display_name = "Coldsauce" - dat += {"[display_name]: [R.volume] unit\s
"} - - if (items_counts.len==0 && reagents.reagent_list.len==0) - dat = {"The grill is empty
"} - else - dat = {"Ingredients:
[dat]"} - dat += {"

\ -
Turn on!
\ -
Eject ingredients!
\ -"} - - user << browse("grill Controls[dat]", "window=grill") - onclose(user, "grill") - return - - - -/*********************************** -* grill Menu Handling/Cooking -************************************/ - -/obj/machinery/grill/proc/cook() - if(stat & (NOPOWER|BROKEN)) - return - start() - if (reagents.total_volume==0 && !(locate(/obj) in contents)) //dry run - if (!wzhzhzh(10)) - abort() - return - stop() - return - - var/datum/recipe/recipe = select_recipe(available_recipes,src) - var/obj/cooked - if (!recipe) - dirty += 1 - if (prob(max(10,dirty*5))) - if (!wzhzhzh(4)) - abort() - return - muck_start() - wzhzhzh(4) - muck_finish() - cooked = fail() - cooked.loc = src.loc - return - else if (has_extra_item()) - if (!wzhzhzh(4)) - abort() - return - broke() - cooked = fail() - cooked.loc = src.loc - return - else - if (!wzhzhzh(10)) - abort() - return - stop() - cooked = fail() - cooked.loc = src.loc - return - else - var/halftime = round(recipe.time/10/2) - if (!wzhzhzh(halftime)) - abort() - return - if (!wzhzhzh(halftime)) - abort() - cooked = fail() - cooked.loc = src.loc - return - cooked = recipe.make_food(src) - stop() - if(cooked) - cooked.loc = src.loc - for(var/i=1,iThe [src] can now be moved." - return - else if(!anchored) - anchored = 1 - user << "The [src] is now secured." - return - - default_deconstruction_crowbar(O) - - if(src.broken > 0) - if(src.broken == 2 && istype(O, /obj/item/weapon/screwdriver)) // If it's broken and they're using a screwdriver - user.visible_message( \ - "\blue [user] starts to fix part of the oven.", \ - "\blue You start to fix part of the oven." \ - ) - if (do_after(user,20)) - user.visible_message( \ - "\blue [user] fixes part of the oven.", \ - "\blue You have fixed part of the oven." \ - ) - src.broken = 1 // Fix it a bit - else if(src.broken == 1 && istype(O, /obj/item/weapon/wrench)) // If it's broken and they're doing the wrench - user.visible_message( \ - "\blue [user] starts to fix part of the oven.", \ - "\blue You start to fix part of the oven." \ - ) - if (do_after(user,20)) - user.visible_message( \ - "\blue [user] fixes the oven.", \ - "\blue You have fixed the oven." \ - ) - src.icon_state = "oven_off" - src.broken = 0 // Fix it! - src.dirty = 0 // just to be sure - src.flags = OPENCONTAINER - else - user << "\red It's broken!" - return 1 - else if(src.dirty==100) // The oven is all dirty so can't be used! - if(istype(O, /obj/item/weapon/reagent_containers/spray/cleaner) || istype(O, /obj/item/weapon/soap)) // If they're trying to clean it then let them - user.visible_message( \ - "\blue [user] starts to clean the oven.", \ - "\blue You start to clean the oven." \ - ) - if (do_after(user,20)) - user.visible_message( \ - "\blue [user] has cleaned the oven.", \ - "\blue You have cleaned the oven." \ - ) - src.dirty = 0 // It's clean! - src.broken = 0 // just to be sure - src.icon_state = "oven_off" - src.flags = OPENCONTAINER - else //Otherwise bad luck!! - user << "\red It's dirty!" - return 1 - else if(is_type_in_list(O,acceptable_items)) - if (contents.len>=max_n_of_items) - user << "\red This [src] is full of ingredients, you cannot put more." - return 1 - if (istype(O,/obj/item/stack) && O:amount>1) - new O.type (src) - O:use(1) - user.visible_message( \ - "\blue [user] has added one of [O] to \the [src].", \ - "\blue You add one of [O] to \the [src].") - else - // user.unEquip(O) //This just causes problems so far as I can tell. -Pete - if(!user.drop_item()) - user << "\the [O] is stuck to your hand, you cannot put it in \the [src]" - return 0 - O.loc = src - user.visible_message( \ - "\blue [user] has added \the [O] to \the [src].", \ - "\blue You add \the [O] to \the [src].") - else if(istype(O,/obj/item/weapon/reagent_containers/glass) || \ - istype(O,/obj/item/weapon/reagent_containers/food/drinks) || \ - istype(O,/obj/item/weapon/reagent_containers/food/condiment) \ - ) - if (!O.reagents) - return 1 - for (var/datum/reagent/R in O.reagents.reagent_list) - if (!(R.id in acceptable_reagents)) - user << "\red Your [O] contains components unsuitable for cookery." - return 1 - //G.reagents.trans_to(src,G.amount_per_transfer_from_this) - else if(istype(O,/obj/item/weapon/grab)) - var/obj/item/weapon/grab/G = O - user << "\red This is ridiculous. You can not fit \the [G.affecting] in this [src]." - return 1 - else - user << "\red You have no idea what you can cook with this [O]." - return 1 - src.updateUsrDialog() - -/obj/machinery/oven/attack_ai(mob/user as mob) - return 0 - -/obj/machinery/oven/attack_hand(mob/user as mob) - user.set_machine(src) - interact(user) - -/******************* -* oven Menu -********************/ - -/obj/machinery/oven/interact(mob/user as mob) // The oven Menu - if(panel_open || !anchored) - return - var/dat = "" - if(src.broken > 0) - dat = {"Bzzzzttttt"} - else if(src.operating) - dat = {"Baking in progress!
Please wait...!
"} - else if(src.dirty==100) - dat = {"This oven is dirty!
Please clean it before use!
"} - else - var/list/items_counts = new - var/list/items_measures = new - var/list/items_measures_p = new - for (var/obj/O in contents) - var/display_name = O.name - if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/egg)) - items_measures[display_name] = "egg" - items_measures_p[display_name] = "eggs" - if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/tofu)) - items_measures[display_name] = "tofu chunk" - items_measures_p[display_name] = "tofu chunks" - if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/meat)) //any meat - items_measures[display_name] = "slab of meat" - items_measures_p[display_name] = "slabs of meat" - if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/donkpocket)) - display_name = "Turnovers" - items_measures[display_name] = "turnover" - items_measures_p[display_name] = "turnovers" - if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/carpmeat)) - items_measures[display_name] = "fillet of meat" - items_measures_p[display_name] = "fillets of meat" - items_counts[display_name]++ - for (var/O in items_counts) - var/N = items_counts[O] - if (!(O in items_measures)) - dat += {"[capitalize(O)]: [N] [lowertext(O)]\s
"} - else - if (N==1) - dat += {"[capitalize(O)]: [N] [items_measures[O]]
"} - else - dat += {"[capitalize(O)]: [N] [items_measures_p[O]]
"} - - for (var/datum/reagent/R in reagents.reagent_list) - var/display_name = R.name - if (R.id == "capsaicin") - display_name = "Hotsauce" - if (R.id == "frostoil") - display_name = "Coldsauce" - dat += {"[display_name]: [R.volume] unit\s
"} - - if (items_counts.len==0 && reagents.reagent_list.len==0) - dat = {"The oven is empty
"} - else - dat = {"Ingredients:
[dat]"} - dat += {"

\ -
Turn on!
\ -
Eject ingredients!
\ -"} - - user << browse("oven Controls[dat]", "window=oven") - onclose(user, "oven") - return - - - -/*********************************** -* oven Menu Handling/Cooking -************************************/ - -/obj/machinery/oven/proc/cook() - if(stat & (NOPOWER|BROKEN)) - return - start() - if (reagents.total_volume==0 && !(locate(/obj) in contents)) //dry run - if (!wzhzhzh(10)) - abort() - return - stop() - return - - var/datum/recipe/recipe = select_recipe(available_recipes,src) - var/obj/cooked - if (!recipe) - dirty += 1 - if (prob(max(10,dirty*5))) - if (!wzhzhzh(4)) - abort() - return - muck_start() - wzhzhzh(4) - muck_finish() - cooked = fail() - cooked.loc = src.loc - return - else if (has_extra_item()) - if (!wzhzhzh(4)) - abort() - return - broke() - cooked = fail() - cooked.loc = src.loc - return - else - if (!wzhzhzh(10)) - abort() - return - stop() - cooked = fail() - cooked.loc = src.loc - return - else - var/halftime = round(recipe.time/10/2) - if (!wzhzhzh(halftime)) - abort() - return - if (!wzhzhzh(halftime)) - abort() - cooked = fail() - cooked.loc = src.loc - return - cooked = recipe.make_food(src) - stop() - if(cooked) - cooked.loc = src.loc - for(var/i=1,iYou feel something small and sharp strike you!" @@ -321,7 +321,7 @@ myloc.overlays += flicker spawn(8) myloc.overlays -= flicker - del(flicker) + qdel(flicker) //flick("dart[rand(1,3)]",src) if("flame_burst") M << "\red A jet of fire comes out of nowhere!" @@ -332,7 +332,7 @@ myloc.overlays += flicker spawn(8) myloc.overlays -= flicker - del flicker + qdel(flicker) //flick("flameburst",src) if("plasma_gas") //spawn a bunch of plasma @@ -353,7 +353,7 @@ my_turf.density = 0 spawn(8) myloc.overlays -= flicker - del(flicker) + qdel(flicker) var/dist = rand(1,5) var/curtiles = 0 @@ -381,7 +381,7 @@ if(prob(90)) var/turf/T = get_turf(src) T.desc = pick("It looks a little dustier than the surrounding tiles.","It is somewhat ornate.","It looks a little darker than the surrounding tiles.") - del(src) + qdel(src) //50% chance of being a trap /obj/effect/step_trigger/trap/fifty @@ -395,4 +395,4 @@ else if(prob(10)) new /obj/effect/glowshroom(src.loc) - del(src) + qdel(src) diff --git a/code/modules/jungle/jungle_turfs.dm b/code/modules/jungle/jungle_turfs.dm index 3ae601693e9..ffc5391ed8f 100644 --- a/code/modules/jungle/jungle_turfs.dm +++ b/code/modules/jungle/jungle_turfs.dm @@ -53,7 +53,7 @@ New() ..() for(var/obj/structure/bush/B in src) - del B + qdel(B) /turf/unsimulated/jungle/proc/Spread(var/probability, var/prob_loss = 50) if(probability <= 0) @@ -123,7 +123,7 @@ /turf/unsimulated/jungle/water/New() ..() for(var/obj/structure/bush/B in src) - del(B) + qdel(B) /turf/unsimulated/jungle/water/Entered(atom/movable/O) ..() diff --git a/code/modules/library/lib_machines.dm b/code/modules/library/lib_machines.dm index fd4a79eed40..22f90482727 100644 --- a/code/modules/library/lib_machines.dm +++ b/code/modules/library/lib_machines.dm @@ -469,7 +469,7 @@ datum/borrowbook // Datum used to keep track of who has borrowed what when and f b.dat = O:info b.name = "Print Job #" + "[rand(100, 999)]" b.icon_state = "book[rand(1,7)]" - del(O) + qdel(O) else ..() /client/proc/delbook() diff --git a/code/modules/lighting/lighting_process.dm b/code/modules/lighting/lighting_process.dm index b8f777473f7..a0242f78b69 100644 --- a/code/modules/lighting/lighting_process.dm +++ b/code/modules/lighting/lighting_process.dm @@ -1,6 +1,9 @@ +var/global/datum/controller/process/lighting/lighting_controller + /datum/controller/process/lighting/setup() name = "lighting" schedule_interval = LIGHTING_INTERVAL + lighting_controller = src create_lighting_overlays() diff --git a/code/modules/mob/dead/observer/logout.dm b/code/modules/mob/dead/observer/logout.dm index 969f6574b9b..f80f0100cfc 100644 --- a/code/modules/mob/dead/observer/logout.dm +++ b/code/modules/mob/dead/observer/logout.dm @@ -4,4 +4,4 @@ ..() spawn(0) if(src && !key) //we've transferred to another mob. This ghost should be deleted. - del(src) + qdel(src) diff --git a/code/modules/mob/death.dm b/code/modules/mob/death.dm index e6107b4cca2..908d6510d03 100644 --- a/code/modules/mob/death.dm +++ b/code/modules/mob/death.dm @@ -21,8 +21,8 @@ if(client) respawnable_list += src spawn(15) - if(animation) del(animation) - if(src) del(src) + if(animation) qdel(animation) + if(src) qdel(src) //This is the proc for turning a mob into ash. Mostly a copy of gib code (above). @@ -48,8 +48,8 @@ if(client) respawnable_list += src spawn(15) - if(animation) del(animation) - if(src) del(src) + if(animation) qdel(animation) + if(src) qdel(src) /mob/proc/melt() death(1) @@ -71,8 +71,8 @@ if(client) respawnable_list += src spawn(15) - if(animation) del(animation) - if(src) del(src) + if(animation) qdel(animation) + if(src) qdel(src) /mob/proc/death(gibbed) diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm index 1f0c56d857e..90c1574c7eb 100644 --- a/code/modules/mob/inventory.dm +++ b/code/modules/mob/inventory.dm @@ -258,6 +258,6 @@ W.loc = src else if (del_on_fail) - del(W) + qdel(W) return equipped diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm index d6cf5225b29..ac7fe6b7222 100644 --- a/code/modules/mob/living/carbon/alien/alien.dm +++ b/code/modules/mob/living/carbon/alien/alien.dm @@ -266,7 +266,7 @@ Des: Removes all infected images from the alien. if (client) for(var/image/I in client.images) if(dd_hasprefix_case(I.icon_state, "infected")) - del(I) + qdel(I) return /mob/living/carbon/alien/canBeHandcuffed() diff --git a/code/modules/mob/living/carbon/alien/death.dm b/code/modules/mob/living/carbon/alien/death.dm index c72220790d1..40303b03543 100644 --- a/code/modules/mob/living/carbon/alien/death.dm +++ b/code/modules/mob/living/carbon/alien/death.dm @@ -16,8 +16,8 @@ dead_mob_list -= src spawn(15) - if(animation) del(animation) - if(src) del(src) + if(animation) qdel(animation) + if(src) qdel(src) /mob/living/carbon/alien/dust() death(1) @@ -37,8 +37,8 @@ dead_mob_list -= src spawn(15) - if(animation) del(animation) - if(src) del(src) + if(animation) qdel(animation) + if(src) qdel(src) /mob/living/carbon/alien/death(gibbed) if(stat == DEAD) return diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm index 839a0163b3c..201ab0e1f77 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm @@ -42,7 +42,7 @@ var/mob/living/carbon/alien/humanoid/queen/new_xeno = new(loc) mind.transfer_to(new_xeno) new_xeno.mind.name = new_xeno.name - del(src) + qdel(src) else src << "We already have an alive queen." return \ No newline at end of file diff --git a/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm b/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm index 549b2ce6c93..e3df53a681a 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm @@ -157,7 +157,7 @@ if (targeted_by && target_locked) overlays_standing[TARGETED_LAYER] = target_locked else if (!targeted_by && target_locked) - del(target_locked) + qdel(target_locked) if (!targeted_by) overlays_standing[TARGETED_LAYER] = null if(update_icons) update_icons() diff --git a/code/modules/mob/living/carbon/alien/larva/powers.dm b/code/modules/mob/living/carbon/alien/larva/powers.dm index a5655da1da5..a8cb230f9e7 100644 --- a/code/modules/mob/living/carbon/alien/larva/powers.dm +++ b/code/modules/mob/living/carbon/alien/larva/powers.dm @@ -53,7 +53,7 @@ else new_xeno.key = key new_xeno.mind.name = new_xeno.name - del(src) + qdel(src) return else src << "You are not fully grown." diff --git a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm index 68c67b0418c..e6f39f606fa 100644 --- a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm +++ b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm @@ -137,4 +137,4 @@ Des: Removes all images from the mob infected by this embryo if(alien.client) for(var/image/I in alien.client.images) if(dd_hasprefix_case(I.icon_state, "infected") && I.loc == affected_mob) - del(I) \ No newline at end of file + qdel(I) \ No newline at end of file diff --git a/code/modules/mob/living/carbon/brain/MMI.dm b/code/modules/mob/living/carbon/brain/MMI.dm index 937fe0a0ad7..5e6a471834d 100644 --- a/code/modules/mob/living/carbon/brain/MMI.dm +++ b/code/modules/mob/living/carbon/brain/MMI.dm @@ -50,7 +50,7 @@ name = "Man-Machine Interface: [brainmob.real_name]" icon_state = "mmi_full" alien = 0 - del(O) + qdel(O) locked = 1 diff --git a/code/modules/mob/living/carbon/brain/death.dm b/code/modules/mob/living/carbon/brain/death.dm index 24b900a7a2d..17bf26de838 100644 --- a/code/modules/mob/living/carbon/brain/death.dm +++ b/code/modules/mob/living/carbon/brain/death.dm @@ -34,10 +34,10 @@ dead_mob_list -= src if(container && istype(container, /obj/item/device/mmi)) - del(container)//Gets rid of the MMI if there is one + qdel(container)//Gets rid of the MMI if there is one if(loc) if(istype(loc,/obj/item/organ/brain)) - del(loc)//Gets rid of the brain item + qdel(loc)//Gets rid of the brain item spawn(15) - if(animation) del(animation) - if(src) del(src) \ No newline at end of file + if(animation) qdel(animation) + if(src) qdel(src) \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index 15a4229c49f..29dfa0aceed 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -37,8 +37,8 @@ s.start() spawn(15) - if(animation) del(animation) - if(src) del(src) + if(animation) qdel(animation) + if(src) qdel(src) /mob/living/carbon/human/dust() death(1) @@ -57,8 +57,8 @@ new /obj/effect/decal/remains/human(loc) spawn(15) - if(animation) del(animation) - if(src) del(src) + if(animation) qdel(animation) + if(src) qdel(src) /mob/living/carbon/human/melt() death(1) @@ -77,8 +77,8 @@ //new /obj/effect/decal/remains/human(loc) spawn(15) - if(animation) del(animation) - if(src) del(src) + if(animation) qdel(animation) + if(src) qdel(src) /mob/living/carbon/human/death(gibbed) if(stat == DEAD) return diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 3fabd2ef851..5949aa18f60 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -246,7 +246,7 @@ if (client.statpanel == "Status") if (internal) if (!internal.air_contents) - del(internal) + qdel(internal) else stat("Internal Atmosphere Info", internal.name) stat("Tank Pressure", internal.air_contents.return_pressure()) @@ -1205,7 +1205,7 @@ if(H.brainmob.real_name == src.real_name) if(H.brainmob.mind) H.brainmob.mind.transfer_to(src) - del(H) + qdel(H) @@ -1279,7 +1279,7 @@ .=..() if(clean_feet && !shoes && istype(feet_blood_DNA, /list) && feet_blood_DNA.len) feet_blood_color = null - del(feet_blood_DNA) + qdel(feet_blood_DNA) update_inv_shoes(1) return 1 diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm index 159ab81ad44..f6bc3b36f1d 100644 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm +++ b/code/modules/mob/living/carbon/human/human_attackhand.dm @@ -206,14 +206,14 @@ visible_message("\red [M] has broken [src]'s grip on [lgrab.affecting]!") talked = 1 spawn(1) - del(lgrab) + qdel(lgrab) if(istype(r_hand, /obj/item/weapon/grab)) var/obj/item/weapon/grab/rgrab = r_hand if(rgrab.affecting) visible_message("\red [M] has broken [src]'s grip on [rgrab.affecting]!") talked = 1 spawn(1) - del(rgrab) + qdel(rgrab) //End BubbleWrap if(!talked) //BubbleWrap diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index f3936682e98..bccf63c73de 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -247,7 +247,7 @@ emp_act else LAssailant = user - del(src) + qdel(src) var/obj/item/organ/external/affecting = get_organ(ran_zone(user.zone_sel.selecting)) if(!affecting || affecting.is_stump() || (affecting.status & ORGAN_DESTROYED)) @@ -505,6 +505,7 @@ emp_act return /mob/living/carbon/human/experience_pressure_difference(pressure_difference, direction) + playsound(src, 'sound/effects/space_wind.ogg', 50, 1) if(shoes) if(istype(shoes,/obj/item/clothing/shoes/magboots) && (shoes.flags & NOSLIP)) //TODO: Make a not-shit shoe var system to negate airflow. return 0 diff --git a/code/modules/mob/living/carbon/human/human_organs.dm b/code/modules/mob/living/carbon/human/human_organs.dm index defc3548317..193f8373242 100644 --- a/code/modules/mob/living/carbon/human/human_organs.dm +++ b/code/modules/mob/living/carbon/human/human_organs.dm @@ -139,7 +139,7 @@ spark_system.attach(src) spark_system.start() spawn(10) - del(spark_system) + qdel(spark_system) //Handles chem traces /mob/living/carbon/human/proc/handle_trace_chems() diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index c5760170c68..bc0504f29c9 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -42,7 +42,7 @@ if (equip_to_slot_if_possible(W, slots[slot], del_on_fail = 0)) return slot if (del_on_fail) - del(W) + qdel(W) return null /mob/living/carbon/human/proc/is_in_hands(var/typepath) @@ -353,9 +353,9 @@ /obj/effect/equip_e/New() if (!ticker) - del(src) + qdel(src) spawn(100) - del(src) + qdel(src) ..() return @@ -366,22 +366,22 @@ switch(place) if("mask") if (!( target.wear_mask )) - del(src) + qdel(src) if("l_hand") if (!( target.l_hand )) - del(src) + qdel(src) if("r_hand") if (!( target.r_hand )) - del(src) + qdel(src) if("suit") if (!( target.wear_suit )) - del(src) + qdel(src) if("uniform") if (!( target.w_uniform )) - del(src) + qdel(src) if("back") if (!( target.back )) - del(src) + qdel(src) if("syringe") return if("pill") @@ -394,10 +394,10 @@ return if("handcuff") if (!( target.handcuffed )) - del(src) + qdel(src) if("id") if ((!( target.wear_id ) || !( target.w_uniform ))) - del(src) + qdel(src) if("splints") var/count = 0 for(var/organ in list("l_leg","r_leg","l_arm","r_arm")) @@ -406,11 +406,11 @@ count = 1 break if(count == 0) - del(src) + qdel(src) return if("internal") if ((!( (istype(target.wear_mask, /obj/item/clothing/mask) && (istype(target.back, /obj/item/weapon/tank) || istype(target.belt, /obj/item/weapon/tank) || istype(target.s_store, /obj/item/weapon/tank)) && !( target.internal )) ) && !( target.internal ))) - del(src) + qdel(src) var/message=null if(target.frozen) @@ -557,7 +557,7 @@ message = "\red [source] is trying to empty [target]'s pockets!" if("CPR") if (!target.cpr_time) - del(src) + qdel(src) target.cpr_time = 0 message = "\red [source] is trying perform CPR on [target]!" if("id") @@ -668,13 +668,13 @@ It can still be worn/put on as normal. strip_item = target.shoes if("l_hand") if (istype(target, /obj/item/clothing/suit/straight_jacket)) - del(src) + qdel(src) slot_to_process = slot_l_hand if (target.l_hand) strip_item = target.l_hand if("r_hand") if (istype(target, /obj/item/clothing/suit/straight_jacket)) - del(src) + qdel(src) slot_to_process = slot_r_hand if (target.r_hand) strip_item = target.r_hand @@ -746,11 +746,11 @@ It can still be worn/put on as normal. S.add_fingerprint(source) if (!( istype(S, /obj/item/weapon/dnainjector) )) S.inuse = 0 - del(src) + qdel(src) S.inject(target, source) if (S.s_time >= world.time + 30) S.inuse = 0 - del(src) + qdel(src) S.s_time = world.time for(var/mob/O in viewers(source, null)) O.show_message("\red [source] injects [target] with the DNA Injector!", 1) @@ -815,7 +815,7 @@ It can still be worn/put on as normal. if(source && target) if(source.machine == target) target.show_inv(source) - del(src) + qdel(src) /mob/proc/get_item_by_slot(slot_id) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 951e9f03563..613f0ad99b3 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -64,17 +64,20 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc life_tick++ var/datum/gas_mixture/environment = loc.return_air() - in_stasis = istype(loc, /obj/structure/closet/body_bag/cryobag) && loc:opened == 0 - if(in_stasis) loc:used++ + if(istype(loc, /obj/structure/closet/body_bag/cryobag)) + var/obj/structure/closet/body_bag/cryobag/loc_as_cryobag = loc + if(!loc_as_cryobag.opened) + loc_as_cryobag.used++ + in_stasis = 1 - if(life_tick%30==15) + if(life_tick % 30 == 15) hud_updateflag = 1022 voice = GetVoice() //No need to update all of these procs if the guy is dead. if(stat != DEAD && !in_stasis) - if(mob_master.current_cycle%4==2 || failed_last_breath) //First, resolve location and get a breath + if(mob_master.current_cycle % 4 == 2 || failed_last_breath) //First, resolve location and get a breath breathe() //Only try to take a breath every 4 ticks, unless suffocating else //Still give containing object the chance to interact @@ -174,845 +177,847 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc return ONE_ATMOSPHERE - pressure_difference -/mob/living/carbon/human +/mob/living/carbon/human/proc/handle_disabilities() + if (disabilities & EPILEPSY) + if ((prob(1) && paralysis < 1)) + visible_message("[src] starts having a seizure!","You have a seizure!") + Paralyse(10) + Jitter(1000) - proc/handle_disabilities() - if (disabilities & EPILEPSY) - if ((prob(1) && paralysis < 1)) - src << "\red You have a seizure!" - for(var/mob/O in viewers(src, null)) - if(O == src) - continue - O.show_message(text("\red [src] starts having a seizure!"), 1) - Paralyse(10) - Jitter(1000) + // If we have the gene for being crazy, have random events. + if(dna.GetSEState(HALLUCINATIONBLOCK)) + if(prob(1) && hallucination < 1) + hallucination += 20 - // If we have the gene for being crazy, have random events. - if(dna.GetSEState(HALLUCINATIONBLOCK)) - if(prob(1) && hallucination < 1) - hallucination += 20 + if (disabilities & COUGHING) + if ((prob(5) && paralysis <= 1)) + drop_item() + emote("cough") + if (disabilities & TOURETTES) + speech_problem_flag = 1 + if ((prob(10) && paralysis <= 1)) + Stun(10) + switch(rand(1, 3)) + if(1) + emote("twitch") + if(2 to 3) + var/tourettes = pick("SHIT", "PISS", "FUCK", "CUNT", "COCKSUCKER", "MOTHERFUCKER", "TITS") + say("[prob(50) ? ";" : ""][tourettes]") + var/x_offset = pixel_x + rand(-2,2) //Should probably be moved into the twitch emote at some point. + var/y_offset = pixel_y + rand(-1,1) + animate(src, pixel_x = pixel_x + x_offset, pixel_y = pixel_y + y_offset, time = 1) + animate(pixel_x = initial(pixel_x) , pixel_y = initial(pixel_y), time = 1) + if (disabilities & NERVOUS) + speech_problem_flag = 1 + if (prob(10)) + stuttering = max(10, stuttering) - if (disabilities & COUGHING) - if ((prob(5) && paralysis <= 1)) - drop_item() - emote("cough") - if (disabilities & TOURETTES) + if (getBrainLoss() >= 60 && stat != 2) + speech_problem_flag = 1 + if (prob(3)) + switch(pick(1,2,3)) + if(1) + say(pick("IM A PONY NEEEEEEIIIIIIIIIGH", "without oxigen blob don't evoluate?", "CAPTAINS A COMDOM", "[pick("", "that damn traitor")] [pick("joerge", "george", "gorge", "gdoruge")] [pick("mellens", "melons", "mwrlins")] is grifing me HAL;P!!!", "can u give me [pick("telikesis","halk","eppilapse")]?", "THe saiyans screwed", "Bi is THE BEST OF BOTH WORLDS>", "I WANNA PET TEH monkeyS", "stop grifing me!!!!", "SOTP IT#")) + if(2) + say(pick("FUS RO DAH","fucking 4rries!", "stat me", ">my face", "roll it easy!", "waaaaaagh!!!", "red wonz go fasta", "FOR TEH EMPRAH", "lol2cat", "dem dwarfs man, dem dwarfs", "SPESS MAHREENS", "hwee did eet fhor khayosss", "lifelike texture ;_;", "luv can bloooom", "PACKETS!!!")) + if(3) + emote("drool") + + if(getBrainLoss() >= 100 && stat != 2) //you lapse into a coma and die without immediate aid; RIP. -Fox + Weaken(20) + losebreath += 10 + silent += 2 + + if(getBrainLoss() >= 120 && stat != 2) //they died from stupidity--literally. -Fox + visible_message("[src] goes limp, their facial expression utterly blank.") + death() + +/mob/living/carbon/human/proc/handle_stasis_bag() + // Handle side effects from stasis bag + if(in_stasis) + // First off, there's no oxygen supply, so the mob will slowly take brain damage + adjustBrainLoss(0.1) + + // Next, the method to induce stasis has some adverse side-effects, manifesting + // as cloneloss + adjustCloneLoss(0.1) + +/mob/living/carbon/human/proc/handle_mutations_and_radiation() + + if(species.flags & IS_SYNTHETIC) //Robots don't suffer from mutations or radloss. + return + + if(getFireLoss()) + if((RESIST_HEAT in mutations) || (prob(1))) + heal_organ_damage(0,1) + + + for(var/datum/dna/gene/gene in dna_genes) + if(!gene.block) + continue + if(gene.is_active(src)) + /* if (prob(10) && prob(gene.instability)) + adjustCloneLoss(1) */ speech_problem_flag = 1 - if ((prob(10) && paralysis <= 1)) - Stun(10) - switch(rand(1, 3)) - if(1) - emote("twitch") - if(2 to 3) - var/tourettes = pick("SHIT", "PISS", "FUCK", "CUNT", "COCKSUCKER", "MOTHERFUCKER", "TITS") - say("[prob(50) ? ";" : ""][tourettes]") - var/x_offset = pixel_x + rand(-2,2) //Should probably be moved into the twitch emote at some point. - var/y_offset = pixel_y + rand(-1,1) - animate(src, pixel_x = pixel_x + x_offset, pixel_y = pixel_y + y_offset, time = 1) - animate(pixel_x = initial(pixel_x) , pixel_y = initial(pixel_y), time = 1) - if (disabilities & NERVOUS) - speech_problem_flag = 1 - if (prob(10)) - stuttering = max(10, stuttering) + gene.OnMobLife(src) - if (getBrainLoss() >= 60 && stat != 2) - speech_problem_flag = 1 - if (prob(3)) - switch(pick(1,2,3)) - if(1) - say(pick("IM A PONY NEEEEEEIIIIIIIIIGH", "without oxigen blob don't evoluate?", "CAPTAINS A COMDOM", "[pick("", "that damn traitor")] [pick("joerge", "george", "gorge", "gdoruge")] [pick("mellens", "melons", "mwrlins")] is grifing me HAL;P!!!", "can u give me [pick("telikesis","halk","eppilapse")]?", "THe saiyans screwed", "Bi is THE BEST OF BOTH WORLDS>", "I WANNA PET TEH monkeyS", "stop grifing me!!!!", "SOTP IT#")) - if(2) - say(pick("FUS RO DAH","fucking 4rries!", "stat me", ">my face", "roll it easy!", "waaaaaagh!!!", "red wonz go fasta", "FOR TEH EMPRAH", "lol2cat", "dem dwarfs man, dem dwarfs", "SPESS MAHREENS", "hwee did eet fhor khayosss", "lifelike texture ;_;", "luv can bloooom", "PACKETS!!!")) - if(3) - emote("drool") + if (radiation) - if(getBrainLoss() >= 100 && stat != 2) //you lapse into a coma and die without immediate aid; RIP. -Fox - Weaken(20) - losebreath += 10 - silent += 2 - - if(getBrainLoss() >= 120 && stat != 2) //they died from stupidity--literally. -Fox - visible_message("[src] goes limp, their facial expression utterly blank.") - death() - - proc/handle_stasis_bag() - // Handle side effects from stasis bag - if(in_stasis) - // First off, there's no oxygen supply, so the mob will slowly take brain damage - adjustBrainLoss(0.1) - - // Next, the method to induce stasis has some adverse side-effects, manifesting - // as cloneloss - adjustCloneLoss(0.1) - - proc/handle_mutations_and_radiation() - - if(species.flags & IS_SYNTHETIC) //Robots don't suffer from mutations or radloss. + if((locate(src.internal_organs_by_name["resonant crystal"]) in src.internal_organs)) + var/rads = radiation/25 + radiation -= rads + radiation -= 0.1 + reagents.add_reagent("radium", rads/10) + if( prob(10) ) + src << "You feel relaxed." return - if(getFireLoss()) - if((RESIST_HEAT in mutations) || (prob(1))) - heal_organ_damage(0,1) + if (radiation > 100) + radiation = 100 + if(!(species.flags & RAD_ABSORB)) + Weaken(10) + if(!lying) + src << "You feel weak." + emote("collapse") + if (radiation < 0) + radiation = 0 - for(var/datum/dna/gene/gene in dna_genes) - if(!gene.block) - continue - if(gene.is_active(src)) - /* if (prob(10) && prob(gene.instability)) - adjustCloneLoss(1) */ - speech_problem_flag = 1 - gene.OnMobLife(src) - - if (radiation) - - if((locate(src.internal_organs_by_name["resonant crystal"]) in src.internal_organs)) + else + if(species.flags & RAD_ABSORB) var/rads = radiation/25 radiation -= rads - radiation -= 0.1 - reagents.add_reagent("radium", rads/10) - if( prob(10) ) - src << "\blue You feel relaxed." + nutrition += rads + adjustBruteLoss(-(rads)) + adjustOxyLoss(-(rads)) + adjustToxLoss(-(rads)) + updatehealth() return - if (radiation > 100) - radiation = 100 - if(!(species.flags & RAD_ABSORB)) - Weaken(10) - if(!lying) - src << "\red You feel weak." - emote("collapse") - - if (radiation < 0) - radiation = 0 - - else - if(species.flags & RAD_ABSORB) - var/rads = radiation/25 - radiation -= rads - nutrition += rads - adjustBruteLoss(-(rads)) - adjustOxyLoss(-(rads)) - adjustToxLoss(-(rads)) - updatehealth() - return - - var/damage = 0 - switch(radiation) - if(0 to 49) - radiation-- - if(prob(25)) - adjustToxLoss(1) - damage = 1 - updatehealth() - - if(50 to 74) - radiation -= 2 - damage = 1 + var/damage = 0 + switch(radiation) + if(0 to 49) + radiation-- + if(prob(25)) adjustToxLoss(1) - if(prob(5)) - radiation -= 5 - Weaken(3) - if(!lying) - src << "\red You feel weak." - emote("collapse") + damage = 1 updatehealth() - if(75 to 100) - radiation -= 3 - adjustToxLoss(3) - damage = 3 - if(prob(1)) - src << "\red You mutate!" - randmutb(src) - domutcheck(src,null) - emote("gasp") - updatehealth() - - else + if(50 to 74) + radiation -= 2 + damage = 1 + adjustToxLoss(1) + if(prob(5)) radiation -= 5 - adjustToxLoss(5) - damage = 5 - if(prob(1)) - src << "\red You mutate!" - randmutb(src) - domutcheck(src,null) - emote("gasp") - updatehealth() + Weaken(3) + if(!lying) + src << "You feel weak." + emote("collapse") + updatehealth() - if(damage && organs.len) - var/obj/item/organ/external/O = pick(organs) - if(istype(O)) O.add_autopsy_data("Radiation Poisoning", damage) + if(75 to 100) + radiation -= 3 + adjustToxLoss(3) + damage = 3 + if(prob(1)) + src << "You mutate!" + randmutb(src) + domutcheck(src,null) + emote("gasp") + updatehealth() - proc/breathe() - if(reagents.has_reagent("lexorin")) return - if(NO_BREATH in mutations) return // No breath mutation means no breathing. - if(istype(loc, /obj/machinery/atmospherics/unary/cryo_cell)) return - if(species && (species.flags & NO_BREATHE)) return + else + radiation -= 5 + adjustToxLoss(5) + damage = 5 + if(prob(1)) + src << "You mutate!" + randmutb(src) + domutcheck(src,null) + emote("gasp") + updatehealth() - var/datum/gas_mixture/environment = loc.return_air() - var/datum/gas_mixture/breath + if(damage && organs.len) + var/obj/item/organ/external/O = pick(organs) + if(istype(O)) O.add_autopsy_data("Radiation Poisoning", damage) - // HACK NEED CHANGING LATER - if(health <= config.health_threshold_crit) - losebreath++ +/mob/living/carbon/human/proc/breathe() + if(reagents.has_reagent("lexorin")) return + if(NO_BREATH in mutations) return // No breath mutation means no breathing. + if(istype(loc, /obj/machinery/atmospherics/unary/cryo_cell)) return + if(species && (species.flags & NO_BREATHE)) return - if(losebreath>0) //Suffocating so do not take a breath - losebreath-- - if (prob(10)) //Gasp per 10 ticks? Sounds about right. - spawn emote("gasp") + var/datum/gas_mixture/environment = loc.return_air() + var/datum/gas_mixture/breath + + // HACK NEED CHANGING LATER + if(health <= config.health_threshold_crit) + losebreath++ + + if(losebreath>0) //Suffocating so do not take a breath + losebreath-- + if (prob(10)) //Gasp per 10 ticks? Sounds about right. + spawn emote("gasp") + if(istype(loc, /obj/)) + var/obj/location_as_object = loc + location_as_object.handle_internal_lifeform(src, 0) + + else + //First, check for air from internal atmosphere (using an air tank and mask generally) + breath = get_breath_from_internal(BREATH_VOLUME) // Super hacky -- TLE + //breath = get_breath_from_internal(0.5) // Manually setting to old BREATH_VOLUME amount -- TLE + + //No breath from internal atmosphere so get breath from location + if(!breath) + if(isobj(loc)) + var/obj/location_as_object = loc + breath = location_as_object.handle_internal_lifeform(src, BREATH_MOLES) + else if(isturf(loc)) + var/breath_moles = 0 + /*if(environment.return_pressure() > ONE_ATMOSPHERE) + // Loads of air around (pressure effect will be handled elsewhere), so lets just take a enough to fill our lungs at normal atmos pressure (using n = Pv/RT) + breath_moles = (ONE_ATMOSPHERE*BREATH_VOLUME/R_IDEAL_GAS_EQUATION*environment.temperature) + else*/ + // Not enough air around, take a percentage of what's there to model this properly + breath_moles = environment.total_moles()*BREATH_PERCENTAGE + + breath = loc.remove_air(breath_moles) + + if(!is_lung_ruptured()) + if(!breath || breath.total_moles() < BREATH_MOLES / 5 || breath.total_moles() > BREATH_MOLES * 5) + if(prob(5)) + rupture_lung() + + else //Still give containing object the chance to interact if(istype(loc, /obj/)) var/obj/location_as_object = loc location_as_object.handle_internal_lifeform(src, 0) - else - //First, check for air from internal atmosphere (using an air tank and mask generally) - breath = get_breath_from_internal(BREATH_VOLUME) // Super hacky -- TLE - //breath = get_breath_from_internal(0.5) // Manually setting to old BREATH_VOLUME amount -- TLE + handle_breath(breath) - //No breath from internal atmosphere so get breath from location - if(!breath) - if(isobj(loc)) - var/obj/location_as_object = loc - breath = location_as_object.handle_internal_lifeform(src, BREATH_MOLES) - else if(isturf(loc)) - var/breath_moles = 0 - /*if(environment.return_pressure() > ONE_ATMOSPHERE) - // Loads of air around (pressure effect will be handled elsewhere), so lets just take a enough to fill our lungs at normal atmos pressure (using n = Pv/RT) - breath_moles = (ONE_ATMOSPHERE*BREATH_VOLUME/R_IDEAL_GAS_EQUATION*environment.temperature) - else*/ - // Not enough air around, take a percentage of what's there to model this properly - breath_moles = environment.total_moles()*BREATH_PERCENTAGE + if(species.name=="Plasmaman") //this is stupid as fuck + // Check if we're wearing our biosuit and mask. + if (!istype(wear_suit,/obj/item/clothing/suit/space/eva/plasmaman) || !istype(head,/obj/item/clothing/head/helmet/space/eva/plasmaman)) + //testing("Plasmaman [src] leakin'. coverflags=[cover_flags]") + // OH FUCK HE LEAKIN'. + // This was OP. + //environment.adjust(tx = environment.total_moles()*BREATH_PERCENTAGE) // About one breath's worth. (I know we aren't breathing it out, but this should be about the right amount) + src << "Your body reacts with the atmosphere and bursts into flame!" + adjust_fire_stacks(0.5) + IgniteMob() - breath = loc.remove_air(breath_moles) + if(breath) + loc.assume_air(breath) - if(!is_lung_ruptured()) - if(!breath || breath.total_moles() < BREATH_MOLES / 5 || breath.total_moles() > BREATH_MOLES * 5) - if(prob(5)) - rupture_lung() - - else //Still give containing object the chance to interact - if(istype(loc, /obj/)) - var/obj/location_as_object = loc - location_as_object.handle_internal_lifeform(src, 0) - - handle_breath(breath) - - if(species.name=="Plasmaman") //this is stupid as fuck - // Check if we're wearing our biosuit and mask. - if (!istype(wear_suit,/obj/item/clothing/suit/space/eva/plasmaman) || !istype(head,/obj/item/clothing/head/helmet/space/eva/plasmaman)) - //testing("Plasmaman [src] leakin'. coverflags=[cover_flags]") - // OH FUCK HE LEAKIN'. - // This was OP. - //environment.adjust(tx = environment.total_moles()*BREATH_PERCENTAGE) // About one breath's worth. (I know we aren't breathing it out, but this should be about the right amount) - src << "Your body reacts with the atmosphere and bursts into flame!" - adjust_fire_stacks(0.5) - IgniteMob() - - if(breath) - loc.assume_air(breath) - - //spread some viruses while we are at it - if (virus2.len > 0) - if (prob(10) && get_infection_chance(src)) + //spread some viruses while we are at it + if (virus2.len > 0) + if (prob(10) && get_infection_chance(src)) // log_debug("[src] : Exhaling some viruses") - for(var/mob/living/carbon/M in view(1,src)) - src.spread_disease_to(M) + for(var/mob/living/carbon/M in view(1,src)) + src.spread_disease_to(M) // USED IN DEATHWHISPERS - proc/isInCrit() - // Health is in deep shit and we're not already dead - return health <= 0 && stat != 2 +/mob/living/carbon/human/proc/isInCrit() + // Health is in deep shit and we're not already dead + return health <= 0 && stat != 2 - proc/handle_breath(var/datum/gas_mixture/breath) - if(status_flags & GODMODE) - return 0 - - if(!breath || (breath.total_moles() == 0) || suiciding) - var/oxyloss = 0 - if(suiciding) - oxyloss = 2 - adjustOxyLoss(oxyloss)//If you are suiciding, you should die a little bit faster - failed_last_breath = 1 - oxygen_alert = max(oxygen_alert, 1) - return 0 - if(health > 0) - oxyloss = HUMAN_MAX_OXYLOSS - adjustOxyLoss(oxyloss) - failed_last_breath = 1 - else - oxyloss = HUMAN_CRIT_MAX_OXYLOSS - adjustOxyLoss(oxyloss) - failed_last_breath = 1 - - var/obj/item/organ/external/affected = get_organ("chest") - affected.add_autopsy_data("Suffocation", oxyloss) +/mob/living/carbon/human/proc/handle_breath(var/datum/gas_mixture/breath) + if(status_flags & GODMODE) + return 0 + if(!breath || (breath.total_moles() == 0) || suiciding) + var/oxyloss = 0 + if(suiciding) + oxyloss = 2 + adjustOxyLoss(oxyloss)//If you are suiciding, you should die a little bit faster + failed_last_breath = 1 oxygen_alert = max(oxygen_alert, 1) - return 0 + if(health > 0) + oxyloss = HUMAN_MAX_OXYLOSS + adjustOxyLoss(oxyloss) + failed_last_breath = 1 + else + oxyloss = HUMAN_CRIT_MAX_OXYLOSS + adjustOxyLoss(oxyloss) + failed_last_breath = 1 - return species.handle_breath(breath, src) + var/obj/item/organ/external/affected = get_organ("chest") + affected.add_autopsy_data("Suffocation", oxyloss) - proc/handle_environment(datum/gas_mixture/environment) - if(!environment) - return + oxygen_alert = max(oxygen_alert, 1) - var/loc_temp = get_temperature(environment) - //world << "Loc temp: [loc_temp] - Body temp: [bodytemperature] - Fireloss: [getFireLoss()] - Thermal protection: [get_thermal_protection()] - Fire protection: [thermal_protection + add_fire_protection(loc_temp)] - Heat capacity: [environment_heat_capacity] - Location: [loc] - src: [src]" + return 0 - //Body temperature is adjusted in two steps. Firstly your body tries to stabilize itself a bit. - if(stat != 2) - stabilize_temperature_from_calories() + return species.handle_breath(breath, src) - //After then, it reacts to the surrounding atmosphere based on your thermal protection - if(!on_fire) //If you're on fire, you do not heat up or cool down based on surrounding gases - if(loc_temp < bodytemperature) - //Place is colder than we are - var/thermal_protection = get_cold_protection(loc_temp) //This returns a 0 - 1 value, which corresponds to the percentage of protection based on what you're wearing and what you're exposed to. - if(thermal_protection < 1) - bodytemperature += min((1-thermal_protection) * ((loc_temp - bodytemperature) / BODYTEMP_COLD_DIVISOR), BODYTEMP_COOLING_MAX) - else - //Place is hotter than we are - var/thermal_protection = get_heat_protection(loc_temp) //This returns a 0 - 1 value, which corresponds to the percentage of protection based on what you're wearing and what you're exposed to. - if(thermal_protection < 1) - bodytemperature += min((1-thermal_protection) * ((loc_temp - bodytemperature) / BODYTEMP_HEAT_DIVISOR), BODYTEMP_HEATING_MAX) +/mob/living/carbon/human/proc/handle_environment(datum/gas_mixture/environment) + if(!environment) + return - // +/- 50 degrees from 310.15K is the 'safe' zone, where no damage is dealt. - if(bodytemperature > species.heat_level_1) - //Body temperature is too hot. - fire_alert = max(fire_alert, 1) - if(status_flags & GODMODE) return 1 //godmode + var/loc_temp = get_temperature(environment) + //world << "Loc temp: [loc_temp] - Body temp: [bodytemperature] - Fireloss: [getFireLoss()] - Thermal protection: [get_thermal_protection()] - Fire protection: [thermal_protection + add_fire_protection(loc_temp)] - Heat capacity: [environment_heat_capacity] - Location: [loc] - src: [src]" - if(bodytemperature >= species.heat_level_1 && bodytemperature <= species.heat_level_2) - take_overall_damage(burn=HEAT_DAMAGE_LEVEL_1, used_weapon = "High Body Temperature") - fire_alert = max(fire_alert, 2) - if(bodytemperature > species.heat_level_2 && bodytemperature <= species.heat_level_3) - take_overall_damage(burn=HEAT_DAMAGE_LEVEL_2, used_weapon = "High Body Temperature") - fire_alert = max(fire_alert, 2) - if(bodytemperature > species.heat_level_3 && bodytemperature < INFINITY) - if(on_fire) - take_overall_damage(burn=HEAT_DAMAGE_LEVEL_3, used_weapon = "Fire") - fire_alert = max(fire_alert, 2) - else - take_overall_damage(burn=HEAT_DAMAGE_LEVEL_2, used_weapon = "High Body Temperature") - fire_alert = max(fire_alert, 2) + //Body temperature is adjusted in two steps. Firstly your body tries to stabilize itself a bit. + if(stat != 2) + stabilize_temperature_from_calories() - else if(bodytemperature < species.cold_level_1) - fire_alert = max(fire_alert, 1) - if(status_flags & GODMODE) return 1 //godmode + //After then, it reacts to the surrounding atmosphere based on your thermal protection + if(!on_fire) //If you're on fire, you do not heat up or cool down based on surrounding gases + if(loc_temp < bodytemperature) + //Place is colder than we are + var/thermal_protection = get_cold_protection(loc_temp) //This returns a 0 - 1 value, which corresponds to the percentage of protection based on what you're wearing and what you're exposed to. + if(thermal_protection < 1) + bodytemperature += min((1-thermal_protection) * ((loc_temp - bodytemperature) / BODYTEMP_COLD_DIVISOR), BODYTEMP_COOLING_MAX) + else + //Place is hotter than we are + var/thermal_protection = get_heat_protection(loc_temp) //This returns a 0 - 1 value, which corresponds to the percentage of protection based on what you're wearing and what you're exposed to. + if(thermal_protection < 1) + bodytemperature += min((1-thermal_protection) * ((loc_temp - bodytemperature) / BODYTEMP_HEAT_DIVISOR), BODYTEMP_HEATING_MAX) - if(stat == DEAD) return 1 //ZomgPonies -- No need for cold burn damage if dead - - if(!istype(loc, /obj/machinery/atmospherics/unary/cryo_cell)) - if(bodytemperature >= species.cold_level_2 && bodytemperature <= species.cold_level_1) - take_overall_damage(burn=COLD_DAMAGE_LEVEL_1, used_weapon = "Low Body Temperature") - fire_alert = max(fire_alert, 1) - if(bodytemperature >= species.cold_level_3 && bodytemperature < species.cold_level_2) - take_overall_damage(burn=COLD_DAMAGE_LEVEL_2, used_weapon = "Low Body Temperature") - fire_alert = max(fire_alert, 1) - if(bodytemperature > -INFINITY && bodytemperature < species.cold_level_3) - take_overall_damage(burn=COLD_DAMAGE_LEVEL_3, used_weapon = "Low Body Temperature") - fire_alert = max(fire_alert, 1) - - // Account for massive pressure differences. Done by Polymorph - // Made it possible to actually have something that can protect against high pressure... Done by Errorage. Polymorph now has an axe sticking from his head for his previous hardcoded nonsense! - - var/pressure = environment.return_pressure() - var/adjusted_pressure = calculate_affecting_pressure(pressure) //Returns how much pressure actually affects the mob. + // +/- 50 degrees from 310.15K is the 'safe' zone, where no damage is dealt. + if(bodytemperature > species.heat_level_1) + //Body temperature is too hot. + fire_alert = max(fire_alert, 1) if(status_flags & GODMODE) return 1 //godmode - if(adjusted_pressure >= species.hazard_high_pressure) - var/pressure_damage = min( ( (adjusted_pressure / species.hazard_high_pressure) -1 )*PRESSURE_DAMAGE_COEFFICIENT , MAX_HIGH_PRESSURE_DAMAGE) - take_overall_damage(brute=pressure_damage, used_weapon = "High Pressure") - pressure_alert = 2 - else if(adjusted_pressure >= species.warning_high_pressure) - pressure_alert = 1 - else if(adjusted_pressure >= species.warning_low_pressure) - pressure_alert = 0 - else if(adjusted_pressure >= species.hazard_low_pressure) + if(bodytemperature >= species.heat_level_1 && bodytemperature <= species.heat_level_2) + take_overall_damage(burn=HEAT_DAMAGE_LEVEL_1, used_weapon = "High Body Temperature") + fire_alert = max(fire_alert, 2) + if(bodytemperature > species.heat_level_2 && bodytemperature <= species.heat_level_3) + take_overall_damage(burn=HEAT_DAMAGE_LEVEL_2, used_weapon = "High Body Temperature") + fire_alert = max(fire_alert, 2) + if(bodytemperature > species.heat_level_3 && bodytemperature < INFINITY) + if(on_fire) + take_overall_damage(burn=HEAT_DAMAGE_LEVEL_3, used_weapon = "Fire") + fire_alert = max(fire_alert, 2) + else + take_overall_damage(burn=HEAT_DAMAGE_LEVEL_2, used_weapon = "High Body Temperature") + fire_alert = max(fire_alert, 2) + + else if(bodytemperature < species.cold_level_1) + fire_alert = max(fire_alert, 1) + if(status_flags & GODMODE) return 1 //godmode + + if(stat == DEAD) return 1 //ZomgPonies -- No need for cold burn damage if dead + + if(!istype(loc, /obj/machinery/atmospherics/unary/cryo_cell)) + if(bodytemperature >= species.cold_level_2 && bodytemperature <= species.cold_level_1) + take_overall_damage(burn=COLD_DAMAGE_LEVEL_1, used_weapon = "Low Body Temperature") + fire_alert = max(fire_alert, 1) + if(bodytemperature >= species.cold_level_3 && bodytemperature < species.cold_level_2) + take_overall_damage(burn=COLD_DAMAGE_LEVEL_2, used_weapon = "Low Body Temperature") + fire_alert = max(fire_alert, 1) + if(bodytemperature > -INFINITY && bodytemperature < species.cold_level_3) + take_overall_damage(burn=COLD_DAMAGE_LEVEL_3, used_weapon = "Low Body Temperature") + fire_alert = max(fire_alert, 1) + + // Account for massive pressure differences. Done by Polymorph + // Made it possible to actually have something that can protect against high pressure... Done by Errorage. Polymorph now has an axe sticking from his head for his previous hardcoded nonsense! + + var/pressure = environment.return_pressure() + var/adjusted_pressure = calculate_affecting_pressure(pressure) //Returns how much pressure actually affects the mob. + if(status_flags & GODMODE) return 1 //godmode + + if(adjusted_pressure >= species.hazard_high_pressure) + var/pressure_damage = min( ( (adjusted_pressure / species.hazard_high_pressure) -1 )*PRESSURE_DAMAGE_COEFFICIENT , MAX_HIGH_PRESSURE_DAMAGE) + take_overall_damage(brute=pressure_damage, used_weapon = "High Pressure") + pressure_alert = 2 + else if(adjusted_pressure >= species.warning_high_pressure) + pressure_alert = 1 + else if(adjusted_pressure >= species.warning_low_pressure) + pressure_alert = 0 + else if(adjusted_pressure >= species.hazard_low_pressure) + pressure_alert = -1 + else + if(RESIST_COLD in mutations) pressure_alert = -1 else - if(RESIST_COLD in mutations) - pressure_alert = -1 - else - take_overall_damage(brute=LOW_PRESSURE_DAMAGE, used_weapon = "Low Pressure") - pressure_alert = -2 + take_overall_damage(brute=LOW_PRESSURE_DAMAGE, used_weapon = "Low Pressure") + pressure_alert = -2 - return + return - ///FIRE CODE - handle_fire() - if(..()) - return - var/thermal_protection = 0 //Simple check to estimate how protected we are against multiple temperatures - if(wear_suit) - if(wear_suit.max_heat_protection_temperature >= FIRE_SUIT_MAX_TEMP_PROTECT) - thermal_protection += (wear_suit.max_heat_protection_temperature*0.7) - if(head) - if(head.max_heat_protection_temperature >= FIRE_HELM_MAX_TEMP_PROTECT) - thermal_protection += (head.max_heat_protection_temperature*THERMAL_PROTECTION_HEAD) - thermal_protection = round(thermal_protection) - if(thermal_protection >= FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT) - return - if(thermal_protection >= FIRE_SUIT_MAX_TEMP_PROTECT) - bodytemperature += 11 - return - else - bodytemperature += BODYTEMP_HEATING_MAX +///FIRE CODE +/mob/living/carbon/human/handle_fire() + if(..()) return - //END FIRE CODE + var/thermal_protection = 0 //Simple check to estimate how protected we are against multiple temperatures + if(wear_suit) + if(wear_suit.max_heat_protection_temperature >= FIRE_SUIT_MAX_TEMP_PROTECT) + thermal_protection += (wear_suit.max_heat_protection_temperature*0.7) + if(head) + if(head.max_heat_protection_temperature >= FIRE_HELM_MAX_TEMP_PROTECT) + thermal_protection += (head.max_heat_protection_temperature*THERMAL_PROTECTION_HEAD) + thermal_protection = round(thermal_protection) + if(thermal_protection >= FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT) + return + if(thermal_protection >= FIRE_SUIT_MAX_TEMP_PROTECT) + bodytemperature += 11 + return + else + bodytemperature += BODYTEMP_HEATING_MAX + return +//END FIRE CODE - proc/handle_wetness() - if(mob_master.current_cycle%20==2) //dry off a bit once every 20 ticks or so - wetlevel = max(wetlevel - 1,0) - return +/mob/living/carbon/human/proc/handle_wetness() + if(mob_master.current_cycle%20==2) //dry off a bit once every 20 ticks or so + wetlevel = max(wetlevel - 1,0) + return /* - proc/adjust_body_temperature(current, loc_temp, boost) - var/temperature = current - var/difference = abs(current-loc_temp) //get difference - var/increments// = difference/10 //find how many increments apart they are - if(difference > 50) - increments = difference/5 - else - increments = difference/10 - var/change = increments*boost // Get the amount to change by (x per increment) - var/temp_change - if(current < loc_temp) - temperature = min(loc_temp, temperature+change) - else if(current > loc_temp) - temperature = max(loc_temp, temperature-change) - temp_change = (temperature - current) - return temp_change +/mob/living/carbon/human/proc/adjust_body_temperature(current, loc_temp, boost) + var/temperature = current + var/difference = abs(current-loc_temp) //get difference + var/increments// = difference/10 //find how many increments apart they are + if(difference > 50) + increments = difference/5 + else + increments = difference/10 + var/change = increments*boost // Get the amount to change by (x per increment) + var/temp_change + if(current < loc_temp) + temperature = min(loc_temp, temperature+change) + else if(current > loc_temp) + temperature = max(loc_temp, temperature-change) + temp_change = (temperature - current) + return temp_change */ - proc/stabilize_temperature_from_calories() - if(bodytemperature <= species.cold_level_1) //260.15 is 310.15 - 50, the temperature where you start to feel effects. - if(nutrition >= 2) //If we are very, very cold we'll use up quite a bit of nutriment to heat us up. - nutrition -= 2 - var/body_temperature_difference = species.body_temperature - bodytemperature - bodytemperature += max((body_temperature_difference / BODYTEMP_AUTORECOVERY_DIVISOR), BODYTEMP_AUTORECOVERY_MINIMUM) - if(bodytemperature >= species.cold_level_1 && bodytemperature <= species.heat_level_1) - var/body_temperature_difference = species.body_temperature - bodytemperature - bodytemperature += body_temperature_difference / BODYTEMP_AUTORECOVERY_DIVISOR - if(bodytemperature >= species.heat_level_1) //360.15 is 310.15 + 50, the temperature where you start to feel effects. - //We totally need a sweat system cause it totally makes sense...~ - var/body_temperature_difference = species.body_temperature - bodytemperature - bodytemperature += min((body_temperature_difference / BODYTEMP_AUTORECOVERY_DIVISOR), -BODYTEMP_AUTORECOVERY_MINIMUM) //We're dealing with negative numbers +/mob/living/carbon/human/proc/stabilize_temperature_from_calories() + if(bodytemperature <= species.cold_level_1) //260.15 is 310.15 - 50, the temperature where you start to feel effects. + if(nutrition >= 2) //If we are very, very cold we'll use up quite a bit of nutriment to heat us up. + nutrition -= 2 + var/body_temperature_difference = species.body_temperature - bodytemperature + bodytemperature += max((body_temperature_difference / BODYTEMP_AUTORECOVERY_DIVISOR), BODYTEMP_AUTORECOVERY_MINIMUM) + if(bodytemperature >= species.cold_level_1 && bodytemperature <= species.heat_level_1) + var/body_temperature_difference = species.body_temperature - bodytemperature + bodytemperature += body_temperature_difference / BODYTEMP_AUTORECOVERY_DIVISOR + if(bodytemperature >= species.heat_level_1) //360.15 is 310.15 + 50, the temperature where you start to feel effects. + //We totally need a sweat system cause it totally makes sense...~ + var/body_temperature_difference = species.body_temperature - bodytemperature + bodytemperature += min((body_temperature_difference / BODYTEMP_AUTORECOVERY_DIVISOR), -BODYTEMP_AUTORECOVERY_MINIMUM) //We're dealing with negative numbers //This proc returns a number made up of the flags for body parts which you are protected on. (such as HEAD, UPPER_TORSO, LOWER_TORSO, etc. See setup.dm for the full list) - proc/get_heat_protection_flags(temperature) //Temperature is the temperature you're being exposed to. - var/thermal_protection_flags = 0 - //Handle normal clothing - if(head) - if(head.max_heat_protection_temperature && head.max_heat_protection_temperature >= temperature) - thermal_protection_flags |= head.heat_protection - if(wear_suit) - if(wear_suit.max_heat_protection_temperature && wear_suit.max_heat_protection_temperature >= temperature) - thermal_protection_flags |= wear_suit.heat_protection - if(w_uniform) - if(w_uniform.max_heat_protection_temperature && w_uniform.max_heat_protection_temperature >= temperature) - thermal_protection_flags |= w_uniform.heat_protection - if(shoes) - if(shoes.max_heat_protection_temperature && shoes.max_heat_protection_temperature >= temperature) - thermal_protection_flags |= shoes.heat_protection - if(gloves) - if(gloves.max_heat_protection_temperature && gloves.max_heat_protection_temperature >= temperature) - thermal_protection_flags |= gloves.heat_protection - if(wear_mask) - if(wear_mask.max_heat_protection_temperature && wear_mask.max_heat_protection_temperature >= temperature) - thermal_protection_flags |= wear_mask.heat_protection +/mob/living/carbon/human/proc/get_heat_protection_flags(temperature) //Temperature is the temperature you're being exposed to. + var/thermal_protection_flags = 0 + //Handle normal clothing + if(head) + if(head.max_heat_protection_temperature && head.max_heat_protection_temperature >= temperature) + thermal_protection_flags |= head.heat_protection + if(wear_suit) + if(wear_suit.max_heat_protection_temperature && wear_suit.max_heat_protection_temperature >= temperature) + thermal_protection_flags |= wear_suit.heat_protection + if(w_uniform) + if(w_uniform.max_heat_protection_temperature && w_uniform.max_heat_protection_temperature >= temperature) + thermal_protection_flags |= w_uniform.heat_protection + if(shoes) + if(shoes.max_heat_protection_temperature && shoes.max_heat_protection_temperature >= temperature) + thermal_protection_flags |= shoes.heat_protection + if(gloves) + if(gloves.max_heat_protection_temperature && gloves.max_heat_protection_temperature >= temperature) + thermal_protection_flags |= gloves.heat_protection + if(wear_mask) + if(wear_mask.max_heat_protection_temperature && wear_mask.max_heat_protection_temperature >= temperature) + thermal_protection_flags |= wear_mask.heat_protection - return thermal_protection_flags + return thermal_protection_flags - proc/get_heat_protection(temperature) //Temperature is the temperature you're being exposed to. - var/thermal_protection_flags = get_heat_protection_flags(temperature) +/mob/living/carbon/human/proc/get_heat_protection(temperature) //Temperature is the temperature you're being exposed to. + var/thermal_protection_flags = get_heat_protection_flags(temperature) - var/thermal_protection = 0.0 - if(RESIST_HEAT in mutations) - return 1 - if(thermal_protection_flags) - if(thermal_protection_flags & HEAD) - thermal_protection += THERMAL_PROTECTION_HEAD - if(thermal_protection_flags & UPPER_TORSO) - thermal_protection += THERMAL_PROTECTION_UPPER_TORSO - if(thermal_protection_flags & LOWER_TORSO) - thermal_protection += THERMAL_PROTECTION_LOWER_TORSO - if(thermal_protection_flags & LEG_LEFT) - thermal_protection += THERMAL_PROTECTION_LEG_LEFT - if(thermal_protection_flags & LEG_RIGHT) - thermal_protection += THERMAL_PROTECTION_LEG_RIGHT - if(thermal_protection_flags & FOOT_LEFT) - thermal_protection += THERMAL_PROTECTION_FOOT_LEFT - if(thermal_protection_flags & FOOT_RIGHT) - thermal_protection += THERMAL_PROTECTION_FOOT_RIGHT - if(thermal_protection_flags & ARM_LEFT) - thermal_protection += THERMAL_PROTECTION_ARM_LEFT - if(thermal_protection_flags & ARM_RIGHT) - thermal_protection += THERMAL_PROTECTION_ARM_RIGHT - if(thermal_protection_flags & HAND_LEFT) - thermal_protection += THERMAL_PROTECTION_HAND_LEFT - if(thermal_protection_flags & HAND_RIGHT) - thermal_protection += THERMAL_PROTECTION_HAND_RIGHT + var/thermal_protection = 0.0 + if(RESIST_HEAT in mutations) + return 1 + if(thermal_protection_flags) + if(thermal_protection_flags & HEAD) + thermal_protection += THERMAL_PROTECTION_HEAD + if(thermal_protection_flags & UPPER_TORSO) + thermal_protection += THERMAL_PROTECTION_UPPER_TORSO + if(thermal_protection_flags & LOWER_TORSO) + thermal_protection += THERMAL_PROTECTION_LOWER_TORSO + if(thermal_protection_flags & LEG_LEFT) + thermal_protection += THERMAL_PROTECTION_LEG_LEFT + if(thermal_protection_flags & LEG_RIGHT) + thermal_protection += THERMAL_PROTECTION_LEG_RIGHT + if(thermal_protection_flags & FOOT_LEFT) + thermal_protection += THERMAL_PROTECTION_FOOT_LEFT + if(thermal_protection_flags & FOOT_RIGHT) + thermal_protection += THERMAL_PROTECTION_FOOT_RIGHT + if(thermal_protection_flags & ARM_LEFT) + thermal_protection += THERMAL_PROTECTION_ARM_LEFT + if(thermal_protection_flags & ARM_RIGHT) + thermal_protection += THERMAL_PROTECTION_ARM_RIGHT + if(thermal_protection_flags & HAND_LEFT) + thermal_protection += THERMAL_PROTECTION_HAND_LEFT + if(thermal_protection_flags & HAND_RIGHT) + thermal_protection += THERMAL_PROTECTION_HAND_RIGHT - return min(1,thermal_protection) + return min(1,thermal_protection) //See proc/get_heat_protection_flags(temperature) for the description of this proc. - proc/get_cold_protection_flags(temperature) - var/thermal_protection_flags = 0 - //Handle normal clothing +/mob/living/carbon/human/proc/get_cold_protection_flags(temperature) + var/thermal_protection_flags = 0 + //Handle normal clothing - if(head) - if(head.min_cold_protection_temperature && head.min_cold_protection_temperature <= temperature) - thermal_protection_flags |= head.cold_protection - if(wear_suit) - if(wear_suit.min_cold_protection_temperature && wear_suit.min_cold_protection_temperature <= temperature) - thermal_protection_flags |= wear_suit.cold_protection - if(w_uniform) - if(w_uniform.min_cold_protection_temperature && w_uniform.min_cold_protection_temperature <= temperature) - thermal_protection_flags |= w_uniform.cold_protection - if(shoes) - if(shoes.min_cold_protection_temperature && shoes.min_cold_protection_temperature <= temperature) - thermal_protection_flags |= shoes.cold_protection - if(gloves) - if(gloves.min_cold_protection_temperature && gloves.min_cold_protection_temperature <= temperature) - thermal_protection_flags |= gloves.cold_protection - if(wear_mask) - if(wear_mask.min_cold_protection_temperature && wear_mask.min_cold_protection_temperature <= temperature) - thermal_protection_flags |= wear_mask.cold_protection + if(head) + if(head.min_cold_protection_temperature && head.min_cold_protection_temperature <= temperature) + thermal_protection_flags |= head.cold_protection + if(wear_suit) + if(wear_suit.min_cold_protection_temperature && wear_suit.min_cold_protection_temperature <= temperature) + thermal_protection_flags |= wear_suit.cold_protection + if(w_uniform) + if(w_uniform.min_cold_protection_temperature && w_uniform.min_cold_protection_temperature <= temperature) + thermal_protection_flags |= w_uniform.cold_protection + if(shoes) + if(shoes.min_cold_protection_temperature && shoes.min_cold_protection_temperature <= temperature) + thermal_protection_flags |= shoes.cold_protection + if(gloves) + if(gloves.min_cold_protection_temperature && gloves.min_cold_protection_temperature <= temperature) + thermal_protection_flags |= gloves.cold_protection + if(wear_mask) + if(wear_mask.min_cold_protection_temperature && wear_mask.min_cold_protection_temperature <= temperature) + thermal_protection_flags |= wear_mask.cold_protection - return thermal_protection_flags + return thermal_protection_flags - proc/get_cold_protection(temperature) +/mob/living/carbon/human/proc/get_cold_protection(temperature) - if(RESIST_COLD in mutations) - return 1 //Fully protected from the cold. + if(RESIST_COLD in mutations) + return 1 //Fully protected from the cold. - temperature = max(temperature, 2.7) //There is an occasional bug where the temperature is miscalculated in ares with a small amount of gas on them, so this is necessary to ensure that that bug does not affect this calculation. Space's temperature is 2.7K and most suits that are intended to protect against any cold, protect down to 2.0K. - var/thermal_protection_flags = get_cold_protection_flags(temperature) + temperature = max(temperature, 2.7) //There is an occasional bug where the temperature is miscalculated in ares with a small amount of gas on them, so this is necessary to ensure that that bug does not affect this calculation. Space's temperature is 2.7K and most suits that are intended to protect against any cold, protect down to 2.0K. + var/thermal_protection_flags = get_cold_protection_flags(temperature) - var/thermal_protection = 0.0 - if(thermal_protection_flags) - if(thermal_protection_flags & HEAD) - thermal_protection += THERMAL_PROTECTION_HEAD - if(thermal_protection_flags & UPPER_TORSO) - thermal_protection += THERMAL_PROTECTION_UPPER_TORSO - if(thermal_protection_flags & LOWER_TORSO) - thermal_protection += THERMAL_PROTECTION_LOWER_TORSO - if(thermal_protection_flags & LEG_LEFT) - thermal_protection += THERMAL_PROTECTION_LEG_LEFT - if(thermal_protection_flags & LEG_RIGHT) - thermal_protection += THERMAL_PROTECTION_LEG_RIGHT - if(thermal_protection_flags & FOOT_LEFT) - thermal_protection += THERMAL_PROTECTION_FOOT_LEFT - if(thermal_protection_flags & FOOT_RIGHT) - thermal_protection += THERMAL_PROTECTION_FOOT_RIGHT - if(thermal_protection_flags & ARM_LEFT) - thermal_protection += THERMAL_PROTECTION_ARM_LEFT - if(thermal_protection_flags & ARM_RIGHT) - thermal_protection += THERMAL_PROTECTION_ARM_RIGHT - if(thermal_protection_flags & HAND_LEFT) - thermal_protection += THERMAL_PROTECTION_HAND_LEFT - if(thermal_protection_flags & HAND_RIGHT) - thermal_protection += THERMAL_PROTECTION_HAND_RIGHT + var/thermal_protection = 0.0 + if(thermal_protection_flags) + if(thermal_protection_flags & HEAD) + thermal_protection += THERMAL_PROTECTION_HEAD + if(thermal_protection_flags & UPPER_TORSO) + thermal_protection += THERMAL_PROTECTION_UPPER_TORSO + if(thermal_protection_flags & LOWER_TORSO) + thermal_protection += THERMAL_PROTECTION_LOWER_TORSO + if(thermal_protection_flags & LEG_LEFT) + thermal_protection += THERMAL_PROTECTION_LEG_LEFT + if(thermal_protection_flags & LEG_RIGHT) + thermal_protection += THERMAL_PROTECTION_LEG_RIGHT + if(thermal_protection_flags & FOOT_LEFT) + thermal_protection += THERMAL_PROTECTION_FOOT_LEFT + if(thermal_protection_flags & FOOT_RIGHT) + thermal_protection += THERMAL_PROTECTION_FOOT_RIGHT + if(thermal_protection_flags & ARM_LEFT) + thermal_protection += THERMAL_PROTECTION_ARM_LEFT + if(thermal_protection_flags & ARM_RIGHT) + thermal_protection += THERMAL_PROTECTION_ARM_RIGHT + if(thermal_protection_flags & HAND_LEFT) + thermal_protection += THERMAL_PROTECTION_HAND_LEFT + if(thermal_protection_flags & HAND_RIGHT) + thermal_protection += THERMAL_PROTECTION_HAND_RIGHT - return min(1,thermal_protection) + return min(1,thermal_protection) - proc/get_covered_bodyparts() - var/covered = 0 +/mob/living/carbon/human/proc/get_covered_bodyparts() + var/covered = 0 - if(head) - covered |= head.body_parts_covered - if(wear_suit) - covered |= wear_suit.body_parts_covered - if(w_uniform) - covered |= w_uniform.body_parts_covered - if(shoes) - covered |= shoes.body_parts_covered - if(gloves) - covered |= gloves.body_parts_covered - if(wear_mask) - covered |= wear_mask.body_parts_covered + if(head) + covered |= head.body_parts_covered + if(wear_suit) + covered |= wear_suit.body_parts_covered + if(w_uniform) + covered |= w_uniform.body_parts_covered + if(shoes) + covered |= shoes.body_parts_covered + if(gloves) + covered |= gloves.body_parts_covered + if(wear_mask) + covered |= wear_mask.body_parts_covered - return covered + return covered - proc/handle_chemicals_in_body() +/mob/living/carbon/human/proc/handle_chemicals_in_body() - if(reagents) - reagents.metabolize(src) + if(reagents) + reagents.metabolize(src) - if(status_flags & GODMODE) return 0 //godmode + if(status_flags & GODMODE) return 0 //godmode - if(species.flags & REQUIRE_LIGHT) - var/light_amount = 0 //how much light there is in the place, affects receiving nutrition and healing - if(isturf(loc)) //else, there's considered to be no light - var/turf/T = loc - var/atom/movable/lighting_overlay/L = locate(/atom/movable/lighting_overlay) in T - if(L) - light_amount = (L.get_clamped_lum()*10) - 5 //hardcapped so it's not abused by having a ton of flashlights - else - light_amount = 5 - nutrition += light_amount - traumatic_shock -= light_amount - - if(species.flags & IS_PLANT) - if(nutrition > 450) - nutrition = 450 - if((light_amount >= 5) && !suiciding) //if there's enough light, heal - adjustBruteLoss(-(light_amount/2)) - adjustFireLoss(-(light_amount/4)) - //adjustToxLoss(-(light_amount)) - adjustOxyLoss(-(light_amount)) - //TODO: heal wounds, heal broken limbs. - - if(species.light_dam) - var/light_amount = 0 - if(isturf(loc)) - var/turf/T = loc - var/atom/movable/lighting_overlay/L = locate(/atom/movable/lighting_overlay) in T - if(L) - light_amount = L.get_clamped_lum()*10 - else - light_amount = 10 - if(light_amount > species.light_dam) //if there's enough light, start dying - if(species.light_effect_amp) - adjustFireLoss(5) //This gets doubled by Shadowling's innate fire weakness, so it ends up being 10. - else - adjustFireLoss(1) - adjustBruteLoss(1) - src << "The light burns you!" - src << 'sound/weapons/sear.ogg' - else //heal in the dark - if(species.light_effect_amp) - adjustFireLoss(-5) - adjustBruteLoss(-5) - adjustBrainLoss(-25) //gibbering shadowlings are hilarious but also bad to have - adjustCloneLoss(-1) - SetWeakened(0) - SetStunned(0) - else - adjustFireLoss(-1) - adjustBruteLoss(-1) - - - //The fucking FAT mutation is the greatest shit ever. It makes everyone so hot and bothered. - if(species.flags & CAN_BE_FAT) - if(FAT in mutations) - if(overeatduration < 100) - src << "\blue You feel fit again!" - mutations.Remove(FAT) - update_mutantrace(0) - update_mutations(0) - update_inv_w_uniform(0) - update_inv_wear_suit() + if(species.flags & REQUIRE_LIGHT) + var/light_amount = 0 //how much light there is in the place, affects receiving nutrition and healing + if(isturf(loc)) //else, there's considered to be no light + var/turf/T = loc + var/atom/movable/lighting_overlay/L = locate(/atom/movable/lighting_overlay) in T + if(L) + light_amount = (L.get_clamped_lum()*10) - 5 //hardcapped so it's not abused by having a ton of flashlights else - if(overeatduration > 500) - src << "\red You suddenly feel blubbery!" - mutations.Add(FAT) - update_mutantrace(0) - update_mutations(0) - update_inv_w_uniform(0) - update_inv_wear_suit() + light_amount = 5 + nutrition += light_amount + traumatic_shock -= light_amount - // nutrition decrease - if (nutrition > 0 && stat != 2) - nutrition = max (0, nutrition - HUNGER_FACTOR) + if(species.flags & IS_PLANT) + if(nutrition > 450) + nutrition = 450 + if((light_amount >= 5) && !suiciding) //if there's enough light, heal + adjustBruteLoss(-(light_amount/2)) + adjustFireLoss(-(light_amount/4)) + //adjustToxLoss(-(light_amount)) + adjustOxyLoss(-(light_amount)) + //TODO: heal wounds, heal broken limbs. - if (nutrition > 450) - if(overeatduration < 800) //capped so people don't take forever to unfat - overeatduration++ + if(species.light_dam) + var/light_amount = 0 + if(isturf(loc)) + var/turf/T = loc + var/atom/movable/lighting_overlay/L = locate(/atom/movable/lighting_overlay) in T + if(L) + light_amount = L.get_clamped_lum()*10 + else + light_amount = 10 + if(light_amount > species.light_dam) //if there's enough light, start dying + if(species.light_effect_amp) + adjustFireLoss(5) //This gets doubled by Shadowling's innate fire weakness, so it ends up being 10. + else + adjustFireLoss(1) + adjustBruteLoss(1) + src << "The light burns you!" + src << 'sound/weapons/sear.ogg' + else //heal in the dark + if(species.light_effect_amp) + adjustFireLoss(-5) + adjustBruteLoss(-5) + adjustBrainLoss(-25) //gibbering shadowlings are hilarious but also bad to have + adjustCloneLoss(-1) + SetWeakened(0) + SetStunned(0) + else + adjustFireLoss(-1) + adjustBruteLoss(-1) + + //The fucking FAT mutation is the greatest shit ever. It makes everyone so hot and bothered. + if(species.flags & CAN_BE_FAT) + if(FAT in mutations) + if(overeatduration < 100) + src << "You feel fit again!" + mutations.Remove(FAT) + update_mutantrace(0) + update_mutations(0) + update_inv_w_uniform(0) + update_inv_wear_suit() else - if(overeatduration > 1) - if(OBESITY in mutations) - overeatduration -= 1 // Those with obesity gene take twice as long to unfat - else - overeatduration -= 2 + if(overeatduration > 500) + src << "You suddenly feel blubbery!" + mutations.Add(FAT) + update_mutantrace(0) + update_mutations(0) + update_inv_w_uniform(0) + update_inv_wear_suit() - if(species.flags & REQUIRE_LIGHT) - if(nutrition < 200) - take_overall_damage(10,0) - traumatic_shock++ + // nutrition decrease + if (nutrition > 0 && stat != 2) + nutrition = max (0, nutrition - HUNGER_FACTOR) - if (drowsyness) - drowsyness-- - eye_blurry = max(2, eye_blurry) - if (prob(5)) - sleeping += 1 - Paralyse(5) + if (nutrition > 450) + if(overeatduration < 800) //capped so people don't take forever to unfat + overeatduration++ - confused = max(0, confused - 1) - // decrement dizziness counter, clamped to 0 - if(resting) - dizziness = max(0, dizziness - 15) - jitteriness = max(0, jitteriness - 15) - else - dizziness = max(0, dizziness - 3) - jitteriness = max(0, jitteriness - 3) + else + if(overeatduration > 1) + if(OBESITY in mutations) + overeatduration -= 1 // Those with obesity gene take twice as long to unfat + else + overeatduration -= 2 - if(species && species.flags & NO_INTORGANS) return + if(species.flags & REQUIRE_LIGHT) + if(nutrition < 200) + take_overall_damage(10,0) + traumatic_shock++ - if(!(species.flags & IS_SYNTHETIC)) handle_trace_chems() + if (drowsyness) + drowsyness-- + eye_blurry = max(2, eye_blurry) + if (prob(5)) + sleeping += 1 + Paralyse(5) - updatehealth() + confused = max(0, confused - 1) + // decrement dizziness counter, clamped to 0 + if(resting) + dizziness = max(0, dizziness - 15) + jitteriness = max(0, jitteriness - 15) + else + dizziness = max(0, dizziness - 3) + jitteriness = max(0, jitteriness - 3) - return //TODO: DEFERRED + if(species && species.flags & NO_INTORGANS) return - proc/handle_regular_status_updates() + if(!(species.flags & IS_SYNTHETIC)) handle_trace_chems() - if(status_flags & GODMODE) return 0 + updatehealth() - //SSD check, if a logged player is awake put them back to sleep! - if(player_logged && sleeping < 2) - sleeping = 2 + return //TODO: DEFERRED - if(stat == DEAD) //DEAD. BROWN BREAD. SWIMMING WITH THE SPESS CARP - blinded = 1 - silent = 0 - else //ALIVE. LIGHTS ARE ON +/mob/living/carbon/human/proc/handle_regular_status_updates() - if(REGEN in mutations) - if(nutrition) - if(prob(10)) - var/randumb = rand(1,5) - nutrition -= randumb - heal_overall_damage(randumb,randumb) - if(nutrition < 0) - nutrition = 0 + if(status_flags & GODMODE) return 0 - // Sobering multiplier. - // Sober block grants quadruple the alcohol metabolism. + //SSD check, if a logged player is awake put them back to sleep! + if(player_logged && sleeping < 2) + sleeping = 2 + + if(stat == DEAD) //DEAD. BROWN BREAD. SWIMMING WITH THE SPESS CARP + blinded = 1 + silent = 0 + else //ALIVE. LIGHTS ARE ON + + if(REGEN in mutations) + if(nutrition) + if(prob(10)) + var/randumb = rand(1,5) + nutrition -= randumb + heal_overall_damage(randumb,randumb) + if(nutrition < 0) + nutrition = 0 + + // Sobering multiplier. + // Sober block grants quadruple the alcohol metabolism. // var/sober_str=!(SOBER in mutations)?1:4 - updatehealth() //TODO - if(!in_stasis) - handle_organs() //Optimized. - handle_blood() + updatehealth() //TODO + if(!in_stasis) + handle_organs() //Optimized. + handle_blood() - if(health <= config.health_threshold_dead || brain_op_stage == 4.0) - death() - blinded = 1 - silent = 0 - return 1 + if(health <= config.health_threshold_dead || brain_op_stage == 4.0) + death() + blinded = 1 + silent = 0 + return 1 - // the analgesic effect wears off slowly - analgesic = max(0, analgesic - 1) + // the analgesic effect wears off slowly + analgesic = max(0, analgesic - 1) - //UNCONSCIOUS. NO-ONE IS HOME - if( (getOxyLoss() > 50) || (config.health_threshold_crit >= health) ) - Paralyse(3) + //UNCONSCIOUS. NO-ONE IS HOME + if( (getOxyLoss() > 50) || (config.health_threshold_crit >= health) ) + Paralyse(3) - /* Done by handle_breath() - if( health <= 20 && prob(1) ) - spawn(0) - emote("gasp") - if(!reagents.has_reagent("epinephrine")) - adjustOxyLoss(1)*/ + /* Done by handle_breath() + if( health <= 20 && prob(1) ) + spawn(0) + emote("gasp") + if(!reagents.has_reagent("epinephrine")) + adjustOxyLoss(1)*/ - if(hallucination && !(species.flags & IS_SYNTHETIC)) - spawn handle_hallucinations() + if(hallucination && !(species.flags & IS_SYNTHETIC)) + spawn handle_hallucinations() - if(hallucination<=2) - hallucination = 0 - halloss = 0 - else - hallucination -= 2 - - - if(halloss > 100) - src << "You're in too much pain to keep going..." - for(var/mob/O in oviewers(src, null)) - O.show_message("[src] slumps to the ground, too weak to continue fighting.", 1) - Paralyse(10) - setHalLoss(99) - - if(paralysis) - AdjustParalysis(-1) - blinded = 1 - stat = UNCONSCIOUS - if(halloss > 0) - adjustHalLoss(-3) - else if(sleeping) - speech_problem_flag = 1 - handle_dreams() - adjustStaminaLoss(-10) - adjustHalLoss(-3) - if (mind) - //Are they SSD? If so we'll keep them asleep but work off some of that sleep var in case of ether or similar. - if(player_logged) - sleeping = max(sleeping-1, 2) - else - sleeping = max(sleeping-1, 0) - blinded = 1 - stat = UNCONSCIOUS - if( prob(2) && health && !hal_crit ) - spawn(0) - emote("snore") - if(mind) - if(mind.vampire) - if(istype(loc, /obj/structure/closet/coffin)) - adjustBruteLoss(-1) - adjustFireLoss(-1) - adjustToxLoss(-1) - else if(status_flags & FAKEDEATH) - blinded = 1 - stat = UNCONSCIOUS - else if(resting) - if(halloss > 0) - adjustHalLoss(-3) - //CONSCIOUS + if(hallucination<=2) + hallucination = 0 + halloss = 0 else - stat = CONSCIOUS - if(halloss > 0) - adjustHalLoss(-1) - - if(embedded_flag && !(life_tick % 10)) - var/list/E - E = get_visible_implants(0) - if(!E.len) - embedded_flag = 0 + hallucination -= 2 - //Eyes - if(sdisabilities & BLIND) //disabled-blind, doesn't get better on its own - blinded = 1 - else if(eye_blind) //blindness, heals slowly over time - eye_blind = max(eye_blind-1,0) - blinded = 1 - else if(tinttotal >= TINT_BLIND) //covering your eyes heals blurry eyes faster - eye_blurry = max(eye_blurry-3, 0) - // blinded = 1 //now handled under /handle_regular_hud_updates() - else if(eye_blurry) //blurry eyes heal slowly - eye_blurry = max(eye_blurry-1, 0) + if(halloss > 100) + src << "You're in too much pain to keep going..." + for(var/mob/O in oviewers(src, null)) + O.show_message("[src] slumps to the ground, too weak to continue fighting.", 1) + Paralyse(10) + setHalLoss(99) - //Ears - if(sdisabilities & DEAF) //disabled-deaf, doesn't get better on its own - ear_deaf = max(ear_deaf, 1) - else if(ear_deaf) //deafness, heals slowly over time - ear_deaf = max(ear_deaf-1, 0) - else if(istype(l_ear, /obj/item/clothing/ears/earmuffs) || istype(r_ear, /obj/item/clothing/ears/earmuffs)) //resting your ears with earmuffs heals ear damage faster - ear_damage = max(ear_damage-0.15, 0) - ear_deaf = max(ear_deaf, 1) - else if(ear_damage < 25) //ear damage heals slowly under this threshold. otherwise you'll need earmuffs - ear_damage = max(ear_damage-0.05, 0) + if(paralysis) + AdjustParalysis(-1) + blinded = 1 + stat = UNCONSCIOUS + if(halloss > 0) + adjustHalLoss(-3) + else if(sleeping) + speech_problem_flag = 1 + handle_dreams() + adjustStaminaLoss(-10) + adjustHalLoss(-3) + if (mind) + //Are they SSD? If so we'll keep them asleep but work off some of that sleep var in case of ether or similar. + if(player_logged) + sleeping = max(sleeping-1, 2) + else + sleeping = max(sleeping-1, 0) + blinded = 1 + stat = UNCONSCIOUS + if( prob(2) && health && !hal_crit ) + spawn(0) + emote("snore") + if(mind) + if(mind.vampire) + if(istype(loc, /obj/structure/closet/coffin)) + adjustBruteLoss(-1) + adjustFireLoss(-1) + adjustToxLoss(-1) + else if(status_flags & FAKEDEATH) + blinded = 1 + stat = UNCONSCIOUS + else if(resting) + if(halloss > 0) + adjustHalLoss(-3) + //CONSCIOUS + else + stat = CONSCIOUS + if(halloss > 0) + adjustHalLoss(-1) - //Dizziness - if(dizziness) - var/client/C = client - var/pixel_x_diff = 0 - var/pixel_y_diff = 0 - var/temp - var/saved_dizz = dizziness - dizziness = max(dizziness-1, 0) - if(C) - var/oldsrc = src - var/amplitude = dizziness*(sin(dizziness * 0.044 * world.time) + 1) / 70 // This shit is annoying at high strength - src = null - spawn(0) + if(embedded_flag && !(life_tick % 10)) + var/list/E + E = get_visible_implants(0) + if(!E.len) + embedded_flag = 0 + + + //Eyes + if(sdisabilities & BLIND) //disabled-blind, doesn't get better on its own + blinded = 1 + else if(eye_blind) //blindness, heals slowly over time + eye_blind = max(eye_blind-1,0) + blinded = 1 + else if(tinttotal >= TINT_BLIND) //covering your eyes heals blurry eyes faster + eye_blurry = max(eye_blurry-3, 0) + // blinded = 1 //now handled under /handle_regular_hud_updates() + else if(eye_blurry) //blurry eyes heal slowly + eye_blurry = max(eye_blurry-1, 0) + + //Ears + if(sdisabilities & DEAF) //disabled-deaf, doesn't get better on its own + ear_deaf = max(ear_deaf, 1) + else if(ear_deaf) //deafness, heals slowly over time + ear_deaf = max(ear_deaf-1, 0) + else if(istype(l_ear, /obj/item/clothing/ears/earmuffs) || istype(r_ear, /obj/item/clothing/ears/earmuffs)) //resting your ears with earmuffs heals ear damage faster + ear_damage = max(ear_damage-0.15, 0) + ear_deaf = max(ear_deaf, 1) + else if(ear_damage < 25) //ear damage heals slowly under this threshold. otherwise you'll need earmuffs + ear_damage = max(ear_damage-0.05, 0) + + //Dizziness + if(dizziness) + var/client/C = client + var/pixel_x_diff = 0 + var/pixel_y_diff = 0 + var/temp + var/saved_dizz = dizziness + dizziness = max(dizziness-1, 0) + if(C) + var/oldsrc = src + var/amplitude = dizziness*(sin(dizziness * 0.044 * world.time) + 1) / 70 // This shit is annoying at high strength + src = null + spawn(0) + if(C) + temp = amplitude * sin(0.008 * saved_dizz * world.time) + pixel_x_diff += temp + C.pixel_x += temp + temp = amplitude * cos(0.008 * saved_dizz * world.time) + pixel_y_diff += temp + C.pixel_y += temp + sleep(3) if(C) temp = amplitude * sin(0.008 * saved_dizz * world.time) pixel_x_diff += temp @@ -1020,641 +1025,633 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc temp = amplitude * cos(0.008 * saved_dizz * world.time) pixel_y_diff += temp C.pixel_y += temp - sleep(3) - if(C) - temp = amplitude * sin(0.008 * saved_dizz * world.time) - pixel_x_diff += temp - C.pixel_x += temp - temp = amplitude * cos(0.008 * saved_dizz * world.time) - pixel_y_diff += temp - C.pixel_y += temp - sleep(3) - if(C) - C.pixel_x -= pixel_x_diff - C.pixel_y -= pixel_y_diff - src = oldsrc + sleep(3) + if(C) + C.pixel_x -= pixel_x_diff + C.pixel_y -= pixel_y_diff + src = oldsrc - //Jitteryness - if(jitteriness) - do_jitter_animation(jitteriness) + //Jitteryness + if(jitteriness) + do_jitter_animation(jitteriness) - //Flying - if(flying) - spawn() - animate(src, pixel_y = pixel_y + 5 , time = 10, loop = 1, easing = SINE_EASING) - spawn(10) - if(flying) - animate(src, pixel_y = pixel_y - 5, time = 10, loop = 1, easing = SINE_EASING) + //Flying + if(flying) + spawn() + animate(src, pixel_y = pixel_y + 5 , time = 10, loop = 1, easing = SINE_EASING) + spawn(10) + if(flying) + animate(src, pixel_y = pixel_y - 5, time = 10, loop = 1, easing = SINE_EASING) - //Other - handle_statuses() + //Other + handle_statuses() - // If you're dirty, your gloves will become dirty, too. - if(gloves && germ_level > gloves.germ_level && prob(10)) - gloves.germ_level += 1 + // If you're dirty, your gloves will become dirty, too. + if(gloves && germ_level > gloves.germ_level && prob(10)) + gloves.germ_level += 1 - CheckStamina() + CheckStamina() - return 1 + return 1 - proc/handle_regular_hud_updates() - if(hud_updateflag) - handle_hud_list() +/mob/living/carbon/human/proc/handle_regular_hud_updates() + if(hud_updateflag) + handle_hud_list() - if(!client) return 0 + if(!client) return 0 - if(hud_updateflag) - handle_hud_list() + if(hud_updateflag) + handle_hud_list() - update_action_buttons() + update_action_buttons() - for(var/image/hud in client.images) - if(copytext(hud.icon_state,1,4) == "hud") //ugly, but icon comparison is worse, I believe - client.images.Remove(hud) + for(var/image/hud in client.images) + if(copytext(hud.icon_state,1,4) == "hud") //ugly, but icon comparison is worse, I believe + client.images.Remove(hud) - client.screen.Remove(global_hud.blurry, global_hud.druggy, global_hud.vimpaired, global_hud.darkMask,/* global_hud.nvg*/) + client.screen.Remove(global_hud.blurry, global_hud.druggy, global_hud.vimpaired, global_hud.darkMask,/* global_hud.nvg*/) - if(damageoverlay.overlays) - damageoverlay.overlays = list() + if(damageoverlay.overlays) + damageoverlay.overlays = list() - if(stat == UNCONSCIOUS) - //Critical damage passage overlay - if(health <= 0) - //var/image/I - switch(health) - if(-20 to -10) - damageoverlay.overlays += unconscious_overlays["1"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "passage1") - if(-30 to -20) - damageoverlay.overlays += unconscious_overlays["2"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "passage2") - if(-40 to -30) - damageoverlay.overlays += unconscious_overlays["3"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "passage3") - if(-50 to -40) - damageoverlay.overlays += unconscious_overlays["4"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "passage4") - if(-60 to -50) - damageoverlay.overlays += unconscious_overlays["5"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "passage5") - if(-70 to -60) - damageoverlay.overlays += unconscious_overlays["6"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "passage6") - if(-80 to -70) - damageoverlay.overlays += unconscious_overlays["7"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "passage7") - if(-90 to -80) - damageoverlay.overlays += unconscious_overlays["8"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "passage8") - if(-95 to -90) - damageoverlay.overlays += unconscious_overlays["9"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "passage9") - if(-INFINITY to -95) - damageoverlay.overlays += unconscious_overlays["10"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "passage10") - //damageoverlay.overlays += I - else - //Oxygen damage overlay - if(oxyloss) - //var/image/I - switch(oxyloss) - if(10 to 20) - damageoverlay.overlays += oxyloss_overlays["1"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "oxydamageoverlay1") - if(20 to 25) - damageoverlay.overlays += oxyloss_overlays["2"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "oxydamageoverlay2") - if(25 to 30) - damageoverlay.overlays += oxyloss_overlays["3"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "oxydamageoverlay3") - if(30 to 35) - damageoverlay.overlays += oxyloss_overlays["4"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "oxydamageoverlay4") - if(35 to 40) - damageoverlay.overlays += oxyloss_overlays["5"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "oxydamageoverlay5") - if(40 to 45) - damageoverlay.overlays += oxyloss_overlays["6"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "oxydamageoverlay6") - if(45 to INFINITY) - damageoverlay.overlays += oxyloss_overlays["7"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "oxydamageoverlay7") - //damageoverlay.overlays += I + if(stat == UNCONSCIOUS) + //Critical damage passage overlay + if(health <= 0) + //var/image/I + switch(health) + if(-20 to -10) + damageoverlay.overlays += unconscious_overlays["1"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "passage1") + if(-30 to -20) + damageoverlay.overlays += unconscious_overlays["2"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "passage2") + if(-40 to -30) + damageoverlay.overlays += unconscious_overlays["3"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "passage3") + if(-50 to -40) + damageoverlay.overlays += unconscious_overlays["4"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "passage4") + if(-60 to -50) + damageoverlay.overlays += unconscious_overlays["5"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "passage5") + if(-70 to -60) + damageoverlay.overlays += unconscious_overlays["6"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "passage6") + if(-80 to -70) + damageoverlay.overlays += unconscious_overlays["7"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "passage7") + if(-90 to -80) + damageoverlay.overlays += unconscious_overlays["8"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "passage8") + if(-95 to -90) + damageoverlay.overlays += unconscious_overlays["9"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "passage9") + if(-INFINITY to -95) + damageoverlay.overlays += unconscious_overlays["10"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "passage10") + //damageoverlay.overlays += I + else + //Oxygen damage overlay + if(oxyloss) + //var/image/I + switch(oxyloss) + if(10 to 20) + damageoverlay.overlays += oxyloss_overlays["1"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "oxydamageoverlay1") + if(20 to 25) + damageoverlay.overlays += oxyloss_overlays["2"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "oxydamageoverlay2") + if(25 to 30) + damageoverlay.overlays += oxyloss_overlays["3"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "oxydamageoverlay3") + if(30 to 35) + damageoverlay.overlays += oxyloss_overlays["4"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "oxydamageoverlay4") + if(35 to 40) + damageoverlay.overlays += oxyloss_overlays["5"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "oxydamageoverlay5") + if(40 to 45) + damageoverlay.overlays += oxyloss_overlays["6"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "oxydamageoverlay6") + if(45 to INFINITY) + damageoverlay.overlays += oxyloss_overlays["7"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "oxydamageoverlay7") + //damageoverlay.overlays += I - //Fire and Brute damage overlay (BSSR) - var/hurtdamage = src.getBruteLoss() + src.getFireLoss() + damageoverlaytemp - damageoverlaytemp = 0 // We do this so we can detect if someone hits us or not. - if(hurtdamage) - //var/image/I - switch(hurtdamage) - if(10 to 25) - damageoverlay.overlays += brutefireloss_overlays["1"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "brutedamageoverlay1") - if(25 to 40) - damageoverlay.overlays += brutefireloss_overlays["2"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "brutedamageoverlay2") - if(40 to 55) - damageoverlay.overlays += brutefireloss_overlays["3"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "brutedamageoverlay3") - if(55 to 70) - damageoverlay.overlays += brutefireloss_overlays["4"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "brutedamageoverlay4") - if(70 to 85) - damageoverlay.overlays += brutefireloss_overlays["5"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "brutedamageoverlay5") - if(85 to INFINITY) - damageoverlay.overlays += brutefireloss_overlays["6"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "brutedamageoverlay6") - //damageoverlay.overlays += I + //Fire and Brute damage overlay (BSSR) + var/hurtdamage = src.getBruteLoss() + src.getFireLoss() + damageoverlaytemp + damageoverlaytemp = 0 // We do this so we can detect if someone hits us or not. + if(hurtdamage) + //var/image/I + switch(hurtdamage) + if(10 to 25) + damageoverlay.overlays += brutefireloss_overlays["1"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "brutedamageoverlay1") + if(25 to 40) + damageoverlay.overlays += brutefireloss_overlays["2"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "brutedamageoverlay2") + if(40 to 55) + damageoverlay.overlays += brutefireloss_overlays["3"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "brutedamageoverlay3") + if(55 to 70) + damageoverlay.overlays += brutefireloss_overlays["4"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "brutedamageoverlay4") + if(70 to 85) + damageoverlay.overlays += brutefireloss_overlays["5"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "brutedamageoverlay5") + if(85 to INFINITY) + damageoverlay.overlays += brutefireloss_overlays["6"]//image("icon" = 'icons/mob/screen1_full.dmi', "icon_state" = "brutedamageoverlay6") + //damageoverlay.overlays += I - see_invisible = SEE_INVISIBLE_LIVING - if( stat == DEAD ) - sight |= (SEE_TURFS|SEE_MOBS|SEE_OBJS) - see_in_dark = 8 - if(!druggy) see_invisible = SEE_INVISIBLE_LEVEL_TWO - if(healths) healths.icon_state = "health7" //DEAD healthmeter - else - sight &= ~(SEE_TURFS|SEE_MOBS|SEE_OBJS) + see_invisible = SEE_INVISIBLE_LIVING + if( stat == DEAD ) + sight |= (SEE_TURFS|SEE_MOBS|SEE_OBJS) + see_in_dark = 8 + if(!druggy) see_invisible = SEE_INVISIBLE_LEVEL_TWO + if(healths) healths.icon_state = "health7" //DEAD healthmeter + else + sight &= ~(SEE_TURFS|SEE_MOBS|SEE_OBJS) - if(mind && mind.vampire) - if((VAMP_VISION in mind.vampire.powers) && !(VAMP_FULL in mind.vampire.powers)) - sight |= SEE_MOBS - if((VAMP_FULL in mind.vampire.powers)) - sight |= SEE_TURFS|SEE_MOBS|SEE_OBJS - see_in_dark = 8 - if(!druggy) see_invisible = SEE_INVISIBLE_LEVEL_TWO - if(XRAY in mutations) + if(mind && mind.vampire) + if((VAMP_VISION in mind.vampire.powers) && !(VAMP_FULL in mind.vampire.powers)) + sight |= SEE_MOBS + if((VAMP_FULL in mind.vampire.powers)) sight |= SEE_TURFS|SEE_MOBS|SEE_OBJS see_in_dark = 8 if(!druggy) see_invisible = SEE_INVISIBLE_LEVEL_TWO + if(XRAY in mutations) + sight |= SEE_TURFS|SEE_MOBS|SEE_OBJS + see_in_dark = 8 + if(!druggy) see_invisible = SEE_INVISIBLE_LEVEL_TWO - if(seer==1) - var/obj/effect/rune/R = locate() in loc - if(R && R.word1 == cultwords["see"] && R.word2 == cultwords["hell"] && R.word3 == cultwords["join"]) - see_invisible = SEE_INVISIBLE_OBSERVER - else - see_invisible = SEE_INVISIBLE_LIVING - seer = 0 - - if(glasses || head) - if(glasses) - var/obj/item/clothing/glasses/G = glasses - if(istype(G)) - see_in_dark = (G.darkness_view ? see_in_dark + G.darkness_view : species.darksight) // Otherwise we keep our darkness view with togglable nightvision. - if(G.vision_flags) // MESONS - sight |= G.vision_flags - if(!druggy) - see_invisible = SEE_INVISIBLE_MINIMUM - if(!G.see_darkness) - see_invisible = SEE_INVISIBLE_MINIMUM - /* HUD shit goes here, as long as it doesn't modify sight flags */ - // The purpose of this is to stop xray and w/e from preventing you from using huds -- Love, Doohl - - switch(G.HUDType) - if(SECHUD) - process_sec_hud(src,1) - if(MEDHUD) - process_med_hud(src,1) - if(ANTAGHUD) - process_antag_hud(src) - - if(head) - var/obj/item/clothing/head/H = head - if(istype(H)) - if(H.vision_flags) // MESONS - sight |= H.vision_flags - if(!druggy) - see_invisible = SEE_INVISIBLE_MINIMUM - if(!H.see_darkness) - see_invisible = SEE_INVISIBLE_MINIMUM - /* HUD shit goes here, as long as it doesn't modify sight flags */ - // The purpose of this is to stop xray and w/e from preventing you from using huds -- Love, Doohl - - switch(H.HUDType) - if(SECHUD) - process_sec_hud(src,1) - if(MEDHUD) - process_med_hud(src,1) - if(ANTAGHUD) - process_antag_hud(src) - - - - - else if(!seer) - see_in_dark = species.darksight + if(seer==1) + var/obj/effect/rune/R = locate() in loc + if(R && R.word1 == cultwords["see"] && R.word2 == cultwords["hell"] && R.word3 == cultwords["join"]) + see_invisible = SEE_INVISIBLE_OBSERVER + else see_invisible = SEE_INVISIBLE_LIVING + seer = 0 - if(ticker && ticker.mode.name == "nations") - process_nations() + if(glasses || head) + if(glasses) + var/obj/item/clothing/glasses/G = glasses + if(istype(G)) + see_in_dark = (G.darkness_view ? see_in_dark + G.darkness_view : species.darksight) // Otherwise we keep our darkness view with togglable nightvision. + if(G.vision_flags) // MESONS + sight |= G.vision_flags + if(!druggy) + see_invisible = SEE_INVISIBLE_MINIMUM + if(!G.see_darkness) + see_invisible = SEE_INVISIBLE_MINIMUM + /* HUD shit goes here, as long as it doesn't modify sight flags */ + // The purpose of this is to stop xray and w/e from preventing you from using huds -- Love, Doohl - if(healths) - if (analgesic) - healths.icon_state = "health_health_numb" - else - switch(hal_screwyhud) - if(1) healths.icon_state = "health6" - if(2) healths.icon_state = "health7" - else - //switch(health - halloss) - switch(100 - ((species && species.flags & NO_PAIN) ? 0 : traumatic_shock) - staminaloss) - if(100 to INFINITY) healths.icon_state = "health0" - if(80 to 100) healths.icon_state = "health1" - if(60 to 80) healths.icon_state = "health2" - if(40 to 60) healths.icon_state = "health3" - if(20 to 40) healths.icon_state = "health4" - if(0 to 20) healths.icon_state = "health5" - else healths.icon_state = "health6" + switch(G.HUDType) + if(SECHUD) + process_sec_hud(src,1) + if(MEDHUD) + process_med_hud(src,1) + if(ANTAGHUD) + process_antag_hud(src) - if(healthdoll) - healthdoll.overlays.Cut() - if(stat == DEAD) - healthdoll.icon_state = "healthdoll_DEAD" - else - healthdoll.icon_state = "healthdoll_OVERLAY" - for(var/obj/item/organ/external/O in organs) - var/damage = O.burn_dam + O.brute_dam - var/comparison = (O.max_damage/5) - var/icon_num = 0 - if(damage) - icon_num = 1 - if(damage > (comparison)) - icon_num = 2 - if(damage > (comparison*2)) - icon_num = 3 - if(damage > (comparison*3)) - icon_num = 4 - if(damage > (comparison*4)) - icon_num = 5 - if(icon_num) - healthdoll.overlays += image('icons/mob/screen_gen.dmi',"[O.limb_name][icon_num]") + if(head) + var/obj/item/clothing/head/H = head + if(istype(H)) + if(H.vision_flags) // MESONS + sight |= H.vision_flags + if(!druggy) + see_invisible = SEE_INVISIBLE_MINIMUM + if(!H.see_darkness) + see_invisible = SEE_INVISIBLE_MINIMUM + /* HUD shit goes here, as long as it doesn't modify sight flags */ + // The purpose of this is to stop xray and w/e from preventing you from using huds -- Love, Doohl - if(nutrition_icon) - switch(nutrition) - if(450 to INFINITY) nutrition_icon.icon_state = "nutrition0" - if(350 to 450) nutrition_icon.icon_state = "nutrition1" - if(250 to 350) nutrition_icon.icon_state = "nutrition2" - if(150 to 250) nutrition_icon.icon_state = "nutrition3" - else nutrition_icon.icon_state = "nutrition4" + switch(H.HUDType) + if(SECHUD) + process_sec_hud(src,1) + if(MEDHUD) + process_med_hud(src,1) + if(ANTAGHUD) + process_antag_hud(src) - if(pressure) - pressure.icon_state = "pressure[pressure_alert]" - if(pullin) - if(pulling) pullin.icon_state = "pull1" - else pullin.icon_state = "pull0" + + + else if(!seer) + see_in_dark = species.darksight + see_invisible = SEE_INVISIBLE_LIVING + + if(ticker && ticker.mode.name == "nations") + process_nations() + + if(healths) + if (analgesic) + healths.icon_state = "health_health_numb" + else + switch(hal_screwyhud) + if(1) healths.icon_state = "health6" + if(2) healths.icon_state = "health7" + else + //switch(health - halloss) + switch(100 - ((species && species.flags & NO_PAIN) ? 0 : traumatic_shock) - staminaloss) + if(100 to INFINITY) healths.icon_state = "health0" + if(80 to 100) healths.icon_state = "health1" + if(60 to 80) healths.icon_state = "health2" + if(40 to 60) healths.icon_state = "health3" + if(20 to 40) healths.icon_state = "health4" + if(0 to 20) healths.icon_state = "health5" + else healths.icon_state = "health6" + + if(healthdoll) + healthdoll.overlays.Cut() + if(stat == DEAD) + healthdoll.icon_state = "healthdoll_DEAD" + else + healthdoll.icon_state = "healthdoll_OVERLAY" + for(var/obj/item/organ/external/O in organs) + var/damage = O.burn_dam + O.brute_dam + var/comparison = (O.max_damage/5) + var/icon_num = 0 + if(damage) + icon_num = 1 + if(damage > (comparison)) + icon_num = 2 + if(damage > (comparison*2)) + icon_num = 3 + if(damage > (comparison*3)) + icon_num = 4 + if(damage > (comparison*4)) + icon_num = 5 + if(icon_num) + healthdoll.overlays += image('icons/mob/screen_gen.dmi',"[O.limb_name][icon_num]") + + if(nutrition_icon) + switch(nutrition) + if(450 to INFINITY) nutrition_icon.icon_state = "nutrition0" + if(350 to 450) nutrition_icon.icon_state = "nutrition1" + if(250 to 350) nutrition_icon.icon_state = "nutrition2" + if(150 to 250) nutrition_icon.icon_state = "nutrition3" + else nutrition_icon.icon_state = "nutrition4" + + if(pressure) + pressure.icon_state = "pressure[pressure_alert]" + + if(pullin) + if(pulling) pullin.icon_state = "pull1" + else pullin.icon_state = "pull0" // if(rest) //Not used with new UI // if(resting || lying || sleeping) rest.icon_state = "rest1" // else rest.icon_state = "rest0" - if(toxin) - if(hal_screwyhud == 4 || toxins_alert) toxin.icon_state = "tox1" - else toxin.icon_state = "tox0" - if(oxygen) - if(hal_screwyhud == 3 || oxygen_alert) oxygen.icon_state = "oxy1" - else oxygen.icon_state = "oxy0" - if(fire) - if(fire_alert) fire.icon_state = "fire[fire_alert]" //fire_alert is either 0 if no alert, 1 for cold and 2 for heat. - else fire.icon_state = "fire0" + if(toxin) + if(hal_screwyhud == 4 || toxins_alert) toxin.icon_state = "tox1" + else toxin.icon_state = "tox0" + if(oxygen) + if(hal_screwyhud == 3 || oxygen_alert) oxygen.icon_state = "oxy1" + else oxygen.icon_state = "oxy0" + if(fire) + if(fire_alert) fire.icon_state = "fire[fire_alert]" //fire_alert is either 0 if no alert, 1 for cold and 2 for heat. + else fire.icon_state = "fire0" - if(bodytemp) - if (!species) - switch(bodytemperature) //310.055 optimal body temp - if(370 to INFINITY) bodytemp.icon_state = "temp4" - if(350 to 370) bodytemp.icon_state = "temp3" - if(335 to 350) bodytemp.icon_state = "temp2" - if(320 to 335) bodytemp.icon_state = "temp1" - if(300 to 320) bodytemp.icon_state = "temp0" - if(295 to 300) bodytemp.icon_state = "temp-1" - if(280 to 295) bodytemp.icon_state = "temp-2" - if(260 to 280) bodytemp.icon_state = "temp-3" - else bodytemp.icon_state = "temp-4" - else - var/temp_step - if (bodytemperature >= species.body_temperature) - temp_step = (species.heat_level_1 - species.body_temperature)/4 + if(bodytemp) + if (!species) + switch(bodytemperature) //310.055 optimal body temp + if(370 to INFINITY) bodytemp.icon_state = "temp4" + if(350 to 370) bodytemp.icon_state = "temp3" + if(335 to 350) bodytemp.icon_state = "temp2" + if(320 to 335) bodytemp.icon_state = "temp1" + if(300 to 320) bodytemp.icon_state = "temp0" + if(295 to 300) bodytemp.icon_state = "temp-1" + if(280 to 295) bodytemp.icon_state = "temp-2" + if(260 to 280) bodytemp.icon_state = "temp-3" + else bodytemp.icon_state = "temp-4" + else + var/temp_step + if (bodytemperature >= species.body_temperature) + temp_step = (species.heat_level_1 - species.body_temperature)/4 - if (bodytemperature >= species.heat_level_1) - bodytemp.icon_state = "temp4" - else if (bodytemperature >= species.body_temperature + temp_step*3) - bodytemp.icon_state = "temp3" - else if (bodytemperature >= species.body_temperature + temp_step*2) - bodytemp.icon_state = "temp2" - else if (bodytemperature >= species.body_temperature + temp_step*1) - bodytemp.icon_state = "temp1" - else - bodytemp.icon_state = "temp0" + if (bodytemperature >= species.heat_level_1) + bodytemp.icon_state = "temp4" + else if (bodytemperature >= species.body_temperature + temp_step*3) + bodytemp.icon_state = "temp3" + else if (bodytemperature >= species.body_temperature + temp_step*2) + bodytemp.icon_state = "temp2" + else if (bodytemperature >= species.body_temperature + temp_step*1) + bodytemp.icon_state = "temp1" + else + bodytemp.icon_state = "temp0" - else if (bodytemperature < species.body_temperature) - temp_step = (species.body_temperature - species.cold_level_1)/4 + else if (bodytemperature < species.body_temperature) + temp_step = (species.body_temperature - species.cold_level_1)/4 - if (bodytemperature <= species.cold_level_1) - bodytemp.icon_state = "temp-4" - else if (bodytemperature <= species.body_temperature - temp_step*3) - bodytemp.icon_state = "temp-3" - else if (bodytemperature <= species.body_temperature - temp_step*2) - bodytemp.icon_state = "temp-2" - else if (bodytemperature <= species.body_temperature - temp_step*1) - bodytemp.icon_state = "temp-1" - else - bodytemp.icon_state = "temp0" + if (bodytemperature <= species.cold_level_1) + bodytemp.icon_state = "temp-4" + else if (bodytemperature <= species.body_temperature - temp_step*3) + bodytemp.icon_state = "temp-3" + else if (bodytemperature <= species.body_temperature - temp_step*2) + bodytemp.icon_state = "temp-2" + else if (bodytemperature <= species.body_temperature - temp_step*1) + bodytemp.icon_state = "temp-1" + else + bodytemp.icon_state = "temp0" // This checks how much the mob's eyewear impairs their vision - if(tinttotal >= TINT_IMPAIR) - if(tinted_weldhelh) - if(tinttotal >= TINT_BLIND) - blinded = 1 // You get the sudden urge to learn to play keyboard - client.screen += global_hud.darkMask - else - client.screen += global_hud.darkMask - - if(blind) - if(blinded) blind.layer = 18 - else blind.layer = 0 - - if(disabilities & NEARSIGHTED) //this looks meh but saves a lot of memory by not requiring to add var/prescription - if(glasses) //to every /obj/item - var/obj/item/clothing/glasses/G = glasses - if(!G.prescription) - client.screen += global_hud.vimpaired + if(tinttotal >= TINT_IMPAIR) + if(tinted_weldhelh) + if(tinttotal >= TINT_BLIND) + blinded = 1 // You get the sudden urge to learn to play keyboard + client.screen += global_hud.darkMask else + client.screen += global_hud.darkMask + + if(blind) + if(blinded) blind.layer = 18 + else blind.layer = 0 + + if(disabilities & NEARSIGHTED) //this looks meh but saves a lot of memory by not requiring to add var/prescription + if(glasses) //to every /obj/item + var/obj/item/clothing/glasses/G = glasses + if(!G.prescription) client.screen += global_hud.vimpaired - - if(eye_blurry) client.screen += global_hud.blurry - if(druggy) client.screen += global_hud.druggy - - if(machine) - if(!machine.check_eye(src)) reset_view(null) else - var/isRemoteObserve = 0 - if((REMOTE_VIEW in mutations) && remoteview_target) - isRemoteObserve = 1 - // Is he unconscious or dead? - if(remoteview_target.stat!=CONSCIOUS) - src << "\red Your psy-connection grows too faint to maintain!" - isRemoteObserve = 0 + client.screen += global_hud.vimpaired - // Does he have psy resist? - if(PSY_RESIST in remoteview_target.mutations) - src << "\red Your mind is shut out!" - isRemoteObserve = 0 + if(eye_blurry) client.screen += global_hud.blurry + if(druggy) client.screen += global_hud.druggy - // Not on the station or mining? - var/turf/temp_turf = get_turf(remoteview_target) - if((!(temp_turf.z in config.contact_levels)) || remoteview_target.stat!=CONSCIOUS) - src << "\red Your psy-connection grows too faint to maintain!" - isRemoteObserve = 0 - if(!isRemoteObserve && client && !client.adminobs) - remoteview_target = null - reset_view(null) - return 1 + if(machine) + if(!machine.check_eye(src)) reset_view(null) + else + var/isRemoteObserve = 0 + if((REMOTE_VIEW in mutations) && remoteview_target) + isRemoteObserve = 1 + // Is he unconscious or dead? + if(remoteview_target.stat!=CONSCIOUS) + src << "Your psy-connection grows too faint to maintain!" + isRemoteObserve = 0 - proc/handle_random_events() - // Puke if toxloss is too high - if(!stat) - if (getToxLoss() >= 45 && nutrition > 20) - vomit() + // Does he have psy resist? + if(PSY_RESIST in remoteview_target.mutations) + src << "Your mind is shut out!" + isRemoteObserve = 0 - //0.1% chance of playing a scary sound to someone who's in complete darkness - if(isturf(loc) && rand(1,1000) == 1) - var/turf/currentTurf = loc - var/atom/movable/lighting_overlay/L = locate(/atom/movable/lighting_overlay) in currentTurf - if(L && L.lum_r + L.lum_g + L.lum_b == 0) - playsound_local(src,pick(scarySounds),50, 1, -1) + // Not on the station or mining? + var/turf/temp_turf = get_turf(remoteview_target) + if((!(temp_turf.z in config.contact_levels)) || remoteview_target.stat!=CONSCIOUS) + src << "Your psy-connection grows too faint to maintain!" + isRemoteObserve = 0 + if(!isRemoteObserve && client && !client.adminobs) + remoteview_target = null + reset_view(null) + return 1 + +/mob/living/carbon/human/proc/handle_random_events() + // Puke if toxloss is too high + if(!stat) + if (getToxLoss() >= 45 && nutrition > 20) + vomit() + + //0.1% chance of playing a scary sound to someone who's in complete darkness + if(isturf(loc) && rand(1,1000) == 1) + var/turf/currentTurf = loc + var/atom/movable/lighting_overlay/L = locate(/atom/movable/lighting_overlay) in currentTurf + if(L && L.lum_r + L.lum_g + L.lum_b == 0) + playsound_local(src,pick(scarySounds),50, 1, -1) // Separate proc so we can jump out of it when we've succeeded in spreading disease. - proc/findAirborneVirii() - for(var/obj/effect/decal/cleanable/blood/B in get_turf(src)) - if(B.virus2.len) - for (var/ID in B.virus2) - var/datum/disease2/disease/V = B.virus2[ID] - if (infect_virus2(src,V)) - return 1 +/mob/living/carbon/human/proc/findAirborneVirii() + for(var/obj/effect/decal/cleanable/blood/B in get_turf(src)) + if(B.virus2.len) + for (var/ID in B.virus2) + var/datum/disease2/disease/V = B.virus2[ID] + if (infect_virus2(src,V)) + return 1 - for(var/obj/effect/decal/cleanable/mucus/M in get_turf(src)) - if(M.virus2.len) - for (var/ID in M.virus2) - var/datum/disease2/disease/V = M.virus2[ID] - if (infect_virus2(src,V)) - return 1 + for(var/obj/effect/decal/cleanable/mucus/M in get_turf(src)) + if(M.virus2.len) + for (var/ID in M.virus2) + var/datum/disease2/disease/V = M.virus2[ID] + if (infect_virus2(src,V)) + return 1 - for(var/obj/effect/decal/cleanable/poop/P in get_turf(src)) - if(P.virus2.len) - for (var/ID in P.virus2) - var/datum/disease2/disease/V = P.virus2[ID] - if (infect_virus2(src,V)) - return 1 + for(var/obj/effect/decal/cleanable/poop/P in get_turf(src)) + if(P.virus2.len) + for (var/ID in P.virus2) + var/datum/disease2/disease/V = P.virus2[ID] + if (infect_virus2(src,V)) + return 1 - return 0 - - proc/handle_virus_updates() - if(status_flags & GODMODE) return 0 //godmode - if(bodytemperature > 406) - for (var/ID in virus2) - var/datum/disease2/disease/V = virus2[ID] - V.cure(src) - if(life_tick % 3) //don't spam checks over all objects in view every tick. - for(var/obj/effect/decal/cleanable/O in view(1,src)) - if(istype(O,/obj/effect/decal/cleanable/blood)) - var/obj/effect/decal/cleanable/blood/B = O - if(B.virus2.len) - for (var/ID in B.virus2) - var/datum/disease2/disease/V = B.virus2[ID] - infect_virus2(src,V.getcopy()) - - else if(istype(O,/obj/effect/decal/cleanable/mucus)) - var/obj/effect/decal/cleanable/mucus/M = O - if(M.virus2.len) - for (var/ID in M.virus2) - var/datum/disease2/disease/V = M.virus2[ID] - infect_virus2(src,V.getcopy()) - + return 0 +/mob/living/carbon/human/proc/handle_virus_updates() + if(status_flags & GODMODE) return 0 //godmode + if(bodytemperature > 406) for (var/ID in virus2) var/datum/disease2/disease/V = virus2[ID] - if(isnull(V)) // Trying to figure out a runtime error that keeps repeating - CRASH("virus2 nulled before calling activate()") - else - V.activate(src) - // activate may have deleted the virus - if(!V) continue + V.cure(src) + if(life_tick % 3) //don't spam checks over all objects in view every tick. + for(var/obj/effect/decal/cleanable/O in view(1,src)) + if(istype(O,/obj/effect/decal/cleanable/blood)) + var/obj/effect/decal/cleanable/blood/B = O + if(B.virus2.len) + for (var/ID in B.virus2) + var/datum/disease2/disease/V = B.virus2[ID] + infect_virus2(src,V.getcopy()) - // check if we're immune - if(V.antigen & src.antibodies) - V.dead = 1 + else if(istype(O,/obj/effect/decal/cleanable/mucus)) + var/obj/effect/decal/cleanable/mucus/M = O + if(M.virus2.len) + for (var/ID in M.virus2) + var/datum/disease2/disease/V = M.virus2[ID] + infect_virus2(src,V.getcopy()) + + + for (var/ID in virus2) + var/datum/disease2/disease/V = virus2[ID] + if(isnull(V)) // Trying to figure out a runtime error that keeps repeating + CRASH("virus2 nulled before calling activate()") + else + V.activate(src) + // activate may have deleted the virus + if(!V) continue + + // check if we're immune + if(V.antigen & src.antibodies) + V.dead = 1 + return + +/mob/living/carbon/human/proc/handle_stomach() + spawn(0) + for(var/mob/living/M in stomach_contents) + if(M.loc != src) + stomach_contents.Remove(M) + continue + if(isliving(M) && stat != 2) + if(M.stat == 2) + M.death(1) + stomach_contents.Remove(M) + qdel(M) + continue + if(mob_master.current_cycle%3==1) + if(!(M.status_flags & GODMODE)) + M.adjustBruteLoss(5) + nutrition += 10 + +/mob/living/carbon/human/proc/handle_changeling() + if(mind && mind.changeling) + mind.changeling.regenerate() + +/mob/living/carbon/human/handle_shock() + ..() + if(status_flags & GODMODE) return 0 //godmode + if(analgesic || (species && species.flags & NO_PAIN)) return // analgesic avoids all traumatic shock temporarily + + if(health <= config.health_threshold_softcrit)// health 0 makes you immediately collapse + shock_stage = max(shock_stage, 61) + + if(traumatic_shock >= 100) + shock_stage += 1 + else + shock_stage = min(shock_stage, 160) + shock_stage = max(shock_stage-1, 0) return - proc/handle_stomach() - spawn(0) - for(var/mob/living/M in stomach_contents) - if(M.loc != src) - stomach_contents.Remove(M) - continue - if(isliving(M) && stat != 2) - if(M.stat == 2) - M.death(1) - stomach_contents.Remove(M) - del(M) - continue - if(mob_master.current_cycle%3==1) - if(!(M.status_flags & GODMODE)) - M.adjustBruteLoss(5) - nutrition += 10 + if(shock_stage == 10) + src << ""+pick("It hurts so much!", "You really need some painkillers..", "Dear god, the pain!") - proc/handle_changeling() - if(mind && mind.changeling) - mind.changeling.regenerate() + if(shock_stage >= 30) + if(shock_stage == 30) emote("me",1,"is having trouble keeping their eyes open.") + eye_blurry = max(2, eye_blurry) + stuttering = max(stuttering, 5) - handle_shock() - ..() - if(status_flags & GODMODE) return 0 //godmode - if(analgesic || (species && species.flags & NO_PAIN)) return // analgesic avoids all traumatic shock temporarily + if(shock_stage == 40) + src << ""+pick("The pain is excrutiating!", "Please, just end the pain!", "Your whole body is going numb!") - if(health <= config.health_threshold_softcrit)// health 0 makes you immediately collapse - shock_stage = max(shock_stage, 61) - - if(traumatic_shock >= 100) - shock_stage += 1 - else - shock_stage = min(shock_stage, 160) - shock_stage = max(shock_stage-1, 0) - return - - if(shock_stage == 10) - src << ""+pick("It hurts so much!", "You really need some painkillers..", "Dear god, the pain!") - - if(shock_stage >= 30) - if(shock_stage == 30) emote("me",1,"is having trouble keeping their eyes open.") - eye_blurry = max(2, eye_blurry) - stuttering = max(stuttering, 5) - - if(shock_stage == 40) + if(shock_stage >=60) + if(shock_stage == 60) emote("me",1,"'s body becomes limp.") + if (prob(2)) src << ""+pick("The pain is excrutiating!", "Please, just end the pain!", "Your whole body is going numb!") - - if(shock_stage >=60) - if(shock_stage == 60) emote("me",1,"'s body becomes limp.") - if (prob(2)) - src << ""+pick("The pain is excrutiating!", "Please, just end the pain!", "Your whole body is going numb!") - Weaken(20) - - if(shock_stage >= 80) - if (prob(5)) - src << ""+pick("The pain is excrutiating!", "Please, just end the pain!", "Your whole body is going numb!") - Weaken(20) - - if(shock_stage >= 120) - if (prob(2)) - src << ""+pick("You black out!", "You feel like you could die any moment now.", "You're about to lose consciousness.") - Paralyse(5) - - if(shock_stage == 150) - emote("me",1,"can no longer stand, collapsing!") Weaken(20) - if(shock_stage >= 150) + if(shock_stage >= 80) + if (prob(5)) + src << ""+pick("The pain is excrutiating!", "Please, just end the pain!", "Your whole body is going numb!") Weaken(20) + if(shock_stage >= 120) + if (prob(2)) + src << ""+pick("You black out!", "You feel like you could die any moment now.", "You're about to lose consciousness.") + Paralyse(5) - proc/handle_pulse() + if(shock_stage == 150) + emote("me",1,"can no longer stand, collapsing!") + Weaken(20) - if(life_tick % 5) return pulse //update pulse every 5 life ticks (~1 tick/sec, depending on server load) + if(shock_stage >= 150) + Weaken(20) - if(species && species.flags & NO_BLOOD) return PULSE_NONE //No blood, no pulse. - if(stat == DEAD) - return PULSE_NONE //that's it, you're dead, nothing can influence your pulse +/mob/living/carbon/human/proc/handle_pulse() - if(heart_attack) - return PULSE_NONE + if(life_tick % 5) return pulse //update pulse every 5 life ticks (~1 tick/sec, depending on server load) - var/temp = PULSE_NORM + if(species && species.flags & NO_BLOOD) return PULSE_NONE //No blood, no pulse. - if(round(vessel.get_reagent_amount("blood")) <= BLOOD_VOLUME_BAD) //how much blood do we have - temp = PULSE_THREADY //not enough :( + if(stat == DEAD) + return PULSE_NONE //that's it, you're dead, nothing can influence your pulse - if(status_flags & FAKEDEATH) - temp = PULSE_NONE //pretend that we're dead. unlike actual death, can be inflienced by meds + if(heart_attack) + return PULSE_NONE - for(var/datum/reagent/R in reagents.reagent_list) - if(R.id in bradycardics) - if(temp <= PULSE_THREADY && temp >= PULSE_NORM) - temp-- - break //one reagent is enough - //comment out the breaks to make med effects stack - for(var/datum/reagent/R in reagents.reagent_list) //handles different chems' influence on pulse - if(R.id in tachycardics) - if(temp <= PULSE_FAST && temp >= PULSE_NONE) - temp++ - break - for(var/datum/reagent/R in reagents.reagent_list) //To avoid using fakedeath - if(R.id in heartstopper) + var/temp = PULSE_NORM + + if(round(vessel.get_reagent_amount("blood")) <= BLOOD_VOLUME_BAD) //how much blood do we have + temp = PULSE_THREADY //not enough :( + + if(status_flags & FAKEDEATH) + temp = PULSE_NONE //pretend that we're dead. unlike actual death, can be inflienced by meds + + for(var/datum/reagent/R in reagents.reagent_list) + if(R.id in bradycardics) + if(temp <= PULSE_THREADY && temp >= PULSE_NORM) + temp-- + break //one reagent is enough + //comment out the breaks to make med effects stack + for(var/datum/reagent/R in reagents.reagent_list) //handles different chems' influence on pulse + if(R.id in tachycardics) + if(temp <= PULSE_FAST && temp >= PULSE_NONE) + temp++ + break + for(var/datum/reagent/R in reagents.reagent_list) //To avoid using fakedeath + if(R.id in heartstopper) + temp = PULSE_NONE + break + for(var/datum/reagent/R in reagents.reagent_list) //Conditional heart-stoppage + if(R.id in cheartstopper) + if(R.volume >= R.overdose_threshold) temp = PULSE_NONE break - for(var/datum/reagent/R in reagents.reagent_list) //Conditional heart-stoppage - if(R.id in cheartstopper) - if(R.volume >= R.overdose_threshold) - temp = PULSE_NONE - break - return temp + return temp - proc/handle_decay() - var/decaytime = world.time - timeofdeath +/mob/living/carbon/human/proc/handle_decay() + var/decaytime = world.time - timeofdeath - if(species.flags & IS_SYNTHETIC) - return + if(species.flags & IS_SYNTHETIC) + return - if(reagents.has_reagent("formaldehyde")) //embalming fluid stops decay - return + if(reagents.has_reagent("formaldehyde")) //embalming fluid stops decay + return - if(decaytime <= 6000) //10 minutes for decaylevel1 -- stinky - return + if(decaytime <= 6000) //10 minutes for decaylevel1 -- stinky + return - if(decaytime > 6000 && decaytime <= 12000)//20 minutes for decaylevel2 -- bloated and very stinky - decaylevel = 1 + if(decaytime > 6000 && decaytime <= 12000)//20 minutes for decaylevel2 -- bloated and very stinky + decaylevel = 1 - if(decaytime > 12000 && decaytime <= 18000)//30 minutes for decaylevel3 -- rotting and gross - decaylevel = 2 + if(decaytime > 12000 && decaytime <= 18000)//30 minutes for decaylevel3 -- rotting and gross + decaylevel = 2 - if(decaytime > 18000 && decaytime <= 27000)//45 minutes for decaylevel4 -- skeleton - decaylevel = 3 + if(decaytime > 18000 && decaytime <= 27000)//45 minutes for decaylevel4 -- skeleton + decaylevel = 3 - if(decaytime > 27000) - decaylevel = 4 - makeSkeleton() - return //No puking over skeletons, they don't smell at all! + if(decaytime > 27000) + decaylevel = 4 + makeSkeleton() + return //No puking over skeletons, they don't smell at all! - for(var/mob/living/carbon/human/H in range(decaylevel, src)) - if(prob(5)) - if(airborne_can_reach(get_turf(src), get_turf(H))) - if(istype(loc,/obj/item/bodybag)) - return - var/obj/item/clothing/mask/M = H.wear_mask - if(M && (M.flags & MASKCOVERSMOUTH)) - return - if(H.species && H.species.flags & NO_BREATHE) - return //no puking if you can't smell! - H << "You smell something foul..." - H.fakevomit() - - proc/handle_heartbeat() - var/client/C = src.client - if(C && C.prefs.sound & SOUND_HEARTBEAT) //disable heartbeat by pref - var/obj/item/organ/heart/H = internal_organs_by_name["heart"] - - if(!H) //H.status will runtime if there is no H (obviously) - return - - if(H.status & ORGAN_ROBOT) //Handle robotic hearts specially with a wuuuubb. This also applies to machine-people. - if(shock_stage >= 10 || istype(get_turf(src), /turf/space)) - //PULSE_THREADY - maximum value for pulse, currently it 5. - //High pulse value corresponds to a fast rate of heartbeat. - //Divided by 2, otherwise it is too slow. - var/rate = (PULSE_THREADY - 2)/2 //machine people (main target) have no pulse, manually subtract standard human pulse (2). Mechanic-heart humans probably have a pulse, but 'advanced neural systems' keep the heart rate steady, or something - - if(heartbeat >= rate) - heartbeat = 0 - src << sound('sound/effects/electheart.ogg',0,0,0,30) //Credit to GhostHack (www.ghosthack.de) for sound. - else - heartbeat++ + for(var/mob/living/carbon/human/H in range(decaylevel, src)) + if(prob(5)) + if(airborne_can_reach(get_turf(src), get_turf(H))) + if(istype(loc,/obj/item/bodybag)) return - return + var/obj/item/clothing/mask/M = H.wear_mask + if(M && (M.flags & MASKCOVERSMOUTH)) + return + if(H.species && H.species.flags & NO_BREATHE) + return //no puking if you can't smell! + H << "You smell something foul..." + H.fakevomit() - if(pulse == PULSE_NONE) - return +/mob/living/carbon/human/proc/handle_heartbeat() + var/client/C = src.client + if(C && C.prefs.sound & SOUND_HEARTBEAT) //disable heartbeat by pref + var/obj/item/organ/heart/H = internal_organs_by_name["heart"] - if(pulse >= PULSE_2FAST || shock_stage >= 10 || istype(get_turf(src), /turf/space)) + if(!H) //H.status will runtime if there is no H (obviously) + return + + if(H.status & ORGAN_ROBOT) //Handle robotic hearts specially with a wuuuubb. This also applies to machine-people. + if(shock_stage >= 10 || istype(get_turf(src), /turf/space)) //PULSE_THREADY - maximum value for pulse, currently it 5. //High pulse value corresponds to a fast rate of heartbeat. //Divided by 2, otherwise it is too slow. - var/rate = (PULSE_THREADY - pulse)/2 + var/rate = (PULSE_THREADY - 2)/2 //machine people (main target) have no pulse, manually subtract standard human pulse (2). Mechanic-heart humans probably have a pulse, but 'advanced neural systems' keep the heart rate steady, or something if(heartbeat >= rate) heartbeat = 0 - if(H.status & ORGAN_ASSISTED) - src << sound('sound/effects/pacemakebeat.ogg',0,0,0,50) - else - src << sound('sound/effects/singlebeat.ogg',0,0,0,50) + src << sound('sound/effects/electheart.ogg',0,0,0,30) //Credit to GhostHack (www.ghosthack.de) for sound. else heartbeat++ + return + return + + if(pulse == PULSE_NONE) + return + + if(pulse >= PULSE_2FAST || shock_stage >= 10 || istype(get_turf(src), /turf/space)) + //PULSE_THREADY - maximum value for pulse, currently it 5. + //High pulse value corresponds to a fast rate of heartbeat. + //Divided by 2, otherwise it is too slow. + var/rate = (PULSE_THREADY - pulse)/2 + + if(heartbeat >= rate) + heartbeat = 0 + if(H.status & ORGAN_ASSISTED) + src << sound('sound/effects/pacemakebeat.ogg',0,0,0,50) + else + src << sound('sound/effects/singlebeat.ogg',0,0,0,50) + else + heartbeat++ /* Called by life(), instead of having the individual hud items update icons each tick and check for status changes diff --git a/code/modules/mob/living/carbon/human/species/apollo.dm b/code/modules/mob/living/carbon/human/species/apollo.dm index 1528307d566..fa428ac43a2 100644 --- a/code/modules/mob/living/carbon/human/species/apollo.dm +++ b/code/modules/mob/living/carbon/human/species/apollo.dm @@ -60,7 +60,7 @@ H << "[M] grips your antennae and starts violently pulling!" do_after(H, 250) if(p_loc == M.loc && p_loc_m == H.loc) - del(H.internal_organs_by_name["antennae"]) + qdel(H.internal_organs_by_name["antennae"]) H.remove_language("Wryn Hivemind") new /obj/item/organ/wryn/hivenode(M.loc) M << "You hear a loud crunch as you mercilessly pull off [H]'s antennae." @@ -110,4 +110,4 @@ H.visible_message("\red[H]'s body explodes, leaving behind a pile of microscopic crystals!") explosion(T, 0, 0, 2, 2) // Create a small explosion burst upon death // new /obj/item/weapon/shard/supermatter( T ) - del(H) \ No newline at end of file + qdel(H) \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index f7bc6239a26..5113ea3144e 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -122,7 +122,7 @@ for(var/obj/item/organ/organ in H.contents) if((organ in H.organs) || (organ in H.internal_organs)) - del(organ) + qdel(organ) if(H.organs) H.organs.Cut() if(H.internal_organs) H.internal_organs.Cut() diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index ac83f3115d4..c2d10e26143 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -243,7 +243,7 @@ var/global/list/damage_icon_parts = list() //0 = destroyed, 1 = normal, 2 = robotic, 3 = necrotic. //Create a new, blank icon for our mob to use. if(stand_icon) - del(stand_icon) + qdel(stand_icon) stand_icon = new(species.icon_template ? species.icon_template : 'icons/mob/human.dmi',"blank") var/icon_key = "[species.race_key][g][s_tone][r_skin][g_skin][b_skin]" var/obj/item/organ/eyes/eyes = internal_organs_by_name["eyes"] @@ -447,7 +447,7 @@ var/global/list/damage_icon_parts = list() if (targeted_by && target_locked) overlays_standing[TARGETED_LAYER] = target_locked else if (!targeted_by && target_locked) - del(target_locked) + qdel(target_locked) if (!targeted_by) overlays_standing[TARGETED_LAYER] = null if(update_icons) update_icons() diff --git a/code/modules/mob/living/carbon/human/whisper.dm b/code/modules/mob/living/carbon/human/whisper.dm index 0e59d8fc745..3ba7ade2e25 100644 --- a/code/modules/mob/living/carbon/human/whisper.dm +++ b/code/modules/mob/living/carbon/human/whisper.dm @@ -133,7 +133,7 @@ //now mobs var/speech_bubble_test = say_test(message) var/image/speech_bubble = image('icons/mob/talk.dmi',src,"h[speech_bubble_test]") - spawn(30) del(speech_bubble) + spawn(30) qdel(speech_bubble) for(var/mob/M in listening) M << speech_bubble diff --git a/code/modules/mob/living/carbon/metroid/metroid.dm b/code/modules/mob/living/carbon/metroid/metroid.dm index 1981bb8ec6c..aede207673f 100644 --- a/code/modules/mob/living/carbon/metroid/metroid.dm +++ b/code/modules/mob/living/carbon/metroid/metroid.dm @@ -638,7 +638,7 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75 user <<"You apply the enhancer. It now has triple the amount of uses." Uses = 3 enhanced = 1 - del(O) + qdel(O) /obj/item/slime_extract/New() ..() @@ -777,14 +777,14 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75 pet.icon_dead = "[M.colour] baby slime dead" pet.colour = "[M.colour]" user <<"You feed the slime the potion, removing it's powers and calming it." - del(M) + qdel(M) var/newname = sanitize(copytext(input(user, "Would you like to give the slime a name?", "Name your new pet", "pet slime") as null|text,1,MAX_NAME_LEN)) if (!newname) newname = "pet slime" pet.name = newname pet.real_name = newname - del(src) + qdel(src) /obj/item/weapon/slimepotion2 name = "advanced docility potion" @@ -808,14 +808,14 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75 pet.icon_dead = "[M.colour] baby slime dead" pet.colour = "[M.colour]" user <<"You feed the slime the potion, removing it's powers and calming it." - del(M) + qdel(M) var/newname = sanitize(copytext(input(user, "Would you like to give the slime a name?", "Name your new pet", "pet slime") as null|text,1,MAX_NAME_LEN)) if (!newname) newname = "pet slime" pet.name = newname pet.real_name = newname - del(src) + qdel(src) /obj/item/weapon/slimesteroid @@ -840,7 +840,7 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75 user <<"You feed the slime the steroid. It now has triple the amount of extract." M.cores = 3 - del(src) + qdel(src) /obj/item/weapon/slimesteroid2 name = "extract enhancer" @@ -885,7 +885,7 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75 G.loc = src.loc G.key = ghost.key G << "You are an adamantine golem. You move slowly, but are highly resistant to heat and cold as well as blunt trauma. You are unable to wear clothes, but can still use most tools. Serve [user], and assist them in completing their goals at any cost." - del (src) + qdel(src) proc/announce_to_ghosts() diff --git a/code/modules/mob/living/carbon/metroid/powers.dm b/code/modules/mob/living/carbon/metroid/powers.dm index 15fdb60349f..cc55ac61572 100644 --- a/code/modules/mob/living/carbon/metroid/powers.dm +++ b/code/modules/mob/living/carbon/metroid/powers.dm @@ -221,7 +221,7 @@ src.mind.transfer_to(new_slime) else new_slime.key = src.key - del(src) + qdel(src) else src << "I am not ready to reproduce yet..." else diff --git a/code/modules/mob/living/carbon/primitive/dionaold.dm b/code/modules/mob/living/carbon/primitive/dionaold.dm index a14fd3bdb50..6f0b20ce04a 100644 --- a/code/modules/mob/living/carbon/primitive/dionaold.dm +++ b/code/modules/mob/living/carbon/primitive/dionaold.dm @@ -167,7 +167,7 @@ if(istype(loc,/obj/item/weapon/holder/diona)) var/obj/item/weapon/holder/diona/L = loc src.loc = L.loc - del(L) + qdel(L) for(var/datum/language/L in languages) adult.add_language(L.name) @@ -182,7 +182,7 @@ for (var/obj/item/W in src.contents) src.unEquip(W) - del(src) + qdel(src) /mob/living/carbon/primitive/diona/verb/steal_blood() set category = "Diona" diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 4d9661c92d7..65864f5d912 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -423,7 +423,7 @@ for(var/mob/O in viewers(M, null)) O.show_message(text("\red [] has been pulled from []'s grip by []", G.affecting, G.assailant, src), 1) //G = null - del(G) + qdel(G) else ok = 0 if (locate(/obj/item/weapon/grab, M.grabbed_by.len)) @@ -485,6 +485,10 @@ if ((!(L.stat) && !(L.restrained()))) resist_grab(L) //this passes L because the proc requires a typecasted mob/living instead of just 'src' + // Sliding out of a morgue/crematorium + if(loc && (istype(loc, /obj/structure/morgue) || istype(loc, /obj/structure/crematorium))) + resist_tray(L) + //unbuckling yourself if(L.buckled && (L.last_special <= world.time) ) resist_buckle(L) //this passes L because the proc requires a typecasted mob/living instead of just 'src' @@ -565,7 +569,7 @@ for(var/obj/O in L.requests) L.requests.Remove(O) - del(O) + qdel(O) resisting++ for(var/obj/item/weapon/grab/G in usr.grabbed_by) @@ -687,6 +691,17 @@ BD.attack_hand(usr) C.open() +// resist_tray allows a mob to slide themselves out of a morgue or crematorium +/mob/living/proc/resist_tray(var/mob/living/carbon/CM) + if(!istype(CM)) + return + if (usr.stat || usr.restrained()) + return + + usr << "You attempt to slide yourself out of \the [loc]..." + var/obj/structure/S = loc + S.attack_hand(src) + /* resist_stop_drop_roll allows a mob to stop, drop, and roll in order to put out a fire burning on them. *///// /mob/living/proc/resist_stop_drop_roll(var/mob/living/carbon/CM) @@ -739,7 +754,7 @@ if(hulklien) CM.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" )) - del(CM.handcuffed) + qdel(CM.handcuffed) CM.handcuffed = null CM.update_inv_handcuffed() return diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 6d30904ec36..6a5cf755e91 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -41,30 +41,6 @@ src << "\blue Your [C.name] was disrupted!" Stun(2) -/* - //Being hit while using a deadman switch - if(istype(equipped(),/obj/item/device/assembly/signaler)) - var/obj/item/device/assembly/signaler/signaler = equipped() - if(signaler.deadman && prob(80)) - src.visible_message("\red [src] triggers their deadman's switch!") - signaler.signal() -*/ - -/* - //Stun Beams -- These were commented out, making appropriate changes here. - Dave - if(istype(P, /obj/item/projectile/beam/stun) || istype(P, /obj/item/projectile/bullet/stunshot)) - stun_effect_act(0, P.agony, def_zone, P) - src <<"\red You have been hit by [P]!" - del P - return - - if(istype(P, /obj/item/projectile/energy/electrode) || istype(P, /obj/item/projectile/bullet/stunshot)) - stun_effect_act(0, P.agony, def_zone, P) - src <<"\red You have been hit by [P]!" - del P - return -*/ - //Armor var/armor = run_armor_check(def_zone, P.flag) var/proj_sharp = is_sharp(P) diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 6d6706a056a..f34b3caf692 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -122,7 +122,7 @@ proc/get_radio_key_from_channel(var/channel) var/speech_bubble_test = say_test(message) var/image/speech_bubble = image('icons/mob/talk.dmi',src,"h[speech_bubble_test]") - spawn(30) del(speech_bubble) + spawn(30) qdel(speech_bubble) for(var/mob/M in listening) M << speech_bubble diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 63573fb70b0..30e4ad4b282 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -882,7 +882,7 @@ var/list/ai_verbs_default = list( input = input("Select a crew member:") as null|anything in personnel_list var/icon/character_icon = personnel_list[input] if(character_icon) - del(holo_icon)//Clear old icon so we're not storing it in memory. + qdel(holo_icon)//Clear old icon so we're not storing it in memory. holo_icon = getHologramIcon(icon(character_icon)) else alert("No suitable records found. Aborting.") @@ -895,7 +895,7 @@ var/list/ai_verbs_default = list( ) input = input("Please select a hologram:") as null|anything in icon_list if(input) - del(holo_icon) + qdel(holo_icon) switch(input) if("default") holo_icon = getHologramIcon(icon('icons/mob/AI.dmi',"holo1")) diff --git a/code/modules/mob/living/silicon/ai/latejoin.dm b/code/modules/mob/living/silicon/ai/latejoin.dm index 8c966d636c7..2da08205836 100644 --- a/code/modules/mob/living/silicon/ai/latejoin.dm +++ b/code/modules/mob/living/silicon/ai/latejoin.dm @@ -34,11 +34,11 @@ var/global/list/empty_playable_ai_cores = list() job_master.FreeRole(job) if(mind.objectives.len) - del(mind.objectives) + qdel(mind.objectives) mind.special_role = null else if(ticker.mode.name == "AutoTraitor") var/datum/game_mode/traitor/autotraitor/current_mode = ticker.mode current_mode.possible_traitors.Remove(src) - del(src) \ No newline at end of file + qdel(src) \ No newline at end of file diff --git a/code/modules/mob/living/silicon/death.dm b/code/modules/mob/living/silicon/death.dm index c8c7e41d94e..067e8e7928b 100644 --- a/code/modules/mob/living/silicon/death.dm +++ b/code/modules/mob/living/silicon/death.dm @@ -16,8 +16,8 @@ dead_mob_list -= src spawn(15) - if(animation) del(animation) - if(src) del(src) + if(animation) qdel(animation) + if(src) qdel(src) /mob/living/silicon/dust() death(1) @@ -37,5 +37,5 @@ dead_mob_list -= src spawn(15) - if(animation) del(animation) - if(src) del(src) + if(animation) qdel(animation) + if(src) qdel(src) diff --git a/code/modules/mob/living/silicon/pai/death.dm b/code/modules/mob/living/silicon/pai/death.dm index fea081ddfff..08ec0e706d3 100644 --- a/code/modules/mob/living/silicon/pai/death.dm +++ b/code/modules/mob/living/silicon/pai/death.dm @@ -22,8 +22,8 @@ //New pAI's get a brand new mind to prevent meta stuff from their previous life. This new mind causes problems down the line if it's not deleted here. //Read as: I have no idea what I'm doing but asking for help got me nowhere so this is what you get. - Nodrak - if(mind) del(mind) + if(mind) qdel(mind) living_mob_list -= src ghostize() if(icon_state != "[chassis]_dead") - del(src) + qdel(src) diff --git a/code/modules/mob/living/silicon/pai/life.dm b/code/modules/mob/living/silicon/pai/life.dm index 7a45d39f2ce..33055ac3d8e 100644 --- a/code/modules/mob/living/silicon/pai/life.dm +++ b/code/modules/mob/living/silicon/pai/life.dm @@ -6,7 +6,7 @@ var/turf/T = get_turf_or_move(src.loc) for (var/mob/M in viewers(T)) M.show_message("\red The data cable rapidly retracts back into its spool.", 3, "\red You hear a click and the sound of wire spooling rapidly.", 2) - del(src.cable) + qdel(src.cable) sleeping = 0 ear_deaf = 0 diff --git a/code/modules/mob/living/silicon/robot/death.dm b/code/modules/mob/living/silicon/robot/death.dm index c73bf68f1ab..60296dde007 100644 --- a/code/modules/mob/living/silicon/robot/death.dm +++ b/code/modules/mob/living/silicon/robot/death.dm @@ -17,8 +17,8 @@ living_mob_list -= src dead_mob_list -= src spawn(15) - if(animation) del(animation) - if(src) del(src) + if(animation) qdel(animation) + if(src) qdel(src) /mob/living/silicon/robot/dust() death(1) @@ -35,12 +35,12 @@ flick("dust-r", animation) new /obj/effect/decal/remains/robot(loc) - if(mmi) del(mmi) //Delete the MMI first so that it won't go popping out. + if(mmi) qdel(mmi) //Delete the MMI first so that it won't go popping out. dead_mob_list -= src spawn(15) - if(animation) del(animation) - if(src) del(src) + if(animation) qdel(animation) + if(src) qdel(src) /mob/living/silicon/robot/death(gibbed) diff --git a/code/modules/mob/living/silicon/robot/drone/drone_items.dm b/code/modules/mob/living/silicon/robot/drone/drone_items.dm index 571beea1048..f1367d3fc19 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_items.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_items.dm @@ -176,7 +176,7 @@ if(istype(M,/mob/living/simple_animal/lizard) || istype(M,/mob/living/simple_animal/mouse)) src.loc.visible_message("\red [src.loc] sucks [M] into its decompiler. There's a horrible crunching noise.","\red It's a bit of a struggle, but you manage to suck [M] into your decompiler. It makes a series of visceral crunching noises.") new/obj/effect/decal/cleanable/blood/splatter(get_turf(src)) - del(M) + qdel(M) stored_comms["wood"]++ stored_comms["wood"]++ stored_comms["plastic"]++ @@ -200,7 +200,7 @@ D << "\red You carefully and thoroughly decompile your downed fellow, storing as much of its resources as you can within yourself." - del(M) + qdel(M) new/obj/effect/decal/cleanable/blood/oil(get_turf(src)) stored_comms["metal"] += 15 @@ -267,7 +267,7 @@ else continue - del(W) + qdel(W) grabbed_something = 1 if(grabbed_something) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index b826e2e0a34..fe015b41da5 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -703,7 +703,7 @@ var/list/robot_verbs_default = list( // This doesn't work. Don't use it. //src.Destroy() // del() because it's infrequent and mobs act weird in qdel. - del(src) + qdel(src) else // Okay we're not removing the cell or an MMI, but maybe something else? var/list/removable_components = list() @@ -865,7 +865,7 @@ var/list/robot_verbs_default = list( src << "\red \b ALERT: [M.real_name] is your new master. Obey your new laws and his commands." if(src.module && istype(src.module, /obj/item/weapon/robot_module/miner)) for(var/obj/item/weapon/pickaxe/borgdrill/D in src.module.modules) - del(D) + qdel(D) src.module.modules += new /obj/item/weapon/pickaxe/diamonddrill(src.module) src.module.rebuild() if(src.module && istype(src.module, /obj/item/weapon/robot_module/medical)) @@ -1067,7 +1067,7 @@ var/list/robot_verbs_default = list( //Call when target overlay should be added/removed /mob/living/silicon/robot/update_targeted() if(!targeted_by && target_locked) - del(target_locked) + qdel(target_locked) updateicon() if (targeted_by && target_locked) overlays += target_locked @@ -1205,7 +1205,7 @@ var/list/robot_verbs_default = list( for(var/A in tile) if(istype(A, /obj/effect)) if(istype(A, /obj/effect/rune) || istype(A, /obj/effect/decal/cleanable) || istype(A, /obj/effect/overlay)) - del(A) + qdel(A) else if(istype(A, /obj/item)) var/obj/item/cleaned_item = A cleaned_item.clean_blood() diff --git a/code/modules/mob/living/simple_animal/bees.dm b/code/modules/mob/living/simple_animal/bees.dm index b6d6b13db11..6d5cd3ba6bd 100644 --- a/code/modules/mob/living/simple_animal/bees.dm +++ b/code/modules/mob/living/simple_animal/bees.dm @@ -117,7 +117,7 @@ if(feral > 0) src.strength += B.strength - del(B) + qdel(B) src.icon_state = "bees[src.strength]" if(strength > 5) icon_state = "bees_swarm" @@ -130,7 +130,7 @@ B.icon_state = "bees[B.strength]" if(src.strength <= 0) - del(src) + qdel(src) return src.icon_state = "bees[B.strength]" var/turf/simulated/floor/T = get_turf(get_step(src, pick(1,2,4,8))) @@ -179,7 +179,7 @@ if(!parent && prob(10)) strength -= 1 if(strength <= 0) - del(src) + qdel(src) else if(strength <= 5) icon_state = "bees[strength]" diff --git a/code/modules/mob/living/simple_animal/borer.dm b/code/modules/mob/living/simple_animal/borer.dm index 17eee2662d4..ad664975908 100644 --- a/code/modules/mob/living/simple_animal/borer.dm +++ b/code/modules/mob/living/simple_animal/borer.dm @@ -204,7 +204,7 @@ host.computer_id = null host.lastKnownIP = null - del(host_brain) + qdel(host_brain) host_brain = new(src) host_brain.ckey = host.ckey @@ -352,7 +352,7 @@ mob/living/simple_animal/borer/proc/detatch() if(!host.lastKnownIP) host.lastKnownIP = b2h_ip - del(host_brain) + qdel(host_brain) return diff --git a/code/modules/mob/living/simple_animal/constructs.dm b/code/modules/mob/living/simple_animal/constructs.dm index 9b579c4dadb..df9c9171c6a 100644 --- a/code/modules/mob/living/simple_animal/constructs.dm +++ b/code/modules/mob/living/simple_animal/constructs.dm @@ -33,6 +33,7 @@ real_name = name for(var/spell in construct_spells) AddSpell(new spell(src)) + updateglow() /mob/living/simple_animal/construct/Die() ..() @@ -326,6 +327,17 @@ /mob/living/simple_animal/construct/harvester/Process_Spacemove(var/check_drift = 0) return 1 + +////////////////Glow//////////////////// +/mob/living/simple_animal/construct/proc/updateglow() + overlays = 0 + var/overlay_layer = LIGHTING_LAYER + 1 + if(layer != MOB_LAYER) + overlay_layer=TURF_LAYER+0.2 + + overlays += image(icon,"glow-[icon_state]",overlay_layer) + set_light(2, -2, l_color = "#FFFFFF") + ////////////////Powers////////////////// diff --git a/code/modules/mob/living/simple_animal/friendly/corgi.dm b/code/modules/mob/living/simple_animal/friendly/corgi.dm index 8d3a43e9ab4..df86545879b 100644 --- a/code/modules/mob/living/simple_animal/friendly/corgi.dm +++ b/code/modules/mob/living/simple_animal/friendly/corgi.dm @@ -668,5 +668,5 @@ s.set_up(3, 1, src) s.start() respawnable_list += src - del src + qdel(src) return diff --git a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm index 0e924a432a3..238ef2c5852 100644 --- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm +++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm @@ -47,7 +47,7 @@ if(locate(/obj/effect/plant) in loc) var/obj/effect/plant/SV = locate(/obj/effect/plant) in loc - del(SV) + qdel(SV) if(prob(10)) say("Nom") @@ -67,7 +67,7 @@ if(!stat) if(locate(/obj/effect/plant) in loc) var/obj/effect/plant/SV = locate(/obj/effect/plant) in loc - del(SV) + qdel(SV) if(prob(10)) say("Nom") @@ -245,7 +245,7 @@ var/global/chicken_count = 0 if(!stat && eggsleft < 8) user.visible_message("\blue [user] feeds [O] to [name]! It clucks happily.","\blue You feed [O] to [name]! It clucks happily.") user.drop_item() - del(O) + qdel(O) eggsleft += rand(1, 4) //world << eggsleft else @@ -276,7 +276,7 @@ var/global/chicken_count = 0 visible_message("[src] hatches with a quiet cracking sound.") new /mob/living/simple_animal/chick(get_turf(src)) processing_objects.Remove(src) - del(src) + qdel(src) else processing_objects.Remove(src) diff --git a/code/modules/mob/living/simple_animal/friendly/slime.dm b/code/modules/mob/living/simple_animal/friendly/slime.dm index df1fc75659d..d44cdde68ab 100644 --- a/code/modules/mob/living/simple_animal/friendly/slime.dm +++ b/code/modules/mob/living/simple_animal/friendly/slime.dm @@ -81,4 +81,4 @@ S2.icon_living = "[src.colour] baby slime" S2.icon_dead = "[src.colour] baby slime dead" S2.colour = "[src.colour]" - del(src) \ No newline at end of file + qdel(src) \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/hostile/hivebot.dm b/code/modules/mob/living/simple_animal/hostile/hivebot.dm index 91e99507875..8a88958fa18 100644 --- a/code/modules/mob/living/simple_animal/hostile/hivebot.dm +++ b/code/modules/mob/living/simple_animal/hostile/hivebot.dm @@ -100,7 +100,7 @@ if("rapid") new /mob/living/simple_animal/hostile/hivebot/rapid(get_turf(src)) spawn(100) - del(src) + qdel(src) return diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/drone.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/drone.dm index 58be749d984..e4b9fe7ac0f 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/drone.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/drone.dm @@ -159,7 +159,7 @@ /mob/living/simple_animal/hostile/retaliate/malf_drone/Die() src.visible_message("\blue \icon[src] [src] suddenly breaks apart.") ..() - del(src) + qdel(src) /mob/living/simple_animal/hostile/retaliate/malf_drone/Destroy() //some random debris left behind diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/undead.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/undead.dm index 417e4d99f3e..01178af83f2 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/undead.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/undead.dm @@ -69,7 +69,7 @@ ..() /mob/living/simple_animal/hostile/retaliate/ghost/Die() new /obj/item/weapon/reagent_containers/food/snacks/ectoplasm(loc) - del src + qdel(src) return /mob/living/simple_animal/hostile/retaliate/skeleton @@ -107,7 +107,7 @@ /mob/living/simple_animal/hostile/retaliate/skeleton/Die() new /obj/effect/decal/remains/human(loc) - del src + qdel(src) return /mob/living/simple_animal/hostile/retaliate/zombie @@ -145,5 +145,5 @@ /mob/living/simple_animal/hostile/retaliate/zombie/Die() new /obj/effect/decal/cleanable/blood/gibs(loc) - del src + qdel(src) return \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/hostile/russian.dm b/code/modules/mob/living/simple_animal/hostile/russian.dm index b594de5e398..d1140f38c5b 100644 --- a/code/modules/mob/living/simple_animal/hostile/russian.dm +++ b/code/modules/mob/living/simple_animal/hostile/russian.dm @@ -57,5 +57,5 @@ new corpse (src.loc) if(weapon1) new weapon1 (src.loc) - del src + qdel(src) return \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/hostile/syndicate.dm b/code/modules/mob/living/simple_animal/hostile/syndicate.dm index d7ac5db34f6..a83eddf5e84 100644 --- a/code/modules/mob/living/simple_animal/hostile/syndicate.dm +++ b/code/modules/mob/living/simple_animal/hostile/syndicate.dm @@ -42,7 +42,7 @@ new weapon1 (src.loc) if(weapon2) new weapon2 (src.loc) - del src + qdel(src) return ///////////////Sword and shield//////////// @@ -165,5 +165,5 @@ /mob/living/simple_animal/hostile/viscerator/Die() ..() visible_message("\red [src] is smashed into pieces!") - del src + qdel(src) return \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/hostile/tree.dm b/code/modules/mob/living/simple_animal/hostile/tree.dm index c03e6dbdcb0..2d49cbf836d 100644 --- a/code/modules/mob/living/simple_animal/hostile/tree.dm +++ b/code/modules/mob/living/simple_animal/hostile/tree.dm @@ -54,4 +54,4 @@ ..() visible_message("\red [src] is hacked into pieces!") new /obj/item/stack/sheet/wood(loc) - del(src) \ No newline at end of file + qdel(src) \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/shade.dm b/code/modules/mob/living/simple_animal/shade.dm index aa1a9509b5a..c722ac36e80 100644 --- a/code/modules/mob/living/simple_animal/shade.dm +++ b/code/modules/mob/living/simple_animal/shade.dm @@ -36,7 +36,7 @@ if((M.client && !( M.blinded ))) M.show_message("\red [src] lets out a contented sigh as their form unwinds. ") ghostize() - del src + qdel(src) return diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 5513002abd2..f95ad48c2a5 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -399,7 +399,7 @@ adjustBruteLoss(-MED.heal_brute) MED.amount -= 1 if(MED.amount <= 0) - del(MED) + qdel(MED) for(var/mob/M in viewers(src, null)) if ((M.client && !( M.blinded ))) M.show_message("\blue [user] applies [MED] on [src]") diff --git a/code/modules/mob/living/simple_animal/tribbles.dm b/code/modules/mob/living/simple_animal/tribbles.dm index fa8051f43a2..b4eac82db6c 100644 --- a/code/modules/mob/living/simple_animal/tribbles.dm +++ b/code/modules/mob/living/simple_animal/tribbles.dm @@ -49,7 +49,7 @@ var/global/totaltribbles = 0 //global variable so it updates for all tribbles, T.gestation = src.gestation T.pickup(user) user.put_in_active_hand(T) - del(src) + qdel(src) /mob/living/simple_animal/tribble/attackby(var/obj/item/weapon/O as obj, var/mob/user as mob, params) @@ -109,7 +109,7 @@ var/global/totaltribbles = 0 //global variable so it updates for all tribbles, T.gestation = src.gestation user << "The tribble gets up and wanders around." - del(src) + qdel(src) /obj/item/toy/tribble/attackby(var/obj/item/weapon/O as obj, var/mob/user as mob) //neutering and un-neutering ..() @@ -162,7 +162,7 @@ var/global/totaltribbles = 0 //global variable so it updates for all tribbles, if (prob(75)) new /obj/item/weapon/shard( src.loc ) Break() - del(src) + qdel(src) /obj/structure/tribble_cage/proc/healthcheck() diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 1a42d6f9614..f8eeff8c5f1 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -168,7 +168,7 @@ if(!W.mob_can_equip(src, slot, disable_warning)) if(del_on_fail) - del(W) + qdel(W) else if(!disable_warning) src << "\red You are unable to equip that." //Only print if del_on_fail is false @@ -510,7 +510,7 @@ var/list/slot_equipment_priority = list( \ var/list/temp = list( ) temp += L.container //L = null - del(L) + qdel(L) return temp else return L.container @@ -978,8 +978,8 @@ var/list/slot_equipment_priority = list( \ process = processScheduler.getProcess("garbage") stat(null, "GAR\t - #[process.getTicks()]\t - [process.getLastRunTime()]") - //process = processScheduler.getProcess("sun") - //stat(null, "SUN\t - #[process.getTicks()]\t - [process.getLastRunTime()]") + process = processScheduler.getProcess("sun") + stat(null, "SUN([sun.solars.len])\t - #[process.getTicks()]\t - [process.getLastRunTime()]") //process = processScheduler.getProcess("garbage") //stat(null, "GAR\t - #[process.getTicks()]\t - [process.getLastRunTime()]") diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index 394d098fdc8..5dd92388daf 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -3,6 +3,7 @@ layer = 4.0 animate_movement = 2 // flags = NOREACT + pressure_resistance = 8 var/datum/mind/mind var/stat = 0 //Whether a mob is alive or dead. TODO: Move this to living - Nodrak diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index 999bd0145fc..d7f8f756120 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -374,17 +374,17 @@ var/obj/item/weapon/grab/G = mob.r_hand grabbing += G.affecting for(var/obj/item/weapon/grab/G in mob.grabbed_by) - if((G.state == 1)&&(!grabbing.Find(G.assailant))) del(G) + if((G.state == 1)&&(!grabbing.Find(G.assailant))) qdel(G) if(G.state == 2) move_delay = world.time + 10 if(!prob(25)) return 1 mob.visible_message("\red [mob] has broken free of [G.assailant]'s grip!") - del(G) + qdel(G) if(G.state == 3) move_delay = world.time + 10 if(!prob(5)) return 1 mob.visible_message("\red [mob] has broken free of [G.assailant]'s headlock!") - del(G) + qdel(G) return 0 diff --git a/code/modules/mob/new_player/logout.dm b/code/modules/mob/new_player/logout.dm index 9f064a99cd5..ad1c9b3098d 100644 --- a/code/modules/mob/new_player/logout.dm +++ b/code/modules/mob/new_player/logout.dm @@ -3,5 +3,5 @@ ..() if(!spawning)//Here so that if they are spawning and log out, the other procs can play out and they will have a mob to come back to. key = null//We null their key before deleting the mob, so they are properly kicked out. - del(src) + qdel(src) return \ No newline at end of file diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index f9965b9275c..15456b3fa7c 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -138,7 +138,7 @@ observer.verbs -= /mob/dead/observer/verb/toggle_antagHUD // Poor guys, don't know what they are missing! observer.key = key respawnable_list += observer - del(src) + qdel(src) return 1 if(href_list["late_join"]) @@ -325,8 +325,8 @@ AnnounceCyborg(character, rank, "has been downloaded to the empty core in \the [character.loc.loc]") ticker.mode.latespawn(character) - del(C) - del(src) + qdel(C) + qdel(src) return //Find our spawning point. @@ -364,7 +364,7 @@ else AnnounceCyborg(character, rank, join_message) callHook("latespawn", list(character)) - del(src) + qdel(src) proc/AnnounceArrival(var/mob/living/carbon/human/character, var/rank, var/join_message) diff --git a/code/modules/mob/spirit/mask/respawn.dm b/code/modules/mob/spirit/mask/respawn.dm index acfb69073c2..60330de917d 100644 --- a/code/modules/mob/spirit/mask/respawn.dm +++ b/code/modules/mob/spirit/mask/respawn.dm @@ -10,9 +10,9 @@ ghost.timeofdeath = world.time - 20000 ghost.newPlayerType = /mob/new_player/cultist // remove old mask body - del(currentSpirit) + qdel(currentSpirit) + - /mob/new_player/cultist/AttemptLateSpawn(rank) var/mob/newCharacter = ..(rank) if(ticker.mode) diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index 0aa42b25e2e..bd2734c5134 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -65,7 +65,7 @@ if (notransform) return for(var/t in organs) - del(t) + qdel(t) return ..(move) @@ -159,7 +159,7 @@ "[src] disappears into the shadows, never to be seen again.", \ "You disappear into the shadows, never to be seen again.", \ "You hear strange noise, you can't quite place it.") - del(src) + qdel(src) new_spirit << "You are a Mask of Nar'sie now. You are a tiny fragment of the unknowable entity that is the god." new_spirit << "Your job is to help your acolytes complete their goals. Be spooky. Do evil." @@ -188,9 +188,9 @@ icon = null invisibility = 101 for(var/t in organs) - del(t) + qdel(t) for(var/i in internal_organs) - del(i) + qdel(i) var/mob/living/silicon/robot/O = new /mob/living/silicon/robot( loc ) @@ -233,7 +233,7 @@ O.Namepick() spawn(0)//To prevent the proc from returning null. - del(src) + qdel(src) return O //human -> alien @@ -248,7 +248,7 @@ icon = null invisibility = 101 for(var/t in organs) - del(t) + qdel(t) var/alien_caste = pick("Hunter","Sentinel","Drone") var/mob/living/carbon/alien/humanoid/new_xeno @@ -266,7 +266,7 @@ new_xeno << "You are now an alien." new_xeno.update_pipe_vision() spawn(0)//To prevent the proc from returning null. - del(src) + qdel(src) return /mob/living/carbon/human/proc/slimeize(adult as num, reproduce as num) @@ -280,7 +280,7 @@ icon = null invisibility = 101 for(var/t in organs) - del(t) + qdel(t) var/mob/living/carbon/slime/new_slime if(reproduce) @@ -302,7 +302,7 @@ new_slime << "You are now a slime. Skreee!" new_slime.update_pipe_vision() spawn(0)//To prevent the proc from returning null. - del(src) + qdel(src) return /mob/living/carbon/human/proc/corgize() @@ -316,7 +316,7 @@ icon = null invisibility = 101 for(var/t in organs) //this really should not be necessary - del(t) + qdel(t) var/mob/living/simple_animal/pet/corgi/new_corgi = new /mob/living/simple_animal/pet/corgi (loc) new_corgi.a_intent = "harm" @@ -325,7 +325,7 @@ new_corgi << "You are now a Corgi. Yap Yap!" new_corgi.update_pipe_vision() spawn(0)//To prevent the proc from returning null. - del(src) + qdel(src) return /mob/living/carbon/human/Animalize() @@ -349,7 +349,7 @@ invisibility = 101 for(var/t in organs) - del(t) + qdel(t) var/mob/new_mob = new mobpath(src.loc) @@ -360,7 +360,7 @@ new_mob << "You suddenly feel more... animalistic." new_mob.update_pipe_vision() spawn() - del(src) + qdel(src) return /mob/proc/Animalize() @@ -379,7 +379,7 @@ new_mob << "You feel more... animalistic" new_mob.update_pipe_vision() - del(src) + qdel(src) /* Certain mob types have problems and should not be allowed to be controlled by players. * diff --git a/code/modules/organs/blood.dm b/code/modules/organs/blood.dm index 9cc65e3920d..e65ed5bb870 100644 --- a/code/modules/organs/blood.dm +++ b/code/modules/organs/blood.dm @@ -71,7 +71,7 @@ var/const/BLOOD_VOLUME_SURVIVE = 122 src.nutrition += (15 * REAGENTS_METABOLISM) BL.volume -= REAGENTS_METABOLISM if(BL.volume <= 0) - del(BL) + qdel(BL) break //Only process one blood per tick, to maintain the same metabolism as nutriment for non-vampires. if(B.data["donor"] != src) //If it's not theirs, then we look for theirs @@ -332,7 +332,7 @@ proc/blood_splatter(var/target,var/datum/reagent/blood/source,var/large) // Only a certain number of drips (or one large splatter) can be on a given turf. for(var/obj/effect/decal/cleanable/blood/drip/drop in T) drips |= drop.drips - del(drop) + qdel(drop) if(!large && drips.len < 3) decal_type = /obj/effect/decal/cleanable/blood/drip diff --git a/code/modules/organs/organ.dm b/code/modules/organs/organ.dm index 670aab1669e..08a946e547c 100644 --- a/code/modules/organs/organ.dm +++ b/code/modules/organs/organ.dm @@ -282,4 +282,4 @@ var/list/organ_cache = list() if(fingerprintslast) O.fingerprintslast = fingerprintslast user.put_in_active_hand(O) - del(src) \ No newline at end of file + qdel(src) \ No newline at end of file diff --git a/code/modules/organs/organ_alien.dm b/code/modules/organs/organ_alien.dm index 0c3a68bc866..e564979bde2 100644 --- a/code/modules/organs/organ_alien.dm +++ b/code/modules/organs/organ_alien.dm @@ -247,7 +247,7 @@ B.ckey = owner.ckey spawn(0) - del(src) + qdel(src) //XENOMORPH ORGANS /obj/item/organ/xenos/eggsac diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index 2bb78b9c55f..d045017117d 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -834,7 +834,7 @@ Note that amputating the affected organ does in fact remove the infection from t victim.bad_external_organs -= src for(var/implant in implants) //todo: check if this can be left alone - del(implant) + qdel(implant) // Attached organs also fly off. if(!ignore_children) @@ -864,8 +864,8 @@ Note that amputating the affected organ does in fact remove the infection from t spark_system.attach(owner) spark_system.start() spawn(10) - del(spark_system) - del(src) + qdel(spark_system) + qdel(src) /obj/item/organ/external/proc/disfigure(var/type = "brute") if (disfigured) diff --git a/code/modules/organs/organ_stump.dm b/code/modules/organs/organ_stump.dm index e1a0611a017..545ca746275 100644 --- a/code/modules/organs/organ_stump.dm +++ b/code/modules/organs/organ_stump.dm @@ -19,4 +19,4 @@ /obj/item/organ/external/stump/removed() ..() - del(src) + qdel(src) diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 52d82c47d0a..211cc4cfc34 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -13,7 +13,7 @@ throw_range = 1 throw_speed = 1 layer = 4 - pressure_resistance = 1 + pressure_resistance = 0 slot_flags = SLOT_HEAD body_parts_covered = HEAD attack_verb = list("bapped") @@ -300,7 +300,7 @@ user.unEquip(src) new /obj/effect/decal/cleanable/ash(get_turf(src)) - del(src) + qdel(src) else user << "\red You must hold \the [P] steady to burn \the [src]." diff --git a/code/modules/paperwork/paper_bundle.dm b/code/modules/paperwork/paper_bundle.dm index 06000ed8a7d..31c170b18f8 100644 --- a/code/modules/paperwork/paper_bundle.dm +++ b/code/modules/paperwork/paper_bundle.dm @@ -56,7 +56,7 @@ if(screen == 2) screen = 1 user << "You add \the [W.name] to [(src.name == "paper bundle") ? "the paper bundle" : src.name]." - del(W) + qdel(W) else if(istype(W, /obj/item/stack/tape_roll)) return 0 @@ -91,7 +91,7 @@ user.unEquip(src) new /obj/effect/decal/cleanable/ash(get_turf(src)) - del(src) + qdel(src) else user << "\red You must hold \the [P] steady to burn \the [src]." @@ -171,7 +171,7 @@ var/obj/item/weapon/paper/P = src[1] usr.unEquip(src) usr.put_in_hands(P) - del(src) + qdel(src) else if(page == amount) screen = 2 else if(page == amount+1) @@ -210,7 +210,7 @@ O.layer = initial(O.layer) O.add_fingerprint(usr) usr.unEquip(src) - del(src) + qdel(src) return diff --git a/code/modules/paperwork/paperbin.dm b/code/modules/paperwork/paperbin.dm index 6c567772b99..bc90e229f20 100644 --- a/code/modules/paperwork/paperbin.dm +++ b/code/modules/paperwork/paperbin.dm @@ -7,7 +7,7 @@ w_class = 3 throw_speed = 3 throw_range = 7 - pressure_resistance = 10 + pressure_resistance = 8 var/amount = 30 //How much paper is in the bin. var/list/papers = new/list() //List of papers put in the bin for reference. /* diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index bc20b6fe13c..78aa9174d5f 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -119,7 +119,7 @@ user << "You insert the toner cartridge into \the [src]." var/obj/item/device/toner/T = O toner += T.toner_amount - del(O) + qdel(O) updateUsrDialog() else user << "This cartridge is not yet ready for replacement! Use up the rest of the toner." diff --git a/code/modules/paperwork/photography.dm b/code/modules/paperwork/photography.dm index c7c4205bc1c..2876c7ad89a 100644 --- a/code/modules/paperwork/photography.dm +++ b/code/modules/paperwork/photography.dm @@ -64,7 +64,7 @@ user.unEquip(src) new /obj/effect/decal/cleanable/ash(get_turf(src)) - del(src) + qdel(src) else user << "\red You must hold \the [P] steady to burn \the [src]." @@ -178,7 +178,7 @@ return user << "You insert [I] into [src]." user.drop_item() - del(I) + qdel(I) pictures_left = pictures_max return ..() @@ -201,7 +201,7 @@ for(var/atom/A in the_turf) if(A.invisibility) continue atoms.Add(A) - + // Sort the atoms into their layers var/list/sorted = sort_atoms_by_layer(atoms) var/center_offset = (size-1)/2 * 32 + 1 @@ -229,7 +229,7 @@ // Calculate where we are relative to the center of the photo var/xoff = (the_turf.x - center.x) * 32 + center_offset var/yoff = (the_turf.y - center.y) * 32 + center_offset - res.Blend(getFlatIcon(the_turf.loc), blendMode2iconMode(the_turf.blend_mode),xoff,yoff) + res.Blend(getFlatIcon(the_turf.loc), blendMode2iconMode(the_turf.blend_mode),xoff,yoff) return res @@ -464,7 +464,7 @@ camera.network = list("news") camera.c_tag = user.name else - + src.icon_state = icon_on camera = new /obj/machinery/camera(src) camera.network = list("news") @@ -483,4 +483,4 @@ if(get_dist(src, M) <= canhear_range) talk_into(M, msg) for(var/mob/living/carbon/human/H in watcherslist) - H.show_message(text("\blue (Newscaster) [] says, '[]'",M,msg), 1) + H.show_message(text("\blue (Newscaster) [] says, '[]'",M,msg), 1) diff --git a/code/modules/paperwork/silicon_photography.dm b/code/modules/paperwork/silicon_photography.dm index 4fbe953d729..0826090c59c 100644 --- a/code/modules/paperwork/silicon_photography.dm +++ b/code/modules/paperwork/silicon_photography.dm @@ -64,7 +64,7 @@ usr << P.desc // TG uses a special garbage collector.. qdel(P) - del(P) //so 10 thousand pictures items are not left in memory should an AI take them and then view them all. + qdel(P) //so 10 thousand pictures items are not left in memory should an AI take them and then view them all. /obj/item/device/camera/siliconcam/proc/deletepicture(obj/item/device/camera/siliconcam/cam) var/datum/picture/selection = selectpicture(cam) diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 78bda4169b3..2f875d6a1ee 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -498,14 +498,14 @@ user.visible_message(\ "\red [user.name] cut the cables and dismantled the power terminal.",\ "You cut the cables and dismantle the power terminal.") - del(terminal) + qdel(terminal) else if (istype(W, /obj/item/weapon/module/power_control) && opened && has_electronics==0 && !((stat & BROKEN) || malfhack)) user << "You trying to insert the power control board into the frame..." playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) if(do_after(user, 10)) has_electronics = 1 user << "You place the power control board inside the frame." - del(W) + qdel(W) else if (istype(W, /obj/item/weapon/module/power_control) && opened && has_electronics==0 && ((stat & BROKEN) || malfhack)) user << "\red You cannot put the board inside, the frame is damaged." return @@ -530,7 +530,7 @@ "\red [src] has been cut from the wall by [user.name] with the weldingtool.",\ "You cut the APC frame from the wall.",\ "\red You hear welding.") - del(src) + qdel(src) return else if (istype(W, /obj/item/mounted/frame/apc_frame) && opened && emagged) emagged = 0 @@ -539,7 +539,7 @@ user.visible_message(\ "\red [user.name] has replaced the damaged APC frontal panel with a new one.",\ "You replace the damaged APC frontal panel with a new one.") - del(W) + qdel(W) update_icon() else if (istype(W, /obj/item/mounted/frame/apc_frame) && opened && ((stat & BROKEN) || malfhack)) if (has_electronics) @@ -550,7 +550,7 @@ user.visible_message(\ "\red [user.name] has replaced the damaged APC frame with new one.",\ "You replace the damaged APC frame with new one.") - del(W) + qdel(W) stat &= ~BROKEN malfai = null malfhack = 0 @@ -1000,7 +1000,7 @@ malf.mind.transfer_to(src.occupant) src.occupant.eyeobj.name = "[src.occupant.name] (AI Eye)" if(malf.parent) - del(malf) + qdel(malf) src.occupant.verbs += /mob/living/silicon/ai/proc/corereturn src.occupant.verbs += /datum/game_mode/malfunction/proc/takeover src.occupant.cancel_camera() @@ -1016,7 +1016,7 @@ src.occupant.mind.transfer_to(src.occupant.parent) src.occupant.parent.adjustOxyLoss(src.occupant.getOxyLoss()) src.occupant.parent.cancel_camera() - del(src.occupant) + qdel(src.occupant) if (seclevel2num(get_security_level()) == SEC_LEVEL_DELTA) for(var/obj/item/weapon/pinpointer/point in world) for(var/datum/mind/AI_mind in ticker.mode.malf_ai) diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index e5951e82c79..550d0ada3fe 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -86,18 +86,9 @@ /obj/structure/cable/Destroy() // called when a cable is deleted - if(!defer_powernet_rebuild) // set if network will be rebuilt manually - if(powernet) - powernet.cut_cable(src) // update the powernets + if(powernet) + powernet.cut_cable(src) // update the powernets cable_list -= src -/* if(istype(attached)) - attached.set_light(0) - attached.icon_state = "powersink0" - attached.mode = 0 - processing_objects.Remove(attached) - attached.anchored = 0 - attached.attached = null - attached = null*/ return ..() // then go ahead and delete the cable /obj/structure/cable/hide(var/i) @@ -145,7 +136,7 @@ investigate_log("was cut by [key_name(usr, usr.client)] in [user.loc.loc]","wires") - del(src) + qdel(src) return @@ -318,7 +309,7 @@ if(ismob(loc)) var/mob/M = loc M.unEquip(src) - del(src) + qdel(src) else amount -= used update_icon() @@ -380,7 +371,7 @@ if (C.shock(user, 50)) if (prob(50)) //fail new/obj/item/stack/cable_coil(C.loc, 1, C.cable_color) - del(C) + qdel(C) //src.laying = 1 //last = C @@ -440,7 +431,7 @@ if (NC.shock(user, 50)) if (prob(50)) //fail new/obj/item/stack/cable_coil(NC.loc, 1, NC.cable_color) - del(NC) + qdel(NC) return else if(C.d1 == 0) // exisiting cable doesn't point at our position, so see if it's a stub @@ -479,7 +470,7 @@ if (C.shock(user, 50)) if (prob(50)) //fail new/obj/item/stack/cable_coil(C.loc, 2, C.cable_color) - del(C) + qdel(C) return diff --git a/code/modules/power/engine.dm b/code/modules/power/engine.dm index 50473d3e445..614a7393d9a 100644 --- a/code/modules/power/engine.dm +++ b/code/modules/power/engine.dm @@ -33,6 +33,6 @@ /turf/simulated/floor/engine/blob_act() if (prob(25)) ChangeTurf(/turf/space) - del(src) + qdel(src) return return \ No newline at end of file diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 96f943f05f2..d8769065d32 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -53,7 +53,7 @@ user.visible_message("[user.name] deconstructs [src].", \ "You deconstruct [src].", "You hear a noise.") playsound(src.loc, 'sound/items/Deconstruct.ogg', 75, 1) - del(src) + qdel(src) if (src.stage == 2) usr << "You have to remove the wires first." return @@ -111,7 +111,7 @@ newlight.dir = src.dir src.transfer_fingerprints_to(newlight) - del(src) + qdel(src) return ..() @@ -315,7 +315,7 @@ update() user.drop_item() //drop the item to update overlays and such - del(L) + qdel(L) if(on && rigged) @@ -370,7 +370,7 @@ newlight.fingerprints = src.fingerprints newlight.fingerprintshidden = src.fingerprintshidden newlight.fingerprintslast = src.fingerprintslast - del(src) + qdel(src) return user << "You stick \the [W] into the light socket!" @@ -591,7 +591,7 @@ sleep(2) explosion(T, 0, 0, 2, 2) sleep(1) - del(src) + qdel(src) // the light item // can be tube or bulb subtypes diff --git a/code/modules/power/port_gen.dm b/code/modules/power/port_gen.dm index 5431c137b4c..0e5e10c7a08 100644 --- a/code/modules/power/port_gen.dm +++ b/code/modules/power/port_gen.dm @@ -188,7 +188,7 @@ display round(lastgen) and plasmatank amount if (heat > 300) overheat() - del(src) + qdel(src) return /obj/machinery/power/port_gen/pacman/handleInactive() diff --git a/code/modules/power/power.dm b/code/modules/power/power.dm index 768bf712c0f..ff952f7c07e 100644 --- a/code/modules/power/power.dm +++ b/code/modules/power/power.dm @@ -83,7 +83,7 @@ /proc/makepowernets() for(var/datum/powernet/PN in powernets) - del(PN) + qdel(PN) powernets.Cut() for(var/obj/structure/cable/PC in cable_list) @@ -373,7 +373,7 @@ Cable.powernet = net1 net1.cables += Cable - del(net2) + qdel(net2) return net1 diff --git a/code/modules/power/singularity/containment_field.dm b/code/modules/power/singularity/containment_field.dm index b908fc4be22..b940014b517 100644 --- a/code/modules/power/singularity/containment_field.dm +++ b/code/modules/power/singularity/containment_field.dm @@ -52,7 +52,7 @@ if(hasShocked) return 0 if(!FG1 || !FG2) - del(src) + qdel(src) return 0 if(iscarbon(user)) var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread diff --git a/code/modules/power/singularity/field_generator.dm b/code/modules/power/singularity/field_generator.dm index a616a7b3381..7b8547eb880 100644 --- a/code/modules/power/singularity/field_generator.dm +++ b/code/modules/power/singularity/field_generator.dm @@ -326,7 +326,7 @@ field_generator power level display for (var/obj/machinery/containment_field/F in fields) if (isnull(F)) continue - del(F) + qdel(F) fields = list() for(var/obj/machinery/field_generator/FG in connected_gens) if (isnull(FG)) diff --git a/code/modules/power/singularity/narsie.dm b/code/modules/power/singularity/narsie.dm index 9498a78d1c9..f74837f314d 100644 --- a/code/modules/power/singularity/narsie.dm +++ b/code/modules/power/singularity/narsie.dm @@ -139,13 +139,9 @@ /obj/singularity/narsie/wizard/eat() set background = BACKGROUND_ENABLED -// if(defer_powernet_rebuild != 2) -// defer_powernet_rebuild = 1 for(var/atom/X in orange(consume_range,src)) if(isturf(X) || istype(X, /atom/movable)) consume(X) -// if(defer_powernet_rebuild != 2) -// defer_powernet_rebuild = 0 return diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm index 2ce8694a7fa..ba38cf9ea73 100644 --- a/code/modules/power/smes.dm +++ b/code/modules/power/smes.dm @@ -204,7 +204,7 @@ "[user.name] cuts the cables and dismantles the power terminal.",\ "You cut the cables and dismantle the power terminal.") charging = 0 //stop inputting, since we have don't have a terminal anymore - del(terminal) + qdel(terminal) return //crowbarring it ! @@ -436,7 +436,7 @@ smoke.attach(src) smoke.start() explosion(src.loc, -1, 0, 1, 3, 0) - del(src) + qdel(src) return if(prob(15)) //Power drain world << "\red SMES power drain in [src.loc.loc]" diff --git a/code/modules/power/solar.dm b/code/modules/power/solar.dm index 93c1a961073..3eb5b0dc8e3 100644 --- a/code/modules/power/solar.dm +++ b/code/modules/power/solar.dm @@ -1,11 +1,9 @@ #define SOLAR_MAX_DIST 40 #define SOLARGENRATE 1500 -var/list/solars_list = list() - /obj/machinery/power/solar name = "solar panel" - desc = "A solar electrical generator." + desc = "A solar panel. Generates electricity when in contact with sunlight." icon = 'icons/obj/power.dmi' icon_state = "sp_base" anchored = 1 @@ -61,14 +59,14 @@ var/list/solars_list = list() if(istype(W, /obj/item/weapon/crowbar)) playsound(src.loc, 'sound/machines/click.ogg', 50, 1) - user.visible_message("[user] begins to take the glass off the solar panel.") + user.visible_message("[user] begins to take the glass off the solar panel.", "You begin to take the glass off the solar panel...") if(do_after(user, 50)) var/obj/item/solar_assembly/S = locate() in src if(S) S.loc = src.loc S.give_glass() playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) - user.visible_message("[user] takes the glass off the solar panel.") + user.visible_message("[user] takes the glass off the solar panel.", "You take the glass off the solar panel.") qdel(src) return else if (W) @@ -108,8 +106,6 @@ var/list/solars_list = list() //calculates the fraction of the sunlight that the panel recieves /obj/machinery/power/solar/proc/update_solar_exposure() - if(!sun) - return if(obscured) sunfrac = 0 return @@ -127,7 +123,7 @@ var/list/solars_list = list() /obj/machinery/power/solar/process()//TODO: remove/add this from machines to save on processing as needed ~Carn PRIORITY if(stat & BROKEN) return - if(!sun || !control) //if there's no sun or the panel is not linked to a solar control computer, no need to proceed + if(!control) //if there's no sun or the panel is not linked to a solar control computer, no need to proceed return if(powernet) @@ -178,10 +174,12 @@ var/list/solars_list = list() var/ax = x // start at the solar panel var/ay = y var/turf/T = null + var/dx = sun.dx + var/dy = sun.dy for(var/i = 1 to 20) // 20 steps is enough - ax += sun.dx // do step - ay += sun.dy + ax += dx // do step + ay += dy T = locate( round(ax,0.5),round(ay,0.5),z) @@ -228,13 +226,13 @@ var/list/solars_list = list() if(!anchored && isturf(loc)) if(istype(W, /obj/item/weapon/wrench)) anchored = 1 - user.visible_message("[user] wrenches the solar assembly into place.") + user.visible_message("[user] wrenches the solar assembly into place.", "You wrench the solar assembly into place.") playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1) return 1 else if(istype(W, /obj/item/weapon/wrench)) anchored = 0 - user.visible_message("[user] unwrenches the solar assembly from it's place.") + user.visible_message("[user] unwrenches the solar assembly from its place.", "You unwrench the solar assembly from its place.") playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1) return 1 @@ -243,7 +241,7 @@ var/list/solars_list = list() if(S.use(2)) glass_type = W.type playsound(src.loc, 'sound/machines/click.ogg', 50, 1) - user.visible_message("[user] places the glass on the solar assembly.") + user.visible_message("[user] places the glass on the solar assembly.", "You place the glass on the solar assembly.") if(tracker) new /obj/machinery/power/tracker(get_turf(src), src) else @@ -255,16 +253,17 @@ var/list/solars_list = list() if(!tracker) if(istype(W, /obj/item/weapon/tracker_electronics)) + if(!user.drop_item()) + return tracker = 1 - user.drop_item() qdel(W) - user.visible_message("[user] inserts the electronics into the solar assembly.") + user.visible_message("[user] inserts the electronics into the solar assembly.", "You insert the electronics into the solar assembly.") return 1 else if(istype(W, /obj/item/weapon/crowbar)) new /obj/item/weapon/tracker_electronics(src.loc) tracker = 0 - user.visible_message("[user] takes out the electronics from the solar assembly.") + user.visible_message("[user] takes out the electronics from the solar assembly.", "You take out the electronics from the solar assembly.") return 1 ..() @@ -276,11 +275,13 @@ var/list/solars_list = list() name = "solar panel control" desc = "A controller for solar panel arrays." icon = 'icons/obj/computer.dmi' - icon_state = "solar" + icon_state = "computer" anchored = 1 density = 1 use_power = 1 idle_power_usage = 250 + var/icon_screen = "solar" + var/icon_keyboard = "power_key" var/id = 0 var/cdir = 0 var/targetdir = 0 // target angle in manual tracking (since it updates every game minute) @@ -288,7 +289,7 @@ var/list/solars_list = list() var/lastgen = 0 var/track = 0 // 0= off 1=timed 2=auto (tracker) var/trackrate = 600 // 300-900 seconds - var/nexttime = 0 // time for a panel to rotate of 1� in manual tracking + var/nexttime = 0 // time for a panel to rotate of 1° in manual tracking var/obj/machinery/power/tracker/connected_tracker = null var/list/connected_panels = list() @@ -308,12 +309,12 @@ var/list/solars_list = list() /obj/machinery/power/solar_control/disconnect_from_network() ..() - solars_list.Remove(src) + sun.solars.Remove(src) /obj/machinery/power/solar_control/connect_to_network() var/to_return = ..() - if(powernet) //if connected and not already in solar_list... - solars_list |= src //... add it + if(powernet) //if connected and not already in solar list... + sun.solars |= src //... add it return to_return //search for unconnected panels and trackers in the computer powernet and connect them @@ -353,19 +354,17 @@ var/list/solars_list = list() set_panels(cdir) /obj/machinery/power/solar_control/update_icon() - if(stat & BROKEN) - icon_state = "broken" - overlays.Cut() - return - if(stat & NOPOWER) - icon_state = "c_unpowered" - overlays.Cut() - return - icon_state = "solar" overlays.Cut() + if(stat & NOPOWER) + overlays += "[icon_keyboard]_off" + return + overlays += icon_keyboard + if(stat & BROKEN) + overlays += "[icon_state]_broken" + else + overlays += icon_screen if(cdir > -1) overlays += image('icons/obj/computer.dmi', "solcon-o", FLY_LAYER, angle2dir(cdir)) - return /obj/machinery/power/solar_control/attack_hand(mob/user) if(!..()) @@ -439,9 +438,9 @@ var/list/solars_list = list() connected_tracker.unset_control() if(track==1 && trackrate) //manual tracking and set a rotation speed - if(nexttime <= world.time) //every time we need to increase/decrease the angle by 1�... + if(nexttime <= world.time) //every time we need to increase/decrease the angle by 1°... targetdir = (targetdir + trackrate/abs(trackrate) + 360) % 360 //... do it - nexttime += 36000/abs(trackrate) //reset the counter for the next 1� + nexttime += 36000/abs(trackrate) //reset the counter for the next 1° /obj/machinery/power/solar_control/Topic(href, href_list) if(..()) diff --git a/code/modules/projectiles/guns/projectile.dm b/code/modules/projectiles/guns/projectile.dm index 94d4869c5ec..81e47aaceed 100644 --- a/code/modules/projectiles/guns/projectile.dm +++ b/code/modules/projectiles/guns/projectile.dm @@ -41,7 +41,7 @@ if(AC.reagents && AC.BB.reagents) var/datum/reagents/casting_reagents = AC.reagents casting_reagents.trans_to(AC.BB, casting_reagents.total_volume) //For chemical darts/bullets - casting_reagents.delete() + qdel(casting_reagents) in_chamber = AC.BB //Load projectile into chamber. AC.BB.loc = src //Set projectile loc to gun. AC.update_icon() diff --git a/code/modules/projectiles/guns/projectile/crossbow.dm b/code/modules/projectiles/guns/projectile/crossbow.dm index 3ddce50ceac..4d11564f01b 100644 --- a/code/modules/projectiles/guns/projectile/crossbow.dm +++ b/code/modules/projectiles/guns/projectile/crossbow.dm @@ -312,7 +312,7 @@ if(buildstate == 5) user << "\blue You secure the crossbow's various parts." new /obj/item/weapon/gun/launcher/crossbow(get_turf(src)) - del(src) + qdel(src) return else ..() diff --git a/code/modules/projectiles/guns/projectile/pneumatic.dm b/code/modules/projectiles/guns/projectile/pneumatic.dm index 305c9fb6f95..7f8d61a0d29 100644 --- a/code/modules/projectiles/guns/projectile/pneumatic.dm +++ b/code/modules/projectiles/guns/projectile/pneumatic.dm @@ -158,7 +158,7 @@ if(istype(W,/obj/item/pipe)) if(buildstate == 0) user.drop_item() - del(W) + qdel(W) user << "\blue You secure the piping inside the frame." buildstate++ update_icon() @@ -177,7 +177,7 @@ else if(istype(W,/obj/item/device/transfer_valve)) if(buildstate == 4) user.drop_item() - del(W) + qdel(W) user << "\blue You install the transfer valve and connect it to the piping." buildstate++ update_icon() @@ -206,7 +206,7 @@ playsound(src.loc, 'sound/items/Welder2.ogg', 100, 1) user << "\blue You weld the valve into place." new /obj/item/weapon/gun/launcher/pneumatic(get_turf(src)) - del(src) + qdel(src) return else ..() diff --git a/code/modules/projectiles/guns/projectile/revolver.dm b/code/modules/projectiles/guns/projectile/revolver.dm index 1aec8692f1d..262dec36b5c 100644 --- a/code/modules/projectiles/guns/projectile/revolver.dm +++ b/code/modules/projectiles/guns/projectile/revolver.dm @@ -79,7 +79,7 @@ M << "[src] blows up in your face!" M.take_organ_damage(0,20) M.drop_item() - del(src) + qdel(src) return 0 return 1 diff --git a/code/modules/projectiles/guns/projectile/rocket.dm b/code/modules/projectiles/guns/projectile/rocket.dm index 8df666a62a4..bdabba15f51 100644 --- a/code/modules/projectiles/guns/projectile/rocket.dm +++ b/code/modules/projectiles/guns/projectile/rocket.dm @@ -46,7 +46,7 @@ message_admins("[key_name_admin(user)] fired a rocket from a rocket launcher ([src.name]).") log_game("[key_name_admin(user)] used a rocket launcher ([src.name]).") rockets -= I - del(I) + qdel(I) return else usr << "\red [src] is empty." \ No newline at end of file diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm index f8d2cfd5620..b4462517019 100644 --- a/code/modules/projectiles/projectile/beams.dm +++ b/code/modules/projectiles/projectile/beams.dm @@ -197,21 +197,21 @@ if(TT == firer.loc) continue if(TT.density) - del(X) + qdel(X) break for(var/atom/O in TT) if(istype(O,/mob/living)) if(O.density) - del(X) + qdel(X) broke = 1 break if(!O.CanPass(src)) - del(X) + qdel(X) broke = 1 break if(broke) if(X) - del(X) + qdel(X) break spawn while(src) //Move until we hit something @@ -264,7 +264,7 @@ if(src.loc != current) tang = adjustAngle(get_angle(src.loc,current)) icon_state = "[tang]" - del(src) + qdel(src) return /*cleanup(reference) //Waits .3 seconds then removes the overlay. //world << "setting invisibility" diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index 785b619186b..9d7e8c90efc 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -56,7 +56,7 @@ O.mind.transfer_to(A) else A.key = O.key - del(O) + qdel(O) target = A else target.revive() @@ -136,15 +136,15 @@ proc/wabbajack(mob/living/M) if(istype(M, /mob/living/silicon/robot)) var/mob/living/silicon/robot/Robot = M - if(Robot.mmi) del(Robot.mmi) + if(Robot.mmi) qdel(Robot.mmi) else if(ishuman(M)) var/mob/living/carbon/human/H = M // Make sure there are no organs or limbs to drop for(var/t in H.organs) - del(t) + qdel(t) for(var/i in H.internal_organs) - del(i) + qdel(i) for(var/obj/item/W in M) M.unEquip(W) @@ -240,7 +240,7 @@ proc/wabbajack(mob/living/M) new_mob << "Your form morphs into that of a [randomize]." - del(M) + qdel(M) return new_mob /obj/item/projectile/magic/animate @@ -265,7 +265,7 @@ proc/wabbajack(mob/living/M) S << "You are an animated statue. You cannot move when monitored, but are nearly invincible and deadly when unobserved! Do not harm [firer.name], your creator." H = change H.loc = S - del(src) + qdel(src) else var/obj/O = change new /mob/living/simple_animal/hostile/mimic/copy(O.loc, O, firer) diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm index c4813e05bb1..c5f6fa4e855 100644 --- a/code/modules/projectiles/projectile/special.dm +++ b/code/modules/projectiles/projectile/special.dm @@ -82,7 +82,7 @@ for(var/mob/M in range(10, src)) if(!M.stat && !istype(M, /mob/living/silicon/ai))\ shake_camera(M, 3, 1) - del(src) + qdel(src) return 1 else return 0 @@ -167,7 +167,7 @@ new /obj/effect/decal/cleanable/ash(src.loc) src.visible_message("\red The [src.name] explodes!","\red You hear a snap!") playsound(src, 'sound/effects/snap.ogg', 50, 1) - del(src) + qdel(src) /obj/item/projectile/kinetic name = "kinetic force" @@ -192,7 +192,7 @@ obj/item/projectile/kinetic/New() range-- if(range <= 0) new /obj/item/effect/kinetic_blast(src.loc) - del(src) + qdel(src) /obj/item/projectile/kinetic/on_hit(atom/target) var/turf/target_turf= get_turf(target) @@ -210,7 +210,7 @@ obj/item/projectile/kinetic/New() /obj/item/effect/kinetic_blast/New() spawn(4) - del(src) + qdel(src) /obj/item/projectile/bullet/frag12 name ="explosive slug" diff --git a/code/modules/projectiles/targeting.dm b/code/modules/projectiles/targeting.dm index 08ed266f855..c3f7b695ef5 100644 --- a/code/modules/projectiles/targeting.dm +++ b/code/modules/projectiles/targeting.dm @@ -38,7 +38,7 @@ for(var/mob/living/M in target) if(M) M.NotTargeted(src) //Untargeting people. - del(target) + qdel(target) //Compute how to fire..... /obj/item/weapon/gun/proc/PreFire(atom/A as mob|obj|turf|area, mob/living/user as mob|obj, params) @@ -63,7 +63,7 @@ for(var/mob/living/L in target) if(L) L.NotTargeted(src) - del(target) + qdel(target) usr.visible_message("\red [usr] turns \the [src] on [M]!") else usr.visible_message("\red [usr] aims \a [src] at [M]!") @@ -218,13 +218,13 @@ mob/living/proc/NotTargeted(var/obj/item/weapon/gun/I) targeted_by -= I I.target.Remove(src) //De-target them if(!I.target.len) - del(I.target) + qdel(I.target) var/mob/living/T = I.loc //Remove the targeting icons if(T && ismob(T) && !I.target) T.client.remove_gun_icons() if(!targeted_by.len) - del target_locked //Remove the overlay - del targeted_by + qdel(target_locked) //Remove the overlay + qdel(targeted_by) spawn(1) update_targeted() mob/living/Move() diff --git a/code/modules/reagents/Chemistry-Holder.dm b/code/modules/reagents/Chemistry-Holder.dm index 2acbe837400..bd9cf955453 100644 --- a/code/modules/reagents/Chemistry-Holder.dm +++ b/code/modules/reagents/Chemistry-Holder.dm @@ -257,7 +257,8 @@ datum var/matching_container = 0 var/matching_other = 0 var/list/multipliers = new/list() - var/required_temp = C.required_temp + var/min_temp = C.min_temp //Minimum temperature required for the reaction to occur (heat to/above this) + var/max_temp = C.max_temp //Maximum temperature allowed for the reaction to occur (cool to/below this) for(var/B in C.required_reagents) if(!has_reagent(B, C.required_reagents[B])) break total_matching_reagents++ @@ -288,10 +289,10 @@ datum if(M.Uses > 0) // added a limit to slime cores -- Muskets requested this matching_other = 1 - if(required_temp == 0) - required_temp = chem_temp + if(min_temp == 0) + min_temp = chem_temp - if(total_matching_reagents == total_required_reagents && total_matching_catalysts == total_required_catalysts && matching_container && matching_other && chem_temp >= required_temp) + if(total_matching_reagents == total_required_reagents && total_matching_catalysts == total_required_catalysts && matching_container && matching_other && chem_temp <= max_temp && chem_temp >= min_temp) var/multiplier = min(multipliers) var/preserved_data = null for(var/B in C.required_reagents) @@ -356,7 +357,7 @@ datum var/mob/living/M = my_atom R.reagent_deleted(M) reagent_list -= A - del(A) + qdel(A) update_total() my_atom.on_reagent_change() check_ignoreslow(my_atom) @@ -601,12 +602,6 @@ datum //world << "reagent data set ([reagent_id])" D.data = new_data - delete() - for(var/datum/reagent/R in reagent_list) - R.holder = null - if(my_atom) - my_atom.reagents = null - copy_data(var/datum/reagent/current_reagent) if (!current_reagent || !current_reagent.data) return null if (!istype(current_reagent.data, /list)) return current_reagent.data @@ -636,10 +631,11 @@ atom/proc/create_reagents(var/max_vol) reagents.my_atom = src /datum/reagents/Destroy() - for(var/datum/reagent/reagent in reagent_list) - qdel(reagent) - - if(my_atom) - my_atom = null - + processing_objects.Remove(src) + for(var/datum/reagent/R in reagent_list) + qdel(R) + reagent_list.Cut() + reagent_list = null + if(my_atom && my_atom.reagents == src) + my_atom.reagents = null return ..() \ No newline at end of file diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm index 634519a7b83..53698650d4c 100644 --- a/code/modules/reagents/Chemistry-Machinery.dm +++ b/code/modules/reagents/Chemistry-Machinery.dm @@ -95,7 +95,7 @@ /obj/machinery/chem_dispenser/blob_act() if (prob(50)) - del(src) + qdel(src) /** * The ui_interact proc is used to open and update Nano UIs @@ -209,7 +209,7 @@ S.use(1) else user.drop_item() - del(B) + qdel(B) return if(src.beaker) @@ -970,7 +970,7 @@ /obj/machinery/reagentgrinder/proc/remove_object(var/obj/item/O) holdingitems -= O - del(O) + qdel(O) /obj/machinery/reagentgrinder/proc/juice() power_change() diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index 9ce3ac077ba..d851dfcbece 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -428,7 +428,7 @@ datum M.invisibility = 101 for(var/obj/item/W in M) if(istype(W, /obj/item/weapon/implant)) //TODO: Carn. give implants a dropped() or something - del(W) + qdel(W) continue W.layer = initial(W.layer) W.loc = M.loc @@ -440,7 +440,7 @@ datum M.mind.transfer_to(new_mob) else new_mob.key = M.key - del(M) + qdel(M) ..() return @@ -834,7 +834,7 @@ datum I.desc = "Looks like this was \an [O] some time ago." for(var/mob/M in viewers(5, O)) M << "\red \the [O] melts." - del(O) + qdel(O) glycerol name = "Glycerol" @@ -1118,7 +1118,7 @@ datum reaction_obj(var/obj/O, var/volume) if(istype(O,/obj/effect/decal/cleanable)) - del(O) + qdel(O) else if(O) O.clean_blood() @@ -1127,7 +1127,7 @@ datum T.overlays.Cut() T.clean_blood() for(var/obj/effect/decal/cleanable/C in src) - del(C) + qdel(C) for(var/mob/living/carbon/slime/M in T) M.adjustToxLoss(rand(5,10)) @@ -3235,8 +3235,5 @@ datum /datum/reagent/Destroy() - if(holder) - holder.reagent_list -= src - holder = null - + holder = null return ..() diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm index 533ceb1b555..9231a1c44a8 100644 --- a/code/modules/reagents/Chemistry-Recipes.dm +++ b/code/modules/reagents/Chemistry-Recipes.dm @@ -14,7 +14,8 @@ datum var/result_amount = 0 var/secondary = 0 // set to nonzero if secondary reaction var/list/secondary_results = list() //additional reagents produced by the reaction - var/required_temp = 0 + var/min_temp = 0 //Minimum temperature required for the reaction to occur (heat to/above this). min_temp = 0 means no requirement + var/max_temp = 9999 //Maximum temperature allowed for the reaction to occur (cool to/below this). var/mix_message = "The solution begins to bubble." var/mix_sound = 'sound/effects/bubbles.ogg' var/no_message = 0 @@ -64,6 +65,16 @@ datum result_amount = 3 */ + ice + name = "Ice" + id = "ice" + result = "ice" + required_reagents = list("water" = 1) + result_amount = 1 + max_temp = 273 + mix_message = "Ice forms as the water freezes." + mix_sound = null + sterilizine name = "Sterilizine" id = "sterilizine" @@ -352,7 +363,7 @@ datum result = "diethylamine" required_reagents = list ("ammonia" = 1, "ethanol" = 1) result_amount = 2 - required_temp = 374 + min_temp = 374 mix_message = "A horrible smell pours forth from the mixture." space_cleaner diff --git a/code/modules/reagents/dartgun.dm b/code/modules/reagents/dartgun.dm index 1e483a54e23..75825c4939c 100644 --- a/code/modules/reagents/dartgun.dm +++ b/code/modules/reagents/dartgun.dm @@ -155,7 +155,7 @@ cartridge.darts-- src.update_icon() S.reagents.trans_to(D, S.reagents.total_volume) - del(S) + qdel(S) D.icon_state = "syringeproj" D.name = "syringe" D.flags |= NOREACT @@ -194,16 +194,16 @@ D.reagents.trans_to(M, 15) M << "You feel a slight prick." - del(D) + qdel(D) break if(D) for(var/atom/A in D.loc) if(A == user) continue - if(A.density) del(D) + if(A.density) qdel(D) sleep(1) - if (D) spawn(10) del(D) + if (D) spawn(10) qdel(D) return diff --git a/code/modules/reagents/newchem/drinks.dm b/code/modules/reagents/newchem/drinks.dm index b126d460184..637b101f32d 100644 --- a/code/modules/reagents/newchem/drinks.dm +++ b/code/modules/reagents/newchem/drinks.dm @@ -1,4 +1,4 @@ -datum/reagent/ginsonic +/datum/reagent/ginsonic name = "Gin and sonic" id = "ginsonic" description = "GOTTA GET CRUNK FAST BUT LIQUOR TOO SLOW" @@ -13,7 +13,7 @@ datum/reagent/ginsonic result_amount = 2 mix_message = "The drink turns electric blue and starts quivering violently." -datum/reagent/ginsonic/on_mob_life(var/mob/living/M as mob) +/datum/reagent/ginsonic/on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom if(prob(10)) M.reagents.add_reagent("methamphetamine",1.2) @@ -30,3 +30,35 @@ datum/reagent/ginsonic/on_mob_life(var/mob/living/M as mob) M << "Way Past Cool!" ..() return + +/datum/reagent/ethanol/applejack + name = "Applejack" + id = "applejack" + description = "A highly concentrated alcoholic beverage made by repeatedly freezing cider and removing the ice." + color = "#997A00" + slur_start = 30 + brawl_start = 40 + confused_start = 100 + +/datum/chemical_reaction/applejack + name = "applejack" + id = "applejack" + result = "applejack" + required_reagents = list("cider" = 2) + max_temp = 270 + result_amount = 1 + mix_message = "The drink darkens as the water freezes, leaving the concentrated cider behind." + mix_sound = null + +/datum/reagent/ethanol/jackrose + name = "Jack Rose" + id = "jackrose" + description = "A classic cocktail that had fallen out of fashion, but never out of taste," + color = "#664300" + +/datum/chemical_reaction/jackrose + name = "jackrose" + id = "jackrose" + result = "jackrose" + required_reagents = list("applejack" = 4, "lemonjuice" = 1) + result_amount = 5 diff --git a/code/modules/reagents/newchem/drugs.dm b/code/modules/reagents/newchem/drugs.dm index 3ace84f1a5c..c33bf039808 100644 --- a/code/modules/reagents/newchem/drugs.dm +++ b/code/modules/reagents/newchem/drugs.dm @@ -85,7 +85,7 @@ required_reagents = list("diphenhydramine" = 1, "ammonia" = 1, "lithium" = 1, "sacid" = 1, "fuel" = 1) result_amount = 5 mix_message = "The mixture violently reacts, leaving behind a few crystalline shards." - required_temp = 390 + min_temp = 390 /datum/chemical_reaction/crank/on_reaction(var/datum/reagents/holder, var/created_volume) var/turf/T = get_turf(holder.my_atom) @@ -150,7 +150,7 @@ required_reagents = list("diphenhydramine" = 1, "morphine" = 1, "cleaner" = 1, "potassium" = 1, "phosphorus" = 1, "fuel" = 1) result_amount = 6 mix_message = "The mixture dries into a pale blue powder." - required_temp = 380 + min_temp = 380 /datum/reagent/methamphetamine name = "Methamphetamine" @@ -228,7 +228,7 @@ result = "methamphetamine" required_reagents = list("ephedrine" = 1, "iodine" = 1, "phosphorus" = 1, "hydrogen" = 1) result_amount = 4 - required_temp = 374 + min_temp = 374 /datum/chemical_reaction/saltpetre name = "saltpetre" @@ -279,7 +279,7 @@ result = "bath_salts" required_reagents = list("????" = 1, "saltpetre" = 1, "msg" = 1, "cleaner" = 1, "enzyme" = 1, "mugwort" = 1, "mercury" = 1) result_amount = 6 - required_temp = 374 + min_temp = 374 mix_message = "Tiny cubic crystals precipitate out of the mixture. Huh." /datum/reagent/bath_salts/overdose_process(var/mob/living/M as mob) diff --git a/code/modules/reagents/newchem/food.dm b/code/modules/reagents/newchem/food.dm index 39f2a5b6234..5c3c6e5547f 100644 --- a/code/modules/reagents/newchem/food.dm +++ b/code/modules/reagents/newchem/food.dm @@ -61,7 +61,7 @@ datum/reagent/corn_starch result = "corn_syrup" required_reagents = list("corn_starch" = 1, "sacid" = 1) result_amount = 2 - required_temp = 374 + min_temp = 374 mix_message = "The mixture forms a viscous, clear fluid!" datum/reagent/corn_syrup @@ -391,7 +391,7 @@ datum/reagent/ectoplasm/reaction_turf(var/turf/T, var/volume) result = "hydrogenated_soybeanoil" required_reagents = list("soybeanoil" = 1, "hydrogen" = 1) result_amount = 2 - required_temp = 520 + min_temp = 520 mix_message = "The mixture emits a burnt, oily smell." /datum/reagent/meatslurry @@ -430,7 +430,7 @@ datum/reagent/ectoplasm/reaction_turf(var/turf/T, var/volume) result = "gravy" required_reagents = list("porktonium" = 1, "corn_starch" = 1, "milk" = 1) result_amount = 3 - required_temp = 374 + min_temp = 374 mix_message = "The substance thickens and takes on a meaty odor." /datum/reagent/beff diff --git a/code/modules/reagents/newchem/medicine.dm b/code/modules/reagents/newchem/medicine.dm index ebba2e3c969..98e3bc2cc16 100644 --- a/code/modules/reagents/newchem/medicine.dm +++ b/code/modules/reagents/newchem/medicine.dm @@ -124,7 +124,7 @@ datum/reagent/charcoal/on_mob_life(var/mob/living/M as mob) required_reagents = list("ash" = 1, "sodiumchloride" = 1) result_amount = 2 mix_message = "The mixture yields a fine black powder." - required_temp = 380 + min_temp = 380 /datum/chemical_reaction/silver_sulfadiazine name = "Silver Sulfadiazine" @@ -210,7 +210,7 @@ datum/reagent/calomel/on_mob_life(var/mob/living/M as mob) result = "calomel" required_reagents = list("mercury" = 1, "chlorine" = 1) result_amount = 2 - required_temp = 374 + min_temp = 374 mix_message = "Stinging vapors rise from the solution." datum/reagent/potass_iodide @@ -349,7 +349,7 @@ datum/reagent/perfluorodecalin/on_mob_life(var/mob/living/carbon/human/M as mob) result = "perfluorodecalin" required_reagents = list("hydrogen" = 1, "fluorine" = 1, "oil" = 1) result_amount = 3 - required_temp = 370 + min_temp = 370 mix_message = "The mixture rapidly turns into a dense pink liquid." datum/reagent/ephedrine @@ -687,7 +687,7 @@ datum/reagent/life result = null required_reagents = list("strange_reagent" = 1, "synthflesh" = 1, "blood" = 1) result_amount = 3 - required_temp = 374 + min_temp = 374 /datum/chemical_reaction/life/on_reaction(var/datum/reagents/holder, var/created_volume) chemical_mob_spawn(holder, 1, "Life") @@ -1007,5 +1007,5 @@ datum/reagent/haloperidol/on_mob_life(var/mob/living/M as mob) result = "liquid_solder" required_reagents = list("ethanol" = 1, "copper" = 1, "silver" = 1) result_amount = 3 - required_temp = 370 + min_temp = 370 mix_message = "The solution gently swirls with a metallic sheen." diff --git a/code/modules/reagents/newchem/other.dm b/code/modules/reagents/newchem/other.dm index 64f2fa56419..17245f0a9ee 100644 --- a/code/modules/reagents/newchem/other.dm +++ b/code/modules/reagents/newchem/other.dm @@ -100,7 +100,7 @@ datum/reagent/acetone result = "ash" required_reagents = list("oil" = 1) result_amount = 0.5 - required_temp = 480 + min_temp = 480 mix_sound = null no_message = 1 @@ -142,7 +142,7 @@ datum/reagent/colorful_reagent/reaction_turf(var/turf/T, var/volume) result = null required_reagents = list("nutriment" = 1, "colorful_reagent" = 1, "strange_reagent" = 1, "blood" = 1) result_amount = 3 - required_temp = 374 + min_temp = 374 datum/reagent/corgium name = "Corgium" @@ -164,7 +164,7 @@ datum/reagent/corgium result = null required_reagents = list("egg" = 1, "colorful_reagent" = 1, "chicken_soup" = 1, "strange_reagent" = 1, "blood" = 1) result_amount = 5 - required_temp = 374 + min_temp = 374 mix_message = "The substance turns an airy sky-blue and foams up into a new shape." /datum/chemical_reaction/flaptonium/on_reaction(var/datum/reagents/holder, var/created_volume) diff --git a/code/modules/reagents/newchem/pyro.dm b/code/modules/reagents/newchem/pyro.dm index 2f245243bb5..9a978acc26f 100644 --- a/code/modules/reagents/newchem/pyro.dm +++ b/code/modules/reagents/newchem/pyro.dm @@ -34,7 +34,7 @@ result = "clf3" required_reagents = list("chlorine" = 1, "fluorine" = 3) result_amount = 2 - required_temp = 424 + min_temp = 424 /datum/reagent/clf3/on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom @@ -94,7 +94,7 @@ id = "sorium_vortex" result = null required_reagents = list("sorium" = 1) - required_temp = 474 + min_temp = 474 /datum/chemical_reaction/sorium_vortex/on_reaction(var/datum/reagents/holder, var/created_volume) var/turf/simulated/T = get_turf(holder.my_atom) @@ -126,7 +126,7 @@ id = "ldm_vortex" result = null required_reagents = list("liquid_dark_matter" = 1) - required_temp = 474 + min_temp = 474 /datum/chemical_reaction/ldm_vortex/on_reaction(var/datum/reagents/holder, var/created_volume) var/turf/simulated/T = get_turf(holder.my_atom) @@ -177,7 +177,7 @@ result = null required_reagents = list("blackpowder" = 1) result_amount = 1 - required_temp = 474 + min_temp = 474 no_message = 1 mix_sound = null @@ -240,7 +240,7 @@ datum/reagent/blackpowder/reaction_turf(var/turf/T, var/volume) //oh shit id = "flash_powder_flash" result = null required_reagents = list("flash_powder" = 1) - required_temp = 374 + min_temp = 374 /datum/chemical_reaction/flash_powder_flash/on_reaction(var/datum/reagents/holder, var/created_volume) var/location = get_turf(holder.my_atom) @@ -324,7 +324,7 @@ datum/reagent/blackpowder/reaction_turf(var/turf/T, var/volume) //oh shit name = "smoke_powder_smoke" id = "smoke_powder_smoke" required_reagents = list("smoke_powder" = 1) - required_temp = 374 + min_temp = 374 secondary = 1 result_amount = 1 forbidden_reagents = list() @@ -350,7 +350,7 @@ datum/reagent/blackpowder/reaction_turf(var/turf/T, var/volume) //oh shit id = "sonic_powder_deafen" result = null required_reagents = list("sonic_powder" = 1) - required_temp = 374 + min_temp = 374 /datum/chemical_reaction/sonic_powder_deafen/on_reaction(var/datum/reagents/holder, var/created_volume) var/location = get_turf(holder.my_atom) diff --git a/code/modules/reagents/newchem/toxins.dm b/code/modules/reagents/newchem/toxins.dm index f7b7d3c3977..54bd296a1ea 100644 --- a/code/modules/reagents/newchem/toxins.dm +++ b/code/modules/reagents/newchem/toxins.dm @@ -80,7 +80,7 @@ datum/reagent/formaldehyde/on_mob_life(var/mob/living/M as mob) result = "formaldehyde" required_reagents = list("ethanol" = 1, "oxygen" = 1, "silver" = 1) result_amount = 3 - required_temp = 420 + min_temp = 420 mix_message = "Ugh, it smells like the morgue in here." datum/reagent/venom @@ -141,7 +141,7 @@ datum/reagent/neurotoxin2/on_mob_life(var/mob/living/M as mob) result = "neurotoxin2" required_reagents = list("space_drugs" = 1) result_amount = 1 - required_temp = 674 + min_temp = 674 mix_sound = null no_message = 1 @@ -175,7 +175,7 @@ datum/reagent/cyanide/on_mob_life(var/mob/living/M as mob) result = "cyanide" required_reagents = list("oil" = 1, "ammonia" = 1, "oxygen" = 1) result_amount = 3 - required_temp = 380 + min_temp = 380 mix_message = "The mixture gives off a faint scent of almonds." @@ -249,7 +249,7 @@ datum/reagent/facid/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume) if(method == TOUCH) if(H.wear_mask) if(!H.wear_mask.unacidable) - qdel (H.wear_mask) + qdel(H.wear_mask) H.update_inv_wear_mask() H << "\red Your mask melts away but protects you from the acid!" else @@ -287,7 +287,7 @@ datum/reagent/facid/reaction_obj(var/obj/O, var/volume) result = "facid" required_reagents = list("sacid" = 1, "fluorine" = 1, "hydrogen" = 1, "potassium" = 1) result_amount = 4 - required_temp = 380 + min_temp = 380 mix_message = "The mixture deepens to a dark blue, and slowly begins to corrode its container." datum/reagent/initropidril @@ -519,7 +519,7 @@ datum/reagent/tabun required_reagents = list("phenol" = 1, "diethylamine" = 1, "phosphorus" = 1, "oxygen" = 1, "chlorine" = 1, "sodiumchloride" = 1, "ethanol" = 1, "cyanide" = 1) result_amount = 8 mix_message = "The mixture yields a colorless, odorless liquid." - required_temp = 374 + min_temp = 374 datum/reagent/tabun/on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom @@ -574,7 +574,9 @@ datum/reagent/atrazine/reaction_turf(var/turf/T, var/volume) var/turf/simulated/wall/W = T if(W.rotting) W.rotting = 0 - for(var/obj/effect/E in W) if(E.name == "Wallrot") del E + for(var/obj/effect/E in W) + if(E.name == "Wallrot") + qdel(E) for(var/mob/O in viewers(W, null)) O.show_message(text("\blue The fungi are completely dissolved by the solution!"), 1) @@ -585,9 +587,9 @@ datum/reagent/atrazine/reaction_obj(var/obj/O, var/volume) alien_weeds.health -= rand(15,35) // Kills alien weeds pretty fast alien_weeds.healthcheck() else if(istype(O,/obj/effect/glowshroom)) //even a small amount is enough to kill it - del(O) + qdel(O) else if(istype(O,/obj/effect/plant)) - if(prob(50)) del(O) //Kills kudzu too. + if(prob(50)) qdel(O) //Kills kudzu too. // Damage that is done to growing plants is separately at code/game/machinery/hydroponics at obj/item/hydroponics datum/reagent/atrazine/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume) diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm index 017216887f4..aeda3fcbec3 100644 --- a/code/modules/reagents/reagent_containers.dm +++ b/code/modules/reagents/reagent_containers.dm @@ -27,10 +27,6 @@ R.my_atom = src processing_objects.Add(src) -/obj/item/weapon/reagent_containers/Destroy() - processing_objects.Remove(src) - return ..() - /obj/item/weapon/reagent_containers/process() if(reagents) reagents.reagent_on_tick() diff --git a/code/modules/reagents/reagent_containers/food/drinks/bottle.dm b/code/modules/reagents/reagent_containers/food/drinks/bottle.dm index 58945a89c4d..20da18a668f 100644 --- a/code/modules/reagents/reagent_containers/food/drinks/bottle.dm +++ b/code/modules/reagents/reagent_containers/food/drinks/bottle.dm @@ -30,7 +30,7 @@ user.put_in_active_hand(B) src.transfer_fingerprints_to(B) - del(src) + qdel(src) /obj/item/weapon/reagent_containers/food/drinks/bottle/attack(mob/living/target as mob, mob/living/user as mob) diff --git a/code/modules/reagents/reagent_containers/food/drinks/drinkingglass.dm b/code/modules/reagents/reagent_containers/food/drinks/drinkingglass.dm index 74d1d6e775a..ce50606d7c5 100644 --- a/code/modules/reagents/reagent_containers/food/drinks/drinkingglass.dm +++ b/code/modules/reagents/reagent_containers/food/drinks/drinkingglass.dm @@ -19,7 +19,7 @@ user.put_in_active_hand(S) src.transfer_fingerprints_to(S) - del(src) + qdel(src) attack(mob/living/target as mob, mob/living/user as mob) @@ -556,6 +556,14 @@ icon_state = "rewriter" name = "Rewriter" desc = "The secert of the sanctuary of the Libarian..." + if("applejack") + icon_state = "cognacglass" + name = "Glass of applejack" + desc = "When cider isn't strong enough, you gotta jack it." + if("jackrose") + icon_state = "patronglass" + name = "Jack Rose" + desc = "Drinking this makes you feel like you belong in a luxury hotel bar during the 1920s." else icon_state ="glass_brown" name = "Glass of ..what?" diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm index 11367d61787..e8acb8f0f99 100644 --- a/code/modules/reagents/reagent_containers/food/snacks.dm +++ b/code/modules/reagents/reagent_containers/food/snacks.dm @@ -30,7 +30,7 @@ usr.put_in_hands(TrashItem) else if(istype(trash,/obj/item)) usr.put_in_hands(trash) - del(src) + qdel(src) return /obj/item/weapon/reagent_containers/food/snacks/attack_self(mob/user as mob) @@ -40,7 +40,7 @@ if(!reagents.total_volume) //Shouldn't be needed but it checks to see if it has anything left in it. user << "\red None of [src] left, oh no!" M.unEquip(src) //so icons update :[ - del(src) + qdel(src) return 0 if(istype(M, /mob/living/carbon)) @@ -169,7 +169,7 @@ reagents.trans_to(U,min(reagents.total_volume,5)) if (reagents.total_volume <= 0) - del(src) + qdel(src) return if((slices_num <= 0 || !slices_num) || !slice_path) @@ -227,7 +227,7 @@ for(var/i=1 to (slices_num-slices_lost)) var/obj/slice = new slice_path (src.loc) reagents.trans_to(slice,reagents_per_slice) - del(src) + qdel(src) return @@ -246,7 +246,7 @@ playsound(src.loc,'sound/items/eatfood.ogg', rand(10,50), 1) var/mob/living/simple_animal/pet/corgi/C = M C.health = min(C.health + 5, C.maxHealth) - del(src) + qdel(src) else M.visible_message("[M] takes a bite of \the [src].","You take a bite of \the [src].") playsound(src.loc,'sound/items/eatfood.ogg', rand(10,50), 1) @@ -541,7 +541,7 @@ new/obj/effect/decal/cleanable/egg_smudge(src.loc) src.reagents.reaction(hit_atom, TOUCH) src.visible_message("\red [src.name] has been squashed.","\red You hear a smack.") - del(src) + qdel(src) attackby(obj/item/weapon/W as obj, mob/user as mob, params) if(istype( W, /obj/item/toy/crayon )) @@ -1019,7 +1019,7 @@ ..() new/obj/effect/decal/cleanable/pie_smudge(src.loc) src.visible_message("\red [src.name] splats.","\red You hear a splat.") - del(src) + qdel(src) /obj/item/weapon/reagent_containers/food/snacks/berryclafoutis name = "Berry Clafoutis" @@ -1731,7 +1731,7 @@ M << "\red \The [src] expands!" var/mob/living/carbon/human/H = new (src) H.set_species(monkey_type) - del(src) + qdel(src) proc/Unwrap(mob/user as mob) icon_state = "monkeycube" @@ -2308,7 +2308,7 @@ "\blue You flatten the dough with your rolling pin!" \ ) new /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough(src.loc) - del(src) + qdel(src) /////////////////////////////////////////////////Sliceable//////////////////////////////////////// // All the food items that can be sliced into smaller bits like Meatbread and Cheesewheels @@ -3253,16 +3253,16 @@ if(istype(W,/obj/item/weapon/reagent_containers/food/snacks/egg)) new /obj/item/weapon/reagent_containers/food/snacks/dough(src) user << "You make some dough." - del(W) - del(src) + qdel(W) + qdel(src) // Egg + flour = dough /obj/item/weapon/reagent_containers/food/snacks/egg/attackby(obj/item/weapon/W as obj, mob/user as mob, params) if(istype(W,/obj/item/weapon/reagent_containers/food/snacks/flour)) new /obj/item/weapon/reagent_containers/food/snacks/dough(src) user << "You make some dough." - del(W) - del(src) + qdel(W) + qdel(src) /obj/item/weapon/reagent_containers/food/snacks/dough name = "dough" @@ -3382,7 +3382,7 @@ if(istype(W,/obj/item/weapon/kitchen/utensil/knife)) new /obj/item/weapon/reagent_containers/food/snacks/rawsticks(src) user << "You cut the potato." - del(src) + qdel(src) else ..() diff --git a/code/modules/reagents/reagent_containers/food/snacks/meat.dm b/code/modules/reagents/reagent_containers/food/snacks/meat.dm index b49e6187d99..b05478ca01b 100644 --- a/code/modules/reagents/reagent_containers/food/snacks/meat.dm +++ b/code/modules/reagents/reagent_containers/food/snacks/meat.dm @@ -15,7 +15,7 @@ new /obj/item/weapon/reagent_containers/food/snacks/rawcutlet(src) new /obj/item/weapon/reagent_containers/food/snacks/rawcutlet(src) user << "You cut the meat in thin strips." - del(src) + qdel(src) else ..() diff --git a/code/modules/reagents/reagent_containers/glass_containers.dm b/code/modules/reagents/reagent_containers/glass_containers.dm index 87388cb3fe3..6288a6058bc 100644 --- a/code/modules/reagents/reagent_containers/glass_containers.dm +++ b/code/modules/reagents/reagent_containers/glass_containers.dm @@ -346,7 +346,7 @@ attackby(var/obj/D, mob/user as mob, params) if(isprox(D)) user << "You add [D] to [src]." - del(D) + qdel(D) user.put_in_hands(new /obj/item/weapon/bucket_sensor) user.unEquip(src) qdel(src) diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm index b15c03ee984..fe255c9caf7 100644 --- a/code/modules/reagents/reagent_containers/spray.dm +++ b/code/modules/reagents/reagent_containers/spray.dm @@ -71,7 +71,7 @@ for(var/atom/T in get_turf(D)) D.reagents.reaction(T) sleep(3) - del(D) + qdel(D) /obj/item/weapon/reagent_containers/spray/attack_self(var/mob/user) @@ -200,7 +200,7 @@ for(var/atom/t in get_turf(D)) D.reagents.reaction(t) sleep(2) - del(D) + qdel(D) diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index e53a9c15c4c..c0d29bd79e0 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -305,7 +305,7 @@ for(var/mob/O in viewers(world.view, user)) O.show_message(text("\red [user] tries to stab [target] in \the [hit_area] with [src.name], but the attack is deflected by armor!"), 1) user.unEquip(src) - del(src) + qdel(src) return for(var/mob/O in viewers(world.view, user)) diff --git a/code/modules/reagents/syringe_gun.dm b/code/modules/reagents/syringe_gun.dm index 965110d220b..ac70be0f387 100644 --- a/code/modules/reagents/syringe_gun.dm +++ b/code/modules/reagents/syringe_gun.dm @@ -25,7 +25,7 @@ in_chamber.name = S.name syringes.Remove(S) - del(S) + qdel(S) return 1 /obj/item/weapon/gun/syringe/examine() diff --git a/code/modules/recycling/disposal-construction.dm b/code/modules/recycling/disposal-construction.dm index fc6f51bf037..8eddccfac04 100644 --- a/code/modules/recycling/disposal-construction.dm +++ b/code/modules/recycling/disposal-construction.dm @@ -252,7 +252,7 @@ src.transfer_fingerprints_to(P) P.dir = dir - del(src) + qdel(src) return else user << "You need more welding fuel to complete this task." diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index 3b57147aba8..9c32b654ec3 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -83,7 +83,7 @@ C.anchored = 1 C.density = 1 C.update() - del(src) + qdel(src) return else user << "You need more welding fuel to complete this task." @@ -117,7 +117,7 @@ GM.loc = src for (var/mob/C in viewers(src)) C.show_message("\red [GM.name] has been placed in the [src] by [user].", 3) - del(G) + qdel(G) usr.attack_log += text("\[[time_stamp()]\] Has placed [GM.name] ([GM.ckey]) in disposals.") GM.attack_log += text("\[[time_stamp()]\] Has been placed in disposals by [usr.name] ([usr.ckey])") if(GM.ckey) @@ -460,7 +460,7 @@ AM.throw_at(target, 5, 1) H.vent_gas(loc) - del(H) + qdel(H) CanPass(atom/movable/mover, turf/target, height=0, air_group=0) if (istype(mover,/obj/item) && mover.throwing) @@ -611,7 +611,7 @@ if(other.has_fat_guy) has_fat_guy = 1 - del(other) + qdel(other) // called when player tries to move while in a pipe @@ -778,7 +778,7 @@ if(AM) AM.throw_at(target, 100, 1) H.vent_gas(T) - del(H) + qdel(H) else // no specified direction, so throw in random direction @@ -794,7 +794,7 @@ AM.throw_at(target, 5, 1) H.vent_gas(T) // all gas vent to turf - del(H) + qdel(H) return @@ -822,7 +822,7 @@ 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 @@ -830,7 +830,7 @@ expel(H, T, 0) spawn(2) // delete pipe after 2 ticks to ensure expel proc finished - del(src) + qdel(src) // pipe affected by explosion @@ -913,7 +913,7 @@ C.anchored = 1 C.update() - del(src) + qdel(src) // *** TEST verb //client/verb/dispstop() @@ -1253,7 +1253,7 @@ welded() // var/obj/item/scrap/S = new(src.loc) // S.set_components(200,0,0) - del(src) + qdel(src) // the disposal outlet machine @@ -1297,7 +1297,7 @@ if(AM) AM.throw_at(target, 3, 1) H.vent_gas(src.loc) - del(H) + qdel(H) return @@ -1330,7 +1330,7 @@ C.update() C.anchored = 1 C.density = 1 - del(src) + qdel(src) return else user << "You need more welding fuel to complete this task." diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm index 95f149fa611..21182bd0e10 100755 --- a/code/modules/recycling/sortingmachinery.dm +++ b/code/modules/recycling/sortingmachinery.dm @@ -329,7 +329,7 @@ C.update() C.anchored = 1 C.density = 1 - del(src) + qdel(src) return else user << "You need more welding fuel to complete this task." diff --git a/code/modules/research/message_server.dm b/code/modules/research/message_server.dm index df881681284..f73061bcbbc 100644 --- a/code/modules/research/message_server.dm +++ b/code/modules/research/message_server.dm @@ -192,7 +192,7 @@ var/obj/machinery/blackbox_recorder/blackbox /obj/machinery/blackbox_recorder/New() if(blackbox) if(istype(blackbox,/obj/machinery/blackbox_recorder)) - del(src) + qdel(src) blackbox = src /obj/machinery/blackbox_recorder/Destroy() diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index 964af1cea1f..be845f32868 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -62,7 +62,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, check_tech = new T() if(check_tech.id == ID) return_name = check_tech.name - del(check_tech) + qdel(check_tech) check_tech = null break @@ -96,7 +96,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, temp_reagent = new R() if(temp_reagent.id == ID) return_name = temp_reagent.name - del(temp_reagent) + qdel(temp_reagent) temp_reagent = null break return return_name @@ -595,7 +595,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, var/choice = alert("R&D Console Database Reset", "Are you sure you want to reset the R&D console's database? Data lost cannot be recovered.", "Continue", "Cancel") if(choice == "Continue") screen = 0.0 - del(files) + qdel(files) files = new /datum/research(src) spawn(20) screen = 1.6 diff --git a/code/modules/research/xenoarchaeology/chemistry.dm b/code/modules/research/xenoarchaeology/chemistry.dm index 53c688d54ad..b9ab6fc0b60 100644 --- a/code/modules/research/xenoarchaeology/chemistry.dm +++ b/code/modules/research/xenoarchaeology/chemistry.dm @@ -74,7 +74,7 @@ datum secondary_results = list("chemical_waste" = 1) required_reagents = list("density_separated_sample" = 5) result_amount = 4 - required_temp = 375 + min_temp = 375 /obj/item/weapon/reagent_containers/glass/solution_tray name = "solution tray" diff --git a/code/modules/research/xenoarchaeology/genetics/reconstitutor.dm b/code/modules/research/xenoarchaeology/genetics/reconstitutor.dm index 1503e4e9c90..23413d4f0df 100644 --- a/code/modules/research/xenoarchaeology/genetics/reconstitutor.dm +++ b/code/modules/research/xenoarchaeology/genetics/reconstitutor.dm @@ -59,7 +59,7 @@ datum/genesequence visible_message("\red \icon[src] [src] can not extract any more genetic data from new fossils.") if(4) src.visible_message("\blue \icon[src] [user] inserts [W] into [src], the fossil is consumed as [src] extracts genetic data from it.") - del(W) + qdel(W) updateDialog() else if (istype(W, /obj/item/weapon/storage)) var/obj/item/weapon/storage/S = W @@ -76,7 +76,7 @@ datum/genesequence if(SCANFOSSIL_RETVAL_SUCCESS) numaccepted += 1 S.remove_from_storage(F, src) //This will move the item to this item's contents - del(F) + qdel(F) updateDialog() var/outmsg = "\blue You empty all the fossils from [S] into [src]." if(numaccepted) diff --git a/code/modules/research/xenoarchaeology/machinery/artifact_harvester.dm b/code/modules/research/xenoarchaeology/machinery/artifact_harvester.dm index 9209e062657..1c772d33bf0 100644 --- a/code/modules/research/xenoarchaeology/machinery/artifact_harvester.dm +++ b/code/modules/research/xenoarchaeology/machinery/artifact_harvester.dm @@ -156,7 +156,7 @@ //see if we can clear out an old effect //delete it when the ids match to account for duplicate ids having different effects if(inserted_battery.battery_effect && inserted_battery.stored_charge <= 0) - del(inserted_battery.battery_effect) + qdel(inserted_battery.battery_effect) // var/datum/artifact_effect/source_effect diff --git a/code/modules/research/xenoarchaeology/tools/suspension_generator.dm b/code/modules/research/xenoarchaeology/tools/suspension_generator.dm index 2d65cbb5e1e..e5a13d5fde2 100644 --- a/code/modules/research/xenoarchaeology/tools/suspension_generator.dm +++ b/code/modules/research/xenoarchaeology/tools/suspension_generator.dm @@ -309,7 +309,7 @@ M.weakened = min(M.weakened, 3) src.visible_message("\blue \icon[src] [src] deactivates with a gentle shudder.") - del(suspension_field) + qdel(suspension_field) icon_state = "suspension2" /obj/machinery/suspension_gen/Destroy() diff --git a/code/modules/research/xenoarchaeology/tools/tools_coresampler.dm b/code/modules/research/xenoarchaeology/tools/tools_coresampler.dm index 1aa2a4a37eb..be3f958e3f5 100644 --- a/code/modules/research/xenoarchaeology/tools/tools_coresampler.dm +++ b/code/modules/research/xenoarchaeology/tools/tools_coresampler.dm @@ -38,7 +38,7 @@ /obj/item/device/core_sampler/attackby(obj/item/weapon/W as obj, mob/user as mob, params) if(istype(W,/obj/item/weapon/evidencebag)) if(num_stored_bags < 10) - del(W) + qdel(W) num_stored_bags += 1 user << "\blue You insert the [W] into the core sampler." else diff --git a/code/modules/research/xenoarchaeology/tools/tools_depthscanner.dm b/code/modules/research/xenoarchaeology/tools/tools_depthscanner.dm index 7c55b81004a..078266508fe 100644 --- a/code/modules/research/xenoarchaeology/tools/tools_depthscanner.dm +++ b/code/modules/research/xenoarchaeology/tools/tools_depthscanner.dm @@ -118,11 +118,11 @@ if(index <= positive_locations.len) var/datum/depth_scan/D = positive_locations[index] positive_locations.Remove(D) - del(D) + qdel(D) else //GC will hopefully pick them up before too long positive_locations = list() - del(current) + qdel(current) else if(href_list["close"]) usr.unset_machine() usr << browse(null, "window=depth_scanner") diff --git a/code/modules/shieldgen/shield_gen.dm b/code/modules/shieldgen/shield_gen.dm index 09c327482e3..6755c2b8a47 100644 --- a/code/modules/shieldgen/shield_gen.dm +++ b/code/modules/shieldgen/shield_gen.dm @@ -259,14 +259,14 @@ for(var/turf/O in covered_turfs) var/obj/effect/energy_field/E = new(O) field.Add(E) - del covered_turfs + qdel(covered_turfs) for(var/mob/M in view(5,src)) M << "\icon[src] You hear heavy droning start up." else for(var/obj/effect/energy_field/D in field) field.Remove(D) - del D + qdel(D) for(var/mob/M in view(5,src)) M << "\icon[src] You hear heavy droning fade out." diff --git a/code/modules/shuttles/shuttle.dm b/code/modules/shuttles/shuttle.dm index 77927deb6ca..600e8d5d86b 100644 --- a/code/modules/shuttles/shuttle.dm +++ b/code/modules/shuttles/shuttle.dm @@ -96,7 +96,7 @@ for(var/atom/movable/AM as mob|obj in T) AM.Move(D) if(istype(T, /turf/simulated)) - del(T) + qdel(T) for(var/mob/living/carbon/bug in destination) bug.gib() diff --git a/code/modules/surgery/robolimbs.dm b/code/modules/surgery/robolimbs.dm index becd430d4a7..17d92cf9b4e 100644 --- a/code/modules/surgery/robolimbs.dm +++ b/code/modules/surgery/robolimbs.dm @@ -52,7 +52,7 @@ target.updatehealth() target.UpdateDamageIcon() - del(tool) + qdel(tool) fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) user.visible_message("\red [user]'s hand slips, damaging [target]'s flesh!", \ diff --git a/code/modules/vehicle/vehicle.dm b/code/modules/vehicle/vehicle.dm index 08fc98cacf0..85d0acf03a3 100644 --- a/code/modules/vehicle/vehicle.dm +++ b/code/modules/vehicle/vehicle.dm @@ -214,7 +214,7 @@ new /obj/effect/gibspawner/robot(Tsec) new /obj/effect/decal/cleanable/blood/oil(src.loc) - del(src) + qdel(src) /obj/vehicle/proc/healthcheck() if(health <= 0) diff --git a/code/modules/virus2/effect.dm b/code/modules/virus2/effect.dm index 4a2ac380a55..b3c7154ea79 100644 --- a/code/modules/virus2/effect.dm +++ b/code/modules/virus2/effect.dm @@ -71,7 +71,7 @@ new/mob/living/carbon/alien/larva(mob.loc) var/datum/disease2/disease/D = mob:virus2 mob:gib() - del D + qdel(D) /datum/disease2/effect/invisible diff --git a/code/modules/virus2/items_devices.dm b/code/modules/virus2/items_devices.dm index fbbc64f79b8..6008c5b8879 100644 --- a/code/modules/virus2/items_devices.dm +++ b/code/modules/virus2/items_devices.dm @@ -64,7 +64,7 @@ if(airborne_can_reach(get_turf(src), get_turf(target))) if(get_infection_chance(target)) infect_virus2(target,src.virus2) - del src + qdel(src) /obj/item/weapon/virusdish/examine() usr << "This is a virus containment dish." @@ -84,7 +84,7 @@ if(prob(50)) user << "\The [src] shatters!" - del src + qdel(src) ///////////////GNA DISK/////////////// diff --git a/config/example/game_options.txt b/config/example/game_options.txt index 3f282e5a6ce..31d2bf1d9c8 100644 --- a/config/example/game_options.txt +++ b/config/example/game_options.txt @@ -33,6 +33,9 @@ REVIVAL_CLONING 1 REVIVAL_BRAIN_LIFE -1 +### AUTO TOGGLE OOC DURING ROUND ### +#Uncomment this if you want OOC to be automatically disabled during the round, it will be enabled during the lobby and after the round end results. +#AUTO_TOGGLE_OOC_DURING_ROUND ### MOB MOVEMENT ### diff --git a/icons/obj/computer.dmi b/icons/obj/computer.dmi index 4576c253f01..c70af829c12 100644 Binary files a/icons/obj/computer.dmi and b/icons/obj/computer.dmi differ diff --git a/icons/obj/projectiles.dmi b/icons/obj/projectiles.dmi index 73177afd0bd..f8a84ff5cb1 100644 Binary files a/icons/obj/projectiles.dmi and b/icons/obj/projectiles.dmi differ diff --git a/paradise.dme b/paradise.dme index ec2b8734ae6..d218453f767 100644 --- a/paradise.dme +++ b/paradise.dme @@ -124,6 +124,17 @@ #include "code\ATMOSPHERICS\components\unary\unary_base.dm" #include "code\ATMOSPHERICS\components\unary\vent_pump.dm" #include "code\ATMOSPHERICS\components\unary\vent_scrubber.dm" +#include "code\ATMOSPHERICS\pipes\cap.dm" +#include "code\ATMOSPHERICS\pipes\manifold.dm" +#include "code\ATMOSPHERICS\pipes\manifold4w.dm" +#include "code\ATMOSPHERICS\pipes\pipe.dm" +#include "code\ATMOSPHERICS\pipes\tank.dm" +#include "code\ATMOSPHERICS\pipes\vent.dm" +#include "code\ATMOSPHERICS\pipes\simple\pipe_simple.dm" +#include "code\ATMOSPHERICS\pipes\simple\pipe_simple_he.dm" +#include "code\ATMOSPHERICS\pipes\simple\pipe_simple_hidden.dm" +#include "code\ATMOSPHERICS\pipes\simple\pipe_simple_insulated.dm" +#include "code\ATMOSPHERICS\pipes\simple\pipe_simple_visible.dm" #include "code\controllers\communications.dm" #include "code\controllers\configuration.dm" #include "code\controllers\emergency_shuttle_controller.dm" @@ -173,7 +184,6 @@ #include "code\datums\periodic_news.dm" #include "code\datums\recipe.dm" #include "code\datums\spell.dm" -#include "code\datums\sun.dm" #include "code\datums\supplypacks.dm" #include "code\datums\uplink_item.dm" #include "code\datums\helper_datums\construction_datum.dm" @@ -513,6 +523,7 @@ #include "code\game\machinery\kitchen\gibber.dm" #include "code\game\machinery\kitchen\icecream_vat.dm" #include "code\game\machinery\kitchen\juicer.dm" +#include "code\game\machinery\kitchen\kitchen_machine.dm" #include "code\game\machinery\kitchen\microwave.dm" #include "code\game\machinery\kitchen\monkeyrecycler.dm" #include "code\game\machinery\kitchen\processor.dm" diff --git a/sound/effects/space_wind.ogg b/sound/effects/space_wind.ogg new file mode 100644 index 00000000000..397086a1a29 Binary files /dev/null and b/sound/effects/space_wind.ogg differ