Первый фикс

Пачки некоторых позиций увеличены
This commit is contained in:
2024-03-01 20:53:32 +03:00
commit 7c9c708c92
23653 changed files with 767936 additions and 0 deletions

View File

@@ -0,0 +1,28 @@
[
"0.18.20",
"0.18.27",
"0.18.29",
"0.18.38",
"0.18.42",
"0.18.45",
"0.18.48",
"0.18.49",
"0.18.51",
"1.0.6",
"1.1.5",
"1.1.6",
"1.1.8",
"1.1.14",
"1.1.19",
"1.1.21",
"1.1.25",
"1.1.26",
"1.1.27",
"1.1.42",
"1.1.43",
"1.1.59",
"1.1.61",
"1.1.65",
"1.1.66",
"1.1.67"
]

View File

@@ -0,0 +1,17 @@
---@diagnostic disable
local migration = {}
function migration.global()
end
function migration.player_table(player_table)
end
function migration.subfactory(subfactory)
end
function migration.packed_subfactory(packed_subfactory)
end
return migration

View File

@@ -0,0 +1,18 @@
---@diagnostic disable
local migration = {}
function migration.subfactory(subfactory)
local types = {"Ingredient", "Product", "Byproduct"}
for _, type in pairs(types) do
for _, item in pairs(Subfactory.get_in_order(subfactory, type)) do
local req_amount = {
defined_by = "amount",
amount = item.required_amount
}
item.required_amount = req_amount
end
end
end
return migration

View File

@@ -0,0 +1,30 @@
---@diagnostic disable
local migration = {}
function migration.player_table(player_table)
player_table.preferences.default_prototypes = {
belts = {structure_type="simple", prototype=player_table.preferences.preferred_belt},
beacons = {structure_type="simple", prototype=player_table.preferences.preferred_beacon},
machines = {structure_type="complex", prototypes=player_table.preferences.default_machines.categories}
}
player_table.preferences.preferred_belt = nil
player_table.preferences.preferred_beacon = nil
player_table.preferences.preferred_fuel = nil
player_table.preferences.default_machines = nil
end
function migration.subfactory(subfactory)
for _, floor in pairs(Subfactory.get_all_floors(subfactory)) do
for _, line in pairs(Floor.get_in_order(floor, "Line")) do
local fuel = Line.get_by_gui_position(line, "Fuel", 1)
if fuel ~= nil and fuel.valid and fuel.proto ~= nil then
fuel.category = fuel.proto.fuel_category
line.fuel = fuel
end
line.Fuel = nil
end
end
end
return migration

View File

@@ -0,0 +1,16 @@
---@diagnostic disable
local migration = {}
function migration.subfactory(subfactory, player)
if util.globals.settings(player).belts_or_lanes == "lanes" then
for _, product in pairs(Subfactory.get_in_order(subfactory, "Product")) do
if product.required_amount.defined_by == "belts" then
product.required_amount.defined_by = "lanes"
product.required_amount.amount = product.required_amount.amount * 2
end
end
end
end
return migration

View File

@@ -0,0 +1,60 @@
---@diagnostic disable
local migration = {}
function migration.player_table(player_table)
player_table.factory.valid = nil
player_table.archive.valid = nil
end
function migration.subfactory(subfactory)
if not subfactory.valid then
Factory.remove(subfactory.parent, subfactory)
return "removed"
end
for _, item in pairs(Subfactory.get_in_order(subfactory, "Ingredient")) do item.type = nil end
for _, item in pairs(Subfactory.get_in_order(subfactory, "Product")) do item.type = nil end
for _, item in pairs(Subfactory.get_in_order(subfactory, "Byproduct")) do item.type = nil end
for _, floor in pairs(Subfactory.get_all_floors(subfactory)) do
for _, line in pairs(Floor.get_in_order(floor, "Line")) do
line.machine.parent = line
local module_count = 0
for _, module in pairs(Line.get_in_order(line, "Module")) do
module_count = module_count + module.amount
module.category = nil
module.parent = line.machine
end
line.machine.category = nil
line.machine.Module = line.Module
line.Module = nil
line.machine.module_count = module_count
line.machine.total_effects = {consumption = 0, speed = 0, productivity = 0, pollution = 0}
if line.beacon then
line.beacon.module.category = nil
end
if line.fuel then
line.fuel.category = nil
line.fuel.parent = line.machine
line.machine.fuel = line.fuel
line.fuel = nil
end
if line.subfloor then
line.machine = nil
line.beacon = nil
line.priority_product_proto = nil
line.production_ratio = nil
line.uncapped_production_ratio = nil
end
end
end
end
return migration

