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
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
- Brevven ([Original mod](https://mods.factorio.com/mod/bzgas))
- [cackling fiend](https://mods.factorio.com/user/cackling.fiend) (Update to 2.0)
Adds natural gas to the base game
## 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)
## Thanks to
- [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),
public domain)
- [Benjah-bmm27](https://commons.wikimedia.org/wiki/User:Benjah-bmm27) ([Formaldehyde icon](https://commons.wikimedia.org/wiki/File:Formaldehyde-3D-vdW.png), public domain)
### Compatibility
- [nihilistzsche](https://github.com/nihilistzsche)
### Localization
- [RiCZrd](https://mods.factorio.com/user/RiCZrd) (cs)
- [Sakuro](https://github.com/sakuro) (ja)
- [Pergamum663](https://github.com/Pergamum663) (ru)
- [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");
if mods["248k-Redux"] then
if mods["248k"] then
data:extend({
{
type = "recipe",
name = "acid-gas-breakdown",
icons = {
{icon = "__bzgas2__/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 = "__bzgas__/graphics/icons/gas.png", icon_size = 128},
{icon = "__248k__/ressources/fluids/fi_acid_gas.png", icon_size = 64, scale=0.25, shift={-8,-8}},
},
category = "chemistry",
subgroup = "fi_item_subgroup_f",
enabled = false,
enabled = "false",
energy_required = 3,
ingredients = {
{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)
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
local gas = game.surfaces["nauvis"].find_entities_filtered({area = {{-100, -100}, {100, 100}}, name="gas"})
if #gas == 0 then
@ -45,8 +45,6 @@ function on_init()
end
end
end
storage.starting_spawn = true
global.starting_spawn = true
end
script.on_init(on_init)
util.warptorio2_expansion_helper()

View file

@ -1,5 +1,6 @@
require("stacking")
require("modules")
-- require("tin-recipe-final-5d")
require("compatibility/ir2")
local util = require("data-util");
@ -8,16 +9,16 @@ local util = require("data-util");
util.set_product_amount("se-core-fragment-omni", "gas", 24)
-- Fix basic chemical plant fuels for K2
if mods.Krastorio2 and
data.raw["assembling-machine"]["basic-chemical-plant"] and
data.raw["assembling-machine"]["basic-chemical-plant"].energy_source and
if mods.Krastorio2 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.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
-- Vanilla burner phase tweaks -- green circuits after electronics
-- 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("lab", "electronic-circuit", "copper-cable")
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.add_prerequisite("logistic-science-pack", "electronics")
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)
end

View file

@ -44,7 +44,7 @@ if get_setting("bz-recipe-bypass") then
end
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
function should_force(options)
@ -64,7 +64,17 @@ function util.fe_plus(sub)
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
return "__Krastorio2Assets__"
end
@ -101,8 +111,8 @@ function util.se_landfill(params)
category = "hard-recycling",
order = "z-b-"..params.ore,
subgroup = "terrain",
results = {{type="item", name="landfill", amount=1}},
ingredients = {{type="item", name=params.ore, amount=50}},
result = "landfill",
ingredients = {{params.ore, 50}},
}
})
util.add_unlock("se-recycling-facility", lname)
@ -113,7 +123,7 @@ end
-- k2 matter
-- params: {k2matter}, k2baseicon , {icon}
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
params.k2matter.need_stabilizer = true
end
@ -159,7 +169,7 @@ function util.k2matter(params)
{
{"production-science-pack", 1},
{"utility-science-pack", 1},
{"kr-matter-tech-card", 1}
{"matter-tech-card", 1}
},
time = 45,
},
@ -167,7 +177,7 @@ function util.k2matter(params)
},
})
end
matter.make_recipes(params.k2matter)
matter.createMatterRecipe(params.k2matter)
end
@ -201,16 +211,16 @@ function util.se_matter(params)
energy_required = params.energy_required,
enabled = false,
ingredients = {
{type="item", name=sedata, amount=1},
{sedata, 1},
{type="fluid", name="se-particle-stream", amount=50},
{type="fluid", name="se-space-coolant-supercooled", amount=25},
},
results = {
{type="item", name=params.ore, amount=params.quant_out},
{type="item", name="se-contaminated-scrap", amount=1},
{type="item", name=sedata, amount=1, probability=.99},
{type="item", name=sejunk, amount=1, probability=.01},
{type="fluid", name="se-space-coolant-hot", amount=25, ignored_by_productivity=25},
{params.ore, params.quant_out},
{"se-contaminated-scrap", 1},
{type=item, name=sedata, amount=1, probability=.99},
{type=item, name=sejunk, amount=1, probability=.01},
{type="fluid", name="se-space-coolant-hot", amount=25, catalyst_amount=25},
}
}
})
@ -240,14 +250,14 @@ function util.se_matter(params)
energy_required = 30,
enabled = false,
ingredients = {
{type="item", name="se-kr-matter-liberation-data", amount=1},
{type="item", name=params.ore, amount=params.quant_in},
{"se-kr-matter-liberation-data", 1},
{params.ore, params.quant_in},
{type="fluid", name="se-particle-stream", amount=50},
},
results = {
{type="item", name="se-kr-matter-liberation-data", amount=1, probability=.99},
{type="item", name=sejunk, amount=1, probability=.01},
{type="fluid", name="se-particle-stream", amount=params.stream_out, ignored_by_productivity=50},
{type=item, name="se-kr-matter-liberation-data", amount=1, probability=.99},
{type=item, name=sejunk, amount=1, probability=.01},
{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-energy-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},
}
@ -288,6 +298,18 @@ function util.se_matter(params)
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
function util.set_prerequisite(technology_name, prerequisites)
local technology = data.raw.technology[technology_name]
@ -354,7 +376,7 @@ function util.add_unlock(technology_name, recipe)
end
-- 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]
if technology and technology.effects then
for i, effect in pairs(technology.effects) do
@ -399,13 +421,17 @@ end
function util.set_enabled(recipe_name, enabled)
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
function util.set_hidden(recipe_name)
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
@ -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
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].normal, ingredient, quantity)
add_or_add_to_ingredient(data.raw.recipe[recipe_name].expensive, ingredient, quantity)
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
me.add_modified(recipe_name)
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
@ -450,7 +480,7 @@ function add_ingredient(recipe, ingredient, quantity, is_fluid)
if is_fluid then
table.insert(recipe.ingredients, {type="fluid", name=ingredient, amount=quantity})
else
table.insert(recipe.ingredients, {type="item", name=ingredient, amount=quantity})
table.insert(recipe.ingredients, {ingredient, quantity})
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
me.add_modified(recipe_name)
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
@ -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
me.add_modified(recipe_name)
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
@ -507,18 +541,29 @@ end
-- Only works for recipes with multiple products
function util.add_product(recipe_name, product, options)
if not should_force(options) and bypass(recipe_name) then return end
if data.raw.recipe[recipe_name] and
(data.raw.item[product.name] or data.raw.fluid[product.name]) then
if data.raw.recipe[recipe_name] and
(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].normal, product)
add_product(data.raw.recipe[recipe_name].expensive, product)
end
end
function add_product(recipe, product)
if recipe ~= nil then
if recipe.results == nil then
recipe.results = {}
if (product[1] and data.raw.item[product[1]]) or
(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
table.insert(recipe.results, product)
end
end
end
@ -526,13 +571,18 @@ end
function util.get_ingredient_amount(recipe_name, ingredient_name)
local recipe = data.raw.recipe[recipe_name]
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
if ingredient[1] == ingredient_name then return ingredient[2] end
if ingredient.name == ingredient_name then return ingredient.amount end
end
end
return 1
return 0
end
return 0
end
@ -542,7 +592,14 @@ function util.get_amount(recipe_name, product)
if not product then product = recipe_name end
local recipe = data.raw.recipe[recipe_name]
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
if result[1] == product then return result[2] 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
local recipe = data.raw.recipe[recipe_name]
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)
end
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
me.add_modified(recipe_name)
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
@ -616,6 +677,8 @@ function util.remove_ingredient(recipe_name, old, options)
if data.raw.recipe[recipe_name] then
me.add_modified(recipe_name)
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
@ -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
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].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
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.result == new then return end
if recipe.results then
for i, existing in pairs(recipe.results) do
if existing.name == new then
if existing[1] == new or existing.name == new then
return
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
if product.name == old then
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
@ -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
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].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
@ -698,6 +768,8 @@ function util.set_product_amount(recipe_name, product, amount, options)
me.add_modified(recipe_name)
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].normal, product, amount)
set_product_amount(data.raw.recipe[recipe_name].expensive, product, amount)
end
end
@ -736,6 +808,8 @@ function util.multiply_recipe(recipe_name, multiple, options)
me.add_modified(recipe_name)
if data.raw.recipe[recipe_name] then
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
@ -743,6 +817,8 @@ function multiply_recipe(recipe, multiple)
if recipe then
if recipe.energy_required then
recipe.energy_required = recipe.energy_required * multiple
else
recipe.energy_required = 0.5 * multiple -- 0.5 is factorio default
end
if recipe.result_count then
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_max = result.amount_max * multiple
end
if result.ignored_by_productivity then
result.ignored_by_productivity = result.ignored_by_productivity * multiple
if result.catalyst_amount then
result.catalyst_amount = result.catalyst_amount * multiple
end
end
if result[1] then
@ -785,8 +861,9 @@ end
-- Returns true if a recipe has an ingredient
function util.has_ingredient(recipe_name, ingredient)
return data.raw.recipe[recipe_name] and
has_ingredient(data.raw.recipe[recipe_name], ingredient)
return data.raw.recipe[recipe_name] and (
has_ingredient(data.raw.recipe[recipe_name], ingredient) or
has_ingredient(data.raw.recipe[recipe_name].normal, ingredient))
end
function has_ingredient(recipe, ingredient)
@ -806,6 +883,8 @@ function util.remove_product(recipe_name, old, options)
me.add_modified(recipe_name)
if data.raw.recipe[recipe_name] then
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
@ -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 data.raw.recipe[recipe_name] then
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
@ -841,11 +922,13 @@ end
function util.replace_product(recipe_name, old, new, options)
if not should_force(options) and bypass(recipe_name) then return end
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
function replace_product(recipe, old, new)
function replace_product(recipe, old, new, options)
if recipe then
if recipe.main_product == old then
recipe.main_product = new
@ -885,6 +968,8 @@ function util.set_recipe_time(recipe_name, time, options)
me.add_modified(recipe_name)
if data.raw.recipe[recipe_name] then
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
@ -902,6 +987,8 @@ function util.multiply_time(recipe_name, factor, options)
me.add_modified(recipe_name)
if data.raw.recipe[recipe_name] then
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
@ -919,6 +1006,8 @@ function util.add_time(recipe_name, amount, options)
me.add_modified(recipe_name)
if data.raw.recipe[recipe_name] then
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
@ -942,7 +1031,7 @@ end
-- Set recipe subgroup
function util.set_subgroup(recipe_name, subgroup, options)
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)
data.raw.recipe[recipe_name].subgroup = subgroup
end
@ -961,16 +1050,34 @@ function util.add_icon(recipe_name, icon, options)
if data.raw.recipe[recipe_name] then
me.add_modified(recipe_name)
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
data.raw.recipe[recipe_name].icons = {{
icon=data.raw.recipe[recipe_name].icon,
icon_size=data.raw.recipe[recipe_name].icon_size,
icon_mipmaps=data.raw.recipe[recipe_name].icon_mipmaps,
}}
data.raw.recipe[recipe_name].icon = nil
data.raw.recipe[recipe_name].icon_size = nil
end
if data.raw.recipe[recipe_name].icon then
data.raw.recipe[recipe_name].icons = {{
icon=data.raw.recipe[recipe_name].icon,
icon_size=data.raw.recipe[recipe_name].icon_size,
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].icons = {{
icon=data.raw.item[data.raw.recipe[recipe_name].main_product].icon,
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
table.insert(data.raw.recipe[recipe_name].icons, icon)
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 data.raw.recipe[recipe] then
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
@ -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 data.raw.recipe[recipe_name] then
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
@ -1174,8 +1285,10 @@ function remove_prior_unlocks(tech, recipe)
util.remove_recipe_effect(tech, recipe)
if technology.prerequisites then
for i, prerequisite in pairs(technology.prerequisites) do
-- log("BZZZ removing prior unlocks for " .. tech ..", checking " .. prerequisite) -- Handy Debug :|
remove_prior_unlocks(prerequisite, recipe)
if string.sub(prerequisite, 1, 3) ~= 'ei_' then
-- log("BZZZ removing prior unlocks for " .. recipe .. " from " .. tech ..", checking " .. prerequisite) -- Handy Debug :|
remove_prior_unlocks(prerequisite, recipe)
end
end
end
end
@ -1217,7 +1330,9 @@ function replace_ingredients_prior_to(tech, old, new, multiplier)
if technology.prerequisites then
for i, prerequisite in pairs(technology.prerequisites) do
-- 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

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)
tab.shift = shift
if tab.hr_version then
tab.hr_version.shift = shift
end
return tab
end
@ -1726,10 +1729,16 @@ end
empty_sprite = function()
return {
filename = "__core__/graphics/empty.png",
priority = "extra-high",
width = 1,
height = 1,
filename = "__core__/graphics/empty.png",
priority = "extra-high",
width = 1,
height = 1,
hr_version = {
filename = "__core__/graphics/empty.png",
priority = "extra-high",
width = 1,
height = 1,
}
}
end
@ -1741,104 +1750,209 @@ centrifuge_idle_layers = function(size,speed)
local size = number_or_one(size)
local speed = number_or_one(speed)
return {{
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 =
"__base__/graphics/entity/"
.."centrifuge/centrifuge-C.png",
priority = "extra-high",
line_length = 8,
width = 119,
height = 107,
scale = size,
frame_count = 64,
animation_speed = speed,
shift =
util.by_pixel(
-0.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 =
"__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 =
"__base__/graphics/entity/"
.."centrifuge/centrifuge-C-shadow.png",
draw_as_shadow = true,
priority = "extra-high",
line_length = 8,
width = 132,
height = 74,
frame_count = 64,
scale = size,
animation_speed = speed,
shift =
util.by_pixel(
20,
-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 =
"__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 =
"__base__/graphics/entity/"
.."centrifuge/centrifuge-B.png",
priority = "extra-high",
line_length = 8,
width = 78,
height = 117,
scale = size,
frame_count = 64,
animation_speed = speed,
shift =
util.by_pixel(
23,
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 =
"__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 =
"__base__/graphics/entity/"
.."centrifuge/centrifuge-B-shadow.png",
draw_as_shadow = true,
priority = "extra-high",
line_length = 8,
width = 124,
height = 74,
frame_count = 64,
scale = size,
animation_speed = speed,
shift =
util.by_pixel(
63,
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 =
"__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 =
"__base__/graphics/entity/"
.."centrifuge/centrifuge-A.png",
priority = "extra-high",
line_length = 8,
width = 70,
height = 123,
scale = size,
frame_count = 64,
animation_speed = speed,
shift =
util.by_pixel(
-26,
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 =
"__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
)
filename =
"__base__/graphics/entity/"
.."centrifuge/centrifuge-A-shadow.png",
priority = "extra-high",
draw_as_shadow = true,
line_length = 8,
width = 108,
height = 54,
frame_count = 64,
scale = size,
animation_speed = speed,
shift =
util.by_pixel(
6,
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

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"] = {
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 =
[[
local logo = game.surfaces.nauvis.find_entities_filtered{
name = "factorio-logo-16tiles", limit = 1}[1]
game.simulation.camera_position = {logo.position.x, logo.position.y+14}
game.simulation.camera_zoom = 0.75
game.camera_position = {logo.position.x, logo.position.y+14}
game.camera_zoom = 0.75
game.tick_paused = false
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