Restructure repository

This commit is contained in:
Simon Brodtmann 2025-10-20 10:38:48 +02:00
parent 27e33afa95
commit 66e1d9362e
118 changed files with 0 additions and 38 deletions

20
bzsilicon2/LICENSE.md Normal file
View file

@ -0,0 +1,20 @@
The MIT License (MIT)
Copyright (c) 2013 Brevven
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

429
bzsilicon2/changelog.txt Normal file
View file

@ -0,0 +1,429 @@
---------------------------------------------------------------------------------------------------
Version: 2.0.16
Date: 2025-06-15
Fixes:
- Krastorio2 & Spaced Out: Fix soft lock on circuits introduced in 2.0 updates
- Fix load error with certain loadouts, especially with K2SO
---------------------------------------------------------------------------------------------------
Version: 2.0.15
Date: 2025-05-04
Changes:
- Krastorio2 spaced out support
- Minor K2 integration tweaks
---------------------------------------------------------------------------------------------------
Version: 2.0.14
Date: 2025-05-03
Fixes:
- Fix possible load issues with Bob's
Changes:
- K2 compatibility updates, thanks to autechr3 & pla
---------------------------------------------------------------------------------------------------
Version: 2.0.13
Date: 2025-04-08
Changes:
- Improve compatibility with Ash mod
---------------------------------------------------------------------------------------------------
Version: 2.0.12
Date: 2025-04-08
Changes:
- Improve compatbility with Crushing Industry
---------------------------------------------------------------------------------------------------
Version: 2.0.11
Date: 2025-03-23
Fixes:
- Fix when used without space age.
---------------------------------------------------------------------------------------------------
Version: 2.0.10
Date: 2025-03-22
Changes:
- Set inventory sounds for some items
Fixes:
- Loads with Crafting Efficiency
- Improved compatibility with Muluna
---------------------------------------------------------------------------------------------------
Version: 2.0.9
Date: 2025-03-21
Fixes:
- Fix startup crash introduced in Factorio 2.0.42
---------------------------------------------------------------------------------------------------
Version: 2.0.8
Date: 2025-03-11
Fixes:
- Improve compatibility with glass: silica comes from sand when generic sand is available.
- Minor locale fixes
Changes:
- Make wafers in smaller batches (ratio unchanged)
---------------------------------------------------------------------------------------------------
Version: 2.0.7
Date: 2025-03-03
Fixes:
- Fix Tier 1 module recipes to all require silicon, when wafers are not enabled.
- Space Age: When enabled, add a handcrafting recipe for silicon wafers
- Fix for infinite loop with certain mod loadouts (mostly during mod dev).
- Other minor fixes
---------------------------------------------------------------------------------------------------
Version: 2.0.6
Date: 2025-01-29
Changes:
- Changes to Any Planet Start progression
- Maraxsis: Can make silica from sand, silica is used for glass on Maraxsis.
Fixes:
- Fix razorgrass regenerate
---------------------------------------------------------------------------------------------------
Version: 2.0.5
Date: 2025-01-25
Fixes:
- Improve compatibility with mods that modify armor recipes in certain ways
---------------------------------------------------------------------------------------------------
Version: 2.0.4
Date: 2025-01-16
Changes:
- Player can plant razorgrass by hand on appropriate tiles.
- Stop adding extra decoratives.
---------------------------------------------------------------------------------------------------
Version: 2.0.3
Date: 2025-01-14
Changes:
- Fix /bz-regenerate command when not using Space Age
---------------------------------------------------------------------------------------------------
Version: 2.0.2
Date: 2025-01-09
Changes:
- With AAI Industry, unlock crusher with sand, slight change to tech tree
---------------------------------------------------------------------------------------------------
Version: 2.0.1
Date: 2025-01-07
Changes:
- In Space Age, modded sand (eg in AAI Industry) will now be created in basic crusher
Fixes:
- Attempted fix for crash with a large suite of mods, one of which seems to set a "deadlock" global variable
---------------------------------------------------------------------------------------------------
Version: 2.0.0
Date: 2025-01-06
Changes:
- Compatible with 2.0 and Space Age
- More intermediate recipes setting now only has yes/no options.
- Changes to silicon wafers
- New intermediate when setting is active: silicone. Silicone is handled a bit differently between vanilla and Space Age.
- With space age enabled, add a small crusher for making silica directly from stone.
- New plant for Space Age, Razorgrass. Used in silica production chain on Gleba. (Can use command "/bz-regenerate gleba razorgrass" when adding to existing game)
- Recipe for making extra stone on Vulcanus.
---------------------------------------------------------------------------------------------------
Version: 0.11.12
Date: 2024-01-13
Localization:
- pl updates, thanks to S3BA
---------------------------------------------------------------------------------------------------
Version: 0.11.11
Date: 2023-04-23
Fixes:
- Fix some typos
Changes:
- K2: Silica matter recipe balance
- SE+K2: Silica matter recipe requires stabilizer
---------------------------------------------------------------------------------------------------
Version: 0.11.10
Date: 2023-02-12
Changes:
- Crafting efficiency improvements, thanks to nihilistzsche
---------------------------------------------------------------------------------------------------
Version: 0.11.9
Date: 2023-01-23
Fixes:
- Fix for new SE release
---------------------------------------------------------------------------------------------------
Version: 0.11.8
Date: 2023-01-17
Fixes:
- Add optional depenency on aai-industry to fix some mod load order discrepancies
Features:
- (Beta) Support for Crafting Efficieny mod
---------------------------------------------------------------------------------------------------
Version: 0.11.7
Date: 2023-01-01
Changes:
- Prod modules enabled for optical fiber
- SE Space locomotives require MEMS gyro now
Localization:
- K2: Better string for silica processing, for ja, from Sakuro
---------------------------------------------------------------------------------------------------
Version: 0.11.6
Date: 2022-12-31
Fixes:
- SE/K2: Silicon with pyroflux can be made in fluid-enabled furnaces
- Add tech tree dependency on logistic science pack
- SE/K2: Attempt fix of issue where some mod loadouts did not have MEMS gyro in flying robot
frame recipe.
- K2: Fix compatibility issue with Seb's electrics.
Localization:
- K2: Better string for silica processing, for en
---------------------------------------------------------------------------------------------------
Version: 0.11.5
Date: 2022-12-24
Localization:
- ja locale updates from Sakuro
- de locale updates from NathanU
- zh-CN updates from sunnytan53
---------------------------------------------------------------------------------------------------
Version: 0.11.4
Date: 2022-08-23
Changes:
- deep core mining balance for stone needs
- Minor compatibility updates
---------------------------------------------------------------------------------------------------
Version: 0.11.3
Date: 2022-08-10
Changes:
- Cable item subgroup
---------------------------------------------------------------------------------------------------
Version: 0.11.2
Date: 2022-07-02
Fixes:
- SE 0.6.68 compatibility breakage fixed
---------------------------------------------------------------------------------------------------
Version: 0.11.1
Date: 2022-07-01
Fixes:
- SE 0.6: Use stone subgroup for raw material items
---------------------------------------------------------------------------------------------------
Version: 0.11.0
Date: 2022-07-01
Changes:
- Compatible with Space Exploration 0.6
---------------------------------------------------------------------------------------------------
Version: 0.10.0
Date: 2022-06-26
Features:
- Beta support for 248k. Silica used in glass. More changes likely to come.
---------------------------------------------------------------------------------------------------
Version: 0.9.1
Date: 2022-01-08
Features:
- Korean (ko) l10n, thanks to x2605
---------------------------------------------------------------------------------------------------
Version: 0.9.0
Date: 2022-01-08
Features:
- Added a new optional gyroscope intermediate
---------------------------------------------------------------------------------------------------
Version: 0.8.3
Date: 2022-01-06
Changes:
- Polish (pl) l10n, thanks to S3BA
---------------------------------------------------------------------------------------------------
Version: 0.8.2
Date: 2022-01-05
Changes:
- Simplified Chinese (zh_CN) l10n, thanks to PlexPt
---------------------------------------------------------------------------------------------------
Version: 0.8.1
Date: 2022-01-05
Changes:
- Bio Industries more minor compatibility
Fixes:
- IR2 loose compatibility fix
---------------------------------------------------------------------------------------------------
Version: 0.8.0
Date: 2021-12-31
Changes:
- K2 1.2 alternate electronic components recipe
- Update stone autoplace for more stone.
---------------------------------------------------------------------------------------------------
Version: 0.7.4
Date: 2021-07-26
Changes:
- Very minor K2 tech tree tweak
- Minor Refactor
---------------------------------------------------------------------------------------------------
Version: 0.7.3
Date: 2021-07-01
Features:
- Strange matter compatibility
---------------------------------------------------------------------------------------------------
Version: 0.7.2
Date: 2021-06-26
Changes:
- Tweak solar cell recipe, less silicon
Features:
- Transport drone circuits
---------------------------------------------------------------------------------------------------
Version: 0.7.1
Date: 2021-06-16
Localization:
- ja locale updates from Sakuro
Features:
- Mod Mash Electronics recipes
---------------------------------------------------------------------------------------------------
Version: 0.7.0
Date: 2021-06-16
Features:
- Recipe bypass setting
Localization:
- Polish localization tweaks, thanks to user TheoMarque
---------------------------------------------------------------------------------------------------
Version: 0.6.14
Date: 2021-06-02
Localization:
- ja localization thanks to Sakuro
---------------------------------------------------------------------------------------------------
Version: 0.6.13
Date: 2021-05-23
Features:
- Zombies compatibility
---------------------------------------------------------------------------------------------------
Version: 0.6.12
Date: 2021-05-22
Localization:
- Polish localization, thanks to user TheoMarque
---------------------------------------------------------------------------------------------------
Version: 0.6.11
Date: 2021-05-01
Features:
- Russian localization, thanks to user Spectrus1702
---------------------------------------------------------------------------------------------------
Version: 0.6.10
Date: 2021-04-30
Localization:
- German localization, thanks to user yokmp
---------------------------------------------------------------------------------------------------
Version: 0.6.9
Date: 2021-04-13
Fixes:
- Recipe fix for deadlock stacked recipes + K2
---------------------------------------------------------------------------------------------------
Version: 0.6.8
Date: 2021-04-12
Changes:
- Reduce silicon/wafer needs for first tier modules.
---------------------------------------------------------------------------------------------------
Version: 0.6.7
Date: 2021-04-11
Changes:
- Added experimental setting to not use crushed stone with Bio Industries.
This is meant only for massive megabases, and is not recommended otherwise.
---------------------------------------------------------------------------------------------------
Version: 0.6.6
Date: 2021-03-20
Changes:
- Rebalance: circuit network components always use silicon, not wafers
This makes them craftable when they are unlocked, and also improves mod compatibility.
- Programmable speaker also uses 1 silicon.
- When using Extended Research System with Bio Industries, unlock some stuff earlier.
---------------------------------------------------------------------------------------------------
Version: 0.6.5
Date: 2021-03-19
Features:
- Omnimatter recipe for silica
---------------------------------------------------------------------------------------------------
Version: 0.6.4
Date: 2021-03-15
Fixes:
- Fix tech deadlock in K2 with intermediates on (type SiliconRecipes)
---------------------------------------------------------------------------------------------------
Version: 0.6.3
Date: 2021-03-14
Features:
- More combinator recipes
---------------------------------------------------------------------------------------------------
Version: 0.6.2
Date: 2021-03-13
Fixes:
- Fix Crash with angels mods
---------------------------------------------------------------------------------------------------
Version: 0.6.1
Date: 2021-03-13
Fixes:
- Minor tech tree fix when intermediates on.
Changes:
- Space Exploration: Added silica to chemical gel, materials testing pack
---------------------------------------------------------------------------------------------------
Version: 0.6.0
Date: 2021-03-13
Changes:
- Less silicon (or wafers) needed in processing units
- If using intermediates, wafers now required for advanced circuits
- Increase map's richness of stone slightly.
- Bio industries, crushed stone -> silica recipe is smelting now. More changes to come...
---------------------------------------------------------------------------------------------------
Version: 0.5.2
Date: 2021-03-11
Changes:
- Enable prod modules on all recipes
---------------------------------------------------------------------------------------------------
Version: 0.5.1
Date: 2021-03-11
Changes:
- UsefulCombinators recipes
---------------------------------------------------------------------------------------------------
Version: 0.5.0
Date: 2021-03-08
Changes:
- New visuals by snouz (icons, technologies)
- New mod icon
- Added icon mipmaps
Features:
- Beta Bio Industries compatibility: silica from crushed stone, concrete recipe update.
---------------------------------------------------------------------------------------------------
Version: 0.4.1
Date: 2021-02-28
Features:
- Deadlock stacking and crating, with thanks to GeneralTank
---------------------------------------------------------------------------------------------------
Version: 0.4.0
Date: 2021-02-27
Features:
- New optional intermediates: Silicon wafer & Solar cell.
---------------------------------------------------------------------------------------------------
Version: 0.3.7
Date: 2021-02-15
Changes:
- Loose compabitility with IR2
---------------------------------------------------------------------------------------------------
Version: 0.3.6
Date: 2021-02-13
Changes:
- Use K2 silicon icon.
---------------------------------------------------------------------------------------------------
Version: 0.3.5
Date: 2021-02-12
Fixes:
- Fix silicon vulcanite smelting recipe.
---------------------------------------------------------------------------------------------------
Version: 0.3.4
Date: 2021-01-31
Changes:
- Concrete will always try to keep stone brick in some step of the chain.
Concrete will also use sand where possible. I.e concrete "realism".
This may be further adjusted but these goals will remain.
---------------------------------------------------------------------------------------------------
Version: 0.3.3
Date: 2021-01-31
Changes:
- SE Delivery cannon capsules
- K2 Silica matter
---------------------------------------------------------------------------------------------------
Version: 0.3.2
Date: 2021-01-30
Fixes:
- K2+AAI concrete recipe
---------------------------------------------------------------------------------------------------
Version: 0.3.1
Date: 2021-01-30
Changes:
- SE Vulcanite silicon smelting
- K2+SE Vulcanite silicon smelting
---------------------------------------------------------------------------------------------------
Version: 0.3.0
Date: 2021-01-30
Changes:
- Support K2+SE
---------------------------------------------------------------------------------------------------
Version: 0.2.0
Date: 2020-11-23
Changes:
- Support 1.1
---------------------------------------------------------------------------------------------------
Version: 0.1.0
Date: 2020-09-15
Changes:
- Initial version

