Shows fancy, reactive floating damage numbers when entities get hit. Easily configurable/mod compatible.
Providing the player with new tools or adjusting the game interface, without fundamentally changing gameplay.
Version: 1.0.5
Date: 2026-05-02
Major Features:
- Initial release
Features:
- Added modded damage color table, Modcalls still have priority.
Optimizations:
- Disabled the on_tick handler while there are no active indicators or pending external damage-reduction reports.
- Reduced small color-table allocations in damage-ramp and damage-intensity color calculations.
- Expanded the render font startup setting with additional built-in Factorio font types.
Version: 1.0.4
Date: 2026-05-02
Bugfixes:
- Fully isolated killing-blow indicators. Once an indicator has the killing-blow marker, it is detached from the recent-hit map immediately, so any follow-up damage events on the same entity (which can happen if a damage-reduction mod such as Stable Foundations restores health after our event fires, or if the engine queues additional same-tick hits after final_health hits zero) spawn a new indicator instead of mutating the existing one. Fixes the visual bug where a killing-blow number could shift color during fade-out.
- Note: when a damage-reduction mod prevents a kill that we already detected via final_health<=0, the original indicator keeps its "!" and locked color through fade-out, and a new indicator appears for the follow-up hit. If you find the occasional false "!" misleading in those cases, the Mark killing blow startup setting can be disabled.
Version: 1.0.3
Date: 2026-05-01
Bugfixes:
- Locked the indicator color once the killing blow has landed, so subsequent same-tick post-kill damage events and corpse/position-key collisions no longer cause the color to drift during fade-out.
Changes:
- Tuned drift easing back to ease-out quad for a smoother, less floaty motion than 1.0.2's ease-out cubic. Movement still starts slightly earlier (0.13 progress) than 1.0.0's 0.18, so the indicator doesn't sit perfectly still after spawning. The "poppy" feel is carried by the pop scale curve, which keeps its 1.85x overshoot from 1.0.2.
- Net effect: the per-tick render writes triggered by drift are reduced relative to 1.0.2, recovering most of the perf cost while keeping the punchy entrance.
Version: 1.0.2
Date: 2026-05-01
Features:
- Added killing blow marker: the damage number that finishes off an entity is suffixed with "!" by default and gets an emphasis pulse so it pops out from the rest of the hits.
- Added Mark killing blow startup toggle.
- Added Killing blow marker startup string setting (default "!"); leave blank to keep the emphasis pulse without the suffix.
Changes:
- Punchier pop animation: bigger overshoot on spawn (peak ~1.85x), with a small bounce-back undershoot before settling, for a more impactful entrance.
- More fluid drift: motion now starts sooner in the indicator's life and uses ease-out cubic instead of ease-out quad, giving stronger initial momentum that settles smoothly toward the end.
Version: 1.0.1
Date: 2026-05-01
Optimizations:
- Cached startup settings on script load to eliminate repeated settings table lookups in hot paths (animate, damage event, viewport check).
- Cached per-player runtime settings; invalidated on settings-changed and player-leave events.
- Cached LuaRenderObject references in a runtime-only table keyed by render id, eliminating get_object_by_id lookups every tick while preserving save/load safety via stored ids.
- Cached per-tick player viewport bounds; precomputed half-width/half-height to avoid repeated divisions.
- Skipped render-side scale/alpha/target writes when values are unchanged from the previous tick.
- Reused color and target buffer tables across animation updates to cut per-tick allocations.
- Replaced O(n) table.remove calls in on_tick and trim with compact-in-place pattern.
- Throttled external damage reduction expiration scan to every 60 ticks instead of every tick.
- Added fast path for default text template ("__damage__") to avoid gsub/concat work.
- Removed redundant bring_to_front on text refresh.
- Switched unit_number damage keys to numeric keys to avoid per-event string allocation.
- Localized math/string functions for hot-path performance.
Bugfixes:
- Avoided reassigning render players list on every text refresh when viewer set is unchanged.
Changes:
- Restored damage indicators for trees and simple entities; player radius and viewport culling remain the performance gate.
- Brightened the high end of damage-ramp mode so large values remain readable.
Version: 1.0.0
Date: 2026-05-01
Features:
- Added animated floating damage indicators with punch pop, drift, batching, and fade.
- Added continuous-damage aggregation with configurable new-popup delay and text update interval.
- Added entity-following indicators for moving targets, including last-position fallback on death or removal.
- Added shooter-aware, upward, and mixed drift modes.
- Added stacked shadow styles: Off, Light, and Heavy.
- Added custom startup font family/size, rendered font selection, rich text, and text template support.
- Added per-player display controls for visibility, radius, minimum damage, and scale.
- Added startup controls for lifetime, animation speed, active indicator cap, rounding threshold, and viewport culling.
- Added damage-type color mode with tuned physical, impact, explosion, fire, laser, electric, acid, and poison colors.
- Added damage-ramp color mode from light yellow to dark red based on damage amount.
- Added optional damage color intensity scaling, capped by default at 2k damage.
- Added deterministic generated colors for unknown modded damage types.
- Added a remote interface for mods to register damage type colors.
- Added externally reported damage reduction support for displays such as 50 (-50).
- Added optional Stable Foundations integration for reduced-damage reporting.
- Added /damage-indicators-clear command.
Optimizations:
- Batched per-tick damage text updates to reduce render text rewrites.
- Added viewport culling to skip indicators outside eligible players' estimated screen view.
- Added configurable active indicator cap with oldest-indicator trimming.
- Combined repeated damage on the same entity to reduce popup clutter.
Changes:
- Moved shared behavior settings to Startup settings so they persist as defaults for new worlds.
- Reordered settings alphabetically by English locale label.
- Enabled rich text by default so reduced damage can render in white.
- Changed compact/rounded display to start at 10k by default.
- Hide decimals once damage reaches double digits.
- Retuned damage type colors to better match source visuals and separate poison from electric/acid.
Bugfixes:
- Prevented combined indicators from restarting the pop animation during continuous damage.
- Reset drift positioning whenever a batched damage number refreshes.
- Kept existing combined indicators refreshing even when follow-up hits are below the minimum damage threshold.
- Flushed pending batched damage when an entity dies or is removed before the next text update interval.
- Detached active indicators from removed entities so they finish fading at their last known position.