Enemy Race Manager

by heyqule

Add support to have multiple races of enemies and add various RTS elements. Enemy become tougher as you kill them. Added aerial enemies. Support free for all or 1vN. Search "ERM -" mods to download the new enemies.

Content
7 days ago
1.1 - 2.0
14.8K
Combat Enemies Environment

Changelog

Version: 2.0.18
Date: 2024-12-14

  Changes:
    - Removed Planet Maraxsis from Mod Compatibility doc.
    - Added optional Maraxsis version (1.23.36+) dependency as it resolved the beacon collision issue. (https://github.com/notnotmelon/maraxsis/issues/146)
Version: 2.0.17
Date: 2024-12-14

  Bugfixes:
    - Attempt to fix army deployer cron job unexpectedly restarted.
Version: 2.0.16
Date: 2024-12-14

  Bugfixes:
    - Fixed clicking map in deployer attachment crash due to it's using removed function.
Version: 2.0.15
Date: 2024-12-14

  Bugfixes:
    - Fixed collision mask on robotport that caused Enemy entities with auto place controls 'xxx' on surface 'xxx' have different collision masks. 
    - Fixed an unintended change which lead to CRC issue
    - Fixed deployer filter UI crash due to entity name change.
Version: 2.0.14
Date: 2024-12-14

  Bugfixes:
    - Attempt to fix deployer and teleport cron failed to restart which may cause multiplayer error.
Version: 2.0.13
Date: 2024-12-13

  Changes:
    - Scouts have their own localised name, instead of using parent entity's.
    - Marked intelligent-enemy as conflict.  It interferes ERM core logics. 
    - Updated Kux-OrbitalIonCannon optional dependency version to 3.8.0+.
    - Updated Mod-Compatibility doc regarding to distant-fire, intelligent-enemy and enable-all-feature-flags.

  Bugfixes:
    - Fixed army deployer attachment did not close when opening other assemblers.
    - Fixed army deployer auto-deploy toggle not working.
    - Fixed army planner's number input not working.
    - Fixed a crash by adding more rules to exclude surfaces from ERM managed planets/surfaces.
    - Fixed an issue when "Free for all" mode modifies entity.energy_per_shield.
    - Fixed an planet stats UI issue.
    - Fixed an command center control UI issue.
    - Fixed a crash when other mods mess up custom attack group logics and added warning message to notify player once per game session.

  Scripting:
    - Added remote_call('enemyracemanager','is_erm_group', unit_group:LuaCommandable) for other mods to check and avoid interfering with ERM logics. ERM will mark conflict to any mod that interferes its core logics based on severity.
Version: 2.0.12
Date: 2024-12-10

  Bugfixes:
    - Fixed planet kill counts did not persist through save.
Version: 2.0.11
Date: 2024-12-10

  Bugfixes:
    - Fixed startup crash when including ion cannon mk2 on a not space-age game.  It changed to space-age only entity.
Version: 2.0.10
Date: 2024-12-10

  Features:
    - [Player death loop detection]  
    - When player repeatedly dies near the spawn area on a planet, central command offers an uWuClear rapid delivery.
    - It kills all enemies and some player entities within 384 tiles from your force's spawn point.
    - It also reduces all active attack points for the enemy forces on that planet to 0.
    - This action requires defines.input_action.deconstruct permission for multiplayer.

  Changes:
    - Added "reset active attack points" button to enemy detail window (admin-only). 
    - Base buildings now roll on quality tier, instead of using unit's tier.  This avoids single tier dominating an area.
    - Victorious group retire themselves after building their victory base, instead of using set_autonomous() to preserve performance.
    - When a custom attack group could not request an attack path, its members destroy themselves and re-add 20% of attack points.
    - Updated defense section of tips and tricks.

  Bugfixes:
    - Fixed startup crash when other mods removed base game rocket-turret entity.
    - Attempt to fix quick cron failed to restart which caused multiplayer error.
    - Fixed a path looping issue caused by 2.0 group command issue, where attack_area fails immediately after set_command.
    - Fixed center on view for deployers.
Version: 2.0.9
Date: 2024-12-07

  Changes:
    - Electric turrets can now shoot spawners / turrets with Combat Mechanics Overhaul.  Removed the note from Compatibility document.
    - Changed trigger mask from "air-unit" to "flying" for CMO compatibility.
Version: 2.0.8
Date: 2024-12-06

  Changes:
    - Changed collision layer name from "flying_units" to "flying". 
    - Added " Combat Mechanic Overhaul" to Mod Compatibility document.  It causes laser not able to shoot enemy spawner / turrets    

  Bugfixes:
    - Fixed a crash on pentapod tries rolling quality, which they are not supposed to.
    - Fixed an error on generate_group function in remote_api
Version: 2.0.7
Date: 2024-12-05

  Changes:
    - Changed default attack points for launching rockets from 50 to 20, as per 2.0.0 design.

  Bugfixes:
    - Fixed a quality processor event is using incorrect name for on_nth_tick
Version: 2.0.6
Date: 2024-12-05

  Features:
    - Added back 2 ways and 4 ways split for Nauvis.
    - Mixed races on Nauvis now supports [space-age] games.
    - Free for all now works in [space-age] game with above settings.
    - Added "Defense Tips" to tips and tricks

  Changes:
    - Tuned 3rd party biter spawners & turret autoplace.
    - Removed non player entity types from health balancer. (e.g tree, simple-entity(rocks), asteriods and etc)
    - Reduced normal tier of behemoth biter & spitter HP by 60% to match late game units from other forces. Effective HP for great (2nd)tier should be similar to the base game behemoth unit HP.
    - When build base group arrives its destination, it immediately builds its town.  This is "temporary" workaround on a 2.0 group command issue which affected multiple areas.   
    - Changed max unit range setting to represent normal tier units.  Each higher tier adds 0.5 range.  Legendary tier max range = max range + 2.
    - Buffed rocket turret HP from 800 -> 1000.
    - Reduced construction bot resistances to match other player combat entities. (75% -> 50%)

  Bugfixes:
    - Fixed land scout spawning for flying group.
    - Fixed a crash on Army window when it's fetching an invalid icon.
Version: 2.0.5
Date: 2024-12-02

  Bugfixes:
    - Fixed a crash during unit clean up when custom unit pathing failed.
Version: 2.0.4
Date: 2024-11-30

  Changes:
    - Reduced resistance for roboport and combat robot to match other units.
    - Reduced HP for Distractors by 20%.    

  Bugfixes:
    - Fixed a crash for the event on_trigger_created_entity without event.source.
Version: 2.0.3
Date: 2024-11-29

  Changes:
    - Time based attack will not start for enemy which the player has not contacted with.

  Bugfixes:
    - Fixed a crash when super weapon doesn't provide source_entity to generate a revenge group(?).
    - Fixed an issue on unit clean up function.
Version: 2.0.2
Date: 2024-11-27

  Changes:
    - Removed the option to enable/disable attack point as it's now an essential stat.
    - Added additional entities to have minimum 500HP.

  Bugfixes:
    - Fixed progression calculation stuck at 0% due to missing schedule job.
    - Fixed startup crash when disabling the blast flames for Ion Cannon. This mod no longer modify its damage as it now has a mk2 variant. [mod:Orbital Ion Cannon]
    - Fixed quality processor crash while enemy spawn on a platform.
    - Fixed land scout spawning on space platform. It should spawn aerial scout.
Version: 2.0.1
Date: 2024-11-26

  Changes:
    - Custom spawned units will destroy themselves after one minute when they couldn't acquire an attack target.
    - Excluded demolishers from rolling quality

  Bugfixes:
    - Fixed a crash when commandable is not a group and calls to set_autonomous().
    - Fixed a crash when rolling quality on an non-tiered unit.
Version: 2.0.0
Date: 2024-11-25

  Major Features:
    - Updated to Factorio 2.0.  It does NOT support migration from 1.1. Note: 2.0.x are considered experimental releases.  2.1 will be the stable release.
    - >> This mod now focuses on interplanetary war logistics in [space-age].  Support for non [space-age] game will be limited to crashes and shared ERM core functionalities.
    - Replaced leveling (20 levels) system with "Quality Spawning" system (5 tiers). It's based on a planet's evolution and accumulated attack points. ["Enemy difficulty" in Tips and Tricks]
    - [space-age] Home planets invasion. erm_zerg and erm_toss now have their home planet. Are you ready to invade them? ["Home planets" in Tips and Tricks]
    - [space-age] enhanced environmental attacks.

  Features:
    - Updated autoplace handlers based on 2.0 specifications.
    - [space-age] only supports one race per planet. You can pick your nauvis race from startup menu. It defaults to biters.
    - In 2.0 non-[space-age] game, Nauvis can use the mixed mode, which multiple races can spawn on Nauvis.
    - Added some tips and tricks.
    - Added invisible-unit trigger mask type. They can only be target by certain turrets. Player and units can target them due to technical limitation.
    - Added per planet kill counts on ERM GUI.
    - Enemy evolve independently for each planet. e.g Biters in planet A spawn different tiers than those on planet B.

  Changes:
    - [Section: Unit Properties]
    - HP and damage algo changes for quality spawning system.
    - Maximum resistances of Units and turrets reduced from 85-95% to 65%-85% with some exceptions. Lower tier units are adjusted accordingly.
    - Unit-spawner resistance lower from 75%-80% to 45-55%.
    - Pollution to attack algorithm changed. Each tier will take appox 20% more pollution by default than previous tier.
    - [Section: Attack Meter Changes]
    - Point calculation perform when applicable entity dies.
    - Point reduction by killing spawners now based on attack points, which affects custom attack group generation.
    - Attack point gained by launching rocket now default to 20 points, instead of 200.  Adjustable in setting.
    - [Section: Custom attack group changes]
    - The group forming check runs every minute, instead of three minutes by default previously.
    - Added "cargo-landing-pad" and "agricultural-tower" types to targeted entities.
    - Time based attack starts when the enemy's evolution factor is over 0.3 on their planet.  Some planets may handle differently.
    - [Section: Enhanced Defenses]
    - Removed ERM reinforced defense items in flavor of [space-age]'s quality items and recycler.
    - Added concrete wall and refined concrete wall.
    - Most player's structures get a bump to a minimum of 500HP.
    - Reduced resistances for enhanced entities.
    - increase spidertron and tank HP by appox 20%.
    - [Section: Free For All]
    - Only works with mixed mode in non [space-age] game at the moment.
    - [Section: GUI]
    - Main screen buttons are now under shortcuts, instead of using top left buttons (modUI).
    - Some stats are calculated on per planet basis.
    - Army teleportation indicators only draw in alt mode.
    - Added new changes for the quality spawning system.
    - [Section: Temporary Offline Systems]
    - Boss mode is offline for major overhaul.
    - Interplanetary attacks module is offline. It will be re-work for [space-age] as it was designed for Space Exploration.
    - Environmental attacks module is being refactor for [space-age].  ERM branded enemy mods has some unique environmental attacks.
    - [Section: Removals]
    - Removed dependency of stdlib.
    - Removed most compatibility supports for third party mods.  2.0 mods compatibility will be done as any issue arise.
    - Exceptions: Cold, Explosive, Toxic and Armour biters should work fine. However, using their autoplace control may have conflict with ERM's enemy generation.
    - Removed menu biter replacement.
    - Removed "enable biter" option.  They are always enabled.  You can change your race on Nauvis under "Nauvis' enemy" in startup option.
    - Removed randomly assign enemy on a surface/planet.  Enemies autoplaces are now defined in planet prototypes.
    - Removed 2 ways and 4 ways enemy spawner generation on Nauvis due to incompatibility.

  Bugfixes:
    - Fixed interplanetary attack picking a nil surface. It now picks Nauvis as default.
    - Fixed new scout spawned for the existing groups.
    - Fixed various issues.
Version: 1.22.6
Date: 2024-09-18

  Bugfixes:
    - Fixed a crash when spawn position is not found in one of spawning logic.
    - Fixed a startup crash when disable biter without other ERM race mod installed.
    - * Not recommend to disable biter without having other ERM races. It may raise other unforeseen issues.
Version: 1.22.5
Date: 2024-08-19

  Changes:
    - Updated Hungarian Locale (by CsokiHUN).

  Bugfixes:
    - Fixed a crash on 1.21.0 Migration script under certain conditions.
Version: 1.22.4
Date: 2024-08-08

  Bugfixes:
    - Fixed a missing code merge for cold biters
Version: 1.22.3
Date: 2024-08-04

  Changes:
    - Remove spawner decorative when enemy spawners destroyed.
    - updated locale

  Bugfixes:
    - Fixed a load crash with cold biter under linux.
Version: 1.22.2
Date: 2024-08-02

  Changes:
    - Removed game profiler from spawn_location_scanner

  Bugfixes:
    - Fixed an crash that happened after the boss died and the boss logic still tried to spawn a boss wave.
Version: 1.22.1
Date: 2024-07-27

  Bugfixes:
    - Fixed a crash when interplanetary attack couldn't process a value.
Version: 1.22.0
Date: 2024-07-26

  Features:
    - Added rally point support to army unit deployers
    - Added custom UI to handle rally point and deploy active toggle when you open army unit deployers UI.
    - >>> Optional Environmental Raids for SE <<<
    - Meteorites have a chance to spawn units.  They may attack your base or build base on its landing site.
    - They can be intercept with meteorite defense.
    - >>> Optional Interplanetary Raids for SE <<<
    - When a race is unable to perform attack with its custom attack groups, they will try to raid a planet that has your buildings.
    - This happens when you extincted them on a planet/moon.
    - They sometimes use this strategy if they couldn't spawn under the regular strategies.
    - They can drop on your 0% threat planet.
    - They "usually" to drop in area outside of your factory.
    - WARNING!!!: Above raid features should be turned off for existing Space Exploration save, unless your defenses are prepared for them.

  Changes:
    - Changed Deployer UI layout.
    - Added surface and type filter to Deployer UI
    - Added zoom to entity button on Deployer UI when the player and entity is on same planet.
    - Removed alt left click action on deployers, incompatible with UI update.
    - Added surface filter to Teleport UI
    - Fixed incorrect tooltips
    - Increased multiplier for genocidal weapon from x10 to x200. (base setting, 300 AP, gives 60K AP, appox 20 attack groups)
    - Changed super-weapon-attack-point setting max value from 10000 to 1000.  If you are using max value, you will get 500K AP for using genocidal weapon.
    - Reordered some settings.
    - Add "plutonium-atomic-rocket" from PlutoniumEnergy to support super weapon attack points.
    - When a custom attack group no longer path a new target after they has completed the command, they will now build a base on its location before becoming autonomous group.
    - Warning: "ERM - Terran Units for Players - but easier" has marked as incompatible as it is causing crashes. Please use regular "ERM - Terran Units for Players" instead.
    - If you are playing a save with the above mod, please do not upgrade and stay on 1.21.

  Bugfixes:
    - Fixed army stats panel overflow.
    - Fixed? timed unit spawner may stuck on a path because the timed unit are not attacking the trees/rocks.
    - Fixed? an issue when enemy group repath may cause them to rubberband.

  Modding:
    - Changed event calls to use Event.raise_event(script.raise_event), instead of stdlib's Event.dispatch. So that other mods can listen via script.on_event().
    - Added endpoints for environmental attack and interplanetary attack.
Version: 1.21.12
Date: 2024-07-10

  Bugfixes:
    - Fix a crash when boss performs an attack in artillery_mode.
    - Fix a crash when enemy level up with a boss on the field.
Version: 1.21.11
Date: 2024-07-08

  Modding:
    - Added warning message that "ERM - Terran Units for Players - but easier" will become incompatible in 1.22.
    - The improper fork has caused multiple instances of game crashes.
Version: 1.21.10
Date: 2024-07-01

  Bugfixes:
    - Fixed a crash when disabled "biter" force try to spawn a scout.
Version: 1.21.9
Date: 2024-06-30

  Bugfixes:
    - Fixed a crash that caused by heat processor picked up a null surface on a recently deleted planet in Space Exploration.
Version: 1.21.8
Date: 2024-06-29

  Modding:
    - Simplified compatibility control.lua workflow for 3rd party integration.
    - add_*_to_tier() and remove_*_from_tier() in race_settings_helper are deprecated.
Version: 1.21.7
Date: 2024-06-28

  Bugfixes:
    - Fixed a crash that caused by calculating heat on unsupported force, resulting a nil race_name.
    - Fixed an infinite attack group queue when a Space Exploration planet is fully cleared.  It stops after 12 retries.
Version: 1.21.6
Date: 2024-06-27

  Bugfixes:
    - Fixed a crash that caused by spawning scouts in Space Exploration.
Version: 1.21.5
Date: 2024-06-25

  Bugfixes:
    - Fixed a crash that caused by other mods "enemy_" force. [Mod: team competition]
Version: 1.21.4
Date: 2024-06-20

  Changes:
    - Scout targets different attack beacons, rather than the target force's spawn location.
    - When a scout reach its destination, it picks a new attack beacon to scout.

  Bugfixes:
    - Fixed an issue where the scout cron job stopped prematurely.
Version: 1.21.3
Date: 2024-06-16

  Bugfixes:
    - Fixed a crash when spawn beacon was somehow removed outside of ERM.
    - When picked spawn location has an invalid beacon, it will removed from the data tracking list.
Version: 1.21.2
Date: 2024-06-11

  Bugfixes:
    - Fixed a crash when clear_invalid_erm_unit_groups tried to execute group move on a deleted ERM group.
Version: 1.21.1
Date: 2024-06-09

  Changes:
    - Scout units only spawn for ERM custom attack groups and autonomous groups.

  Bugfixes:
    - Fixed new game crash under certain load order with 3rd party mods.
    - Fixed Rampant compatibility issue, which scout unit spawns unexpectedly when it created unit group for its internal process.

  Optimizations:
    - Changed all garbage collection calls to handle in cron jobs.
Version: 1.21.0
Date: 2024-06-07

  Features:
    - >>> Reworked path finder (only for custom attack groups) <<<
    - They pick a closer spawner to reduce travel distance.
    - Enemies may use different pathing strategies to avoid existing defense or poke weak points.
    - Enemies have high chance to call aerial attacks when ground attacks are fully blocked by having moat or being on an island.
    - >>> Scouting Subsystem <<<
    - Introduce fog of war for the custom attack groups.  They will have to scout their attack targets.
    - Attack target types: rocket-silo, mining-drill, furnace, artillery-turret and labs.  Defend them!
    - Rocket-silo and artillery type entities are automatically registered as attack target.
    - Enemy sends scout with either ground or aerial units.
    - Enemy starts to send out scouts on a daily basis (nauvis day) after the 7th day of your landing.
    - >>> Reworked attack group surface / target force selection <<<
    - Introduce enemy revenge heat map.  Enemies tracks which surface and by whom their spawners are killed.
    - Enemies prioritize the attacker force that killed most spawners.
    - Enemies prioritize the surface get attacked the most.
    - Enemies may ask their allies to take revenge, if they are not able to attack on a surface.
    - >>> Others <<<
    - When enemy successfully spawns a custom attack group, pollution is deducted from attack target chunk.

  Changes:
    - Free for all "multiplier" is configurable in startup tab.  It affects damage and health.
    - Removed "Disable Aerial Collision" setting as it's incompatible with new path finder.
    - Changed enemy's max radioactive resist from 75 to 70
    - Ctrl + Alt + S to open stats window.
    - Precision strike warning now ping the attack group spawn position, instead of target position.
    - Unit movement speed reach max speed at level 5 by default.
    - Unit attack speed reach max speed at level 5 by default.
    - >>> Settings changes <<<
    - Max Automatic Group's maximum value changed from 50 to 100, default from 20 to 30, same as vanilla default.
    - Changed "[Time based attack] add point by %" setting maximum value from 90 to 75. (Please reset your setting to 75, if you were using higher value)
    - Added {6,7} minute options to "attack group forming interval".
    - Added Enemy "Level Up Express" in startup setting. "Express" and "Shinkansen" options lower the required evolution points for each level.
    - >>> Enhanced Defense <<<
    - Changed Car's fixed value resist from 0 -> 5
    - Changed Tank resistance from 75% -> 70%, fixed value resist 10 -> 15
    - Changed Tank health increase from x2.5 to x3
    - Changed Spidertron resistance from 75% -> 70%, fixed value resist 5 -> 10
    - "Disable friendly fire" is now under its own startup setting. Explosive cannon projectiles, Explosive rockets and grenades do not do friendly fire when this option is on. Default: ON
    - >>> RTS Map setting <<<
    - Changed Starting area from 133% to 150%
    - Changed max enemy expansion time from 15 minutes to 20 minutes

  Bugfixes:
    - Fixed calculateMultipleLevel function did not call level up event.
    - Fixed a crash when player attacks the boss under certain conditions. [Issue: 45]
    - Fixed duplicated names in global.attack_group_attackable_entity_names
    - Fixed some UI incorrect descriptions.

  Optimizations:
    - Cron processor changes
    - ERM Attack Groups disband after 14 nauvis days or under certain size to reduce idle units.
    - [Internal] Added regression tests.
Version: 1.20.13
Date: 2024-03-01

  Changes:
    - Added a new "Map" setting to change army supply limit. [1x - 5x]
    - Default control army UI key changed from "Ctrl+A" to "Ctrl+Alt+A"

  Bugfixes:
    - Fixed army population does not decrease when they removed by AAI Vehicle's deadzone logic. [Issue #43]
Version: 1.20.12
Date: 2023-12-22

  Bugfixes:
    - Fixed a crash when dropships can't find a land position to drop. It will spawn a low tier flying unit instead.
Version: 1.20.11
Date: 2023-12-10

  Changes:
    - ERM Roach world map presets changes:
    - [Preset] Rename "ERM Roach World" to "ERM RTS World"
    - [Preset] Resources spawn in very-high frequency with very-low richness setting.
    - [Preset] Starting area is a little larger than normal.
    - [Preset] This intended to simulate RTS map, which resource patch have low richness.
    - Changed minimum group gathering time from 2 minutes to 3.5 minutes. (half Nauvis day)
    - Changed Elite Squad spawn attack points' default from 60000 to 45000.
    - Changed unit_evolution_points per kill from 2% to 2.5% of a spawner kill.
    - Changed turret_evolution_points per kill from 10% to 20% of a spawner kill.
    - Removed spawner_kills_deduct_evolution_points for units.  Killing units will no longer deduct enemy evolution points.
    - Changed spawner_kills_deduct_evolution_points for turret from 20% to 50% of a spawner kill.
    - Changed spawner_kills_deduct_evolution_points for spawner from 133% to 150% of a spawner kill.

  Bugfixes:
    - Fixed auto deploy number reset to default by army index [Issue:41]
Version: 1.20.10
Date: 2023-10-05

  Bugfixes:
    - Fixed the dependency loop, caused by code suggestion.
Version: 1.20.9
Date: 2023-10-04

  Changes:
    - Fixed tooltip of Max Auto Gathering Group changed from 15 -> 20
    - changed game.active_mods to script.active_mods

  Bugfixes:
    - Fixed army unit counter incorrectly add unit when the unit teleports to new surface.
Version: 1.20.8
Date: 2023-09-22

  Changes:
    - When enable-bitter is uncheck, enemy force is no longer consider as active_race. So it excludes from one race / planet autoplace.
    - Increase evolution_points for each killed unit from 1% to 2% of spawner killed factor.

  Bugfixes:
    - Not default max attack range now gradually increase from level 1 - level 5. This fixes nothing in early game can hit an unit that has very high max attack range.
Version: 1.20.7
Date: 2023-09-01

  Changes:
    - Turn off debug flag. >.>
Version: 1.20.6
Date: 2023-08-30

  Changes:
    - ERM roach world changed from 4-10 minutes per expansion to 5-15 minutes.

  Bugfixes:
    - Fixed no autoplace crash when players enters Space Exploration vault. Vault enemy depends on "race on menu" in startup settings.
Version: 1.20.5
Date: 2023-08-27

  Changes:
    - Added support to add attack-able entity by name. Added "mining-depot" to the list.
Version: 1.20.4
Date: 2023-08-27

  Bugfixes:
    - Fix attempt to index field 'custom_attack_race_settings' crash
Version: 1.20.3
Date: 2023-08-27

  Bugfixes:
    - Fix an incorrect comparison from custom_attack_helper.
Version: 1.20.2
Date: 2023-08-27

  Bugfixes:
    - Fix a crash from custom_attack_helper when tick is missing.
Version: 1.20.1
Date: 2023-08-26

  Bugfixes:
    - Fixed locale for K2 creep setting.
Version: 1.20.0
Date: 2023-08-26

  Features:
    - Improved time to live unit handling.
    - >>> BobEnemies and Natural Evolution Enemies <<<
    - Lifted incompatibility for Bobs Enemies and Natural Evolution Enemies (theSAguy's original versions).  They no longer crash when ERM enemy levels.
    - They don't crash the game anymore. But they are not balanced with ERM level or ERM FFA.
    - They belong to "enemy" force.
    - They only work in default map mode.  Other map modes are not supported. (2 ways, 4 ways, one race / planet)
    - >>> EMR enemies showcase in menu background <<<
    - This is done by replacing default biters entities. It may affect mods relying on those entities.  It can be enable/disable on startup setting.
    - Added a framework to defined the showcase units in race mod's code. (see erm_zerg's data.lua for example)
    - >>> Disable Aerial behaviour for air units <<<
    - Added an options to toggle off aerial collision layer for air units.
    - Air unit will follow land pathing, should no longer flying over the lake or other blocking objects.
    - >>> Killing spawner / turret decrease evolution point <<<
    - Killing spawners and turrets decrease enemy's evolution point.  Prevent them from leveling up.
    - This feature is off by default, can be enabled in map setting tab.

  Changes:
    - All acid patches have 5s initial lifetime and 15s max lifetime.
    - Nerfed vanilla spitter's extremely high acid dmg per second by 30%
    - Nerfed vanilla spitter's acids lifetime to 5s, max lifetime to 15s.
    - Changed Atomic wave damage type for atomic-rocket from explosive to radioactive.
    - All units, turret, spawners have a max of 75% radioactive damage cap.

  Bugfixes:
    - Fixed an issue that armoured biter spawn spec were not included.
    - Fixed an issue where race caches in race mods are not updated when race levels up.
    - Fixed ForceHelper.extract_race_name_from() get 'enemy' for non-enemy force.
Version: 1.19.2
Date: 2023-08-12

  Bugfixes:
    - Fixed a start up crash when a spawn specification did not included temperature.
    - Fixed a start up crash when none of the spawn specifications loaded.
Version: 1.19.1
Date: 2023-08-11

  Bugfixes:
    - Fix a crash where settings in race mod cache did not properly refresh.
Version: 1.19.0
Date: 2023-08-11

  Features:
    - Rebuild default autoplace workflow to support unlimited race mods.
    - default autoplace now supports temperature and elevation variation under certain conditions.
    - Armoured/Cold/Explosive/Toxic biters support terrain temperature modifier for default mapping method.
    - All custom biters support map color changes.
    - Added "Enforce Temperature" startup settings. When this is set, spawners in default mapping method are generated according to its temperature specification.
    - A patch of no-one land may generated under certain conditions. Treat it as oasis, if the enemies have not expanded into it.
    - Removed dependency of erm_ prefix.  Added new way to register ERM race for data manipulation in data stage.
    - Added erm_libs as dependency.

  Changes:
    - ERM Roach death world now uses 100% starting area, instead of 75%
    - Change default boss spawn attack group timer from 3.5mins to 7mins

  Optimizations:
    - Removed autoplace for non-level 1 spawner/turret.  Leveled entities are always corrected by controller.
    - This also eliminates an ancient bug where high level spawns at level 1.

  Gui:
    - Main detail window has dynamic width to accompany longer race name.

  Bugfixes:
    - Fixed an crash when an non ERM force somehow assigned an ERM dropship into their group. [Mod: team competition]
    - Fixed map generation to use string equal to compare mod_name, rather than string.find, to avoid name collision.
Version: 1.18.7
Date: 2023-08-05

  Bugfixes:
    - Fixed a crash caused by ForceHelper.extract_race_name_from is caching non ERM races. [Mod: team competition]
Version: 1.18.6
Date: 2023-08-03

  Bugfixes:
    - Turn off debug mode, for the Nth time. lol.
Version: 1.18.5
Date: 2023-08-03

  Changes:
    - Increase cost of each unit for attack groups to balance recently change of new units and attacks
    - Custom attack group's MIXED_UNIT_POINTS changed from 20 to 25. 150 units to 120.
    - Custom attack group's FLYING_UNIT_POINTS changed from 50 to 75. 60 units to 40.
    - Custom attack group's DROPSHIP_UNIT_POINTS changed from 100 to 200. 30 units to 15.
    - enemyracemanager-attack-meter-threshold multipler default reduced from 1.5x to 1.25x
    - K2 Creep can be toggle based on startup setting for each race.  They are default to ON.
    - Expansion buildings now spawn decoration if the building support it.
    - Cannon shell for enemy damage changed, standard shell deals heavy single target and 2 radius aoe light damage, explosive deal 4 radius aoe with heavy damage

  Modding:
    - Add drop_player_unit() to custom attack helper.
Version: 1.18.4
Date: 2023-07-30

  Changes:
    - Refactored force helper and race setting helper.

  Bugfixes:
    - Fix drop unit in custom attack crash when it's used with projectiles.
Version: 1.18.3
Date: 2023-07-30

  Changes:
    - Add functions for upcoming team color and map color handling.

  Bugfixes:
    - Fixed GUI crash when there are other non ERM enemy_ prefixed forces presents. [Mod: team competition]
    - Fixed a crash when onBiterBaseBuilt happens on a non ERM race.  [Mod: team competition]
Version: 1.18.2
Date: 2023-07-29

  Changes:
    - Boss mode no longer have hard limited to erm_zerg and erm_toss.  Other races can extend it.

  Bugfixes:
    - Fix a crash in CustomAttackHelper.drop_batch_units()
Version: 1.18.1
Date: 2023-07-29

  Bugfixes:
    - Turn off debug mode, again!
Version: 1.18.0
Date: 2023-07-26

  Features:
    - Added Unit's time to live subsystem, unit dies once the time is up.
    - This system uses Unit's min_pursue_time as time_to_live timer.
    - min_pursue_time's base game default is 10 seconds.  Units in this system should have lifespan of maximum 5 mins for optimal performance.
    - A race can have maximum of 500 time_to_live units.  The older units will be killed when it overflows.
    - Time to live unit kills do not count toward attack points

  Changes:
    - Units from dropships / custom spawn now added to its parent unit group.
    - *** Removed Level Requirement Multiplier from setting. ***  May affect existing game. Please adjust [Level Up] Evolution Point Multiplier.
    - Enhanced Custom attack helper to support more variances of attacks
    - enemyracemanager-max-attack-range is now an int setting, you may have to reset it to your desire range.
    - Added new 26, 32, 42 range
    - unit attack ranges are now dynamic based on your max range settings.
    - long range unit is now 75% of max range, medium range target is 50% and short range is 25%.

  Gui:
    - Race name column now print proper label, instead of race codename.

  Bugfixes:
    - Fixed an issue on custom attack group is using wrong force for the new group.

  Scripting:
    - Race name in GUI is defined with race_settings.label = {gui.label-race}

  Modding:
    - Added a new remote interface function to register new race. "register_new_enemy_race"
    - Please see script/remote.lua in erm_zerg for example.
Version: 1.17.4
Date: 2023-07-15

  Changes:
    - Changed command center teleport box width from 32 to 48 tiles.
    - Adjusted custom attack groups' attack_area radius.
    - [Experimental] Custom attack groups should clear nearby attack-able entities before moving on to the next base.
    - [Experimental] Custom attack groups should pick a closer attack position to reduce transit time.
    - Deprecated Level Requirement Multiplier in Start up setting. Please use [Level Up] Evolution Point Multiplier in map setting instead.  They serve same purpose.
    - ** Use value < 1 to slow down or value > 1 to speed up the level speed with Evolution Point Multiplier.
    - ** Level Requirement Multiplier setting will remove in next release.

  Bugfixes:
    - FFA health multiplier will ignore entity with HP over 10 million to prevent crash.
Version: 1.17.3
Date: 2023-05-16

  Changes:
    - The following are Cold/Explosive/Toxic Biters changes
    - Behemoth creatures spawn evolution changed from 0.9 to 0.85.
    - Leviathan creatures spawn evolution changed from 0.95+ to 0.9.
    - Mother creatures spawn evolution changed from 0.975 to 0.925.
    - Consolidated big creatures spawn chance to be 55% at 1.0 evolution.
    - Consolidated behemoth creatures spawn chance to be 40% at 1.0 evolution.
    - Consolidated leviathan creatures spawn chance to be 4% at 1.0 evolution.
    - Consolidated mother creatures spawn chance to be 1% at 1.0 evolution.

  Bugfixes:
    - Fixed a bug which explosive worm from explosive biters used an incorrect autoplace function [Discovered by CC02]
    - Fixed a crash when a player disable worm from explosive/cold/toxic biter setting.
Version: 1.17.2
Date: 2023-05-03

  Bugfixes:
    - Syntax error on the enemy replacement from last minute change. [Fixed by bolderbrush10]
Version: 1.17.1
Date: 2023-05-01

  Bugfixes:
    - Fixed reset button profiler crash.
    - Fixed a crash when replacing enemy with SearchlightAssault mod installed.
    - Added cold/explosive/toxic biter spawner to vanilla structure list.
Version: 1.17.0
Date: 2023-03-12

  Features:
    - Added support for Milestones mod.
    - Added Toxic Biters compatibility
    - *** "Default" enemy spawner generating method changes ***
    - Each race groups together under certain autoplace conditions.
    - Free for all now works better under this method.

  Changes:
    - Remote API name changed from "enemy_race_manager" to "enemyracemanager". Made it consistent with the name in info.json.
    - Pollution multiplier changed from 0.05 to 0.025 by default
    - Changed default featured groups spawn chance from 25% to 33%
    - Tweaked featured groups for Armour biter, cold biter, explosive biter and toxic biter.
    - Tweaked splitter damage for cold biter, explosive biter and toxic biter.
    - Changed tooltip for reset biter button.
    - Add profilers to reset biter function.
Version: 1.16.8
Date: 2023-01-29

  Changes:
    - Removed enhanced electric-pole and substation from military target
    - Barrel to steel plate recipe return 32 plates to balance IR3 price [IR3-only].

  Bugfixes:
    - Fixed a crash when IR3 enabled.
    - Fixed IR3 projectiles do not hit air. It had same issues as IR2.
Version: 1.16.7
Date: 2023-01-13

  Changes:
    - Added pollution to join attack multiplier to mod's start up setting.  Higher level unit requires more pollution to generate.
    - (Default Setting: 0.05) Level 20 unit requires 2x pollution to generate.  Level 10 unit requires 1.5x pollution to generate.
    - (Setting: 0.025) Level 20 unit requires 1.5x pollution to generate.  Level 10 unit requires 1.25x pollution to generate.
    - (Setting: 0.01) Level 20 unit requires 1.2x pollution to generate.  Level 10 unit requires 1.1x pollution to generate.
    - (Setting: 0) No change to unit's pollution value.
    - Small damage reduction at lower levels for corrupted robots.
    - Biter's featured group changes.
    - Add short range big worm for construction bot spawn.

  Bugfixes:
    - Moved some UI variables to global table.
    - Fixed a crash when rocket launch on a surface which does not have an assigned enemy force.
Version: 1.16.6
Date: 2022-12-29

  Bugfixes:
    - Fix a crash when army control hotkey is pressed while army control is not active.
Version: 1.16.5
Date: 2022-12-20

  Changes:
    - Buffed player's construction / logistic robot to have 500 health, regardless of max level difficulty.

  Bugfixes:
    - Fixed a crash when logistic robot spawn in vanilla biter feature group. (no one play against biters with this mod, lol).
Version: 1.16.4
Date: 2022-12-19

  Bugfixes:
    - Fixed a multiplayer issue, mod-enemyracemanager was registered for the following events when the map was saved but has not re-registered them as a result of loading: on_entity_spawned.
Version: 1.16.3
Date: 2022-12-19

  Bugfixes:
    - Fixed that nuking the boss can kill the player vision.
    - Fixed a tab handler crash with LTN management window.
    - Fixed a crash caused by post process mod was treated as an enemy race in 1 race / surface configuration.
Version: 1.16.2
Date: 2022-12-16

  Bugfixes:
    - Fix a crash when launching Psi tracking satellite.
Version: 1.16.1
Date: 2022-12-16

  Changes:
    - "construction bot not repairable" always apply, regardless of defense enhance option.

  Bugfixes:
    - Fix a crash when spawn a boss on a not supported race.
Version: 1.16.0
Date: 2022-12-12

  Major Features:
    - ----- Boss Framework (Proof of Concept release) -----
    - Boss spawner is revealed by launching a "Psi Tracking Satellite".
    - Currently only supported by **erm_zerg** and **erm_protoss**. Plan to support all races when it's out of POC phase.
    - The goal of this mode is time trail boss fight and of course, to rekt your base.
    - Added Psi Tracking Satellite. It reveals a boss spawner and returns 1200 space science pack.
    - Once boss spawner revealed, launching additional Psi Tracking Satellite will not spawn new boss until the existing boss has either killed or despawned.
    - The map chunk where the boss sit is revealed to players.
    - Boss sends out elite attack group periodically. (approx twice per nauvis day)
    - Boss performs various attacks when it takes damage.
    - When the boss is defeated, infinity chest(s) with intermediate products will spawn for 14 nauvis days. (appox 1.5hr game time)
    - When you don't defeat the boss in time, it'll release super attacks to your base before it despawn!
    - Added barrel >> steele plate recipe for furnace. Boss Rewards may return liquid barrels. You can use this recipe to recycle empty barrel.
    - It's NOT balanced at all, attacks are not final, and it may be buggy.  Good luck if you want to try it.
    - ----- End Boss Framework -----
    - ----- Player Army Frameworks -----
    - The player army frameworks only apply to ERM - Terran at the moment.
    - Press Ctrl + A (default) to bring up the Army UI
    - ----- Population Framework -----
    - Base Max Population is 150. Max pop can be increased with Follower Combat Drone research at 1:1 ratio.
    - Each unit can have different population value. E.g 1 for marine, 2 for tank/wraith, 5 for battlecruiser.
    - Set the number of units which you want to automatically deployed.
    - ----- End Population Framework -----
    - ----- Teleportation Framework -----
    - Build 2 command centers (styled radars)
    - Select "from" and "to" CC to link them
    - Move your units to "from" CC, indicated by green outline
    - Active CC scans player units to teleport every 15 seconds. 24 units per batch. Up to 96 units per minute.
    - ----- End Teleportation Framework -----
    - ----- Army Deployment Framework -----
    - Build a deployer (styled assembling machines)
    - Deployer is now required to build military units. Assembling machine can no longer build them.
    - Deployer may automatically deploy military units when total population under player set threshold and max population.
    - ----- End Deployment Framework -----
    - ----- End Player Army Frameworks -----

  Features:
    - Added post process package for some indexes. Requires "Enemy Race Manager - Post Process" package.

  Graphics:
    - Added new graphics for explosions and attack effects. Requires "Enemy Race Manager Asset Pack" package.

  Sounds:
    - Added "max population" sound effect
    - Added "force under attack" when player unit dies.
    - Added "base under attack" to replace default alert.

  Changes:
    - When a custom attack squad completes an attack command, it will pick a new attack area. Instead of converting to automatic group.
    - Level up check now runs every 10 mins, not configurable.
    - When boss is active, leveling up is halt until boss mode end.
    - Killing units / turrets now always count toward evolution points.
    - Tweaked base expansion formation number.
    - Tweaked unit group will not slow down to wait members. Slow members run double speed to catch up.
    - When a unit group marks as always angry, they will always be distracted by anything.
    - Most reinforced item with lower than 1000HP have buffed to around 900 - 1000 HP. Except blue belt, which stay at 680.
    - Added reinforced substation with 1000 HP.
    - Reinforced inserters, reinforced power poles and reinforced substations are military targets.
    - Attack point consumption change for custom attack groups, air unit group 75 -> 50, dropship group 150 -> 100.
    - Base game Energy-Shield and SE adaptive armour, SE medpack now multiply with FreeForAll multiplier.
    - Changed building processor to have 11.5 tiles gaps when calling find_non_colliding_position

  Optimizations:
    - Refactored custom attack handler to reduce remote calls.
    - Refactored GUI handlers.
    - Construction bots are now not repairable. They have 2x of health. This change prevented bots stacking when they try to repair each other. It also freed up the internal construction queue. They replenish health when they dock.
Version: 1.15.5
Date: 2022-09-02

  Bugfixes:
    - Yet another attempt to fix high level units escaping the level processor in early game.
    - Added an early game high level unit elimination function.
Version: 1.15.4
Date: 2022-08-20

  Bugfixes:
    - Fix level slider bug where when you are one level under max_level. The slide uses 0.05 interval. (Github Issue 23)
Version: 1.15.3
Date: 2022-07-10

  Changes:
    - Buffed HP on reinforced belt from 510 to 680
    - Buffed HP on reinforced inserter from 480 to 600
    - Buffed HP on reinforced pipe from 500 to 600
    - Buffed HP on reinforced underground pipe from 600 to 750
    - Buffed HP on reinforced underground belt from 600 to 750
    - Changed setting description for 1.1.61 Setting UI Changes.
    - Level processor check interval can now be changed in startup setting. Default: 60 minutes, Options: 5, 15, 30, 60
    - Improve unit performance by changing enemies distraction_cooldown from 20 to 300.

  Bugfixes:
    - Fixed The enemy level requirement multiplier is not taken into account when manually setting a race's level. (Github Issue 22)
Version: 1.15.2
Date: 2022-06-22

  Changes:
    - Reinforced wall now take 10 wall to produce 10 reinforced wall. Upped from 4.
    - Updated surface exclusion list

  Bugfixes:
    - Added support to set neutral for neutral forces which created from other mods. (fixes new races attack indestructible entities in Ribbon Maze mod)
Version: 1.15.1
Date: 2022-06-07

  Bugfixes:
    - Fix a crash when leviathan armor biter has enabled.
Version: 1.15.0
Date: 2022-06-06

  Features:
    - --- Featured squad ----
    - this spawns a signature squad from each race.
    - e.g a team of zergling and ultralisk.  Please refer to race mods changelog for details
    - Default spawn chance is 25%.
    - --- / Featured squad ----
    - --- Elite squad ----
    - this spawn higher level squads.  Default elite level is your current level + 2 (adjustable, 1 - 5).
    - Max elite unit levels are up to level 25.
    - Units have about 20-30% more HP and damage when they are at level 25, comparing to level 20.
    - this squad utilizes team formations from featured squads.
    - they spawn based on the accumulated attack points. (default 60000 points, adjustable)
    - ON by default. It starts to spawn when race tier reaches 3. (0.8 evolution factor).
    - --- / Elite squad ----
    - --- Biter Featured Squads ----
    - added {'behemoth-spitter', 'behemoth-biter'} to featured group
    - --- Biter Featured Flying Squads ----
    - added {'distractor', 'destroyer'} to flying featured group
    - Featured and elite squads start to spawn when they reach tier 3.
    - Added Remote API endpoint to spawn featured group and elite group
    - Added Remote API endpoint to add attack points to an enemy race.
    - Added Remote API document: https://github.com/heyqule/enemy_race_manager/blob/main/doc/remote_api.md

  Changes:
    - Re-added "nuke biter" button to kill bugged very high level units in early game.
    - Change min_expansion_cooldown from 2 minutes to 4 minutes for ERM Roach World presets.
    - Adjusted unit health algo. levels 2 - 4 health have lowered to balance health raise between levels. Level 5 - 19 have approx +/- 5% changes. Level 20 stays the same.
    - Refactored custom attack handling (dropships and proxy builder)
    - Changed max projectile range to 64 tiles by default.
    - Increased Artillery damage bonus from 25% to 33% for each strong explosive level.
    - Increased spidertron health from 3000 to 6000
    - Increased tank health from 4000 to 5000
    - Increased car health from 1350 to 2250
    - Slightly lowered car, tank, spidertron overall damage resistances.
    - Reduced explosion damage reduction on vehicles (tank, spidertron, car), as explosion friendly fire has been removed.
    - -- Biter Race Changes ---
    - logistic bot will no longer spawn from regular flying attack squad.
    - logistic bot unit cooldown changed from 15-10s to 45-30s

  Bugfixes:
    - Fix an issue which a custom group may stuck at gathering when calling a generating group function from remote API.
Version: 1.14.3
Date: 2022-04-07

  Bugfixes:
    - Fixed a crash when processing super weapon attack point with 2 race split and same races for both axes.
Version: 1.14.2
Date: 2022-04-01

  Bugfixes:
    - Fixed an issue where race level up did not trigger map processor to update buildings.
    - Fixed a missing translation in setting.
Version: 1.14.1
Date: 2022-03-16

  Bugfixes:
    - Fixed a crash caused by cron scheduler
    - Removed some debug log()
Version: 1.14.0
Date: 2022-03-04

  Features:
    - Launching rocket will add attack point for a randomly selected race or primary race of the surface. (default: ON, 200 points)
    - Using super weapon (e.g Nukes) will add attack point for a randomly selected race or primary race of the surface. (default: ON, 300 points)
    - Supported super weapons from these mods: space-exploration, AtomicArtillery, M.I.R.V, Ion Cannon SE, Kastorio2, Industrial Revolution
    - Adjust M.I.R.V, Ion Cannon SE and Space Exploration's iridium-piledriver damage with ERM's defense value.
    - Using planet purifier type of super weapon will add 10x the points (M.I.R.V, plague-rocket from SE)
    - Using super weapon may cause enemy to send its survived units to your base. (Up to MAX_GROUP_SIZE)
    - New attribute to track accumulated attack points for each race. (To be used for future features.)

  Changes:
    - Improve custom attack handling
    - Improve cron scheduler
    - Improve race data upgrade for easier expansions
    - Events will only process active races based on the mapping method setting.
    - Reinforced turrets HP changed from 1.5x to 2x
    - Landmines now slow enemy for 30s, up from 5s.  Increase damage by 3x

  Bugfixes:
    - Fix cooldown on enemy logistic bot
    - Fix enemy may fight each others when Free For All is off.
Version: 1.13.4
Date: 2022-02-11

  Changes:
    - Added "spaceship" and "RTStasisRealm" surface to exclusion list.
    - map process queue and attack group indexer now ignore surfaces in exclusion list

  Bugfixes:
    - Fixed an issue where reinforced building recipes don't unlock on existing saves which have the tech researched.
Version: 1.13.3
Date: 2022-02-04

  Bugfixes:
    - Fixed improper minable and icon, which crash with boblogistic.
    - Fixed new pipe-to-ground entity fast replace group, which crash Krastorio 2.
    - Fixed a crash with Industrial evolution.
Version: 1.13.2
Date: 2022-02-02

  Bugfixes:
    - Forgot to disable debug mode once again lol.
Version: 1.13.1
Date: 2022-02-02

  Bugfixes:
    - Fixed a crash with aai-container icons incompatibility
Version: 1.13.0
Date: 2022-02-02

  Features:
    - Added reinforced structures for military.
    - Reinforced red belt / blue belt (3x health),
    - Reinforced fast inserters (3x),
    - Reinforced pipes (5x)
    - Reinforced medium pole (5x)
    - Reinforced requester chests (2x)
    - Reinforced stone wall (2x)
    - Reinforced laser turret (1.5x)
    - Reinforced gun turret (1.5x)
    - Reinforced flamethrower (1.5x)
    - Resistance 99% to fire, 33% to all. Reinforced wall is still 100% to fire, 50% to all.
    - New items support upgrade planner

  Changes:
    - research_queue_setting set to "always" in Roach World Map Presents
    - Max number of group and max group size are now a map setting, instead of startup setting. They can be adjusted mid-game. If you are using non-default setting, please load your game and change those 2 settings in "map setting" tab
    - Free for all multipliers changed from 8x to 10x, player entity health to 12.5x
    - Buffed tank & car health, resistance and damage when enhanced defense enabled.
    - Disable friendly fire on explosive rocket and cannon when enhanced defense enabled.
Version: 1.12.1
Date: 2022-01-22

  Changes:
    - set_autonomous() when the ERM group finish its command.

  Bugfixes:
    - Fixed a crash in ermGroupCacheTableCleanup function again. XD
Version: 1.12.0
Date: 2022-01-15

  Features:
    - Native support for Free for All.  You can enable in startup setting. (BETA)
    - When FFA mode is enabled:
    - Player entity health multiplied by 8x
    - Enemy damage also multiplied by 8x.
    - The multiplier is to balance the time enemy units take to kill each other.

  Changes:
    - Certain surfaces will no longer assign races. E.g aai-signals, starmap from SE. (Inspired from Rampant 2.0)
    - When attack group can't find attack path, it will automatically destroy and refund some attack points.
    - Raise pick spawn / attack group location retries from 4 to 12.
    - All default weapon can now hit air. Removed Allow ground weapons to hit air units setting
    - Biters now have resistance similar to other races. Max 90 for elemental and 95 for physical
    - Biter spawners now use same spawn cooldown as zerg, {600, 300} ticks.
    - Added a slider to adjust evolution factor in enemy detail GUI.

  Bugfixes:
    - Fixed a crash in ermGroupCacheTableCleanup function
Version: 1.11.0
Date: 2012-12-26

  Features:
    - New map presets: ERM Roach World and ERM Roach Death World.
    - min enemy expansion = 2 mins and max enemy expansion = 10 mins. Base presets are 4 mins and 60 mins respectively.

  Changes:
    - Resistance update applies to all walls and gates. 50% resistance to all
    - Max gathering groups change from 5 - 60 to 1 - 50
    - Max auto gathering group size change from 50 - 600 to 50 - 1000
    - Max attack group size can be set to 1000.
    - This can be reach by raising "[Attack Meter] Threshold Multiplier" and "Max Auto gathering group size". (e.g 10 Threshold Multiplier and 100 max group size)
    - Debug remote attack group calls now accept size
    - Added a debug scenario to test the races on different maps.
    - Code file license changed from MIT to GNU LGPLv3

  Bugfixes:
    - Fix an issue where WEST and EAST attack group processing position get swapped.
Version: 1.10.7
Date: 2021-12-17

  Bugfixes:
    - Fix a crash when enemy couldn't build a new base in base build processor.
Version: 1.10.6
Date: 2021-12-15

  Bugfixes:
    - Fix a crash when LevelManager.get_calculated_current_level() > max_level in level slider.
Version: 1.10.5
Date: 2021-11-30

  Changes:
    - Added "bob-pierce" and "plasma" resistance support for enemy units, max 90% (Bob Warfare resistance support)
    - Adjusted K2's 'radioactive' and 'kr-explosion' resistance from max 95% to max 90%
    - Adjusted initial values for above resistances
Version: 1.10.4
Date: 2021-11-27

  Bugfixes:
    - Fixed a crash when build group called start_moving()
Version: 1.10.3
Date: 2021-11-26

  Changes:
    - Time based custom attack group starts at level 3, instead of level 2.  Gives more time to prepare for roboports.
    - Changed [Time Based Attack] Add points by % default from 3% to 2% per minute.

  Bugfixes:
    - Fixed a crash on data load when "enable vanilla biter" is off.
    - added biter_factions to incompatible.  It created enemy forces which are not compatible with this mod's logic processors.
Version: 1.10.2
Date: 2021-11-21

  Bugfixes:
    - Fixed setting sorting
    - Fixed XP curve to use 1.10.1 value.  It used incorrect values.
Version: 1.10.1
Date: 2021-11-18

  Changes:
    - Change XP Curve: {1, 3, 6, 10, 15, 21, 28, 38, 50, 70, 100, 150, 210, 280, 360, 450, 550, 700, 1000}

  Bugfixes:
    - Fix start up crash when land-mine modified by other mods. New change will only change land-mine with base-game property.
Version: 1.10.0
Date: 2021-11-14

  Features:
    - ---- Vanilla enemy enhancement ----
    - Added combat robots, construction robot, logistic robot as flyer units for enemy race.
    - combat robots are high damage single target units.  Start to spawn after 0.4 evolution factor.
    - construction robot handles building proxy spawners.
    - logistic robot handles the dropship role.
    - bump units' HP and resistances to be similar to other races.
    - Vanilla race now support all features of ERM mod.
    - ---- / Vanilla enemy enhancement ----
    - ---- Time base custom attack group ----
    - Add time base custom attack group. Default: ON
    - Points will add to attack meter every minute. Starting at level 2.
    - Default setting is adding 3% of next attack wave points,  Configurable in settings.
    - ---- / Time base custom attack group ----
    - ---- Krastorio 2 Compatibility update (requires 1.2+) ----
    - Creep generation support for new races
    - Custom bullets can now hit air, regardless of settings.
    - ---- / Krastorio 2 Compatibility update ----
    - ---- Leveling changes ----
    - level 2 and level 3 are no longer based on evolution factor
    - Adjust level up evolution points to {0.25, 0.7, 1.5, 3, 8, 15, 24, 36, 50, 70, 100, 150, 210, 280, 360, 450, 550, 700, 1000}
    - Added Setting: Level Curve Multiplier (1x - 10x). This setting multiplies the evolution points required to level.  Enemy may level up too quick for some big mods.
    - @IMPORTANT: You should consider changing "Level Curve Multiplier" to higher value if you are using expensive recipes or any big mod that makes weapon tech harder to research like Space Exploration.
    - @IMPORTANT: Space Exploration players may want to use 3 - 5 as level curve multiplier, since weapon tech upgrades require more advanced recipe and longer to craft.
    - ---- / Leveling Changes ----
    - Added 4 races split in map generation setting. You can up to have 4 races on nauvis.
    - Added orphan wandering unit cleaner when the save loads.  Orphan units are bad for performance. This can be triggered from GUI.

  Changes:
    - Biters now support movement speed multiplier.
    - Cap attack meter at 999999.
    - Remove small-biter/splitter and small-worm-turret from spawning in custom attack group.
    - Construction/Logistic bots only get HP buff on max level 15 (150) & 20 (200).
    - Removed /ERM_levelup command
    - Change AttackGroupProcessor to generate a group in 20 seconds regardless of the group size, instead of 5 units/s
    - replace land-mine stunt effect with 50% movement speed.
    - Added 3 and 4 to "Attack group forming interval"  option list.  Default changed from 5 mins to 3 mins

  Bugfixes:
    - Fixed a crash when unsupported enemies structure try to level up.  Using unsupported enemies may override ERM features.
    - Fixed a crash in attack_group_chunk_processor when spawnable_chunk index is nil for a surface
Version: 1.9.3
Date: 2021-11-07

  Bugfixes:
    - Fixed a crash in attack_group_chunk_processor when attackable_chunk index is nil for a surface
Version: 1.9.2
Date: 2021-10-27

  Bugfixes:
    - Fixed an issue which custom attack group only spawn at first SE attackable planet.
Version: 1.9.1
Date: 2021-10-23

  Bugfixes:
    - Disable debug mode XD
Version: 1.9.0
Date: 2021-10-23

  Features:
    - Custom attack group can now spawn in Space Exploration planets!
    - Custom attack group is now out of beta.
    - Enemy running/flying speed can now adjustable in startup setting.
    - Added a detailed window to show race's additional information and adjustment
    - Added total units and structures kill count to detailed window
    - Enemy level can be overide in detail UI window.

  Changes:
    - Added default values to setting tooltips
    - Add remote function to generate dropship attack group
    - Significantly lower level up evolution points to { 10, 20, 35, 50, 65, 80, 100, 150, 200, 250, 300, 400, 500, 650, 800, 1000, 1250 }

  Bugfixes:
    - Fixed a bug in attack group chunk processor's find_spawn_location()
    - Fixed an attack meter points calculation inaccuracy issue.
Version: 1.8.1
Date: 2021-09-30

  Changes:
    - "[Precision Strike] Enable for flying squad" is now default to ON
    - Added 90% option to Attack groups spawn chances.

  Bugfixes:
    - Added all variants of "Natural_Evolution_Enemies" to incompatible list.
Version: 1.8.0
Date: 2021-09-30

  Features:
    - Reworked custom attack group spawning position selection workflow.
    - Reworked custom attack group attack target selection workflow.
    - Added enemy damage modifier.
    - Base/Cold/Explosive/Armoured Biters now supports damage leveling. Good luck.

  Changes:
    - Changed Build style default setting to "Build a town".
    - Removed group_gathering_time_change. Use game default instead

  Bugfixes:
    - Fix global erm cache clean up function
    - Fix negative and positive race using opposite coordinates.
Version: 1.7.3
Date: 2021-09-14

  Bugfixes:
    - Fix an incorrect assignment of a cache value
Version: 1.7.2
Date: 2021-09-14

  Bugfixes:
    - Fix a game start up crash when Bio Industry enables.
Version: 1.7.1
Date: 2021-09-03

  Bugfixes:
    - Turn off debug mode.
Version: 1.7.0
Date: 2021-09-03

  Features:
    - ---- Dropship Squad ----
    - Can be enable in setting and set its chance to spawn. Default to ON.
    - Flying units squad must be enabled as prerequisite.
    - Each unit cost 150 attack meter points.  Default 3000 points spawns 20 units.
    - ---- END Dropship Squad ----
    - ---- Squad Subtype: Precision Strike ----
    - The squads with this subtype go straight to inner base targets, bypass your defense.
    - Targets the area within 32 radius of any rocket-silo, artillery or mining-drill.
    - Dropship squad is always a precision strike squad.
    - Flying units squad can be configure to have this feature.  Default to OFF.
    - Strike location will be warn on the map. This option can be turn off.  Default to ON.
    - ---- END Squad Subtype: Precision Strike Squad ----
    - ---- FREE FOR ALL MODE [Experimental feature] ----
    - /ERM_FFA command enable Free For All mode.  It can be toggle on and off.  Enemy races will fight each other.
    - This feature may have performance implication.
    - This command limits to max enemy level 5 and 10.
    - High level units are excluded because unit spawns quicker than they die and cause performance issue.
    - Not recommend to use FFA on a death world map. They may never stop fighting and kill your performance.
    - ** Player building health and enemy damage will need to re-balance for this mode in a future release **
    - ---- END FREE FOR ALL MODE ----

  Changes:
    - Special attack group can now configure to spawn at certain interval (1, 2, default 5, 10) minutes.
    - 2 race split: the no man's land gap increase to 4 chunks to cope for free for all mode
    - Disabled health regen for all units. Turrets and spawners are not units and not affected.
    - Add 1.25x to max health for units to balance the health regen when race level > 1.
    - construction & logistic robots immune fire when player defence enhance option is on.
    - change how spawn chance are calculated for flying units squads
    - change attack meter threshold to use a formular based on max group size, instead of fixed value.
    - Special attack group capped at 600 units.

  Bugfixes:
    - Fix incorrect GUI display regards to enemy map setting.
    - Fix "replace enemy" which always replace enemy with biters, introduced by last release.
Version: 1.6.0
Date: 2021-08-12

  Features:
    - Compatibility for New Game Plus.
    - When the game resets, attack meter also reset.
    - When "reset evolution factor" is checked, level, tier and evolution points are preserved. Evolution factor and attack meter get reset.
    - When "reset research" is checked, everything reset.
    - Add "level up accelerator" option to accelerate level up by killing unit and turrets. It defaults to ON.
    - The point is based on 1% of spawner destroy factor for each killed units and 10% of spawner destroy factor for each killed turrets
    - level 10+ should play with "level up accelerator" enabled.

  Changes:
    - New experience curve for Level 4 - 20.
    - Evolution points: 12, 25, 45, 70, 115, 175, 250, 350, 450, 600, 750, 900, 1200, 1600, 2200, 3000, 4000
    - New XP curve takes less evolution points to reach level 10 and takes more evolution points to reach higher levels.
    - Added level 15 to max level option.
    - Level up checks once every hour instead of every 30mins.
Version: 1.5.6
Date: 2021-08-05

  Changes:
    - Added new color to unit_tint for terran unit coloring in map mode.
    - Changed max value for max autonomous group from 50 to 60
    - Changed max value for max group size from 250 to 600
    - Changed max value for attach group threshold from 6000 to 30000

  Bugfixes:
    - Fixed a crash when replacing enemy biters which are belong to other force that is not named "enemy".  Those units now replace with "enemy" force.
Version: 1.5.5
Date: 2021-08-03

  Changes:
    - Re-added onUnitFinishGathering event.  Some build groups used max group size, instead of max build group size
    - Optimize custom attack helper

  Bugfixes:
    - Fix an issue which "Full Expansion" does not work under new cron.
Version: 1.5.4
Date: 2021-08-02

  Bugfixes:
    - Fix a crash when restoring Queues during on_load event
Version: 1.5.3
Date: 2021-08-02

  Changes:
    - Surface processor now based on surface name, instead of index.
    - Removed onUnitFinishGathering event. It may not needed.

  Bugfixes:
    - Attempt to fix Multiplayer Desync by converting local variable to global
Version: 1.5.2
Date: 2021-07-30

  Bugfixes:
    - Fix a crash on custom attack group spawn when command center does not exists. It now picks other unit spawners if that's the case.
Version: 1.5.1
Date: 2021-07-29

  Features:
    - Added remote.call('enemy_race_manager', 'generate_attack_group', RACE_NAME, number_of_units)
    - e.g remote.call('enemy_race_manager', 'generate_attack_group', 'erm_zerg', 100)
    - Added remote.call('enemy_race_manager', 'generate_flying_group', RACE_NAME, number_of_units)
    - e.g remote.call('enemy_race_manager', 'generate_flying_group', 'erm_zerg', 50)

  Bugfixes:
    - Fix Space exploration crash when creating a new map
Version: 1.5.0
Date: 2021-07-28

  Major Features:
    - Beta Features: Attack Meters, default ON
    - Beta Features: Flying Squads, default OFF.  It will be ON by default once attack meter is out of beta.
    - [Attack Meters] Enemy will send out an army to attack when a killed threshold is reached.  The check happens every 5mins
    - [Attack Meters] tallies kill points every minutes. 1 point for unit, 10 points for turret, 50 points for spawners.
    - [Attack Meters] The default threshold is around 3000 points(~150 units) per attack group. The threshold is configurable.
    - [Attack Meters] Each unit in attack group consumes 20 points.
    - [Flying Squads] enemy may send out dedicate flying attackers to your base.
    - [Flying Squads] Each unit in flying attack group consumes 75 points. Team size is around 40 units in default threshold.
    - This only supports planet nauvis at the moment.  Not yet compatible in other planet for SE.

  Features:
    - Cron Processor, to divide large tasks into smaller tasks. e.g custom base builder and custom attack group builder

  Changes:
    - Change weapon rig bullet and shotgun-shell function to accept custom ammo-category
    - Double unit group gathering time.
    - Refactor custom attack handling.
    - Removed "sync with enemy" button from GUI.  Use /ERM_levelup command to change level instead.

  Bugfixes:
    - Fixed race tier was not changed when using level up by command.
    - Fixed a crash caused by forces cache.
    - Fixed a crash by marking 'bobenemies' to be incompatible.
Version: 1.4.2
Date: 2021-07-16

  Changes:
    - Destroy all units which are not in unit_group. This should preserve building groups.
Version: 1.4.1
Date: 2021-07-16

  Bugfixes:
    - Re-add the process of destroying units. It will only destroy unit when unit level is higher than race's level.
Version: 1.4.0
Date: 2021-07-16

  Changes:
    - Removed the process of destroying units when a race level up. It was unnecessary clean to them up.
    - Wall immune poison and fire, 66% resistance to others
Version: 1.3.1
Date: 2021-07-11

  Bugfixes:
    - Fix a crash when unit_group was not found during the execution of build style: Command Center Expansion.
Version: 1.3.0
Date: 2021-07-10

  Major Features:
    - Added support functions for ERM_RedArmy 0.1.0 beta release.

  Features:
    - You can adjust the split position for 2 way split. e.g you can adjust the split at -10000 on the y-axis.
    - Add a button to kill all enemy units with 32 radius to kill immortal units

  Changes:
    - Added 64 tiles no one's land for 2 way split. This will only apply to newly generated chunk or new map
    - All GUI buttons required admin role.
    - Various code optimizations

  Bugfixes:
    - Attempt to fix run away high level units during the map processing. Some players are seeing immortal (high level) units.
    - Fix a compatibility crash with combat-mechanics-overhaul
    - Fix an issue which surface processor use random race when using replace race button.

  Scripts:
    - Added animation rig to change animation prototypes.
    - Added weapon rig to change weapon / ammo prototypes.
Version: 1.2.0
Date: 07. 03. 2021

  Changes:
    - Air unit now use "flying-layer", instead of hardcoded layer-33.  This enhance collision layer compatibility with Space Exploration
    - ** ERM Race mods also need to update

  Bugfixes:
    - Fix projectile collision issue for air units with Industrial Revolution 2 mod
Version: 1.1.0
Date: 07. 01. 2021

  Changes:
    - Explosion from explosive projectiles can now hit air by default.  This includes explosive cannon shells and artillery shells.
    - Air units use "layer-33" as air-unit collision layer.  This requires race mod updates.
    - Add an option to toggle whether ground weapon can hit air units. This includes shotgun pellets, tank-shells, grenades, poison capsule and slowdown capsule. Disable by default.
Version: 1.0.0
Date: 06. 27. 2021

  Features:
    - --- Added a command to override race level ---
    - Usage: /ERM_levelup enemy,5
    - Overriding level must be equal or higher than the level calculated by evolution points.

  Changes:
    - Removed level up by tech command
    - Code Refactor.
Version: 0.7.0
Date: 04. 02. 2021

  Major Features:
    - ----- Support one force per surface/planet. -----
    - ######## How this works:
    - 1) When a new surface is discovered, a race is assigned to the surface randomly
    - 2) Spawners or worms are generated when new chunk is mapped. The mod checks their force.
    - 3) If it's not same as the assigned force, the mod replace the entity with random spawner/worm from assigned race.
    - ########
    - UI shows the surface you are on and which race(s) are on that surface.
    - When you are using "one force per surface", replacing a race changes the race of the surface you are on.
    - ------ Expansion Build Style ----
    - The enemy builds one building each time in base game. Enemy base expansion is a very slow process.  This feature changes that.
    - There are 4 build styles.
    - 1. "Default", The enemy builds one building each time a build request triggers using base game logic. It's very slow expansion.
    - 2. "Command Center Expand", If the enemy build group builds a command center, it expands  build formation setting. Otherwise, it builds single building. This occasionally expand 7 extra builds.
    - 3. "Build A Town", The enemy build group builds based on the formation setting
    - 4. "Fully Expand", When the group builds, all units in the group builds using build formation setting. This always expands based on the size of the build group. The default map setting is 20.
    - When the unit group doesn't have enough units to build a full formation, command center always builds first, next is support building and then turrets.
    - Build style and build formation options can be change during runtime.

  Features:
    - --- Major Performance Improvement ---
    - Large base builder group will have 75% chance to break down to a smaller settle size group. Large base builder groups seems have significantly performance penalty.
    - The extra units become attack group.  If it did not break down, the large base builder group would also become attack group

  Changes:
    - Corpse stay 15 minutes by default, instead of 5 minutes. Its setting range is now 1 - 60.
    - Add info icon to settings and setting description update
    - 2 races split is now an option in "Enemy Mapping Method", instead of checkbox.  Please select "2 races split" before continue your save.
    - Buffed base game rails resistance.
    - Remove Rampant from dependency blocker.  It seems work with default settings.  However, its changes only apply to "enemy" force. I did not test with its new biters. Enabling them may have unexpected results.
    - A lot of changes and performance tweaks made for terrain (1.1.0),protoss (1.4.0) and zerg (1.4.0) race mod. Please update those too!

  Bugfixes:
    - Fix a crash by removing force and race_settings when an ERM race mod has disabled.
