From fd3b832bb868958516d0b42f3c2467e040db15e1 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Sun, 25 Jun 2023 01:06:58 +0200 Subject: [PATCH] [MIRROR] Makes decals only caught on mapload & removes turf_loc_check [MDB IGNORE] (#22051) * Makes decals only caught on mapload & removes turf_loc_check (#76130) Theres one player-facing change in this PR and it's that I removed human gibs from being valid in space turfs, making it more consistent with the other gib decals. I've cleaned up many instances of decals spawning in bad turfs on mapload in https://github.com/tgstation/tgstation/pull/75189, but making it error anytime in-game a decal is put over an invalid turf is bad as it punishes contributors for not optimizing their decals properly. This changes it so it only errors if it's on mapload, unit testing or not. I've also removed ``turf_loc_check`` and replaced instances of it with overwriting ``NeverShouldHaveComeHere``, which gives us greater control of where decals can be placed. This let me remove 2 subtypes that were made to have decals in specific places (which then got placed elsewhere, ruining it all). Mappers are still able to set decals to be placed anywhere, they just need to add it as a valid turf for that decal. * Makes decals only caught on mapload & removes turf_loc_check --------- Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com> --- .../SpaceRuins/cyborg_mothership.dmm | 2 +- _maps/map_files/Birdshot/birdshot.dmm | 278 +++++++++--------- .../effects/decals/cleanable/aliens.dm | 2 +- .../effects/decals/cleanable/humans.dm | 7 +- .../objects/effects/decals/cleanable/misc.dm | 5 +- .../effects/decals/cleanable/robots.dm | 2 +- code/game/objects/effects/decals/crayon.dm | 4 +- code/game/objects/effects/decals/decal.dm | 14 +- code/game/objects/effects/decals/remains.dm | 7 +- code/game/objects/structures/morgue.dm | 4 +- .../clothing/head/mind_monkey_helmet.dm | 2 +- .../lavalandruin_code/elephantgraveyard.dm | 7 +- 12 files changed, 168 insertions(+), 166 deletions(-) diff --git a/_maps/RandomRuins/SpaceRuins/cyborg_mothership.dmm b/_maps/RandomRuins/SpaceRuins/cyborg_mothership.dmm index ccd2818eb32..842a6899450 100644 --- a/_maps/RandomRuins/SpaceRuins/cyborg_mothership.dmm +++ b/_maps/RandomRuins/SpaceRuins/cyborg_mothership.dmm @@ -7,7 +7,7 @@ /turf/open/misc/asteroid/airless, /area/space) "d" = ( -/obj/effect/decal/remains/human/grave, +/obj/effect/decal/remains/human, /turf/open/misc/asteroid/airless, /area/space) "e" = ( diff --git a/_maps/map_files/Birdshot/birdshot.dmm b/_maps/map_files/Birdshot/birdshot.dmm index f158e419045..095fd5aedee 100644 --- a/_maps/map_files/Birdshot/birdshot.dmm +++ b/_maps/map_files/Birdshot/birdshot.dmm @@ -6376,17 +6376,6 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/iron/dark/herringbone, /area/station/ai_monitored/command/nuke_storage) -"cIe" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/pink/visible{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/remains/human/grave{ - pixel_x = 6; - pixel_y = 6 - }, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos) "cIs" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/yellow{ @@ -11793,27 +11782,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/security/prison/rec) -"eJX" = ( -/obj/effect/turf_decal/siding/thinplating_new/terracotta{ - dir = 1 - }, -/obj/structure/table/glass, -/obj/effect/turf_decal/siding/yellow, -/obj/machinery/recharger{ - pixel_x = -7; - pixel_y = 3 - }, -/obj/item/folder/yellow{ - pixel_x = 6; - pixel_y = 3 - }, -/obj/item/assembly/signaler{ - pixel_x = 5; - pixel_y = 6 - }, -/obj/machinery/digital_clock/directional/south, -/turf/open/floor/wood/tile, -/area/station/command/bridge) "eJZ" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -13652,20 +13620,6 @@ /obj/machinery/door/poddoor/incinerator_atmos_aux, /turf/open/floor/engine/airless, /area/station/maintenance/disposal/incinerator) -"fuJ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/airlock/research{ - name = "Research Division Access" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "sci-entrance" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/general, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/white/textured_half{ - dir = 1 - }, -/area/station/science/research) "fuL" = ( /obj/docking_port/stationary/escape_pod{ dir = 2 @@ -16441,6 +16395,20 @@ /obj/effect/landmark/start/scientist, /turf/open/floor/iron/white/small, /area/station/science/lab) +"gtk" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/airlock/research{ + name = "Research Division Access" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "sci-entrance" + }, +/obj/effect/mapping_helpers/airlock/access/all/science/general, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/white/textured_half{ + dir = 1 + }, +/area/station/science/research) "gtl" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -18574,6 +18542,27 @@ /obj/effect/turf_decal/siding/yellow, /turf/open/floor/wood/tile, /area/station/command/bridge) +"hcJ" = ( +/obj/effect/turf_decal/siding/thinplating_new/terracotta{ + dir = 1 + }, +/obj/structure/table/glass, +/obj/effect/turf_decal/siding/yellow, +/obj/machinery/recharger{ + pixel_x = -7; + pixel_y = 3 + }, +/obj/item/folder/yellow{ + pixel_x = 6; + pixel_y = 3 + }, +/obj/item/assembly/signaler{ + pixel_x = 5; + pixel_y = 6 + }, +/obj/machinery/digital_clock/directional/south, +/turf/open/floor/wood/tile, +/area/station/command/bridge) "hcY" = ( /obj/structure/table, /obj/item/paper_bin{ @@ -23283,15 +23272,6 @@ /obj/structure/sign/warning/no_smoking/circle/directional/north, /turf/open/floor/iron/dark, /area/station/science/ordnance) -"iJZ" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/dark_red/half/contrasted, -/obj/machinery/camera/autoname/directional/north, -/obj/machinery/digital_clock/directional/north, -/turf/open/floor/iron, -/area/station/security/execution/transfer) "iKe" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/blue{ @@ -25375,22 +25355,6 @@ "jxD" = ( /turf/open/floor/iron, /area/station/maintenance/starboard/greater) -"jxX" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/research{ - name = "Development Division Access" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "sci-entrance" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/general, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/white/textured_half{ - dir = 1 - }, -/area/station/science/lobby) "jxZ" = ( /obj/effect/turf_decal/siding/blue{ dir = 6 @@ -29658,6 +29622,15 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, /area/station/hallway/primary/port) +"kXe" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/dark_red/half/contrasted, +/obj/machinery/camera/autoname/directional/north, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron, +/area/station/security/execution/transfer) "kXl" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -40953,6 +40926,20 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, /area/station/hallway/primary/port) +"paT" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/door/airlock/research{ + name = "Development Division Access" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "sci-entrance" + }, +/obj/effect/mapping_helpers/airlock/access/all/science/general, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/white/textured_half{ + dir = 1 + }, +/area/station/science/lobby) "paV" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -42099,6 +42086,11 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/iron/grimy, /area/station/service/library) +"puT" = ( +/obj/structure/bookcase/random/nonfiction, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/wood/tile, +/area/station/service/bar) "pvg" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -45137,17 +45129,6 @@ /obj/machinery/light/small/directional/west, /turf/open/floor/iron/dark/small, /area/station/hallway/secondary/dock) -"qrj" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/dark_red/half/contrasted, -/obj/machinery/light/cold/directional/north, -/obj/machinery/digital_clock/directional/north, -/turf/open/floor/iron, -/area/station/security) "qrm" = ( /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/south, @@ -51882,6 +51863,17 @@ }, /turf/open/floor/grass, /area/station/cargo/storage) +"swY" = ( +/obj/structure/cable, +/obj/machinery/door/airlock{ + name = "Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 1 + }, +/turf/open/floor/plating, +/area/station/maintenance/aft) "sxm" = ( /turf/closed/wall, /area/station/tcommsat/server) @@ -52386,20 +52378,6 @@ /obj/machinery/light/small/directional/north, /turf/open/floor/sepia, /area/station/maintenance/aft) -"sFZ" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/door/airlock/research{ - name = "Development Division Access" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "sci-entrance" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/general, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/white/textured_half{ - dir = 1 - }, -/area/station/science/lobby) "sGh" = ( /obj/structure/window/reinforced/spawner/directional/east, /obj/effect/turf_decal/stripes/white/line{ @@ -56988,6 +56966,23 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/wood/parquet, /area/station/medical/psychology) +"ugS" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/airlock/research{ + name = "Research Division Access" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "sci-entrance" + }, +/obj/effect/mapping_helpers/airlock/access/all/science/general, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/white/textured_half{ + dir = 1 + }, +/area/station/science/research) "ugX" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -59038,17 +59033,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/central/greater) -"uPf" = ( -/obj/structure/cable, -/obj/machinery/door/airlock{ - name = "Maintenance" - }, -/obj/effect/mapping_helpers/airlock/access/any/service/maintenance, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/maintenance/aft) "uPp" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -59417,6 +59401,17 @@ /obj/machinery/newscaster/directional/east, /turf/open/floor/iron, /area/station/service/hydroponics) +"uUV" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/dark_red/half/contrasted, +/obj/machinery/light/cold/directional/north, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron, +/area/station/security) "uVb" = ( /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/west, @@ -61327,23 +61322,6 @@ }, /turf/open/floor/iron/dark, /area/station/command/corporate_dock) -"vzr" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/airlock/research{ - name = "Research Division Access" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "sci-entrance" - }, -/obj/effect/mapping_helpers/airlock/access/all/science/general, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/white/textured_half{ - dir = 1 - }, -/area/station/science/research) "vzv" = ( /obj/item/cultivator/rake, /obj/machinery/light/small/directional/west, @@ -63134,6 +63112,22 @@ /obj/effect/turf_decal/tile/red/fourcorners, /turf/open/floor/iron, /area/station/security/courtroom) +"vZF" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/airlock/research{ + name = "Development Division Access" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "sci-entrance" + }, +/obj/effect/mapping_helpers/airlock/access/all/science/general, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/white/textured_half{ + dir = 1 + }, +/area/station/science/lobby) "vZJ" = ( /obj/structure/cable, /obj/machinery/camera/directional/north{ @@ -66503,11 +66497,6 @@ "xaN" = ( /turf/closed/wall, /area/station/maintenance/starboard/central) -"xaO" = ( -/obj/structure/bookcase/random/nonfiction, -/obj/machinery/digital_clock/directional/north, -/turf/open/floor/wood/tile, -/area/station/service/bar) "xaP" = ( /turf/closed/wall/r_wall, /area/station/security/checkpoint/customs) @@ -67463,6 +67452,17 @@ /obj/effect/turf_decal/delivery/white, /turf/open/floor/iron, /area/station/cargo/sorting) +"xnp" = ( +/obj/machinery/atmospherics/pipe/smart/manifold/pink/visible{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/remains/human{ + pixel_x = 6; + pixel_y = 6 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos) "xnC" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -83484,7 +83484,7 @@ dvR dIe dRE ecF -cIe +xnp hjT ioQ eQe @@ -85879,7 +85879,7 @@ qVP hiq lUV gEH -qrj +uUV iWE tAs tAs @@ -88775,7 +88775,7 @@ wbf prq mTP qPN -iJZ +kXe ccs kPk wjZ @@ -91761,7 +91761,7 @@ paV wLJ oXe jVM -xaO +puT ycS tEI ycS @@ -94817,7 +94817,7 @@ gFv uFm cKV xsh -eJX +hcJ xGJ oTF jwi @@ -112347,7 +112347,7 @@ rUI xDg wtT pWl -jxX +vZF phZ wbp wMH @@ -112861,7 +112861,7 @@ qEe sRj jkz ifU -sFZ +paT cAb xjb pAF @@ -113103,9 +113103,9 @@ dDF vkn vMC xFA -fuJ +gtk xFA -vzr +ugS xFA mdt mdt @@ -115712,7 +115712,7 @@ gky lrh gky vbm -uPf +swY xEc gky niZ diff --git a/code/game/objects/effects/decals/cleanable/aliens.dm b/code/game/objects/effects/decals/cleanable/aliens.dm index 4bccd80a0ea..8b494e8bac3 100644 --- a/code/game/objects/effects/decals/cleanable/aliens.dm +++ b/code/game/objects/effects/decals/cleanable/aliens.dm @@ -51,7 +51,7 @@ /obj/effect/decal/cleanable/xenoblood/xgibs/proc/spread_movement_effects(datum/move_loop/has_target/source) SIGNAL_HANDLER - if(isclosedturf(loc) || (isgroundlessturf(loc) && !SSmapping.get_turf_below(loc))) + if(NeverShouldHaveComeHere(loc)) return new /obj/effect/decal/cleanable/xenoblood/xsplatter(loc) diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm index 2b4313bb237..998d60e0421 100644 --- a/code/game/objects/effects/decals/cleanable/humans.dm +++ b/code/game/objects/effects/decals/cleanable/humans.dm @@ -73,9 +73,11 @@ layer = ABOVE_WINDOW_LAYER plane = GAME_PLANE vis_flags = VIS_INHERIT_PLANE - turf_loc_check = FALSE alpha = 180 +/obj/effect/decal/cleanable/blood/splatter/over_window/NeverShouldHaveComeHere(turf/here_turf) + return isgroundlessturf(here_turf) + /obj/effect/decal/cleanable/blood/tracks icon_state = "tracks" desc = "They look like tracks left by wheels." @@ -103,7 +105,6 @@ plane = GAME_PLANE random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6") mergeable_decal = FALSE - turf_loc_check = FALSE dryname = "rotting gibs" drydesc = "They look bloody and gruesome while some terrible smell fills the air." @@ -169,7 +170,7 @@ /obj/effect/decal/cleanable/blood/gibs/proc/spread_movement_effects(datum/move_loop/has_target/source) SIGNAL_HANDLER - if(isclosedturf(loc) || (isgroundlessturf(loc) && !SSmapping.get_turf_below(loc))) + if(NeverShouldHaveComeHere(loc)) return new /obj/effect/decal/cleanable/blood/splatter(loc, streak_diseases) diff --git a/code/game/objects/effects/decals/cleanable/misc.dm b/code/game/objects/effects/decals/cleanable/misc.dm index a7f8f141a2e..19853660361 100644 --- a/code/game/objects/effects/decals/cleanable/misc.dm +++ b/code/game/objects/effects/decals/cleanable/misc.dm @@ -20,9 +20,8 @@ pixel_x = base_pixel_x + rand(-5, 5) pixel_y = base_pixel_y + rand(-5, 5) -/obj/effect/decal/cleanable/ash/crematorium -//crematoriums need their own ash cause default ash deletes itself if created in an obj - turf_loc_check = FALSE +/obj/effect/decal/cleanable/ash/NeverShouldHaveComeHere(turf/here_turf) + return !istype(here_turf, /obj/structure/bodycontainer/crematorium) && ..() /obj/effect/decal/cleanable/ash/large name = "large pile of ashes" diff --git a/code/game/objects/effects/decals/cleanable/robots.dm b/code/game/objects/effects/decals/cleanable/robots.dm index 4ca68e8c0cc..e20314d161e 100644 --- a/code/game/objects/effects/decals/cleanable/robots.dm +++ b/code/game/objects/effects/decals/cleanable/robots.dm @@ -36,7 +36,7 @@ /obj/effect/decal/cleanable/robot_debris/proc/spread_movement_effects(datum/move_loop/has_target/source) SIGNAL_HANDLER - if(isclosedturf(loc) || (isgroundlessturf(loc) && !SSmapping.get_turf_below(loc))) + if(NeverShouldHaveComeHere(loc)) return if (prob(40)) new /obj/effect/decal/cleanable/oil/streak(loc) diff --git a/code/game/objects/effects/decals/crayon.dm b/code/game/objects/effects/decals/crayon.dm index 17ff9c6d695..f0db747c2ce 100644 --- a/code/game/objects/effects/decals/crayon.dm +++ b/code/game/objects/effects/decals/crayon.dm @@ -31,8 +31,8 @@ add_atom_colour(paint_colour, FIXED_COLOUR_PRIORITY) RegisterSignal(src, COMSIG_OBJ_PAINTED, PROC_REF(on_painted)) -/obj/effect/decal/cleanable/crayon/NeverShouldHaveComeHere(turf/T) - return isgroundlessturf(T) +/obj/effect/decal/cleanable/crayon/NeverShouldHaveComeHere(turf/here_turf) + return isgroundlessturf(here_turf) /obj/effect/decal/cleanable/crayon/proc/on_painted(datum/source, mob/user, obj/item/toy/crayon/spraycan/spraycan, is_dark_color) SIGNAL_HANDLER diff --git a/code/game/objects/effects/decals/decal.dm b/code/game/objects/effects/decals/decal.dm index 291b9b9cb4f..ade4b4b5108 100644 --- a/code/game/objects/effects/decals/decal.dm +++ b/code/game/objects/effects/decals/decal.dm @@ -8,12 +8,11 @@ /obj/effect/decal/Initialize(mapload) . = ..() - if(turf_loc_check && NeverShouldHaveComeHere(loc)) -#ifdef UNIT_TESTS - stack_trace("[name] spawned in a bad turf ([loc]) at [AREACOORD(src)] in \the [get_area(src)]. Please remove it or set turf_loc_check to FALSE on the decal if intended.") -#else + if(NeverShouldHaveComeHere(loc)) + if(mapload) + stack_trace("[name] spawned in a bad turf ([loc]) at [AREACOORD(src)] in \the [get_area(src)]. \ + Please remove it or allow it to pass NeverShouldHaveComeHere if it's intended.") return INITIALIZE_HINT_QDEL -#endif var/static/list/loc_connections = list( COMSIG_TURF_CHANGE = PROC_REF(on_decal_move), ) @@ -23,8 +22,9 @@ if(B && B.loc == loc) qdel(src) -/obj/effect/decal/proc/NeverShouldHaveComeHere(turf/T) - return isclosedturf(T) || (isgroundlessturf(T) && !SSmapping.get_turf_below(T)) +///Checks if we are allowed to be in `here_turf`, and returns that result. Subtypes should override this when necessary. +/obj/effect/decal/proc/NeverShouldHaveComeHere(turf/here_turf) + return isclosedturf(here_turf) || (isgroundlessturf(here_turf) && !SSmapping.get_turf_below(here_turf)) /obj/effect/decal/ex_act(severity, target) qdel(src) diff --git a/code/game/objects/effects/decals/remains.dm b/code/game/objects/effects/decals/remains.dm index 940efd0c752..82a4c77603b 100644 --- a/code/game/objects/effects/decals/remains.dm +++ b/code/game/objects/effects/decals/remains.dm @@ -14,6 +14,9 @@ desc = "They look like human remains. They have a strange aura about them." icon_state = "remains" +/obj/effect/decal/remains/human/NeverShouldHaveComeHere(turf/here_turf) + return !istype(here_turf, /obj/structure/closet/crate/grave/filled) && ..() + /obj/effect/decal/remains/human/smokey desc = "They look like human remains. They have a strange, smokey aura about them..." ///Our proximity monitor, for detecting nearby looters. @@ -48,7 +51,9 @@ /obj/effect/decal/remains/plasma icon_state = "remainsplasma" - turf_loc_check = FALSE + +/obj/effect/decal/remains/plasma/NeverShouldHaveComeHere(turf/here_turf) + return isclosedturf(here_turf) /obj/effect/decal/remains/xeno desc = "They look like the remains of something... alien. They have a strange aura about them." diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm index 4456782ccd4..96afd16f4f5 100644 --- a/code/game/objects/structures/morgue.dm +++ b/code/game/objects/structures/morgue.dm @@ -236,7 +236,7 @@ GLOBAL_LIST_EMPTY(bodycontainers) //Let them act as spawnpoints for revenants an if(!length(compiled)) // No mobs? icon_state = "morgue3" return ..() - + if(!(obj_flags & EMAGGED)) for(var/mob/living/occupant as anything in compiled) var/mob/living/mob_occupant = get_mob_or_brainmob(occupant) @@ -341,7 +341,7 @@ GLOBAL_LIST_EMPTY(crematoriums) qdel(O) if(!locate(/obj/effect/decal/cleanable/ash) in get_step(src, dir))//prevent pile-up - new/obj/effect/decal/cleanable/ash/crematorium(src) + new/obj/effect/decal/cleanable/ash(src) sleep(3 SECONDS) diff --git a/code/modules/clothing/head/mind_monkey_helmet.dm b/code/modules/clothing/head/mind_monkey_helmet.dm index ad7d24374de..419fa903f09 100644 --- a/code/modules/clothing/head/mind_monkey_helmet.dm +++ b/code/modules/clothing/head/mind_monkey_helmet.dm @@ -94,7 +94,7 @@ playsound(src, SFX_SPARKS, 100, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) visible_message(span_warning("[src] fizzles and breaks apart!")) magnification = null - new /obj/effect/decal/cleanable/ash/crematorium(drop_location()) //just in case they're in a locker or other containers it needs to use crematorium ash, see the path itself for an explanation + new /obj/effect/decal/cleanable/ash(drop_location()) //just in case they're in a locker or other containers it needs to use crematorium ash, see the path itself for an explanation /obj/item/clothing/head/helmet/monkey_sentience/dropped(mob/user) . = ..() diff --git a/code/modules/mapfluff/ruins/lavalandruin_code/elephantgraveyard.dm b/code/modules/mapfluff/ruins/lavalandruin_code/elephantgraveyard.dm index 8ce3869bf60..4ec58a92c7f 100644 --- a/code/modules/mapfluff/ruins/lavalandruin_code/elephantgraveyard.dm +++ b/code/modules/mapfluff/ruins/lavalandruin_code/elephantgraveyard.dm @@ -73,7 +73,7 @@ if(prob(10)) new /obj/item/stack/ore/iron(src, 1) new /obj/item/stack/ore/glass(src, 1) - new /obj/effect/decal/remains/human/grave(src, 1) + new /obj/effect/decal/remains/human(src, 1) else new /obj/item/stack/sheet/bone(src, 1) @@ -166,7 +166,7 @@ /obj/structure/closet/crate/grave/filled/PopulateContents() //GRAVEROBBING IS NOW A FEATURE ..() - new /obj/effect/decal/remains/human/grave(src) + new /obj/effect/decal/remains/human(src) switch(rand(1,8)) if(1) new /obj/item/coin/gold(src) @@ -278,9 +278,6 @@ new /obj/effect/decal/cleanable/blood/gibs/old(src) new /obj/item/book/granter/crafting_recipe/boneyard_notes(src) -/obj/effect/decal/remains/human/grave - turf_loc_check = FALSE - //***Fluff items for lore/intrigue /obj/item/paper/crumpled/muddy/fluff/elephant_graveyard name = "posted warning"