View file

@ -0,0 +1,4 @@
local util = require("data-util");
util.add_ingredient("fi_arc_glass_recipe", "silica", 7)
util.remove_ingredient("fi_arc_glass_recipe", "stone")

View file

@ -0,0 +1,52 @@
local util = require("data-util");
if mods["any-planet-start"] and util.me.get_setting("aps-planet") == "vulcanus" then
-- Avoid cycles or soft locks on Vulcanus start
util.set_prerequisite("silica-processing", {})
util.add_unlock("automation", "basic-crusher")
util.set_prerequisite("silicon-processing", {"silica-processing"})
util.set_tech_trigger("silica-processing", {type = "mine-entity", entity="vulcanus-chimney-truncated"})
util.replace_ingredient("solar-cell", "silicon-wafer", "silicon")
util.set_tech_trigger("silicon-processing", {type = "craft-item", item="silica", count=50})
if util.me.more_intermediates() then
util.add_new_crafting_category("handcrafting", true)
data:extend({
{
type = "recipe",
name = "silicon-wafer-by-hand",
localised_name = {"item-name.silicon-wafer"},
category = "handcrafting",
subgroup = "intermediate-product",
enabled = false,
energy_required = 1,
allow_productivity = true,
ingredients = {
{type= "item", name="silicon", amount=1},
},
results = {util.item("silicon-wafer", 1)}
},
})
util.add_unlock("silicon-processing", "silicon-wafer-by-hand")
end
elseif mods["any-planet-start"] and util.me.get_setting("aps-planet") == "fulgora" then
util.set_prerequisite("silica-processing", {"automation-2"})
util.set_prerequisite("silicon-processing", {"silica-processing"})
util.remove_prerequisite("advanced-circuit", "silicon-processing")
elseif mods["any-planet-start"] and util.me.get_setting("aps-planet") == "gleba" then
util.add_new_crafting_category("handcrafting", true)
data:extend({
{
type = "recipe",
name = "silica-from-ash-by-hand",
localised_name = {"item-name.silica"},
category = "handcrafting",
subgroup = "raw-material",
enabled = false,
energy_required = 1,
ingredients = {
{type= "item", name="razorgrass-ash", amount=1},
},
results = {util.item("silica", 1)}
},
})
util.add_unlock("razorgrass", "silica-from-ash-by-hand")
end

View file

@ -0,0 +1,8 @@
local util = require("data-util")
util.add_hot_metals({
{name="silicon", icons={
{ icon = "__bzsilicon__/graphics/icons/silicon.png", icon_size = 64},
{ icon = "__bzsilicon__/graphics/icons/silicon.png", icon_size = 64, tint={.9,.3,0, .5}},
}},
})

View file

@ -0,0 +1,4 @@
if mods["Krastorio2"] then
local k2datautil = require("__Krastorio2__/data-util")
k2datautil.remove_recipe_unlock("kr-silicon-processing", "kr-quartz")
end

298
bzsilicon2/control-util.lua Normal file
View file

