2024-02-11 20:52:21 +00:00
|
|
|
from dataclasses import dataclass
|
|
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
|
|
class Resource:
|
|
|
|
name: str
|
|
|
|
|
|
|
|
# item definitions
|
|
|
|
|
|
|
|
class RS:
|
|
|
|
iron_ore = Resource("Iron Ore")
|
|
|
|
copper_ore = Resource("Copper Ore")
|
|
|
|
uranium_ore = Resource("Uranium Ore")
|
|
|
|
stone = Resource("Stone")
|
|
|
|
coal = Resource("Coal")
|
|
|
|
|
|
|
|
crude_oil = Resource("Crude Oil")
|
|
|
|
water = Resource("Water")
|
|
|
|
|
2024-02-14 01:44:00 +00:00
|
|
|
petroleum_gas = Resource("Petroleum Gas")
|
2024-02-13 18:09:09 +00:00
|
|
|
light_oil = Resource("Light Oil")
|
|
|
|
heavy_oil = Resource("Heavy Oil")
|
|
|
|
|
2024-02-14 01:44:00 +00:00
|
|
|
solid_fuel = Resource("Solid Fuel")
|
|
|
|
rocket_fuel = Resource("Rocket Fuel")
|
|
|
|
|
2024-02-11 20:52:21 +00:00
|
|
|
energy = Resource("Energy (kW)")
|
|
|
|
|
|
|
|
assembler = Resource("Assembler")
|
|
|
|
mining_drill = Resource("Mining Drill")
|
|
|
|
furnace = Resource("Furnace")
|
|
|
|
chemical_plant = Resource("Chemical Plant")
|
|
|
|
oil_refinery = Resource("Oil Refinery")
|
2024-02-14 01:44:00 +00:00
|
|
|
rocket_silo = Resource("Rocket Silo")
|
2024-02-11 20:52:21 +00:00
|
|
|
|
2024-02-13 18:09:09 +00:00
|
|
|
iron_plate = Resource("Iron Plate")
|
|
|
|
copper_plate = Resource("Copper Plate")
|
2024-02-11 20:52:21 +00:00
|
|
|
stone_brick = Resource("Stone Brick")
|
|
|
|
steel = Resource("Steel")
|
|
|
|
|
|
|
|
concrete = Resource("Concrete")
|
|
|
|
|
|
|
|
iron_gear = Resource("Iron Gear")
|
|
|
|
iron_stick = Resource("Iron Stick")
|
2024-02-13 18:09:09 +00:00
|
|
|
pipe = Resource("Pipe")
|
2024-02-11 20:52:21 +00:00
|
|
|
|
|
|
|
copper_cable = Resource("Copper Cable")
|
|
|
|
|
|
|
|
circuit_a = Resource("Electronic Circuit")
|
|
|
|
circuit_b = Resource("Advanced Circuit")
|
|
|
|
circuit_c = Resource("Processing Unit")
|
|
|
|
|
2024-02-14 01:44:00 +00:00
|
|
|
rail = Resource("Rail")
|
|
|
|
electric_furnace = Resource("Electric Furnace")
|
|
|
|
|
2024-02-13 18:09:09 +00:00
|
|
|
sulfur = Resource("Sulfur")
|
|
|
|
sulfuric_acid = Resource("Sulfuric Acid")
|
|
|
|
|
|
|
|
plastic = Resource("Plastic Bar")
|
|
|
|
explosives = Resource("Explosives")
|
|
|
|
battery = Resource("Battery")
|
|
|
|
|
2024-02-14 06:22:35 +00:00
|
|
|
accumulator = Resource("Accumulator")
|
|
|
|
solar_panel = Resource("Solar Panel")
|
|
|
|
|
2024-02-11 20:52:21 +00:00
|
|
|
engine_unit = Resource("Engine Unit")
|
|
|
|
engine_unit_electric = Resource("Electric Engine Unit")
|
|
|
|
|
|
|
|
belt_y = Resource("Transport Belt")
|
2024-02-13 18:09:09 +00:00
|
|
|
# belt_r = Resource("Fast Transport Belt")
|
|
|
|
# belt_b = Resource("Express Transport Belt")
|
2024-02-11 20:52:21 +00:00
|
|
|
|
|
|
|
inserter_y = Resource("Inserter")
|
2024-02-13 18:09:09 +00:00
|
|
|
# inserter_r = Resource("Long-Handed Inserter")
|
|
|
|
# inserter_b = Resource("Fast Inserter")
|
2024-02-11 20:52:21 +00:00
|
|
|
|
|
|
|
steam = Resource("Steam")
|
|
|
|
lubricant = Resource("Lubricant")
|
|
|
|
|
|
|
|
flying_robot_frame = Resource("Flying Robot Frame")
|
|
|
|
low_density_structure = Resource("Low Density Structure")
|
|
|
|
|
2024-02-13 18:09:09 +00:00
|
|
|
magazine_y = Resource("Firearm Magazine")
|
|
|
|
magazine_r = Resource("Piercing Magazine")
|
|
|
|
grenade = Resource("Grenade")
|
2024-02-14 01:44:00 +00:00
|
|
|
wall = Resource("Wall")
|
2024-02-14 06:22:35 +00:00
|
|
|
radar = Resource("Radar")
|
2024-02-13 18:09:09 +00:00
|
|
|
|
|
|
|
rocket_y = Resource("Rocket")
|
|
|
|
rocket_r = Resource("Explosive Rocket")
|
2024-02-11 20:52:21 +00:00
|
|
|
|
2024-02-14 01:44:00 +00:00
|
|
|
rocket_control_unit = Resource("Rocket Control Unit")
|
|
|
|
rocket_part = Resource("Rocket Part")
|
|
|
|
sattelite = Resource("Sattelite")
|
|
|
|
|
|
|
|
module_productivity = Resource("Productivity Module")
|
|
|
|
module_speed = Resource("Productivity Module")
|
|
|
|
|
2024-02-11 20:52:21 +00:00
|
|
|
science_red = Resource("Automation Science Pack")
|
|
|
|
science_green = Resource("Logistic Science Pack")
|
|
|
|
science_gray = Resource("Military Science Pack")
|
|
|
|
science_blue = Resource("Chemical Science Pack")
|
|
|
|
science_purple = Resource("Production Science Pack")
|
|
|
|
science_yellow = Resource("Utility Science Pack")
|
|
|
|
science_white = Resource("Space Science Pack")
|
|
|
|
|
|
|
|
@dataclass
|
|
|
|
class Recipe:
|
|
|
|
name: str
|
|
|
|
resources: dict[Resource, float]
|
|
|
|
|
|
|
|
class Recipies:
|
|
|
|
# mining
|
|
|
|
iron_ore = Recipe("Iron Ore", {RS.mining_drill: -1, RS.iron_ore: 0.5})
|
|
|
|
copper_ore = Recipe("Copper Ore", {RS.mining_drill: -1, RS.copper_ore: 0.5})
|
2024-02-13 18:09:09 +00:00
|
|
|
stone = Recipe("Stone", {RS.mining_drill: -1, RS.stone: 0.5})
|
2024-02-11 20:52:21 +00:00
|
|
|
coal = Recipe("Coal", {RS.mining_drill: -1, RS.coal: 0.5})
|
|
|
|
uranium_ore = Recipe("Uranium Ore", {RS.mining_drill: -1, RS.sulfuric_acid: -0.25, RS.uranium_ore: 0.25})
|
|
|
|
|
2024-02-13 18:09:09 +00:00
|
|
|
# oil
|
|
|
|
basic_oil_processing = Recipe(
|
|
|
|
"Basic Oil Processing",
|
|
|
|
{
|
|
|
|
RS.oil_refinery: -5,
|
|
|
|
RS.crude_oil: -100,
|
2024-02-14 01:44:00 +00:00
|
|
|
RS.petroleum_gas: 45,
|
2024-02-13 18:09:09 +00:00
|
|
|
}
|
|
|
|
)
|
|
|
|
advanced_oil_processing = Recipe(
|
|
|
|
"Advanced Oil Processing",
|
|
|
|
{
|
|
|
|
RS.oil_refinery: -5,
|
|
|
|
RS.crude_oil: -100,
|
|
|
|
RS.water: -50,
|
2024-02-14 01:44:00 +00:00
|
|
|
RS.petroleum_gas: 55,
|
2024-02-13 18:09:09 +00:00
|
|
|
RS.light_oil: 45,
|
|
|
|
RS.heavy_oil: 25,
|
|
|
|
},
|
|
|
|
)
|
|
|
|
coal_liquefaction = Recipe(
|
|
|
|
"Coal Liquefaction",
|
|
|
|
{
|
|
|
|
RS.oil_refinery: -5,
|
|
|
|
RS.coal: -10,
|
|
|
|
RS.steam: -50,
|
2024-02-14 01:44:00 +00:00
|
|
|
RS.petroleum_gas: 10,
|
2024-02-13 18:09:09 +00:00
|
|
|
RS.light_oil: 20,
|
|
|
|
RS.heavy_oil: -25 + 90,
|
|
|
|
}
|
|
|
|
)
|
|
|
|
|
|
|
|
heavy_oil_cracking = Recipe("Heavy Oil Cracking", {RS.chemical_plant: -2, RS.heavy_oil: -40, RS.water: -30, RS.light_oil: 30})
|
2024-02-14 01:44:00 +00:00
|
|
|
light_oil_cracking = Recipe("Light Oil Cracking", {RS.chemical_plant: -2, RS.light_oil: -30, RS.water: -30, RS.petroleum_gas: 20})
|
|
|
|
|
|
|
|
# fuel
|
|
|
|
solid_fuel_pg = Recipe("Solid Fuel (Petroleum Gas)", {RS.chemical_plant: -2, RS.petroleum_gas: -20, RS.solid_fuel: 1})
|
|
|
|
solid_fuel_lo = Recipe("Solid Fuel (Light Oil)", {RS.chemical_plant: -2, RS.light_oil: -10, RS.solid_fuel: 1})
|
|
|
|
solid_fuel_ho = Recipe("Solid Fuel (Heavy Oil)", {RS.chemical_plant: -2, RS.heavy_oil: -20, RS.solid_fuel: 1})
|
|
|
|
|
|
|
|
rocket_fuel = Recipe("Rocket Fuel", {RS.assembler: -30, RS.light_oil: -10, RS.solid_fuel: -10, RS.rocket_fuel: 1})
|
2024-02-13 18:09:09 +00:00
|
|
|
|
2024-02-11 20:52:21 +00:00
|
|
|
# smelting
|
2024-02-13 18:09:09 +00:00
|
|
|
iron_plate = Recipe("Iron Plate", {RS.furnace: -3.2, RS.iron_ore: -1, RS.iron_plate: 1})
|
|
|
|
copper_plate = Recipe("Copper Plate", {RS.furnace: -3.2, RS.copper_ore: -1, RS.copper_plate: 1})
|
2024-02-14 06:22:35 +00:00
|
|
|
stone_brick = Recipe("Stone Brick", {RS.furnace: -3.2, RS.stone: -2, RS.stone_brick: 1})
|
|
|
|
steel = Recipe("Steel", {RS.furnace: -16, RS.iron_plate: -5, RS.steel: 1})
|
2024-02-11 20:52:21 +00:00
|
|
|
|
2024-02-14 01:44:00 +00:00
|
|
|
# crafting basics
|
2024-02-11 20:52:21 +00:00
|
|
|
concrete = Recipe("Concrete", {RS.assembler: -10, RS.iron_ore: -1, RS.stone_brick: -5, RS.water: -100, RS.concrete: 10})
|
|
|
|
|
2024-02-13 18:09:09 +00:00
|
|
|
iron_gear = Recipe("Iron Gear", {RS.assembler: -0.5, RS.iron_plate: -2, RS.iron_gear: 1})
|
|
|
|
iron_stick = Recipe("Iron Stick", {RS.assembler: -0.5, RS.iron_plate: -1, RS.iron_stick: 2})
|
2024-02-14 06:22:35 +00:00
|
|
|
pipe = Recipe("Pipe", {RS.assembler: -0.5, RS.iron_plate: -1, RS.pipe: 1})
|
2024-02-13 18:09:09 +00:00
|
|
|
|
|
|
|
copper_cable = Recipe("Copper Cable", {RS.assembler: -0.5, RS.copper_plate: -1, RS.copper_cable: 2})
|
|
|
|
|
2024-02-14 06:22:35 +00:00
|
|
|
circuit_a = Recipe("Electronic Circuit", {RS.assembler: -0.5, RS.copper_cable: -3, RS.iron_plate: -1, RS.circuit_a: 1})
|
2024-02-13 18:09:09 +00:00
|
|
|
circuit_b = Recipe("Advanced Circuit", {RS.assembler: -6, RS.copper_cable: -4, RS.circuit_a: -2, RS.plastic: -2, RS.circuit_b: 1})
|
|
|
|
circuit_c = Recipe("Processing Unit", {RS.assembler: -10, RS.circuit_b: -2, RS.circuit_a: -20, RS.sulfuric_acid: -5, RS.circuit_c: 1})
|
|
|
|
|
2024-02-14 01:44:00 +00:00
|
|
|
# logistics
|
|
|
|
belt_y = Recipe("Transport Belt", {RS.assembler: -0.5, RS.iron_gear: -1, RS.iron_plate: -1, RS.belt_y: 2})
|
|
|
|
inserter_y = Recipe("Inserter", {RS.assembler: -0.5, RS.circuit_a: -1, RS.iron_gear: -1, RS.iron_plate: -1, RS.inserter_y: 1})
|
|
|
|
|
|
|
|
rail = Recipe("Rail", {RS.assembler: -0.5, RS.iron_stick: -1, RS.steel: -1, RS.stone: -1, RS.rail: 1})
|
|
|
|
electric_furnace = Recipe("Electric Furnace", {RS.assembler: -5, RS.circuit_b: -5, RS.steel: -10, RS.stone_brick: -10, RS.electric_furnace: 1})
|
|
|
|
|
|
|
|
# chemicals
|
|
|
|
sulfur = Recipe("Sulfur", {RS.chemical_plant: -1, RS.petroleum_gas: -30, RS.water: -30, RS.sulfur: 2})
|
2024-02-13 18:09:09 +00:00
|
|
|
sulfuric_acid = Recipe("Sulfuric Acid", {RS.chemical_plant: -1, RS.iron_plate: -1, RS.sulfur: -5, RS.water: -100, RS.sulfuric_acid: 50})
|
|
|
|
|
2024-02-14 01:44:00 +00:00
|
|
|
plastic = Recipe("Plastic", {RS.chemical_plant: -1, RS.coal: -1, RS.petroleum_gas: -20, RS.plastic: 2})
|
2024-02-13 18:09:09 +00:00
|
|
|
explosives = Recipe("Explosives", {RS.chemical_plant: -4, RS.coal: -1, RS.sulfur: -1, RS.water: -10, RS.explosives: 2})
|
|
|
|
battery = Recipe("Battery", {RS.chemical_plant: -4, RS.copper_plate: -1, RS.iron_plate: -20, RS.sulfuric_acid: -20, RS.battery: 1})
|
|
|
|
|
2024-02-14 06:22:35 +00:00
|
|
|
# other energy
|
|
|
|
accumulator = Recipe("Accumulator", {RS.assembler: -10, RS.battery: -5, RS.iron_plate: -2, RS.accumulator: 1})
|
|
|
|
solar_panel = Recipe("Solar Panel", {RS.assembler: -10, RS.copper_plate: -5, RS.circuit_a: -15, RS.steel: -5, RS.solar_panel: 1})
|
|
|
|
|
2024-02-14 01:44:00 +00:00
|
|
|
# military
|
|
|
|
magazine_y = Recipe("Firearm Magazine", {RS.assembler: -1 , RS.iron_plate: -4, RS.magazine_y: 1})
|
|
|
|
magazine_r = Recipe("Piercing Magazine", {RS.assembler: -1 , RS.copper_plate: -5, RS.magazine_y: -1, RS.steel: -1, RS.magazine_r: 1})
|
|
|
|
grenade = Recipe("Grenade", {RS.assembler: -8 , RS.coal: -10, RS.iron_plate: -5, RS.grenade: 1})
|
2024-02-14 06:22:35 +00:00
|
|
|
wall = Recipe("Wall", {RS.assembler: -0.5, RS.stone_brick: -5, RS.wall: 1})
|
2024-02-14 01:44:00 +00:00
|
|
|
|
|
|
|
rocket_y = Recipe("Rocket", {RS.assembler: -8, RS.circuit_a: -1, RS.explosives: -1, RS.iron_plate: -2, RS.rocket_y: 1})
|
|
|
|
rocket_r = Recipe("Explosive Rocket", {RS.assembler: -8, RS.explosives: -2, RS.rocket_r: 1})
|
|
|
|
|
|
|
|
# crafting intermediates
|
2024-02-13 18:09:09 +00:00
|
|
|
engine_unit = Recipe("Engine Unit", {RS.assembler: -10, RS.iron_gear: -1, RS.pipe: -2, RS.steel: -1, RS.engine_unit: 1})
|
|
|
|
engine_unit_electric = Recipe("Electric Engine Unit", {RS.assembler: -10, RS.circuit_a: -2, RS.engine_unit: -1, RS.lubricant: -15, RS.engine_unit_electric: 1})
|
|
|
|
|
2024-02-14 01:44:00 +00:00
|
|
|
rocket_control_unit = Recipe("Rocket Control Unit", {RS.assembler: -30, RS.circuit_c: -1, RS.module_speed: -1, RS.rocket_control_unit: 1})
|
2024-02-13 18:09:09 +00:00
|
|
|
|
2024-02-14 06:22:35 +00:00
|
|
|
flying_robot_frame = Recipe("Flying Robot Frame", {RS.assembler: -20, RS.battery: -2, RS.engine_unit_electric: -1, RS.circuit_a: -3, RS.steel: -1, RS.flying_robot_frame: 1})
|
|
|
|
low_density_structure = Recipe("Low Density Structure", {RS.assembler: -20, RS.copper_plate: -20, RS.plastic: -5, RS.steel: -2, RS.low_density_structure: 1})
|
2024-02-13 18:09:09 +00:00
|
|
|
|
2024-02-14 01:44:00 +00:00
|
|
|
# modules
|
2024-02-14 06:22:35 +00:00
|
|
|
module_productivity = Recipe("Productivity Module", {RS.assembler: -15, RS.circuit_b: -5, RS.circuit_a: -5, RS.module_speed: 1})
|
|
|
|
module_speed = Recipe("Speed Module", {RS.assembler: -15, RS.circuit_b: -5, RS.circuit_a: -5, RS.module_speed: 1})
|
|
|
|
|
|
|
|
# end-game
|
|
|
|
satellite = Recipe("Sattelite", {
|
|
|
|
RS.assembler: -5,
|
|
|
|
RS.accumulator: -100,
|
|
|
|
RS.low_density_structure: -100,
|
|
|
|
RS.circuit_c: -100,
|
|
|
|
RS.radar: -5,
|
|
|
|
RS.rocket_fuel: -50,
|
|
|
|
RS.solar_panel: -100,
|
|
|
|
RS.sattelite: 1,
|
|
|
|
})
|
|
|
|
|
|
|
|
rocket_part = Recipe("Rocket Part", {RS.rocket_silo: -3, RS.low_density_structure: -10, RS.rocket_control_unit: -10, RS.rocket_fuel: -10, RS.rocket_part: 1})
|
2024-02-13 18:09:09 +00:00
|
|
|
|
2024-02-14 01:44:00 +00:00
|
|
|
# science packs
|
|
|
|
science_red = Recipe("Automation Science Pack", {RS.assembler: -5, RS.copper_plate: -1, RS.iron_gear: -1, RS.science_red: 1})
|
|
|
|
science_green = Recipe("Logistic Science Pack", {RS.assembler: -6, RS.belt_y: -1, RS.inserter_y: -1, RS.science_green: 1})
|
|
|
|
science_gray = Recipe("Military Science Pack", {RS.assembler: -10, RS.magazine_r: -1, RS.grenade: -1, RS.wall: -2, RS.science_gray: 2})
|
|
|
|
science_blue = Recipe("Chemical Science Pack", {RS.assembler: -24, RS.sulfur: -1, RS.circuit_b: -3, RS.engine_unit: -2, RS.science_blue: 2})
|
|
|
|
science_purple = Recipe("Production Science Pack", {RS.assembler: -21, RS.rail: -30, RS.electric_furnace: -1, RS.module_productivity: -1, RS.science_purple: 3})
|
|
|
|
science_yellow = Recipe("Utility Science Pack", {RS.assembler: -21, RS.circuit_c: -2, RS.flying_robot_frame: -1, RS.low_density_structure: -3, RS.science_yellow: 3})
|
|
|
|
science_white = Recipe("Space Science Pack", {RS.rocket_part: -100, RS.sattelite: -1, RS.science_white: 1})
|