mirror of
https://github.com/Xevion/project-cybersyn.git
synced 2025-12-06 13:16:04 -06:00
---------------------------------------------------------------------------------------------------
Version: 1.2.2
Date: 2022-12-29
Features:
- Added a station combinator setting to enable or disable the inactivity condition in a train's orders, disabled by default (but not in <=1.2.1 worlds)
- Added a depot combinator setting to enable depot bypass, enabled by default
- Added a depot combinator setting to force trains to park at the same depot, enabled by default
- Added network "each" for depots
- Added a map setting to modify the default locked slots per cargo wagon value
- Added a map setting to modify the default priority value
- Added a map setting to allow trains with cargo at depots, disabled by default
Changes:
- Inverted the sign of combinator outputs, a map setting has been added to maintain backwards compatibility with <=1.2.1 worlds
- Overhauled the wagon control combinator algorithm to spread items out between cargo wagons
- Trains with cargo held in the depot now check if they have been emptied and reset when they have
- Cargo capacity is now prioritized over distance when choosing trains
- Increased the default request threshold to 2000
- Improved English localization
Bugfixes:
- Fixed a bug where trains with cargo sometimes weren't getting held at depots
- Fixed a crash caused by changing a station combinator to the "each" network during a bad tick
- Fixed a crash when changing a refueler away from network each
- Multiple rare bugs and crashes relating to wagon control combinators are fixed
- Fixed a bug with refueler direct orders not being applied after moving through a space elevator
- Fixed a bug where filtered slots sometimes weren't being removed
---------------------------------------------------------------------------------------------------
52 lines
742 B
Lua
52 lines
742 B
Lua
--By Mami
|
|
---@param v string
|
|
---@param h string?
|
|
function once(v, h)
|
|
return not h and v or nil--[[@as string|nil]]
|
|
end
|
|
---@param t any[]
|
|
---@return any
|
|
function rnext_consume(t)
|
|
local len = #t
|
|
if len > 1 then
|
|
local i = math.random(1, len)
|
|
local v = t[i]
|
|
t[i] = t[len]
|
|
t[len] = nil
|
|
return v
|
|
else
|
|
local v = t[1]
|
|
t[1] = nil
|
|
return v
|
|
end
|
|
end
|
|
|
|
function table_compare(t0, t1)
|
|
if #t0 ~= #t1 then
|
|
return false
|
|
end
|
|
for i = 0, #t0 do
|
|
if t0[i] ~= t1[i] then
|
|
return false
|
|
end
|
|
end
|
|
return true
|
|
end
|
|
|
|
---@param a any[]
|
|
---@param i uint
|
|
function irnext(a, i)
|
|
i = i + 1
|
|
if i <= #a then
|
|
local r = a[#a - i + 1]
|
|
return i, r
|
|
else
|
|
return nil, nil
|
|
end
|
|
end
|
|
|
|
---@param a any[]
|
|
function irpairs(a)
|
|
return irnext, a, 0
|
|
end
|