@ -0,0 +1,298 @@
local me = require("me")
local util = {}
util.me = me
local regenerate_command = "bz-regenerate"
local list_command = "bz-list"
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.check_fluid_mining()
if me.fluid_mining then
for i, force in pairs(game.forces) do
if (
(force.technologies["uranium-processing"] and force.technologies["uranium-processing"].researched) or
(force.technologies["titanium-processing"] and force.technologies["titanium-processing"].researched) or
false
) then
force.technologies["fluid-mining"].researched = true
end
end
end
end
function get_list()
local p = prototypes.item[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 list(event)
if event.command and string.lower(event.command) == "bz-list" then
local player = game.players[event.player_index]
if player and player.connected then
local list = get_list()
if list and #list>0 then
local filename = util.me.name..".txt"
helpers.write_file(filename, list, false, event.player_index)
player.print("Wrote recipes to script-output/"..filename)
else
player.print("Please change your mod startup setting for this mod's modified recipes list.")
end
end
end
end
function util.add_command_handler()
script.on_event(defines.events.on_console_command, route)
end
function route(event)
if event.command == regenerate_command then regenerate_ore(event) end
if event.command == list_command then list(event) end
end
function util.add_list_command_handler()
util.add_command_handler()
if not commands.commands[list_command] then
commands.add_command(list_command, "", function() end)
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
local usage_regenerate = [[
Recommend saving the game before running this command.
Usage: /bz-regenerate all
or /bz-regenerate <planet> <resource> [<frequency> <size> <richness>]
planet must be an internal name like nauvis
resource must be an internal name like lead-ore or titanium-ore
frequency, size, and richness are optional, but all or none must be provided, and each should be a number between 0.166 and 6, where 1 is default setting.
Regenerates ore patches. If frequency/size/richness are provided, the planet will use those settings from now on, as well.
- Separate arguments with spaces, do not use < >, [ ], quotes or other symbols
- This action can take a while for larger maps!
- Ores can sometimes overlap on regeneration. This can sometimes hide ore patches. If none seem to be made for a resource, regenerate just that resource and tweak frequency/size.
]]
function util.add_regenerate_command_handler()
util.add_command_handler()
if not commands.commands[regenerate_command] then
commands.add_command( regenerate_command, usage_regenerate, function() end)
end
end
function regenerate_ore(event)
if event.command == regenerate_command then
local params = {}
for w in event.parameters:gmatch("%S+") do table.insert(params, w) end
if #params == 1 and params[1] == "all" then
for _, resource in pairs(me.resources) do
if prototypes.entity[resource[1]] then
game.print("Regenerating "..resource[1])
game.regenerate_entity(resource[1])
end
end
return
end
if not (#params == 2 or #params == 5) then
game.print(usage_regenerate)
return
end
local planet = params[1]
for _, resource in pairs(me.resources) do
if not game.surfaces[planet] then
game.print("Could not find surface for "..planet..". May not exist, or may not yet be explored.")
return
end
if resource[1] == params[2] and (resource[2] == planet or "tenebris" == planet) then
if #params == 5 then
local settings = {frequency=params[3], size=params[4], richness=params[5]}
local map_gen_settings = game.surfaces[planet].map_gen_settings
map_gen_settings.autoplace_controls[resource[1]] = settings
map_gen_settings.autoplace_settings.entity.settings[resource[1]] = settings
game.surfaces[planet].map_gen_settings = map_gen_settings
game.print("Set "..resource[1].." on "..planet.." to "..serpent.line(settings))
end
game.print("Regenerating "..resource[1])
game.surfaces[planet].regenerate_entity(resource[1])
end
end
end
end
function util.ore_fix()
ore_fix("nauvis")
ore_fix("vulcanus")
if game.surfaces.tenebris then
ore_fix("tenebris")
end
end
function ore_fix(surface_name)
for _, resource in pairs(me.resources) do
if resource[2] == surface_name then
if game.surfaces[resource[2]] then
local map_gen_settings = game.surfaces[surface_name].map_gen_settings
if map_gen_settings.autoplace_controls[resource[1]] == nil then
map_gen_settings.autoplace_controls[resource[1]] = {}
end
if map_gen_settings.autoplace_settings.entity.settings[resource[1]] == nil then
map_gen_settings.autoplace_settings.entity.settings[resource[1]] = {}
end
game.surfaces[surface_name].map_gen_settings = map_gen_settings
end
end
end
end
-- A workaround for generating ores until this bug is fixed:
-- https://forums.factorio.com/viewtopic.php?f=7&t=124996&p=655013#p655013
function util.ore_workaround(event)
for i, ore in pairs(util.me.ores_for_workaround) do
if (
event.surface and
event.surface.map_gen_settings and
event.surface.map_gen_settings.autoplace_controls and
event.surface.map_gen_settings.autoplace_controls["titanium-ore"]
) then
return
end
if event.surface.name ~= "nauvis" then return end
if math.random() < settings.global[util.me.name.."-ore-workaround-probability"].value then
util.generate_ore(event, ore.name, ore.amount, ore.tiles)
end
end
end
-- The majority of this function was written by Eradicator, see https://forums.factorio.com/viewtopic.php?t=72723
function util.generate_ore(event, name, amount, tiles)
local biases = {[0] = {[0] = 1}}
local t = 1
repeat
t = t + util.grow(biases,t,tiles)
until t >= tiles
local pos = {x=event.position.x*32, y=event.position.y*32}
local multiplier = math.max(math.abs(event.position.x), math.abs(event.position.y))
if multiplier < 10 then return end -- don't generate too close to start
local total_bias = 0
for x,_ in pairs(biases) do for y,bias in pairs(_) do
total_bias = total_bias + bias
end end
for x,_ in pairs(biases) do for y,bias in pairs(_) do
local entity = {
name = name,
amount = amount * (bias/total_bias) * multiplier,
force = 'neutral',
position = {pos.x+x,pos.y+y},
}
if event.surface.can_place_entity(entity) then
event.surface.create_entity(entity)
end
end end
end
-- The majority of this function was written by Eradicator, see https://forums.factorio.com/viewtopic.php?t=72723
function util.grow(grid,t,tiles)
local w_max = 256
local h_max = 256
local abs = math.abs
local old = {}
local new_count = 0
for x,_ in pairs(grid) do for y,__ in pairs(_) do
table.insert(old,{x,y})
end end
for _,pos in pairs(old) do
local x,y = pos[1],pos[2]
local bias = grid[x][y]
for dx=-1,1,1 do for dy=-1,1,1 do
local a,b = x+dx, y+dy
if (math.random() > 0.9) and (abs(a) < w_max) and (abs(b) < h_max) then
grid[a] = grid[a] or {}
if not grid[a][b] then
grid[a][b] = 1 - (t/tiles)
new_count = new_count + 1
if (new_count+t) == tiles then return new_count end
end
end
end end
end
return new_count
end
return util

35
bzsilicon2/control.lua Normal file
View file

@ -0,0 +1,35 @@
local util = require("control-util")
util.add_regenerate_command_handler()
script.on_configuration_changed(plant_fix)
function plant_fix()
if not script.active_mods["space-age"] then return end
local surface_name = "gleba"
for _, resource in pairs(me.resources) do
local map_gen_settings = game.surfaces[surface_name].map_gen_settings
if map_gen_settings.autoplace_controls[resource] == nil then
map_gen_settings.autoplace_controls[resource] = {}
end
if map_gen_settings.autoplace_settings.entity.settings[resource] == nil then
map_gen_settings.autoplace_settings.entity.settings[resource] = {}
end
game.surfaces[surface_name].map_gen_settings = map_gen_settings
end
end
script.on_event( defines.events.on_console_chat, function(event)
-- refresh recipes, in case of settings change
if event.message and event.message == "SiliconRecipes" and (not event.player_index or not game.players[event.player_index] or game.players[event.player_index].admin) then
if game.players[event.player_index].force.recipes["silicon-wafer"] then
game.players[event.player_index].force.recipes["silicon-wafer"].enabled=true
end
if game.players[event.player_index].force.recipes["solar-cell"] then
game.players[event.player_index].force.recipes["solar-cell"].enabled=true
end
if game.players[event.player_index].force.recipes["hydrogen-chloride"] then
game.players[event.player_index].force.recipes["hydrogen-chloride"].enabled=true
end
end
end)

View file

@ -0,0 +1,51 @@
require("deadlock-stacking")
local util = require("__bzsilicon__.data-util");
-- Mod Mash Splinter Electronics
if mods.modmashsplinterelectronics then
if util.me.more_intermediates() then
util.multiply_recipe("advanced-circuit", 3)
util.add_ingredient("advanced-circuit", "silicon-wafer", 1)
end
util.add_ingredient("processing-unit", "silicon-wafer", 1)
end
if mods["space-age"] then
for i, entity in pairs(data.raw.furnace) do
if entity.result_inventory_size ~= nil and entity.result_inventory_size < 2 and util.contains(entity.crafting_categories, "smelting") then
entity.result_inventory_size = 2
end
if util.contains(entity.crafting_categories, "smelting") then
if entity.energy_source and entity.energy_source.fuel_categories then
for i, cat in pairs(entity.energy_source.fuel_categories) do
if cat == "chemical" and not entity.energy_source.burnt_inventory_size then
entity.energy_source.burnt_inventory_size = 1
end
end
end
end
end
end
util.add_to_product("vtk-deepcore-mining-ore-chunk-refining-stone-focus", "vtk-deepcore-mining-stone-chunk", 12)
util.add_to_product("vtk-deepcore-mining-ore-chunk-refining", "vtk-deepcore-mining-stone-chunk", 10)
util.add_to_product("vtk-deepcore-mining-ore-chunk-refining-no-uranium", "vtk-deepcore-mining-stone-chunk", 10)
util.set_vtk_dcm_ingredients()
if util.me.use_gyros() then
util.add_ingredient("recipe-space-locomotive", "gyro", 1) -- must be in final fixes
end
if util.me.use_gyros() then
-- Mod portal reported issue, can't reproduce, attempt to add gyro at the very end
util.add_ingredient("flying-robot-frame", "gyro", 1)
end
if mods["atan-ash"] and data.raw.item["razorgrass-dried"] then
data.raw.item["razorgrass-dried"].burnt_result = "razorgrass-ash"
end
util.size_recycler_output()

View file

@ -0,0 +1,30 @@
require("recipe-updates")
require("strange-matter")
require("recipes/silicon-vulcanite")
require("compatibility/248k")
require("compatibility/any-planet-start")
require("compatibility/krastorio2")
local util = require("data-util");
if data.raw.resource["stone"] then
if mods["space-exploration"] then
-- local noise = require('noise');
-- -- Increase richness of stone a bit
-- data.raw.resource["stone"].autoplace.richness_expression =
-- data.raw.resource["stone"].autoplace.richness_expression noise.to_noise_expression(4/3)
else
log("Replacing vanilla stone autoplace")
local resource_autoplace = require('resource-autoplace');
data.raw.resource["stone"].autoplace = resource_autoplace.resource_autoplace_settings{
name = "stone",
order = "b",
base_density = 7, -- increased from 4 in vanilla
has_starting_area_placement = true,
regular_rq_factor_multiplier = 1.0,
starting_rq_factor_multiplier = 1.1,
}
end
end
util.redo_recycling()

2172
bzsilicon2/data-util.lua Normal file

File diff suppressed because it is too large Load diff

13
bzsilicon2/data.lua Normal file
View file

@ -0,0 +1,13 @@
require("prototypes/cables")
require("prototypes/silica-recipe")
require("prototypes/silicon-recipe")
require("prototypes/optical-fiber")
require("prototypes/gyro")
require("prototypes/razorgrass")
require("prototypes/stone")
require("prototypes/basic-crusher")
require("recipes/silica-matter")
require("compatibility/hot-metals")
local util = require("data-util");
util.prepare_recycling_helper()

View file

@ -0,0 +1,38 @@
-- Deadlock stacking recipes
local util = require("__bzsilicon__.data-util");
if deadlock and deadlock["add_stack"] then
deadlock.add_stack("silica", "__bzsilicon__/graphics/icons/stacked/silica-stacked.png" , "deadlock-stacking-1", 64)
deadlock.add_stack("optical-fiber", "__bzsilicon__/graphics/icons/stacked/optical-fiber-stacked.png" , "deadlock-stacking-2", 64)
if not util.k2() then
deadlock.add_stack("silicon", "__bzsilicon__/graphics/icons/stacked/silicon-stacked.png" , "deadlock-stacking-2", 64)
end
if util.me.more_intermediates() then
deadlock.add_stack("silicon-wafer", "__bzsilicon__/graphics/icons/stacked/silicon-wafer-stacked.png" , "deadlock-stacking-2", 64)
deadlock.add_stack("solar-cell", "__bzsilicon__/graphics/icons/stacked/solar-cell-stacked.png" , "deadlock-stacking-2", 64)
end
if util.me.use_gyros() then
deadlock.add_stack("gyro", "__bzsilicon__/graphics/icons/stacked/gyro-stacked.png", "deadlock-stacking-3", 128)
end
end
-- Deadlock crating recipes
if deadlock_crating then
deadlock_crating.add_crate("silica", "deadlock-crating-1")
deadlock_crating.add_crate("optical-fiber", "deadlock-crating-2")
if not util.k2() then
deadlock_crating.add_crate("silicon", "deadlock-crating-2")
end
if util.me.more_intermediates() then
deadlock_crating.add_crate("silicon-wafer", "deadlock-crating-2")
deadlock_crating.add_crate("solar-cell", "deadlock-crating-2")
end
if util.me.use_gyros() then
deadlock_crating.add_crate("gyro", "deadlock-crating-3")
end
end
if mods["deadlock_stacked_recipes"] and util.k2() then
-- We assume the crushing stacked quartz -> silica recipe will be added.
util.remove_raw("recipe", "kr-vc-deadlock-stack-quartz")
end

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 410 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 419 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 432 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 413 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 371 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 373 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 373 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 389 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 152 KiB

23
bzsilicon2/info.json Normal file
View file

@ -0,0 +1,23 @@
{
"name": "bzsilicon",
"version": "2.0.16",
"factorio_version": "2.0",
"title": "Silica & Silicon",
"author": "Brevven",
"contact": "",
"homepage": "",
"dependencies": [
"? space-age",
"? Krastorio2",
"? Krastorio2-spaced-out",
"? space-exploration",
"? 248k-Redux",
"? aai-industry",
"? modmashsplinterelectronics",
"? bztitanium",
"(?) IndustrialRevolution",
"base"
],
"description": "Adds silica, silicon, and basic fiber optics to the game. Compatible with Space Age including a new plant & production chain on Gleba.\n\nA standalone piece of BZ Mods, with graphics by snouz."
}

View file

@ -0,0 +1,51 @@
[entity-name]
silica=Silica
silicon=Silizium
silicon-wafer=Silizium Wafer
solar-cell=Solarzelle
optical-fiber=Glasfaser
[item-name]
silica=Silica
silicon=Silizium
silicon-wafer=Silizium Wafer
solar-cell=Solarzelle
optical-fiber=Glasfaser
gyro=MEMS-Gyroskop
[item-description]
silica=Kann direkt verwendet oder weiterverarbeitet werden.
silicon=Wird für verschiedene elektrische und elektronische Anwendungen benötigt.
silicon-wafer=Verwende Silizium in Schaltkreisen.
solar-cell=Nutze den Photovoltaikeffekt, um Sonnenenergie zu nutzen.
optical-fiber=Kabel für Glasfaser, einschließlich Schaltungsnetzwerk.
[technology-name]
silica-processing=Silica-Verarbeitung
silicon-processing=Siliziumverarbeitung
fiber-optics=Glasfaser
gyro=Mikrosysteme
[technology-description]
silica-processing=Verarbeitet Steinziegel zu Silica.
silica-processing-vanilla=
silica-processing-k2=
silicon-processing=Silica zu Silizium verarbeiten.
fiber-optics=Glasfaser für Schaltungsnetzwerke.
gyro=Lerne den Umgang mit winziger beweglicher Elektronik.
[recipe-name]
silica=__ITEM__silica__
silicon=__ITEM__silicon__
optical-fiber=__ITEM__optical-fiber__
# Settings
[mod-setting-name]
bzsilicon-more-intermediates=Aktiviert mehr Zwischenrezepte wie Siliziumwafer.
bzsilicon-bio-crushed-stone=Verwendet für Bio Industries Schotter zur Herstellung von Kieselsäure.
[mod-setting-description]
bzsilicon-more-intermediates=Komplexere Produktionsketten. Optional in Vanille, Krastorio 2 usw. [color = red] Erforderlich für Bio Industries.[/color]
bzsilicon-bio-crushed-stone=Diese Einstellung ist experimentell und wird möglicherweise in einem zukünftigen Update entfernt. Es wird dringend empfohlen, diese Option aktiviert zu lassen. Deaktiviere diese Option nur, wenn die UPS aufgrund der Anzahl der Inserter ausfällt. Auf Benutzerwunsch hinzugefügt.

View file

@ -0,0 +1,74 @@
[entity-name]
silica=Silica
silicon=Silicon
silicon-wafer=Silicon wafer
solar-cell=Solar cell
optical-fiber=Optical Fiber
razorgrass-plant=Razorgrass
basic-crusher=Basic crusher
[entity-description]
razorgrass-plant=A tall, sharp grass that only grows on the rare dry parts of Gleba. High in silica, it uses this advantage to help store water in its long leaves. If these leaves are burned before drying, the upward pressure from the water vapor will carry the silica-rich ash away.
[item-name]
silica=Silica
silicon=Silicon
silicon-wafer=Silicon wafer
solar-cell=Solar cell
optical-fiber=Optical Fiber
gyro=MEMS gyroscope
silicone=Silicone
razorgrass=Razorgrass
razorgrass-dried=Dried razorgrass
razorgrass-seed=Razorgrass seed
razorgrass-ash=Razorgrass ash
basic-crusher=Basic crusher
[item-description]
silica=Can be used directly or processed further.
silicon=Needed for various electrical and electronic applications.
silicon-wafer=Use silicon in circuits.
solar-cell=Use the photovoltaic effect to harness solar energy.
optical-fiber=Cable used for fiber optics, including circuit network.
razorgrass-seed=Can be planted in Gleba highlands.
[technology-name]
silica-processing=Silica processing
silicon-processing=Silicon processing
fiber-optics=Fiber optics
gyro=Microelectromechanical systems
razorgrass=Razorgrass
[technology-description]
silica-processing-vanilla=Process stone brick into silica.
silica-processing-k2=Process quartz into silica.
silicon-processing=Process silica into silicon.
fiber-optics=Optical fiber for circuit network
gyro=Learn to handle tiny moving electronics
razorgrass=A plant made primarily of rigid leaves with high silica content. There must be a way to extract that resource.
[recipe-name]
silica=__ITEM__silica__
silicon=__ITEM__silicon__
optical-fiber=__ITEM__optical-fiber__
razorgrass-ash-washing=Silica from ash
stone-from-lava=Stone from lava
[recipe-description]
razorgrass-dried=A furnace is required to dry razorgrass and release its seeds.
# Settings
[mod-setting-name]
bzsilicon-recipe-bypass=Bypass recipes
bzsilicon-more-intermediates=Enable more intermediate recipes such as silicon wafers.
bzsilicon-bio-crushed-stone=When using Bio Industries, use crushed stone to make silica.
[mod-setting-description]
bzsilicon-recipe-bypass=Skip modifying these recipes (comma-separated list).
bzsilicon-more-intermediates=More complex production chains. Optional in vanilla, Space Age, etc. [color=red]Required for Bio Industries.[/color]
bzsilicon-bio-crushed-stone=This setting is experimental, and may be removed in a future update. It's strongly recommended to keep it enabled. Only disable if your UPS is dropping due to inserter count. Added per user request.
[string-mod-setting]
bzsilicon-more-intermediates-no=No
bzsilicon-more-intermediates-yes=Yes

View file

@ -0,0 +1,58 @@
[entity-name]
silica=珪砂
silicon=シリコン
silicon-wafer=シリコンウェーハー
solar-cell=太陽電池
optical-fiber=光ファイバー
[item-name]
silica=珪砂
silicon=シリコン
silicon-wafer=シリコンウェーハー
solar-cell=太陽電池
optical-fiber=光ファイバー
gyro=MEMSジャイロスコープ
[item-description]
silica=直接利用のほか、更に加工されます。
silicon=さまざまな電気・電子応用アイテムに必要となります。
silicon-wafer=回路に用いるためのシリコンです。
solar-cell=光電効果を介して太陽エネルギーを利用します。
optical-fiber=回路ネットワークをはじめとした繊維光学で利用するケーブル
[technology-name]
silica-processing=珪砂処理
silicon-processing=シリコン処理
fiber-optics=繊維光学
gyro=微小電気機械システム(MEMS)
[technology-description]
silica-processing=
silica-processing-vanilla=__ITEM__stone-brick__を加工して__ITEM__silica__を得ることができます。
silica-processing-k2=__ITEM__quartz__を加工して__ITEM__silica__を得ることができます。
silicon-processing=珪砂を加工してシリコンを得ることができます。
fiber-optics=回路ネットワークに光ファイバーを使用できるようになります。
gyro=極小の可動電子機器について学びます。
[recipe-name]
silica=__ITEM__silica__
silicon=__ITEM__silicon__
optical-fiber=__ITEM__optical-fiber__
# Settings
[mod-setting-name]
bzsilicon-recipe-bypass=改変しないレシピ
bzsilicon-more-intermediates=シリコンウェーハーをはじめとした中間生産物レシピを有効にします。
bzsilicon-bio-crushed-stone=Bio Industoriesと併用時、珪砂作成に crushed stone を使用します。
[mod-setting-description]
bzsilicon-recipe-bypass=指定したレシピの改変を行わない。 (コンマ区切り)
bzsilicon-more-intermediates=製造チェーンをさらに複雑化します。(他MOD未使用時、およびKrastorio 2などでは任意、[color=red]Bio Indistoriesでは必須[/color])
bzsilicon-bio-crushed-stone=この設定は実験的なもので、将来のアップデートで削除される可能性があります。有効なままにしておくことを強く推奨します。UPSが低下する場合に限り無効にしてください。(本設定はユーザーからの要望で追加されました)
[string-mod-setting]
bzsilicon-more-intermediates-no=いいえ
bzsilicon-more-intermediates-yes=はい: シリコンウェーハー, 太陽電池
bzsilicon-more-intermediates-more=もっと (実験的): シリコンウェーハー, 太陽電池, MEMSジャイロスコープ

View file

@ -0,0 +1,58 @@
[entity-name]
silica=실리카
silicon=실리콘
silicon-wafer=실리콘 웨이퍼
solar-cell=솔라셀
optical-fiber=광섬유
[item-name]
silica=실리카
silicon=실리콘
silicon-wafer=실리콘 웨이퍼
solar-cell=솔라셀
optical-fiber=광섬유
gyro=MEMS 자이로스코프
[item-description]
silica=직접 사용하거나 추가로 가공할 수 있습니다.
silicon=다양한 전기 및 전자 용도에 필요합니다.
silicon-wafer=회로에 실리콘을 사용합니다.
solar-cell=태양광 효과를 이용하여 태양 에너지를 활용합니다.
optical-fiber=회로 네트워크를 포함한 광섬유에 사용되는 케이블.
[technology-name]
silica-processing=실리카 가공
silicon-processing=실리콘 가공
fiber-optics=광섬유 광학
gyro=미세 전자 기계 시스템
[technology-description]
silica-processing=벽돌을 실리카로 가공합니다.
silica-processing-vanilla=
silica-processing-k2=
silicon-processing=실리카를 실리콘으로 가공합니다.
fiber-optics=회로 네트워크용 광섬유
gyro=움직이는 작은 전자 제품을 다루는 법을 배웁니다.
[recipe-name]
silica=__ITEM__silica__
silicon=__ITEM__silicon__
optical-fiber=__ITEM__optical-fiber__
# 설정
[mod-setting-name]
bzsilicon-recipe-bypass=우회 제작법
bzsilicon-more-intermediates=실리콘 웨이퍼와 같은 더 많은 중간 제작법을 사용할 수 있습니다.
bzsilicon-bio-crushed-stone=Bio Industries 사용시 부순 돌을 사용하여 규소를 만든다.
[mod-setting-description]
bzsilicon-recipe-bypass=이러한 제작법 수정을 건너뜁니다(콤마로 구분된 목록).
bzsilicon-more-intermediates=더 복잡한 생산 체인. 바닐라, Krastorio 2 등 옵션 [color=red]Bio Industries의 경우 필수.[/color]
bzsilicon-bio-crushed-stone=이 설정은 실험용이며 나중에 업데이트할 때 삭제될 수 있습니다. 활성화 상태를 유지하는 것이 좋습니다. 투입기 수로 인해 UPS가 손실되는 경우에만 비활성화하십시오. 사용자 요청별로 추가됩니다.
[string-mod-setting]
bzsilicon-more-intermediates-no=아니요
bzsilicon-more-intermediates-yes=예: 웨이퍼, 솔라셀
bzsilicon-more-intermediates-more=추가(Alpha): 웨이퍼, 솔라셀, MEMS 자이로스코프

View file

@ -0,0 +1,58 @@
[entity-name]
silica=Krzemionka
silicon=Krzem
silicon-wafer=Wafel krzemowy
solar-cell=Fotoogniwo
optical-fiber=Światłowód
[item-name]
silica=Krzemionka
silicon=Krzem
silicon-wafer=Wafel krzemowy
solar-cell=Fotoogniwo
optical-fiber=Światłowód
gyro=Żyroskop MEMS
[item-description]
silica=Może być użyty bezpośrednio lub podlegać dalszej obróbce
silicon=Używana do produkcji elektrycznych i elektronicznych przedmiotów
silicon-wafer=Ma zastosowanie w obwodach
solar-cell=Wykorzystuje efekt fotowoltaiczny do produckji czystej energii elektrycznej
optical-fiber=Wykorzystywane do szybkiej i efektywnej komunikacji w systemach logicznych
[technology-name]
silica-processing=Przetwórstwo krzemionki
silicon-processing=Przetwórstwo krzemu
fiber-optics=Światłowody
gyro=Systemy mikroelektromechaniczne
[technology-description]
silica-processing=
silica-processing-vanilla=Przetwarzanie kamiennej cegły w krzemionkę.
silica-processing-k2=Przetwarzanie kwarcu w krzemionkę.
silicon-processing=Przetwarza krzemionki w krzem
fiber-optics=Światłowód dla sieci logicznej
gyro=Naucz się obsługiwać małą ruchomą elektronikę
[recipe-name]
silica=__ITEM__silica__
silicon=__ITEM__silicon__
optical-fiber=__ITEM__optical-fiber__
# Settings
[mod-setting-name]
bzsilicon-recipe-bypass=Ominięcie receptur
bzsilicon-more-intermediates=Włącz więcej pośrednich receptur, takich jak płytki krzemowe.
bzsilicon-bio-crushed-stone=Jeśli masz mod Bio Industries - użyj kruszonego kamienia z kruszarek
[mod-setting-description]
bzsilicon-recipe-bypass=Pomiń modyfikację tych receptur (lista oddzielona przecinkami).
bzsilicon-more-intermediates=Bardziej złożone łańcuchy produckji, opcjonalne dla Vanillia, Krastorio2 ale [color=red]wymagane dla Bio Industries.[/color]
bzsilicon-bio-crushed-stone=To ustawienie jest eksperymentalne i może zostać usunięte w przyszłej aktualizacji. Zaleca się pozostawienie go włączonego. Wyłączaj tylko wtedy, gdy twój UPS spada z powodu liczby podajników. Dodano na prośbę użytkownika.
[string-mod-setting]
bzsilicon-more-intermediates-no=Nie
bzsilicon-more-intermediates-yes=Tak: Wafel, ogniwo słoneczne
bzsilicon-more-intermediates-more=Więcej (eksperymentalnie): wafel, ogniwo słoneczne, żyroskop MEMS

View file

@ -0,0 +1,59 @@
[entity-name]
silica=Кремнезем
silicon=Кремний
silicon-wafer=Кремниевая пластина
solar-cell=Солнечная батарея
optical-fiber=Оптоволокно
[item-name]
silica=Кремнезем
silicon=Кремний
silicon-wafer=Кремниевая пластина
solar-cell=Солнечная батарея
optical-fiber=Оптоволокно
gyro=МЭМС-гироскопы
[item-description]
silica=Может использоваться непосредственно или подвергаться дальнейшей обработке.
silicon=Необходим для различных электрических и электронных изделий.
silicon-wafer=Используйте кремний в схемах.
solar-cell=Используйте фотоэлектрический эффект для получения солнечной энергии.
optical-fiber=Кабель, используемый для волоконной оптики, в том числе в сети.
gyro=Гироскопы с микроэлектромеханической системой (MEMS).
[technology-name]
silica-processing=Переработка кремнезема
silicon-processing=Переработка кремния
fiber-optics=Волоконная оптика
gyro=Гироскопы с микроэлектромеханической системой (MEMS) - это датчики движения, которые обнаруживают и измеряют угловое движение объекта
[technology-description]
silica-processing=Переработка каменного кирпича в кремнезем.
silica-processing-vanilla=
silica-processing-k2=
silicon-processing=Переработка кремнезема в кремний.
fiber-optics=Оптоволокно для сети.
gyro=Научитесь обращаться с крошечной подвижной электроникой.
[recipe-name]
silica=__ITEM__silica__
silicon=__ITEM__silicon__
optical-fiber=__ITEM__optical-fiber__
# Settings
[mod-setting-name]
bzsilicon-recipe-bypass=Обходные рецепты
bzsilicon-more-intermediates=Позволяет использовать промежуточные рецепты, такие как кремниевые пластины
bzsilicon-bio-crushed-stone=При использовании Bio Industries для получения кремнезема используется щебень
[mod-setting-description]
bzsilicon-recipe-bypass=Пропустить изменение этих рецептов (список, разделенный запятыми).
bzsilicon-more-intermediates=Более сложные производственные цепочки. Опционально в Ваниле, Krastorio 2, др. [color=red]Требуется для Bio Industries.[/color]
bzsilicon-bio-crushed-stone=Эта настройка является экспериментальной и может быть удалена в будущем обновлении. Настоятельно рекомендуется держать его включенным. Отключать только в том случае, если ваш UPS падает из-за количества инсертеров. Добавлено по просьбе пользователя.
[string-mod-setting]
bzsilicon-more-intermediates-no=Нет
bzsilicon-more-intermediates-yes=Да: Пластины, Солнечные батареи
bzsilicon-more-intermediates-more=Да (Экспериментально): Пластины, Солнечные батареи, МЭМС-гироскопы

View file

@ -0,0 +1,61 @@
[entity-name]
silica=二氧化硅
silicon=
silicon-wafer=硅片
solar-cell=太阳能电池
optical-fiber=光纤
[item-name]
silica=二氧化硅
silicon=
silicon-wafer=硅片
solar-cell=太阳能电池
optical-fiber=光纤
gyro=微机械陀螺仪
[item-description]
silica=可以直接使用,或进一步处理。
silicon=需要使用于各种电力机器或电子元件中。
silicon-wafer=在电路板中使用硅。
solar-cell=通过光伏效应来利用太阳能。
optical-fiber=用于传输光纤的线缆,用于信号网络。
[technology-name]
silica-processing=二氧化硅处理
silicon-processing=硅处理
fiber-optics=光纤
gyro=微电子机械系统
[technology-description]
silica-processing=将石砖加工成二氧化硅。
silica-processing-vanilla=
silica-processing-k2=
silicon-processing=将二氧化硅加工成硅。
fiber-optics=用于信号网络的光纤。
gyro=学习处理微小的移动电子器械。
[recipe-name]
silica=__ITEM__silica__
silicon=__ITEM__silicon__
optical-fiber=__ITEM__optical-fiber__
# Settings
[mod-setting-name]
bzsilicon-recipe-bypass=跳过合成
bzsilicon-more-intermediates=启用更多中间配方,例如硅片。
bzsilicon-bio-crushed-stone=(生物工业)使用碎石加工成二氧化硅。
[mod-setting-description]
bzsilicon-recipe-bypass=跳过修改这些合成(用逗号分开)。
bzsilicon-more-intermediates=更多复杂的生产线,选用。[color=red]在和生物工业游玩时必须启用![/color]
bzsilicon-bio-crushed-stone=此设置是实验性的可能会在未来更新中去除。极度推荐保持启用除非UPS由于过多的机械臂的数量而下降。
[string-mod-setting]
bzsilicon-more-intermediates-no=不启用
bzsilicon-more-intermediates-yes=启用:硅片,太阳能电池
bzsilicon-more-intermediates-more=启用+更多(实验性): 硅片,太阳能电池,微机械陀螺仪
[mod-name]
bzsilicon=BZ-硅

40
bzsilicon2/me.lua Normal file
View file

@ -0,0 +1,40 @@
local me = {}
me.name = "bzsilicon"
me.resources = {{"razorgrass-plant", "gleba"}}
me.silicon_processing = (mods and data.raw.technology["kr-silicon-processing"] and "kr-silicon-processing") or "silicon-processing"
me.recipes = {"silica", "silicon", "optical-fiber", "silicon-wafer", "solar-cell", "gyro", "silicon-smelting-vulcanite"}
function me.use_gyros()
return me.more_intermediates()
end
function me.more_intermediates()
if me.get_setting("bz-all-intermediates") then return true end
return mods["Bio_Industries_2"] or me.get_setting("bzsilicon-more-intermediates") == "yes"
end
function me.use_bio_crushed_stone()
return mods["Bio_Industries_2"] and me.get_setting("bzsilicon-bio-crushed-stone") == true
end
function me.get_setting(name)
if settings.startup[name] == nil then
return nil
end
return settings.startup[name].value
end
me.bypass = {}
if me.get_setting(me.name.."-recipe-bypass") then
for recipe in string.gmatch(me.get_setting(me.name.."-recipe-bypass"), '[^",%s]+') do
me.bypass[recipe] = true
end
end
function me.add_modified(name)
if me.get_setting(me.name.."-list") then
table.insert(me.list, name)
end
end
return me

View file

@ -0,0 +1,184 @@
local futil = require("util")
local util = require("data-util");
local item_sounds = require("__base__.prototypes.item_sounds")
local sounds = require("__base__.prototypes.entity.sounds")
local hit_effects = require("__base__.prototypes.entity.hit-effects")
if mods["space-age"] and not data.raw.furnace["basic-crusher"] and not mods["crushing-industry"] then
-- note that crusher is a space age asset and as such can only be used with space age
local graphics = require("__space-age__.prototypes.entity.crusher-pictures")
graphics.integration_patch.north.scale = graphics.integration_patch.north.scale * 0.5
graphics.integration_patch.east.scale = graphics.integration_patch.east.scale * 0.5
graphics.integration_patch.south.scale = graphics.integration_patch.south.scale * 0.5
graphics.integration_patch.west.scale = graphics.integration_patch.west.scale * 0.5
graphics.animation.north.layers[1].scale = graphics.animation.north.layers[1].scale * 0.5
graphics.animation.north.layers[2].scale = graphics.animation.north.layers[2].scale * 0.5
graphics.animation.south.layers[1].scale = graphics.animation.south.layers[1].scale * 0.5
graphics.animation.south.layers[2].scale = graphics.animation.south.layers[2].scale * 0.5
graphics.animation.east.layers[1].scale = graphics.animation.east.layers[1].scale * 0.5
graphics.animation.east.layers[2].scale = graphics.animation.east.layers[2].scale * 0.5
graphics.animation.west.layers[1].scale = graphics.animation.west.layers[1].scale * 0.5
graphics.animation.west.layers[2].scale = graphics.animation.west.layers[2].scale * 0.5
graphics.working_visualisations[1].north_animation.scale = graphics.working_visualisations[1].north_animation.scale * 0.5
graphics.working_visualisations[1].east_animation.scale = graphics.working_visualisations[1].east_animation.scale * 0.5
graphics.working_visualisations[1].south_animation.scale = graphics.working_visualisations[1].south_animation.scale * 0.5
graphics.working_visualisations[1].west_animation.scale = graphics.working_visualisations[1].west_animation.scale * 0.5
graphics.integration_patch.north.shift[1] = graphics.integration_patch.north.shift[1] * 0.5
graphics.integration_patch.north.shift[2] = graphics.integration_patch.north.shift[2] * 0.5
graphics.integration_patch.south.shift[1] = graphics.integration_patch.south.shift[1] * 0.5
graphics.integration_patch.south.shift[2] = graphics.integration_patch.south.shift[2] * 0.5
graphics.integration_patch.east.shift[1] = graphics.integration_patch.east.shift[1] * 0.5
graphics.integration_patch.east.shift[2] = graphics.integration_patch.east.shift[2] * 0.5
graphics.integration_patch.west.shift[1] = graphics.integration_patch.west.shift[1] * 0.5
graphics.integration_patch.west.shift[2] = graphics.integration_patch.west.shift[2] * 0.5
graphics.animation.north.layers[1].shift[1] = graphics.animation.north.layers[1].shift[1] * 0.5
graphics.animation.north.layers[1].shift[2] = graphics.animation.north.layers[1].shift[2] * 0.5
graphics.animation.north.layers[2].shift[1] = graphics.animation.north.layers[2].shift[1] * 0.5
graphics.animation.north.layers[2].shift[2] = graphics.animation.north.layers[2].shift[2] * 0.5
graphics.animation.south.layers[1].shift[1] = graphics.animation.south.layers[1].shift[1] * 0.5
graphics.animation.south.layers[1].shift[2] = graphics.animation.south.layers[1].shift[2] * 0.5
graphics.animation.south.layers[2].shift[1] = graphics.animation.south.layers[2].shift[1] * 0.5
graphics.animation.south.layers[2].shift[2] = graphics.animation.south.layers[2].shift[2] * 0.5
graphics.animation.east.layers[1].shift[1] = graphics.animation.east.layers[1].shift[1] * 0.5
graphics.animation.east.layers[1].shift[2] = graphics.animation.east.layers[1].shift[2] * 0.5
graphics.animation.east.layers[2].shift[1] = graphics.animation.east.layers[2].shift[1] * 0.5
graphics.animation.east.layers[2].shift[2] = graphics.animation.east.layers[2].shift[2] * 0.5
graphics.animation.west.layers[1].shift[1] = graphics.animation.west.layers[1].shift[1] * 0.5
graphics.animation.west.layers[1].shift[2] = graphics.animation.west.layers[1].shift[2] * 0.5
graphics.animation.west.layers[2].shift[1] = graphics.animation.west.layers[2].shift[1] * 0.5
graphics.animation.west.layers[2].shift[2] = graphics.animation.west.layers[2].shift[2] * 0.5
graphics.working_visualisations[1].north_animation.shift[1] = graphics.working_visualisations[1].north_animation.shift[1] * 0.5
graphics.working_visualisations[1].north_animation.shift[2] = graphics.working_visualisations[1].north_animation.shift[2] * 0.5
graphics.working_visualisations[1].south_animation.shift[1] = graphics.working_visualisations[1].south_animation.shift[1] * 0.5
graphics.working_visualisations[1].south_animation.shift[2] = graphics.working_visualisations[1].south_animation.shift[2] * 0.5
graphics.working_visualisations[1].east_animation.shift[1] = graphics.working_visualisations[1].east_animation.shift[1] * 0.5
graphics.working_visualisations[1].east_animation.shift[2] = graphics.working_visualisations[1].east_animation.shift[2] * 0.5
graphics.working_visualisations[1].west_animation.shift[1] = graphics.working_visualisations[1].west_animation.shift[1] * 0.5
graphics.working_visualisations[1].west_animation.shift[2] = graphics.working_visualisations[1].west_animation.shift[2] * 0.5
util.add_new_crafting_category("basic-crushing", true)
data:extend({
{
type = "item",
name = "basic-crusher",
icons = {{icon = "__space-age__/graphics/icons/crusher.png", icon_size=64, scale=0.8, tint={.7,.7,.7}}},
subgroup = "production-machine",
order = "s[crusher]",
inventory_move_sound = item_sounds.drill_inventory_move,
pick_sound = item_sounds.drill_inventory_pickup,
drop_sound = item_sounds.drill_inventory_move,
place_result = "basic-crusher",
stack_size = 10,
weight = 50*kg
},
{
type = "furnace",
name = "basic-crusher",
icons = {{icon = "__space-age__/graphics/icons/crusher.png", icon_size=64, scale=0.8, tint={.7,.7,.7}}},
source_inventory_size = 1,
result_inventory_size = 1,
icon = "__space-age__/graphics/icons/crusher.png",
flags = {"placeable-neutral", "placeable-player", "player-creation"},
minable = {mining_time = 0.5, result = "basic-crusher"},
-- fast_replaceable_group = "",
max_health = 350,
corpse = "electric-furnace-remnants",
dying_explosion = "electric-furnace-explosion",
circuit_wire_max_distance = 9,
circuit_connector = circuit_connector_definitions["crusher"],
resistances =
{
{
type = "fire",
percent = 80
}
},
collision_box = {{-0.4, -0.8}, {0.4, 0.8}},
-- collision_box = {{-0.7, -1.2}, {0.7, 1.2}},
surface_conditions =
{
{
property = "gravity",
min = 0.1,
-- max =
}
},
selection_box = {{-.5, -1}, {.5, 1}},
damaged_trigger_effect = hit_effects.entity(),
module_slots = 0,
icons_positioning =
{
{inventory_index = defines.inventory.furnace_modules, shift = {0, 0.3}}
},
icon_draw_specification = { scale=0.5},
allowed_effects = {"consumption", "speed", "productivity", "pollution", "quality"},
crafting_categories = {"basic-crushing"},
crafting_speed = 2,
energy_usage = "100kW",
heating_energy = "200kW",
energy_source =
{
type = "electric",
usage_priority = "secondary-input",
emissions_per_minute = { pollution = 1 }
},
open_sound = sounds.electric_large_open,
close_sound = sounds.electric_large_close,
working_sound =
{
sound =
{
filename = "__space-age__/sound/entity/crusher/crusher-loop.ogg",
volume = 0.8
},
audible_distance_modifier = 0.6,
fade_in_ticks = 4,
fade_out_ticks = 20,
max_sounds_per_type = 3
},
graphics_set = graphics,
water_reflection =
{
pictures =
{
filename = "__space-age__/graphics/entity/crusher/crusher-reflection.png",
priority = "extra-high",
width = 24,
height = 24,
shift = futil.by_pixel(5, 40-32),
variation_count = 1,
scale = 5
},
rotate = false,
orientation_to_variation = false
}
},
{
type = "recipe",
name = "basic-crusher",
enabled = false,
ingredients =
{
{type = "item", name = "steel-plate", amount = 10},
{type = "item", name = "iron-plate", amount = 10},
{type = "item", name = "iron-gear-wheel", amount = 10},
},
energy_required = 2.5,
results = {{type="item", name="basic-crusher", amount=1}}
},
})
if mods["aai-industry"] then
util.add_unlock("sand-processing", "basic-crusher")
util.add_prerequisite("sand-processing", "steel-processing")
else
util.add_unlock("automation-2", "basic-crusher")
end
util.add_prerequisite("silica-processing", "automation-2")
end
-- For graphite we can't have steel as an ingredient.
util.remove_ingredient("basic-crusher", "steel-plate")
util.add_to_ingredient("basic-crusher", "iron-plate", 20)

View file

@ -0,0 +1,13 @@
local util = require("data-util");
if not util.se6() and not data.raw["item-subgroup"]["cable"] then
data:extend({
{
type = "item-subgroup",
name = "cable",
group = "intermediate-products",
order = "f-z",
}
})
util.set_item_subgroup("copper-cable", "cable")
end

View file

@ -0,0 +1,73 @@
local util = require("data-util");
local item_sounds = require('__base__.prototypes.item_sounds')
if util.me.use_gyros() then
local silicon = util.k2() and "kr-silicon" or "silicon"
gyro_ingredients = { -- outputs 4
util.item("copper-cable", 2),
util.item("silica", 1),
util.item(silicon, 4)}
gyro_prereqs = {util.me.silicon_processing}
if mods["bzcarbon2"] then
table.insert(gyro_ingredients, util.item("diamond", 1))
table.insert(gyro_prereqs, "diamond-processing")
end
if mods.bztungsten2 and not mods["space-age"] then
table.insert(gyro_ingredients, util.item("tungsten-plate", 1))
table.insert(gyro_prereqs, "tungsten-processing")
elseif mods.bztitanium and data.raw.item["titanium-plate"] then
table.insert(gyro_ingredients, util.item("titanium-plate", 1))
table.insert(gyro_prereqs, "titanium-processing")
elseif util.k2() then
table.insert(gyro_ingredients, util.item("kr-rare-metals", 1))
end
data:extend({
{
type = "item",
name = "gyro",
icon = "__bzsilicon__/graphics/icons/gyro.png",
icon_size = 128,
inventory_move_sound = item_sounds.electric_small_inventory_move,
pick_sound = item_sounds.electric_small_inventory_pickup,
drop_sound = item_sounds.electric_small_inventory_move,
subgroup = util.se6() and "electronic" or "intermediate-product",
order = "s[silicon]-z-gyro",
stack_size = util.get_stack_size(200),
weight = 0.5*kg,
},
{
type = "recipe",
name = "gyro",
category = "crafting",
subgroup = "intermediate-product",
enabled = false,
energy_required = 12,
allow_productivity = true,
ingredients = gyro_ingredients,
results = {util.item("gyro", 4)},
},
{
type = "technology",
name = "gyro",
icon_size = 256,
icon = "__bzsilicon__/graphics/technology/gyro.png",
effects = {{type = "unlock-recipe", recipe="gyro"}},
unit =
{
count = 100,
ingredients =
{
{"automation-science-pack", 1},
{"logistic-science-pack", 1},
{"chemical-science-pack", 1},
},
time = 30
},
prerequisites = gyro_prereqs,
order = "b-b"
},
})
end

View file

@ -0,0 +1,60 @@
-- Optical Fiber
local util = require("__bzsilicon__.data-util");
local item_sounds = require('__base__.prototypes.item_sounds')
data:extend(
{
{
type = "item",
name = "optical-fiber",
icon = "__bzsilicon__/graphics/icons/optical-fiber.png",
icon_size = 64, icon_mipmaps = 3,
inventory_move_sound = item_sounds.wire_inventory_move,
pick_sound = item_sounds.wire_inventory_pickup,
drop_sound = item_sounds.wire_inventory_move,
subgroup = util.cablesg,
order = "a[optical-fiber]",
stack_size = util.get_stack_size(200),
weight = 1*kg,
},
{
type = "recipe",
name = "optical-fiber",
enabled = false,
allow_productivity = true,
ingredients = {util.item("silica", 1)},
results = {util.item("optical-fiber", 1)},
-- expensive =
-- {
-- enabled = false,
-- ingredients = {{"silica", 2}},
-- results = {util.item("optical-fiber", 1)},
-- },
},
{
type = "technology",
name = "fiber-optics",
icon = "__bzsilicon__/graphics/technology/optical-fiber-tech.png",
icon_size = 256, icon_mipmaps = 4,
effects =
{
{
type = "unlock-recipe",
recipe = "optical-fiber"
}
},
unit =
{
count = 100,
ingredients =
{
{"automation-science-pack", 1},
{"logistic-science-pack", 1},
},
time = 10
},
prerequisites = {"lamp", "silica-processing"},
order = "b-b"
},
}
)

View file

@ -0,0 +1,362 @@
if mods["space-age"] then
local futil = require("util")
local util = require("data-util")
local space_age_item_sounds = require("__space-age__.prototypes.item_sounds")
local item_sounds = require('__base__.prototypes.item_sounds')
data.raw.planet.gleba.map_gen_settings.autoplace_settings.entity.settings["razorgrass-plant"] = {}
local function razorgrass_variations()
local variation_count = 8 --variation_count or 5
local per_row = 4 -- per_row or 5
local scale_multiplier = .5
local width = 600
local height = 800
local variations = {}
local shift = futil.by_pixel(0,-60) -- shift or futil.by_pixel(52, -40)
local sshift = futil.by_pixel(60, -4)
for i = 1, variation_count do
local x = ((i - 1) % per_row) * width
local y = math.floor((i-1)/per_row) * height
local sx = ((i - 1) % per_row) * height -- Shadow images are rotated
local sy = math.floor((i-1)/per_row) * width -- Shadow images are rotated
local variation = {
trunk = {
filename = "__bzsilicon__/graphics/entity/razorgrass.png",
flags = { "mipmap" },
surface = "gleba",
width = width,
height = height,
x = x,
y = y,
frame_count = 1,
shift = shift,
scale = 0.33 * scale_multiplier
},
leaves = {
filename = "__bzsilicon__/graphics/entity/razorgrass-leaves.png",
flags = { "mipmap" },
surface = "gleba",
width = width,
height = height,
x = x,
y = y,
frame_count = 1,
shift = shift,
scale = 0.33 * scale_multiplier
},
normal = {
filename = "__bzsilicon__/graphics/entity/razorgrass-normal.png",
surface = "gleba",
width = width,
height = height,
x = x,
y = y,
frame_count = 1,
shift = shift,
scale = 0.33 * scale_multiplier
},
shadow = {
frame_count = 2,
lines_per_file = 1,
line_length = 1,
flags = { "mipmap", "shadow" },
surface = "gleba",
filenames =
{
"__bzsilicon__/graphics/entity/razorgrass-shadow.png",
"__bzsilicon__/graphics/entity/razorgrass-shadow2.png",
},
width = height, --shadows are rotated
height = width, --shadows are rotated
x = sx,
y = sy,
shift = sshift,
scale = 0.33 * scale_multiplier
},
-- underwater = gleba_tree_underwater_things[name] and gleba_tree_underwater_things[name].underwater or nil,
-- water_reflection = gleba_tree_underwater_things[name] and gleba_tree_underwater_things[name].water_reflection or nil,
leaf_generation =
{
type = "create-particle",
particle_name = "leaf-particle",
offset_deviation = {{-0.5, -0.5}, {0.5, 0.5}},
initial_height = 2,
initial_vertical_speed = 0.01,
initial_height_deviation = 0.05,
speed_from_center = 0.01,
speed_from_center_deviation = 0.01
},
branch_generation =
{
type = "create-particle",
particle_name = "branch-particle",
offset_deviation = {{-0.5, -0.5}, {0.5, 0.5}},
initial_height = 2,
initial_height_deviation = 2,
initial_vertical_speed = 0.01,
speed_from_center = 0.03,
speed_from_center_deviation = 0.01,
frame_speed = 0.4,
repeat_count = 15
}
}
table.insert(variations, variation)
end
return variations
end
local function minor_tints() -- Only for leaves where most if the colour is baked in.
return {
{r = 255, g = 255, b = 255},
{r = 220, g = 255, b = 255},
{r = 255, g = 220, b = 255},
{r = 255, g = 255, b = 220},
{r = 220, g = 220, b = 255},
{r = 255, g = 220, b = 220},
{r = 220, g = 255, b = 220},
}
end
data:extend({
{
type = "plant",
name = "razorgrass-plant", --silica
icon = "__bzsilicon__/graphics/technology/razorgrass.png",
icon_size = 256,
growth_ticks = 5 * 60 * 60,
agricultural_tower_tint = {primary = {.2, .7, .7}, secondary = {.4, .9, .9}},
harvest_emissions = {spores = 3},
flags = plant_flags,
minable =
{
mining_particle = "leaf-particle",
mining_time = 0.5,
results =
{
{type = "item", name = "razorgrass", amount = 50}
},
},
mining_sound = sound_variations("__space-age__/sound/mining/axe-mining-sunnycomb", 5, 0.7),
mined_sound = sound_variations("__space-age__/sound/mining/mined-sunnycomb", 5, 0.6),
emissions_per_second = plant_emissions,
max_health = 50,
collision_box = {{-0.4, -0.8}, {0.4, 0.2}},
selection_box = {{-1, -1}, {1, 1}},
drawing_box_vertical_extension = 0.8,
subgroup = "trees",
order = "a[tree]-c[gleba]-b[normal]-r[razorgrass]",
impact_category = "tree",
factoriopedia_simulation = {
planet = "gleba",
hide_factoriopedia_gradient = true,
init =
[[
game.simulation.camera_zoom = 1.4
game.simulation.camera_position = {-0.5, 0}
for x = -10, 9, 1 do
for y = -4, 4 do
game.surfaces[1].set_tiles{{position = {x, y}, name = "midland-cracked-lichen"}}
end
end
game.surfaces[1].create_entity{name = "razorgrass-plant", position = {x=-2.54, y=-0.76}, tick_grown = 100}
game.surfaces[1].create_entity{name = "razorgrass-plant", position = {x=2.87, y=-0.37}, tick_grown = 8000}
game.surfaces[1].create_entity{name = "razorgrass-plant", position = {x=-4.68, y=1.83}, tick_grown = 1000}
game.surfaces[1].create_entity{name = "razorgrass-plant", position = {x=-0.10, y=0.67}, tick_grown = 10000}
game.surfaces[1].create_entity{name = "razorgrass-plant", position = {x=4.80, y=1.69}, tick_grown = 100}
]]
},
autoplace =
{
control = "gleba_plants",
order = "a[tree]-b[forest]-c",
probability_expression = "max(main_probability, invasion_tall_probability)",
richness_expression = "random_penalty_at(3, 1)",
tile_restriction = {
"midland-cracked-lichen",
"midland-cracked-lichen-dull",
"midland-yellow-crust",
"midland-yellow-crust-2",
"midland-yellow-crust-3",
"highland-dark-rock",
"highland-dark-rock-2",
"highland-yellow-rock",
},
local_expressions = {
main_box = "gleba_select(gleba_moisture, 0, 0.25, 0.01, -10, 1) - 1",
main_probability = "min(0.08, 0.15 * (main_box + gleba_plants_noise_b - 0.45) * control:gleba_plants:size)", -- bigger patches, denser
invasion_tall_box = "gleba_select(gleba_moisture, 0, 0.35, 0.01, -10, 1) - 1",
invasion_tall_probability = "min(0.05, 0.15 * (invasion_tall_box + gleba_plants_noise_b - 0.4) * control:gleba_plants:size)", -- smaller patches, sparser
}
},
variations = razorgrass_variations(), -- gleba_tree_variations("sunnycomb", 10, 5, nil, 3200/5, 1120/2),
colors = minor_tints(),
ambient_sounds =
{
sound =
{
variations = sound_variations("__space-age__/sound/world/plants/sunnycomb", 8, 0.7),
advanced_volume_control =
{
fades = {fade_in = {curve_type = "cosine", from = {control = 0.5, volume_percentage = 0.0}, to = {1.5, 100.0}}}
}
},
radius = 7.5,
min_entity_count = 2,
max_entity_count = 10,
entity_to_sound_ratio = 0.3,
average_pause_seconds = 10
},
},
})
data:extend({
{
type = "technology",
name = "razorgrass",
icon_size = 256,
icon = "__bzsilicon__/graphics/technology/razorgrass.png",
effects = util.me.more_intermediates() and {
{ type = "unlock-recipe", recipe = "silicone", },
{ type = "unlock-recipe", recipe = "razorgrass-dried", },
{ type = "unlock-recipe", recipe = "razorgrass-ash-washing", },
} or {
{ type = "unlock-recipe", recipe = "razorgrass-dried", },
{ type = "unlock-recipe", recipe = "razorgrass-ash-washing", },
},
research_trigger =
{
type = "mine-entity",
entity = "razorgrass-plant",
},
prerequisites = {"agriculture"},
order = "b-b",
},
{
type = "item",
name = "razorgrass",
icon = "__bzsilicon__/graphics/icons/razorgrass.png",
icon_size = 128,
pictures = {
{filename="__bzsilicon__/graphics/icons/razorgrass.png", size=128, scale=.3},
{filename="__bzsilicon__/graphics/icons/razorgrass-1.png", size=128, scale=.3},
{filename="__bzsilicon__/graphics/icons/razorgrass-2.png", size=128, scale=.3},
{filename="__bzsilicon__/graphics/icons/razorgrass-3.png", size=128, scale=.3},
},
inventory_move_sound = space_age_item_sounds.agriculture_inventory_move,
pick_sound = space_age_item_sounds.agriculture_inventory_pickup,
drop_sound = space_age_item_sounds.agriculture_inventory_move,
subgroup = "agriculture-processes",
group = "intermediate-products",
stack_size = 50,
order = "b[agriculture]-r[razorgrass]",
fuel_category = "chemical",
fuel_value = "1MJ",
spoil_ticks = 1*60*60*60,
spoil_result = "razorgrass-dried",
weight = 1*kg,
},
{
type = "item",
name = "razorgrass-dried",
icon = "__bzsilicon__/graphics/icons/razorgrass-dried.png",
icon_size = 128,
pictures = {
{filename="__bzsilicon__/graphics/icons/razorgrass-dried.png", size=128, scale=.3},
{filename="__bzsilicon__/graphics/icons/razorgrass-dried-1.png", size=128, scale=.3},
{filename="__bzsilicon__/graphics/icons/razorgrass-dried-2.png", size=128, scale=.3},
{filename="__bzsilicon__/graphics/icons/razorgrass-dried-3.png", size=128, scale=.3},
},
inventory_move_sound = space_age_item_sounds.agriculture_inventory_move,
pick_sound = space_age_item_sounds.agriculture_inventory_pickup,
drop_sound = space_age_item_sounds.agriculture_inventory_move,
subgroup = "agriculture-processes",
group = "intermediate-products",
stack_size = 100,
order = "b[agriculture]-r[razorgrass-dried]",
burnt_result = "razorgrass-ash",
fuel_category = "chemical",
fuel_value = "1MJ",
weight = 1*kg,
},
{
type = "item",
name = "razorgrass-ash",
icon = "__bzsilicon__/graphics/icons/ash.png",
icon_size = 64,
inventory_move_sound = item_sounds.sulfur_inventory_move,
pick_sound = item_sounds.resource_inventory_pickup,
drop_sound = item_sounds.sulfur_inventory_move,
subgroup = "agriculture-processes",
group = "intermediate-products",
stack_size = 100,
order = "b[agriculture]-r[razorgrass-ash]",
},
{
type = "recipe",
name = "razorgrass-dried",
main_product = "razorgrass-dried",
subgroup = "agriculture-processes",
category = "smelting",
enabled = false,
energy_required = 6,
allow_productivity = true,
ingredients = {
util.item("razorgrass", 1),
},
results = {
util.item("razorgrass-dried", 1),
util.item("razorgrass-seed", 1, .03),
}
},
{
type = "recipe",
name = "razorgrass-ash-washing",
icons = {
{ icon = "__bzsilicon__/graphics/icons/ash.png", icon_size = 64, scale=0.5, shift = {-4,-4}},
{ icon = "__bzsilicon__/graphics/icons/silica.png", icon_size = 64, scale=0.25, shift={8, 8}},
},
subgroup = "agriculture-processes",
category = "chemistry",
enabled = false,
energy_required = 1,
allow_productivity = true,
ingredients = {
util.item("razorgrass-ash", 1),
util.fluid("water", 10),
util.fluid("sulfuric-acid", 1),
},
results = {
util.item("silica", 10)
}
},
{
type = "item",
name = "razorgrass-seed",
icon = "__bzsilicon__/graphics/icons/razorgrass-seed.png",
icon_size = 128,
localised_name = {"item-name.razorgrass-seed"},
localised_description = {"item-description.razorgrass-seed"},
pictures = {
{filename="__bzsilicon__/graphics/icons/razorgrass-seed.png", size=128, scale=.25},
{filename="__bzsilicon__/graphics/icons/razorgrass-seed-1.png", size=128, scale=.25},
{filename="__bzsilicon__/graphics/icons/razorgrass-seed-2.png", size=128, scale=.25},
{filename="__bzsilicon__/graphics/icons/razorgrass-seed-3.png", size=128, scale=.25},
},
subgroup = "agriculture-processes",
order = "a[seeds]-r[razorgrass-seed]",
plant_result = "razorgrass-plant",
place_result = "razorgrass-plant",
inventory_move_sound = space_age_item_sounds.agriculture_inventory_move,
pick_sound = space_age_item_sounds.agriculture_inventory_pickup,
drop_sound = space_age_item_sounds.agriculture_inventory_move,
stack_size = 10,
default_import_location = "gleba",
weight = 10 * kg,
fuel_category = "chemical",
fuel_value = "1MJ"
},
})
end

View file

@ -0,0 +1,137 @@
-- Silica
local util = require("__bzsilicon__.data-util");
local item_sounds = require('__base__.prototypes.item_sounds')
data:extend(
{
util.k2() and {
type = "recipe",
name = "silica",
category = "kr-crushing",
enabled = false,
energy_required = 4,
allow_productivity = true,
ingredients = {util.item("kr-quartz", 10)},
results = {util.item("silica", 30)}
} or util.me.use_bio_crushed_stone() and {
type = "recipe",
name = "silica",
category = "smelting",
enabled = false,
energy_required = 6,
allow_productivity = true,
ingredients = {util.item("stone-crushed", 4)},
results = {util.item("silica", 5)},
} or mods["omnimatter"] and {
type = "recipe",
name = "silica",
category = "smelting",
enabled = false,
energy_required = 6,
allow_productivity = true,
ingredients = {util.item("stone-crushed", 4)},
results = {util.item("silica", 5)},
} or
{
type = "recipe",
name = "silica",
category = mods["space-age"] and "basic-crushing" or "smelting",
enabled = false,
energy_required = 3.2,
allow_productivity = true,
ingredients = mods["space-age"] and {util.item("stone", 2)} or {util.item("stone-brick", 1)},
results = {util.item("silica", 5)}
-- expensive =
-- {
-- enabled = false,
-- energy_required = 6.4,
-- ingredients = {util.item("stone-brick", 2)},
-- results = {util.item("silica", 5)}
-- },
},
{
type = "item",
name = "silica",
icon = "__bzsilicon__/graphics/icons/silica.png",
icon_size = 64, icon_mipmaps = 3,
inventory_move_sound = item_sounds.sulfur_inventory_move,
pick_sound = item_sounds.resource_inventory_pickup,
drop_sound = item_sounds.sulfur_inventory_move,
subgroup = "raw-material",
order = "b[silica]",
stack_size = util.get_stack_size(100),
weight = 0.2*kg,
},
util.k2() and {
type = "technology",
name = "silica-processing",
icon_size = 256, icon_mipmaps = 4,
icon = "__bzsilicon__/graphics/technology/silica-processing.png",
effects =
{
{
type = "unlock-recipe",
recipe = "silica"
},
{
type = "unlock-recipe",
recipe = "kr-quartz"
},
},
prerequisites = {"kr-fluids-chemistry", "kr-stone-processing"},
unit =
{
count = 10,
ingredients =
{
{"automation-science-pack", 1},
},
time = 30
},
order = "b-b",
localised_description = {"", {"technology-description.silica-processing"},
{"technology-description.silica-processing-k2"}}
} or {
type = "technology",
name = "silica-processing",
icon_size = 256, icon_mipmaps = 4,
icon = "__bzsilicon__/graphics/technology/silica-processing.png",
prerequisites = {"logistic-science-pack"},
effects =
{
{
type = "unlock-recipe",
recipe = "silica"
}
},
unit =
{
count = 10,
ingredients =
{
{"automation-science-pack", 1},
{"logistic-science-pack", 1},
},
time = 30
},
order = "b-b",
localised_description = {"", {"technology-description.silica-processing"},
{"technology-description.silica-processing-vanilla"}}
},
}
)
if mods.maraxsis then
data:extend({
{
type = "recipe",
name = "silica-from-sand-maraxsis",
localised_name = {"item-name.silica"},
category = "basic-crushing",
enabled = false,
energy_required = 1.6,
allow_productivity = true,
ingredients = {util.item("sand", 1)},
results = {util.item("silica", 5)},
}
})
end

View file

@ -0,0 +1,211 @@
-- Silicon
local util = require("data-util");
local item_sounds = require('__base__.prototypes.item_sounds')
local silicon = util.k2() and "kr-silicon" or "silicon"
if util.k2() then
util.remove_raw("recipe", "kr-silicon")
util.remove_recipe_effect("kr-silicon-processing", "kr-silicon")
if mods["Sebs-Electrics"] then
util.add_unlock("kr-silicon-processing", "kr-silicon")
end
end
local prerequisites = {}
if util.me.more_intermediates() and mods["space-age"] then
prerequisites = {"silica-processing", "sulfur-processing"}
else
prerequisites = {"silica-processing", "logistic-science-pack"}
end
data:extend(
{
util.k2() and {
type = "recipe",
name = "kr-silicon",
category = "smelting",
enabled = false,
energy_required = 14.4,
allow_productivity = true,
ingredients = {
util.item("silica", 18),
util.item("kr-coke", 1),
},
results = {util.item("kr-silicon", 3)}
} or {
type = "recipe",
name = "silicon",
category = "smelting",
enabled = false,
energy_required = 3.2,
allow_productivity = true,
ingredients = {util.item("silica", 10)},
results = {util.item("silicon", 1)}
},
(not util.k2()) and
{
type = "item",
name = "silicon",
icon = "__bzsilicon__/graphics/icons/silicon.png",
icon_size = 64, icon_mipmaps = 3,
inventory_move_sound = item_sounds.sulfur_inventory_move,
pick_sound = item_sounds.resource_inventory_pickup,
drop_sound = item_sounds.sulfur_inventory_move,
subgroup = "raw-material",
order = "b[silicon]",
stack_size = util.get_stack_size(100),
weight = 1*kg,
} or nil,
(not util.k2()) and
{
type = "technology",
name = "silicon-processing",
icon_size = 256, icon_mipmaps = 4,
icon = "__bzsilicon__/graphics/technology/silicon-processing.png",
effects =
{
{
type = "unlock-recipe",
recipe = "silicon",
},
util.me.more_intermediates() and
{
type = "unlock-recipe",
recipe = "silicon-wafer",
} or nil,
},
unit =
{
count = 100,
ingredients =
{
{"automation-science-pack", 1},
{"logistic-science-pack", 1},
},
time = 30
},
prerequisites = prerequisites,
order = "b-b"
} or nil,
}
)
if util.me.more_intermediates() then
data:extend({
{
type = "item",
name = "silicon-wafer",
icon = "__bzsilicon__/graphics/icons/silicon-wafer.png",
icon_size = 64, icon_mipmaps = 3,
inventory_move_sound = item_sounds.electric_small_inventory_move,
pick_sound = item_sounds.electric_small_inventory_pickup,
drop_sound = item_sounds.electric_small_inventory_move,
subgroup = "intermediate-product",
stack_size = util.get_stack_size(100),
order = "s[silicon]-silicon-wafer",
weight = 1*kg,
},
{
type = "recipe",
name = "silicon-wafer",
category = "crafting-with-fluid",
subgroup = "intermediate-product",
enabled = false,
energy_required = 2,
allow_productivity = true,
ingredients = (util.k2() and {
{type= "item", name="kr-silicon", amount=2},
{type= "fluid", name="kr-hydrogen-chloride", amount=5},
} or {
{type= "item", name="silicon", amount=2},
{type= "fluid", name="sulfuric-acid", amount=5},
}),
results = {util.item("silicon-wafer", 3)}
},
{
type = "item",
name = "silicone",
icon = "__bzsilicon__/graphics/icons/silicone.png",
icon_size = 64,
subgroup = "intermediate-product",
stack_size = util.get_stack_size(100),
order = "s[silicon]-silicone",
weight = 2*kg,
},
{
type = "recipe",
name = "silicone",
icon = "__bzsilicon__/graphics/icons/silicone-recipe.png",
icon_size = 128,
subgroup = "intermediate-product",
category = mods["space-age"] and "organic-or-chemistry" or "crafting-with-fluid",
enabled = false,
energy_required = 10,
allow_productivity = true,
ingredients = {
{type= "item", name=silicon, amount=10},
{type= "item", name="copper-plate", amount=1},
{type= "fluid", name="water", amount=20},
},
results = {util.item("silicone", 5)}
},
{
type = "item",
name = "solar-cell",
icon = "__bzsilicon__/graphics/icons/solar-cell.png",
icon_size = 64, icon_mipmaps = 3,
inventory_move_sound = item_sounds.electric_small_inventory_move,
pick_sound = item_sounds.electric_small_inventory_pickup,
drop_sound = item_sounds.electric_small_inventory_move,
subgroup = "intermediate-product",
stack_size = util.get_stack_size(100),
order = "s[silicon]-solar-cell",
weight = 0.5*kg,
},
{
type = "recipe",
name = "solar-cell",
category = "crafting",
subgroup = "intermediate-product",
enabled = false,
energy_required = 2,
allow_productivity = true,
ingredients = {
{type= "item", name="silicon-wafer", amount=1},
{type= "item", name="electronic-circuit", amount=1},
},
results = {util.item("solar-cell", 2)}
},
})
if mods["space-age"] then
data:extend({
{
type = "recipe",
name = "silicon-wafer-by-hand",
localised_name = {"item-name.silicon-wafer"},
category = "handcrafting",
subgroup = "intermediate-product",
enabled = false,
energy_required = 2,
allow_productivity = true,
ingredients = {
util.item(silicon, 1),
},
results = {util.item("silicon-wafer", 1)}
},
})
util.add_new_crafting_category("handcrafting", true)
util.add_unlock("silicon-processing", "silicon-wafer-by-hand")
end
if not mods["space-age"] then
util.add_unlock("silicon-processing", "silicone")
end
end
util.add_effect("kr-fluids-chemistry", {type="unlock-recipe", recipe="kr-hydrogen-chloride"})
util.add_unlock("kr-silicon-processing", mods.Krastorio2 and "kr-silicon" or "silicon")
if util.me.more_intermediates() and not mods["space-age"] then
util.add_unlock("advanced-circuit", "silicon-wafer")
util.add_prerequisite("advanced-circuit", "sulfur-processing")
util.add_prerequisite("circuit-network", "advanced-circuit")
util.add_prerequisite("solar-energy", "advanced-circuit")
end

View file

@ -0,0 +1,31 @@
local util = require("data-util")
if mods["space-age"] then
data:extend({
{
type = "recipe",
name = "stone-from-lava",
icons = {
{icon = "__space-age__/graphics/icons/fluid/lava.png", icon_size=64, shift={0,-8}},
{icon = "__base__/graphics/icons/stone.png", icon_size=64, scale = 0.333, shift={0,8}},
},
category = "metallurgy",
subgroup = "vulcanus-processes",
order = "a[melting]-a[lava-a]",
auto_recycle = false,
enabled = false,
ingredients =
{
{type = "item", name = "calcite", amount = 1},
{type = "fluid", name = "lava", amount = 500},
{type = "fluid", name = "water", amount = 250},
},
energy_required = 16,
results =
{
{type = "item", name = "stone", amount = 25},
},
allow_productivity = true
},
})
util.add_unlock("foundry", "stone-from-lava")
end

View file

@ -0,0 +1,297 @@
local util = require("data-util");
local silicon = util.k2() and "kr-silicon" or "silicon"
local si = util.me.more_intermediates() and "silicon-wafer" or silicon
if util.me.use_gyros() then
util.add_ingredient("flying-robot-frame", "gyro", 1)
util.add_prerequisite("robotics", "gyro")
util.add_ingredient("distractor-capsule", "gyro", 3)
util.add_prerequisite("distractor", "gyro")
util.add_ingredient("laser-turret", "gyro", 1)
util.add_prerequisite("laser-turret", "gyro")
util.add_ingredient("artillery-shell", "gyro", 1)
util.add_ingredient("rocket-control-unit", "gyro", 1)
util.add_ingredient("gunship", "gyro", 1)
util.add_prerequisite("gunships", "gyro")
util.add_ingredient("flying-fortress", "gyro", 4)
util.add_ingredient("jet", "gyro", 4)
util.add_ingredient("jetpack-2", "gyro", 2)
util.add_prerequisite("jetpack-2", "gyro")
--K2
util.add_ingredient("advanced-exoskeleton-equipment", "gyro", 4)
util.add_ingredient("kr-laser-artillery-turret", "gyro", 4)
util.add_ingredient("kr-railgun-turret", "gyro", 4)
util.add_ingredient("kr-advanced-tank", "gyro", 4)
util.add_ingredient("kr-rocket-turret", "gyro", 1)
util.add_ingredient("kr-nuclear-locomotive", "gyro", 1)
--SE
util.add_ingredient("se-spaceship-console", "gyro", 4)
util.add_ingredient("se-space-mechanical-laboratory", "gyro", 14)
util.add_ingredient("se-space-gravimetrics-laboratory", "gyro", 8)
util.add_ingredient("se-delivery-cannon", "gyro", 2)
util.add_ingredient("se-thruster-suit-2", "gyro", 2)
end
util.replace_ingredient("cryogenic-plant", "processing-unit", "optical-fiber", 50)
util.add_ingredient("quantum-processor", "optical-fiber", 2)
if data.raw.item["silicone"] then
if mods["space-age"] then
util.add_ingredient("spidertron", "silicone", 8)
util.add_ingredient("stack-inserter", "silicone", 1)
util.add_ingredient("mech-armor", "silicone", 50)
util.add_ingredient("cryogenic-plant", "silicone", 20)
util.add_ingredient("capture-bot-rocket", "silicone", 2)
util.add_ingredient("biolab", "silicone", 1)
util.add_prerequisite("biochamber", "razorgrass")
util.add_ingredient("fusion-reactor-equipment", "silicone", 10)
util.add_ingredient("fusion-power-cell", "silicone", 1)
util.replace_some_ingredient("biolubricant", "jelly", 10, "silicone", 5)
else
util.add_to_product("lubricant", "lubricant", 10)
util.add_ingredient("lubricant", "silicone", 1)
util.replace_some_ingredient("engine-unit", "pipe", 1, "silicone", 1)
util.add_prerequisite("engine", "silicon-processing")
util.remove_prior_unlocks("advanced-circuit", "silicon-wafer")
util.add_prerequisite("silicon-processing", "automation-2")
util.add_ingredient("power-armor", "silicone", 20)
util.add_ingredient("exoskeleton-equipment", "silicone", 10)
util.add_ingredient("fission-reactor-equipment", "silicone", 80)
util.add_ingredient("personal-roboport-mk2-equipment", "silicone", 50)
end
end
util.add_ingredient("solar-cell", "lead-plate", 1)
if not util.k2() then
util.remove_ingredient("concrete", "stone-brick");
if mods["Bio_Industries"] or mods["omnimatter"] then
util.add_ingredient("concrete", "stone-brick", 3);
util.add_ingredient("concrete", "silica", 10);
else
util.add_ingredient("concrete", "silica", 25);
end
util.add_prerequisite("concrete", "silica-processing")
if util.me.more_intermediates() then
util.replace_some_ingredient("processing-unit", "electronic-circuit", 10, "silicon-wafer", 10)
util.multiply_recipe("efficiency-module", 2)
util.remove_ingredient("efficiency-module", "electronic-circuit")
util.add_ingredient("efficiency-module", "silicon-wafer", 5)
util.multiply_recipe("quality-module", 2)
util.remove_ingredient("quality-module", "electronic-circuit")
util.add_ingredient("quality-module", "silicon-wafer", 5)
util.multiply_recipe("productivity-module", 2)
util.remove_ingredient("productivity-module", "electronic-circuit")
util.add_ingredient("productivity-module", "silicon-wafer", 5)
util.multiply_recipe("speed-module", 2)
util.remove_ingredient("speed-module", "electronic-circuit")
util.add_ingredient("speed-module", "silicon-wafer", 5)
if mods.IndustrialRevolution then
util.add_ingredient("solar-panel", "solar-cell", 9)
util.add_effect("ir2-solar-energy-1", {type = "unlock-recipe", recipe="solar-cell"})
else
util.replace_ingredient("solar-panel", "electronic-circuit", "solar-cell")
util.add_effect("solar-energy", {type = "unlock-recipe", recipe="solar-cell"})
end
util.replace_ingredient("solar-panel-equipment", "solar-panel", "solar-cell")
if not mods.modmashsplinterelectonics then
util.multiply_recipe("advanced-circuit", 3)
util.replace_some_ingredient("advanced-circuit", "electronic-circuit", 3, "silicon-wafer", 3)
end
util.add_prerequisite("advanced-circuit", util.me.silicon_processing)
else
util.replace_some_ingredient("solar-panel", "electronic-circuit", 10, silicon, 10)
util.replace_some_ingredient("processing-unit", "electronic-circuit", 10, silicon, 6)
util.remove_ingredient("efficiency-module", "electronic-circuit")
util.add_ingredient("efficiency-module", silicon, 3)
util.remove_ingredient("quality-module", "electronic-circuit")
util.add_ingredient("quality-module", silicon, 3)
util.remove_ingredient("productivity-module", "electronic-circuit")
util.add_ingredient("productivity-module", silicon, 3)
util.remove_ingredient("speed-module", "electronic-circuit")
util.add_ingredient("speed-module", silicon, 3)
if not mods.modmashsplinterelectonics then
util.replace_some_ingredient("advanced-circuit", "electronic-circuit", 1, silicon, 1)
end
util.add_prerequisite("advanced-circuit", util.me.silicon_processing)
end
util.add_prerequisite("solar-energy", "silicon-processing")
util.add_prerequisite("modules", util.me.silicon_processing)
else
util.add_ingredient("concrete", "silica", 15);
if not mods["aai-industry"] then
util.add_ingredient("concrete", "kr-sand", 10);
end
end
util.replace_ingredient("beacon", "copper-cable", "optical-fiber")
util.add_prerequisite("effect-transmission", "fiber-optics")
-- Circuit network changes
local useful_combinators = {"timer-combinator", "counting-combinator", "random-combinator",
"power-combinator", "max-combinator", "min-combinator", "and-gate-combinator",
"nand-gate-combinator", "nor-gate-combinator", "not-gate-combinator", "or-gate-combinator",
"xnor-gate-combinator", "xor-gate-combinator", "converter-combinator", "detector-combinator",
"sensor-combinator", "railway-combinator", "color-combinator", "daytime-combinator",
"statistic-combinator", "pollution-combinator", "emitter-combinator", "receiver-combinator"}
util.replace_ingredient("green-wire", "copper-cable", "optical-fiber")
util.replace_ingredient("green-wire", "electronic-circuit", silicon)
util.replace_ingredient("red-wire", "copper-cable", "optical-fiber")
util.replace_ingredient("red-wire", "electronic-circuit", silicon)
if not mods["IndustrialRevolution"] then
util.add_ingredient("arithmetic-combinator", si, 1)
util.add_ingredient("constant-combinator", si, 1)
util.add_ingredient("decider-combinator", si, 1)
util.add_ingredient("programmable-speaker", si, 1)
if mods["UsefulCombinators"] then
for i, v in ipairs(useful_combinators) do
util.add_ingredient(v, si, 1)
end
end
if mods["crafting_combinator"] then
util.add_ingredient("crafting_combinator:crafting-combinator", si, 1)
util.add_ingredient("crafting_combinator:recipe-combinator", si, 1)
end
util.add_ingredient("clock-combinator", si, 1)
util.add_ingredient("power-meter-combinator", si, 1)
util.add_ingredient("ghost-scanner", si, 1)
util.add_ingredient("item-sensor", si, 1)
util.add_ingredient("bi-pollution-sensor", si, 1)
else
util.add_prerequisite("circuit-network", "fiber-optics")
end
util.add_ingredient("arithmetic-combinator", "optical-fiber", 1)
util.add_ingredient("constant-combinator", "optical-fiber", 1)
util.add_ingredient("decider-combinator", "optical-fiber", 1)
util.add_ingredient("programmable-speaker", "optical-fiber", 1)
util.add_ingredient("display-panel", "optical-fiber", 1)
if mods["UsefulCombinators"] then
for i, v in ipairs(useful_combinators) do
util.add_ingredient(v, "optical-fiber", 1)
end
end
if mods["crafting_combinator"] then
util.add_ingredient("crafting_combinator:crafting-combinator", "optical-fiber", 1)
util.add_ingredient("crafting_combinator:recipe-combinator", "optical-fiber", 1)
end
util.add_ingredient("clock-combinator", "optical-fiber", 1)
util.add_ingredient("power-meter-combinator", "optical-fiber", 1)
util.add_ingredient("ghost-scanner", "optical-fiber", 1)
util.add_ingredient("item-sensor", "optical-fiber", 1)
util.add_ingredient("bi-pollution-sensor", "optical-fiber", 1)
-- Transport Drones
util.add_ingredient("road-network-reader", "optical-fiber", 5)
util.replace_some_ingredient("road-network-reader", "electronic-circuit", 5, si, 5)
util.add_ingredient("transport-depot-reader", "optical-fiber", 5)
util.replace_some_ingredient("transport-depot-reader", "electronic-circuit", 5, si, 5)
util.add_ingredient("transport-depot-writer", "optical-fiber", 5)
util.replace_some_ingredient("transport-depot-writer", "electronic-circuit", 5, si, 5)
util.add_prerequisite("circuit-network", "fiber-optics")
util.add_prerequisite("circuit-network", util.me.silicon_processing)
if util.k2() then
util.add_ingredient("kr-advanced-lab", "optical-fiber", 10)
util.add_ingredient("kr-ai-core", "optical-fiber", 2)
util.add_prerequisite(util.me.silicon_processing, "silica-processing")
if util.me.more_intermediates() then
util.add_effect(util.me.silicon_processing, {type = "unlock-recipe", recipe="silicon-wafer"})
util.remove_ingredient("kr-electronic-components", silicon)
util.add_ingredient("kr-electronic-components", "silicon-wafer", 2)
util.multiply_recipe("kr-electronic-components-with-lithium", 2)
util.remove_ingredient("kr-electronic-components-with-lithium", silicon)
util.add_ingredient("kr-electronic-components-with-lithium", "silicon-wafer", 6)
util.replace_ingredient("solar-panel", "electronic-circuit", "solar-cell")
util.remove_ingredient("solar-panel", silicon)
util.replace_ingredient("solar-panel-equipment", "solar-panel", "solar-cell")
util.add_effect("solar-energy", {type = "unlock-recipe", recipe="solar-cell"})
end
end
if mods["aai-signal-transimission"] then
util.add_ingredient("aai-signal-receiver", "optical-fiber", 2)
util.add_ingredient("aai-signal-sender", "optical-fiber", 2)
end
if mods["aai-industry"] then
util.add_ingredient("beacon", "optical-fiber", 10)
end
if mods["space-exploration"] then
util.add_ingredient("se-space-astrometrics-laboratory", "optical-fiber", 10)
util.add_ingredient("se-space-gravimetrics-laboratory", "optical-fiber", 10)
util.add_ingredient("se-space-laser-laboratory", "optical-fiber", 10)
util.add_ingredient("se-space-science-lab", "optical-fiber", 10)
util.add_ingredient("se-space-supercomputer-1", "optical-fiber", 100)
util.add_ingredient("se-space-supercomputer-2", "optical-fiber", 500)
util.add_ingredient("se-polarisation-data", "optical-fiber", 1)
util.add_ingredient("se-chemical-gel", "silica", 10)
util.add_ingredient("se-material-testing-pack", "silica", 1)
end
if mods["zombiesextended-core"] then
util.add_ingredient("complex-processing-unit", si, 2)
end
if mods["extended-research-system"] and mods["Bio_Industries"] then
data:extend({{
type = "recipe",
name = "bi-stone-crusher-ers",
category = "crafting",
enabled = true,
energy_required = 6,
ingredients = {util.item("iron-plate", 100), util.item("iron-gear-wheel", 5)},
results = util.item("bi-stone-crusher"),
}})
if data.raw.recipe["bi-crushed-stone-1"] then
data.raw.recipe["bi-crushed-stone-1"].enabled = true
end
end
-- Sand in crusher. If sand comes from stone, silica comes from sand
if mods["space-age"] then
local sand = mods["Krastorio2"] and "kr-sand" or "sand"
if data.raw.item[sand] and data.raw.recipe[sand] and #data.raw.recipe[sand].ingredients == 1 then
data.raw.recipe[sand].category = "basic-crushing"
log(serpent.block(data.raw.recipe.sand))
if data.raw.recipe.sand.ingredients[1].name == "stone" then
util.replace_ingredient("silica", "stone", sand, 1)
util.set_product_amount("silica", "silica", 1)
util.set_recipe_time("silica", 0.5)
end
end
end
-- Maraxsis
util.replace_ingredient("maraxsis-glass-panes", "sand", "silica", 10)
util.add_unlock("maraxsis-glassworking", "silica-from-sand-maraxsis")

View file

@ -0,0 +1,17 @@
local util = require("data-util");
if util.k2() then
util.k2matter({
k2matter = {
material = {
name = "silica",
type = "item",
amount = 20
},
matter_count = .65,
energy_required = 2,
needs_stabilizer = false,
allow_productivity = true,
unlocked_by = "kr-matter-stone-processing"
},
}, false)
end

View file

@ -0,0 +1,54 @@
local util = require("data-util");
if mods["space-exploration"] then
if data.raw["item-subgroup"]["stone"] then
util.set_item_subgroup("silica", "stone")
util.set_item_subgroup("silicon", "stone")
util.set_subgroup("silicon", "stone")
end
se_delivery_cannon_recipes["silica"] = {name= "silica"}
if mods["Krastorio2"] then
local recipe = data.raw.recipe["se-kr-silicon-with-vulcanite"]
recipe.ingredients = {
{type="item", name="silica", amount=18},
{type="fluid", name="se-pyroflux", amount=10},
}
recipe.category = "smelting" -- now uses pyroflux so can't be kiln in se 0.6
recipe.energy_required=21.6
recipe.results = {
{type="item", name = "kr-silicon", amount = 6},
}
table.insert(recipe.ingredients, { type = "item", name = "kr-coke", amount = 1 })
recipe.icons = {
{ icon = "__Krastorio2Assets__/icons/items/silicon.png", icon_size = 64},
{ icon = "__space-exploration-graphics__/graphics/icons/fluid/pyroflux.png", icon_size = 64, scale=0.25, shift= {-10, -10}},
}
else
se_delivery_cannon_recipes["silicon"] = {name= "silicon"}
data:extend({
{
type = "recipe",
name = "silicon-smelting-vulcanite",
category = "smelting",
order = "d[silicon]",
energy_required = 6,
enabled = false,
always_show_made_in = true,
allow_as_intermediate = false,
ingredients = {
{type="item", name = "silica", amount = 20},
{type="fluid", name="se-pyroflux", amount=10},
},
results = {
{type="item", name = "silicon", amount = 3},
},
icons = {
{ icon = "__bzsilicon__/graphics/icons/silicon.png", icon_size = 64, icon_mipmaps = 3 },
{ icon = "__space-exploration-graphics__/graphics/icons/fluid/pyroflux.png", icon_size = 64, scale=0.25, shift= {-10, -10}}
},
},
})
util.add_effect("se-vulcanite-smelting", {type = "unlock-recipe", recipe= "silicon-smelting-vulcanite"})
util.add_effect("se-pyroflux-smelting", {type = "unlock-recipe", recipe= "silicon-smelting-vulcanite"})
end
end

View file

@ -0,0 +1,13 @@
-- WARNING WARNING WARNING
-- This file will be overwritten in mod zipfiles, edit bzlib/settings-util.lua
-- WARNING WARNING WARNING
local util = {}
function util.set_default_value(t, name, default)
if data.raw[t] and data.raw[t][name] then
data.raw[t][name].default_value = default
end
end
return util

29
bzsilicon2/settings.lua Normal file
View file

@ -0,0 +1,29 @@
data:extend( {
{
type = "string-setting",
name = "bzsilicon-recipe-bypass",
setting_type = "startup",
default_value = "",
allow_blank = true,
order = "a-b",
},
{
type = "string-setting",
name = "bzsilicon-more-intermediates",
setting_type = "startup",
default_value = "no",
allowed_values = {"yes", "no"},
order = "a-a",
},
})
if mods.Bio_Industries then
data:extend( {
{
type = "bool-setting",
name = "bzsilicon-bio-crushed-stone",
setting_type = "startup",
default_value = true,
order = "z-a"
},
})
end

View file

@ -0,0 +1,49 @@
local util = require("__bzsilicon__.data-util");
local ore = "silica"
local ore_icon = "__bzsilicon__/graphics/icons/silica.png"
if mods["StrangeMatter"] then
data:extend({
{
type = "recipe",
name = ore.."-synthesis",
icons = {
{ icon = ore_icon, icon_size = 64 },
{ icon = "__StrangeMatter__/graphics/icons/fluid/matter.png", icon_size = 32, scale=0.5, shift= {-8, -8}},
},
enabled = false,
energy_required = 1,
ingredients = {{type="fluid", name="strange-matter", amount = 2}},
result = ore,
category = "crafting-with-fluid",
subgroup = "synthesis",
},
{
type = "technology",
name = ore.."-synthesis",
icons = {
{ icon = "__StrangeMatter__/graphics/icons/fluid/matter.png", icon_size = 32, shift= {-6, 0}},
{ icon = ore_icon, icon_size = 64, scale=0.25, shift={8, 8}},
},
prerequisites = {"stone-synthesis"},
effects = {
{
type = "unlock-recipe",
recipe = ore.."-synthesis",
},
},
unit = {
count = 800,
time = 30,
ingredients = {
{"automation-science-pack", 1},
{"logistic-science-pack", 1},
{"chemical-science-pack", 1},
{"production-science-pack", 1},
}
}
}
})
end

BIN
bzsilicon2/thumbnail.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB