Train Supply Manager (TSM)

Control train scheduling via a publish/subscribe event based system. Easy to use, and stress tested to gigabase level. Includes automated refueling. Distributed priorities for sourcing, and request priorities. Setup via simple to use GUIs and basic combinators.
9 hours ago
0.16 - 0.17


Version: 0.5.4
Date: 2019/15/09
    - Fatal error when removing requester station is fixed
    - If a requester station was removed leaving an orphaned requester that is also
      active, that requester would start calling trains to station " ".  This would
      happen even if a new requester station replaced the old.  This is fixed in two
      ways - first, a blank requester will now never call trains; second - the
      handling when there is a replacement requester station now works correctly.
    - The name of the station that the requester believes it belongs to is now the
      very last line of the gui detail for the requester.

Version: 0.5.3
Date: 2019/12/09
    - Corrected crash line 2111 of control
    - Corrected connecting railcars issue

Version: 0.5.2
Date: 2019/11/09
    - Corrected crash line 326 of control
    - Updated Korean language support

Version: 0.5.1
Date: 2019/11/09
    - Corrected crash line 311 of control-util
    - Fixed requester graphic (now shows R not P)

Version: 0.5.0
Date: 2019/10/09
    - Priorities are now defined by both the resource icon and the id icon
    - Wait conditions allow for item/fluid count to be used. This is based on whether the
      resource icon is an item or a fluid - virtual has no affect and will not generate a
      count wait condition.
    - Requesters can be updated directly via the GUI using the new "e" button (reselect
      via the "e" button to close)
    - Requesters can be hidden from the default Outstanding Requests view. In addition,
      when in the Outstanding Requests view, players can unhide all the hidden requesters
      by toggle.
    - Map ping requester now shows a minimap in the centre of the screen in addition to
      adding an icon to map view. You can close the minimap by clicking anywhere else on
      the screen.
    - The train counter (entity attached to the foot of the requester train station) now
      records the resource of each train inbound based on the resource icon on the priority.
      This is recorded as a positive number. The trains on the way signal continues to be
      generated as a total count.
    - You can now supply a negative resource signal direct to a Requester Train Stop to
      request a train of that resource. The source of the train will always be locked to the
      double icon priority for that resource (eg if you supply a negative 1 iron plate to the
      Requester train stop, then that is identical effect to activating a requester using
      priority scheme iron plate - iron plate).
    - Duplicate Requester Train Stops are now actively prevented from occurring. The mod will
      automatically rename the station by appending an "X" until a unique name is found.
    - The priority setup is now indexed by surface so all information, priorities etc are
      distinct and reusable on multi-surface worlds.
    - Performance of the mod has been improved up to 50% depending on the specifics of your
    - You can now copy the requestor priority information to other requesters.

Version: 0.4.10
Date: 2019/04/05
    - Fixes crash on attempt to rotate requester train stop

Version: 0.4.9
Date: 2019/04/05
    - Copying a requester station with active requester (including
      copying station name) then changing resource and renaming
      the new station was leading to deliveries of the wrong
      resource to the new station.  This has been fixed now.

Version: 0.4.8
Date: 2019/19/04
  Minor features:
    - Added Russian languauge support courtesy of Dodther
    - Korean language updated
    - Fixes crash on deleting priority with no stations setup
    - Fixes crash on deleting priorities when the station edit GUI is open

Version: 0.4.7
Date: 2019/14/04
    - Fixes crash on using robots to build requester stations

Version: 0.4.5
Date: 2019/06/04
  Minor features:
    - Added command "/fix_raw_wood" - this will convert "raw-wood" in priorities and requesters to
      "wood" for 0.16 to 0.17 compatibility
    - added warning message if requester is placed more than 2 tiles away from a requester train
      station.  Note, the warning is only produced when manually placed, not when placed by robot

