Fix map_export admin verb not saving objects properly (#90998)

## About The Pull Request

When using the `map_export` admin verb the following things are fixed:
- All objects density, anchored, opacity, atom_integrity, and
resistance_flags vars are saved
- Multi-tile objects being spammed on all tiles the sprite reaches
- Dirt decals error icon
- Airlocks error icon and to save welded state
- Dark Wizard Simple Mobs error icon
- Closets to save welded, open, and locked states
- Air alarms to save name
- Air scrubbers/vents to save name and welded states
- APCs to save name, charge, cell, lighting, equipment, and
environmental states
- APCs spawning a duplicated terminal underneath it when one already
exists
- SMES to save charge, input, and output states
- Holodecks to revert any holodeck turfs to the empty turf and skip
saving any hologram items
- Photos and Paintings error icons
- Bloody Footprints error icons
- False Walls error icons
- Docking Ports runtimes because the map template var would change
- Effects (lasers, portals, beams, sparks, etc.) saving when they should
be omitted

I would have loved to get `component_parts` to save for machines and
turf decals, but perhaps that is for another day since it requires
complicated solutions.

Here are some before and after pictures:


![StrongDMM_209k6PXSaQ](https://github.com/user-attachments/assets/27f0a80b-3cbc-4862-a218-612d52fa0e4f)


![StrongDMM_5PdRfLTZ4l](https://github.com/user-attachments/assets/3bbfd724-4b51-47c5-8cff-02687250fc1e)


![StrongDMM_F4DPOGz5K7](https://github.com/user-attachments/assets/1130ded8-3062-469a-ad4a-d437d89a68da)


![StrongDMM_BIa554dsGv](https://github.com/user-attachments/assets/440d6b38-dbbf-47c0-ad9a-5165504d104e)

## Why It's Good For The Game
Better map saving code.

## Changelog
🆑
fix: Fix `map_export` admin verb not properly saving a massive amount of
objects.
/🆑
This commit is contained in:
Tim
2025-05-17 00:43:09 -05:00
committed by GitHub
parent 62fcace82c
commit e698c965b3
17 changed files with 172 additions and 39 deletions
@@ -109,6 +109,14 @@ GLOBAL_LIST_EMPTY(roundstart_station_closets)
fire = 70
acid = 60
/obj/structure/closet/get_save_vars()
. = ..()
. += NAMEOF(src, welded)
. += NAMEOF(src, opened)
. += NAMEOF(src, locked)
. += NAMEOF(src, anchorable)
return .
/obj/structure/closet/Initialize(mapload)
. = ..()
@@ -26,6 +26,10 @@
var/girder_type = /obj/structure/girder/displaced
var/opening = FALSE
/obj/structure/falsewall/get_save_vars()
. = ..()
. -= NAMEOF(src, icon)
return .
/obj/structure/falsewall/Initialize(mapload)
. = ..()
@@ -33,6 +37,7 @@
set_custom_materials(initialized_mineral.mats_per_unit, mineral_amount)
qdel(initialized_mineral)
air_update_turf(TRUE, TRUE)
update_appearance()
/obj/structure/falsewall/attack_hand(mob/user, list/modifiers)
if(opening)