local base_util = require("__core__/lualib/util") local small_ruins = { require("ruins/smallRuins/artyOutpost"), require("ruins/smallRuins/artyOutpost2"), require("ruins/smallRuins/beaconedAssembler"), require("ruins/smallRuins/buffer"), require("ruins/smallRuins/chemicalPlant"), require("ruins/smallRuins/circuitLamp"), require("ruins/smallRuins/combinators"), require("ruins/smallRuins/concreteStumps"), require("ruins/smallRuins/crashedTank"), require("ruins/smallRuins/crossOfPipes"), require("ruins/smallRuins/crossOfPipes2"), require("ruins/smallRuins/crossOfPipes3"), require("ruins/smallRuins/crossOfPipes4"), require("ruins/smallRuins/diagonalWall"), require("ruins/smallRuins/diagonalWall2"), require("ruins/smallRuins/diagonalWall3"), require("ruins/smallRuins/fishHole"), require("ruins/smallRuins/flamerOutpost"), require("ruins/smallRuins/garage"), require("ruins/smallRuins/gateWall"), require("ruins/smallRuins/gateWall2"), require("ruins/smallRuins/gears"), require("ruins/smallRuins/gears2"), require("ruins/smallRuins/harmlessTurret"), require("ruins/smallRuins/harmlessTurret2"), require("ruins/smallRuins/harmlessTurret3"), require("ruins/smallRuins/heart"), require("ruins/smallRuins/labChain"), require("ruins/smallRuins/landMineBunker"), require("ruins/smallRuins/landMineBunker2"), require("ruins/smallRuins/landMineBunker3"), require("ruins/smallRuins/loggingArea"), require("ruins/smallRuins/miningSetup"), require("ruins/smallRuins/miningSetup2"), require("ruins/smallRuins/miningSetup3"), require("ruins/smallRuins/miningSetup4"), require("ruins/smallRuins/nuclearAccident"), require("ruins/smallRuins/offshorePump"), require("ruins/smallRuins/oilPumpjack"), require("ruins/smallRuins/oilPumpjack2"), require("ruins/smallRuins/oilRefinery"), require("ruins/smallRuins/oilRefinery2"), require("ruins/smallRuins/overwhelmedTurrets"), require("ruins/smallRuins/pipeline"), require("ruins/smallRuins/pollutedWater"), require("ruins/smallRuins/railSection"), require("ruins/smallRuins/railSection2"), require("ruins/smallRuins/railSection3"), require("ruins/smallRuins/railSection4"), require("ruins/smallRuins/randomWalls"), require("ruins/smallRuins/randomWalls2"), require("ruins/smallRuins/randomWalls3"), require("ruins/smallRuins/researchStation"), require("ruins/smallRuins/researchStation2"), require("ruins/smallRuins/researchStation3"), require("ruins/smallRuins/researchStation4"), require("ruins/smallRuins/researchStation5"), require("ruins/smallRuins/robotCraft"), require("ruins/smallRuins/robots"), require("ruins/smallRuins/rocketFuel"), require("ruins/smallRuins/rockStash"), require("ruins/smallRuins/rockStash2"), require("ruins/smallRuins/rockStash3"), require("ruins/smallRuins/rockStash4"), require("ruins/smallRuins/rockStash5"), require("ruins/smallRuins/rockStash6"), require("ruins/smallRuins/rockStash7"), require("ruins/smallRuins/shipwreck"), require("ruins/smallRuins/smallDestroyedSetup"), require("ruins/smallRuins/smallDestroyedSetup2"), require("ruins/smallRuins/smallDestroyedSetup3"), require("ruins/smallRuins/smallDestroyedSetup4"), require("ruins/smallRuins/smallDualSplitter"), require("ruins/smallRuins/smallDualSplitter2"), require("ruins/smallRuins/smallDualSplitter3"), require("ruins/smallRuins/smallMining"), require("ruins/smallRuins/smallMining2"), require("ruins/smallRuins/smallMining3"), require("ruins/smallRuins/smallMining4"), require("ruins/smallRuins/smallMountain"), require("ruins/smallRuins/smallMountain2"), require("ruins/smallRuins/smallMountain3"), require("ruins/smallRuins/smallMountain4"), require("ruins/smallRuins/smallSmelting"), require("ruins/smallRuins/smallSmelting2"), require("ruins/smallRuins/smallSmelting3"), require("ruins/smallRuins/smallSmelting4"), require("ruins/smallRuins/smeltery"), require("ruins/smallRuins/smeltery2"), require("ruins/smallRuins/smeltery3"), require("ruins/smallRuins/solarAccu"), require("ruins/smallRuins/solarAccu2"), require("ruins/smallRuins/spidertronCorpse"), require("ruins/smallRuins/splitterI"), require("ruins/smallRuins/splitterI2"), require("ruins/smallRuins/splitterI3"), require("ruins/smallRuins/steamPower"), require("ruins/smallRuins/swamp"), require("ruins/smallRuins/twinLasers"), require("ruins/smallRuins/twinTurrets") } local medium_ruins = { require("ruins/mediumRuins/assemblingLine"), require("ruins/mediumRuins/carAssembly"), require("ruins/mediumRuins/carBelt"), require("ruins/mediumRuins/centrifuges"), require("ruins/mediumRuins/chemicalPlant"), require("ruins/mediumRuins/crashedShip"), require("ruins/mediumRuins/eFurnace"), require("ruins/mediumRuins/encampment"), require("ruins/mediumRuins/helipad"), require("ruins/mediumRuins/militaryField"), require("ruins/mediumRuins/mountainRange"), require("ruins/mediumRuins/nuclearAccident"), require("ruins/mediumRuins/nuclearPower"), require("ruins/mediumRuins/overgrownFort"), require("ruins/mediumRuins/overwhelmedFlamers"), require("ruins/mediumRuins/overwhelmedGunturrets"), require("ruins/mediumRuins/pipeChain"), require("ruins/mediumRuins/powerSetup"), require("ruins/mediumRuins/radarOutpost"), require("ruins/mediumRuins/roughFort"), require("ruins/mediumRuins/roughPerimeter"), require("ruins/mediumRuins/smallOilSetup"), require("ruins/mediumRuins/smeltery"), require("ruins/mediumRuins/street"), require("ruins/mediumRuins/storageArea"), require("ruins/mediumRuins/swamp"), require("ruins/mediumRuins/trappedRocks"), require("ruins/mediumRuins/treeFortTrapped"), require("ruins/mediumRuins/treeIsland"), require("ruins/mediumRuins/treeRing"), require("ruins/mediumRuins/uraniumMining"), require("ruins/mediumRuins/walledSolar") } local large_ruin = { require("ruins/largeRuins/destroyedEnemyFort"), require("ruins/largeRuins/destroyedFort"), require("ruins/largeRuins/earlyGame"), require("ruins/largeRuins/eFurnaceRail"), require("ruins/largeRuins/fishingLake"), require("ruins/largeRuins/loggingOutpost"), require("ruins/largeRuins/mainBus"), require("ruins/largeRuins/nuclearPower"), require("ruins/largeRuins/orchard"), require("ruins/largeRuins/overwhelmedLasers"), require("ruins/largeRuins/shipwreck"), require("ruins/largeRuins/solarField"), require("ruins/largeRuins/SOS"), require("ruins/largeRuins/swamp"), require("ruins/largeRuins/trainMining"), require("ruins/largeRuins/trainMining2"), require("ruins/largeRuins/walledOrchard"), require("ruins/largeRuins/walledGrotto"), } local function make_ruin_set() -- Получите базовый набор руин мода Abandoned Ruins. Это создаст копию этого набора руин. local base_ruins = remote.call("AbandonedRuins", "get_ruin_set", "base") -- Добавьте пользовательские руины base к существующим руинам. for _, ruin in pairs(small_ruins) do table.insert(base_ruins.small, ruin) end for _, ruin in pairs(medium_ruins) do table.insert(base_ruins.medium, ruin) end table.insert(base_ruins.large, large_ruin) -- if settings.startup["kr-more-realistic-weapon"].value then -- -- После переделки оружия турели используют боеприпасы krastorio2 вместо боеприпасов из базовой игры. -- -- Итак, замените эти предметы, созданные в руинах. -- replace_item_name_in_all_ruins(base_ruins, "firearm-magazine", "rifle-magazine") -- replace_item_name_in_all_ruins(base_ruins, "piercing-rounds-magazine", "armor-piercing-rifle-magazine") -- end -- if settings.startup["kr-rebalance-vehicles&fuels"].value then -- -- С переработкой топлива транспортные средства используют топливо krastorio2 вместо твердого топлива из базовой игры. -- -- Итак, замените эти предметы, появляющиеся в руинах. -- replace_item_name_in_all_ruins(base_ruins, "solid-fuel", "fuel") -- end -- Предоставить расширенный и измененный набор руин как набор «base». remote.call("AbandonedRuins", "add_ruin_set", "base", base_ruins.small, base_ruins.medium, base_ruins.large) end -- Набор руин всегда создается при загрузке игры, поскольку наборы руин не сохраняются/не загружаются AbandonedRuins. -- Поскольку здесь используется on_load, мы должны быть уверены, что он всегда дает одинаковый результат для всех. -- К счастью, здесь можно вносить изменения в руины на основе настроек запуска, поскольку они не могут меняться во время игры. script.on_init(make_ruin_set) script.on_load(make_ruin_set) function replace_item_name_in_all_ruins(ruin_set, value, replacement) for _, ruin in pairs(ruin_set.small) do replace_item_name(ruin, value, replacement) end for _, ruin in pairs(ruin_set.medium) do replace_item_name(ruin, value, replacement) end for _, ruin in pairs(ruin_set.large) do replace_item_name(ruin, value, replacement) end end function replace_item_name(ruin, name, replacement) if not (ruin.entities and next(ruin.entities) ~= nil) then return end for _, entity in pairs(ruin.entities) do if entity[3] and entity[3].items then local items = base_util.copy(entity[3].items) for item, count in pairs(items) do if item == name then entity[3].items[replacement] = count entity[3].items[name] = nil end end end end end