View File

@@ -0,0 +1,42 @@
---@diagnostic disable
local migration = {}
local function migrate_collection(collection, object_class)
collection.class = collection.type
collection.type = nil
collection.object_class = object_class
end
function migration.player_table(player_table)
migrate_collection(player_table.factory.Subfactory, "Subfactory")
migrate_collection(player_table.archive.Subfactory, "Subfactory")
end
function migration.subfactory(subfactory)
migrate_collection(subfactory.Product, "Item")
migrate_collection(subfactory.Byproduct, "Item")
migrate_collection(subfactory.Ingredient, "Item")
migrate_collection(subfactory.Floor, "Floor")
for _, floor in pairs(Subfactory.get_all_floors(subfactory)) do
migrate_collection(floor.Line, "Line")
for _, line in pairs(Floor.get_in_order(floor, "Line")) do
if line.subfloor then
line.recipe = nil
line.percentage = nil
line.production_ratio = nil
line.uncapped_production_ratio = nil
else
migrate_collection(line.machine.Module, "Module")
end
migrate_collection(line.Product, "Item")
migrate_collection(line.Byproduct, "Item")
migrate_collection(line.Ingredient, "Item")
end
end
end
return migration

View File

@@ -0,0 +1,21 @@
---@diagnostic disable
local migration = {}
function migration.player_table(player_table)
player_table.ui_state.current_activity = nil
end
function migration.subfactory(subfactory)
for _, floor in pairs(Subfactory.get_all_floors(subfactory)) do
for _, line in pairs(Floor.get_in_order(floor, "Line")) do
if line.machine and line.machine.fuel then line.machine.fuel.satisfied_amount = 0 end
line.Product = Collection.init()
line.Byproduct = Collection.init()
line.Ingredient = Collection.init()
end
end
end
return migration

View File

@@ -0,0 +1,17 @@
---@diagnostic disable
local migration = {}
function migration.subfactory(subfactory)
subfactory.scopes = {}
for _, floor in pairs(Subfactory.get_all_floors(subfactory)) do
for _, line in pairs(Floor.get_in_order(floor, "Line")) do
line.Product = Collection.init()
line.Byproduct = Collection.init()
line.Ingredient = Collection.init()
end
end
end
return migration

View File

@@ -0,0 +1,22 @@
---@diagnostic disable
local migration = {}
function migration.player_table(player_table)
local preferences = player_table.preferences
local mb_defaults = preferences.mb_defaults
if mb_defaults then
mb_defaults.machine = mb_defaults.module
mb_defaults.module = nil
end
local optional_columns = preferences.optional_production_columns
if optional_columns then
preferences.pollution_column = optional_columns.pollution_column
preferences.line_comment_column = optional_columns.line_comments
preferences.optional_production_columns = nil
end
end
return migration

View File

@@ -0,0 +1,17 @@
---@diagnostic disable
local migration = {}
function migration.subfactory(subfactory)
if subfactory.icon and subfactory.icon.type == "virtual-signal" then
subfactory.icon.type = "virtual"
end
end
function migration.packed_subfactory(packed_subfactory)
if packed_subfactory.icon and packed_subfactory.icon.type == "virtual-signal" then
packed_subfactory.icon.type = "virtual"
end
end
return migration

View File