Version: 0.4.4
Date: 2019/09/03
    - Fix so that using the new item tags in the fuel station name won't
      cause random stations to be removed from a trains schedule every
      time it leaves a stop.
    - Updated changelog.txt to be the YAML format that the Factorio 0.17
      mod manager wants to see.
    - Changed style to use minimal_width to fix visibility of "p" on the ping
      map button in Korean version
    - updated Korean translation

Version: 0.4.3
Date: 2019/09/03
  Minor features:
    - Added thumbnail
    - added technology description to locale file
    - fixed width of buttons used in guis

Version: 0.4.2
Date: 2019/09/03
    - Fixed initial supplier settings not saved.  Now when you save a
      new priority default settings are applied, then you need to go
      back in edit mode to change the wait condition settings, if

Version: 0.4.1
Date: 2019/02/03
    - Fixed LuaStyle doesn't contain key visible issue

Version: 0.4.0
Date: 2019/02/03
  Major Features:
    - Version 0,17 compatibility

Version: 0.3.30
Date: 2019/10/02
    - in some circumstances renaming a station with active requesters
      will have the requesters generate requests on the old station name

Version: 0.3.29
Date: 2019/29/01
    - Fixed invalid entity in clear_train_config issue (Tantabobo)

Version: 0.3.28
Date: 2019/27/01
    - Adds check in on_gui_state_chenged_event to restrict action to TSM
      inspired events only (re Train Scaling mod compatibility)

Version: 0.3.27
Date: 2019/25/01
    - added command "/fix_ps_stations" to remove nil stations from any
      priority stationlist should this occur
    - updated Korean translation

Version: 0.3.26
Date: 2019/17/01
    - another possible cause of multi-player desync caused by
      GUI interactions fix
    - updated Korean translation and cfg file

Version: 0.3.25
Date: 2019/15/01
    - Restores the update and save buttons to the priority schema

Version: 0.3.24
Date: 2019/15/01
    - another possible cause of multi-player desync caused by GUI
      interactions fix
    - on_load explicitly only loads conditional event handlers
    - Fuelstop combinator changes - now it clears on train departure and
      only provides 2 signals - number of locomoptives and number of
    - TSM menu graphics change - if already open from previous version
      you may need to close and reopen (also slight change to order)
    - Outstanding requests now also provides time outstanding
      information in minutes

Version: 0.3.23
Date: 2019/13/01
    - Fixes another possible cause of multi-player desync caused by GUI

Version: 0.3.22
Date: 2019/11/01
    - fixes crashes caused by invalid requester train stops.  Invalid
      entity is removed from the database
    - map ping on invalid requesters will now delete the invalid item
      from the database
    - Blueprinting now restores the wire connection from the train on
      the way signal to the requester
    - Blueprinted requester train stops now also more likely to update
      the requester to changed train stop name correctly
  Minor features:
    - improves sorting on the station list drop down selection

Version: 0.3.21
Date: 2019/06/01
    - improves GUI behaviour under multi-player where there are many
      players potentially updating the priority schema's at once
    - updates the Korean translation

Version: 0.3.20
Date: 2018/28/12
    - corrects a potential data integrity issue arising in function
    - corrects behaviour when a train is available in the supply station
      and a calling requester activates

Version: 0.3.19
Date: 2018/28/12
    - adds the order property back into the new virtual signals (for
      PickerTweaks compatibility)
    - adds more train validation to "check_train_in_Sub_station"
  Minor features:
    - adds item group name for TSM signals

Version: 0.3.18
Date: 2018/26/12
    - Adds new empty wagon icons for each vanilla raw product and oil
      products (icons by Jelgadis)

Version: 0.3.17
Date: 2018/22/12
    - Fixes crash on gui click
    - fixes error message when opening armor equipment screen
    - Korean language corrections

Version: 0.3.16
Date: 2018/22/12
  Major features:
    - Adds Korean language support

