Compare commits

..

No commits in common. "4cfe87fcf0e8b870c71b388689142215f39f2b16" and "3df93fd7a692a497c553d28194c10f17feff9c0b" have entirely different histories.

112 changed files with 639 additions and 771 deletions

View file

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

1
.gitignore vendored
View file

@ -1 +0,0 @@
.idea

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

@ -12,11 +12,9 @@ This work is released under a CC license instead of MIT. Contact me on github if
Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
See LICENSE
## Credits
## Created by
- [brevven](https://mods.factorio.com/user/brevven) (code, design)
- [cackling fiend](https://mods.factorio.com/user/cackling.fiend) (Update to 2.0)
- Wube (Graphics)
- [brevven](https://mods.factorio.com/user/brevven) (code, design, graphics)
### Localization

Binary file not shown.

Before

Width:  |  Height:  |  Size: 593 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 641 KiB

View file

@ -1,12 +0,0 @@
return
{
width = 442,
height = 356,
shift = util.by_pixel( 30.5, -7.5),
line_length = 8,
filenames = {
"-1.png",
"-2.png",
},
lines_per_file = 8,
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 MiB

View file

@ -1,12 +0,0 @@
return
{
width = 376,
height = 398,
shift = util.by_pixel( 0.0, -6.0),
line_length = 8,
filenames = {
"-1.png",
"-2.png",
},
lines_per_file = 8,
}

View file

@ -1,7 +0,0 @@
return
{
width = 38,
height = 46,
shift = util.by_pixel( -0.5, 6.5),
line_length = 1,
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 810 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

View file

@ -1,12 +0,0 @@
return
{
width = 514,
height = 214,
shift = util.by_pixel( 47.5, 29.0),
line_length = 6,
filenames = {
"-1.png",
"-2.png",
},
lines_per_file = 11,
}

View file

@ -1,7 +0,0 @@
return
{
width = 122,
height = 142,
shift = util.by_pixel( 26.5, -42.5),
line_length = 1,
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 885 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 450 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 357 KiB

View file

@ -1,12 +0,0 @@
return
{
width = 314,
height = 290,
shift = util.by_pixel( 25.0, -9.5),
line_length = 8,
filenames = {
"-1.png",
"-2.png",
},
lines_per_file = 8,
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 143 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 146 KiB

View file

@ -1,337 +0,0 @@
require("util")
local futil = require("data-util")
require ("sound-util")
require ("circuit-connector-sprites")
local hit_effects = require("__base__.prototypes.entity.hit-effects")
local sounds = require("__base__.prototypes.entity.sounds")
local explosion_animations = require("__base__/prototypes/entity/explosion-animations")
local particle_animations = require("__base__/prototypes/particle-animations")
data:extend({
{
type = "assembling-machine",
name = "electric-foundry",
icon = "__bzfoundry__/graphics/icons/electric-foundry.png",
icon_size = 64,
flags = {"placeable-neutral","player-creation"},
minable = {mining_time = 0.2, result = "electric-foundry"},
max_health = 300,
fast_replaceable_group = "foundry",
corpse = "electric-foundry-remnants",
dying_explosion = "foundry-explosion",
circuit_wire_max_distance = assembling_machine_circuit_wire_max_distance,
circuit_connector = circuit_connector_definitions["foundry"],
collision_box = {{-1.7, -1.7}, {1.7, 1.7}},
selection_box = {{-2, -2}, {2, 2}},
crafting_categories = {"founding", futil.me.smelt() and "smelting" or nil},
energy_usage = "360kW",
drain = "12kW",
crafting_speed = 4,
energy_source =
{
type = "electric",
emissions_per_minute = { pollution = 2 },
usage_priority = "secondary-input",
},
allowed_effects = {"consumption", "speed", "productivity", "pollution"},
damaged_trigger_effect = hit_effects.entity(),
drawing_box_vertical_extension = 1.3,
module_slots = 3,
icon_draw_specification = {scale = 2, shift = {0, -0.3}},
icons_positioning =
{
{inventory_index = defines.inventory.assembling_machine_modules, shift = {0, 1.25}}
},
perceived_performance = {minimum = 0.25, maximum = 20},
graphics_set = require("foundry-pictures").graphics_set,
open_sound = sounds.steam_open,
close_sound = sounds.steam_close,
working_sound =
{
sound =
{
filename = "__bzfoundry__/sound/entity/foundry/foundry.ogg",
volume = 0.5,
audible_distance_modifier = 0.6
},
fade_in_ticks = 4,
fade_out_ticks = 20,
sound_accents =
{
{sound = {filename = "__bzfoundry__/sound/entity/foundry/foundry-pipe-out.ogg", volume = 0.9, audible_distance_modifier = 0.4}, frame = 2},
{sound = {filename = "__bzfoundry__/sound/entity/foundry/foundry-slide-close.ogg", volume = 0.65, audible_distance_modifier = 0.3}, frame = 18},
{sound = {filename = "__bzfoundry__/sound/entity/foundry/foundry-clamp.ogg", volume = 0.45, audible_distance_modifier = 0.3}, frame = 39},
{sound = {filename = "__bzfoundry__/sound/entity/foundry/foundry-slide-stop.ogg", volume = 0.7, audible_distance_modifier = 0.4}, frame = 43},
{sound = {variations = sound_variations("__bzfoundry__/sound/entity/foundry/foundry-fire-whoosh", 3, 0.8), audible_distance_modifier = 0.3}, frame = 64},
{sound = {filename = "__bzfoundry__/sound/entity/foundry/foundry-metal-clunk.ogg", volume = 0.65, audible_distance_modifier = 0.4}, frame = 64},
{sound = {filename = "__bzfoundry__/sound/entity/foundry/foundry-slide-open.ogg", volume = 0.65, audible_distance_modifier = 0.3}, frame = 74},
{sound = {filename = "__bzfoundry__/sound/entity/foundry/foundry-pipe-in.ogg", volume = 0.75, audible_distance_modifier = 0.4}, frame = 106},
{sound = {filename = "__bzfoundry__/sound/entity/foundry/foundry-smoke-puff.ogg", volume = 0.8, audible_distance_modifier = 0.3}, frame = 106},
{sound = {variations = sound_variations("__bzfoundry__/sound/entity/foundry/foundry-pour", 2, 0.7)}, frame = 110},
{sound = {filename = "__bzfoundry__/sound/entity/foundry/foundry-rocks.ogg", volume = 0.65, audible_distance_modifier = 0.3}, frame = 120},
{sound = {filename = "__bzfoundry__/sound/entity/foundry/foundry-blade.ogg", volume = 0.7}, frame = 126},
},
max_sounds_per_prototype = 2
},
water_reflection =
{
pictures = util.sprite_load("__bzfoundry__/graphics/entity/electric-foundry/foundry-reflection",
{
scale = 4,
shift = {0,2}
}),
rotate = false
}
},
{
type = "corpse",
name = "electric-foundry-remnants",
icon = "__bzfoundry__/graphics/icons/electric-foundry.png",
flags = {"placeable-neutral", "not-on-map"},
hidden_in_factoriopedia = true,
subgroup = "smelting-machine-remnants",
order = "d[foundry]",
selection_box = {{-2.5, -2.5}, {2.5, 2.5}},
tile_width = 5,
tile_height = 5,
selectable_in_game = false,
time_before_removed = 60 * 60 * 15, -- 15 minutes
expires = false,
final_render_layer = "remnants",
remove_on_tile_placement = false,
animation =
{
filename = "__bzfoundry__/graphics/entity/electric-foundry/foundry-remnants.png",
line_length = 1,
width = 494,
height = 478,
frame_count = 1,
direction_count = 1,
shift = util.by_pixel( -1.5, -5.5),
scale = 0.4
}
},
{
type = "explosion",
name = "foundry-explosion",
icon = "__bzfoundry__/graphics/icons/electric-foundry.png",
flags = {"not-on-map"},
hidden = true,
subgroup = "smelting-machine-explosions",
order = "d[foundry]",
height = 0,
animations = explosion_animations.big_explosion(),
smoke = "smoke-fast",
smoke_count = 2,
smoke_slow_down_factor = 1,
sound = sounds.large_explosion(0.7, 1.0),
created_effect =
{
type = "direct",
action_delivery =
{
type = "instant",
target_effects =
{
{
type = "create-particle",
repeat_count = 10,
probability = 1,
particle_name = "oil-refinery-metal-particle-big",
offsets =
{
{ 0.7734, -0.6484 },
{ -0.7266, 0.5859 }
},
offset_deviation = { { -0.6875, -0.6875 }, { 0.6875, 0.6875 } },
initial_height = 0.8,
initial_height_deviation = 0.49,
initial_vertical_speed = 0.088,
initial_vertical_speed_deviation = 0.05,
speed_from_center = 0.03,
speed_from_center_deviation = 0.05
},
{
type = "create-particle",
repeat_count = 38,
probability = 1,
particle_name = "oil-refinery-metal-particle-medium",
offsets = { { 0, 0 } },
offset_deviation = { { -0.9805, -0.8867 }, { 0.9805, 0.8867 } },
initial_height = 0.6,
initial_height_deviation = 0.5,
initial_vertical_speed = 0.098,
initial_vertical_speed_deviation = 0.05,
speed_from_center = 0.07,
speed_from_center_deviation = 0.05
},
{
type = "create-particle",
repeat_count = 10,
probability = 1,
particle_name = "foundry-metal-particle-big",
offsets =
{
{ -1.492, -1.453 },
{ 1.555, -1.469 },
{ 1.477, 1.469 },
{ -0.6172, 0.3281 }
},
offset_deviation = { { -0.9961, -0.5938 }, { 0.9961, 0.5938 } },
initial_height = 0.4,
initial_height_deviation = 0.5,
initial_vertical_speed = 0.075,
initial_vertical_speed_deviation = 0.05,
speed_from_center = 0.04,
speed_from_center_deviation = 0.05
},
{
type = "create-particle",
repeat_count = 35,
probability = 1,
particle_name = "foundry-metal-particle-medium",
offsets =
{
{ -0.02344, -0.8984 }
},
offset_deviation = { { -0.5, -0.2969 }, { 0.5, 0.2969 } },
initial_height = 0.7,
initial_height_deviation = 0.15,
initial_vertical_speed = 0.166,
initial_vertical_speed_deviation = 0.047,
speed_from_center = 0.05,
speed_from_center_deviation = 0.005
},
{
type = "create-particle",
repeat_count = 20,
particle_name = "foundry-metal-particle-small",
offset_deviation = { { -0.5, -0.5 }, { 0.5, 0.5 } },
initial_height = 0.5,
initial_height_deviation = 0.5,
initial_vertical_speed = 0.06,
initial_vertical_speed_deviation = 0.05,
speed_from_center = 0.04,
speed_from_center_deviation = 0.05
},
}
}
}
}
})
local make_particle = function(params)
return {
type = "optimized-particle",
name = params.name,
life_time = 60 * 15,
render_layer = "object",
render_layer_when_on_ground = "corpse",
regular_trigger_effect_frequency = 2,
regular_trigger_effect = params.regular_trigger_effect,
ended_in_water_trigger_effect = {
{
type = "create-particle",
probability = 1,
affects_target = false,
show_in_tooltip = false,
particle_name = "tintable-water-particle",
apply_tile_tint = "secondary",
offset_deviation = { { -0.05, -0.05 }, { 0.05, 0.05 } },
initial_height = 0,
initial_height_deviation = 0.02,
initial_vertical_speed = 0.05,
initial_vertical_speed_deviation = 0.05,
speed_from_center = 0.01,
speed_from_center_deviation = 0.006,
frame_speed = 1,
frame_speed_deviation = 0,
tail_length = 2,
tail_length_deviation = 1,
tail_width = 3,
only_when_visible = true
},
{
type = "create-particle",
repeat_count = 10,
repeat_count_deviation = 6,
probability = 0.03,
affects_target = false,
show_in_tooltip = false,
particle_name = "tintable-water-particle",
apply_tile_tint = "primary",
offsets =
{
{ 0, 0 },
{ 0.01563, -0.09375 },
{ 0.0625, 0.09375 },
{ -0.1094, 0.0625 }
},
offset_deviation = { { -0.2969, -0.1992 }, { 0.2969, 0.1992 } },
initial_height = 0,
initial_height_deviation = 0.02,
initial_vertical_speed = 0.053,
initial_vertical_speed_deviation = 0.005,
speed_from_center = 0.02,
speed_from_center_deviation = 0.006,
frame_speed = 1,
frame_speed_deviation = 0,
tail_length = 9,
tail_length_deviation = 0,
tail_width = 1,
only_when_visible = true
},
{
type = "play-sound",
sound = sounds.small_splash
}
},
pictures = params.pictures,
shadows = params.shadows,
}
end
local small_smoke_trigger_effect = function()
return
{
type = "create-trivial-smoke",
smoke_name = "smoke-explosion-particle-small",
starting_frame_deviation = 0,
offset_deviation = {{-0.03, -0.03}, {0.03, 0.03}},
speed_from_center = nil
}
end
local default_smoke_trigger_effect = function()
return
{
type = "create-trivial-smoke",
smoke_name = "smoke-explosion-particle",
starting_frame_deviation = 5,
offset_deviation = {{-0.06, -0.06}, {0.06, 0.06}},
speed_from_center = 0.007
}
end
data:extend({
make_particle({
name = "foundry-metal-particle-small",
pictures = particle_animations.get_metal_particle_small_pictures({tint = {0.606, 0.408, 0.512, 1}}),
shadows = particle_animations.get_metal_particle_small_pictures({ tint = shadowtint(), shift = util.by_pixel (1,0)}),
regular_trigger_effect = nil,
}),
make_particle({
name = "foundry-metal-particle-medium",
pictures = particle_animations.get_metal_particle_medium_pictures({tint = {0.5, 0.5, 0.5, 1}}),
shadows = particle_animations.get_metal_particle_medium_pictures({ tint = shadowtint(), shift = util.by_pixel (1,0)}),
regular_trigger_effect = small_smoke_trigger_effect()
}),
make_particle({
name = "foundry-metal-particle-big",
pictures = particle_animations.get_metal_particle_big_pictures({tint = {0.65, 0.40, 0.35, 1}}),
regular_trigger_effect = default_smoke_trigger_effect()
})
})
futil.add_crafting_category("assembling-machine", "electric-foundry", "basic-founding")

View file

@ -1,111 +0,0 @@
local foundry_animation_speed = 0.16
local frames = 128
local function foundry_main_pictures()
return util.sprite_load("__bzfoundry__/graphics/entity/electric-foundry/foundry-main",
{
animation_speed = foundry_animation_speed,
frame_count = frames,
scale = 0.4
})
end
local function foundry_main_shadow_pictures()
return util.sprite_load("__bzfoundry__/graphics/entity/electric-foundry/foundry-shadow",
{
animation_speed = foundry_animation_speed,
frame_count = frames,
draw_as_shadow = true,
scale = 0.4
})
end
local function foundry_working_pictures()
return
{
fadeout = true,
animation =
util.sprite_load("__bzfoundry__/graphics/entity/electric-foundry/foundry-working",
{
animation_speed = foundry_animation_speed,
frame_count = frames,
scale = 0.4
}
)
}
end
local function foundry_lights_pictures()
return
{
effect = "flicker",
fadeout = true,
animation =
util.sprite_load("__bzfoundry__/graphics/entity/electric-foundry/foundry-lights",
{
draw_as_glow = true,
animation_speed = foundry_animation_speed,
frame_count = frames,
blend_mode = "additive",
scale = 0.4
}
)
}
end
local function foundry_status_lamp_pictures()
return
{
animation =
util.sprite_load("__bzfoundry__/graphics/entity/electric-foundry/foundry-status-lamp",
{
draw_as_glow = true,
repeat_count = frames,
blend_mode = "additive",
scale = 0.4
}
)
}
end
local function foundry_chimney_smoke()
return
{
fadeout = true,
constant_speed = true,
render_layer = "wires",
animation =
{
filename = "__base__/graphics/entity/chemical-plant/chemical-plant-smoke-outer.png",
frame_count = 47,
line_length = 16,
width = 90,
height = 188,
animation_speed = 0.5,
shift = util.by_pixel(52, -131),
tint = {0.4, 0.4, 0.4, 1},
scale = 0.4
}
}
end
return {
graphics_set =
{
animation =
{
layers =
{
foundry_main_pictures(),
foundry_main_shadow_pictures()
}
},
working_visualisations =
{
foundry_working_pictures(),
foundry_lights_pictures(),
foundry_status_lamp_pictures(),
foundry_chimney_smoke()
}
}
}

View file

@ -1,71 +0,0 @@
require("util")
local futil = require("data-util")
local meld = require("meld")
local fuel = {"chemical"}
if mods.Krastorio2 then table.insert(fuel, "kr-vehicle-fuel") end
if mods["aai-industry"] then table.insert(fuel, "processed-chemical") end
local foundry = table.deepcopy(data.raw["assembling-machine"]["electric-foundry"])
meld(foundry, {
name = "foundry",
next_upgrade = "electric-foundry",
icon = "__bzfoundry__/graphics/icons/foundry.png",
minable = {mining_time = 0.2, result = "foundry"},
energy_usage = "180kW",
energy_source = {
type = "burner",
fuel_categories = fuel,
effectivity = 1,
emissions_per_minute = { pollution = 8 },
fuel_inventory_size = 1,
smoke =
{
{
name = "smoke",
frequency = 20,
position = {1, -1.7},
starting_vertical_speed = 0.1,
starting_frame_deviation = 60
}
}
},
})
foundry.graphics_set.animation.layers[1].filenames = {
"__bzfoundry__/graphics/entity/foundry/foundry-main-1.png",
"__bzfoundry__/graphics/entity/foundry/foundry-main-2.png"
}
data:extend({
foundry,
{
type = "corpse",
name = "foundry-remnants",
icon = "__bzfoundry__/graphics/icons/foundry.png",
flags = {"placeable-neutral", "not-on-map"},
hidden_in_factoriopedia = true,
subgroup = "smelting-machine-remnants",
order = "d[foundry]",
selection_box = {{-2.5, -2.5}, {2.5, 2.5}},
tile_width = 5,
tile_height = 5,
selectable_in_game = false,
time_before_removed = 60 * 60 * 15, -- 15 minutes
expires = false,
final_render_layer = "remnants",
remove_on_tile_placement = false,
animation =
{
filename = "__bzfoundry__/graphics/entity/foundry/foundry-remnants.png",
line_length = 1,
width = 494,
height = 478,
frame_count = 1,
direction_count = 1,
shift = util.by_pixel( -1.5, -5.5),
scale = 0.4
}
}
})
futil.add_crafting_category("assembling-machine", "foundry", "basic-founding")

View file

@ -1,32 +1,4 @@
---------------------------------------------------------------------------------------------------
Version: 0.2.14
Date: 2024-02-07
Fixes:
- Attempt to fix a rare compatibility issue related to indexing nil value
---------------------------------------------------------------------------------------------------
Version: 0.2.13
Date: 2023-12-28
Changes:
- Some recipes moved in crafting menus, they were defaulting to appearing at the top:
- In vanilla: recipes for certain intermediates created in foundries moved after
"raw-material" recipes (such as most plates, etc), and before "intermediate-product"
recipes (eg circuits). There's not a perfect place for this right now, but this seems to be
thematically a decent place to put it.
- In Space Exploration (SE): Similar to above, but after gears, sticks, etc
- In vanilla and SE: recipes for foundry entities moved after furnace entities but before
assemblers. This seems to be the right location, thematically.
Localization:
- ja locale updates thanks to Sakuro
---------------------------------------------------------------------------------------------------
Version: 0.2.12
Date: 2023-04-18
Features:
- Default upgrade planner now upgrades foundry to electric foundry.
---------------------------------------------------------------------------------------------------
Version: 0.2.11
Fixes:
- Fix some minor recipe ordering issues
---------------------------------------------------------------------------------------------------
Version: 0.2.10
Date: 2023-03-06
Features:

View file

@ -64,6 +64,16 @@ function util.fe_plus(sub)
end
end
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__"
@ -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
@ -121,13 +131,6 @@ function util.k2matter(params)
params.k2matter.minimum_conversion_quantity = 10
end
if not data.raw.technology[params.k2matter.unlocked_by_technology] then
local icon = ""
if params.k2baseicon then
icon = util.k2assets().."/technologies/matter-"..params.k2baseicon..".png"
else
icon = util.k2assets().."/technologies/backgrounds/matter.png"
end
data:extend(
{
{
@ -136,7 +139,7 @@ function util.k2matter(params)
icons =
{
{
icon = icon,
icon = util.k2assets().."/technologies/matter-"..params.k2baseicon..".png",
icon_size = 256,
},
params.icon,
@ -145,29 +148,18 @@ function util.k2matter(params)
unit =
{
count = 350,
ingredients = mods["space-exploration"] and
{
{"automation-science-pack", 1},
{"logistic-science-pack", 1},
{"chemical-science-pack", 1},
{"se-astronomic-science-pack-4", 1},
{"se-energy-science-pack-4", 1},
{"se-material-science-pack-4", 1},
{"se-deep-space-science-pack-2", 1},
{"se-kr-matter-science-pack-2", 1},
} or
ingredients =
{
{"production-science-pack", 1},
{"utility-science-pack", 1},
{"kr-matter-tech-card", 1}
{"matter-tech-card", 1}
},
time = 45,
},
localised_name = {"technology-name.k2-conversion", {"item-name."..params.k2matter.item_name}},
}
},
})
end
matter.make_recipes(params.k2matter)
matter.createMatterRecipe(params.k2matter)
end
@ -201,16 +193,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, ignored_by_stats=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 +232,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, ignored_by_stats=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 +266,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 +280,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 +358,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 +403,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 +423,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 +447,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 +462,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 +473,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 +498,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
@ -508,31 +524,47 @@ end
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
(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 (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.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
end
end
-- Get the amount of the ingredient, will check base/normal not expensive
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 +574,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 +599,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 +616,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 +659,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 +686,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 +720,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 +750,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 +790,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 +799,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,11 +815,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
end
if result.ignored_by_stats then
result.ignored_by_stats = result.ignored_by_stats * multiple
if result.catalyst_amount then
result.catalyst_amount = result.catalyst_amount * multiple
end
end
if result[1] then
@ -788,8 +843,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)
@ -809,6 +865,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
@ -831,6 +889,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
@ -844,11 +904,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
@ -888,6 +950,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
@ -905,6 +969,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
@ -922,6 +988,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
@ -945,7 +1013,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
@ -964,17 +1032,35 @@ 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,
}}
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
end
table.insert(data.raw.recipe[recipe_name].icons, icon)
end
end
@ -1033,6 +1119,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
@ -1055,6 +1143,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
@ -1177,12 +1267,14 @@ 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 :|
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
end
function util.replace_ingredients_prior_to(tech, old, new, multiplier)
if not data.raw.technology[tech] then
@ -1220,11 +1312,13 @@ 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 :|
if string.sub(prerequisite, 1, 3) ~= 'ei_' then
replace_ingredients_prior_to(prerequisite, old, new, multiplier)
end
end
end
end
end
function util.remove_all_recipe_effects(recipe_name)
for name, _ in pairs(data.raw.technology) do

View file

@ -5,6 +5,6 @@ require("prototypes/categories")
if util.me.enable() then
require("prototypes/coke")
require("prototypes/foundry")
require("prototypes/entity/electric-foundry")
require("prototypes/entity/foundry")
require("prototypes/entity/electric-foundry")
end

View file

@ -10,8 +10,8 @@ if util.me.enable() then
util.add_ingredient("tungsten-carbide", util.me.carbon(), 1)
util.set_to_founding("cuw")
util.set_to_founding(mods.Krastorio2 and "kr-silicon" or "silicon")
util.add_ingredient(mods.Krastorio2 and "kr-silicon" or "silicon", util.me.carbon(), 1)
util.set_to_founding("silicon")
util.add_ingredient("silicon", util.me.carbon(), 1)
util.set_to_founding("cermet") -- from zirconium
util.set_to_founding("crucible") -- from graphite

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

BIN
graphics/entity/foundry.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

BIN
graphics/entity/foundry.xcf Normal file

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

View file

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 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: 20 KiB

After

Width:  |  Height:  |  Size: 20 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: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Before After
Before After

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

BIN
graphics/icons/foundry.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6 KiB

BIN
graphics/icons/foundry.xcf Normal file

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

View file

@ -1,20 +1,19 @@
{
"name": "bzfoundry",
"version": "2.0.0",
"factorio_version": "2.0",
"version": "0.2.10",
"factorio_version": "1.1",
"title": "Foundry",
"author": "Brevven",
"contact": "",
"homepage": "",
"dependencies": [
"base >= 2.0.0",
"rusty-locale >= 1.0.17",
"? space-exploration >= 0.7.34",
"(?) Krastorio2 >= 2.0.8",
"? bzsilicon >= 2.0.18",
"? space-exploration",
"(?) Krastorio2",
"? bzsilicon",
"? bztungsten",
"? bzzirconium >= 2.1.13",
"! space-age"
"? bzzirconium",
"rusty-locale",
"base >= 1.1.0"
],
"description": "Adds a foundry building for making alloys, etc.\n\nA standalone accessory from BZ Mods."
}

View file

@ -39,7 +39,6 @@ bzfoundry-smelt=鋳造所で製錬可能
bzfoundry-plates=耐熱レシピを追加 (実験的)
bzfoundry-hydrocarbon=鋳造に使用する炭化水素類
bzfoundry-other-machines=鋳造所以外に鋳造を行える設備
bzfoundry-woodcoke=木材を使用するコークスのレシピ
bzfoundry-minimal=ミニマルモード (建造物を取り除く)
[mod-setting-description]
@ -49,12 +48,3 @@ bzfoundry-hydrocarbon=鋳造に使用する炭化水素類。コークス化に
bzfoundry-other-machines=鋳造所以外に "founding" レシピを実行できる "assembling-machine" エンティティの一覧。例: K2の "kr-advanced-furnace" や AAII の "industrial-furnace" (コンマ区切り)
bzfoundry-plates=[color=orange]実験的[/color] 材料、生産物などあらゆる点が変更される可能性があります。\n一つ以上の耐熱素材を使うことで鋳造所における板材の生産量を向上することが出来ます。\n警告: 煩雑なレシピです。
bzfoundry-minimal=[color=yellow]注意して使用のこと![/color]\nFactorioのMOD依存関係システムの問題回避を意図した設定。鋳造所とそれに依存したレシピを無効化します。デフォルトのMOD設定でFoundry MODを依存関係に残したまま、Aluminium MODをFoundry MODを使わずにプレイすることが可能になります。
bzfoundry-woodcoke=他の炭化水素類としては、固形燃料にも対応しますが石炭には対応しません。
[string-mod-setting]
bzfoundry-plates-yes=はい
bzfoundry-plates-no=いいえ
bzfoundry-hydrocarbon-coke=__ITEM__coke__
bzfoundry-hydrocarbon-solid-fuel=__ITEM__solid-fuel__
bzfoundry-hydrocarbon-coal=__ITEM__coal__
bzfoundry-hydrocarbon-none=なし

View file

@ -3,7 +3,7 @@ local me = {}
me.name = "bzfoundry"
function me.basic_founding()
return mods.bztin or mods.bzaluminum2
return mods.bztin or mods.bzaluminum
end
function me.woodcoke()
@ -23,15 +23,14 @@ function me.enable()
end
function me.carbon()
if mods["Krastorio2"] then return "kr-coke" end
if me.get_setting("bz-all-intermediates") then return "coke" end
return me.get_setting("bzfoundry-hydrocarbon")
end
function me.carbonrecipe()
local carbon = me.carbon()
if carbon == "coke" or carbon == "kr-coke" then
return me.carbon()
if carbon == "coke" then
return "coke"
elseif carbon == "solid-fuel" then
return "solid-fuel-from-coal"
end

View file

@ -2,9 +2,8 @@ local util = require("data-util")
data:extend({
{ type = "recipe-category", name = "founding"},
{ type = "item-subgroup", name = "founding-machines", group = "production", order = "d-f"},
{ type = "item-subgroup", name = "foundry-intermediate", group = "intermediate-products",
order = util.se6() and "a-b-z" or "c-z"},
{ type = "item-subgroup", name = "founding-machines", group = "production"},
{ type = "item-subgroup", name = "foundry-intermediate", group = "intermediate-products"},
})
if util.me.basic_founding() then

View file

@ -24,9 +24,9 @@ data:extend({
{
type = "recipe",
name = "coke",
result = "coke",
category = "founding",
ingredients = {{type="item", name="coal", amount=2}},
results = {{ type = "item", name = "coke", amount = 1 }},
ingredients = {{"coal", 2}},
energy_required = 3.2,
enabled=false,
},
@ -36,9 +36,9 @@ data:extend({
{
type = "recipe",
name = "woodcoke",
result = "coke",
category = "founding",
ingredients = {{type="item", name="coal", amount=1}, {type="item", name="wood", amount=2}},
results = {{ type = "item", name = "coke", amount = 1 }},
ingredients = {{"coal", 1}, {"wood", 2}},
energy_required = 3.2,
enabled=false,
icons = {
@ -53,9 +53,9 @@ data:extend({
{
type = "recipe",
name = "solid-fuel-from-coal",
result = "solid-fuel",
category = "founding",
ingredients = {{type="item", name="coal", amount=4}},
results = {{ type = "item", name = "solid-fuel", amount = 1 }},
ingredients = {{"coal", 4}},
energy_required = 3.2,
enabled=false,
},
@ -65,9 +65,9 @@ data:extend({
{
type = "recipe",
name = "woodcoke",
result = "solid-fuel",
category = "founding",
ingredients = {{type="item", name="coal", amount=3}, {type="item", name="wood", amount=2}},
results = {{ type = "item", name = "solid-fuel", amount = 1 }},
ingredients = {{"coal", 3}, {"wood", 2}},
energy_required = 3.2,
enabled=false,
icons = {

View file

@ -0,0 +1,162 @@
require("util")
local futil = require("data-util")
data:extend({
{
type = "assembling-machine",
name = "electric-foundry",
fast_replaceable_group = "foundry",
icon = "__bzfoundry__/graphics/icons/foundry.png",
icon_size = 64,
flags = {"placeable-neutral", "placeable-player", "player-creation"},
minable = {mining_time = 0.2, result = "electric-foundry"},
max_health = 300,
corpse = "medium-small-remnants",
vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 },
working_sound =
{
sound = { filename = "__base__/sound/electric-furnace.ogg" }
},
resistances =
{
{
type = "fire",
percent = 100
}
},
collision_box = {{-1.7, -1.7}, {1.7, 1.7}},
selection_box = {{-2, -2}, {2, 2}},
crafting_categories = {"founding", futil.me.smelt() and "smelting" or nil},
energy_usage = "360kW",
drain = "12kW",
crafting_speed = 4,
energy_source =
{
type = "electric",
fuel_category = "chemical",
effectivity = 1,
emissions_per_minute = 2,
usage_priority = "secondary-input",
},
module_specification =
{
module_slots = 3,
module_info_icon_shift = {0, 0.8}
},
allowed_effects = {"consumption", "speed", "productivity", "pollution"},
animation =
{
layers =
{
{
-- TODO make a non-hr version
filename = "__bzfoundry__/graphics/entity/hr-electric-foundry.png",
priority = "high",
width = 280,
height = 239,
frame_count = 1,
shift = util.by_pixel(8, 4),
scale = 0.5,
hr_version =
{
filename = "__bzfoundry__/graphics/entity/hr-electric-foundry.png",
priority = "high",
width = 280,
height = 239,
frame_count = 1,
shift = util.by_pixel(8, 4),
scale = 0.5,
}
},
}
},
working_visualisations =
{
{
north_position = {0.0, 0.0},
east_position = {0.0, 0.0},
south_position = {0.0, 0.0},
west_position = {0.0, 0.0},
animation =
{
filename = "__bzfoundry__/graphics/entity/hr-electric-foundry-animation.png",
priority = "extra-high",
animation_speed = 0.05,
line_length = 4,
width = 280,
height = 239,
frame_count = 4,
axially_symmetrical = false,
direction_count = 1,
shift = util.by_pixel(8, 4),
scale = 0.5,
hr_version =
{
filename = "__bzfoundry__/graphics/entity/hr-electric-foundry-animation.png",
priority = "extra-high",
animation_speed = 0.05,
line_length = 4,
width = 280,
height = 239,
frame_count = 4,
axially_symmetrical = false,
direction_count = 1,
shift = util.by_pixel(8, 4),
scale = 0.5,
}
},
},
{
fadeout = true,
draw_as_light = true,
effect = "flicker",
animation =
{
filename = "__bzfoundry__/graphics/entity/electric-foundry-glow.png",
priority = "extra-high",
width = 25,
height = 29,
frame_count = 1,
shift = util.by_pixel(0, 36),
}
},
{
draw_as_light = true,
draw_as_sprite = false,
fadeout = true,
effect = "flicker",
animation =
{
filename = "__base__/graphics/entity/steel-furnace/steel-furnace-ground-light.png",
priority = "high",
line_length = 1,
draw_as_sprite = false,
width = 78,
height = 64,
frame_count = 1,
direction_count = 1,
shift = util.by_pixel(0, 72),
blend_mode = "additive",
hr_version =
{
filename = "__base__/graphics/entity/steel-furnace/hr-steel-furnace-ground-light.png",
priority = "high",
line_length = 1,
draw_as_sprite = false,
width = 152,
height = 126,
frame_count = 1,
direction_count = 1,
shift = util.by_pixel(1, 72),
blend_mode = "additive",
scale = 0.5,
}
},
},
},
},
})
futil.add_crafting_category("assembling-machine", "electric-foundry", "basic-founding")

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