Better metalgen logging and some behavior fixes (#90546)

## About The Pull Request

Metalgen imprinting is now logged, foam and smoke have better logging
and so do plasma metalgenned things, metalgen no longer causes a ton of
runtimes on almost everything and foam and smoke no longer affect
abstract objects.
Also ***hopefully*** solves the issue with infinite hotspot loops, but I
don't think anyone knows what exactly occured there.

## Why It's Good For The Game

If servers explode, admins need to know who did it and coders need to
know how they did it.

## Changelog
🆑
fix: Metalgen foam/smoke no longer cause an absurd amount of runtimes
fix: Foam and smoke no longer affect abstract objects like landmarks
admin: Metalgen imprinting is now logged
admin: Improved logging for foam and smoke, and plasma metalgenned
objects
/🆑
This commit is contained in:
SmArtKar
2025-04-12 15:57:46 +02:00
committed by GitHub
parent 8cfd21022e
commit f00caffd90
6 changed files with 35 additions and 15 deletions
@@ -157,4 +157,4 @@
var/area/fluid_area = get_area(location)
if(!istype(holder, /obj/machinery/plumbing) && !(fluid_area.area_flags & QUIET_LOGS)) //excludes standard plumbing equipment as well as deathmatch from spamming admins with this shit
message_admins("\A [flood] flood started at [ADMIN_VERBOSEJMP(location)] [source_msg][blame_msg].")
log_game("\A [flood] flood started at [location || "nonexistant location"] [holder ? "from [holder] last touched by [holder || "N/A"]" : "with no known source"].")
log_game("\A [flood] flood started at [AREACOORD(location)] [source_msg][blame_msg].")
@@ -96,6 +96,8 @@
for(var/obj/object in turf_location)
if(object == src)
continue
if(object.invisibility >= INVISIBILITY_ABSTRACT) // Don't foam landmarks please
continue
if(turf_location.underfloor_accessibility < UNDERFLOOR_INTERACTABLE && HAS_TRAIT(object, TRAIT_T_RAY_VISIBLE))
continue
if (HAS_TRAIT(loc, TRAIT_ELEVATED_TURF) && !HAS_TRAIT(object, TRAIT_ELEVATING_OBJECT))
@@ -374,6 +374,8 @@
for(var/atom/movable/thing as anything in location)
if(thing == src)
continue
if(thing.invisibility >= INVISIBILITY_ABSTRACT) // Don't smoke landmarks please
continue
if(location.underfloor_accessibility < UNDERFLOOR_INTERACTABLE && HAS_TRAIT(thing, TRAIT_T_RAY_VISIBLE))
continue
reagents.expose(thing, SMOKE_MACHINE, fraction)