Version: 0.6.1
Date: 03. 27. 2021

  Bugfixes:
    - Fixed a crash when Krastorio2 loads before this mod.  Improved it with ignore_collision_for_area_damage in data-updates.lua
    - Fixed a crash in command ERM_LevelUpWithTech.  Marked as deprecated for next release.
Version: 0.6.0
Date: 03. 26. 2021

  Features:
    - Add support for Cold Biter and Explosive Biter
    - All biters support leveling.
    - Override their resistances
    - They don't regenerate health to balance their overpower attacks
    - [Cold Biter]
    - Cold always 95, physical 75, fire/explosion -100 - -50, laser/acid -50 - 50
    - [Explosive Biter]
    - Fire/explosion always 95, physical 75, cold -100 - -50, laser/acid -50 - 50

  Bugfixes:
    - Fix a crash when visit other planet / surfaces in Space Exploration
Version: 0.5.0
Date: 03. 20. 2021

  Features:
    - Compatible with Armoured Biters mod
    - All armoured snappers and snapper spawner supports leveling.
    - Max health stacks with Armoured Biter settings. Health @ Level 10 is very close to original health.
    - Override Armoured Biters settings to align with this mod's resistances and health regen standard.
    - Most snappers have 80 elemental and 90 physical resistance.
    - Leviathan snappers have 80 elemental and 95 physical resistance.

  Changes:
    - Buffed vanilla worm and health
    - Buffed vanilla biter physical resistance
    - Tweaked resistance function. Max resistance @ level 12, instead of level 10.

  Bugfixes:
    - Fix vanilla biters not showing up when using "2 Ways Race Placement"
    - Fix enemy only show in positive axis when using same race for both positive and negative axis with "2 Ways Race Placement"