Version: 0.3.15
Date: 2018/22/12
    - Changed the recipe cost to remove advanced circuits.
      You now only need the electronic circuits (to improve
    - Added all the new GUI titles into the locale file
    - The fuelstop name is now configurable via mod settings in the
      startup settings area
    - Fixed GUI issue with auto research

Version: 0.3.14
Date: 2018/21/12
    - Fixed a rare error warning message - "attempt to index field
      'sub_index' (a nil value)"
    - validation now enforces that the priority schema "ID" field is
    - you can now edit a priority schema to access the wait condition
      parser.  This provides a GUI interface to change the default wait
      conditions given to any train assigned a schedule by this
      priority.  For new priority schemas, you need to save the initial
      station selection first then go back in under edit mode.
    - you can now assign a process priority to the requester entity.
      This will affect the order in which requesters are processed when
      there are outstanding requests.  A priority of "1" is highest and
      the default.  Positive numbers only are accepted, and the higher
      the positive number the lower the process priority.
    - refer new demo example (replacing old multi-station) for the new
      functionality at work

Version: 0.3.13
Date: 2018/17/12
    - Adds a train configuration combinator for use at FuelStopx only.
      The combinator will enable differentiation between rolling stock
      configurations so that for example you can correctly refuel 1-1-1s
      and 1-2-1 trains on the same network.
    - Add new startup mod setting to switrch admin only on or off for
      editing the priority schemas
    - Addresses a rare crash on train count signal lost
    - Addresses the station dropdown in the edit list sometimes shows
    - Addresses leftover debug messages

Version: 0.3.12
Date: 2018/15/12
    - Addresses crash caused by removing all of a train's schedule as
      the train pulls into a train station
    - Addresses using blueprints to place requester's results in
      inoperable requester
    - Addresses when requester station is unreachable all available
      trains from the corresponding depot are deployed to that stop
    - Addresses an issue that could deactivate one train on the way
      signal (across entire network) when removing requester train stops

Version: 0.3.11
Date: 2018/13/12
    - the ability to use more than one supply station in a schedule. As
      long as the station "wait until" condition is set as "cicuit" then
      the supply station will remain in the schedule.  This allows for
      from 1 ... n supply stations in the schedule where n is
      arbitrarily large (no limit).

Version: 0.3.10
Date: 2018/12/12
    - Addresses "trains stopped working" - in addition if you have this
      issue you need to run command "/fix_requests" to repair the

Version: 0.3.9
Date: 2018/12/12
    - Addresses error from on_configuration_changed (refer hanes)

Version: 0.3.8
Date: 2018/10/12
    - Fix to defend against possible desync issues in large MP maps.
      On_configuration_changed changes to global data is now on a delta
      basis rather than table rebuild basis.
    - Also the map ping now places the icon on the map at the requesters
      location, moved to the right 5 tiles so it is not directly over
      the train station.

Version: 0.3.7
Date: 2018/07/12
    - Added delete priority functionality (admin only), validated
      against requesters and outstanding requests - the prirority must
      not be used in either. To help you find these requesters or
      outstanding requests, there is now a map ping feature available on
      the 'RQ' tab and 'R' tab respectively

Version: 0.3.6
Date: 2018/07/12
    - Removes debug code that could cause lua errors under some

Version: 0.3.5
Date: 2018/07/12
    - Fixes an issue in pre-existing games that added the mod after the
      event.  Existing trains may not be recognised properly by the mod.
      The train table is now rebuilt on configuration changed.

Version: 0.3.4
Date: 2018/07/12
    - An issue could previously arise where if you were using duplicate
      requester train stops and then deleting one, the requesters may
      retain their original default backer name rather than be updated
      correctly with the new name.  You can verify if this is the case
      by scanning your 'R' screen list.  This update will stop this from
      occurring. Also, the command "/fix_requests" will correct any
      historic occurrence of this issue - run only once.

Version: 0.3.3
Date: 2018/06/12
    - Fixed adding supplier stations vis BP with station name returns lua rror

Version: 0.3.2
Date: 2018/04/12
    - Fixed quirky behaviour when train already at Supplier stop when
      requster initially created (thinkong)

Version: 0.3.1
Date: 2018/03/12
    - Redacted