Realistic Electric Trains Continued (2.0 + SE)


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.

Content
4 hours ago
2.0
100
Transportation Trains Power

Changelog

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