Version: 0.4.0
Date: 02. 14. 2021

  Features:
    - Added new mod setting to toggle enhanced vanilla defenses, enabled by default
    - Buff car health (750), resistance and damage (1.5x).
    - Buff tank resistances and damage (2x).
    - Buff stone wall health (500) and resistances.
    - Buff spidertron resistance.
    - Buff impact resistance for all vehicles to 90/50.
    - Buff bot health from 100 to 200, resistances to 75%

  Changes:
    - Gun turret HP buff now controls with enhance vanilla defenses setting.
    - Armors resistances buff now controls with enhance vanilla defenses setting.
    - Explosive rockets AOE can now hit air
    - Units are fully heal in 2 minutes.
    - Buildings are fully heal in 5 minutes.

  Bugfixes:
    - Fix existing enemies are wiped when the level difficulty setting changed from higher to lower for an existing save.
    - Fix a crash after disable vanilla biter and they level up on existing map.
    - Z and P are required to update 1.3.0 for above bugfix to work.
Version: 0.3.3
Date: 02. 02. 2021

  Changes:
    - Change max unit attack range for default to 14.  So that gun turrets can hit them with 2 layers of walls.
Version: 0.3.2
Date: 31. 01. 2021

  Features:
    - Add an option to select max unit attack range for units that uses maximum range. Default is 16. Advanced is 20.

  Changes:
    - Early game leveling should be a lot slower now.
    - Change level 2 and 3's evolution factor value. {0.4, 0.8}
    - Change level 4 and 5 base on hidden evolution value.
    - New hidden evolution level values are {40, 80, 120, 160, 200, 250, 300, 350, 400, 500, 600, 700, 900, 1100, 1350, 1750, 2500}
    - Change Armor resistances to resists all damage types.
    - Buff gun turret HP from 400 to 800.
