100% data-stage driven enemy behavior and new tech. Unlock Biter Mutagenesis, then research biter/spitter biomass, speed, damage, swarm quantity, and Apex Strain Evolution rank pressure. 5+1 new techs and an ultimate endgame foe that never quite stays dead.
Mods introducing new content into the game.
Version: 0.1.45
Date: 2026-09-01
Balance:
- Increased GZ-Threat's loot contribution by an overall 4x multiplier while preserving the existing Apex/rank curve.
- Effective formula is now ((1 + Apex x 0.02) x (1 + rank x 0.10)) x 4.
- Examples: Apex 0/rank 0 = 4x, Apex 50/rank 5 = 12x, Apex 100/rank 10 = 24x, Pandora 150/rank 11 = 33.6x.
Version: 0.1.44
Date: 2026-08-30
Research:
- Restored the missing infinite Apex Threat Mitigation technology after Biter Mutagenesis.
- Each mitigation level offsets one Apex Strain Evolution level contributed by that force before active-team averaging; a force contribution cannot fall below zero.
- Apex Threat Mitigation is explicitly excluded from the automatic +1 Apex-on-research rule so researching mitigation actually lowers effective threat.
Diagnostics:
- Apex status now retains raw Apex, total researched mitigation, applied mitigation, mitigated total Apex, and the final active-team average.
Version: 0.1.43
Date: 2026-08-30
GZ Dock integration:
- Added a compact ui_status remote API exposing effective Apex level, total Apex, and active-team count.
- Gizmod can display the synchronized Apex Threat level without inspecting GZ-Threat internals.
Version: 0.1.42
Date: 2026-08-26
Admin API:
- Added get_admin_level_state, admin_set_level_override, and admin_clear_level_override to gz_threat/gz_biter_escalation for Gizmod Admin/Misc controls.
- Admin overrides set the effective world Biomass/Size, Speed, Damage, Swarm/Quantity, and Apex levels directly without rewriting player/team research technologies.
- Effective Apex override remains normalized-world semantics: rank_total is reported as effective Apex x active-team count so GZ-Loot receives the requested world Apex multiplier.
- Clearing the override immediately returns all five values to the existing research-driven calculations.
- Setter/clear calls require a real admin player and are logged through Gizmod debug output.
Version: 0.1.41
Date: 2026-08-26
Enemy AI:
- GZ-Threat no longer issues targeting/attack commands to normal enemies.
- Normal Factorio-spawned biters/spitters are no longer destroyed and recreated as rank/biomass variants on spawn; the original engine-created LuaEntity and native AI lifecycle are preserved.
- Removed Broodleader player-target influence commands, follower target-mimic commands, player-damage retaliation, idle-unit command repair, Pandora strategic lab retargeting, and Pandora escort/crush behavior pulses.
- on_entity_damaged now performs only Threat damage/biomass math and never changes AI commands.
Attack Groups:
- Threat rank/variant replacement is now restricted to defines.events.on_unit_group_finished_gathering, where Factorio has already formed a real attack group.
- Replacement members preserve only their existing unit-group membership; Threat never copies or manufactures individual LuaCommandable commands.
- Swarm Quantity expansion is now attack-group-only. Extra units are spawned directly into the active Factorio unit group and are never created as free-standing scripted enemies.
Visual/Stat Systems:
- Normal enemies still receive Threat rank metadata, loot/Apex context, speed scaling, damage scaling, biomass absorption/regeneration, and rank-halo visuals without target selection changes.
Performance:
- Removed the 180-tick Broodleader influence scan, 210-tick Pandora strategic-target pulse, and Pandora behavior pulse.
Version: 0.1.40
Date: 2026-08-25
Enemy Targeting:
- Fixed Broodleaders/followers using attack_area centered on a player instead of explicitly attacking the player entity.
- Player-priority commands now use defines.command.attack against player.character/player.vehicle with no structure distraction.
- A native enemy directly damaged by a player's character or vehicle immediately retaliates against that exact player.
- Recreated/idle native enemies now explicitly target a player within 64 tiles before falling back to infrastructure aggression.
Performance:
- No new polling. Direct retaliation uses the existing on_entity_damaged event; Broodleader targeting uses the existing influence pulse.
Version: 0.1.39
Date: 2026-08-25
Bugfixes:
- Fixed GZ-Threat 0.1.38 failing to compile with "too many local variables (limit is 200)" in runtime/enemy_techs.lua.
- Moved variant-name, unit-AI preservation, idle-unit repair helpers, and active-team counting into runtime/enemy_runtime_helpers.lua.
- Reduced enemy_techs.lua's top-level local count from approximately 204 to approximately 196.
Notes:
- Apex team normalization, Gizmod -> GZ-Loot multiplier publishing, unit AI preservation, and all gameplay formulas from 0.1.38 are unchanged.
Version: 0.1.38
Date: 2026-08-25
Balance:
- Effective Apex Strain Evolution is now total Apex across active teams divided by active team count instead of the single highest team's level.
- Example: Apex 100 + 50 + 0 across three active teams = effective Apex 50.
- Non-Diplomacy games fall back to player-bearing non-enemy force count, minimum 1.
GZ-Loot Integration:
- Replaced the nonfunctional direct GZ-Loot multiplier calls with Gizmod's cross-mod event bus.
- Threat publishes gz-threat.enemy-loot-multiplier only when normalized Apex/team pressure changes.
- Loot multiplier curve remains (1 + effective Apex × 0.02) × (1 + biter rank × 0.10).
- No per-spawn or per-biter remote calls are used.
Diagnostics:
- Research/status output now shows total Apex, active teams, and effective Apex.
Version: 0.1.37
Date: 2026-08-25
Bugfixes:
- Fixed GZ-Threat rank/biomass replacement units losing their native AI command or unit-group membership when the original biter/spitter LuaEntity was destroyed and recreated.
- Fixed Swarm Quantity bonus units being created without inheriting the source unit's command/group state, which could leave bonus biters standing idle beside players.
- Scripted replacements now capture and restore unit-group membership, active commands, and distraction commands.
- If a recreated native-enemy unit has no command/group to restore, it receives a local 32-tile attack-area command with by-enemy distraction so nearby hostile targets are acquired normally.
- Added a one-time configuration-change repair for already-stranded commandless enemy units within 64 tiles of connected players; existing commanded/grouped enemies are not touched.
Diagnostics:
- Added AI restore/fallback/failure and idle-unit-repair counters to GZ-Threat status output and Gizmod debug logging.
Notes:
- GZ-Diplomacy enemy-force hostility logic was not responsible for this issue and is unchanged.
Version: 0.1.36
Date: 2026-08-23
Bugfixes:
- Fixed ranked-enemy death cleanup crashing because the 0.1.35 influence-index optimization called a misspelled nonexistent global (`unenemy_techs`) and attempted to index rather than unindex the dead unit.
Version: 0.1.35
Date: 2026-08-23
Performance:
- De-synchronized Threat maintenance from the global 60-tick boundary to prevent once-per-second callback pileups with other mods.
- Biomass regeneration now uses a small rotating per-tick injured-unit budget while preserving health-per-second via elapsed-tick scaling.
- Broodleader influence now uses maintained leader/follower indexes instead of walking every tracked enemy on each influence pulse.
- Reduced cosmetic rank-halo pulse budget from 48 to 16 nearby ranked units per pulse.
- Extended the scripted/external research-level safety refresh from one second to one minute; normal research-complete events still refresh immediately.
Version: 0.1.34
Date: 2026-08-23
Optimizations:
- Rank aura pulses now render only enemy units near connected players instead of walking the global tracked-enemy table.
- Reduced rank aura refresh from every 30 ticks to every 60 ticks and bounded each pulse to 48 nearby units; aura TTL was increased to preserve visual continuity.
- Biomass regeneration now tracks only damaged enemies and heals that sparse set instead of scanning every tracked enemy once per second.
- Cached Gizmod automatic-debug state for 10 seconds instead of making a remote debug-state query on active ticks.
Version: 0.1.33
Date: 2026-08-23
Performance:
- Converted ensure_storage() into a one-time schema repair with an O(1) fast path and stopped it from allocating a new enemy-level table on every hot-path access, substantially reducing Lua/GC overhead on damage and spawn events.
- Reworked Broodleader influence follower lookup from O(tracked enemies x leaders) to one shared O(tracked enemies) index per pulse.
- Changed escalation research-level polling from a full all-force rebuild every game tick to event-driven updates with a once/second safety refresh.
- Rank-aura pulses stop scanning tracked enemies after reaching the existing 160-unit render budget instead of traversing the rest of the table only for diagnostics.
- Preserved influence radius, leader ordering, follower rank ordering, command caps, and gameplay behavior.
Version: 0.1.32
Changes:
- Hardened command registration against duplicate command names and synchronized internal version reporting.
# 0.1.29: GZ-Loot multiplier API integration
- Added required dependency on GZ-Loot 1.0.5.
- Registered generic `gz-threat-level` and `gz-threat-rank` multiplier properties with GZ-Loot.
- GZ-Threat calculates the multipliers; GZ-Loot remains unaware of Threat levels/ranks.
- Level reward multiplier is `1 + level * 0.02`; effective assigned rank multiplier is `1 + rank * 0.10`; the two stack multiplicatively.
- Per-entity values are pushed from the ranked-unit registration choke point, covering normal spawns, replacements, attack-group reassignment, Broodleaders/followers, and Pandora Omega.
- Scripted entity replacements clear only the abandoned unit number's Threat properties. Death handling intentionally leaves them intact until GZ-Loot performs its reward roll.
- Init/configuration refresh registers the multiplier channels and synchronizes already tracked living units.
- Added remote diagnostics for the curve and per-entity calculated loot multipliers.
- Corrected internal runtime/registry/status version constants to 0.1.29.
---
# 0.1.28: Rank-only enemy prototype compression pass
- Made it be less stupid
- Reduced data stage loading times by almost `97%!
---
# 0.1.27: GZ-Threat interface/path isolation fix
- Fixed the startup crash caused by `gz-threat` trying to register the legacy `gz_biter_escalation` remote interface when another enabled mod had already claimed it.
- Added the canonical `gz_threat` remote interface.
- Kept a legacy `gz_biter_escalation` compatibility interface only when that interface name is not already present.
- Marked the old `gz-biter-escalation` package as incompatible with `gz-threat`, since `gz-threat` is the replacement package and both should not be enabled together.
- Updated technology icon paths from `__gz-biter-escalation__` to `__gz-threat__` so the renamed package no longer depends on the old mod folder for graphics.
- Updated runtime/registry version constants to 0.1.27.
---
# 0.1.26: Linked GZ-Saurus-Wrecks-AS (Auxiliary Support) in the dependencies because at least tree people will want it.
---
- 0.1.25: restored filled soft ground glow, removed the heavy static inner cylinder band from leader/Pandora auras, thinned remaining cylinder bands, and increased leader/Pandora particle counts and visibility.
- 0.1.24: softened enemy aura ground layer for leader/Pandora profiles by removing the filled inner ring; non-ranked leader/Pandora ground aura now renders as a lighter outline while keeping cylinder bands, particles, and pulses intact.
# 0.1.23 Rank Aura Cylinder / Particle Pass
- Replaced the simple ring-only rank halo treatment with a softer LUT aura pass while leaving the player cursor/crosshair completely untouched.
- Rank color still resolves from the existing LUT: green near level 1, yellow around level 50, and red around level 100.
- Normal ranked biters/spitters now receive a soft ground glow/light only.
- Broodleaders and Pandora Omega receive stacked translucent cylinder bands that fade upward, same-color particle pips, and an outward fading pulse for leader readability.
- Pandora uses the same aura system with a larger profile so the boss reads as a biological reactor effect instead of a debug reticle.
- Added status counters for cylinder bands, particles, and leader pulse draws.
- No enemy sprite tinting, cursor edits, or extra pathfinding logic were added.
---
# 0.1.22 Death Crash Guard / Tech Naming Pass
- Fixed the on_entity_damaged crash that could occur when bonus damage killed or invalidated the target before debug/status logging read the LuaEntity again. The damage path now captures target/cause names before applying bonus damage and never reads an invalid target afterward.
- Updated visible technology names to the requested player-facing labels: Biter Mutagenesis, Biomass Scaling: Size (up to 2.5x) and health, Swarm Architecture: Attack group size increased, Endocrine Overdrive: Movement and attack speed increased, Xeno-gene Splicing: Attack damage increased, and Apex Strain Evolution: Each level increases the global rank by 1.
- Preserved internal prototype names for save compatibility.
---
# 0.1.21 Rank LUT Halo Pass
- Added the first rank visual LUT effect without tinting biter/spitter sprites.
- Ranked units now receive a short-lived halo pulse on a 30-tick cadence, using a color lookup that interpolates from green at level 1, to yellow at level 50, to red at level 100.
- Halo color resolves from the effective ranked unit context, so attack-group downranked followers and promoted Broodleaders can read as different intensity bands while still using the same native biter/spitter art.
- Added rendering fallback behavior: the pass attempts a light object and still draws ground halo rings if the light draw path is unavailable.
- Added status/debug counters for rank halo pulses, units seen, halos drawn, lights/rings drawn, failures, pruned invalid units, and last LUT color.
- No sprite tinting, enemy recoloring, or extra pathfinding logic was added in this pass.
---
# 0.1.20 Medium Pandora / Follower Mimicry Pass
- Retuned Pandora Omega from big-demolisher-ish toward medium-demolisher-ish for end-of-inner-planets / pre-Aquilo pacing: reduced health, visual scale, collision scale, and crush radius while preserving slow lab-hunter identity, water crossing, splashes, and cooldown gate.
- Kept Pandora at Apex Strain Evolution level 150; normal visible biter/spitter rank ladder remains level 1-100, with infinite Apex Strain research available for deliberate killzone farming.
- Reworked Broodleader influence wording and runtime behavior around target mimicry: followers do not target the Broodleader as a follow target; when a Broodleader switches to the player in travel range, eligible group followers mimic that same target.
- Added a +7% escort speed bonus to downranked attack-group followers so they cluster around the leader and escort the push instead of lagging behind or splitting formation.
- Restricted follower mimic commands to stored attack-group followers for the same Broodleader instead of broad nearby-unit retargeting.
- Added debug/status counters for follower target mimic commands and follower escort speed bonus application.
---
# 0.1.19 Apex Strain / Pandora Threshold / Broodleader Targeting Pass
- Moved Pandora Omega eligibility from level 100 to level 150 so the demolisher-class threat arrives later in the escalation curve.
- Kept normal visible biter/spitter ranks on the level 1-100 ladder: one rank per 10 Apex Strain Evolution levels, capped at Apocalypse before Pandora.
- Added automatic Apex Strain Evolution pressure: after Biter Mutagenesis is unlocked, every non-rank technology researched grants one bonus Apex Strain Evolution level. Manual Apex Strain Evolution research remains available so players can deliberately push higher ranks for Flux/item/chitin farming killzones.
- Reframed the public text: in this mod, “Biters” means both biters and spitters; Gleba units are not touched yet.
- Tightened player targeting so the mod no longer treats every ranked unit as an influence leader. Only Broodleaders switch targets to the player, and only when the player enters their travel range; otherwise the group keeps Factorio’s native attack-group movement/pathing.
- Preserved attack-group spread: strongest member becomes Broodleader, about half of the remaining members downrank, and the rest stay at the base rank.
- Updated Gizmod registry/status/debug wording for Apex Strain Evolution bonus grants, level-150 Pandora, and Broodleader-only player switching.
---
# 0.1.18 Spitter Parity / Strongest Leader Pass
- Confirmed ranked unit replacement remains biter/spitter neutral: attack-group spread now treats both biters and spitters as eligible ranked members.
- Broodleader selection now uses a strongest-member score instead of size-class only: existing rank, enemy size class, and ranged spitter role all participate before the center-distance tie-break.
- A spitter can now naturally become the Broodleader when it is the strongest member of the attack group, rather than leader selection implicitly reading like a biter-only path.
- The weakest remaining members are selected for downranking using the same strongest-member score, so lower-class biters/spitters become followers first while stronger core enemies keep the base rank.
- Biter Mutagenesis can now unlock from killing either a biter or a spitter.
- Added attack-group debug/status fields for biter/spitter member counts, leader kind, and biter/spitter leader promotions.
---
# 0.1.17 Pandora Cooldown Gate Pass
- Added a global Pandora Omega spawn cooldown so Pandora remains an event-scale threat instead of a normal repeated rank variant.
- Normal Pandora spawns now require: Pandora-level rank pressure, no active Pandora, and an expired cooldown.
- Cooldown starts at 12 gameplay hours when Pandora first unlocks and compresses toward 4 gameplay hours as Apex Rank Incubation continues beyond Pandora threshold.
- Added cooldown status fields/counters for spawn checks, active-Pandora blocks, cooldown blocks, remaining time, pressure, last spawn tick, and next eligible tick.
- Added `/gz-biter-escalation-pandora-status` for a focused admin/player-readable Pandora status report.
- The existing admin debug spawn command still bypasses the normal cooldown gate for testing.
---
# 0.1.16 Pandora Water-Crossing Pass
- Pandora Omega now has an explicit data-stage collision mask with the water tile layer removed, so the boss can path across water without making normal ranked biters amphibious.
- Added a light 9-tick Pandora-only water splash pulse. It checks only the active Pandora unit, only emits when she is on water and actually moving, and does not scan enemy packs or the map.
- Splash visuals use short-lived rendering circles on the ground around Pandora, producing repeated heavy water rings without sprite tinting, LUT lighting, or per-tick particle spam.
- Added Pandora water-crossing status counters for pulses, water tiles seen, splashes emitted, splash failures, crossing ticks, and last water tile.
- No LUT lighting, sprite tinting, or aura rendering was added in this pass.
---
# 0.1.15 Pandora Lab Registry Targeting Pass
- Removed the large-radius science producer/consumer scan from the Pandora strategic targeting pulse.
- Pandora Omega now targets registered player-owned labs only.
- Labs are registered when built or revived and unregistered when mined, destroyed, or killed.
- Existing labs are rebuilt into the registry on init/configuration refresh and by `/gz-biter-escalation-refresh`.
- Pandora still retargets every 210 ticks, but the pulse now iterates the small lab registry instead of scanning a 2048/4096-tile area.
- Added lab registry debug payloads and status counters for registered, checked, and pruned lab targets.
- No LUT lighting, sprite tinting, or aura rendering was added in this pass.
---
# 0.1.14 Pandora Science Targeting Pass
- Added a slow Pandora Omega strategic target pulse every 210 ticks, roughly every 3.5 seconds at 60 UPS.
- Pandora Omega now prefers player-owned science-producing machines, then player-owned science-consuming labs, instead of being driven by the normal rank influence player-target pulse.
- Science producers are detected from the machine's current recipe outputs, including vanilla and modded item names containing `science-pack`.
- Pandora target commands use a destination/attack-area command around the selected science target, not per-tick steering.
- Pandora Omega is excluded from the normal rank influence leader pass so it does not intentionally chase the player through that system.
- Added Pandora science targeting debug payloads and status counters.
- No LUT lighting, sprite tinting, or aura rendering was added in this pass.
---
# 0.1.13 Attack Group Rank Spread Pass
- Added attack-group rank spread when Factorio attack groups finish gathering.
- Each ranked attack group selects one visible Broodleader and promotes it by +1 rank, clamped to the normal rank cap.
- Roughly half of the remaining group members are demoted by -1 rank, with the rest staying at the current base rank.
- Added hidden Broodleader rank/biomass prototypes so the promoted leader has a visible localized name instead of only debug metadata.
- Re-adds replaced group members to the same unit group after prototype replacement so the attack group keeps moving together.
- Added attack-group spread debug payloads and status counters.
- No LUT lighting, sprite tinting, or aura rendering was added in this pass.
---
# 0.1.12 Visible Rank Name Pass
- Apex Rank Incubation now directly drives biter rank resolution instead of relying on average pressure from all escalation techs.
- Added visible localized ranked unit names for generated rank/biomass variants, e.g. Feral/Chitinous/Mutated/Ravaging/Apex/etc. base enemies.
- Generated rank 1 biomass 0 variants so even the first rank has a visible name, even though its scale remains 1.0x.
- Generated rank 0 biomass variants so biomass-only enemies can still carry health/regen variants without pretending to be ranked.
- Refreshed research levels on demand per tick so console/editor force-research testing does not keep stale cached zero levels.
- Added rank driver, rank key, rank display label, rank active state, and expected variant name fields to debug payloads.
- Added `/gz-biter-escalation-refresh` for manual cache refresh during admin testing.
- No biter sprite tint or LUT lighting was added in this pass; that remains the next visual layer.
---
# 0.1.11 Rank/Biomass Split
- Moved normal visual scale ownership from Biomass Scaling to evolutionary rank.
- Normal ranked enemies now use rank scale bands from 1.0x through 2.5x.
- Biomass Scaling now controls health scale and health regeneration only.
- Added hidden rank/biomass unit variants so rank controls sprite/collision scale while Biomass controls prototype max health.
- Retained the old hidden `-gzbe-size-` variants as legacy save-compatibility prototypes, but new spawns use rank/biomass variants.
- Added a biomass regeneration pulse for registered enemy units.
- Updated status/debug payloads with `visual_scale_source = rank`, `health_scale_source = biomass`, `biomass_level`, `biomass_effect_level`, and `health_regen_per_second`.
---
# 0.1.9 Pandora Omega Boss Pass
- Added a hidden Pandora Omega unit prototype cloned from the strongest available base biter.
- Normal biter/spitter visual size scaling remains capped at 2.5x.
- Historical note: this pass originally unlocked one active 5x Pandora Omega boss at level 100; current behavior is level 150 and medium-demolisher-ish scale.
- Historical note: this pass originally used Big-Demolisher-class health; current behavior is medium-demolisher-ish Pandora with lab targeting, water crossing, and cooldown gating.
- Added Pandora Omega status counters and Gizmod debug payloads for spawn, crush pulses, and escort spawns.
- Added admin test command: `/gz-biter-escalation-spawn-omega`.
---
# 0.1.8 Rank Track Restore
- Restored the fifth Biter Mutagenesis child research track.
- Replaced the former custom quality/strain research surface with Apex Rank Incubation.
- Rank now participates in the same average-level calculation as size, speed, damage, and swarm.
- Rank remains the future loot/chitin hook and drives evolutionary labels/aggression/influence through average biter level.
---
# GZ-Biter Escalation 0.1.7
- Replaced custom quality framing with 1-100 biter rank as the core progression layer.
- Rank now drives aggression radius, influence radius, attack-area radius, and leader/follower command influence pulses.
- Evolutionary tier remains available as loot_rank/chitin_rank hooks for future loot and chitin systems.
- Normal size scaling remains capped at 2.5x; Pandora Omega remains a future special spawn/boss pass.
---
# GZ-Biter Escalation ACTIVE
## v0.1.6
- Removed the custom recursive strain/quality pressure system.
- Added average RPG-style biter level derived from active escalation research tracks.
- Added evolutionary labels for average biter level:
- 0: Baseline Biter
- 1-10: Feral Biter
- 11-20: Chitinous Biter
- 21-30: Mutated Biter
- 31-40: Ravaging Biter
- 41-50: Apex Biter
- 51-60: Dread Biter
- 61-70: Cataclysmic Biter
- 71-80: Abyssal Biter
- 81-90: World-Eater Biter
- 91-99: Apocalypse Biter
- 100-149: Apocalypse Biter
- 150+: Pandora Omega
- Biomass Scaling is now infinite research, but visual/health size effect caps at 15 levels for 2.5x normal maximum.
- Swarm Architecture is now infinite research, but extra-spawn effect caps at 10 levels for 2x normal maximum.
- Debug payloads now report `average_level`, `evolutionary_tier`, and `evolutionary_label` instead of `strain_tier`.
## v0.1.5
- Raised Gizmod dependency to `gizmod >= 0.2.27` so the module uses the fixed immediate hub debug toggles.
- No gameplay logic change.
## v0.1.4
- Raised Gizmod dependency to `gizmod >= 0.2.26` for core-owned per-module debug controls.
- Removed the native Factorio runtime-global debug setting `gz-biter-escalation-debug`.
- Biter Escalation now registers its debug defaults with Gizmod core.
- Gizmod Hub now owns this module's `Enable debug output` and `Enable automatic output` controls.
- Automatic event snapshots now obey Gizmod's module automatic-output gate.
- `/gz-biter-escalation` status now reports Gizmod module debug state instead of the removed local setting.
## v0.1.3
- Raised Gizmod dependency to `gizmod >= 0.2.23` for debug API support.
- Hooked the runtime into the Gizmod debug log API.
- Checks `remote.call("gizmod", "is_debug_logging_enabled")` before writing hot-path spawn payloads.
- Writes payloads under module name `gz_biter_mutagenesis`.
- Target files are managed by Gizmod core as `script-output/GIZMOD_logs/current_gz_biter_mutagenesis.json` and `previous_gz_biter_mutagenesis.json`.
- Added Gizmod debug payloads for:
- `spawn_scaling_applied`
- `swarm_extra_spawned`
- `damage_bonus_applied`
- `damage_bonus_failed`
- `directed_mutagenesis_unlocked`
- `research_finished`
- Extended `/gz-biter-escalation` status with Gizmod debug API state and write/failure counters.
## v0.1.2
- Reframed Apex Strain Incubation as an internal GZ strain tier instead of native Factorio quality.
- This allows native quality from other mods to stack cleanly with GZ strain effects.
- Strain tiers are tracked per spawned enemy unit and shown in debug as `T#`.
- Added speed sticker prototype ladder for Endocrine Overdrive.
- Creates 100 hidden movement sticker variants based on `slowdown-sticker`.
- Runtime applies the matching long-duration speed sticker to newly spawned enemies.
- Runtime still writes `entity.speed` as a debug/compat fallback.
- Reworked Xeno-gene Splicing damage amplification.
- Uses enemy force from `event.cause` or `event.force`.
- Applies bonus damage with the supported three-argument damage call.
- Adds seen/enemy/applied/failed counters for status debugging.
- Extended `/gz-biter-escalation` status with speed sticker and strain counters.
## v0.1.1
- Added visible biter/spitter size prototype ladder for Biomass Scaling.
- Creates 10 hidden size variants per supported biter/spitter unit.
- Runtime replaces newly spawned units with the correct size tier.
- Size is capped at level 10: +10% per level, 2x max.
- Changed Swarm Architecture to capped runtime sibling spawning.
- +10% expected extra bodies per level.
- Level 10 = 2x total enemy bodies.
- Synthetic swarm spawns do not recursively reproduce.
- Added runtime-global debug setting.
- Prints spawn/scaling lines when enabled.
- Adds floating text over modified enemies.
- `/gz-biter-escalation` now reports spawn/modifier counters.
- Updated technology descriptions for capped size and swarm behavior.
## v0.1.0
- Created standalone Gizmod-dependent enemy escalation research package.
- Added scripted first-biter-kill umbrella technology:
- Biter Mutagenesis
- Added five optional infinite child techs, enabled by default:
- Biomass Scaling: size/health pressure
- Endocrine Overdrive: speed pressure
- Xeno-gene Splicing: damage pressure
- Swarm Architecture: reproduction/quantity pressure
- Apex Strain Incubation: recursive quality pressure
- Runtime applies modifiers to newly spawned enemies.
- Runtime manually grants Biter Mutagenesis on first biter or spitter kill using `on_entity_died`.
- Added Gizmod registration and `/gz-biter-escalation` status command.