diff --git a/_maps/map_files/MetaStation/z2.dmm b/_maps/map_files/MetaStation/z2.dmm index c46e89e9436..bed554f54f2 100644 --- a/_maps/map_files/MetaStation/z2.dmm +++ b/_maps/map_files/MetaStation/z2.dmm @@ -6351,6 +6351,10 @@ /obj/structure/bed/abductor, /turf/unsimulated/floor/abductor, /area/abductor_ship) +"Ur" = ( +/obj/machinery/poolcontroller/invisible, +/turf/unsimulated/beach/water, +/area/centcom/holding) (1,1,1) = {" aa @@ -35864,7 +35868,7 @@ tv tu tu tQ -tU +Ur th ab ab diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm index 398b065cfbd..e6fda6f503a 100644 --- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm +++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm @@ -24,9 +24,6 @@ "af" = ( /obj/structure/table, /obj/item/clothing/mask/gas, -/obj/machinery/light/small{ - dir = 1 - }, /obj/item/clothing/glasses/sunglasses/big, /obj/item/clothing/glasses/sunglasses/big, /obj/item/clothing/glasses/sunglasses/big, @@ -34,6 +31,9 @@ /area/ruin/powered/beach) "ag" = ( /obj/structure/reagent_dispensers/fueltank, +/obj/machinery/light/small{ + dir = 1 + }, /turf/simulated/floor/plating, /area/ruin/powered/beach) "ah" = ( @@ -438,6 +438,10 @@ /obj/item/storage/backpack/duffel, /turf/simulated/floor/beach/sand, /area/ruin/powered/beach) +"bL" = ( +/obj/machinery/poolcontroller/invisible, +/turf/simulated/floor/beach/water, +/area/ruin/powered/beach) "bM" = ( /turf/simulated/floor/plasteel/stairs/old, /area/ruin/powered/beach) @@ -477,12 +481,6 @@ "bW" = ( /turf/simulated/wall/r_wall, /area/ruin/powered/beach) -"cd" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/turf/simulated/wall/mineral/sandstone, -/area/ruin/powered/beach) "cs" = ( /obj/effect/overlay/palmtree_l, /obj/machinery/light{ @@ -567,6 +565,14 @@ }, /turf/simulated/floor/pod, /area/ruin/powered/beach) +"Ei" = ( +/obj/effect/turf_decal/sand, +/obj/machinery/light/small{ + light_power = 3; + dir = 8 + }, +/turf/simulated/floor/plating, +/area/ruin/powered/beach) "Gc" = ( /turf/simulated/floor/pod/light, /area/ruin/powered/beach) @@ -1054,7 +1060,7 @@ aa (15,1,1) = {" aa bW -cd +aj aj aj aF @@ -1087,7 +1093,7 @@ aa aa bW ak -ar +Ei aj aE aC @@ -1335,7 +1341,7 @@ bU bU bU bU -bU +bL bW aa "} diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm index e61f0d7a5a1..13850af5db7 100644 --- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm +++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm @@ -763,7 +763,7 @@ /obj/effect/turf_decal/tile/brown{ dir = 4 }, -/obj/machinery/firealarm{ +/obj/machinery/firealarm/syndicate{ dir = 8; pixel_x = -26 }, @@ -1683,7 +1683,7 @@ /turf/simulated/floor/plating, /area/ruin/unpowered/syndicate_lava_base/testlab) "dT" = ( -/obj/machinery/firealarm{ +/obj/machinery/firealarm/syndicate{ dir = 8; pixel_x = -26 }, @@ -1996,7 +1996,7 @@ /obj/machinery/light/small{ dir = 8 }, -/obj/machinery/firealarm{ +/obj/machinery/firealarm/syndicate{ dir = 8; pixel_x = -26 }, @@ -2201,7 +2201,7 @@ /turf/simulated/floor/plasteel/dark, /area/ruin/unpowered/syndicate_lava_base/testlab) "eM" = ( -/obj/machinery/firealarm{ +/obj/machinery/firealarm/syndicate{ dir = 1; pixel_y = -24 }, @@ -2513,7 +2513,7 @@ /obj/item/clothing/glasses/hud/health, /obj/structure/disposalpipe/segment, /obj/effect/decal/cleanable/dirt, -/obj/machinery/firealarm{ +/obj/machinery/firealarm/syndicate{ dir = 4; pixel_x = 26 }, @@ -3613,7 +3613,7 @@ /turf/simulated/wall/mineral/plastitanium/nodiagonal, /area/ruin/unpowered/syndicate_lava_base/main) "hZ" = ( -/obj/machinery/firealarm{ +/obj/machinery/firealarm/syndicate{ dir = 8; pixel_x = -26 }, @@ -3921,7 +3921,7 @@ /obj/machinery/light/small{ dir = 1 }, -/obj/machinery/firealarm{ +/obj/machinery/firealarm/syndicate{ dir = 2; pixel_y = 24 }, @@ -3958,7 +3958,7 @@ /turf/simulated/floor/plasteel/dark, /area/ruin/unpowered/syndicate_lava_base/dormitories) "iG" = ( -/obj/machinery/firealarm{ +/obj/machinery/firealarm/syndicate{ dir = 8; pixel_x = -26 }, @@ -5194,7 +5194,7 @@ /turf/simulated/floor/plasteel/dark, /area/ruin/unpowered/syndicate_lava_base/bar) "kM" = ( -/obj/machinery/firealarm{ +/obj/machinery/firealarm/syndicate{ dir = 4; pixel_x = 26 }, @@ -5281,7 +5281,7 @@ /obj/structure/chair{ dir = 1 }, -/obj/machinery/firealarm{ +/obj/machinery/firealarm/syndicate{ dir = 8; pixel_x = -26 }, @@ -5763,7 +5763,7 @@ /turf/simulated/floor/plasteel, /area/ruin/unpowered/syndicate_lava_base/medbay) "mg" = ( -/obj/machinery/firealarm{ +/obj/machinery/firealarm/syndicate{ dir = 8; pixel_x = -26 }, @@ -5871,7 +5871,7 @@ /obj/structure/bed/roller, /obj/machinery/iv_drip, /obj/item/reagent_containers/iv_bag/blood/OMinus, -/obj/machinery/firealarm{ +/obj/machinery/firealarm/syndicate{ dir = 8; pixel_x = -26 }, @@ -6546,7 +6546,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/machinery/firealarm{ +/obj/machinery/firealarm/syndicate{ dir = 2; pixel_y = 24 }, @@ -6649,7 +6649,7 @@ /turf/simulated/floor/plasteel/white/side, /area/ruin/unpowered/syndicate_lava_base/medbay) "oh" = ( -/obj/machinery/firealarm{ +/obj/machinery/firealarm/syndicate{ dir = 8; pixel_x = -26 }, diff --git a/_maps/map_files/RandomZLevels/beach.dmm b/_maps/map_files/RandomZLevels/beach.dmm index 76a7da40fb1..4544e3830d8 100644 --- a/_maps/map_files/RandomZLevels/beach.dmm +++ b/_maps/map_files/RandomZLevels/beach.dmm @@ -6,7 +6,7 @@ /turf/unsimulated/beach/water/deep, /area/awaymission/undersea) "ac" = ( -/obj/machinery/poolcontroller/seacontroller, +/obj/machinery/poolcontroller/invisible/sea, /turf/unsimulated/beach/water/deep, /area/awaymission/undersea) "ad" = ( @@ -1494,6 +1494,10 @@ /obj/structure/closet/crate, /turf/unsimulated/beach/sand, /area/awaymission/beach) +"LZ" = ( +/obj/machinery/poolcontroller/invisible, +/turf/unsimulated/beach/water/deep, +/area/awaymission/beach) (1,1,1) = {" aa @@ -15371,7 +15375,7 @@ du du du du -du +LZ "} (55,1,1) = {" aa diff --git a/_maps/map_files/RandomZLevels/moonoutpost19.dmm b/_maps/map_files/RandomZLevels/moonoutpost19.dmm index 3c62113aa0b..3d8d1868c2c 100644 --- a/_maps/map_files/RandomZLevels/moonoutpost19.dmm +++ b/_maps/map_files/RandomZLevels/moonoutpost19.dmm @@ -3608,7 +3608,7 @@ name = "MO19 Research" }) "fj" = ( -/obj/machinery/firealarm{ +/obj/machinery/firealarm/no_alarm{ dir = 2; pixel_y = 24 }, @@ -5104,7 +5104,7 @@ pixel_y = 0; tag = "" }, -/obj/machinery/firealarm{ +/obj/machinery/firealarm/no_alarm{ dir = 4; pixel_x = 28 }, @@ -5267,7 +5267,7 @@ pixel_x = -4; pixel_y = 2 }, -/obj/machinery/firealarm{ +/obj/machinery/firealarm/no_alarm{ dir = 2; pixel_y = 24 }, @@ -5413,7 +5413,7 @@ pixel_x = 0; pixel_y = 0 }, -/obj/machinery/firealarm{ +/obj/machinery/firealarm/no_alarm{ dir = 4; pixel_x = 28 }, @@ -6594,7 +6594,7 @@ name = "MO19 Arrivals" }) "jp" = ( -/obj/machinery/firealarm{ +/obj/machinery/firealarm/no_alarm{ dir = 4; pixel_x = 24 }, @@ -7560,7 +7560,7 @@ name = "MO19 Arrivals" }) "kK" = ( -/obj/machinery/firealarm{ +/obj/machinery/firealarm/no_alarm{ dir = 1; pixel_y = -24 }, @@ -8028,7 +8028,7 @@ name = "MO19 Arrivals" }) "lt" = ( -/obj/machinery/firealarm{ +/obj/machinery/firealarm/no_alarm{ dir = 4; pixel_x = 24 }, @@ -8649,7 +8649,7 @@ name = "MO19 Arrivals" }) "mw" = ( -/obj/machinery/firealarm{ +/obj/machinery/firealarm/no_alarm{ dir = 4; pixel_x = 24 }, @@ -8898,7 +8898,7 @@ name = "MO19 Arrivals" }) "mS" = ( -/obj/machinery/firealarm{ +/obj/machinery/firealarm/no_alarm{ dir = 4; pixel_x = 24 }, diff --git a/_maps/map_files/RandomZLevels/spacehotel.dmm b/_maps/map_files/RandomZLevels/spacehotel.dmm index b9232daea52..541156ddc57 100644 --- a/_maps/map_files/RandomZLevels/spacehotel.dmm +++ b/_maps/map_files/RandomZLevels/spacehotel.dmm @@ -859,9 +859,6 @@ }, /turf/unsimulated/beach/sand, /area/awaymission/beach) -"bD" = ( -/turf/simulated/floor/plating/lava/smooth, -/area/awaymission) "bE" = ( /obj/effect/decal{ name = "rock"; @@ -1619,7 +1616,7 @@ requires_power = 0 }) "cR" = ( -/obj/machinery/poolcontroller/seacontroller, +/obj/machinery/poolcontroller/invisible/sea, /turf/unsimulated/wall/metal, /area/awaymission/undersea{ requires_power = 0 @@ -2062,12 +2059,6 @@ }, /turf/unsimulated/beach/water/drop/dense, /area/awaymission/beach) -"dH" = ( -/turf/simulated/floor/plating/lava/smooth, -/area/awaymission{ - name = "Snowland"; - requires_power = 0 - }) "dI" = ( /obj/machinery/light, /turf/unsimulated/beach/water/deep/wood_floor{ @@ -4814,6 +4805,15 @@ icon_state = "cult" }, /area/awaymission/spacehotel) +"VG" = ( +/obj/effect/decal{ + name = "rock"; + icon = 'icons/turf/mining.dmi'; + icon_state = "rock_side_w" + }, +/obj/machinery/poolcontroller/invisible, +/turf/unsimulated/beach/water/deep/dense, +/area/awaymission/beach) (1,1,1) = {" aa @@ -4842,15 +4842,15 @@ aa dw dk dk -dH -dH -dH -dH -dH -dH -dH -dH -dH +dF +dF +dF +dF +dF +dF +dF +dF +dF ah ah ah @@ -4972,15 +4972,15 @@ aa dw dk dk -dH -dH -dH -dH -dH -dH -dH -dH -dH +dF +dF +dF +dF +dF +dF +dF +dF +dF ah ah ah @@ -5102,15 +5102,15 @@ aa dw dk dk -dH -dH -dH -dH -dH -dH -dH -dH -dH +dF +dF +dF +dF +dF +dF +dF +dF +dF ah ah ah @@ -5232,15 +5232,15 @@ aa dx dk dk -dH -dH -dH -dH -dH -dH -dH -dH -dH +dF +dF +dF +dF +dF +dF +dF +dF +dF ah ah ah @@ -5363,14 +5363,14 @@ aa dw dk dk -dH -dH -dH -dH -dH -dH -dH -dH +dF +dF +dF +dF +dF +dF +dF +dF ah ah ah @@ -5493,14 +5493,14 @@ aa dw dk dk -dH -dH -dH -dH -dH -dH -dH -dH +dF +dF +dF +dF +dF +dF +dF +dF ah ah ah @@ -5623,14 +5623,14 @@ aa dw dk dk -dH -dH -dH -dH -dH -dH -dH -dH +dF +dF +dF +dF +dF +dF +dF +dF ah ah ah @@ -5753,14 +5753,14 @@ dy dk dk dF -dH -dH -dH -dH -dH -dH -dH -dH +dF +dF +dF +dF +dF +dF +dF +dF ah ah ah @@ -5883,14 +5883,14 @@ dw dk dk dF -dH -dH -dH -dH -dH -dH -dH -dH +dF +dF +dF +dF +dF +dF +dF +dF ah ah ah @@ -6013,14 +6013,14 @@ dk dk dF dF -dH -dH -dH -dH -dH -dH -dH -dH +dF +dF +dF +dF +dF +dF +dF +dF ah ah ah @@ -6143,14 +6143,14 @@ dk dF dF dF -dH -dH -dH -dH -dH -dH -dH -dH +dF +dF +dF +dF +dF +dF +dF +dF ah ah ah @@ -6273,14 +6273,14 @@ dk dF dF dF -dH -dH -dH -dH -dH -dH -dH -dH +dF +dF +dF +dF +dF +dF +dF +dF ah ah ah @@ -6403,14 +6403,14 @@ dk dk dF dF -dH -dH -dH -dH -dH -dH -dH -dH +dF +dF +dF +dF +dF +dF +dF +dF ah ah ah @@ -6533,14 +6533,14 @@ dw dk dk dF -dH -dH -dH -dH -dH -dH -dH -dH +dF +dF +dF +dF +dF +dF +dF +dF ah ah ah @@ -6663,14 +6663,14 @@ dw dk dk dF -dH -dH -dH -dH -dH -dH -dH -dH +dF +dF +dF +dF +dF +dF +dF +dF ah ah ah @@ -6793,14 +6793,14 @@ dw dk dk dF -dH -dH -dH -dH -dH -dH -dH -dH +dF +dF +dF +dF +dF +dF +dF +dF ah ah ah @@ -6923,14 +6923,14 @@ dx dk dk dF -dH -dH -dH -dH -dH -dH -dH -dH +dF +dF +dF +dF +dF +dF +dF +dF ah ah ah @@ -7053,14 +7053,14 @@ aa dw dk dk -dH -dH -dH -dH -dH -dH -dH -dH +dF +dF +dF +dF +dF +dF +dF +dF ah ah ah @@ -7183,14 +7183,14 @@ aa dw dk dk -dH -dH -dH -dH -dH -dH -dH -dH +dF +dF +dF +dF +dF +dF +dF +dF ah ah ah @@ -7313,14 +7313,14 @@ aa dw dk dk -dH -dH -dH -dH -dH -dH -dH -dH +dF +dF +dF +dF +dF +dF +dF +dF ah ah ah @@ -7443,14 +7443,14 @@ aa dw dk dk -dH -dH -dH -dH -dH -dH -dH -dH +dF +dF +dF +dF +dF +dF +dF +dF ah ah ah @@ -7573,14 +7573,14 @@ aa dw dk dk -dH -dH -dH -dH -dH -dH -dH -dH +dF +dF +dF +dF +dF +dF +dF +dF ah ah ah @@ -7703,14 +7703,14 @@ aa dw dk dk -dH -dH -dH -dH -dH -dH -dH -dH +dF +dF +dF +dF +dF +dF +dF +dF ah ah ah @@ -10564,7 +10564,7 @@ dC dG dB dB -dB +VG ah ah ah @@ -13274,24 +13274,24 @@ ad ad ad ad -bD -bD -bD -bD -bD -bD -bD -bD -bD -bD -bD -bD -bD -bD -bD -bD -bD -bD +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad ad ad ad @@ -13404,24 +13404,24 @@ ad ad ad ad -bD -bD -bD +ad +ad +ad bL cq cq cE cO -bD -bD -bD -bD -bD -bD -bD -bD -bD -bD +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad ad ad ad @@ -13534,8 +13534,8 @@ ad ad ad ad -bD -bD +ad +ad bL bV bV @@ -13544,14 +13544,14 @@ bV cq cE cO -bD -bD -bD -bD -bD -bD -bD -bD +ad +ad +ad +ad +ad +ad +ad +ad ad ad ad @@ -13664,7 +13664,7 @@ ad ad ad ad -bD +ad bL bV bV @@ -13674,14 +13674,14 @@ bV bV cV cO -bD -bD -bD -bD -bD -bD -bD -bD +ad +ad +ad +ad +ad +ad +ad +ad ad ad ad @@ -13794,7 +13794,7 @@ ad ad ad ad -bD +ad bM bV cf @@ -13805,15 +13805,15 @@ cf bV cE cO -bD -bD -bD -bD -bD -bD -bD -bD -bD +ad +ad +ad +ad +ad +ad +ad +ad +ad ad ad ad @@ -13924,7 +13924,7 @@ ad ad ad ad -bD +ad bM bV bV @@ -13935,15 +13935,15 @@ bV bV cV cO -bD +ad bL dd dd cE cO -bD -bD -bD +ad +ad +ad dJ dL cO @@ -14054,7 +14054,7 @@ ad ad ad ad -bD +ad bN bV bV @@ -14068,7 +14068,7 @@ dd dd cP cO -bD +ad dE cO bL @@ -14184,8 +14184,8 @@ ad ad ad ad -bD -bD +ad +ad bM bV bV @@ -14195,15 +14195,15 @@ bV bV cV cO -bD -bD -bD -bD +ad +ad +ad +ad bN dd cP cO -bD +ad dJ dN cO @@ -14314,8 +14314,8 @@ ad ad ad ad -bD -bD +ad +ad bM cf bV @@ -14325,15 +14325,15 @@ cf bV cP cO -bD -bD -bD -bD -bD -bD -bD -bD -bD +ad +ad +ad +ad +ad +ad +ad +ad +ad ad ad ad @@ -14444,8 +14444,8 @@ ad ad ad ad -bD -bD +ad +ad bM bV bV @@ -14454,16 +14454,16 @@ bV bV cV cO -bD -bD -bD -bD -bD -bD -bD -bD -bD -bD +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad ad ad ad @@ -14574,8 +14574,8 @@ ad ad ad ad -bD -bD +ad +ad bN cg cg @@ -14584,16 +14584,16 @@ bV bV cP cO -bD -bD -bD -bD -bD -bD -bD -bD -bD -bD +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad ad ad ad @@ -14704,26 +14704,26 @@ ad ad ad ad -bD -bD -bD -bD -bD +ad +ad +ad +ad +ad bN cg cP cO -bD -bD -bD -bD -bD -bD -bD -bD -bD -bD -bD +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad ad ad ad @@ -14834,26 +14834,26 @@ ad ad ad ad -bD -bD -bD -bD -bD -bD -bD -bD -bD -bD -bD -bD -bD -bD -bD -bD -bD -bD -bD -bD +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad ad ad ad diff --git a/_maps/map_files/RandomZLevels/undergroundoutpost45.dmm b/_maps/map_files/RandomZLevels/undergroundoutpost45.dmm index 8f9f3746ea8..c5741039f2b 100644 --- a/_maps/map_files/RandomZLevels/undergroundoutpost45.dmm +++ b/_maps/map_files/RandomZLevels/undergroundoutpost45.dmm @@ -812,7 +812,7 @@ name = "UO45 Central Hall" }) "by" = ( -/obj/machinery/firealarm{ +/obj/machinery/firealarm/no_alarm{ dir = 4; pixel_x = 24 }, @@ -1841,7 +1841,7 @@ name = "UO45 Central Hall" }) "do" = ( -/obj/machinery/firealarm{ +/obj/machinery/firealarm/no_alarm{ dir = 2; pixel_x = 0; pixel_y = 24 @@ -2133,7 +2133,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/firealarm{ +/obj/machinery/firealarm/no_alarm{ dir = 2; pixel_x = 0; pixel_y = 24 @@ -3590,7 +3590,7 @@ name = "UO45 Central Hall" }) "fW" = ( -/obj/machinery/firealarm{ +/obj/machinery/firealarm/no_alarm{ dir = 1; pixel_x = 0; pixel_y = -24 @@ -4205,7 +4205,7 @@ name = "UO45 Research" }) "gZ" = ( -/obj/machinery/firealarm{ +/obj/machinery/firealarm/no_alarm{ dir = 2; pixel_x = 0; pixel_y = 24 @@ -4314,7 +4314,7 @@ /obj/machinery/light/small{ dir = 8 }, -/obj/machinery/firealarm{ +/obj/machinery/firealarm/no_alarm{ dir = 8; pixel_x = -24 }, @@ -5061,7 +5061,7 @@ name = "UO45 Crew Quarters" }) "iq" = ( -/obj/machinery/firealarm{ +/obj/machinery/firealarm/no_alarm{ dir = 8; pixel_x = -24 }, @@ -5827,7 +5827,7 @@ name = "UO45 Crew Quarters" }) "jw" = ( -/obj/machinery/firealarm{ +/obj/machinery/firealarm/no_alarm{ dir = 8; pixel_x = -24 }, @@ -6511,7 +6511,7 @@ initialize_directions = 11; tag = "icon-manifold-r-f (EAST)" }, -/obj/machinery/firealarm{ +/obj/machinery/firealarm/no_alarm{ dir = 4; pixel_x = 24 }, @@ -7046,7 +7046,7 @@ name = "UO45 Crew Quarters" }) "lg" = ( -/obj/machinery/firealarm{ +/obj/machinery/firealarm/no_alarm{ dir = 1; pixel_x = 0; pixel_y = -24 @@ -7409,7 +7409,7 @@ pixel_x = 0; tag = "" }, -/obj/machinery/firealarm{ +/obj/machinery/firealarm/no_alarm{ dir = 1; pixel_x = 0; pixel_y = -24 @@ -7594,7 +7594,7 @@ icon_state = "pipe-j1"; tag = "icon-pipe-j1 (EAST)" }, -/obj/machinery/firealarm{ +/obj/machinery/firealarm/no_alarm{ dir = 1; pixel_x = 0; pixel_y = -24 @@ -7668,7 +7668,7 @@ name = "UO45 Research" }) "lN" = ( -/obj/machinery/firealarm{ +/obj/machinery/firealarm/no_alarm{ dir = 1; pixel_x = 0; pixel_y = -24 @@ -8181,7 +8181,7 @@ }) "mz" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/firealarm{ +/obj/machinery/firealarm/no_alarm{ dir = 8; pixel_x = -24 }, @@ -8241,7 +8241,7 @@ name = "UO45 Gateway" }) "mE" = ( -/obj/machinery/firealarm{ +/obj/machinery/firealarm/no_alarm{ dir = 1; pixel_x = 0; pixel_y = -24 @@ -9938,7 +9938,7 @@ scrub_N2O = 0; scrub_Toxins = 0 }, -/obj/machinery/firealarm{ +/obj/machinery/firealarm/no_alarm{ dir = 1; pixel_x = 0; pixel_y = -24 @@ -10347,7 +10347,7 @@ /obj/machinery/light/small{ dir = 8 }, -/obj/machinery/firealarm{ +/obj/machinery/firealarm/no_alarm{ dir = 8; pixel_x = -24 }, @@ -10384,7 +10384,7 @@ /obj/machinery/light/small{ dir = 4 }, -/obj/machinery/firealarm{ +/obj/machinery/firealarm/no_alarm{ dir = 4; pixel_x = 24 }, @@ -11386,7 +11386,7 @@ /obj/item/storage/toolbox/mechanical{ pixel_y = 5 }, -/obj/machinery/firealarm{ +/obj/machinery/firealarm/no_alarm{ dir = 2; pixel_x = 0; pixel_y = 24 @@ -11735,7 +11735,7 @@ name = "UO45 Engineering" }) "rj" = ( -/obj/machinery/firealarm{ +/obj/machinery/firealarm/no_alarm{ dir = 2; pixel_x = 0; pixel_y = 24 @@ -12914,7 +12914,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/machinery/firealarm{ +/obj/machinery/firealarm/no_alarm{ dir = 1; pixel_x = 0; pixel_y = -24 @@ -15179,7 +15179,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/machinery/firealarm{ +/obj/machinery/firealarm/no_alarm{ dir = 1; pixel_x = 0; pixel_y = -24 @@ -16281,7 +16281,7 @@ }) "xp" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/firealarm{ +/obj/machinery/firealarm/no_alarm{ dir = 4; pixel_x = 24 }, diff --git a/_maps/map_files/cyberiad/z2.dmm b/_maps/map_files/cyberiad/z2.dmm index aa33ac4e65f..7a43bfc098b 100644 --- a/_maps/map_files/cyberiad/z2.dmm +++ b/_maps/map_files/cyberiad/z2.dmm @@ -12566,6 +12566,10 @@ /obj/effect/landmark/ai_multicam_room, /turf/unsimulated/ai_visible, /area/ai_multicam_room) +"Qt" = ( +/obj/machinery/poolcontroller/invisible, +/turf/unsimulated/beach/water, +/area/ninja/holding) "QE" = ( /obj/structure/chair/sofa/right, /turf/simulated/shuttle/floor{ @@ -54450,7 +54454,7 @@ fI fH fH he -hv +Qt fg aN aN diff --git a/_maps/map_files/generic/Lavaland.dmm b/_maps/map_files/generic/Lavaland.dmm index 66ed729e9d6..3bfdb1d12b2 100644 --- a/_maps/map_files/generic/Lavaland.dmm +++ b/_maps/map_files/generic/Lavaland.dmm @@ -628,6 +628,7 @@ /obj/effect/turf_decal/tile/brown{ dir = 4 }, +/obj/effect/baseturf_helper/lava_land/surface, /turf/simulated/floor/plasteel, /area/mine/eva) "bH" = ( diff --git a/_maps/map_files/templates/spacehotel/s_01.dmm b/_maps/map_files/templates/spacehotel/s_01.dmm index f7c6ba629c6..f97f6613f07 100644 --- a/_maps/map_files/templates/spacehotel/s_01.dmm +++ b/_maps/map_files/templates/spacehotel/s_01.dmm @@ -141,6 +141,10 @@ icon_state = "freezerfloor" }, /area/template_noop) +"K" = ( +/obj/machinery/poolcontroller/invisible, +/turf/unsimulated/beach/water, +/area/template_noop) (1,1,1) = {" a @@ -153,7 +157,7 @@ a "} (2,1,1) = {" a -b +K b l o diff --git a/_maps/map_files/templates/spacehotel/s_02.dmm b/_maps/map_files/templates/spacehotel/s_02.dmm index 5aa78f57470..c3ee3c4a727 100644 --- a/_maps/map_files/templates/spacehotel/s_02.dmm +++ b/_maps/map_files/templates/spacehotel/s_02.dmm @@ -142,6 +142,10 @@ icon_state = "freezerfloor" }, /area/template_noop) +"O" = ( +/obj/machinery/poolcontroller/invisible, +/turf/unsimulated/beach/water, +/area/template_noop) (1,1,1) = {" a @@ -154,7 +158,7 @@ a "} (2,1,1) = {" a -b +O b l o diff --git a/_maps/map_files/templates/spacehotel/s_04.dmm b/_maps/map_files/templates/spacehotel/s_04.dmm index 564246a2854..81c1306da96 100644 --- a/_maps/map_files/templates/spacehotel/s_04.dmm +++ b/_maps/map_files/templates/spacehotel/s_04.dmm @@ -190,6 +190,10 @@ icon_state = "floor4" }, /area/template_noop) +"X" = ( +/obj/machinery/poolcontroller/invisible, +/turf/unsimulated/beach/water, +/area/template_noop) (1,1,1) = {" a @@ -202,7 +206,7 @@ a "} (2,1,1) = {" a -b +X b l o diff --git a/_maps/map_files/templates/spacehotel/s_05.dmm b/_maps/map_files/templates/spacehotel/s_05.dmm index 62c82037700..1ff9546e265 100644 --- a/_maps/map_files/templates/spacehotel/s_05.dmm +++ b/_maps/map_files/templates/spacehotel/s_05.dmm @@ -129,6 +129,10 @@ icon_state = "freezerfloor" }, /area/template_noop) +"Z" = ( +/obj/machinery/poolcontroller/invisible, +/turf/unsimulated/beach/water, +/area/template_noop) (1,1,1) = {" a @@ -141,7 +145,7 @@ a "} (2,1,1) = {" a -b +Z b k n diff --git a/_maps/map_files/templates/spacehotel/s_06.dmm b/_maps/map_files/templates/spacehotel/s_06.dmm index fa839217019..03a1e7e9e99 100644 --- a/_maps/map_files/templates/spacehotel/s_06.dmm +++ b/_maps/map_files/templates/spacehotel/s_06.dmm @@ -131,6 +131,10 @@ icon_state = "freezerfloor" }, /area/template_noop) +"X" = ( +/obj/machinery/poolcontroller/invisible, +/turf/unsimulated/beach/water, +/area/template_noop) (1,1,1) = {" a @@ -143,7 +147,7 @@ a "} (2,1,1) = {" a -b +X b m p diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index 4ff62ea4c89..c4478f62837 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -17,6 +17,8 @@ #define ismecha(A) (istype(A, /obj/mecha)) +#define iseffect(A) (istype(A, /obj/effect)) + #define is_cleanable(A) (istype(A, /obj/effect/decal/cleanable) || istype(A, /obj/effect/rune)) //if something is cleanable #define is_pen(W) (istype(W, /obj/item/pen)) diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 7b9d207e172..f7c5b670dc8 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -1718,8 +1718,8 @@ var/mob/dview/dview_mob = new /proc/turf_clear(turf/T) for(var/atom/A in T) if(A.simulated) - return 0 - return 1 + return FALSE + return TRUE /proc/screen_loc2turf(scr_loc, turf/origin) var/tX = splittext(scr_loc, ",") diff --git a/code/controllers/subsystem/mapping.dm b/code/controllers/subsystem/mapping.dm index b8e6ee4bc14..b45ef833b9f 100644 --- a/code/controllers/subsystem/mapping.dm +++ b/code/controllers/subsystem/mapping.dm @@ -30,7 +30,7 @@ SUBSYSTEM_DEF(mapping) var/mining_type = MINETYPE if (mining_type == "lavaland") // Spawn Lavaland ruins and rivers. - seedRuins(list(level_name_to_num(MINING)), config.lavaland_budget, /area/lavaland/surface/outdoors, lava_ruins_templates) + seedRuins(list(level_name_to_num(MINING)), config.lavaland_budget, /area/lavaland/surface/outdoors/unexplored, lava_ruins_templates) spawn_rivers() else // Populate mining Z-level hidden rooms diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index fafc244af14..bbe2db385a0 100644 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -523,3 +523,5 @@ SUBSYSTEM_DEF(ticker) /datum/controller/subsystem/ticker/proc/HasRoundStarted() return current_state >= GAME_STATE_PLAYING +/datum/controller/subsystem/ticker/proc/IsRoundInProgress() + return current_state == GAME_STATE_PLAYING \ No newline at end of file diff --git a/code/datums/datacore.dm b/code/datums/datacore.dm index 05f430136f0..b7d687d090b 100644 --- a/code/datums/datacore.dm +++ b/code/datums/datacore.dm @@ -624,7 +624,7 @@ var/record_id_num = 1001 clothes_s = new /icon('icons/mob/uniform.dmi', "syndicate_s") clothes_s.Blend(new /icon('icons/mob/feet.dmi', "jackboots"), ICON_UNDERLAY) clothes_s.Blend(new /icon('icons/mob/hands.dmi', "swat_gl"), ICON_UNDERLAY) - else if(H.mind.assigned_role in get_all_centcom_jobs()) + else if(H.mind && H.mind.assigned_role in get_all_centcom_jobs()) clothes_s = new /icon('icons/mob/uniform.dmi', "officer_s") clothes_s.Blend(new /icon('icons/mob/feet.dmi', "laceups"), ICON_UNDERLAY) else diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 32e6487ca57..c52df8c7912 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -12,7 +12,7 @@ var/last_bumped = 0 var/pass_flags = 0 var/germ_level = GERM_LEVEL_AMBIENT // The higher the germ level, the more germ on the atom. - var/simulated = 1 //filter for actions - used by lighting overlays + var/simulated = TRUE //filter for actions - used by lighting overlays var/atom_say_verb = "says" var/dont_save = 0 // For atoms that are temporary by necessity - like lighting overlays diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 525eb10e52f..bcaf21d5cde 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -380,23 +380,20 @@ //Overlays /atom/movable/overlay var/atom/master = null - anchored = 1 + anchored = TRUE + simulated = FALSE /atom/movable/overlay/New() verbs.Cut() return /atom/movable/overlay/attackby(a, b, c) - if(src.master) - return src.master.attackby(a, b, c) - return - + if(master) + return master.attackby(a, b, c) /atom/movable/overlay/attack_hand(a, b, c) - if(src.master) - return src.master.attack_hand(a, b, c) - return - + if(master) + return master.attack_hand(a, b, c) /atom/movable/proc/water_act(volume, temperature, source, method = TOUCH) //amount of water acting : temperature of water in kelvin : object that called it (for shennagins) return TRUE diff --git a/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm b/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm index ecb566af64e..e73474bad7d 100644 --- a/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm +++ b/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm @@ -181,9 +181,19 @@ S.Integrate(src) return FALSE -/atom/movable/lighting_object/swarmer_act() +/atom/movable/swarmer_act() + if(!simulated) + return FALSE + return ..() + +/obj/effect/swarmer_act() return FALSE +/obj/effect/decal/cleanable/robot_debris/swarmer_act(mob/living/simple_animal/hostile/swarmer/S) + S.DisIntegrate(src) + qdel(src) + return TRUE + /obj/item/gun/swarmer_act()//Stops you from eating the entire armory return FALSE diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index 5028db8f0c6..d59aca72145 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -295,10 +295,12 @@ to_chat(O, "The screen bursts into static.") /obj/machinery/camera/proc/triggerCameraAlarm() - SSalarms.camera_alarm.triggerAlarm(loc, src) + if(is_station_contact(z)) + SSalarms.camera_alarm.triggerAlarm(loc, src) /obj/machinery/camera/proc/cancelCameraAlarm() - SSalarms.camera_alarm.clearAlarm(loc, src) + if(is_station_contact(z)) + SSalarms.camera_alarm.clearAlarm(loc, src) /obj/machinery/camera/proc/can_use() if(!status) diff --git a/code/game/machinery/camera/motion.dm b/code/game/machinery/camera/motion.dm index 17f64c07cb8..312e4cf577e 100644 --- a/code/game/machinery/camera/motion.dm +++ b/code/game/machinery/camera/motion.dm @@ -43,19 +43,20 @@ /obj/machinery/camera/proc/cancelAlarm() if(!status || (stat & NOPOWER)) - return 0 - if(detectTime == -1) + return FALSE + if(detectTime == -1 && is_station_contact(z)) SSalarms.motion_alarm.clearAlarm(loc, src) detectTime = 0 - return 1 + return TRUE /obj/machinery/camera/proc/triggerAlarm() if(!status || (stat & NOPOWER)) - return 0 - if(!detectTime) return 0 + return FALSE + if(!detectTime || !is_station_contact(z)) + return FALSE SSalarms.motion_alarm.triggerAlarm(loc, src) detectTime = -1 - return 1 + return TRUE /obj/machinery/camera/HasProximity(atom/movable/AM as mob|obj) // Motion cameras outside of an "ai monitored" area will use this to detect stuff. diff --git a/code/game/machinery/firealarm.dm b/code/game/machinery/firealarm.dm index 835b0264229..e9504157063 100644 --- a/code/game/machinery/firealarm.dm +++ b/code/game/machinery/firealarm.dm @@ -21,6 +21,16 @@ FIRE ALARM var/wiresexposed = 0 var/buildstage = 2 // 2 = complete, 1 = no wires, 0 = circuit gone + var/report_fire_alarms = TRUE // Should triggered fire alarms also trigger an actual alarm? + var/show_alert_level = TRUE // Should fire alarms display the current alert level? + +/obj/machinery/firealarm/no_alarm + report_fire_alarms = FALSE + +/obj/machinery/firealarm/syndicate + report_fire_alarms = FALSE + show_alert_level = FALSE + /obj/machinery/firealarm/update_icon() if(wiresexposed) @@ -215,40 +225,38 @@ FIRE ALARM time = min(max(round(time), 0), 120) /obj/machinery/firealarm/proc/reset() - if(!( working )) + if(!working) return var/area/A = get_area(src) A.fire_reset() + for(var/obj/machinery/firealarm/FA in A) - SSalarms.fire_alarm.clearAlarm(loc, FA) - return + if(is_station_contact(z) && FA.report_fire_alarms) + SSalarms.fire_alarm.clearAlarm(loc, FA) /obj/machinery/firealarm/proc/alarm(var/duration = 0) - if(!( working)) + if(!working) return + var/area/A = get_area(src) for(var/obj/machinery/firealarm/FA in A) - SSalarms.fire_alarm.triggerAlarm(loc, FA, duration) + if(is_station_contact(z) && FA.report_fire_alarms) + SSalarms.fire_alarm.triggerAlarm(loc, FA, duration) + else + A.fire_alert() // Manually trigger alarms if the alarm isn't reported + update_icon() - //playsound(loc, 'sound/ambience/signal.ogg', 75, 0) - return /obj/machinery/firealarm/New(location, direction, building) ..() - if(location) - loc = location - - if(direction) - dir = direction - if(building) buildstage = 0 - wiresexposed = 1 + wiresexposed = TRUE pixel_x = (dir & 3)? 0 : (dir == 4 ? -24 : 24) pixel_y = (dir & 3)? (dir ==1 ? -24 : 24) : 0 - if(is_station_contact(z)) + if(is_station_contact(z) && show_alert_level) if(security_level) overlays += image('icons/obj/monitors.dmi', "overlay_[get_security_level()]") else diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index 7ed82b476f9..2bc9196740e 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -348,28 +348,28 @@ Class Procs: return attack_hand(user) /obj/machinery/attack_hand(mob/user as mob) - if(user.lying || user.stat) - return 1 + if(user.incapacitated()) + return TRUE if(!user.IsAdvancedToolUser()) to_chat(user, "You don't have the dexterity to do this!") - return 1 + return TRUE if(ishuman(user)) var/mob/living/carbon/human/H = user if(H.getBrainLoss() >= 60) visible_message("[H] stares cluelessly at [src] and drools.") - return 1 + return TRUE else if(prob(H.getBrainLoss())) to_chat(user, "You momentarily forget how to use [src].") - return 1 + return TRUE if(panel_open) add_fingerprint(user) - return 0 + return FALSE if(!interact_offline && stat & (NOPOWER|BROKEN|MAINT)) - return 1 + return TRUE add_fingerprint(user) diff --git a/code/game/machinery/poolcontroller.dm b/code/game/machinery/poolcontroller.dm index 17fae9df6f6..0d6f76aad38 100644 --- a/code/game/machinery/poolcontroller.dm +++ b/code/game/machinery/poolcontroller.dm @@ -20,13 +20,36 @@ var/list/linkedmist = list() //Used to keep track of created mist var/deep_water = FALSE //set to 1 to drown even standing people +/obj/machinery/poolcontroller/invisible + invisibility = INVISIBILITY_MAXIMUM + name = "Water Controller" + desc = "An invisible water controller. Players shouldn't see this." -/obj/machinery/poolcontroller/New() //This proc automatically happens on world start +/obj/machinery/poolcontroller/invisible/sea + name = "Sea Controller" + desc = "A controller for the underwater portion of the sea. Players shouldn't see this." + deep_water = TRUE + +/obj/machinery/poolcontroller/Initialize(mapload) + var/contents_loop = linked_area if(!linked_area) - for(var/turf/simulated/floor/beach/water/W in range(srange,src)) //Search for /turf/simulated/floor/beach/water in the range of var/srange - linkedturfs += W //Add found pool turfs to the central list. - W.linkedcontroller = src // And add the linked controller to itself. - ..() //Changed to call parent as per MarkvA's recommendation + contents_loop = range(srange, src) + + for(var/turf/T in contents_loop) + if(istype(T, /turf/simulated/floor/beach/water)) + var/turf/simulated/floor/beach/water/W = T + W.linkedcontroller = src + linkedturfs += T + else if(istype(T, /turf/unsimulated/beach/water)) + var/turf/unsimulated/beach/water/W = T + W.linkedcontroller = src + linkedturfs += T + + . = ..() + +/obj/machinery/poolcontroller/invisible/Initialize(mapload) + linked_area = get_area(src) + . = ..() /obj/machinery/poolcontroller/emag_act(user as mob) //Emag_act, this is called when it is hit with a cryptographic sequencer. if(!emagged) //If it is not already emagged, emag it. @@ -190,20 +213,6 @@ return 1 -/obj/machinery/poolcontroller/seacontroller - invisibility = 101 - unacidable = 1 - name = "Sea Controller" - desc = "A controller for the underwater portion of the sea. Players shouldn't see this." - deep_water = TRUE //deep sea is deep water - -/obj/machinery/poolcontroller/seacontroller/Initialize() - linked_area = get_area(src) - for(var/turf/unsimulated/beach/water/W in linked_area) - linkedturfs += W //Add found pool turfs to the central list. - W.linkedcontroller = src // And add the linked controller to itself. - ..() - #undef FRIGID #undef COOL #undef NORMAL diff --git a/code/game/objects/effects/portals.dm b/code/game/objects/effects/portals.dm index faaf623fa50..a4020af9d0d 100644 --- a/code/game/objects/effects/portals.dm +++ b/code/game/objects/effects/portals.dm @@ -3,68 +3,120 @@ desc = "Looks unstable. Best to test it with the clown." icon = 'icons/obj/stationobjs.dmi' icon_state = "portal" - density = 1 - unacidable = 1//Can't destroy energy portals. - var/failchance = 5 + density = TRUE + unacidable = TRUE + anchored = TRUE + var/obj/item/target = null var/creator = null - anchored = 1 - var/precision = 1 // how close to the portal you will teleport. 0 = on the portal, 1 = adjacent - var/can_multitool_to_remove = 0 + + var/failchance = 5 + var/fail_icon = "portal1" + + var/precision = TRUE // how close to the portal you will teleport. FALSE = on the portal, TRUE = adjacent + var/can_multitool_to_remove = FALSE var/ignore_tele_proof_area_setting = FALSE /obj/effect/portal/Bumped(mob/M as mob|obj) teleport(M) -/obj/effect/portal/New(loc, turf/target, creator=null, lifespan=300) +/obj/effect/portal/New(loc, turf/target, creator = null, lifespan = 300) + ..() + GLOB.portals += src - src.loc = loc + src.target = target src.creator = creator + if(lifespan > 0) spawn(lifespan) qdel(src) /obj/effect/portal/Destroy() GLOB.portals -= src - if(istype(creator, /obj)) + + if(isobj(creator)) var/obj/O = creator O.portal_destroyed(src) + creator = null target = null return ..() -/obj/effect/portal/proc/teleport(atom/movable/M as mob|obj) - if(istype(M, /obj/effect)) //sparks don't teleport +/obj/effect/portal/singularity_pull() + return + +/obj/effect/portal/singularity_act() + return + +/obj/effect/portal/Crossed(atom/movable/AM) + if(isobserver(AM)) + return ..() + + if(!teleport(AM)) + return ..() + +/obj/effect/portal/attack_tk(mob/user) + return + +/obj/effect/portal/attack_hand(mob/user) + . = ..() + if(.) return - if(M.anchored&&istype(M, /obj/mecha)) - return - if(!( target )) - qdel(src) - return - if(istype(M, /atom/movable)) - if(prob(failchance)) - src.icon_state = "portal1" - if(!do_teleport(M, locate(rand(5, world.maxx - 5), rand(5, world.maxy -5), 3), 0, bypass_area_flag = ignore_tele_proof_area_setting)) // Try to send them to deep space. - invalid_teleport() - else - if(!do_teleport(M, target, precision, bypass_area_flag = ignore_tele_proof_area_setting)) // Try to send them to a turf adjacent to target. - invalid_teleport() + if(get_turf(user) == get_turf(src)) + teleport(user) + if(Adjacent(user)) + user.forceMove(get_turf(src)) + +/obj/effect/portal/attack_ghost(mob/dead/observer/O) + if(target) + O.forceMove(target) /obj/effect/portal/attackby(obj/item/A, mob/user) - if(istype(A, /obj/item/multitool) && can_multitool_to_remove) + if(ismultitool(A) && can_multitool_to_remove) qdel(src) + else if(user && Adjacent(user)) + user.forceMove(get_turf(src)) + return TRUE + +/obj/effect/portal/proc/teleport(atom/movable/M, force = FALSE) + if(!istype(M)) + return FALSE + + if(!M.simulated || iseffect(M)) + return FALSE + + if(M.anchored && ismecha(M)) + return FALSE + + if(!target) + qdel(src) + return FALSE + + if(ismegafauna(M)) + message_admins("[M] has used a portal at [ADMIN_VERBOSEJMP(src)] made by [key_name_admin(usr)].") + + if(prob(failchance)) + icon_state = fail_icon + if(!do_teleport(M, locate(rand(5, world.maxx - 5), rand(5, world.maxy -5), 3), 0, bypass_area_flag = ignore_tele_proof_area_setting)) // Try to send them to deep space. + invalid_teleport() + return FALSE + else + if(!do_teleport(M, target, precision, bypass_area_flag = ignore_tele_proof_area_setting)) // Try to send them to a turf adjacent to target. + invalid_teleport() + return FALSE + + return TRUE /obj/effect/portal/proc/invalid_teleport() visible_message("[src] flickers and fails due to bluespace interference!") do_sparks(5, 0, loc) qdel(src) - /obj/effect/portal/redspace name = "redspace portal" desc = "A portal capable of bypassing bluespace interference." icon_state = "portal1" failchance = 0 precision = 0 - ignore_tele_proof_area_setting = TRUE \ No newline at end of file + ignore_tele_proof_area_setting = TRUE diff --git a/code/game/objects/structures/displaycase.dm b/code/game/objects/structures/displaycase.dm index 6b54f61537e..c03b9694cfa 100644 --- a/code/game/objects/structures/displaycase.dm +++ b/code/game/objects/structures/displaycase.dm @@ -93,14 +93,14 @@ GLOBAL_LIST_INIT(captain_display_cases, list()) icon = 'icons/obj/stationobjs.dmi' icon_state = "glassbox20" desc = "A display case for prized possessions. It taunts you to kick it." - density = 1 - anchored = 1 - unacidable = 1 //Dissolving the case would also delete the contents. + density = TRUE + anchored = TRUE + unacidable = TRUE //Dissolving the case would also delete the contents. var/health = 30 var/obj/item/occupant = null - var/destroyed = 0 - var/locked = 0 - var/burglar_alarm = 0 + var/destroyed = FALSE + var/locked = FALSE + var/burglar_alarm = FALSE var/ue = null var/image/occupant_overlay = null var/obj/item/airlock_electronics/circuit @@ -116,8 +116,8 @@ GLOBAL_LIST_INIT(captain_display_cases, list()) /obj/structure/displaycase/captains_laser name = "captain's display case" desc = "A display case for the captain's antique laser gun. Hooked up with an anti-theft system." - burglar_alarm = 1 - locked = 1 + burglar_alarm = TRUE + locked = TRUE req_access = list(access_captain) start_showpiece_type = /obj/item/gun/energy/laser/captain @@ -205,7 +205,7 @@ GLOBAL_LIST_INIT(captain_display_cases, list()) return /obj/structure/displaycase/proc/burglar_alarm() - if(burglar_alarm) + if(burglar_alarm && is_station_contact(z)) var/area/alarmed = get_area(src) alarmed.burglaralert(src) visible_message("The burglar alarm goes off!") @@ -215,10 +215,10 @@ GLOBAL_LIST_INIT(captain_display_cases, list()) sleep(74) // 7.4 seconds long /obj/structure/displaycase/update_icon() - if(src.destroyed) - src.icon_state = "glassbox2b" + if(destroyed) + icon_state = "glassbox2b" else - src.icon_state = "glassbox2[locked]" + icon_state = "glassbox2[locked]" overlays = 0 if(occupant) var/icon/occupant_icon=getFlatIcon(occupant) diff --git a/code/game/turfs/simulated/floor/asteroid.dm b/code/game/turfs/simulated/floor/asteroid.dm index 8ed3cd22b4b..43d77bd39be 100644 --- a/code/game/turfs/simulated/floor/asteroid.dm +++ b/code/game/turfs/simulated/floor/asteroid.dm @@ -18,9 +18,6 @@ if(prob(floor_variance)) icon_state = "[environment_type][rand(0,12)]" -/turf/simulated/floor/plating/asteroid/try_replace_tile(obj/item/stack/tile/T, mob/user, params) - return - /turf/simulated/floor/plating/asteroid/burn_tile() return @@ -95,12 +92,6 @@ slowdown = 0 return -/turf/simulated/floor/plating/asteroid/singularity_act() - return - -/turf/simulated/floor/plating/asteroid/singularity_pull(S, current_size) - return - /turf/simulated/floor/plating/asteroid/basalt name = "volcanic floor" baseturf = /turf/simulated/floor/plating/asteroid/basalt diff --git a/code/game/turfs/simulated/floor/chasm.dm b/code/game/turfs/simulated/floor/chasm.dm index f3273c7786a..6a213400d04 100644 --- a/code/game/turfs/simulated/floor/chasm.dm +++ b/code/game/turfs/simulated/floor/chasm.dm @@ -8,7 +8,7 @@ canSmoothWith = list(/turf/simulated/floor/chasm) density = TRUE //This will prevent hostile mobs from pathing into chasms, while the canpass override will still let it function like an open turf var/static/list/falling_atoms = list() //Atoms currently falling into the chasm - var/static/list/forbidden_types = typecacheof(list(/obj/effect/portal, /obj/singularity, /obj/structure/stone_tile, /obj/item/projectile, /obj/effect/temp_visual, /obj/effect/collapse, /obj/effect/collapse, /atom/movable/lighting_object)) + var/static/list/forbidden_types = typecacheof(list(/obj/effect/portal, /obj/singularity, /obj/structure/stone_tile, /obj/item/projectile, /obj/effect/temp_visual, /obj/effect/collapse, /obj/effect/collapse)) var/drop_x = 1 var/drop_y = 1 var/drop_z = 1 @@ -75,7 +75,7 @@ return FALSE if(!isliving(AM) && !isobj(AM)) return FALSE - if(is_type_in_typecache(AM, forbidden_types) || AM.throwing) + if(!AM.simulated || is_type_in_typecache(AM, forbidden_types) || AM.throwing) return FALSE //Flies right over the chasm if(isliving(AM)) diff --git a/code/game/turfs/simulated/floor/lava.dm b/code/game/turfs/simulated/floor/lava.dm index c1a8bfd6fea..d1ee346b302 100644 --- a/code/game/turfs/simulated/floor/lava.dm +++ b/code/game/turfs/simulated/floor/lava.dm @@ -53,13 +53,13 @@ return FALSE var/thing_to_check = src - if (AM) + if(AM) thing_to_check = list(AM) for(var/thing in thing_to_check) - if(istype(thing, /atom/movable/lighting_object) || istype(thing, /atom/movable/overlay)) - continue if(isobj(thing)) var/obj/O = thing + if(!O.simulated) + continue if((O.resistance_flags & (LAVA_PROOF|INDESTRUCTIBLE)) || O.throwing) continue . = 1 @@ -71,7 +71,7 @@ O.resistance_flags &= ~FIRE_PROOF O.fire_act(10000, 1000) - else if (isliving(thing)) + else if(isliving(thing)) . = 1 var/mob/living/L = thing if(L.flying) diff --git a/code/game/turfs/simulated/floor/mineral.dm b/code/game/turfs/simulated/floor/mineral.dm index 92d4c8811ed..a801fd450c5 100644 --- a/code/game/turfs/simulated/floor/mineral.dm +++ b/code/game/turfs/simulated/floor/mineral.dm @@ -254,6 +254,3 @@ /turf/simulated/floor/plating/abductor2/burn_tile() return //unburnable - -/turf/simulated/floor/plating/abductor2/try_replace_tile(obj/item/stack/tile/T, mob/user, params) - return \ No newline at end of file diff --git a/code/game/turfs/simulated/floor/misc_floor.dm b/code/game/turfs/simulated/floor/misc_floor.dm index de1e61039e7..ddf71b96798 100644 --- a/code/game/turfs/simulated/floor/misc_floor.dm +++ b/code/game/turfs/simulated/floor/misc_floor.dm @@ -43,6 +43,9 @@ name = "beach" icon = 'icons/misc/beach.dmi' +/turf/simulated/floor/beach/pry_tile(obj/item/C, mob/user, silent = FALSE) + return + /turf/simulated/floor/beach/sand name = "sand" icon_state = "sand" @@ -67,10 +70,6 @@ mouse_opacity = MOUSE_OPACITY_TRANSPARENT var/obj/machinery/poolcontroller/linkedcontroller = null -/turf/simulated/floor/beach/water/pry_tile(obj/item/C, mob/user, silent = FALSE) - return //cannot pry off tiles of water - - /turf/simulated/floor/beach/water/New() ..() var/image/overlay_image = image('icons/misc/beach.dmi', icon_state = "water5", layer = ABOVE_MOB_LAYER) diff --git a/code/game/turfs/simulated/floor/plating.dm b/code/game/turfs/simulated/floor/plating.dm index 438240ad503..ee53cd0ca35 100644 --- a/code/game/turfs/simulated/floor/plating.dm +++ b/code/game/turfs/simulated/floor/plating.dm @@ -2,7 +2,7 @@ name = "plating" icon_state = "plating" icon = 'icons/turf/floors/plating.dmi' - intact = 0 + intact = FALSE floor_tile = null broken_states = list("damaged1", "damaged2", "damaged3", "damaged4", "damaged5") burnt_states = list("floorscorched1", "floorscorched2") @@ -103,7 +103,7 @@ /turf/simulated/floor/engine/attack_hand(mob/user as mob) user.Move_Pulled(src) -/turf/simulated/floor/engine/try_replace_tile(obj/item/stack/tile/T, mob/user, params) +/turf/simulated/floor/engine/pry_tile(obj/item/C, mob/user, silent = FALSE) return /turf/simulated/floor/engine/attackby(obj/item/C as obj, mob/user as mob, params) @@ -224,7 +224,7 @@ /turf/simulated/floor/snow/ex_act(severity) return -/turf/simulated/floor/snow/try_replace_tile(obj/item/stack/tile/T, mob/user, params) +/turf/simulated/floor/snow/pry_tile(obj/item/C, mob/user, silent = FALSE) return /turf/simulated/floor/plating/metalfoam @@ -243,12 +243,10 @@ if(MFOAM_IRON) icon_state = "ironfoam" -/turf/simulated/floor/plating/metalfoam/try_replace_tile(obj/item/stack/tile/T, mob/user, params) - return - /turf/simulated/floor/plating/metalfoam/attackby(var/obj/item/C, mob/user, params) if(..()) - return 1 + return TRUE + if(istype(C) && C.force) user.changeNext_move(CLICK_CD_MELEE) user.do_attack_animation(src) diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm index 23038b21be5..8163bc75acc 100644 --- a/code/game/turfs/simulated/walls.dm +++ b/code/game/turfs/simulated/walls.dm @@ -136,7 +136,7 @@ var/obj/structure/sign/poster/P = O P.roll_and_drop(src) else - O.loc = src + O.forceMove(src) ChangeTurf(/turf/simulated/floor/plating) diff --git a/code/game/turfs/space/transit.dm b/code/game/turfs/space/transit.dm index c08189e4d93..79bf171ce1f 100644 --- a/code/game/turfs/space/transit.dm +++ b/code/game/turfs/space/transit.dm @@ -88,7 +88,7 @@ /turf/space/transit/Entered(atom/movable/AM, atom/OldLoc, ignoreRest = 0) if(!AM) return - if(istype(AM, /obj/docking_port) || !AM.simulated) + if(!AM.simulated || istype(AM, /obj/docking_port)) return //this was fucking hilarious, the docking ports were getting thrown to random Z-levels var/max = world.maxx-TRANSITIONEDGE var/min = 1+TRANSITIONEDGE diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index 21b9f9b455a..53cf1917404 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -491,16 +491,14 @@ var/turf/T0 = src for(var/X in T0.GetAllContents()) var/atom/A = X + if(!A.simulated) + continue if(istype(A, /mob/dead)) continue if(istype(A, /obj/effect/landmark)) continue if(istype(A, /obj/docking_port)) continue - if(istype(A, /atom/movable/lighting_object)) - continue - if(!A.simulated) - continue qdel(A, force=TRUE) T0.ChangeTurf(turf_type) diff --git a/code/modules/awaymissions/mission_code/stationCollision.dm b/code/modules/awaymissions/mission_code/stationCollision.dm index e84df256f6b..ed888d65465 100644 --- a/code/modules/awaymissions/mission_code/stationCollision.dm +++ b/code/modules/awaymissions/mission_code/stationCollision.dm @@ -161,7 +161,7 @@ var/sc_safecode5 = "[rand(0,9)]" desc = "Your body becomes weak and your feel your mind slipping away as you try to comprehend what you know can't be possible." move_self = 0 //Contianed narsie does not move! grav_pull = 0 //Contained narsie does not pull stuff in! - var/uneatable = list(/turf/space, /obj/effect/overlay, /atom/movable/lighting_object, /mob/living/simple_animal/hostile/construct) + var/uneatable = list(/turf/space, /obj/effect/overlay, /mob/living/simple_animal/hostile/construct) //Override this to prevent no adminlog runtimes and admin warnings about a singularity without containment /obj/singularity/narsie/sc_Narsie/admin_investigate_setup() @@ -173,14 +173,16 @@ var/sc_safecode5 = "[rand(0,9)]" mezzer() /obj/singularity/narsie/sc_Narsie/consume(var/atom/A) + if(!A.simulated) + return FALSE if(is_type_in_list(A, uneatable)) - return 0 + return FALSE if(istype(A,/mob/living)) var/mob/living/L = A L.gib() else if(istype(A,/obj/)) var/obj/O = A - O.ex_act(1.0) + O.ex_act(1) if(O) qdel(O) else if(isturf(A)) var/turf/T = A diff --git a/code/modules/events/wormholes.dm b/code/modules/events/wormholes.dm index be145752671..c92ec910cdc 100644 --- a/code/modules/events/wormholes.dm +++ b/code/modules/events/wormholes.dm @@ -34,7 +34,6 @@ qdel(O) wormholes.Cut() - /obj/effect/portal/wormhole name = "wormhole" desc = "It looks highly unstable; It could close at any moment." @@ -42,23 +41,26 @@ icon_state = "anom" failchance = 0 -/obj/effect/portal/wormhole/attack_hand(mob/user) - teleport(user) - -/obj/effect/portal/wormhole/attackby(obj/item/I, mob/user, params) - teleport(user) - /obj/effect/portal/wormhole/teleport(atom/movable/M) - if(istype(M, /obj/effect)) //sparks don't teleport - return - if(M.anchored && istype(M, /obj/mecha)) - return + if(!istype(M)) + return FALSE - if(istype(M, /atom/movable)) - var/turf/target - if(GLOB.portals.len) - var/obj/effect/portal/P = pick(GLOB.portals) - if(P && isturf(P.loc)) - target = P.loc - if(!target) return - do_teleport(M, target, 1, 1, 0, 0) ///You will appear adjacent to the beacon + if(!M.simulated || iseffect(M)) + return FALSE + + if(M.anchored && ismecha(M)) + return FALSE + + var/turf/target + if(GLOB.portals.len) + var/obj/effect/portal/P = pick(GLOB.portals) + if(P && isturf(P.loc)) + target = P.loc + + if(!target) + return FALSE + + if(!do_teleport(M, target, 1, TRUE)) ///You will appear adjacent to the beacon + return FALSE + + return TRUE diff --git a/code/modules/food_and_drinks/food/foods/meat.dm b/code/modules/food_and_drinks/food/foods/meat.dm index fdcf4d2497a..eb9569ad356 100644 --- a/code/modules/food_and_drinks/food/foods/meat.dm +++ b/code/modules/food_and_drinks/food/foods/meat.dm @@ -129,7 +129,7 @@ name = "goliath meat" desc = "A slab of goliath meat. It's not very edible now, but it cooks great in lava." icon_state = "goliathmeat" - list_reagents = list("nutriment" = 3, "toxin" = 5) + list_reagents = list("protein" = 3, "toxin" = 5) /obj/item/reagent_containers/food/snacks/goliath/burn() visible_message("[src] finishes cooking!") @@ -222,6 +222,7 @@ resistance_flags = LAVA_PROOF | FIRE_PROOF icon_state = "goliathsteak" trash = null + list_reagents = list("protein" = 6, "vitamin" = 2) ////////////////////// // Cubes // diff --git a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm index e623cda0de0..48b4453f6d4 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm @@ -157,6 +157,9 @@ pass_flags = PASSTABLE visible_contents = FALSE +/obj/machinery/smartfridge/disks/accept_check(obj/item/O) + return istype(O, /obj/item/disk) + // ---------------------------- // Virology Medical Smartfridge // ---------------------------- diff --git a/code/modules/mining/equipment_locker.dm b/code/modules/mining/equipment_locker.dm index 82ae53fa5a0..10823051563 100644 --- a/code/modules/mining/equipment_locker.dm +++ b/code/modules/mining/equipment_locker.dm @@ -699,7 +699,7 @@ /obj/item/wormhole_jaunter name = "wormhole jaunter" - desc = "A single use device harnessing outdated wormhole technology, Nanotrasen has since turned its eyes to blue space for more accurate teleportation. The wormholes it creates are unpleasant to travel through, to say the least." + desc = "A single use device harnessing outdated wormhole technology, Nanotrasen has since turned its eyes to bluespace for more accurate teleportation. The wormholes it creates are unpleasant to travel through, to say the least.\nThanks to modifications provided by the Free Golems, this jaunter can be worn on the belt to provide protection from chasms." icon = 'icons/obj/items.dmi' icon_state = "Jaunter" item_state = "electronic" @@ -708,15 +708,16 @@ throw_speed = 3 throw_range = 5 origin_tech = "bluespace=2" + slot_flags = SLOT_BELT /obj/item/wormhole_jaunter/attack_self(mob/user) - user.visible_message("[user.name] activates the [src.name]!") + user.visible_message("[user.name] activates the [name]!") activate(user, TRUE) /obj/item/wormhole_jaunter/proc/turf_check(mob/user) var/turf/device_turf = get_turf(user) if(!device_turf || !is_teleport_allowed(device_turf.z)) - to_chat(user, "You're having difficulties getting the [src.name] to work.") + to_chat(user, "You're having difficulties getting the [name] to work.") return FALSE return TRUE @@ -736,49 +737,42 @@ var/list/L = get_destinations(user) if(!L.len) - to_chat(user, "The [src.name] found no beacons in the world to anchor a wormhole to.") + to_chat(user, "The [name] found no beacons in the world to anchor a wormhole to.") return var/chosen_beacon = pick(L) - var/obj/effect/portal/wormhole/jaunt_tunnel/J = new (get_turf(src), src, 100, null, FALSE, get_turf(chosen_beacon)) + var/obj/effect/portal/jaunt_tunnel/J = new(get_turf(src), get_turf(chosen_beacon), src, 100) if(adjacent) try_move_adjacent(J) + else + J.teleport(user) playsound(src,'sound/effects/sparks4.ogg',50,1) qdel(src) /obj/item/wormhole_jaunter/proc/chasm_react(mob/user) - if(user.get_item_by_slot(SLOT_BELT) == src) + if(user.get_item_by_slot(slot_belt) == src) to_chat(user, "Your [name] activates, saving you from the chasm!") activate(user, FALSE) else to_chat(user, "[src] is not attached to your belt, preventing it from saving you from the chasm. RIP.") -/obj/effect/portal/wormhole/jaunt_tunnel +/obj/effect/portal/jaunt_tunnel name = "jaunt tunnel" icon = 'icons/effects/effects.dmi' icon_state = "bhole3" desc = "A stable hole in the universe made by a wormhole jaunter. Turbulent doesn't even begin to describe how rough passage through one of these is, but at least it will always get you somewhere near a beacon." + failchance = 0 -/obj/effect/portal/wormhole/jaunt_tunnel/teleport(atom/movable/M) - if(istype(M, /obj/effect)) - return - if(istype(M, /atom/movable)) - if(do_teleport(M, target, 6)) - if(isliving(M)) - var/mob/living/L = M - L.Weaken(3) - if(ishuman(L)) - shake_camera(L, 20, 1) - var/mob/living/carbon/human/H = L - spawn(20) - if(H && H.check_has_mouth()) - H.visible_message("[L.name] vomits from travelling through the [src.name]!", "You throw up from travelling through the [src.name]!") - H.nutrition -= 20 - H.adjustToxLoss(-3) - var/turf/T = get_turf(H) - T.add_vomit_floor() - else - visible_message("[src] flickers and fails, due to bluespace interference!") - qdel(src) +/obj/effect/portal/jaunt_tunnel/teleport(atom/movable/M) + . = ..() + if(.) + // KERPLUNK + playsound(M,'sound/weapons/resonator_blast.ogg', 50, 1) + if(iscarbon(M)) + var/mob/living/carbon/L = M + L.Weaken(6) + if(ishuman(L)) + shake_camera(L, 20, 1) + addtimer(CALLBACK(L, /mob/living/carbon.proc/vomit), 20) /**********************Resonator**********************/ diff --git a/code/modules/mining/lavaland/ash_flora.dm b/code/modules/mining/lavaland/ash_flora.dm index 17887b8eae7..ab714c6f1a6 100644 --- a/code/modules/mining/lavaland/ash_flora.dm +++ b/code/modules/mining/lavaland/ash_flora.dm @@ -4,6 +4,7 @@ icon_state = "l_mushroom" name = "large mushrooms" desc = "A number of large mushrooms, covered in a faint layer of ash and what can only be spores." + anchored = TRUE var/harvested_name = "shortened mushrooms" var/harvested_desc = "Some quickly regrowing mushrooms, formerly known to be quite large." var/needs_sharp_harvest = TRUE @@ -26,17 +27,6 @@ if(prob(15)) harvest(null, TRUE) -/obj/structure/flora/ash/ex_act(severity, target) - switch(severity) - if(1) - qdel(src) - if(2) - if(prob(80)) - qdel(src) - if(3) - if(prob(50)) - qdel(src) - /obj/structure/flora/ash/proc/harvest(user, no_drop) if(harvested) return 0 diff --git a/code/modules/mining/lavaland/loot/ashdragon_loot.dm b/code/modules/mining/lavaland/loot/ashdragon_loot.dm index a39b1bbf8c6..4f8f01498d0 100644 --- a/code/modules/mining/lavaland/loot/ashdragon_loot.dm +++ b/code/modules/mining/lavaland/loot/ashdragon_loot.dm @@ -72,7 +72,7 @@ var/mob/dead/observer/current_spirits = list() for(var/mob/dead/observer/O in GLOB.player_list) - if(is_type_in_list(O.following, contents)) + if((O.following in contents)) ghost_counter++ O.invisibility = 0 current_spirits |= O @@ -198,7 +198,7 @@ user.visible_message("[user] turns \the [T] into [transform_string]!") message_admins("[key_name_admin(user)] fired the lava staff at [get_area(target)] (JMP).") log_game("[key_name(user)] fired the lava staff at [get_area(target)] ([T.x], [T.y], [T.z]).") - T.TerraformTurf(turf_type) + T.TerraformTurf(turf_type, keep_icon = FALSE) timer = world.time + create_cooldown qdel(L) else @@ -207,7 +207,7 @@ return else user.visible_message("[user] turns \the [T] into [reset_string]!") - T.TerraformTurf(reset_turf_type) + T.TerraformTurf(reset_turf_type, keep_icon = FALSE) timer = world.time + reset_cooldown playsound(T,'sound/magic/fireball.ogg', 200, 1) diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index 573ff630350..d8286bc8698 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -30,7 +30,6 @@ if(6) new /obj/item/pickaxe/diamond(src) if(7) - new /obj/item/clothing/head/culthood(src) new /obj/item/clothing/suit/hooded/cultrobes(src) new /obj/item/bedsheet/cult(src) if(8) diff --git a/code/modules/mining/machine_processing.dm b/code/modules/mining/machine_processing.dm index 860692673a5..03b8404b1f0 100644 --- a/code/modules/mining/machine_processing.dm +++ b/code/modules/mining/machine_processing.dm @@ -20,18 +20,27 @@ anchored = TRUE var/obj/machinery/mineral/processing_unit/machine = null var/machinedir = EAST + speed_process = TRUE -/obj/machinery/mineral/processing_unit_console/New() - ..() +/obj/machinery/mineral/processing_unit_console/Initialize(mapload) + . = ..() machine = locate(/obj/machinery/mineral/processing_unit, get_step(src, machinedir)) if(machine) machine.CONSOLE = src else - qdel(src) + return INITIALIZE_HINT_QDEL + +/obj/machinery/mineral/processing_unit_console/attack_ghost(mob/user) + return ui_interact(user) /obj/machinery/mineral/processing_unit_console/attack_hand(mob/user) if(..()) - return + return TRUE + + return ui_interact(user) + +/obj/machinery/mineral/processing_unit_console/ui_interact(mob/user) + . = ..() if(!machine) return @@ -43,7 +52,8 @@ /obj/machinery/mineral/processing_unit_console/Topic(href, href_list) if(..()) - return + return TRUE + usr.set_machine(src) add_fingerprint(usr) @@ -59,15 +69,14 @@ machine.on = (href_list["set_on"] == "on") updateUsrDialog() + return TRUE /obj/machinery/mineral/processing_unit_console/Destroy() machine = null return ..() - /**********************Mineral processing unit**************************/ - /obj/machinery/mineral/processing_unit name = "furnace" icon = 'icons/obj/machines/mining_machines.dmi' @@ -81,8 +90,8 @@ var/datum/research/files speed_process = TRUE -/obj/machinery/mineral/processing_unit/New() - ..() +/obj/machinery/mineral/processing_unit/Initialize(mapload) + . = ..() AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TRANQUILLITE, MAT_TITANIUM, MAT_BLUESPACE), INFINITY, TRUE, /obj/item/stack) files = new /datum/research/smelter(src) @@ -99,6 +108,7 @@ for(var/obj/item/stack/ore/O in T) process_ore(O) CHECK_TICK + if(on) if(selected_material) smelt_ore() @@ -106,11 +116,9 @@ else if(selected_alloy) smelt_alloy() - if(CONSOLE) CONSOLE.updateUsrDialog() - /obj/machinery/mineral/processing_unit/proc/process_ore(obj/item/stack/ore/O) GET_COMPONENT(materials, /datum/component/material_container) var/material_amount = materials.get_item_material_amount(O) @@ -167,7 +175,6 @@ var/out = get_step(src, output_dir) materials.retrieve_sheets(sheets_to_remove, selected_material, out) - /obj/machinery/mineral/processing_unit/proc/smelt_alloy() var/datum/design/alloy = files.FindDesignByID(selected_alloy) //check if it's a valid design if(!alloy) diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm index d412d604ec2..bb7bcfc94e1 100644 --- a/code/modules/mob/inventory.dm +++ b/code/modules/mob/inventory.dm @@ -245,6 +245,10 @@ /mob/proc/get_item_by_slot(slot_id) switch(slot_id) + if(slot_wear_mask) + return wear_mask + if(slot_back) + return back if(slot_l_hand) return l_hand if(slot_r_hand) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 31788ecc8cf..2c7a2d67c55 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -712,17 +712,18 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump, return back if(slot_wear_mask) return wear_mask - if(slot_handcuffed) - return handcuffed - if(slot_legcuffed) - return legcuffed + if(slot_wear_suit) + return wear_suit if(slot_l_hand) return l_hand if(slot_r_hand) return r_hand + if(slot_handcuffed) + return handcuffed + if(slot_legcuffed) + return legcuffed return null - //generates realistic-ish pulse output based on preset levels /mob/living/carbon/proc/get_pulse(var/method) //method 0 is for hands, 1 is for machines, more accurate var/temp = 0 //see setup.dm:694 diff --git a/code/modules/mob/living/life.dm b/code/modules/mob/living/life.dm index e0c58c484d8..276ee7b246e 100644 --- a/code/modules/mob/living/life.dm +++ b/code/modules/mob/living/life.dm @@ -3,9 +3,9 @@ set background = BACKGROUND_ENABLED if(notransform) - return 0 + return FALSE if(!loc) - return 0 + return FALSE var/datum/gas_mixture/environment = loc.return_air() if(client || registered_z) // This is a temporary error tracker to make sure we've caught everything diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm index 62784a793f9..4dea368ad5e 100644 --- a/code/modules/mob/living/simple_animal/friendly/cat.dm +++ b/code/modules/mob/living/simple_animal/friendly/cat.dm @@ -16,8 +16,8 @@ turns_per_move = 5 see_in_dark = 6 mob_size = MOB_SIZE_SMALL - simplespecies = /mob/living/simple_animal/pet/cat - childtype = /mob/living/simple_animal/pet/cat/kitten + animal_species = /mob/living/simple_animal/pet/cat + childtype = list(/mob/living/simple_animal/pet/cat/kitten) butcher_results = list(/obj/item/reagent_containers/food/snacks/meat = 3) response_help = "pets" response_disarm = "gently pushes aside" diff --git a/code/modules/mob/living/simple_animal/friendly/corgi.dm b/code/modules/mob/living/simple_animal/friendly/corgi.dm index 970ac596482..90ed82ff395 100644 --- a/code/modules/mob/living/simple_animal/friendly/corgi.dm +++ b/code/modules/mob/living/simple_animal/friendly/corgi.dm @@ -22,8 +22,8 @@ response_disarm = "bops" response_harm = "kicks" see_in_dark = 5 - childtype = /mob/living/simple_animal/pet/corgi/puppy - simplespecies = /mob/living/simple_animal/pet/corgi + childtype = list(/mob/living/simple_animal/pet/corgi) + animal_species = /mob/living/simple_animal/pet/corgi gold_core_spawnable = CHEM_MOB_SPAWN_FRIENDLY var/shaved = 0 var/obj/item/inventory_head diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm index 0f4fd774dc5..9c787639ba4 100644 --- a/code/modules/mob/living/simple_animal/hostile/hostile.dm +++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm @@ -67,7 +67,7 @@ . = ..() if(!.) walk(src, 0) - return 0 + return FALSE /mob/living/simple_animal/hostile/handle_automated_action() if(AIStatus == AI_OFF) diff --git a/code/modules/mob/living/simple_animal/hostile/mining/goliath.dm b/code/modules/mob/living/simple_animal/hostile/mining/goliath.dm index 66f8e4fd873..a1c488b4068 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining/goliath.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining/goliath.dm @@ -10,7 +10,7 @@ attack_sound = 'sound/weapons/punch4.ogg' mouse_opacity = MOUSE_OPACITY_OPAQUE move_to_delay = 40 - ranged = 1 + ranged = TRUE ranged_cooldown = 2 //By default, start the Goliath with his cooldown off so that people can run away quickly on first sight ranged_cooldown_time = 120 friendly = "wails at" @@ -31,12 +31,12 @@ move_force = MOVE_FORCE_VERY_STRONG move_resist = MOVE_FORCE_VERY_STRONG pull_force = MOVE_FORCE_VERY_STRONG - var/pre_attack = 0 + var/pre_attack = FALSE var/pre_attack_icon = "Goliath_preattack" loot = list(/obj/item/stack/sheet/animalhide/goliath_hide) /mob/living/simple_animal/hostile/asteroid/goliath/Life() - ..() + . = ..() handle_preattack() /mob/living/simple_animal/hostile/asteroid/goliath/proc/handle_preattack() @@ -59,8 +59,7 @@ new /obj/effect/temp_visual/goliath_tentacle/original(tturf, src) ranged_cooldown = world.time + ranged_cooldown_time icon_state = icon_aggro - pre_attack = 0 - return + pre_attack = FALSE /mob/living/simple_animal/hostile/asteroid/goliath/adjustHealth(damage) ranged_cooldown-- @@ -72,7 +71,6 @@ handle_preattack() if(icon_state != icon_aggro) icon_state = icon_aggro - return // Lavaland Goliath /mob/living/simple_animal/hostile/asteroid/goliath/beast @@ -87,8 +85,8 @@ pre_attack_icon = "goliath2" butcher_results = list(/obj/item/reagent_containers/food/snacks/goliath = 2, /obj/item/stack/sheet/animalhide/goliath_hide = 1, /obj/item/stack/sheet/bone = 2) loot = list() - stat_attack = 1 - robust_searching = 1 + stat_attack = TRUE + robust_searching = TRUE /mob/living/simple_animal/hostile/asteroid/goliath/beast/random/Initialize() . = ..() @@ -136,7 +134,7 @@ /mob/living/simple_animal/hostile/asteroid/goliath/beast/tendril fromtendril = TRUE -//tentacles +// Tentacles /obj/effect/temp_visual/goliath_tentacle name = "goliath tentacle" icon = 'icons/mob/lavaland/lavaland_monsters.dmi' diff --git a/code/modules/mob/living/simple_animal/hostile/mining/gutlunch.dm b/code/modules/mob/living/simple_animal/hostile/mining/gutlunch.dm index 4e924a5424c..d73fe3ca77c 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining/gutlunch.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining/gutlunch.dm @@ -35,7 +35,7 @@ loot = list(/obj/effect/decal/cleanable/blood/gibs) deathmessage = "is pulped into bugmash." - simplespecies = /mob/living/simple_animal/hostile/asteroid/gutlunch + animal_species = /mob/living/simple_animal/hostile/asteroid/gutlunch childtype = list(/mob/living/simple_animal/hostile/asteroid/gutlunch/gubbuck = 45, /mob/living/simple_animal/hostile/asteroid/gutlunch/guthen = 55) wanted_objects = list(/obj/effect/decal/cleanable/blood/gibs) diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 3799daacb63..6955633efce 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -62,10 +62,9 @@ var/can_collar = 0 // can add collar to mob or not //Hot simple_animal baby making vars - - var/childtype = null - var/scan_ready = 1 - var/simplespecies //Sorry, no spider+corgi buttbabies. + var/list/childtype = null + var/next_scan_time = 0 + var/animal_species //Sorry, no spider+corgi buttbabies. var/gold_core_spawnable = CHEM_MOB_SPAWN_INVALID //if CHEM_MOB_SPAWN_HOSTILE can be spawned by plasma with gold core, CHEM_MOB_SPAWN_FRIENDLY are 'friendlies' spawned with blood @@ -446,27 +445,32 @@ /mob/living/simple_animal/proc/make_babies() // <3 <3 <3 - if(gender != FEMALE || stat || !scan_ready || !childtype || !simplespecies) - return - scan_ready = 0 - spawn(400) - scan_ready = 1 - var/alone = 1 + if(gender != FEMALE || stat || next_scan_time > world.time || !childtype || !animal_species || !SSticker.IsRoundInProgress()) + return FALSE + next_scan_time = world.time + 400 + + var/alone = TRUE var/mob/living/simple_animal/partner var/children = 0 + for(var/mob/M in oview(7, src)) - if(istype(M, childtype)) //Check for children FIRST. + if(M.stat != CONSCIOUS) //Check if it's conscious FIRST. + continue + else if(istype(M, childtype)) //Check for children SECOND. children++ - else if(istype(M, simplespecies)) - if(M.client) + else if(istype(M, animal_species)) + if(M.ckey) continue else if(!istype(M, childtype) && M.gender == MALE) //Better safe than sorry ;_; partner = M - else if(istype(M, /mob/)) - alone = 0 - continue + else if(isliving(M) && !faction_check_mob(M)) //shyness check. we're not shy in front of things that share a faction with us. + return //we never mate when not alone, so just abort early + if(alone && partner && children < 3) - return new childtype(loc) + var/childspawn = pickweight(childtype) + var/turf/target = get_turf(loc) + if(target) + return new childspawn(target) /mob/living/simple_animal/say_quote(var/message) var/verb = "says" diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index d59948a2ed6..c74d7545473 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -1010,7 +1010,7 @@ var/list/slot_equipment_priority = list( \ var/atom/A = foo if(A.invisibility > see_invisible) continue - if(is_type_in_list(A, shouldnt_see)) + if(is_type_in_list(A, shouldnt_see) || !A.simulated) continue statpanel_things += A statpanel(listed_turf.name, null, statpanel_things) diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index 60a3637166a..b378705becb 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -176,7 +176,7 @@ var/player_ghosted = 0 var/turf/listed_turf = null //the current turf being examined in the stat panel - var/list/shouldnt_see = list(/atom/movable/lighting_object) //list of objects that this mob shouldn't see in the stat panel. this silliness is needed because of AI alt+click and cult blood runes + var/list/shouldnt_see = list() //list of objects that this mob shouldn't see in the stat panel. this silliness is needed because of AI alt+click and cult blood runes var/kills = 0 diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index b868945f065..a69ff2a793b 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -99,7 +99,7 @@ var/indestructible = 0 // If set, prevents aliens from destroying it var/keep_preset_name = 0 - var/report_power_alarm = 1 + var/report_power_alarm = TRUE var/shock_proof = 0 //if set to 1, this APC will not arc bolts of electricity if it's overloaded. @@ -117,11 +117,11 @@ operating = 0 /obj/machinery/power/apc/noalarm - report_power_alarm = 0 + report_power_alarm = FALSE /obj/machinery/power/apc/syndicate //general syndicate access req_access = list(access_syndicate) - report_power_alarm = 0 + report_power_alarm = FALSE /obj/item/apc_electronics name = "power control module" @@ -1171,14 +1171,14 @@ lighting = autoset(lighting, 1) environ = autoset(environ, 1) autoflag = 3 - if(report_power_alarm) + if(report_power_alarm && is_station_contact(z)) SSalarms.power_alarm.clearAlarm(loc, src) else if(cell.charge < 1250 && cell.charge > 750 && longtermpower < 0) // <30%, turn off equipment if(autoflag != 2) equipment = autoset(equipment, 2) lighting = autoset(lighting, 1) environ = autoset(environ, 1) - if(report_power_alarm) + if(report_power_alarm && is_station_contact(z)) SSalarms.power_alarm.triggerAlarm(loc, src) autoflag = 2 else if(cell.charge < 750 && cell.charge > 10) // <15%, turn off lighting & equipment @@ -1186,7 +1186,7 @@ equipment = autoset(equipment, 2) lighting = autoset(lighting, 2) environ = autoset(environ, 1) - if(report_power_alarm) + if(report_power_alarm && is_station_contact(z)) SSalarms.power_alarm.triggerAlarm(loc, src) autoflag = 1 else if(cell.charge <= 0) // zero charge, turn all off @@ -1194,7 +1194,7 @@ equipment = autoset(equipment, 0) lighting = autoset(lighting, 0) environ = autoset(environ, 0) - if(report_power_alarm) + if(report_power_alarm && is_station_contact(z)) SSalarms.power_alarm.triggerAlarm(loc, src) autoflag = 0 @@ -1250,7 +1250,7 @@ equipment = autoset(equipment, 0) lighting = autoset(lighting, 0) environ = autoset(environ, 0) - if(report_power_alarm) + if(report_power_alarm && is_station_contact(z)) SSalarms.power_alarm.triggerAlarm(loc, src) autoflag = 0 diff --git a/code/modules/reagents/chemistry/reagents/water.dm b/code/modules/reagents/chemistry/reagents/water.dm index 20e2ba82b1e..fc79d0b336b 100644 --- a/code/modules/reagents/chemistry/reagents/water.dm +++ b/code/modules/reagents/chemistry/reagents/water.dm @@ -57,7 +57,7 @@ if(!(istype(B) && B.off_floor)) qdel(O) else - if(!istype(O, /atom/movable/lighting_object)) + if(O.simulated) O.color = initial(O.color) O.clean_blood() diff --git a/code/modules/ruins/lavalandruin_code/syndicate_base.dm b/code/modules/ruins/lavalandruin_code/syndicate_base.dm index 7e62f0fda39..bbfa4ef688a 100644 --- a/code/modules/ruins/lavalandruin_code/syndicate_base.dm +++ b/code/modules/ruins/lavalandruin_code/syndicate_base.dm @@ -74,7 +74,7 @@ /datum/outfit/lavaland_syndicate/comms name = "Lavaland Syndicate Comms Agent" r_hand = /obj/item/melee/energy/sword/saber - mask = /obj/item/clothing/mask/chameleon + mask = /obj/item/clothing/mask/chameleon/gps suit = /obj/item/clothing/suit/armor/vest /obj/item/clothing/mask/chameleon/gps/New() diff --git a/code/modules/shuttle/supply.dm b/code/modules/shuttle/supply.dm index 28cb96b128b..b6a7e7bb28f 100644 --- a/code/modules/shuttle/supply.dm +++ b/code/modules/shuttle/supply.dm @@ -58,12 +58,10 @@ var/contcount for(var/atom/A in T.contents) - if(istype(A,/atom/movable/lighting_object)) - continue - if(istype(A,/obj/machinery/light)) - continue //hacky but whatever, shuttles need three spots each for this shit if(!A.simulated) continue + if(istype(A, /obj/machinery/light)) + continue //hacky but whatever, shuttles need three spots each for this shit contcount++ if(contcount) diff --git a/code/modules/surgery/organs/heart.dm b/code/modules/surgery/organs/heart.dm index 512de9de9e9..987315ac13b 100644 --- a/code/modules/surgery/organs/heart.dm +++ b/code/modules/surgery/organs/heart.dm @@ -82,11 +82,10 @@ var/heal_burn = 0 var/heal_oxy = 0 - /obj/item/organ/internal/heart/cursed/attack(mob/living/carbon/human/H, mob/living/carbon/human/user, obj/target) if(H == user && istype(H)) if(NO_BLOOD in H.dna.species.species_traits) - to_chat(H, "\The [src] is not compatible with your form!") + to_chat(H, "[src] is not compatible with your form!") return playsound(user,'sound/effects/singlebeat.ogg', 40, 1) user.drop_item() @@ -111,17 +110,16 @@ if(owner) to_chat(owner, "Your heart has been replaced with a cursed one, you have to pump this one manually otherwise you'll die!") - /datum/action/item_action/organ_action/cursed_heart name = "pump your blood" //You are now brea- pumping blood manually /datum/action/item_action/organ_action/cursed_heart/Trigger() . = ..() - if(. && istype(target,/obj/item/organ/internal/heart/cursed)) + if(. && istype(target, /obj/item/organ/internal/heart/cursed)) var/obj/item/organ/internal/heart/cursed/cursed_heart = target - if(world.time < (cursed_heart.last_pump + (cursed_heart.pump_delay-10))) //no spam + if(world.time < (cursed_heart.last_pump + (cursed_heart.pump_delay - 10))) //no spam to_chat(owner, "Too soon!") return @@ -132,7 +130,7 @@ var/mob/living/carbon/human/H = owner if(istype(H)) if(!(NO_BLOOD in H.dna.species.species_traits)) - H.blood_volume = min(H.blood_volume + cursed_heart.blood_loss*0.5, BLOOD_VOLUME_NORMAL) + H.blood_volume = min(H.blood_volume + cursed_heart.blood_loss * 0.5, BLOOD_VOLUME_NORMAL) if(owner.client) owner.client.color = "" diff --git a/code/modules/tram/tram.dm b/code/modules/tram/tram.dm index fed50355dde..0f80c99405e 100644 --- a/code/modules/tram/tram.dm +++ b/code/modules/tram/tram.dm @@ -22,7 +22,7 @@ var/delay_timer = null - var/list/blacklist = list(/obj/tram/rail,/atom/movable/lighting_object) + var/list/blacklist = list(/obj/tram/rail) var/list/ancwhitelist = list(/obj/tram, /obj/vehicle, /obj/structure/chair, /obj/structure/grille, /obj/structure/window) /obj/tram/tram_controller/New() @@ -135,14 +135,20 @@ tram += src /obj/tram/tram_controller/proc/check_validity(var/atom/movable/AM) - if(!AM) return 0 - if(is_type_in_list(AM, blacklist)) return 0 - if(!AM.simulated) return 0 + if(!AM) + return FALSE + + if(!AM.simulated) + return FALSE + + if(is_type_in_list(AM, blacklist)) + return FALSE + if(AM.anchored) if(is_type_in_list(AM, ancwhitelist)) - return 1 - return 0 - return 1 + return TRUE + return FALSE + return TRUE /obj/tram/tram_controller/proc/init_controllers() for(var/obj/tram/controlpad/CCP in tram)