Version: 0.3.1
Date: 30. 01. 2021

  Bugfixes:
    - Fix "Enable 2 Ways Race Placement" trigger.
Version: 0.3
Date: 29. 01. 2021

  Features:
    - Added support to change max groups and max group size for map settings.
    - Added race placement grouping, supports 2 races on nauvis

  Changes:
    - Improves entity placement in map_processor and replacement_processor
    - Force set friend handles in force helper.
    - Default max group changed from 30 to 15. (performance improvement)
    - Default max group size changed from 200 to 100. (performance improvement)
    - Building on_biter_base_built event should now match race level.
    - Improve translations

  Bugfixes:
    - Replace with buildings from correct race when the enemy base expands.  Autoplace spawned building from other races.
    - Fix remote call fetching incorrect unit tier / level
    - Fix evolution point calculation for gui
Version: 0.2.1
Date: 03. 01. 2021

  Changes:
    - Enable vanilla biter by default
    - Change description in info.json
Version: 0.2.0
Date: 03. 01. 2021

  Features:
    - Add GUI to view evolution points, sync evolution point or replace enemy
    - Add level support for vanilla biters

  Changes:
    - Changed unit naming convention from '-' to '/'.
    - Tuned Evolution level.
Version: 0.1.0
Date: 26. 12. 2020

  Features:
    - 2 difficulty levels (normal: 10, advanced: 20)
    - First 5 level is tied to force's evolution factor
    - The next 15 level is tied to force's hidden evolution factors (time, pollution and kill spawner)
    - Manage new race as new enemy force. Each race has its own force statistics
    - New races may have up to 3 tiers of unit-spawners and turrets
    - Artillery-Shell damage bonus now is part of infinite stronger-explosive upgrade.
    - Enemy level processor, handles leveling up enemy
    - Enemy map processor, handles replacing enemy entity with new level
    - Enemy replacement processor, handles replacing existing enemy entity with new race