Repository navigation
Conversation
The breakables plots were drawn on the pre-rework Midtown minimap. They now use the current street map (extracted from pak01 by scripts/update_minimap.py, since deadbot only downloads dl_midtown.vpk) at its native 1024x1024 resolution, with one dot colour per category and a compact legend with per-category counts. Adds heavy crates and healing snacks alongside crates and buff containers (golden statues), plus a combined breakables map. Existing output names (crate_map.png, golden_statues_map.png, shops_map.png) are unchanged; the new ones are heavy_crate_map.png, healing_snack_map.png and breakables_map.png. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Not a full code review (I'l leave that to hassayag), but a few things I noticed:
|
- Split each breakable kind by its first spawn time (3:00, 5:00, 10:00), read from each entity's breakable_spawn_group, which indexes m_BreakableSpawnTimeDesc in generic_data. initial_spawn_time_override is -1 on every breakable now, so it no longer identifies late spawns. - Add per-spawn-time maps for each kind and for all breakables together (e.g. crate_5min_map.png, everything_10min_map.png), plus all_crates_map.png and everything_map.png. midtown-metadata.json gets per-kind spawn counts. - Replace the debug caption with a map title and a divider above the legend. - Remove the now unused circle marker helpers from MapPlotter. - Install fonts-dejavu-core in the Docker image so legends use DejaVu Sans Bold instead of falling back to Pillow's built-in font. - Add [[Category:Maps]] to map file pages: as the description of new uploads, and appended to existing file pages that lack it. - Fix GenericParser._remove_prefixes renaming keys inside lists of the shared generic_data in place, which broke parsers that run after it. generic-data.json output is unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Thanks for the review! I've worked through each point: 1. Corner caption. Replaced the debug-style caption with a plain title for each map, e.g. "Crates" or "All breakables spawning at 5:00". Each legend row below it is just a colour swatch, the name and the count. 2. Dead helpers. Removed 3. Sub-types. The old fields stopped working:
Spawn timing now comes from each entity's
4. Heavy crates. There are now separate crate and heavy crate maps plus 5. Font. Good catch. Added Also, all uploaded map files now get All tested locally with a full |
|
This looks pretty good on the output side, so can't complain. I'm not that familiar with the source code though so I'll give the map master @ThePyrotechnic a chance to look at this first |
|
Of course I missed a major update while away on a trip… luckily I’m on the plane home now so I’ll check it out today 👍 |
|
Question @kai8484 |
There was a problem hiding this comment.
I've also checked the updated map with the shops, and everything looks good. Pending your feedback on the style I suggested and my inline comments below I'll push a commit to your branch with the style + shop changes
(new values for the base shops):
{'origin': [-1280.0, -10000.0, 100]}, # Hidden King base shop
{'origin': [1280.0, 10000.0, 100]}, # Archmother base shop- Plot breakables and shops on minimap_midtown_opaque.png at the default 2000px output size instead of the transparent map at native resolution. - Enlarge the breakables legend and switch it to a white background with black text. - Move the base shop markers to their positions on the current map.
place_dots repeated the world-to-pixel maths to keep sub-pixel precision. _world_to_pixel now returns floats, and place_image_markers truncates them to ints as before. Output is pixel-identical.
The category check read every File: page from the wiki even on dry runs. Restore the early continue so dry runs make no wiki calls for assets.
Remove the unused swatch_dy offset and its commented-out value, and drop "dark" from the docstring now that the legend has a white background.
_breakables_plot read self.spawn_order, which only run() set, so calling it on its own raised AttributeError. run() now keeps the spawn order local and passes it in.
MAPS repeated each kind's file stem and title from BREAKABLES. Each kind's own map is now built from BREAKABLES, and MAPS is renamed to COMBINED_MAPS and keeps only the maps that plot several kinds together. Output is unchanged.
Lists every map file stem the parser can generate, including one per breakable spawn time, so the wiki uploader can derive its file list instead of hardcoding it.
IMAGE_FILE_MAP hardcoded the map file names and spawn times, and had drifted from the parser: the combined maps are now written as all_breakables*_map.png but were uploaded as everything*_map.png. The uploader now builds the list from map_file_stems, using the spawn times in the parsed generic-data.json. Missing map files are logged at trace level, since not every stem is generated on every run.
output_size now defaults to None, which uses the base map without resampling. The Midtown maps pass MAP_OUTPUT_SIZE (2048), an exact 2x upscale of the 1024px base map, instead of the old 2000px default.
place_dots took the radius in pixels, tuned for the 1024px map, so dots shrank relative to the map when upscaled. The radius is now a fraction of the output width, matching place_image_markers' size, and keeps 3.45px at 1024px (6.9px on the 2048px maps). The outline stays 1px.
Log a warning when a spawn time has no colour left and reuses its kind's last one, or when a kind has entities both with and without a spawn time. The fallback colours are unchanged.
|
@kai8484 I've pushed a handful of mostly smaller tweaks - feel free to tweak any them, or we can discuss further. Here's what I did: Shop/map png update
Plotting
Parser structure
Upload
|
|
Thanks @ThePyrotechnic, these look great. I ran the branch locally (full parse + dry-run upload) and all 19 maps generate and upload fine. Building the upload list from One small thing, not blocking: file size roughly doubled (~700 KB per map, 13 MB total). Palette PNGs ( Sorry for the Claude-written reply, I'm not at my PC but wanted to get back to you reasonably soon. |

Summary
The crate and golden statue maps were still drawn on the pre-rework Midtown minimap. This moves the breakables plots onto the current street map and adds heavy crates and healing snacks.
assets/minimap_midtown.png, the newestminimap_midtown_midtexture frompak01, used at its native 1024x1024. Deadbot only downloadsdl_midtown.vpk, notpak01, so the image is committed.scripts/update_minimap.pyregenerates it from a local Deadlock install whenever the map changes.citadel_breakable_prop_tough_crate) and healing snacks (citadel_pickup_floating_health). Each gets its own map, plusbreakables_map.pngwith all of them on one map.place_dotsandadd_compact_legendonMapPlotter, which now also accepts anoutput_size.midtown-metadata.jsongainsheavy_crate_countandhealing_snack_count.Output names
The existing output names are unchanged:
crate_map.png,golden_statues_map.png,shops_map.png. This PR addsheavy_crate_map.png,healing_snack_map.pngandbreakables_map.png. All three new files are registered inIMAGE_FILE_MAP, so they will be uploaded as newFile:pages.Behaviour changes
minimap_midtown_mid_opaque.png. Upscaling the transparent new texture to 2000px rendered badly, so moving shops onto the new map is left for a follow-up.Testing
Ran locally against client version 6753:
output/assets/.File:targets.ruff check .passes with the pinned ruff 0.15.22.The legend font falls back to DejaVu Sans Bold on the Linux image, so legend text will look slightly different from local Windows renders.
🤖 Generated with Claude Code
Parsed data in deadlock-data PR - Reopen deadbot PR or run deploy workflow for this branch here to reparse the data