Community port of Realistic Electric Trains to Factorio 2.0 with Space Exploration compatibility. Electric trains powered by overhead line poles. Original mod by J_Aetherwing.
Mods introducing new content into the game.
Version: 0.6.0
Date: 2026-07-09
Major Features:
- Modules now actually work: speed, acceleration, efficiency and battery
modules apply their stats to the Modular Locomotive (Factorio 2.0 changed
the equipment grid API format; module counts always read zero before).
- Live module statistics panel: the equipment grid screen of a Modular
Locomotive shows battery capacity, acceleration, top speed and power draw,
updating instantly as modules are inserted or removed.
- Full support for diagonal and curved track: poles place, auto-connect and
power trains on diagonals and corners (position tables rebuilt from
measured 2.0 rail geometry, plus native rail walking for curve pieces).
- Structural power model: an overhead line only carries power when one of
its poles is connected by copper wire to a real electric pole. Substation
footprints can no longer power poles invisibly, disconnecting the grid
wire de-energises the whole line within a second, and unpowered poles show
an "unplugged" indicator.
- Even pole spacing toolbar toggle: while enabled, hand-placed poles closer
than the configured spacing (default 13 tiles) to a pole on the same side
of the track are skipped and refunded - drag along a track for perfectly
spaced, auto-connected poles.
- Rail power check: right-drag the Wire Connector to highlight rails -
green = powered, orange = wires connected but no power, red = no coverage
or disconnected. (Replaces the old Overhead Line Debugger item.)
- New commands: /ret_rewire_all repairs and reconnects every pole on the map
(run once when updating an existing save); /ret_debug_rails dumps rail
data for bug reports.
Balancing:
- Locomotive Mk1: 216 km/h, standard acceleration - slower than a burner
locomotive, the trade-off for never handling fuel.
- Locomotive Mk2: 302 km/h, 140% acceleration.
- Modular Locomotive: base 259 km/h, 120% acceleration - modules take it to
~415 km/h / 216% or turn it into an efficient low-drain hauler.
- Crafting descriptions now state each tier's actual performance.
Bugfixes:
- Placing a pole on elevated rails no longer leaves an unremovable entity;
poles refuse invalid positions and refund the item (thanks for the portal
report!).
- Plain overhead poles show their proper base plate in every orientation
(pole art moved off the signal sprite system entirely).
- Signal/chain pole graphics orient correctly on corners and diagonals, and
their lamps animate with the real signal state.
- Copper wire hover highlight sits at the pole top, where the wires attach.
- Many crash and bookkeeping fixes across wire connection, disconnection and
pole removal.
Changes:
- Optional dependencies on Space Exploration and Combat Mechanics Overhaul
guarantee correct prototype fix-up order.
Version: 0.5.12
Date: 2026-07-09
Bugfixes:
- Pole power is now decided structurally: an overhead wire network only
carries power when at least one of its poles has a copper wire to a real
(non-overhead) electric pole. This finally stops substation footprints
from powering poles invisibly, and disconnecting the grid wire now kills
the whole line within a second - regardless of what supply areas cover
the poles.
- Poles on unpowered networks now show an "unplugged" indicator above the
mast.
- Base plate nudged to sit centred under the mast foot (measured from the
sprites; straight and diagonal masts differ slightly).
Version: 0.5.11
Date: 2026-07-09
Changes:
- Pole graphics architecture reworked: the base plate is now drawn as a
layer under the mast on the pole's child entity, instead of through the
rail-signal structure sprite system. The plate renders identically in
every orientation with no dependency on the sprite variation data other
mods inject. The signal entity itself is fully invisible and purely
functional (rail snapping, signalling, attachment).
Version: 0.5.10
Date: 2026-07-09
Bugfixes:
- Corner auto-connect no longer stops after one pole: the 1.1-era "poles
must hug curves" policy rejected most 2.0 corner sequences (the source of
the "Curve requires closer poles" messages). It is now disabled by
default; purists can re-enable it with the new "Require poles close to
curves" map setting.
- Poles now lose their stored charge promptly when disconnected: the wire
connector drops it instantly, and any pole without copper connections is
discharged within a second.
- The anti-leech sweep now finds a pole's overhead wire by proximity when
the internal mapping is stale (poles from older versions near substations
no longer slip through), and interfaces with no overhead wire at all are
switched off entirely.
Version: 0.5.9
Date: 2026-07-09
Bugfixes:
- Corners now carry power end to end and the Wire Connector auto-connects
poles across them: the pole search walks curve pieces natively (via the
engine's rail-end API) wherever the position tables have no data, so
power marking, the highlight and auto-connect all treat corners like any
other track.
- Closed the loophole that let a substation footprint power a pole: the
network identity check now also rejects the case where the pole's wire
reports no electric network.
- Foreign-charged pole buffers are switched OFF (buffer size zero) instead
of being drained, so an unwired pole inside a substation footprint draws
nothing at all from the grid - no wasted power.
- Track power walks extended (4 -> 8 pieces) so long corner sequences
charge trains and highlight correctly.
Changes:
- Even pole spacing is now an explicit toolbar toggle (off by default,
unlocked with the locomotive research). While on, hand-placed poles too
close to a pole on the SAME side of the track are skipped and refunded -
opposite-side poles are always allowed. The old automatic drag detection
(which sometimes blocked deliberate placements) is gone.
Version: 0.5.8
Date: 2026-07-09
Bugfixes:
- Plain overhead pole base plate now renders (the sprite sheet layout was
being read as rotations it does not have; the plate is now a single
orientation-agnostic sprite).
- Poles inside foreign supply areas (e.g. substation footprints) no longer
hold or display charge: buffers filled by a foreign electric network are
drained once per second. Power still flows normally the moment the pole
network is wired to a grid.
- The rail power highlight now detects powered curve pieces (it walks the
track like the train charging check does).
- The Wire Connector no longer severs existing wires when connecting:
manual connections across curves survive a drag-connect. Shift+drag
still disconnects everything in the area.
Changes:
- Default even pole spacing reduced from 14 to 13 so drag-placed poles
always auto-connect (existing saves keep their configured value - check
Settings > Mod settings > Map).
- Module stats panel moved to the right side of the equipment grid screen.
Version: 0.5.7
Date: 2026-07-09
Bugfixes:
- Poles on diagonal track now auto-connect: the position tables have been
rebuilt from measured Factorio 2.0 diagonal geometry (rail directions,
pole offsets and traversal steps all changed since 1.1).
- Trains now charge on curved track: the power lookup walks a few rail
pieces along the train's track to bridge curve pieces that carry no
power marking of their own.
- Pole power interfaces no longer leech electricity from unrelated supply
areas (e.g. a nearby substation footprint): energy is only delivered to
trains when it arrives through the overhead wire network itself.
- Plain overhead poles show their proper base-plate sprite again (mapping
for the SE/CMO-injected sprite orientation data decoded from the debug
dump), anchoring the rail attachment wires.
- The module stats panel no longer floats over the train GUI; it is
anchored below the equipment grid screen only.
Changes:
- Rail power highlight reworked: green = receiving power through the
overhead network, orange = pole wires connected but no power arriving,
red = no coverage or pole wires not connected.
- Even-spacing pole skips during drag are now silent (item is refunded,
no message).
- Locomotive crafting descriptions now state the actual performance of
each tier.
Version: 0.5.6
Date: 2026-07-09
Bugfixes:
- Fixed poles not placing on diagonal or curved track: the rails a pole
belongs to are now captured from the placer at the moment of placement
(when the game reliably knows them) and remembered, instead of relying
solely on position tables that only describe straight track.
Balancing:
- Locomotive Mk1: top speed reduced to 216 km/h (below the 259 km/h vanilla
locomotive) and acceleration bonus removed -- the trade-off for never
needing fuel.
- Locomotive Mk2: now a clear upgrade -- 302 km/h and 140% acceleration.
- Modular Locomotive: base stats sit between the tiers (259 km/h, 120%
acceleration); modules take it up to ~415 km/h / 216% acceleration or
down to an efficient hauler.
Changes:
- Removed the automatic pole ghost placement while dragging rails (to be
readdressed later).
- New console command /ret_debug_rails: prints exact rail/pole positions,
directions and attachments around the player, for diagnosing placement
and orientation issues.
- Startup now logs the signal sprite data injected by SE/CMO to
factorio-current.log (groundwork for restoring the custom pole sprites
with correct orientations).
- Corrected the Wire Connector tooltip: the rail power check is
right-drag.
Version: 0.5.5
Date: 2026-07-09
Bugfixes:
- Reverted rail traversal to the proven 0.5.1 table-driven implementation:
the native-API rewrite broke Wire Connector connect/disconnect and train
charging. Auto-connect across the new 2.0 curved rail pieces returns to
the known-limitations list for now.
- Fixed plain overhead poles not placing on diagonal track: the plain pole
bases were missing the building-direction-8-way flag that the (working)
signal/chain bases already had.
- Reverted pole build previews to the vanilla signal structure - the RET
re-skin could show wrong orientations. In-world pole graphics are the
original mast sprites again.
- Wire Connector disconnect now repairs stale pole wiring data from older
mod versions instead of silently doing nothing, so wires no longer
survive a shift+drag.
Features:
- New console command /ret_rewire_all: repairs every overhead pole on the
map (fixes bookkeeping from older versions, respawns missing parts,
removes orphans, reconnects poles and rebuilds rail coverage). Run this
once on existing saves after updating.
- Rail highlight is now three-state: green = powered, orange = pole
coverage but no electricity, red = no pole coverage.
- Even pole spacing now only applies while drag-placing; single deliberate
pole placements are always allowed.
- Module stats panel is anchored below the locomotive GUI and also below
the equipment grid screen (no longer free-floating, stays visible while
inserting modules).
Changes:
- "Place pole ghosts along new rails" is now off by default.
Version: 0.5.4
Date: 2026-07-08
Features:
- Even pole spacing: hand-placed poles closer than the configured spacing
(default 14 tiles, "Even pole spacing" mod setting, 0 = off) are refused
and refunded, so holding the place key along a track gives evenly spaced
poles. Blueprints, ghost revives and robot builds are never affected.
- Rail planner integration: while dragging rails, plain overhead pole
ghosts are placed alongside at the even-spacing distance (per-player
setting "Place pole ghosts along new rails").
- Live module statistics panel: opening a Modular Locomotive now shows a
side panel with current module counts, battery capacity, acceleration,
top speed and power draw, updating immediately as modules are inserted
or removed. Replaces the old flying-text summary on GUI close.
Version: 0.5.3
Date: 2026-07-08
Bugfixes:
- Fixed overhead poles not placing on diagonal track. Factorio 2.0 uses 16-way
directions (diagonals are even values 2/6/10/14), which broke the old
odd/even diagonal detection everywhere it was used.
- Fixed the Wire Connector, pole auto-connect and rail powering doing nothing:
script-created pole bases are not always registered as attached signals, so
the native get_connected_rails() lookup came back empty. All pole/rail
lookups now fall back to the classic position tables.
- Fixed signal/chain pole bases showing a wrongly oriented sprite on diagonal
track: the custom base re-skin is shelved and the correctly-oriented vanilla
signal structure (with working lamp animation) is used instead.
- Fixed placement on elevated rails leaving behind an unremovable placer and a
non-functional pole (reported on the mod portal). Poles now refuse to place
without adjacent ground-level rails and refund the item.
Changes:
- Removed the Overhead Line Debugger tool. Its rail highlight now lives on the
Wire Connector: Ctrl+drag highlights powered (green) and unpowered (red) rails.
Version: 0.5.2
Date: 2026-07-07
Bugfixes:
- Fixed modules not applying stat changes. In Factorio 2.0
LuaEquipmentGrid.get_contents() returns an array of {name, count, quality}
records instead of a name -> count dictionary, so module counts always read 0.
- Fixed equipment change events never refreshing module stats
(on_player_placed_equipment carries "grid", not "entity"; the owning
locomotive is now resolved via grid.entity_owner).
- Fixed the modular locomotive stats overlay never displaying
(event.player_id -> event.player_index).
- Fixed a possible crash in the pole search when a pole's wire child entity
is missing.
Changes:
- Rail traversal rewritten on native 2.0 APIs (get_connected_rails and
LuaRailEnd). Pole auto-connect and the Wire Connector tool now work across
curved rails, half-diagonal rails and all other 2.0 rail pieces.
- New rail pieces (curved-rail-a/b, half-diagonal-rail) now trigger pole
updates when built or removed and are recognised by the Overhead Line
Debugger and rail highlights.
- Plain overhead poles no longer show the vanilla signal-box base graphic.
- Build previews for all pole types now show the pole mast instead of a
vanilla rail signal (when SE/CMO are present).
- Signal and chain overhead pole lights now animate with the actual signal
state using the RET pole-base sprites.
- Copper wire hover highlight moved up to the wire attachment point of poles.
- Added optional dependencies on Space Exploration and Combat Mechanics
Overhaul to guarantee prototype fix-up order.
Version: 0.5.1
Date: 2026-06-27
Fixes:
- Fixed crash in respawn_pole_children (pole.pos -> pole.position)
- Fixed Overhead Line Debugger not detecting rails in 2.0 (legacy type names)
- Fixed wire connector disconnect not clearing power_for_rail state
- Fixed wire connector sound effect names
- Fixed equipment change events to refresh module stats immediately on grid changes
- Added explicit require for modular_locomotive in on_tick.lua
Changes:
- Overhead Line Debugger rewritten using rendering.draw_circle for persistent
green/red highlights (5 second display). Green = powered, Red = unpowered.
- Efficiency Module rebalanced with rewarding stacking curve and speed tradeoff:
1 module: -16% power, -20% speed
2 modules: -29% power, -16% speed
3 modules: -41% power, -13% speed
4 modules: -50% power, -10% speed
- Wire Connector Tool now plays wire_connect_pole and wire_disconnect sounds
- Curved rail power: workaround noted - Signal/Chain poles can be manually
placed on some curved sections and wired via copper wire tool
Known Issues:
- Plain overhead pole shows signal base graphic (SE/CMO prototype injection issue)
- Ghost placement sprite shows as rail signal for all pole types
- Signal/chain pole lights do not animate based on signal state
- Module stat changes not yet fully confirmed in testing
- Wire Connector tool does not auto-connect poles on curved sections
Version: 0.5.0
Date: 2026-06-27
Major:
- Ported to Factorio 2.0 as Realistic_Electric_Trains_Continued_2SE by Ramasees
with AI assistance (Claude Sonnet 4.6)
- All prototype definitions updated for 2.0 API
- Wire connection system rewritten using LuaWireConnector API
- Locomotive sprite system rewritten for 2.0 pictures.rotated format
- Rail type handling updated for legacy-straight-rail / legacy-curved-rail
- Runtime storage table renamed from global to storage throughout
Features:
- Added Wire Connector Tool: shortcut bar selection tool that auto-connects overhead
poles in a dragged area. Shift+drag disconnects. Plays wire sounds. No crafting needed.
Unlocked with Electric Locomotives research.
- Partial workaround for curved rail power loss: Signal and Chain overhead poles
can be manually placed on some curved sections and wired via the copper wire tool
or Wire Connector shortcut tool. Full curved rail power propagation is under investigation.
Balance:
- Efficiency Module rebalanced with diminishing speed penalty when stacking:
1 module: -16% power, -20% speed
2 modules: -29% power, -16% speed
3 modules: -41% power, -13% speed
4 modules: -50% power, -10% speed
- Previous value (x0.5 power per module) was far too strong (4 modules = 94% reduction)
Locale:
- Added full English locale for all items, recipes, equipment and technologies
- All module descriptions now clearly state stat changes per module and when stacking
- Locomotive descriptions include top speed information
- Dummy fuel items now display as "Electric Power (Overhead Line)" in locomotive GUI
- Right-side train GUI now shows "Overhead Line Power" instead of unknown key error
- Added fuel-category-name and burner-usage-name locale entries
Fixes:
- Fixed game.item_prototypes -> prototypes.item (2.0 API change)
- Fixed game.entity_prototypes -> prototypes.entity (2.0 API change)
- Fixed max_energy_usage -> get_max_energy_usage() method (2.0 API change)
- Fixed burner_prototype -> burner_energy_source_prototype (2.0 API change)
- Fixed LuaWireConnector: neighbours/connect_neighbour/disconnect_neighbour removed in 2.0
- Fixed item icon sizes from 32x32 to 64x64
- Fixed collision mask format to {layers={}} structure
- Fixed recipe ingredient format to longhand {type, name, amount}
- Fixed research ingredient format to tuple {"name", amount}
- Fixed effectivity-module -> efficiency-module rename
- Fixed advanced-electronics-2 -> processing-unit rename
- Fixed selection-tool item to use select/alt_select tables
- Fixed electric-energy-interface prototype for 2.0 required fields
- Fixed rail-signal prototype for 2.0 required fields
- Fixed crash when placing poles on curved rail sections
- Fixed crash in respawn_pole_children (pole.pos -> pole.position)
- Fixed rail type detection in rail search (legacy prefix names)
- Fixed wire connector disconnect not clearing power_for_rail state
- Added equipment change events to refresh module stats when grid changes
Known Issues:
- Plain overhead pole shows signal base graphic (SE/CMO prototype injection issue)
- Ghost placement sprite shows as rail signal for all pole types
- Signal/chain pole lights do not animate based on signal state
- Module stat changes not yet fully confirmed in testing
Compatibility:
- Space Exploration 0.7.57: loads and runs correctly
- Combat Mechanics Overhaul 0.7.2: loads and runs correctly
Version: 0.4.5 Date: unknown - Last version compatible with Factorio 1.1 - Original release by J_Aetherwing - Base for the Realistic_Electric_Trains_Continued_2SE port