Compare commits

..

No commits in common. "dcae045296633389c3e132c31c2015e437b95331" and "279cf0043d7ceb5a423a2ed69683820dc27aabce" have entirely different histories.

129 changed files with 1111 additions and 613 deletions

View file

@ -1,3 +0,0 @@
[*]
indent_style = space
indent_size = 2

2
.gitignore vendored
View file

@ -1,2 +0,0 @@
.idea
*.zip

37
Makefile Normal file
View file

@ -0,0 +1,37 @@
# General makefile for factorio mods.
#
# Presumes the development work is done in a <factoriodir>/dev/<modname>/
# directory where this makefile resides. This directory must be parallel to
# the <factoriodir>/mods/ directory where mods are installed. Run `make
# install` from dev/<modname> to install the mod as a zip file. That zip file
# should also be ready to upload to the mod portal
.PHONY: copy lint-changelog install
libdir = "../bzlib"
libfiles = $(shell ls $(libdir)/*.lua | grep -o '[^/]*.lua')
pwd = $(shell pwd)
v = $(shell basename "$(pwd)")_$(shell jq -r .version info.json)
link:
for f in $(libfiles) ; do \
echo "using $(libdir)/$$f" ;\
cp $(libdir)/$$f .; \
done;
copy: link
rm -rf ../$(v)
mkdir -p ../$(v)
cp -rf * ../$(v)
rm -f ../$(v).zip
cd ..; zip -9 -r -y $(v).zip $(v) -x "*.xcf" -x "*.git*" -x "*.bak" -x "*.blend*"
install: lint-changelog copy
cp -f ../$(v).zip ../../mods/
lint-changelog: copy
python3 ../da-changelog-tools_0.0.14/changelog-checker.py --changelog ../$(v).zip
zorro:
python3 ../da-changelog-tools_0.0.14/changelog-checker.py --zorro --changelog ../$(v).zip

View file

@ -1,26 +1,28 @@
**This is an unofficial update to Factorio 2.0 and it stays until Brevven takes over again.**
**Compatibility with Space Age is explicitly excluded until someone integrates it nicely.**
# Natural Gas # Natural Gas
Adds natural gas to the game, extracted with drilling rigs. Adds bakelite (an early game plastic) and other intermediates.
This mod mostly impacts the early game including electronic circuit creation. With ElAdamo's gas-fired boiler (integrated, optionally), it provides an alternate power source. [factorio mod page](https://mods.factorio.com/mod/bzgas)
## Credits Adds natural gas to the base game
- Brevven ([Original mod](https://mods.factorio.com/mod/bzgas))
- [cackling fiend](https://mods.factorio.com/user/cackling.fiend) (Update to 2.0) ## Version History
See changelog.txt
## Created by
- [brevven](https://mods.factorio.com/user/brevven) (code, design, graphics)
- [ElAdamo](https://mods.factorio.com/user/ElAdamo) (Gas-fired boiler: code, design, graphics) (code is public domain) - [ElAdamo](https://mods.factorio.com/user/ElAdamo) (Gas-fired boiler: code, design, graphics) (code is public domain)
## Thanks to
- [Sakuro](https://github.com/sakuro) (expand options, icon tweaks) - [Sakuro](https://github.com/sakuro) (expand options, icon tweaks)
- [Benjah-bmm27](https://commons.wikimedia.org/wiki/User:Benjah-bmm27) ([Formaldehyde icon](https://commons.wikimedia.org/wiki/File:Formaldehyde-3D-vdW.png), - [Benjah-bmm27](https://commons.wikimedia.org/wiki/User:Benjah-bmm27) ([Formaldehyde icon](https://commons.wikimedia.org/wiki/File:Formaldehyde-3D-vdW.png), public domain)
public domain)
### Compatibility ### Compatibility
- [nihilistzsche](https://github.com/nihilistzsche) - [nihilistzsche](https://github.com/nihilistzsche)
### Localization ### Localization
- [RiCZrd](https://mods.factorio.com/user/RiCZrd) (cs) - [RiCZrd](https://mods.factorio.com/user/RiCZrd) (cs)
- [Sakuro](https://github.com/sakuro) (ja) - [Sakuro](https://github.com/sakuro) (ja)
- [Pergamum663](https://github.com/Pergamum663) (ru) - [Pergamum663](https://github.com/Pergamum663) (ru)
- [sunnytan53](https://github.com/sunnytan53) (zh-CN) - [sunnytan53](https://github.com/sunnytan53) (zh-CN)
- [CV514](https://github.com/CV514) (ru) - [CV514](https://github.com/CV514) (ru)

View file

@ -1,5 +0,0 @@
---------------------------------------------------------------------------------------------------
Version: 2.0.0
Date: 19.10.2025
Changes:
- Update to Factorio 2.0

View file

@ -1,86 +0,0 @@
local me = require("me")
local util = {}
util.me = me
function decode(data)
if type(data) == "string" then return data end
local str = {}
for i = 2, #data do
str[i-1] = decode(data[i])
end
return table.concat(str, "")
end
function util.get_list()
local p = game.item_prototypes[me.name.."-list"]
if p then
data = p.localised_description
return decode(data)
end
end
function util.force_enable_recipe(event, recipe_name)
if game.players[event.player_index].force.recipes[recipe_name] then
game.players[event.player_index].force.recipes[recipe_name].enabled=true
end
end
function util.warptorio2_expansion_helper()
if script.active_mods["warptorio2_expansion"] then
function check_container_for_items(container,items)
local has_all =true
for k=1,#items do
if container.get_item_count(items[k].name)<items[k].count then has_all=false break end
end
return has_all
end
function remove_items_from_container(container,items)
for k=1,#items do
container.remove_item(items[k])
end
end
script.on_nth_tick(60, function (event)
if global.done then return end
local fix_items={
{name='iron-plate',count=100},
{name='iron-gear-wheel',count=100},
{name='repair-pack',count=50},
}
local entities = {}
for i=1,100 do
if game.surfaces[i] then
local lentities= game.surfaces[i].find_entities_filtered{area = {{-100, -100}, {100, 100}}, name = "wpe_broken_lab"}
for j, entity in pairs(lentities) do
table.insert(entities, entity)
end
end
end
if #entities == 0 then
if global.checking then
-- The lab has already been fixed
global.done = true
else
-- Check that the lab doesn't reappear due to a warp
global.checking = true
end
return
end
if check_container_for_items(entities[1],fix_items) then
remove_items_from_container(entities[1],fix_items)
local lab = entities[1].surface.create_entity({name='wpe_repaired_lab', position=entities[1].position, force = game.forces.player})
lab.destructible=false
lab.minable=false
entities[1].destroy()
global.done = true
end
end)
end
end
return util

View file

@ -1,145 +0,0 @@
require("factsheet")
-- Added by Brevven for bzgas
-- local gd = "__gas-boiler__"
local gd = "__bzgas2__/gas-boiler"
gf_boiler_entity = util.table.deepcopy(data.raw.boiler.boiler)
gf_boiler_entity.name = "gas-boiler"
gf_boiler_entity.icon = gd.."/graphics/icons/gas-boiler.png"
gf_boiler_entity.icon_size = 32
gf_boiler_entity.minable.result = "gas-boiler"
gf_boiler_entity.fast_replaceable_group = "boiler"
gf_boiler_entity.energy_source = {
type = "fluid",
fluid_box = {
volume = 100,
pipe_covers = pipecoverspictures(),
pipe_picture = {
north = {
filename = gd.."/graphics/entity/"
.."hr-assembling-machine-1-pipe-N.png",
priority = "extra-high",
width = 71,
height = 38,
shift = util.by_pixel(2.25, 13.5),
scale = 0.5
},
east = {
filename = gd.."/graphics/entity/"
.."hr-assembling-machine-1-pipe-E.png",
priority = "extra-high",
width = 42,
height = 76,
shift = util.by_pixel(-24.5, 1),
scale = 0.5
},
south = {
filename = gd.."/graphics/entity/"
.."hr-assembling-machine-1-pipe-S.png",
priority = "extra-high",
width = 88,
height = 61,
shift = util.by_pixel(0, -31.25),
scale = 0.5
},
west = {
filename = gd.."/graphics/entity/"
.."hr-assembling-machine-1-pipe-W.png",
priority = "extra-high",
width = 39,
height = 73,
shift = util.by_pixel(25.75, 1.25),
scale = 0.5
}
},
pipe_connections = {
{direction = defines.direction.south, flow_direction = "input", position = {0, 0.5}},
},
production_type = "input",
secondary_draw_orders = {
south = 32,
north = -1,
east = -1,
west = -1,
}
},
burns_fluid = true,
scale_fluid_usage = true,
emissions_per_minute = { pollution = 30 },
smoke = {{
name = "smoke",
north_position = util.by_pixel(-38, -47.5),
south_position = util.by_pixel(38.5, -32),
east_position = util.by_pixel(20, -70),
west_position = util.by_pixel(-19, -8.5),
frequency = 15,
starting_vertical_speed = 0.3,
starting_frame_deviation = 0
}},
light_flicker = {
color = colors.gas_fire_glow,
minimum_light_size = 0.1,
light_intensity_to_size_coefficient = 1
}
}
gf_boiler_entity.fire_flicker_enabled = false
gf_boiler_entity.fire_glow_flicker_enabled = false
gf_boiler_entity.pictures.north.fire = nil
gf_boiler_entity.pictures.south.fire = nil
gf_boiler_entity.pictures.east.fire = nil
gf_boiler_entity.pictures.west.fire = nil
gf_boiler_entity.pictures.north.fire_glow.filename =
gd.."/graphics/entity/"..
"hr-gas-boiler-N-light.png"
gf_boiler_entity.pictures.south.fire_glow.filename =
gd.."/graphics/entity/"..
"hr-gas-boiler-S-light.png"
gf_boiler_entity.pictures.east.fire_glow.filename =
gd.."/graphics/entity/"..
"hr-gas-boiler-E-light.png"
gf_boiler_entity.pictures.west.fire_glow.filename =
gd.."/graphics/entity/"..
"hr-gas-boiler-W-light.png"
gf_boiler_entity.pictures.north.fire_glow.apply_runtime_tint = true
gf_boiler_entity.pictures.south.fire_glow.apply_runtime_tint = true
gf_boiler_entity.pictures.east.fire_glow.apply_runtime_tint = true
gf_boiler_entity.pictures.west.fire_glow.apply_runtime_tint = true
gf_boiler_entity.pictures.north.fire_glow.tint={r=1,g=0.6,b=0.6,a=0.4}
gf_boiler_entity.pictures.south.fire_glow.tint={r=1,g=0.6,b=0.6,a=0.4}
gf_boiler_entity.pictures.east.fire_glow.tint={r=1,g=0.6,b=0.6,a=0.4}
gf_boiler_entity.pictures.west.fire_glow.tint={r=1,g=0.6,b=0.6,a=0.4}
gf_boiler_entity.pictures.north.fire_glow.blend_mode = "additive-soft"
gf_boiler_entity.pictures.south.fire_glow.blend_mode = "additive-soft"
gf_boiler_entity.pictures.east.fire_glow.blend_mode = "additive-soft"
gf_boiler_entity.pictures.west.fire_glow.blend_mode = "additive-soft"
gf_boiler_item = util.table.deepcopy(data.raw.item.boiler)
gf_boiler_item.name = "gas-boiler"
gf_boiler_item.icon_size = 32
gf_boiler_item.icon = gd.."/graphics/icons/gas-boiler.png"
gf_boiler_item.order = "b[steam-power]-b[gas-boiler]"
gf_boiler_item.place_result = "gas-boiler"
gf_boiler_recipe = {
type = "recipe",
name = "gas-boiler",
enabled = false,
ingredients = {
{ type = "item", name = "boiler", amount = 1 },
{ type = "item", name = "pump", amount = 1 }},
results = {{ type = "item", name = "gas-boiler", amount = 1 }}
}
data:extend({
gf_boiler_item,
gf_boiler_recipe,
gf_boiler_entity
})
add_recipe_to_tech(
"fluid-handling",
"gas-boiler"
)

View file

@ -1,26 +0,0 @@
{
"name": "bzgas",
"version": "2.0.0",
"factorio_version": "2.0",
"title": "Natural Gas",
"description": "Adds a natural gas resource, along with early game plastic.",
"author": "Brevven, cackling fiend",
"homepage": "https://discord.gg/ufvFUJtVwk",
"dependencies": [
"base >= 2.0.0",
"? bzfoundry2 >= 2.0.0",
"? bztitanium >= 2.0.26",
"? bzlead >= 2.0.28",
"? bzzirconium >= 2.1.13",
"? bztungsten >= 0.6.0",
"? bzcarbon >= 2.0.21",
"? bztin >= 2.1.15",
"? warptorio2_expansion",
"? space-exploration >= 0.7.34",
"? aai-industry >= 0.6.13",
"? Krastorio2 >= 2.0.8",
"? deadlock-beltboxes-loaders >= 2.6.0",
"? DeadlockCrating",
"! space-age"
]
}

View file

@ -1,7 +0,0 @@
local util = require("data-util");
for i, recipe in pairs(util.me.recipes) do
if data.raw.recipe[recipe] then
data.raw.recipe[recipe].allow_productivity = true
end
end

223
changelog.txt Normal file
View file

@ -0,0 +1,223 @@
---------------------------------------------------------------------------------------------------
Version: 0.1.12
Date: 2023-12-24
Features:
- Option to make gas finite in vanilla, thanks to Sakuro
---------------------------------------------------------------------------------------------------
Version: 0.1.11
Date: 2023-02-12
Changes:
- Improved compatibility with bob's electronics
---------------------------------------------------------------------------------------------------
Version: 0.1.10
Date: 2023-02-12
Changes:
- Crafting efficiency improvements, thanks to nihilistzsche
- Other minor compatibility improvments
---------------------------------------------------------------------------------------------------
Version: 0.1.9
Date: 2023-01-17
Features:
- (Beta) Crafting efficiency compatibility
Localization:
- ru thanks to CV514
---------------------------------------------------------------------------------------------------
Version: 0.1.8
Date: 2022-12-29
Changes:
- Move several recipes into "fluid-recipes" subgroup, so they show up in standard place in GUI.
- Basic chem plant has pollution emissions
---------------------------------------------------------------------------------------------------
Version: 0.1.7
Date: 2022-12-24
Localization:
- Updates to ja by Sakuro
- zh-CN by sunnytan53
---------------------------------------------------------------------------------------------------
Version: 0.1.6
Date: 2022-12-08
Fixes:
- SE/K2: Fix SE core mining balance after 0.1.4 change to finite resources.
---------------------------------------------------------------------------------------------------
Version: 0.1.5
Date: 2022-12-05
Changes:
- Added a command "NaturalGasRecipes" to unlock recipes if necessary.
---------------------------------------------------------------------------------------------------
Version: 0.1.4
Date: 2022-12-02
Fixes:
- Finite oil no longer produces gas when combined with some other mods
Changes:
- Add some gas to the starting area if there isn't any yet. (Can turn off in Map settings)
---------------------------------------------------------------------------------------------------
Version: 0.1.3
Date: 2022-10-23
Changes:
- ElAdamo's Fuel values setting no longer requires their gas boiler to be enabled.
---------------------------------------------------------------------------------------------------
Version: 0.1.2
Date: 2022-09-25
Changes:
- Space Exploration: Delivery cannon recipes for natural gas, formaldehyde, and bakelite
---------------------------------------------------------------------------------------------------
Version: 0.1.1
Date: 2022-09-01
Changes:
- Fix basic chem plant icon in upgrade planner, etc
- When coke is present, alternate phenol recipe faster (15 -> 12)
- Formaldehyde from natural gas is very slightly faster (2 -> 1.8)
- Minor recipe unlock tweaks
---------------------------------------------------------------------------------------------------
Version: 0.1.0
Date: 2022-08-24
Fixes:
- Attempt fix of issue when some character has no crafting categories
Changes:
- Beta release.
Localization:
- Updates to ja by Sakuro
---------------------------------------------------------------------------------------------------
Version: 0.0.21
Date: 2022-08-18
Changes:
- In modded games, if sand exists, prefer sand to silica in basic chem plant recipe. This should
help avoid some strange unlock orders.
- Minor locale fixes
---------------------------------------------------------------------------------------------------
Version: 0.0.20
Date: 2022-08-18
Fixes:
- Fix multiple prerequisite issue
---------------------------------------------------------------------------------------------------
Version: 0.0.19
Date: 2022-08-18
Features:
- Menu simulation
Changes:
- Minor nanobot tech tree tweak
---------------------------------------------------------------------------------------------------
Version: 0.0.18
Date: 2022-08-17
Changes:
- Minor, change tech name from "bakelite" to "basic plastics"
- SE: can make methane from natural gas.
- SE: can make formaldehyde from methane
- SE: methane has a fuel value
- SE + K2: methane can be reformed to hydrogen
Fixes:
- Add missing locale string
---------------------------------------------------------------------------------------------------
Version: 0.0.17
Date: 2022-08-11
Localization:
- ja locale, thanks to Sakuro
- ru locale, thanks to Pergamum663
Fixes:
- Slightly more improved compatibility, thanks to U.N.Owen
---------------------------------------------------------------------------------------------------
Version: 0.0.16
Date: 2022-08-09
Fixes:
- Generically compatible with modded recipes that use electronic circuits.
---------------------------------------------------------------------------------------------------
Version: 0.0.15
Date: 2022-08-05
Features:
- Some support for ScienceCostTweaker - green science
---------------------------------------------------------------------------------------------------
Version: 0.0.14
Date: 2022-08-04
Fixes:
- AAI: Can use processed fuel for basic chem plant with Krastorio 2
---------------------------------------------------------------------------------------------------
Version: 0.0.13
Date: 2022-08-02
Features:
- Add a setting to enable a handcrafting-only electronic circuit recipe
---------------------------------------------------------------------------------------------------
Version: 0.0.12
Date: 2022-08-01
Changes:
- Accumulator recipe makes 2 now, but requires more batteries.
- Minor, tweak a K2 recipe icon
- Tweak bakelite item icon
- If enabled, alternate phenol recipe allows productivity
---------------------------------------------------------------------------------------------------
Version: 0.0.11
Date: 2022-07-31
Changes:
- Can use upgrade planner from basic chem plant to chem plant
- SE: Rebalanced core mining output
- AAI: Can use processed fuel for basic chem plant
Features:
- Some basic 248k compatibility. More to come.
Fixes:
- Will load with IR2. Probably will deadlock. Not true compatibility.
---------------------------------------------------------------------------------------------------
Version: 0.0.10
Date: 2022-07-28
Fixes:
- SE/K2: Fix incorrect extreme quantity of bakelite needed.
Changes:
- Bakelite is now also created much faster in chemical plants.
---------------------------------------------------------------------------------------------------
Version: 0.0.9
Date: 2022-07-26
Localization:
- cs locale thanks to RiCZrd
---------------------------------------------------------------------------------------------------
Version: 0.0.8
Date: 2022-07-25
Features:
- K2: Respect finite fluids setting.
---------------------------------------------------------------------------------------------------
Version: 0.0.7
Date: 2022-07-25
Changes:
- Add a new recipe for phenol (when enabled) from light oil, to help with late-game production.
- K2, without AAI: fix green circuit recipe, actually simplify this one.
Fixes:
- Gas Boiler: input arrow for gas input
- Minor typo fixes
---------------------------------------------------------------------------------------------------
Version: 0.0.6
Date: 2022-07-23
Features:
- 5Dims - loose support
---------------------------------------------------------------------------------------------------
Version: 0.0.5
Date: 2022-07-23
Features:
- K2: Biomethanol -> formaldehyde recipe
Fixes:
- Remove module slots from basic (burner) chem plant
- Minor fix to AAI recipe unlocks
- Map gen presets fixed
---------------------------------------------------------------------------------------------------
Version: 0.0.4
Date: 2022-07-22
Features:
- Compatible with ModMash Splinter electronics
---------------------------------------------------------------------------------------------------
Version: 0.0.3
Date: 2022-07-22
Features:
- Compatible with Bob's Electronics/Bob's Electronics SE KR
---------------------------------------------------------------------------------------------------
Version: 0.0.2
Date: 2022-07-21
Fixes:
- Fix crash due to low res sprite
- Remove some startup logs
---------------------------------------------------------------------------------------------------
Version: 0.0.1
Date: 2022-07-19
Features:
- Alpha release. Adds natural gas, bakelite, and other intermediates.
- Integrate's ElAdamo's public domain Gas-fired boiler mod.
If it's ever updated, might remove from this mod and make a dependency.
- Compatible with Krastorio 2
- Compatible with Space Exploration
- Compatible with deadlock stacking/crating
- Compatible with many other mods

View file

@ -1,17 +1,17 @@
local util = require("data-util"); local util = require("data-util");
if mods["248k-Redux"] then if mods["248k"] then
data:extend({ data:extend({
{ {
type = "recipe", type = "recipe",
name = "acid-gas-breakdown", name = "acid-gas-breakdown",
icons = { icons = {
{icon = "__bzgas2__/graphics/icons/gas.png", icon_size = 128}, {icon = "__bzgas__/graphics/icons/gas.png", icon_size = 128},
{icon = "__248k-Redux-graphics__/ressources/fluids/fi_acid_gas.png", icon_size = 64, scale=0.25, shift={-8,-8}}, {icon = "__248k__/ressources/fluids/fi_acid_gas.png", icon_size = 64, scale=0.25, shift={-8,-8}},
}, },
category = "chemistry", category = "chemistry",
subgroup = "fi_item_subgroup_f", subgroup = "fi_item_subgroup_f",
enabled = false, enabled = "false",
energy_required = 3, energy_required = 3,
ingredients = { ingredients = {
{type="fluid", name="fi_acid_gas", amount=10}, {type="fluid", name="fi_acid_gas", amount=10},

29
control-util.lua Normal file
View file

@ -0,0 +1,29 @@
local me = require("me")
local util = {}
util.me = me
function decode(data)
if type(data) == "string" then return data end
local str = {}
for i = 2, #data do
str[i-1] = decode(data[i])
end
return table.concat(str, "")
end
function util.get_list()
local p = game.item_prototypes[me.name.."-list"]
if p then
data = p.localised_description
return decode(data)
end
end
function util.force_enable_recipe(event, recipe_name)
if game.players[event.player_index].force.recipes[recipe_name] then
game.players[event.player_index].force.recipes[recipe_name].enabled=true
end
end
return util

View file

@ -35,7 +35,7 @@ end
script.on_event(defines.events.on_console_chat, on_console_chat) script.on_event(defines.events.on_console_chat, on_console_chat)
function on_init() function on_init()
if storage.starting_spawn then return end if global.starting_spawn then return end
if settings.global["bzgas-force-spawn"].value then if settings.global["bzgas-force-spawn"].value then
local gas = game.surfaces["nauvis"].find_entities_filtered({area = {{-100, -100}, {100, 100}}, name="gas"}) local gas = game.surfaces["nauvis"].find_entities_filtered({area = {{-100, -100}, {100, 100}}, name="gas"})
if #gas == 0 then if #gas == 0 then
@ -45,8 +45,6 @@ function on_init()
end end
end end
end end
storage.starting_spawn = true global.starting_spawn = true
end end
script.on_init(on_init) script.on_init(on_init)
util.warptorio2_expansion_helper()

View file

@ -1,5 +1,6 @@
require("stacking") require("stacking")
require("modules") require("modules")
-- require("tin-recipe-final-5d")
require("compatibility/ir2") require("compatibility/ir2")
local util = require("data-util"); local util = require("data-util");
@ -8,16 +9,16 @@ local util = require("data-util");
util.set_product_amount("se-core-fragment-omni", "gas", 24) util.set_product_amount("se-core-fragment-omni", "gas", 24)
-- Fix basic chemical plant fuels for K2 -- Fix basic chemical plant fuels for K2
if mods.Krastorio2 and if mods.Krastorio2 and
data.raw["assembling-machine"]["basic-chemical-plant"] and data.raw["assembling-machine"]["basic-chemical-plant"] and
data.raw["assembling-machine"]["basic-chemical-plant"].energy_source and data.raw["assembling-machine"]["basic-chemical-plant"].energy_source and
data.raw["assembling-machine"]["basic-chemical-plant"].energy_source.fuel_categories then data.raw["assembling-machine"]["basic-chemical-plant"].energy_source.fuel_categories then
table.insert(data.raw["assembling-machine"]["basic-chemical-plant"].energy_source.fuel_categories , "kr-vehicle-fuel") table.insert(data.raw["assembling-machine"]["basic-chemical-plant"].energy_source.fuel_categories , "vehicle-fuel")
end end
-- Vanilla burner phase tweaks -- green circuits after electronics -- Vanilla burner phase tweaks -- green circuits after electronics
-- Electronic circuit recipe set below in compatibility script -- Electronic circuit recipe set below in compatibility script
if not mods.Krastorio2 and not mods["aai-industry"] and not mods.bzaluminum2 and not mods.bzcarbon then if not mods.Krastorio2 and not mods["aai-industry"] and not mods.bzaluminum and not mods.bzcarbon then
util.replace_ingredient("offshore-pump", "electronic-circuit", "copper-cable") util.replace_ingredient("offshore-pump", "electronic-circuit", "copper-cable")
util.replace_ingredient("lab", "electronic-circuit", "copper-cable") util.replace_ingredient("lab", "electronic-circuit", "copper-cable")
util.replace_ingredient("electric-mining-drill", "electronic-circuit", "copper-cable", 2, true) util.replace_ingredient("electric-mining-drill", "electronic-circuit", "copper-cable", 2, true)
@ -38,7 +39,7 @@ if not mods.Krastorio2 and not mods["aai-industry"] and not mods.bzaluminum2 and
util.set_enabled("inserter", false) util.set_enabled("inserter", false)
util.add_prerequisite("logistic-science-pack", "electronics") util.add_prerequisite("logistic-science-pack", "electronics")
end end
if not mods.bzaluminum2 and not mods.bzcarbon then if not mods.bzaluminum and not mods.bzcarbon then
util.replace_ingredients_prior_to("electronics", "electronic-circuit", "copper-cable", 2) util.replace_ingredients_prior_to("electronics", "electronic-circuit", "copper-cable", 2)
end end

View file

@ -44,7 +44,7 @@ if get_setting("bz-recipe-bypass") then
end end
function util.is_foundry() function util.is_foundry()
return mods.bzfoundry2 and not me.get_setting("bzfoundry-minimal") return mods.bzfoundry and not me.get_setting("bzfoundry-minimal")
end end
function should_force(options) function should_force(options)
@ -64,7 +64,17 @@ function util.fe_plus(sub)
end end
end end
function util.k2assets() function util.get_stack_size(default)
if mods.Krastorio2 then
local size = get_setting("kr-stack-size")
if size and tonumber(size) then
return tonumber(size)
end
end
return default
end
function util.k2assets()
if mods["Krastorio2Assets"] then if mods["Krastorio2Assets"] then
return "__Krastorio2Assets__" return "__Krastorio2Assets__"
end end
@ -101,8 +111,8 @@ function util.se_landfill(params)
category = "hard-recycling", category = "hard-recycling",
order = "z-b-"..params.ore, order = "z-b-"..params.ore,
subgroup = "terrain", subgroup = "terrain",
results = {{type="item", name="landfill", amount=1}}, result = "landfill",
ingredients = {{type="item", name=params.ore, amount=50}}, ingredients = {{params.ore, 50}},
} }
}) })
util.add_unlock("se-recycling-facility", lname) util.add_unlock("se-recycling-facility", lname)
@ -113,7 +123,7 @@ end
-- k2 matter -- k2 matter
-- params: {k2matter}, k2baseicon , {icon} -- params: {k2matter}, k2baseicon , {icon}
function util.k2matter(params) function util.k2matter(params)
local matter = require("__Krastorio2__/prototypes/libraries/matter") local matter = require("__Krastorio2__/lib/public/data-stages/matter-util")
if mods["space-exploration"] then if mods["space-exploration"] then
params.k2matter.need_stabilizer = true params.k2matter.need_stabilizer = true
end end
@ -159,7 +169,7 @@ function util.k2matter(params)
{ {
{"production-science-pack", 1}, {"production-science-pack", 1},
{"utility-science-pack", 1}, {"utility-science-pack", 1},
{"kr-matter-tech-card", 1} {"matter-tech-card", 1}
}, },
time = 45, time = 45,
}, },
@ -167,7 +177,7 @@ function util.k2matter(params)
}, },
}) })
end end
matter.make_recipes(params.k2matter) matter.createMatterRecipe(params.k2matter)
end end
@ -201,16 +211,16 @@ function util.se_matter(params)
energy_required = params.energy_required, energy_required = params.energy_required,
enabled = false, enabled = false,
ingredients = { ingredients = {
{type="item", name=sedata, amount=1}, {sedata, 1},
{type="fluid", name="se-particle-stream", amount=50}, {type="fluid", name="se-particle-stream", amount=50},
{type="fluid", name="se-space-coolant-supercooled", amount=25}, {type="fluid", name="se-space-coolant-supercooled", amount=25},
}, },
results = { results = {
{type="item", name=params.ore, amount=params.quant_out}, {params.ore, params.quant_out},
{type="item", name="se-contaminated-scrap", amount=1}, {"se-contaminated-scrap", 1},
{type="item", name=sedata, amount=1, probability=.99}, {type=item, name=sedata, amount=1, probability=.99},
{type="item", name=sejunk, amount=1, probability=.01}, {type=item, name=sejunk, amount=1, probability=.01},
{type="fluid", name="se-space-coolant-hot", amount=25, ignored_by_productivity=25}, {type="fluid", name="se-space-coolant-hot", amount=25, catalyst_amount=25},
} }
} }
}) })
@ -240,14 +250,14 @@ function util.se_matter(params)
energy_required = 30, energy_required = 30,
enabled = false, enabled = false,
ingredients = { ingredients = {
{type="item", name="se-kr-matter-liberation-data", amount=1}, {"se-kr-matter-liberation-data", 1},
{type="item", name=params.ore, amount=params.quant_in}, {params.ore, params.quant_in},
{type="fluid", name="se-particle-stream", amount=50}, {type="fluid", name="se-particle-stream", amount=50},
}, },
results = { results = {
{type="item", name="se-kr-matter-liberation-data", amount=1, probability=.99}, {type=item, name="se-kr-matter-liberation-data", amount=1, probability=.99},
{type="item", name=sejunk, amount=1, probability=.01}, {type=item, name=sejunk, amount=1, probability=.01},
{type="fluid", name="se-particle-stream", amount=params.stream_out, ignored_by_productivity=50}, {type="fluid", name="se-particle-stream", amount=params.stream_out, catalyst_amount=50},
} }
} }
}) })
@ -274,7 +284,7 @@ function util.se_matter(params)
{"se-astronomic-science-pack-4", 1}, {"se-astronomic-science-pack-4", 1},
{"se-energy-science-pack-4", 1}, {"se-energy-science-pack-4", 1},
{"se-material-science-pack-4", 1}, {"se-material-science-pack-4", 1},
{"kr-matter-tech-card", 1}, {"matter-tech-card", 1},
{"se-deep-space-science-pack-1", 1}, {"se-deep-space-science-pack-1", 1},
} }
@ -288,6 +298,18 @@ function util.se_matter(params)
end end
end end
-- Get the normal prototype for a recipe -- either .normal or the recipe itself
function util.get_normal(recipe_name)
if data.raw.recipe[recipe_name] then
recipe = data.raw.recipe[recipe_name]
if recipe.normal and recipe.normal.ingredients then
return recipe.normal
elseif recipe.ingredients then
return recipe
end
end
end
-- Set/override a technology's prerequisites -- Set/override a technology's prerequisites
function util.set_prerequisite(technology_name, prerequisites) function util.set_prerequisite(technology_name, prerequisites)
local technology = data.raw.technology[technology_name] local technology = data.raw.technology[technology_name]
@ -354,7 +376,7 @@ function util.add_unlock(technology_name, recipe)
end end
-- Check if a tech unlocks a recipe -- Check if a tech unlocks a recipe
function util.check_unlock(technology_name, recipe) function util.check_unlock(technology_name, recipe_name)
local technology = data.raw.technology[technology_name] local technology = data.raw.technology[technology_name]
if technology and technology.effects then if technology and technology.effects then
for i, effect in pairs(technology.effects) do for i, effect in pairs(technology.effects) do
@ -399,13 +421,17 @@ end
function util.set_enabled(recipe_name, enabled) function util.set_enabled(recipe_name, enabled)
if data.raw.recipe[recipe_name] then if data.raw.recipe[recipe_name] then
data.raw.recipe[recipe_name].enabled = enabled if data.raw.recipe[recipe_name].normal then data.raw.recipe[recipe_name].normal.enabled = enabled end
if data.raw.recipe[recipe_name].expensive then data.raw.recipe[recipe_name].expensive.enabled = enabled end
if not data.raw.recipe[recipe_name].normal then data.raw.recipe[recipe_name].enabled = enabled end
end end
end end
function util.set_hidden(recipe_name) function util.set_hidden(recipe_name)
if data.raw.recipe[recipe_name] then if data.raw.recipe[recipe_name] then
data.raw.recipe[recipe_name].hidden = true if data.raw.recipe[recipe_name].normal then data.raw.recipe[recipe_name].normal.hidden = true end
if data.raw.recipe[recipe_name].expensive then data.raw.recipe[recipe_name].expensive.hidden = true end
if not data.raw.recipe[recipe_name].normal then data.raw.recipe[recipe_name].hidden = true end
end end
end end
@ -415,6 +441,8 @@ function util.add_or_add_to_ingredient(recipe_name, ingredient, quantity, option
if data.raw.recipe[recipe_name] and data.raw.item[ingredient] then if data.raw.recipe[recipe_name] and data.raw.item[ingredient] then
me.add_modified(recipe_name) me.add_modified(recipe_name)
add_or_add_to_ingredient(data.raw.recipe[recipe_name], ingredient, quantity) add_or_add_to_ingredient(data.raw.recipe[recipe_name], ingredient, quantity)
add_or_add_to_ingredient(data.raw.recipe[recipe_name].normal, ingredient, quantity)
add_or_add_to_ingredient(data.raw.recipe[recipe_name].expensive, ingredient, quantity)
end end
end end
@ -437,6 +465,8 @@ function util.add_ingredient(recipe_name, ingredient, quantity, options)
if data.raw.recipe[recipe_name] and (data.raw.item[ingredient] or is_fluid) then if data.raw.recipe[recipe_name] and (data.raw.item[ingredient] or is_fluid) then
me.add_modified(recipe_name) me.add_modified(recipe_name)
add_ingredient(data.raw.recipe[recipe_name], ingredient, quantity, is_fluid) add_ingredient(data.raw.recipe[recipe_name], ingredient, quantity, is_fluid)
add_ingredient(data.raw.recipe[recipe_name].normal, ingredient, quantity, is_fluid)
add_ingredient(data.raw.recipe[recipe_name].expensive, ingredient, quantity, is_fluid)
end end
end end
@ -450,7 +480,7 @@ function add_ingredient(recipe, ingredient, quantity, is_fluid)
if is_fluid then if is_fluid then
table.insert(recipe.ingredients, {type="fluid", name=ingredient, amount=quantity}) table.insert(recipe.ingredients, {type="fluid", name=ingredient, amount=quantity})
else else
table.insert(recipe.ingredients, {type="item", name=ingredient, amount=quantity}) table.insert(recipe.ingredients, {ingredient, quantity})
end end
end end
end end
@ -461,6 +491,8 @@ function util.add_ingredient_raw(recipe_name, ingredient, options)
if data.raw.recipe[recipe_name] and (data.raw.item[ingredient.name] or data.raw.item[ingredient[1]]) then if data.raw.recipe[recipe_name] and (data.raw.item[ingredient.name] or data.raw.item[ingredient[1]]) then
me.add_modified(recipe_name) me.add_modified(recipe_name)
add_ingredient_raw(data.raw.recipe[recipe_name], ingredient) add_ingredient_raw(data.raw.recipe[recipe_name], ingredient)
add_ingredient_raw(data.raw.recipe[recipe_name].normal, ingredient)
add_ingredient_raw(data.raw.recipe[recipe_name].expensive, ingredient)
end end
end end
@ -484,6 +516,8 @@ function util.set_ingredient(recipe_name, ingredient, quantity, options)
if data.raw.recipe[recipe_name] and data.raw.item[ingredient] then if data.raw.recipe[recipe_name] and data.raw.item[ingredient] then
me.add_modified(recipe_name) me.add_modified(recipe_name)
set_ingredient(data.raw.recipe[recipe_name], ingredient, quantity) set_ingredient(data.raw.recipe[recipe_name], ingredient, quantity)
set_ingredient(data.raw.recipe[recipe_name].normal, ingredient, quantity)
set_ingredient(data.raw.recipe[recipe_name].expensive, ingredient, quantity)
end end
end end
@ -507,18 +541,29 @@ end
-- Only works for recipes with multiple products -- Only works for recipes with multiple products
function util.add_product(recipe_name, product, options) function util.add_product(recipe_name, product, options)
if not should_force(options) and bypass(recipe_name) then return end if not should_force(options) and bypass(recipe_name) then return end
if data.raw.recipe[recipe_name] and if data.raw.recipe[recipe_name] and
(data.raw.item[product.name] or data.raw.fluid[product.name]) then (data.raw.item[product[1]] or data.raw.item[product.name] or
data.raw.fluid[product[1]] or data.raw.fluid[product.name]
) then
add_product(data.raw.recipe[recipe_name], product) add_product(data.raw.recipe[recipe_name], product)
add_product(data.raw.recipe[recipe_name].normal, product)
add_product(data.raw.recipe[recipe_name].expensive, product)
end end
end end
function add_product(recipe, product) function add_product(recipe, product)
if recipe ~= nil then if recipe ~= nil then
if recipe.results == nil then if (product[1] and data.raw.item[product[1]]) or
recipe.results = {} (product.name and data.raw[product.type][product.name]) then
if not recipe.normal then
if recipe.results == nil then
recipe.results = {{recipe.result, recipe.result_count and recipe.result_count or 1}}
end
recipe.result = nil
recipe.result_count = nil
table.insert(recipe.results, product)
end end
table.insert(recipe.results, product) end
end end
end end
@ -526,13 +571,18 @@ end
function util.get_ingredient_amount(recipe_name, ingredient_name) function util.get_ingredient_amount(recipe_name, ingredient_name)
local recipe = data.raw.recipe[recipe_name] local recipe = data.raw.recipe[recipe_name]
if recipe then if recipe then
if recipe.ingredients then if recipe.normal and recipe.normal.ingredients then
for i, ingredient in pairs(recipe.normal.ingredients) do
if ingredient[1] == ingredient_name then return ingredient[2] end
if ingredient.name == ingredient_name then return ingredient.amount end
end
elseif recipe.ingredients then
for i, ingredient in pairs(recipe.ingredients) do for i, ingredient in pairs(recipe.ingredients) do
if ingredient[1] == ingredient_name then return ingredient[2] end if ingredient[1] == ingredient_name then return ingredient[2] end
if ingredient.name == ingredient_name then return ingredient.amount end if ingredient.name == ingredient_name then return ingredient.amount end
end end
end end
return 1 return 0
end end
return 0 return 0
end end
@ -542,7 +592,14 @@ function util.get_amount(recipe_name, product)
if not product then product = recipe_name end if not product then product = recipe_name end
local recipe = data.raw.recipe[recipe_name] local recipe = data.raw.recipe[recipe_name]
if recipe then if recipe then
if recipe.results then if recipe.normal and recipe.normal.results then
for i, result in pairs(recipe.normal.results) do
if result[1] == product then return result[2] end
if result.name == product then return result.amount end
end
elseif recipe.normal and recipe.normal.result_count then
return recipe.normal.result_count
elseif recipe.results then
for i, result in pairs(recipe.results) do for i, result in pairs(recipe.results) do
if result[1] == product then return result[2] end if result[1] == product then return result[2] end
if result.name == product then return result.amount end if result.name == product then return result.amount end
@ -560,7 +617,9 @@ function util.get_result_count(recipe_name, product)
if not product then product = recipe_name end if not product then product = recipe_name end
local recipe = data.raw.recipe[recipe_name] local recipe = data.raw.recipe[recipe_name]
if recipe then if recipe then
if recipe.results then if recipe.normal and recipe.normal.results then
return #(recipe.normal.results)
elseif recipe.results then
return #(recipe.results) return #(recipe.results)
end end
return 1 return 1
@ -575,6 +634,8 @@ function util.replace_ingredient(recipe_name, old, new, amount, multiply, option
if data.raw.recipe[recipe_name] and (data.raw.item[new] or data.raw.fluid[new]) then if data.raw.recipe[recipe_name] and (data.raw.item[new] or data.raw.fluid[new]) then
me.add_modified(recipe_name) me.add_modified(recipe_name)
replace_ingredient(data.raw.recipe[recipe_name], old, new, amount, multiply) replace_ingredient(data.raw.recipe[recipe_name], old, new, amount, multiply)
replace_ingredient(data.raw.recipe[recipe_name].normal, old, new, amount, multiply)
replace_ingredient(data.raw.recipe[recipe_name].expensive, old, new, amount, multiply)
end end
end end
@ -616,6 +677,8 @@ function util.remove_ingredient(recipe_name, old, options)
if data.raw.recipe[recipe_name] then if data.raw.recipe[recipe_name] then
me.add_modified(recipe_name) me.add_modified(recipe_name)
remove_ingredient(data.raw.recipe[recipe_name], old) remove_ingredient(data.raw.recipe[recipe_name], old)
remove_ingredient(data.raw.recipe[recipe_name].normal, old)
remove_ingredient(data.raw.recipe[recipe_name].expensive, old)
end end
end end
@ -641,23 +704,28 @@ function util.replace_some_product(recipe_name, old, old_amount, new, new_amount
if data.raw.recipe[recipe_name] and (data.raw.item[new] or is_fluid) then if data.raw.recipe[recipe_name] and (data.raw.item[new] or is_fluid) then
me.add_modified(recipe_name) me.add_modified(recipe_name)
replace_some_product(data.raw.recipe[recipe_name], old, old_amount, new, new_amount, is_fluid) replace_some_product(data.raw.recipe[recipe_name], old, old_amount, new, new_amount, is_fluid)
replace_some_product(data.raw.recipe[recipe_name].normal, old, old_amount, new, new_amount, is_fluid)
replace_some_product(data.raw.recipe[recipe_name].expensive, old, old_amount, new, new_amount, is_fluid)
end end
end end
function replace_some_product(recipe, old, old_amount, new, new_amount, is_fluid) function replace_some_product(recipe, old, old_amount, new, new_amount)
if recipe ~= nil then if recipe ~= nil then
if recipe.result == new then return end if recipe.result == new then return end
if recipe.results then if recipe.results then
for i, existing in pairs(recipe.results) do for i, existing in pairs(recipe.results) do
if existing.name == new then if existing[1] == new or existing.name == new then
return return
end end
end end
end end
add_product(recipe, {type=is_fluid and "fluid" or "item", name=new, amount=new_amount}) add_product(recipe, {new, new_amount})
for i, product in pairs(recipe.results) do for i, product in pairs(recipe.results) do
if product.name == old then if product.name == old then
product.amount = math.max(1, product.amount - old_amount) product.amount = math.max(1, product.amount - old_amount)
end
if product[1] == old then
product[2] = math.max(1, product[2] - old_amount)
end end
end end
end end
@ -670,6 +738,8 @@ function util.replace_some_ingredient(recipe_name, old, old_amount, new, new_amo
if data.raw.recipe[recipe_name] and (data.raw.item[new] or is_fluid) then if data.raw.recipe[recipe_name] and (data.raw.item[new] or is_fluid) then
me.add_modified(recipe_name) me.add_modified(recipe_name)
replace_some_ingredient(data.raw.recipe[recipe_name], old, old_amount, new, new_amount, is_fluid) replace_some_ingredient(data.raw.recipe[recipe_name], old, old_amount, new, new_amount, is_fluid)
replace_some_ingredient(data.raw.recipe[recipe_name].normal, old, old_amount, new, new_amount, is_fluid)
replace_some_ingredient(data.raw.recipe[recipe_name].expensive, old, old_amount, new, new_amount, is_fluid)
end end
end end
@ -698,6 +768,8 @@ function util.set_product_amount(recipe_name, product, amount, options)
me.add_modified(recipe_name) me.add_modified(recipe_name)
if data.raw.recipe[recipe_name] then if data.raw.recipe[recipe_name] then
set_product_amount(data.raw.recipe[recipe_name], product, amount) set_product_amount(data.raw.recipe[recipe_name], product, amount)
set_product_amount(data.raw.recipe[recipe_name].normal, product, amount)
set_product_amount(data.raw.recipe[recipe_name].expensive, product, amount)
end end
end end
@ -736,6 +808,8 @@ function util.multiply_recipe(recipe_name, multiple, options)
me.add_modified(recipe_name) me.add_modified(recipe_name)
if data.raw.recipe[recipe_name] then if data.raw.recipe[recipe_name] then
multiply_recipe(data.raw.recipe[recipe_name], multiple) multiply_recipe(data.raw.recipe[recipe_name], multiple)
multiply_recipe(data.raw.recipe[recipe_name].normal, multiple)
multiply_recipe(data.raw.recipe[recipe_name].expensive, multiple)
end end
end end
@ -743,6 +817,8 @@ function multiply_recipe(recipe, multiple)
if recipe then if recipe then
if recipe.energy_required then if recipe.energy_required then
recipe.energy_required = recipe.energy_required * multiple recipe.energy_required = recipe.energy_required * multiple
else
recipe.energy_required = 0.5 * multiple -- 0.5 is factorio default
end end
if recipe.result_count then if recipe.result_count then
recipe.result_count = recipe.result_count * multiple recipe.result_count = recipe.result_count * multiple
@ -757,8 +833,8 @@ function multiply_recipe(recipe, multiple)
result.amount_min = result.amount_min * multiple result.amount_min = result.amount_min * multiple
result.amount_max = result.amount_max * multiple result.amount_max = result.amount_max * multiple
end end
if result.ignored_by_productivity then if result.catalyst_amount then
result.ignored_by_productivity = result.ignored_by_productivity * multiple result.catalyst_amount = result.catalyst_amount * multiple
end end
end end
if result[1] then if result[1] then
@ -785,8 +861,9 @@ end
-- Returns true if a recipe has an ingredient -- Returns true if a recipe has an ingredient
function util.has_ingredient(recipe_name, ingredient) function util.has_ingredient(recipe_name, ingredient)
return data.raw.recipe[recipe_name] and return data.raw.recipe[recipe_name] and (
has_ingredient(data.raw.recipe[recipe_name], ingredient) has_ingredient(data.raw.recipe[recipe_name], ingredient) or
has_ingredient(data.raw.recipe[recipe_name].normal, ingredient))
end end
function has_ingredient(recipe, ingredient) function has_ingredient(recipe, ingredient)
@ -806,6 +883,8 @@ function util.remove_product(recipe_name, old, options)
me.add_modified(recipe_name) me.add_modified(recipe_name)
if data.raw.recipe[recipe_name] then if data.raw.recipe[recipe_name] then
remove_product(data.raw.recipe[recipe_name], old) remove_product(data.raw.recipe[recipe_name], old)
remove_product(data.raw.recipe[recipe_name].normal, old)
remove_product(data.raw.recipe[recipe_name].expensive, old)
end end
end end
@ -828,6 +907,8 @@ function util.set_main_product(recipe_name, product, options)
if not should_force(options) and bypass(recipe_name) then return end if not should_force(options) and bypass(recipe_name) then return end
if data.raw.recipe[recipe_name] then if data.raw.recipe[recipe_name] then
set_main_product(data.raw.recipe[recipe_name], product) set_main_product(data.raw.recipe[recipe_name], product)
set_main_product(data.raw.recipe[recipe_name].normal, product)
set_main_product(data.raw.recipe[recipe_name].expensive, product)
end end
end end
@ -841,11 +922,13 @@ end
function util.replace_product(recipe_name, old, new, options) function util.replace_product(recipe_name, old, new, options)
if not should_force(options) and bypass(recipe_name) then return end if not should_force(options) and bypass(recipe_name) then return end
if data.raw.recipe[recipe_name] then if data.raw.recipe[recipe_name] then
replace_product(data.raw.recipe[recipe_name], old, new) replace_product(data.raw.recipe[recipe_name], old, new, options)
replace_product(data.raw.recipe[recipe_name].normal, old, new, options)
replace_product(data.raw.recipe[recipe_name].expensive, old, new, options)
end end
end end
function replace_product(recipe, old, new) function replace_product(recipe, old, new, options)
if recipe then if recipe then
if recipe.main_product == old then if recipe.main_product == old then
recipe.main_product = new recipe.main_product = new
@ -885,6 +968,8 @@ function util.set_recipe_time(recipe_name, time, options)
me.add_modified(recipe_name) me.add_modified(recipe_name)
if data.raw.recipe[recipe_name] then if data.raw.recipe[recipe_name] then
set_recipe_time(data.raw.recipe[recipe_name], time) set_recipe_time(data.raw.recipe[recipe_name], time)
set_recipe_time(data.raw.recipe[recipe_name].normal, time)
set_recipe_time(data.raw.recipe[recipe_name].expensive, time)
end end
end end
@ -902,6 +987,8 @@ function util.multiply_time(recipe_name, factor, options)
me.add_modified(recipe_name) me.add_modified(recipe_name)
if data.raw.recipe[recipe_name] then if data.raw.recipe[recipe_name] then
multiply_time(data.raw.recipe[recipe_name], factor) multiply_time(data.raw.recipe[recipe_name], factor)
multiply_time(data.raw.recipe[recipe_name].normal, factor)
multiply_time(data.raw.recipe[recipe_name].expensive, factor)
end end
end end
@ -919,6 +1006,8 @@ function util.add_time(recipe_name, amount, options)
me.add_modified(recipe_name) me.add_modified(recipe_name)
if data.raw.recipe[recipe_name] then if data.raw.recipe[recipe_name] then
add_time(data.raw.recipe[recipe_name], amount) add_time(data.raw.recipe[recipe_name], amount)
add_time(data.raw.recipe[recipe_name].normal, amount)
add_time(data.raw.recipe[recipe_name].expensive, amount)
end end
end end
@ -942,7 +1031,7 @@ end
-- Set recipe subgroup -- Set recipe subgroup
function util.set_subgroup(recipe_name, subgroup, options) function util.set_subgroup(recipe_name, subgroup, options)
if not should_force(options) and bypass(recipe_name) then return end if not should_force(options) and bypass(recipe_name) then return end
if data.raw.recipe[recipe_name] then if data.raw.recipe[recipe_name] and data.raw["item-subgroup"][subgroup] then
me.add_modified(recipe_name) me.add_modified(recipe_name)
data.raw.recipe[recipe_name].subgroup = subgroup data.raw.recipe[recipe_name].subgroup = subgroup
end end
@ -961,16 +1050,34 @@ function util.add_icon(recipe_name, icon, options)
if data.raw.recipe[recipe_name] then if data.raw.recipe[recipe_name] then
me.add_modified(recipe_name) me.add_modified(recipe_name)
if not (data.raw.recipe[recipe_name].icons and #(data.raw.recipe[recipe_name].icons) > 0) then if not (data.raw.recipe[recipe_name].icons and #(data.raw.recipe[recipe_name].icons) > 0) then
data.raw.recipe[recipe_name].icons = {} if data.raw.recipe[recipe_name].icon then
if data.raw.recipe[recipe_name].icon then data.raw.recipe[recipe_name].icons = {{
data.raw.recipe[recipe_name].icons = {{ icon=data.raw.recipe[recipe_name].icon,
icon=data.raw.recipe[recipe_name].icon, icon_size=data.raw.recipe[recipe_name].icon_size,
icon_size=data.raw.recipe[recipe_name].icon_size, icon_mipmaps=data.raw.recipe[recipe_name].icon_mipmaps,
icon_mipmaps=data.raw.recipe[recipe_name].icon_mipmaps, }}
}} elseif data.raw.item[data.raw.recipe[recipe_name].main_product] then
data.raw.recipe[recipe_name].icon = nil data.raw.recipe[recipe_name].icons = {{
data.raw.recipe[recipe_name].icon_size = nil icon=data.raw.item[data.raw.recipe[recipe_name].main_product].icon,
end icon_size=data.raw.item[data.raw.recipe[recipe_name].main_product].icon_size,
icon_mipmaps=data.raw.item[data.raw.recipe[recipe_name].main_product].icon_mipmaps,
}}
elseif data.raw.item[data.raw.recipe[recipe_name].result] then
data.raw.recipe[recipe_name].icons = {{
icon=data.raw.item[data.raw.recipe[recipe_name].result].icon,
icon_size=data.raw.item[data.raw.recipe[recipe_name].result].icon_size,
icon_mipmaps=data.raw.item[data.raw.recipe[recipe_name].result].icon_mipmaps,
}}
elseif data.raw.recipe[recipe_name].normal and
data.raw.item[data.raw.recipe[recipe_name].normal.result] then
data.raw.recipe[recipe_name].icons = {{
icon=data.raw.item[data.raw.recipe[recipe_name].normal.result].icon,
icon_size=data.raw.item[data.raw.recipe[recipe_name].normal.result].icon_size,
icon_mipmaps=data.raw.item[data.raw.recipe[recipe_name].normal.result].icon_mipmaps,
}}
end
data.raw.recipe[recipe_name].icon = nil
data.raw.recipe[recipe_name].icon_size = nil
end end
table.insert(data.raw.recipe[recipe_name].icons, icon) table.insert(data.raw.recipe[recipe_name].icons, icon)
end end
@ -1030,6 +1137,8 @@ function util.add_to_ingredient(recipe, ingredient, amount, options)
if not should_force(options) and bypass(recipe_name) then return end if not should_force(options) and bypass(recipe_name) then return end
if data.raw.recipe[recipe] then if data.raw.recipe[recipe] then
add_to_ingredient(data.raw.recipe[recipe], ingredient, amount) add_to_ingredient(data.raw.recipe[recipe], ingredient, amount)
add_to_ingredient(data.raw.recipe[recipe].normal, ingredient, amount)
add_to_ingredient(data.raw.recipe[recipe].expensive, ingredient, amount)
end end
end end
@ -1052,6 +1161,8 @@ function util.add_to_product(recipe_name, product, amount, options)
if not should_force(options) and bypass(recipe_name) then return end if not should_force(options) and bypass(recipe_name) then return end
if data.raw.recipe[recipe_name] then if data.raw.recipe[recipe_name] then
add_to_product(data.raw.recipe[recipe_name], product, amount) add_to_product(data.raw.recipe[recipe_name], product, amount)
add_to_product(data.raw.recipe[recipe_name].normal, product, amount)
add_to_product(data.raw.recipe[recipe_name].expensive, product, amount)
end end
end end
@ -1174,8 +1285,10 @@ function remove_prior_unlocks(tech, recipe)
util.remove_recipe_effect(tech, recipe) util.remove_recipe_effect(tech, recipe)
if technology.prerequisites then if technology.prerequisites then
for i, prerequisite in pairs(technology.prerequisites) do for i, prerequisite in pairs(technology.prerequisites) do
-- log("BZZZ removing prior unlocks for " .. tech ..", checking " .. prerequisite) -- Handy Debug :| if string.sub(prerequisite, 1, 3) ~= 'ei_' then
remove_prior_unlocks(prerequisite, recipe) -- log("BZZZ removing prior unlocks for " .. recipe .. " from " .. tech ..", checking " .. prerequisite) -- Handy Debug :|
remove_prior_unlocks(prerequisite, recipe)
end
end end
end end
end end
@ -1217,7 +1330,9 @@ function replace_ingredients_prior_to(tech, old, new, multiplier)
if technology.prerequisites then if technology.prerequisites then
for i, prerequisite in pairs(technology.prerequisites) do for i, prerequisite in pairs(technology.prerequisites) do
-- log("BZZZ checking " .. prerequisite) -- Handy Debug :| -- log("BZZZ checking " .. prerequisite) -- Handy Debug :|
replace_ingredients_prior_to(prerequisite, old, new, multiplier) if string.sub(prerequisite, 1, 3) ~= 'ei_' then
replace_ingredients_prior_to(prerequisite, old, new, multiplier)
end
end end
end end
end end

190
gas-boiler/data.lua Normal file
View file

@ -0,0 +1,190 @@
require("factsheet")
-- Added by Brevven for bzgas
-- local gd = "__gas-boiler__"
local gd = "__bzgas__/gas-boiler"
gf_boiler_entity = util.table.deepcopy(data.raw.boiler.boiler)
gf_boiler_entity.name = "gas-boiler"
gf_boiler_entity.icon = gd.."/graphics/icons/gas-boiler.png"
gf_boiler_entity.icon_size = 32
gf_boiler_entity.minable.result = "gas-boiler"
gf_boiler_entity.fast_replaceable_group = "boiler"
gf_boiler_entity.energy_source = {
type = "fluid",
fluid_box = {
base_area = 1,
height = 1,
base_level = -1,
pipe_covers = pipecoverspictures(),
pipe_picture = {
north = {
filename = gd.."/graphics/entity/"
.."assembling-machine-1-pipe-N.png",
priority = "extra-high",
width = 35,
height = 18,
shift = util.by_pixel(2.5, 14),
hr_version = {
filename = gd.."/graphics/entity/"
.."hr-assembling-machine-1-pipe-N.png",
priority = "extra-high",
width = 71,
height = 38,
shift = util.by_pixel(2.25, 13.5),
scale = 0.5
}
},
east = {
filename = gd.."/graphics/entity/"
.."assembling-machine-1-pipe-E.png",
priority = "extra-high",
width = 20,
height = 38,
shift = util.by_pixel(-25, 1),
hr_version = {
filename = gd.."/graphics/entity/"
.."hr-assembling-machine-1-pipe-E.png",
priority = "extra-high",
width = 42,
height = 76,
shift = util.by_pixel(-24.5, 1),
scale = 0.5
}
},
south = {
filename = gd.."/graphics/entity/"
.."assembling-machine-1-pipe-S.png",
priority = "extra-high",
width = 44,
height = 31,
shift = util.by_pixel(0, -31.5),
hr_version = {
filename = gd.."/graphics/entity/"
.."hr-assembling-machine-1-pipe-S.png",
priority = "extra-high",
width = 88,
height = 61,
shift = util.by_pixel(0, -31.25),
scale = 0.5
}
},
west = {
filename = gd.."/graphics/entity/"
.."assembling-machine-1-pipe-W.png",
priority = "extra-high",
width = 19,
height = 37,
shift = util.by_pixel(25.5, 1.5),
hr_version = {
filename = gd.."/graphics/entity/"
.."hr-assembling-machine-1-pipe-W.png",
priority = "extra-high",
width = 39,
height = 73,
shift = util.by_pixel(25.75, 1.25),
scale = 0.5
}
}
},
pipe_connections = {
{type = "input", position = {0, 1.5}},
},
production_type = "input",
secondary_draw_orders = {
south = 32,
north = -1,
east = -1,
west = -1,
}
},
burns_fluid = true,
scale_fluid_usage = true,
emissions_per_minute = 30,
smoke = {{
name = "smoke",
north_position = util.by_pixel(-38, -47.5),
south_position = util.by_pixel(38.5, -32),
east_position = util.by_pixel(20, -70),
west_position = util.by_pixel(-19, -8.5),
frequency = 15,
starting_vertical_speed = 0.3,
starting_frame_deviation = 0
}},
light_flicker = {
color = colors.gas_fire_glow,
minimum_light_size = 0.1,
light_intensity_to_size_coefficient = 1
}
}
gf_boiler_entity.fire_flicker_enabled = false
gf_boiler_entity.fire_glow_flicker_enabled = false
gf_boiler_entity.fire = {}
gf_boiler_entity.fire_glow.north.filename =
gd.."/graphics/entity/"..
"gas-boiler-N-light.png"
gf_boiler_entity.fire_glow.south.filename =
gd.."/graphics/entity/"..
"gas-boiler-S-light.png"
gf_boiler_entity.fire_glow.east.filename =
gd.."/graphics/entity/"..
"gas-boiler-E-light.png"
gf_boiler_entity.fire_glow.west.filename =
gd.."/graphics/entity/"..
"gas-boiler-W-light.png"
gf_boiler_entity.fire_glow.north.hr_version.filename =
gd.."/graphics/entity/"..
"hr-gas-boiler-N-light.png"
gf_boiler_entity.fire_glow.south.hr_version.filename =
gd.."/graphics/entity/"..
"hr-gas-boiler-S-light.png"
gf_boiler_entity.fire_glow.east.hr_version.filename =
gd.."/graphics/entity/"..
"hr-gas-boiler-E-light.png"
gf_boiler_entity.fire_glow.west.hr_version.filename =
gd.."/graphics/entity/"..
"hr-gas-boiler-W-light.png"
gf_boiler_entity.fire_glow.north.apply_runtime_tint = true
gf_boiler_entity.fire_glow.south.apply_runtime_tint = true
gf_boiler_entity.fire_glow.east.apply_runtime_tint = true
gf_boiler_entity.fire_glow.west.apply_runtime_tint = true
gf_boiler_entity.fire_glow.north.tint={r=1,g=0.6,b=0.6,a=0.4}
gf_boiler_entity.fire_glow.south.tint={r=1,g=0.6,b=0.6,a=0.4}
gf_boiler_entity.fire_glow.east.tint={r=1,g=0.6,b=0.6,a=0.4}
gf_boiler_entity.fire_glow.west.tint={r=1,g=0.6,b=0.6,a=0.4}
gf_boiler_entity.fire_glow.north.blend_mode = "additive-soft"
gf_boiler_entity.fire_glow.south.blend_mode = "additive-soft"
gf_boiler_entity.fire_glow.east.blend_mode = "additive-soft"
gf_boiler_entity.fire_glow.west.blend_mode = "additive-soft"
gf_boiler_item = util.table.deepcopy(data.raw.item.boiler)
gf_boiler_item.name = "gas-boiler"
gf_boiler_item.icon_size = 32
gf_boiler_item.icon = gd.."/graphics/icons/gas-boiler.png"
gf_boiler_item.order = "b[steam-power]-b[gas-boiler]"
gf_boiler_item.place_result = "gas-boiler"
gf_boiler_recipe = {
type = "recipe",
name = "gas-boiler",
enabled = false,
ingredients = {{
"boiler",1
},{
"pump",1
}},
result = "gas-boiler"
}
data:extend({
gf_boiler_item,
gf_boiler_recipe,
gf_boiler_entity
})
add_recipe_to_tech(
"fluid-handling",
"gas-boiler"
)

View file

@ -1700,6 +1700,9 @@ end
set_shift = function(shift, tab) set_shift = function(shift, tab)
tab.shift = shift tab.shift = shift
if tab.hr_version then
tab.hr_version.shift = shift
end
return tab return tab
end end
@ -1726,10 +1729,16 @@ end
empty_sprite = function() empty_sprite = function()
return { return {
filename = "__core__/graphics/empty.png", filename = "__core__/graphics/empty.png",
priority = "extra-high", priority = "extra-high",
width = 1, width = 1,
height = 1, height = 1,
hr_version = {
filename = "__core__/graphics/empty.png",
priority = "extra-high",
width = 1,
height = 1,
}
} }
end end
@ -1741,104 +1750,209 @@ centrifuge_idle_layers = function(size,speed)
local size = number_or_one(size) local size = number_or_one(size)
local speed = number_or_one(speed) local speed = number_or_one(speed)
return {{ return {{
filename = filename =
"__base__/graphics/entity/" "__base__/graphics/entity/"
.."centrifuge/hr-centrifuge-C.png", .."centrifuge/centrifuge-C.png",
priority = "extra-high", priority = "extra-high",
scale = size*0.5, line_length = 8,
line_length = 8, width = 119,
width = 237, height = 107,
height = 214, scale = size,
frame_count = 64, frame_count = 64,
animation_speed = speed, animation_speed = speed,
shift = shift =
util.by_pixel( util.by_pixel(
-0.25, -0.5,
-26.5 -26.5
) ),
hr_version = {
filename =
"__base__/graphics/entity/"
.."centrifuge/hr-centrifuge-C.png",
priority = "extra-high",
scale = size*0.5,
line_length = 8,
width = 237,
height = 214,
frame_count = 64,
animation_speed = speed,
shift =
util.by_pixel(
-0.25,
-26.5
)
}
},{ },{
filename = filename =
"__base__/graphics/entity/" "__base__/graphics/entity/"
.."centrifuge/hr-centrifuge-C-shadow.png", .."centrifuge/centrifuge-C-shadow.png",
draw_as_shadow = true, draw_as_shadow = true,
priority = "extra-high", priority = "extra-high",
scale = size*0.5, line_length = 8,
line_length = 8, width = 132,
width = 279, height = 74,
height = 152, frame_count = 64,
frame_count = 64, scale = size,
animation_speed = speed, animation_speed = speed,
shift = shift =
util.by_pixel( util.by_pixel(
16.75, 20,
-10 -10
) ),
hr_version = {
filename =
"__base__/graphics/entity/"
.."centrifuge/hr-centrifuge-C-shadow.png",
draw_as_shadow = true,
priority = "extra-high",
scale = size*0.5,
line_length = 8,
width = 279,
height = 152,
frame_count = 64,
animation_speed = speed,
shift =
util.by_pixel(
16.75,
-10
)
}
},{ },{
filename = filename =
"__base__/graphics/entity/" "__base__/graphics/entity/"
.."centrifuge/hr-centrifuge-B.png", .."centrifuge/centrifuge-B.png",
priority = "extra-high", priority = "extra-high",
scale = size*0.5, line_length = 8,
line_length = 8, width = 78,
width = 156, height = 117,
height = 234, scale = size,
frame_count = 64, frame_count = 64,
animation_speed = speed, animation_speed = speed,
shift = shift =
util.by_pixel( util.by_pixel(
23, 23,
6.5 6.5
) ),
hr_version = {
filename =
"__base__/graphics/entity/"
.."centrifuge/hr-centrifuge-B.png",
priority = "extra-high",
scale = size*0.5,
line_length = 8,
width = 156,
height = 234,
frame_count = 64,
animation_speed = speed,
shift =
util.by_pixel(
23,
6.5
)
}
},{ },{
filename = filename =
"__base__/graphics/entity/" "__base__/graphics/entity/"
.."centrifuge/hr-centrifuge-B-shadow.png", .."centrifuge/centrifuge-B-shadow.png",
draw_as_shadow = true, draw_as_shadow = true,
priority = "extra-high", priority = "extra-high",
scale = size*0.5, line_length = 8,
line_length = 8, width = 124,
width = 251, height = 74,
height = 149, frame_count = 64,
frame_count = 64, scale = size,
animation_speed = speed, animation_speed = speed,
shift = shift =
util.by_pixel( util.by_pixel(
63.25, 63,
15.25 16
) ),
hr_version = {
filename =
"__base__/graphics/entity/"
.."centrifuge/hr-centrifuge-B-shadow.png",
draw_as_shadow = true,
priority = "extra-high",
scale = size*0.5,
line_length = 8,
width = 251,
height = 149,
frame_count = 64,
animation_speed = speed,
shift =
util.by_pixel(
63.25,
15.25
)
}
},{ },{
filename = filename =
"__base__/graphics/entity/" "__base__/graphics/entity/"
.."centrifuge/hr-centrifuge-A.png", .."centrifuge/centrifuge-A.png",
priority = "extra-high", priority = "extra-high",
scale = size*0.5, line_length = 8,
line_length = 8, width = 70,
width = 139, height = 123,
height = 246, scale = size,
frame_count = 64, frame_count = 64,
animation_speed = speed, animation_speed = speed,
shift = shift =
util.by_pixel( util.by_pixel(
-26.25, -26,
3.5 3.5
) ),
hr_version = {
filename =
"__base__/graphics/entity/"
.."centrifuge/hr-centrifuge-A.png",
priority = "extra-high",
scale = size*0.5,
line_length = 8,
width = 139,
height = 246,
frame_count = 64,
animation_speed = speed,
shift =
util.by_pixel(
-26.25,
3.5
)
}
},{ },{
filename = filename =
"__base__/graphics/entity/" "__base__/graphics/entity/"
.."centrifuge/hr-centrifuge-A-shadow.png", .."centrifuge/centrifuge-A-shadow.png",
priority = "extra-high", priority = "extra-high",
draw_as_shadow = true, draw_as_shadow = true,
scale = size*0.5, line_length = 8,
line_length = 8, width = 108,
width = 230, height = 54,
height = 124, frame_count = 64,
frame_count = 64, scale = size,
animation_speed = speed, animation_speed = speed,
shift = shift =
util.by_pixel( util.by_pixel(
8.5, 6,
23.5 27
) ),
hr_version = {
filename =
"__base__/graphics/entity/"
.."centrifuge/hr-centrifuge-A-shadow.png",
priority = "extra-high",
draw_as_shadow = true,
scale = size*0.5,
line_length = 8,
width = 230,
height = 124,
frame_count = 64,
animation_speed = speed,
shift =
util.by_pixel(
8.5,
23.5
)
}
}} }}
end end

View file

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 3 KiB

After

Width:  |  Height:  |  Size: 3 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 7.5 KiB

After

Width:  |  Height:  |  Size: 7.5 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 7.2 KiB

After

Width:  |  Height:  |  Size: 7.2 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 7.3 KiB

After

Width:  |  Height:  |  Size: 7.3 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 5.8 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 5.4 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

Before After
Before After

View file

@ -10,13 +10,13 @@
data.raw["utility-constants"]["default"].main_menu_simulations["gas-rig"] = { data.raw["utility-constants"]["default"].main_menu_simulations["gas-rig"] = {
checkboard = false, checkboard = false,
save = "__bzgas2__/menu-simulations/gas-rig-sim.zip", length = 15*60, save = "__bzgas__/menu-simulations/gas-rig-sim.zip", length = 15*60,
init = init =
[[ [[
local logo = game.surfaces.nauvis.find_entities_filtered{ local logo = game.surfaces.nauvis.find_entities_filtered{
name = "factorio-logo-16tiles", limit = 1}[1] name = "factorio-logo-16tiles", limit = 1}[1]
game.simulation.camera_position = {logo.position.x, logo.position.y+14} game.camera_position = {logo.position.x, logo.position.y+14}
game.simulation.camera_zoom = 0.75 game.camera_zoom = 0.75
game.tick_paused = false game.tick_paused = false
game.surfaces.nauvis.daytime = 0 game.surfaces.nauvis.daytime = 0
]], ]],

Binary file not shown.

After

Width:  |  Height:  |  Size: 772 KiB

View file

Before

Width:  |  Height:  |  Size: 2.9 MiB

After

Width:  |  Height:  |  Size: 2.9 MiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 31 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 171 KiB

After

Width:  |  Height:  |  Size: 171 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 2.6 MiB

After

Width:  |  Height:  |  Size: 2.6 MiB

Before After
Before After

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

View file

Before

Width:  |  Height:  |  Size: 88 KiB

After

Width:  |  Height:  |  Size: 88 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 88 KiB

After

Width:  |  Height:  |  Size: 88 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 9.8 KiB

After

Width:  |  Height:  |  Size: 9.8 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 8.2 KiB

After

Width:  |  Height:  |  Size: 8.2 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 76 KiB

After

Width:  |  Height:  |  Size: 76 KiB

Before After
Before After

25
info.json Normal file
View file

@ -0,0 +1,25 @@
{
"name": "bzgas",
"version": "0.1.12",
"factorio_version": "1.1",
"title": "Natural Gas",
"author": "Brevven",
"contact": "",
"homepage": "",
"dependencies": [
"base >= 1.1.0",
"? bzfoundry >= 0.2.1",
"? bztitanium >= 1.2.0",
"? bzlead >= 1.2.0",
"? bzzirconium >= 0.6.0",
"? bztungsten >= 0.6.0",
"? bzcarbon >= 0.3.0",
"? bztin",
"? space-exploration >= 0.5.100",
"? aai-industry",
"? Krastorio2",
"? deadlock-beltboxes-loaders",
"? DeadlockCrating"
],
"description": "Adds a natural gas resource, along with early game plastic.\nIntegrates ElAdamo's gas-fired boiler.\n\nCompatible with Krastorio 2 and Space Exploration. A standalone piece of BZ Mods."
}

Some files were not shown because too many files have changed in this diff Show more