@@ -0,0 +1,17 @@
---@diagnostic disable
local migration = {} -- same migration as 0.18.51, not sure why that one didn't take
function migration.subfactory(subfactory)
if subfactory.icon and subfactory.icon.type == "virtual-signal" then
subfactory.icon.type = "virtual"
end
end
function migration.packed_subfactory(packed_subfactory)
if packed_subfactory.icon and packed_subfactory.icon.type == "virtual-signal" then
packed_subfactory.icon.type = "virtual"
end
end
return migration

View File

@@ -0,0 +1,34 @@
---@diagnostic disable
local migration = {}
function migration.subfactory(subfactory)
for _, floor in pairs(Subfactory.get_all_floors(subfactory)) do
for _, line in pairs(Floor.get_in_order(floor, "Line")) do
if not line.subfloor then
line.done = false
line.machine.force_limit = line.machine.hard_limit
line.machine.hard_limit = nil
end
end
end
end
function migration.packed_subfactory(packed_subfactory)
local function update_lines(floor)
for _, packed_line in ipairs(floor.Line.objects) do
if packed_line.subfloor then
update_lines(packed_line.subfloor)
else
packed_line.done = false
packed_line.machine.force_limit = packed_line.machine.hard_limit
packed_line.machine.hard_limit = nil
end
end
end
update_lines(packed_subfactory.top_floor)
end
return migration

View File

@@ -0,0 +1,9 @@
---@diagnostic disable
local migration = {}
function migration.global()
global.nth_tick_events = {}
end
return migration

View File

@@ -0,0 +1,10 @@
---@diagnostic disable
local migration = {}
function migration.player_table(player_table)
local Subfactory = player_table.archive.Subfactory
Subfactory.count = table_size(Subfactory.datasets)
end
return migration

View File

@@ -0,0 +1,13 @@
---@diagnostic disable
local migration = {}
function migration.global()
for _, event_data in pairs(global.nth_tick_events) do
if event_data.handler_name == "delete_subfactory" then
event_data.handler_name = "delete_subfactory_for_good"
end
end
end
return migration

View File

@@ -0,0 +1,15 @@
---@diagnostic disable
local migration = {}
function migration.subfactory(subfactory)
for _, floor in pairs(Subfactory.get_all_floors(subfactory)) do
for _, line in pairs(Floor.get_in_order(floor, "Line")) do
if line.machine and line.machine.fuel and line.machine.fuel.proto == nil then
Floor.remove(floor, line) -- needs to be fully removed to fix the issue
end
end
end
end
return migration

View File

@@ -0,0 +1,39 @@
---@diagnostic disable
local migration = {}
function migration.subfactory(subfactory)
for _, floor in pairs(Subfactory.get_all_floors(subfactory)) do
for _, line in pairs(Floor.get_all(floor, "Line")) do
local beacon = line.beacon
if beacon and beacon.module then
beacon.Module = Collection.init()
beacon.module_count = 0
beacon.module.parent = beacon
Collection.add(beacon.Module, beacon.module)
beacon.module_count = beacon.module_count + beacon.module.amount
beacon.module = nil
end
end
end
end
function migration.packed_subfactory(packed_subfactory)
local function update_lines(floor)
for _, packed_line in ipairs(floor.Line.objects) do
if packed_line.subfloor then
update_lines(packed_line.subfloor)
elseif packed_line.beacon and packed_line.beacon.module then
local beacon = packed_line.beacon
local module = Module.unpack(beacon.module)
local modules = Collection.init()
Collection.add(modules, module)
beacon.Module = Collection.pack(modules, Module)
beacon.module_count = module.amount
end
end
end
update_lines(packed_subfactory.top_floor)
end
return migration

View File

