Small changes concerning balance, gameplay, or graphics.
Version 5.3.0
- CHANGED: Waves now gather existing enemy units near a lab and command them to attack it, instead of finding distant chunks-with-spawners * Biters that can actually walk to your base get sent; attacks land more reliably * Wave engages anything in its way (distraction = by_anything) - CHANGED: Wave size formula is now max(3, floor(sqrt(base_points) * 1.5)) * multiplier * Smoother scaling from early to late game; sqrt prevents runaway endgame waves * base_points = research_unit_count * sum_of_ingredient_amounts - CHANGED: Search starts at the lab's chunk (was 25 chunks out) and caps at 50 chunks (1600 tiles, was 800 chunks). Biters past 50 chunks rarely make it home anyway. - ADDED: Big waves split into unit-groups of 200 (vanilla soft cap) - FIXED: Active tasks now persist across save/load via `storage` (was a module local; in-flight tasks were lost on save+load and could desync multiplayer clients on join) - FIXED: Task IDs no longer collide after a task is removed (used #active_tasks + 1) - PERFORMANCE: on_tick handler is unregistered while idle; mod consumes zero per-tick cost when no wave is in flight - PERFORMANCE: Lab chunk coordinates cached on the task instead of recomputed every gather tick - PERFORMANCE: Per-chunk search area reuses a scratch table instead of allocating fresh tables on every find_entities_filtered call - PERFORMANCE: Skip redundant validity checks on units freshly returned from find_entities_filtered (re-validation still happens at dispatch time) - INFO: Setting key `nest_count_multiplier` is unchanged (so existing saves keep their configured value); the display label is now "Wave Size Multiplier" - INFO: info.json `/n` -> `\n` typo, and dependency `base >= 1.1.0` -> `base >= 2.0.0` - REMOVED: Dead `math.randomseed` call (mod never used math.random)
Version 5.2.0
- FIXED: Critical bug - was processing attacks per player instead of per surface * Research is force-wide, so this caused duplicate attacks (4 players = 4x attacks) * Now correctly processes once per surface that has labs * Fixes attack scaling issues in multiplayer - FIXED: Locale files still referenced removed pollution settings (v5.1.0 cleanup) - FIXED: Settings cache now properly cleared on mod load to prevent stale values - IMPROVED: Chunk search now starts at radius 25 (800 tiles) to skip cleared base area * Significantly reduces time spent searching empty chunks near labs * Finds spawners faster and more efficiently - IMPROVED: Increased max search radius from 300 to 800 chunks (25,600 tiles) * Better coverage for large bases and endgame scenarios * Research takes ~10 minutes in endgame, so thorough search is prioritized over speed - IMPROVED: Better validation consistency throughout codebase - IMPROVED: More explicit nil checks in chunk search initialization - NOTE: All fixes maintain backward compatibility
Version 5.1.0
- REMOVED: Pollution feature completely removed (obsolete) - REMOVED: Pollution-related settings (pollution_enabled, attack_pollution_multiplier, flat_pollution_points) - SIMPLIFIED: Code now focuses solely on triggering biter attacks - SIMPLIFIED: State machine reduced from 4 states to 3 states (removed POLLUTING_CHUNKS) - IMPROVED: Cleaner codebase without pollution-related logic - NOTE: Mod now only triggers attacks, no pollution generation
Version 5.0.1
- CHANGED: Pollution is now disabled by default - NOTE: Players can still enable pollution in mod settings if desired - NOTE: Attacks remain enabled by default
Version 5.0.0
- MAJOR: Complete code refactoring and UPS optimization - PERFORMANCE: Work now processes incrementally over multiple ticks to maintain >55 UPS - FEATURE: Task queue system for handling multiple concurrent research events - OPTIMIZATION: Chunk finding limited to 8 chunks per tick - OPTIMIZATION: Pollution application limited to 10 chunks per tick - OPTIMIZATION: Attack triggering limited to 2 chunks per tick - IMPROVED: Better error handling and entity validation throughout - IMPROVED: Modular code structure with clear separation of concerns - IMPROVED: More efficient chunk search algorithm - FIXED: Chunk array caching for attack system to reduce overhead - FIXED: Surface and entity validity checks during processing - ARCHITECTURE: State machine-based task processing system - ARCHITECTURE: Incremental processing prevents UPS drops during large operations - NOTE: All functionality preserved, now optimized for performance
Version 3.0.0
- STABLE: Final release version - Added: Separate toggle settings for pollution and attacks - Added: Comprehensive configuration options - Improved: Better performance and compatibility - Fixed: Math.floor() issue in chunk calculation - Added: Proper locale support for English and German - Feature: Pollution generation can be disabled independently - Feature: Biter attacks can be disabled independently - Setting: pollution_enabled - toggle pollution on/off (default: true) - Setting: attacks_enabled - toggle attacks on/off (default: true) - Setting: attack_pollution_multiplier - adjust pollution strength (default: 1.0) - Setting: flat_pollution_points - add fixed pollution amount (default: 0) - Setting: nest_count_multiplier - control number of attacked chunks (default: 1)
Version 2.0.0
- FEATURE: Existing enemy units are now grouped and commanded to attack - COMPATIBILITY: Better mod compatibility with existing game structures - IMPROVED: No unit spawning - uses naturally generated enemies only - CHANGED: Attack system now groups existing biters instead of spawning new ones - PERFORMANCE: More efficient unit gathering and command system - BALANCE: Attacks scale with naturally available enemy forces
Version 1.0.0
- INITIAL: Basic mod functionality implemented - FEATURE: Research completion triggers enemy responses - FEATURE: Pollution-based attack system - FEATURE: Enemy units spawn and attack laboratories - MECHANIC: Research cost determines attack strength - SETTING: Basic configuration options available - BUGS: Known issues with mod compatibility and performance