Factorio 2.0 mod adding a human Red Army enemy force (units, turrets, buildings, planet Earth, boss mode). Requires enemyracemanager >= 2.0.46 as the framework.
- Force name / MOD_NAME:
enemy_erm_redarmy(set inglobal.lua) - Entrypoints (loaded by Factorio in order):
global.lua— constants, toggleDEBUG_MODE = truedata.lua— prototypes for all units/turrets/buildings, boss data, economy, planets, tipsdata-updates.lua— mods map-gen presets & Nauvis autoplace controlssettings.lua/settings-updates.lua— registers map color, inserts MOD_NAME into ERM multi-force settings, tunes factorio-world defaultscontrol.lua— runtime: init, base building, nuclear silo, artillery, remote API
- No build system, no tests, no linter, no CI — standard Factorio mod, zip & drop into mods folder
scripts/— runtime logic (event-driven, Factorio control stage)prototypes/— data stage definitions (entities, enemies, buildings, economy, planets, noise functions)city_jsons/— Python tool (city_blueprint.py) to decode/center/encode Factorio blueprint stringslocale/— translations (en, ru, uk, de, fr)migrations/— Factorio migration JSON for save compatbases.lua— hardcoded blueprint strings for town/city generation on planet Earth
- All entity names are prefixed with
enemy_erm_redarmy--(e.g.enemy_erm_redarmy--human-miner--3) - Units are created per-level via a loop calling
ErmRedArmy.make_<unit>(i)fori=1..max_levelindata.lua - Quality system is used for leveling (not old leveling system) — Factorio 2.0 quality spawning
- Boss mode only activates when both
space-ageandqualitymods are present DEBUG_MODEinglobal.luaistrue— boss idle attacks are 5 ticks instead of real intervals when on- All units have
can_open_gate = true - Flat resistances: 75% for units/turrets, 50% for spawners
- Scout units: land =
human-miner, aerial =plane-gunner
- Requires
factorio-world >= 2.1.3; only builds towns on surface namedearth - Town/city generation via blueprint strings in
bases.lua+ on_chunk_generated event space-agerequired for Earth as a space-travel destination (space-connection, planet-discovery tech, psi-radar)- Tuned default factorio-world settings in
settings-updates.lua: map-gen-scale=10, safe-zone-size=12 - Earth is ignored for interplanetary attacks and indestructible rail entities
- Organs (
enemy_erm_redarmy--organ) drop from Lab spawners (tiers 2-5); furnace/assembling-machine have 33% drop probability - Recipes convert organs → biter eggs, nutrients, military items, promethium; organs spoil → spoilage
- Boss building:
boss_rocket_silo(spawned viaboss_custom_spawnremote API) - Assisted spawner:
boss_lab - Attack data registered as
mod-datain data stage, consumed at runtime byenemyracemanager - Five attack phases: Defense, Ultimate, Special, Assist, Heavy, Basic
- Boss tiers: 5 (matching
GlobalConfig.BOSS_MAX_TIERS)
Exposed as remote.add_interface("erm_redarmy", ...):
register_new_enemy_race()— returnsMOD_NAMEmilestones_preset_addons()— milestone kill trackingprint_global()— dumpsstorageto file for debugrefresh_custom_attack_cache()— reloads custom attack group settingsinterplanetary_attack_ignore_planets()/register_ignore_planet_for_indestructible_entity()— return{'earth'}advanced_target_priorities_register_section_data()— targeting priority configboss_custom_spawn(radar, is_test)— converts nearest level-5 rocket silo to boss
- 3 tiers of units, turrets, command centers, support structures
- Custom attacks: dropship (
emrmy-dsh), engineer builder (emrmy-gin), guerrilla (emrmy-grl) - Featured squad groups for ground and flying units
- Emotion/behavior system via
enemyracemanagerframework
Reads building.txt, writes decoded+centered blueprint to result.json and re-encoded string to result.txt.
- No npm/pip/package manager needed
- Mod zip filename pattern:
erm_redarmy_<version>.zip .gitignoreexcludes.png,.ogg,sounds/,graphics/,*.txt,*.json, and binary artifactsLICENSEis GPL v3