@@ -0,0 +1,72 @@
---@diagnostic disable
local migration = {}
local function migrate_modules(object)
object.module_count = nil
if object.proto.simplified then object.proto = {module_limit = 0} end
local module_set = ModuleSet.init(object)
for _, module in pairs(object.Module.datasets) do
ModuleSet.add(module_set, module.proto, module.amount)
end
object.Module = nil
object.module_set = module_set
end
local function migrate_packed_modules(packed_object)
local module_set = {
modules = packed_object.Module,
module_count = packed_object.module_count,
empty_slots = 0, -- updated later
class = "ModuleSet"
}
packed_object.Module = nil
packed_object.module_set = module_set
end
function migration.global()
global.alt_actions = nil
end
function migration.player_table(player_table)
player_table.clipboard = nil
player_table.preferences.tutorial_mode = true
end
function migration.subfactory(subfactory)
if subfactory.icon then
local icon_path = subfactory.icon.type .. "/" .. subfactory.icon.name
subfactory.name = "[img=" .. icon_path .. "] " .. subfactory.name
subfactory.icon = nil
end
for _, floor in pairs(Subfactory.get_all_floors(subfactory)) do
for _, line in pairs(Floor.get_all(floor, "Line")) do
line.effects_tooltip = ""
if not line.subfloor then migrate_modules(line.machine) end
if line.beacon then migrate_modules(line.beacon) end
end
end
end
function migration.packed_subfactory(packed_subfactory)
if packed_subfactory.icon then
local icon_path = packed_subfactory.icon.type .. "/" .. packed_subfactory.icon.name
packed_subfactory.name = "[img=" .. icon_path .. "] " .. packed_subfactory.name
packed_subfactory.icon = nil
end
local function update_lines(floor)
for _, packed_line in ipairs(floor.Line.objects) do
if packed_line.subfloor then
update_lines(packed_line.subfloor)
else
migrate_packed_modules(packed_line.machine)
if packed_line.beacon then migrate_packed_modules(packed_line.beacon) end
end
end
end
update_lines(packed_subfactory.top_floor)
end
return migration

View File

@@ -0,0 +1,19 @@
---@diagnostic disable
local migration = {}
function migration.player_table(player_table)
for _, factory_name in pairs({"factory", "archive"}) do
local factory = player_table[factory_name]
local subfactories = Factory.get_in_order(factory, "Subfactory")
if table_size(subfactories) ~= factory.Subfactory.count then
local gui_position = 1
for _, subfactory in pairs(factory.Subfactory.datasets) do
subfactory.gui_position = gui_position
gui_position = gui_position + 1
end
end
end
end
return migration

View File

@@ -0,0 +1,45 @@
---@diagnostic disable
local migration = {}
function migration.player_table(player_table)
player_table.ui_state.view_states = player_table.ui_state.view_state
player_table.preferences.toggle_column = false
end
function migration.subfactory(subfactory)
for _, floor in pairs(Subfactory.get_all_floors(subfactory)) do
if floor.level > 1 then floor.defining_line = floor.Line.datasets[1] end
for _, line in pairs(Floor.get_in_order(floor, "Line")) do
if not line.subfloor then
line.machine.effects_tooltip = ""
for _, module in pairs(line.machine.Module.datasets) do
module.effects_tooltip = ""
end
line.active = true
end
if line.beacon then
line.beacon.effects_tooltip = ""
line.beacon.module.effects_tooltip = "" -- not strictly necessary yet
end
end
end
end
function migration.packed_subfactory(packed_subfactory)
local function update_lines(floor)
for _, packed_line in ipairs(floor.Line.objects) do
if packed_line.subfloor then
update_lines(packed_line.subfloor)
else
packed_line.active = true
end
end
end
update_lines(packed_subfactory.top_floor)
end
return migration

View File

@@ -0,0 +1,18 @@
---@diagnostic disable
local migration = {}
function migration.packed_subfactory(packed_subfactory)
local function update_lines(floor)
for _, packed_line in ipairs(floor.Line.objects) do
if packed_line.subfloor then
update_lines(packed_line.subfloor)
else
packed_line.Product = Collection.pack(Collection.init(), Item)
end
end
end
update_lines(packed_subfactory.top_floor)
end
return migration

View File

@@ -0,0 +1,13 @@
---@diagnostic disable
local migration = {}
function migration.global()
global.tutorial_subfactory = nil
end
function migration.subfactory(subfactory)
subfactory.linearly_dependant = false
end
return migration

View File

@@ -0,0 +1,13 @@
---@diagnostic disable
local migration = {}
function migration.global()
for _, event_data in pairs(global.nth_tick_events) do
if event_data.handler_name == "adjust_interface_dimensions" then
event_data.handler_name = "shrinkwrap_interface"
end
end
end
return migration

View File

@@ -0,0 +1,13 @@
---@diagnostic disable
local migration = {}
function migration.subfactory(subfactory)
subfactory.blueprints = {}
end
function migration.packed_subfactory(packed_subfactory)
packed_subfactory.blueprints = {}
end
return migration

View File

@@ -0,0 +1,16 @@
---@diagnostic disable
local migration = {}
function migration.player_table(player_table)
local Subfactory = player_table.archive.Subfactory
Subfactory.count = table_size(Subfactory.datasets)
local gui_position = 1
for _, subfactory in pairs(Subfactory.datasets) do
subfactory.gui_position = gui_position
gui_position = gui_position + 1
end
end
return migration

View File

@@ -0,0 +1,181 @@
---@diagnostic disable
local migration = {}
function migration.global()
global.tutorial_subfactory_validity = nil
local data_types = {"machines", "recipes", "items", "fuels", "belts", "wagons", "modules", "beacons"}
for _, data_type in pairs(data_types) do global["all_" .. data_type] = nil end
end
function migration.player_table(player_table)
local default_prototypes = player_table.preferences.default_prototypes
default_prototypes["machines"] = default_prototypes["machines"].prototypes
default_prototypes["fuels"] = default_prototypes["fuels"].prototypes
default_prototypes["belts"] = default_prototypes["belts"].prototype
default_prototypes["wagons"] = default_prototypes["wagons"].prototypes
default_prototypes["beacons"] = default_prototypes["beacons"].prototype
end
function migration.subfactory(subfactory)
for _, product in pairs(Subfactory.get_all(subfactory, "Product")) do
if product.proto.simplified then
product.proto = {name=product.proto.name, category=product.proto.type, data_type="items", simplified=true}
else
product.proto.data_type = "items"
end
local belt_proto = product.required_amount.belt_proto
if belt_proto then
if belt_proto.simplified then
product.required_amount.belt_proto = {name=belt_proto.name, data_type="belts", simplified=true}
else
product.required_amount.belt_proto.data_type = "belts"
end
end
end
for index, _ in pairs(subfactory.matrix_free_items or {}) do
local item_proto = subfactory.matrix_free_items[index]
if item_proto.simplified then
subfactory.matrix_free_items[index] =
{name=item_proto.name, category=item_proto.type, data_type="items", simplified=true}
else
item_proto.data_type = "items"
end
end
for _, floor in pairs(Subfactory.get_all_floors(subfactory)) do
for _, line in pairs(Floor.get_all(floor, "Line")) do
if line.subfloor then goto skip end
local recipe_proto = line.recipe.proto
if recipe_proto.simplified then
line.recipe.proto = {name=recipe_proto.name, data_type="recipes", simplified=true}
else
recipe_proto.data_type = "recipes"
end
local machine_proto = line.machine.proto
if machine_proto.simplified then
line.machine.proto =
{name=machine_proto.name, category=machine_proto.category, data_type="machines", simplified=true}
else
machine_proto.data_type = "machines"
end
local machine_module_set = line.machine.module_set
for _, module in pairs(machine_module_set.modules.datasets) do
if module.proto.simplified then
module.proto = {name=module.proto.name, category=module.proto.category,
data_type="modules", simplified=true}
else
module.proto.data_type = "modules"
end
end
if line.machine.fuel then
local fuel_proto = line.machine.fuel.proto
if fuel_proto.simplified then
line.machine.fuel.proto =
{name=fuel_proto.name, category=fuel_proto.category, data_type="fuels", simplified=true}
else
fuel_proto.data_type = "fuels"
end
end
if line.beacon then
local beacon_proto = line.beacon.proto
if beacon_proto.simplified then
line.beacon.proto = {name=beacon_proto.name, data_type="beacons", simplified=true}
else
beacon_proto.data_type = "beacons"
end
local beacon_module_set = line.beacon.module_set
for _, module in pairs(beacon_module_set.modules.datasets) do
if module.proto.simplified then
module.proto = {name=module.proto.name, category=module.proto.category,
data_type="modules", simplified=true}
else
module.proto.data_type = "modules"
end
end
end
if line.priority_product_proto then
local priority_product_proto = line.priority_product_proto
if priority_product_proto.simplified then
line.priority_product_proto = {name=priority_product_proto.name,
category=priority_product_proto.type, data_type="items", simplified=true}
else
priority_product_proto.data_type = "items"
end
end
for _, product in pairs(line.Product.datasets) do
if product.proto.simplified then
product.proto =
{name=product.proto.name, category=product.proto.type, data_type="items", simplified=true}
else
product.proto.data_type = "items"
end
end
::skip::
end
end
end
function migration.packed_subfactory(packed_subfactory)
for _, product in pairs(packed_subfactory.Product.objects) do
product.proto = {name=product.proto.name, category=product.proto.type, data_type="items", simplified=true}
if product.required_amount.belt_proto then
local belt_proto = product.required_amount.belt_proto
product.required_amount.belt_proto = {name=belt_proto.name, data_type="belts", simplified=true}
end
end
if packed_subfactory.matrix_free_items then
for index, proto in pairs(packed_subfactory.matrix_free_items) do
packed_subfactory.matrix_free_items[index] =
{name=proto.name, category=proto.type, data_type="items", simplified=true}
end
end
local function update_lines(floor)
for _, packed_line in ipairs(floor.Line.objects) do
if packed_line.subfloor then
update_lines(packed_line.subfloor)
else
local recipe_proto = packed_line.recipe.proto
packed_line.recipe.proto = {name=recipe_proto.name, data_type="recipes", simplified=true}
local machine_proto = packed_line.machine.proto
packed_line.machine.proto =
{name=machine_proto.name, category=machine_proto.category, data_type="machines", simplified=true}
local module_set = packed_line.machine.module_set
for _, module in pairs(module_set.modules.objects) do
module.proto =
{name=module.proto.name, category=module.proto.category, data_type="modules", simplified=true}
end
if packed_line.machine.fuel then
local fuel_proto = packed_line.machine.fuel.proto
packed_line.machine.fuel.proto =
{name=fuel_proto.name, category=fuel_proto.category, data_type="fuels", simplified=true}
end
if packed_line.beacon then
local beacon_proto = packed_line.beacon.proto
packed_line.beacon.proto = {name=beacon_proto.name, data_type="beacons", simplified=true}
local module_set = packed_line.beacon.module_set
for _, module in pairs(module_set.modules.objects) do
module.proto = {name=module.proto.name, category=module.proto.category,
data_type="modules", simplified=true}
end
end
if packed_line.priority_product_proto then
local priority_product_proto = packed_line.priority_product_proto
packed_line.priority_product_proto = {name=priority_product_proto.name,
category=priority_product_proto.type, data_type="items", simplified=true}
end
for _, product in pairs(packed_line.Product.objects) do
product.proto =
{name=product.proto.name, category=product.proto.type, data_type="items", simplified=true}
end
end
end
end
update_lines(packed_subfactory.top_floor)
end
return migration

View File

@@ -0,0 +1,14 @@
---@diagnostic disable
local migration = {}
function migration.subfactory(subfactory)
-- Revert all the crap I did with the previous version
for _, floor in pairs(Subfactory.get_all_floors(subfactory)) do
for _, line in pairs(Floor.get_in_order(floor, "Line")) do
if line.subfloor then line.machine = nil end
end
end
end
return migration