diff --git a/worlds/factorio/Mod.py b/worlds/factorio/Mod.py index 9889e58bf3..83a1595e9a 100644 --- a/worlds/factorio/Mod.py +++ b/worlds/factorio/Mod.py @@ -14,7 +14,7 @@ import Patch from . import Options from .Technologies import tech_table, recipes, free_sample_exclusions, progressive_technology_table, \ - base_tech_table, tech_to_progressive_lookup, fluids + base_tech_table, tech_to_progressive_lookup, fluids, mods template_env: Optional[jinja2.Environment] = None @@ -34,7 +34,8 @@ base_info = { "factorio_version": "1.1", "dependencies": [ "base >= 1.1.0", - "? science-not-invited" + "? science-not-invited", + "! archipelago-extractor" ] } @@ -191,6 +192,8 @@ def generate_mod(world, output_directory: str): f.write(locale_content) info = base_info.copy() info["name"] = mod_name + for mod in mods.values(): + info["dependencies"].append(f"{mod.name} >= {mod.version}") with open(os.path.join(mod_dir, "info.json"), "wt") as f: json.dump(info, f, indent=4) diff --git a/worlds/factorio/Technologies.py b/worlds/factorio/Technologies.py index b88cc9b1ad..813e34b3ed 100644 --- a/worlds/factorio/Technologies.py +++ b/worlds/factorio/Technologies.py @@ -22,13 +22,14 @@ def load_json_data(data_name: str) -> Union[List[str], Dict[str, Any]]: import pkgutil return json.loads(pkgutil.get_data(__name__, "data/" + data_name + ".json").decode()) - +# TODO: Make use of the lab information. (it has info on the science packs) techs_future = pool.submit(load_json_data, "techs") recipes_future = pool.submit(load_json_data, "recipes") resources_future = pool.submit(load_json_data, "resources") machines_future = pool.submit(load_json_data, "machines") fluids_future = pool.submit(load_json_data, "fluids") items_future = pool.submit(load_json_data, "items") +mods_future = pool.submit(load_json_data, "mods") tech_table: Dict[str, int] = {} technology_table: Dict[str, Technology] = {} @@ -94,6 +95,8 @@ class CustomTechnology(Technology): def __init__(self, origin: Technology, world, allowed_packs: Set[str], player: int): ingredients = origin.ingredients & allowed_packs + if origin.ingredients and not ingredients: + logging.warning(f"Technology {origin.name} has no vanilla science packs. Custom science packs are not supported.") military_allowed = "military-science-pack" in allowed_packs \ and ((ingredients & {"chemical-science-pack", "production-science-pack", "utility-science-pack"}) or origin.name == "rocket-silo") @@ -103,7 +106,8 @@ class CustomTechnology(Technology): ingredients.add("military-science-pack") ingredients = list(ingredients) ingredients.sort() # deterministic sample - ingredients = world.random.sample(ingredients, world.random.randint(1, len(ingredients))) + if ingredients: + ingredients = world.random.sample(ingredients, world.random.randint(1, len(ingredients))) elif origin.name == "rocket-silo" and military_allowed: ingredients.add("military-science-pack") super(CustomTechnology, self).__init__(origin.name, ingredients, origin.factorio_id) @@ -115,13 +119,17 @@ class Recipe(FactorioElement): ingredients: Dict[str, int] products: Dict[str, int] energy: float + mining: bool + unlocked_at_start: bool - def __init__(self, name: str, category: str, ingredients: Dict[str, int], products: Dict[str, int], energy: float): + def __init__(self, name: str, category: str, ingredients: Dict[str, int], products: Dict[str, int], energy: float, mining: bool, unlocked_at_start: bool): self.name = name self.category = category self.ingredients = ingredients self.products = products self.energy = energy + self.mining = mining + self.unlocked_at_start = unlocked_at_start def __repr__(self): return f"{self.__class__.__name__}({self.name})" @@ -147,7 +155,9 @@ class Recipe(FactorioElement): @property def rel_cost(self) -> float: ingredients = sum(self.ingredients.values()) - return min(ingredients / amount for product, amount in self.products.items()) + if all(amount == 0 for amount in self.products.values()): + return float('inf') + return min(ingredients / amount for product, amount in self.products.items() if amount > 0) @property def base_cost(self) -> Dict[str, int]: @@ -164,6 +174,16 @@ class Recipe(FactorioElement): ingredients[ingredient] += cost return ingredients + def detect_recursive_loop(self, recipes: Counter) -> bool: + for ingredient in self.ingredients.keys(): + if ingredient in all_product_sources: + for recipe in all_product_sources[ingredient]: + if recipe.ingredients: + recipes[self.name] += 1 + if recipes[self.name] >= 10 or recipe.detect_recursive_loop(recipes): + return True + return False + @property def total_energy(self) -> float: """Total required energy (crafting time) for single craft""" @@ -182,10 +202,52 @@ class Recipe(FactorioElement): class Machine(FactorioElement): - def __init__(self, name, categories): + def __init__(self, name, categories, machine_type, speed): self.name: str = name self.categories: set = categories + self.machine_type: str = machine_type + self.speed: float = speed +class Lab(FactorioElement): + def __init__(self, name, inputs): + self.name: str = name + self.inputs: set = inputs + + +class Mod(FactorioElement): + def __init__(self, name, version): + self.name: str = name + self.version: str = version + + +class Item(FactorioElement): + def __init__(self, name, stack_size, stackable, place_result, burnt_result, fuel_value, fuel_category, rocket_launch_products): + self.name: str = name + self.stack_size: int = stack_size + self.stackable: bool = stackable + self.place_result: str = place_result + self.burnt_result: str = burnt_result + self.fuel_value: int = fuel_value + self.fuel_category: str = fuel_category + self.rocket_launch_products: Dict[str, int] = rocket_launch_products + + +items: Dict[str, Item] = {} +for name, item_data in items_future.result().items(): + item = Item(name, + item_data.get("stack_size"), + item_data.get("stackable"), + item_data.get("place_result", None), + item_data.get("burnt_result", None), + item_data.get("fuel_value", 0), + item_data.get("fuel_category", None), + item_data.get("rocket_launch_products", {})) + items[name] = item +del items_future + +fluids: Dict[str, Dict[str, int]] = dict(fluids_future.result()) +del fluids_future +print(fluids) recipe_sources: Dict[str, Set[str]] = {} # recipe_name -> technology source @@ -213,38 +275,120 @@ for resource_name, resource_data in resources_future.result().items(): if "required_fluid" in resource_data else {}, "products": {data["name"]: data["amount"] for data in resource_data["products"].values()}, "energy": resource_data["mining_time"], - "category": resource_data["category"] + "category": resource_data["category"], + "mining": True, + "unlocked_at_start": True } del resources_future +machines: Dict[str, Machine] = {} +labs: Dict[str, Lab] = {} + +for name, prototype in machines_future.result().items(): + for machine_type, machine_data in prototype.items(): + print(f"{name}: {machine_type}: {machine_data}") + if machine_type == "lab": + lab = Lab(name, machine_data.get("inputs", set())) + labs[name] = lab + if machine_type == "offshore-pump": + fluid = machine_data.get("fluid", None) + speed = machine_data.get("speed", None) + if not fluid or not speed: + continue + category = f"offshore-pumping-{fluid}-{speed}" + raw_recipes[category] = { + "ingredients": {}, + "products": {fluid: (speed*60)}, + "energy": 1, + "category": category, + "mining": True, + "unlocked_at_start": True + } + machine = Machine(name, {category}, machine_data.get("type"), 1) + machines[name] = machine + if machine_type == "crafting": + categories = machine_data.get("categories", set()) + if not categories: + continue + print(set(categories)) + # TODO: Use speed / fluid_box info + speed = machine_data.get("speed", 1) + input_fluid_box = machine_data.get("input_fluid_box", 0) + output_fluid_box = machine_data.get("output_fluid_box", 0) + machine = Machine(name, set(categories), machine_data.get("type"), speed) + machines[name] = machine + if machine_type == "mining": + categories = machine_data.get("categories", set()) + if not categories: + continue + print(set(categories)) + speed = machine_data.get("speed", 1) + input_fluid_box = machine_data.get("input_fluid_box", False) # Can this machine mine resources with required fluids? + output_fluid_box = machine_data.get("output_fluid_box", False) # Can this machine mine fluid resources? + machine = machines.setdefault(name, Machine(name, set(categories), machine_data.get("type"), speed)) + machine.categories |= set(categories) # character has both crafting and basic-solid + machine.speed = (machine.speed + speed) / 2 + machines[name] = machine + if machine_type == "boiler": + input_fluid = machine_data.get("input_fluid") + output_fluid = machine_data.get("output_fluid") + target_temperature = machine_data.get("target_temperature") + energy_usage = machine_data.get("energy_usage") + amount = energy_usage / (target_temperature - fluids[input_fluid].get("default_temperature", 15)) / fluids[input_fluid].get("heat_capacity", 1) + amount *= 60 + amount = int(amount) + category = f"boiling-{amount}-{input_fluid}-to-{output_fluid}-at-{target_temperature}-degrees-centigrade" + raw_recipes[category] = { + "ingredients": {input_fluid: amount}, + "products": {output_fluid: amount}, + "energy": 1, + "category": category, + "mining": False, + "unlocked_at_start": True + } + machine = Machine(name, {category}, machine_data.get("type"), 1) + machines[name] = machine + + # TODO: set up machine/recipe pairs for burners in order to retrieve the burnt_result from items. + # TODO: set up machine/recipe pairs for retrieving rocket_launch_products from items. + + + +del machines_future + for recipe_name, recipe_data in raw_recipes.items(): # example: # "accumulator":{"ingredients":{"iron-plate":2,"battery":5},"products":{"accumulator":1},"category":"crafting"} # FIXME: add mining? recipe = Recipe(recipe_name, recipe_data["category"], recipe_data["ingredients"], - recipe_data["products"], recipe_data["energy"] if "energy" in recipe_data else 0) + recipe_data["products"], recipe_data.get("energy", 0), recipe_data.get("mining", False), recipe_data.get("unlocked_at_start", False)) recipes[recipe_name] = recipe - if set(recipe.products).isdisjoint( - # prevents loop recipes like uranium centrifuging - set(recipe.ingredients)) and ("empty-barrel" not in recipe.products or recipe.name == "empty-barrel") and \ - not recipe_name.endswith("-reprocessing"): - for product_name in recipe.products: + if set(recipe.products).isdisjoint(set(recipe.ingredients)): + for product_name in [product_name for product_name, amount in recipe.products.items() if amount > 0]: all_product_sources.setdefault(product_name, set()).add(recipe) + if recipe.detect_recursive_loop(Counter()): + # prevents loop recipes like uranium centrifuging and fluid unbarreling + all_product_sources.setdefault(product_name, set()).remove(recipe) + if not all_product_sources[product_name]: + del (all_product_sources[product_name]) -machines: Dict[str, Machine] = {} +machines["assembling-machine-1"].categories |= machines["assembling-machine-3"].categories # mod enables this +machines["assembling-machine-2"].categories |= machines["assembling-machine-3"].categories +# machines["character"].categories.add("basic-crafting") +# charter only knows the categories of "crafting" and "basic-solid" by default. -for name, categories in machines_future.result().items(): - machine = Machine(name, set(categories)) - machines[name] = machine -# add electric mining drill as a crafting machine to resolve basic-solid (mining) -machines["electric-mining-drill"] = Machine("electric-mining-drill", {"basic-solid"}) -machines["pumpjack"] = Machine("pumpjack", {"basic-fluid"}) -machines["assembling-machine-1"].categories.add("crafting-with-fluid") # mod enables this -machines["character"].categories.add("basic-crafting") # somehow this is implied and not exported +mods: Dict[str, Mod] = {} + +for name, version in mods_future.result().items(): + if name in ["base"]: + continue + mod = Mod(name, version) + mods[name] = mod + +del mods_future -del machines_future # build requirements graph for all technology ingredients @@ -254,7 +398,10 @@ for technology in technology_table.values(): def unlock_just_tech(recipe: Recipe, _done) -> Set[Technology]: - current_technologies = recipe.unlocking_technologies + if recipe.unlocked_at_start: + current_technologies = set() + else: + current_technologies = recipe.unlocking_technologies for ingredient_name in recipe.ingredients: current_technologies |= recursively_get_unlocking_technologies(ingredient_name, _done, unlock_func=unlock_just_tech) @@ -262,7 +409,10 @@ def unlock_just_tech(recipe: Recipe, _done) -> Set[Technology]: def unlock(recipe: Recipe, _done) -> Set[Technology]: - current_technologies = recipe.unlocking_technologies + if recipe.unlocked_at_start: + current_technologies = set() + else: + current_technologies = recipe.unlocking_technologies for ingredient_name in recipe.ingredients: current_technologies |= recursively_get_unlocking_technologies(ingredient_name, _done, unlock_func=unlock) current_technologies |= required_category_technologies[recipe.category] @@ -291,19 +441,36 @@ def recursively_get_unlocking_technologies(ingredient_name, _done=None, unlock_f required_machine_technologies: Dict[str, FrozenSet[Technology]] = {} for ingredient_name in machines: + if ingredient_name == "character": + required_machine_technologies[ingredient_name] = frozenset() + continue + required_machine_technologies[ingredient_name] = frozenset(recursively_get_unlocking_technologies(ingredient_name)) + print(f"{ingredient_name}: {required_machine_technologies[ingredient_name]}") +for ingredient_name in labs: required_machine_technologies[ingredient_name] = frozenset(recursively_get_unlocking_technologies(ingredient_name)) logical_machines = {} machine_tech_cost = {} + +for category in machines["character"].categories: + machine_tech_cost[category] = (10000, "character", machines["character"].speed) + for machine in machines.values(): + if machine.name == "character": + continue for category in machine.categories: - current_cost, current_machine = machine_tech_cost.get(category, (10000, "character")) machine_cost = len(required_machine_technologies[machine.name]) - if machine_cost < current_cost: - machine_tech_cost[category] = machine_cost, machine.name + if machine.machine_type == "character" and not machine_cost: + machine_cost = 10000 + if category in machine_tech_cost: + current_cost, current_machine, current_speed = machine_tech_cost.get(category) + if machine_cost < current_cost or (machine_cost == current_cost and machine.speed > current_speed): + machine_tech_cost[category] = machine_cost, machine.name, machine.speed + else: + machine_tech_cost[category] = machine_cost, machine.name, machine.speed machine_per_category: Dict[str: str] = {} -for category, (cost, machine_name) in machine_tech_cost.items(): +for category, (cost, machine_name, speed) in machine_tech_cost.items(): machine_per_category[category] = machine_name del machine_tech_cost @@ -313,7 +480,12 @@ required_category_technologies: Dict[str, FrozenSet[FrozenSet[Technology]]] = {} for category_name, machine_name in machine_per_category.items(): techs = set() techs |= recursively_get_unlocking_technologies(machine_name) + if category_name in machines["character"].categories and techs: + # Character crafting/mining categories always have no tech assigned. + techs = set() + machine_per_category[category_name] = "character" required_category_technologies[category_name] = frozenset(techs) + print(f"{category_name}: {required_category_technologies[category_name]}") required_technologies: Dict[str, FrozenSet[Technology]] = Utils.KeyedDefaultDict(lambda ingredient_name: frozenset( recursively_get_unlocking_technologies(ingredient_name, unlock_func=unlock))) @@ -447,34 +619,39 @@ useless_technologies: Set[str] = {tech_name for tech_name in common_tech_table lookup_id_to_name: Dict[int, str] = {item_id: item_name for item_name, item_id in tech_table.items()} -rel_cost = { - "wood": 10000, - "iron-ore": 1, - "copper-ore": 1, - "stone": 1, - "crude-oil": 0.5, - "water": 0.001, - "coal": 1, - "raw-fish": 1000, - "steam": 0.01, - "used-up-uranium-fuel-cell": 1000 -} +print("\n\nReletive costs:") +rel_cost = {} +for name, recipe in {name: recipe for name, recipe in recipes.items() if recipe.mining and not recipe.ingredients}.items(): + machine = machines[machine_per_category[recipe.category]] + cost = recipe.energy / machine.speed + print(f"Cost of {name}: {cost} = {recipe.energy} / {machine.speed}") + for product_name, amount in recipe.products.items(): + print(f"cost of {amount} x {product_name} = {(cost / amount)}") + rel_cost[product_name] = cost / amount + + +def get_estimated_difficulty(recipe: Recipe): + base_ingredients = recipe.base_cost + cost = 0 + + for ingredient_name, amount in base_ingredients.items(): + cost += rel_cost.get(ingredient_name, 1000) * amount + return cost + + +for name, recipe in {name: recipe for name, recipe in recipes.items() if recipe.mining and recipe.ingredients}.items(): + machine = machines[machine_per_category[recipe.category]] + cost = (recipe.energy / machine.speed) + get_estimated_difficulty(recipe) + for product_name, amount in recipe.products.items(): + rel_cost[product_name] = cost / amount + +print(rel_cost) exclusion_list: Set[str] = all_ingredient_names | {"rocket-part", "used-up-uranium-fuel-cell"} -fluids: Set[str] = set(fluids_future.result()) -del fluids_future @Utils.cache_argsless def get_science_pack_pools() -> Dict[str, Set[str]]: - def get_estimated_difficulty(recipe: Recipe): - base_ingredients = recipe.base_cost - cost = 0 - - for ingredient_name, amount in base_ingredients.items(): - cost += rel_cost.get(ingredient_name, 1) * amount - return cost - science_pack_pools: Dict[str, Set[str]] = {} already_taken = exclusion_list.copy() current_difficulty = 5 @@ -484,12 +661,15 @@ def get_science_pack_pools() -> Dict[str, Set[str]]: if (science_pack != "automation-science-pack" or not recipe.recursive_unlocking_technologies) \ and get_estimated_difficulty(recipe) < current_difficulty: current |= set(recipe.products) + if science_pack == "automation-science-pack" and recipe.recursive_unlocking_technologies and recipe.unlocked_at_start: + print(f"Recipe: {name}") + print(f"Category: {recipe.category}") + print(f"unlocking_technologies: {recipe.recursive_unlocking_technologies}") + print(f"Estimated Difficulty: {get_estimated_difficulty(recipe)}") if science_pack == "automation-science-pack": # Can't handcraft automation science if fluids end up in its recipe, making the seed impossible. - current -= fluids - elif science_pack == "logistic-science-pack": - current |= {"steam"} + current -= set(fluids) current -= already_taken already_taken |= current @@ -498,10 +678,9 @@ def get_science_pack_pools() -> Dict[str, Set[str]]: return science_pack_pools -item_stack_sizes: Dict[str, int] = items_future.result() -non_stacking_items: Set[str] = {item for item, stack in item_stack_sizes.items() if stack == 1} -stacking_items: Set[str] = set(item_stack_sizes) - non_stacking_items -valid_ingredients: Set[str] = stacking_items | fluids +non_stacking_items: Set[str] = {name for name, item in items.items() if not item.stackable} +stacking_items: Set[str] = set(items) - non_stacking_items +valid_ingredients: Set[str] = stacking_items | set(fluids) # cleanup async helpers pool.shutdown() diff --git a/worlds/factorio/__init__.py b/worlds/factorio/__init__.py index a01abac748..8f89918499 100644 --- a/worlds/factorio/__init__.py +++ b/worlds/factorio/__init__.py @@ -224,7 +224,7 @@ class Factorio(World): liquids_used += 1 if new_ingredient in fluids else 0 new_ingredients[new_ingredient] = 1 return Recipe(original.name, self.get_category(original.category, liquids_used), new_ingredients, - original.products, original.energy) + original.products, original.energy, original.mining, original.unlocked_at_start) def make_balanced_recipe(self, original: Recipe, pool: typing.Set[str], factor: float = 1, allow_liquids: int = 2) -> Recipe: @@ -258,6 +258,8 @@ class Factorio(World): ingredient_energy = 2 if not ingredient_raw: ingredient_raw = 1 + if not ingredient_energy: + ingredient_energy = 1/60 if remaining_num_ingredients == 1: max_raw = 1.1 * remaining_raw min_raw = 0.9 * remaining_raw @@ -293,13 +295,18 @@ class Factorio(World): continue # can't use this ingredient as we already have maximum liquid in our recipe. ingredient_recipe = recipes.get(ingredient, None) - if not ingredient_recipe and ingredient.endswith("-barrel"): - ingredient_recipe = recipes.get(f"fill-{ingredient}", None) + if not ingredient_recipe and ingredient in all_product_sources: + ingredient_recipe = min(all_product_sources[ingredient], key=lambda recipe: recipe.rel_cost) if not ingredient_recipe: logging.warning(f"missing recipe for {ingredient}") continue ingredient_raw = sum((count for ingredient, count in ingredient_recipe.base_cost.items())) ingredient_energy = ingredient_recipe.total_energy + if not ingredient_raw: + ingredient_raw = 1 + if not ingredient_energy: + ingredient_energy = 1/60 + num_raw = remaining_raw / ingredient_raw / remaining_num_ingredients num_energy = remaining_energy / ingredient_energy / remaining_num_ingredients num = int(min(num_raw, num_energy)) @@ -317,7 +324,7 @@ class Factorio(World): logging.warning("could not randomize recipe") return Recipe(original.name, self.get_category(original.category, liquids_used), new_ingredients, - original.products, original.energy) + original.products, original.energy, original.mining, original.unlocked_at_start) def set_custom_technologies(self): custom_technologies = {} @@ -329,12 +336,24 @@ class Factorio(World): def set_custom_recipes(self): original_rocket_part = recipes["rocket-part"] science_pack_pools = get_science_pack_pools() + for science_pack, items in science_pack_pools.items(): + print(f"{science_pack}: {items}") + print() valid_pool = sorted(science_pack_pools[self.world.max_science_pack[self.player].get_max_pack()] & valid_ingredients) + if len(valid_pool) < 3: + # Not enough items in max pool. Extend to entire pool. + valid_pool = [] + for pack in self.world.max_science_pack[self.player].get_ordered_science_packs(): + valid_pool += sorted(science_pack_pools[pack] & valid_ingredients) + if len(valid_pool) < 3: + raise Exception("Not enough ingredients available for generation.") self.world.random.shuffle(valid_pool) self.custom_recipes = {"rocket-part": Recipe("rocket-part", original_rocket_part.category, {valid_pool[x]: 10 for x in range(3)}, original_rocket_part.products, - original_rocket_part.energy)} + original_rocket_part.energy, + original_rocket_part.mining, + original_rocket_part.unlocked_at_start)} if self.world.recipe_ingredients[self.player]: valid_pool = [] @@ -363,7 +382,7 @@ class Factorio(World): bridge = "ap-energy-bridge" new_recipe = self.make_quick_recipe( Recipe(bridge, "crafting", {"replace_1": 1, "replace_2": 1, "replace_3": 1}, - {bridge: 1}, 10), + {bridge: 1}, 10, False, self.world.energy_link[self.player].value), sorted(science_pack_pools[self.world.max_science_pack[self.player].get_ordered_science_packs()[0]])) for ingredient_name in new_recipe.ingredients: new_recipe.ingredients[ingredient_name] = self.world.random.randint(10, 100) diff --git a/worlds/factorio/data/fluids.json b/worlds/factorio/data/fluids.json index 448ccf4e49..da48464883 100644 --- a/worlds/factorio/data/fluids.json +++ b/worlds/factorio/data/fluids.json @@ -1 +1 @@ -["fluid-unknown","water","crude-oil","steam","heavy-oil","light-oil","petroleum-gas","sulfuric-acid","lubricant"] \ No newline at end of file +{"fluid-unknown":{"default_temperature":0,"max_temperature":0,"heat_capacity":1000},"water":{"default_temperature":15,"max_temperature":100,"heat_capacity":200},"crude-oil":{"default_temperature":25,"max_temperature":25,"heat_capacity":100},"steam":{"default_temperature":15,"max_temperature":1000,"heat_capacity":200},"heavy-oil":{"default_temperature":25,"max_temperature":25,"heat_capacity":100},"light-oil":{"default_temperature":25,"max_temperature":25,"heat_capacity":100},"petroleum-gas":{"default_temperature":25,"max_temperature":25,"heat_capacity":100},"sulfuric-acid":{"default_temperature":25,"max_temperature":25,"heat_capacity":100},"lubricant":{"default_temperature":25,"max_temperature":25,"heat_capacity":100}} \ No newline at end of file diff --git a/worlds/factorio/data/items.json b/worlds/factorio/data/items.json index fa34430f40..4d005cf77b 100644 --- a/worlds/factorio/data/items.json +++ b/worlds/factorio/data/items.json @@ -1 +1 @@ -{"wooden-chest":50,"iron-chest":50,"steel-chest":50,"storage-tank":50,"transport-belt":100,"fast-transport-belt":100,"express-transport-belt":100,"underground-belt":50,"fast-underground-belt":50,"express-underground-belt":50,"splitter":50,"fast-splitter":50,"express-splitter":50,"loader":50,"fast-loader":50,"express-loader":50,"burner-inserter":50,"inserter":50,"long-handed-inserter":50,"fast-inserter":50,"filter-inserter":50,"stack-inserter":50,"stack-filter-inserter":50,"small-electric-pole":50,"medium-electric-pole":50,"big-electric-pole":50,"substation":50,"pipe":100,"pipe-to-ground":50,"pump":50,"rail":100,"train-stop":10,"rail-signal":50,"rail-chain-signal":50,"locomotive":5,"cargo-wagon":5,"fluid-wagon":5,"artillery-wagon":5,"car":1,"tank":1,"spidertron":1,"spidertron-remote":1,"logistic-robot":50,"construction-robot":50,"logistic-chest-active-provider":50,"logistic-chest-passive-provider":50,"logistic-chest-storage":50,"logistic-chest-buffer":50,"logistic-chest-requester":50,"roboport":10,"small-lamp":50,"red-wire":200,"green-wire":200,"arithmetic-combinator":50,"decider-combinator":50,"constant-combinator":50,"power-switch":50,"programmable-speaker":50,"stone-brick":100,"concrete":100,"hazard-concrete":100,"refined-concrete":100,"refined-hazard-concrete":100,"landfill":100,"cliff-explosives":20,"dummy-steel-axe":1,"repair-pack":100,"blueprint":1,"deconstruction-planner":1,"upgrade-planner":1,"blueprint-book":1,"copy-paste-tool":1,"cut-paste-tool":1,"boiler":50,"steam-engine":10,"solar-panel":50,"accumulator":50,"nuclear-reactor":10,"heat-pipe":50,"heat-exchanger":50,"steam-turbine":10,"burner-mining-drill":50,"electric-mining-drill":50,"offshore-pump":20,"pumpjack":20,"stone-furnace":50,"steel-furnace":50,"electric-furnace":50,"assembling-machine-1":50,"assembling-machine-2":50,"assembling-machine-3":50,"oil-refinery":10,"chemical-plant":10,"centrifuge":50,"lab":10,"beacon":10,"speed-module":50,"speed-module-2":50,"speed-module-3":50,"effectivity-module":50,"effectivity-module-2":50,"effectivity-module-3":50,"productivity-module":50,"productivity-module-2":50,"productivity-module-3":50,"rocket-silo":1,"satellite":1,"wood":100,"coal":50,"stone":50,"iron-ore":50,"copper-ore":50,"uranium-ore":50,"raw-fish":100,"iron-plate":100,"copper-plate":100,"solid-fuel":50,"steel-plate":100,"plastic-bar":100,"sulfur":50,"battery":200,"explosives":50,"crude-oil-barrel":10,"heavy-oil-barrel":10,"light-oil-barrel":10,"lubricant-barrel":10,"petroleum-gas-barrel":10,"sulfuric-acid-barrel":10,"water-barrel":10,"copper-cable":200,"iron-stick":100,"iron-gear-wheel":100,"empty-barrel":10,"electronic-circuit":200,"advanced-circuit":200,"processing-unit":100,"engine-unit":50,"electric-engine-unit":50,"flying-robot-frame":50,"rocket-control-unit":10,"low-density-structure":10,"rocket-fuel":10,"rocket-part":5,"nuclear-fuel":1,"uranium-235":100,"uranium-238":100,"uranium-fuel-cell":50,"used-up-uranium-fuel-cell":50,"automation-science-pack":200,"logistic-science-pack":200,"military-science-pack":200,"chemical-science-pack":200,"production-science-pack":200,"utility-science-pack":200,"space-science-pack":2000,"coin":100000,"pistol":5,"submachine-gun":5,"tank-machine-gun":1,"vehicle-machine-gun":1,"tank-flamethrower":1,"shotgun":5,"combat-shotgun":5,"rocket-launcher":5,"flamethrower":5,"land-mine":100,"artillery-wagon-cannon":1,"spidertron-rocket-launcher-1":1,"spidertron-rocket-launcher-2":1,"spidertron-rocket-launcher-3":1,"spidertron-rocket-launcher-4":1,"tank-cannon":1,"firearm-magazine":200,"piercing-rounds-magazine":200,"uranium-rounds-magazine":200,"shotgun-shell":200,"piercing-shotgun-shell":200,"cannon-shell":200,"explosive-cannon-shell":200,"uranium-cannon-shell":200,"explosive-uranium-cannon-shell":200,"artillery-shell":1,"rocket":200,"explosive-rocket":200,"atomic-bomb":10,"flamethrower-ammo":100,"grenade":100,"cluster-grenade":100,"poison-capsule":100,"slowdown-capsule":100,"defender-capsule":100,"distractor-capsule":100,"destroyer-capsule":100,"light-armor":1,"heavy-armor":1,"modular-armor":1,"power-armor":1,"power-armor-mk2":1,"solar-panel-equipment":20,"fusion-reactor-equipment":20,"battery-equipment":20,"battery-mk2-equipment":20,"belt-immunity-equipment":20,"exoskeleton-equipment":20,"personal-roboport-equipment":20,"personal-roboport-mk2-equipment":20,"night-vision-equipment":20,"energy-shield-equipment":20,"energy-shield-mk2-equipment":20,"personal-laser-defense-equipment":20,"discharge-defense-equipment":20,"discharge-defense-remote":1,"stone-wall":100,"gate":50,"gun-turret":50,"laser-turret":50,"flamethrower-turret":50,"artillery-turret":10,"artillery-targeting-remote":1,"radar":50,"player-port":50,"item-unknown":1,"electric-energy-interface":50,"linked-chest":10,"heat-interface":20,"linked-belt":10,"infinity-chest":10,"infinity-pipe":10,"selection-tool":1,"item-with-inventory":1,"item-with-label":1,"item-with-tags":1,"simple-entity-with-force":50,"simple-entity-with-owner":50,"burner-generator":10} \ No newline at end of file +{"wooden-chest":{"stack_size":50,"stackable":true,"place_result":"wooden-chest"},"iron-chest":{"stack_size":50,"stackable":true,"place_result":"iron-chest"},"steel-chest":{"stack_size":50,"stackable":true,"place_result":"steel-chest"},"storage-tank":{"stack_size":50,"stackable":true,"place_result":"storage-tank"},"transport-belt":{"stack_size":100,"stackable":true,"place_result":"transport-belt"},"fast-transport-belt":{"stack_size":100,"stackable":true,"place_result":"fast-transport-belt"},"express-transport-belt":{"stack_size":100,"stackable":true,"place_result":"express-transport-belt"},"underground-belt":{"stack_size":50,"stackable":true,"place_result":"underground-belt"},"fast-underground-belt":{"stack_size":50,"stackable":true,"place_result":"fast-underground-belt"},"express-underground-belt":{"stack_size":50,"stackable":true,"place_result":"express-underground-belt"},"splitter":{"stack_size":50,"stackable":true,"place_result":"splitter"},"fast-splitter":{"stack_size":50,"stackable":true,"place_result":"fast-splitter"},"express-splitter":{"stack_size":50,"stackable":true,"place_result":"express-splitter"},"loader":{"stack_size":50,"stackable":true,"place_result":"loader"},"fast-loader":{"stack_size":50,"stackable":true,"place_result":"fast-loader"},"express-loader":{"stack_size":50,"stackable":true,"place_result":"express-loader"},"burner-inserter":{"stack_size":50,"stackable":true,"place_result":"burner-inserter"},"inserter":{"stack_size":50,"stackable":true,"place_result":"inserter"},"long-handed-inserter":{"stack_size":50,"stackable":true,"place_result":"long-handed-inserter"},"fast-inserter":{"stack_size":50,"stackable":true,"place_result":"fast-inserter"},"filter-inserter":{"stack_size":50,"stackable":true,"place_result":"filter-inserter"},"stack-inserter":{"stack_size":50,"stackable":true,"place_result":"stack-inserter"},"stack-filter-inserter":{"stack_size":50,"stackable":true,"place_result":"stack-filter-inserter"},"small-electric-pole":{"stack_size":50,"stackable":true,"place_result":"small-electric-pole"},"medium-electric-pole":{"stack_size":50,"stackable":true,"place_result":"medium-electric-pole"},"big-electric-pole":{"stack_size":50,"stackable":true,"place_result":"big-electric-pole"},"substation":{"stack_size":50,"stackable":true,"place_result":"substation"},"pipe":{"stack_size":100,"stackable":true,"place_result":"pipe"},"pipe-to-ground":{"stack_size":50,"stackable":true,"place_result":"pipe-to-ground"},"pump":{"stack_size":50,"stackable":true,"place_result":"pump"},"rail":{"stack_size":100,"stackable":true,"place_result":"straight-rail"},"train-stop":{"stack_size":10,"stackable":true,"place_result":"train-stop"},"rail-signal":{"stack_size":50,"stackable":true,"place_result":"rail-signal"},"rail-chain-signal":{"stack_size":50,"stackable":true,"place_result":"rail-chain-signal"},"locomotive":{"stack_size":5,"stackable":true,"place_result":"locomotive"},"cargo-wagon":{"stack_size":5,"stackable":true,"place_result":"cargo-wagon"},"fluid-wagon":{"stack_size":5,"stackable":true,"place_result":"fluid-wagon"},"artillery-wagon":{"stack_size":5,"stackable":true,"place_result":"artillery-wagon"},"car":{"stack_size":1,"stackable":true,"place_result":"car"},"tank":{"stack_size":1,"stackable":true,"place_result":"tank"},"spidertron":{"stack_size":1,"stackable":true,"place_result":"spidertron"},"spidertron-remote":{"stack_size":1,"stackable":false},"logistic-robot":{"stack_size":50,"stackable":true,"place_result":"logistic-robot"},"construction-robot":{"stack_size":50,"stackable":true,"place_result":"construction-robot"},"logistic-chest-active-provider":{"stack_size":50,"stackable":true,"place_result":"logistic-chest-active-provider"},"logistic-chest-passive-provider":{"stack_size":50,"stackable":true,"place_result":"logistic-chest-passive-provider"},"logistic-chest-storage":{"stack_size":50,"stackable":true,"place_result":"logistic-chest-storage"},"logistic-chest-buffer":{"stack_size":50,"stackable":true,"place_result":"logistic-chest-buffer"},"logistic-chest-requester":{"stack_size":50,"stackable":true,"place_result":"logistic-chest-requester"},"roboport":{"stack_size":10,"stackable":true,"place_result":"roboport"},"small-lamp":{"stack_size":50,"stackable":true,"place_result":"small-lamp"},"red-wire":{"stack_size":200,"stackable":true},"green-wire":{"stack_size":200,"stackable":true},"arithmetic-combinator":{"stack_size":50,"stackable":true,"place_result":"arithmetic-combinator"},"decider-combinator":{"stack_size":50,"stackable":true,"place_result":"decider-combinator"},"constant-combinator":{"stack_size":50,"stackable":true,"place_result":"constant-combinator"},"power-switch":{"stack_size":50,"stackable":true,"place_result":"power-switch"},"programmable-speaker":{"stack_size":50,"stackable":true,"place_result":"programmable-speaker"},"stone-brick":{"stack_size":100,"stackable":true},"concrete":{"stack_size":100,"stackable":true},"hazard-concrete":{"stack_size":100,"stackable":true},"refined-concrete":{"stack_size":100,"stackable":true},"refined-hazard-concrete":{"stack_size":100,"stackable":true},"landfill":{"stack_size":100,"stackable":true},"cliff-explosives":{"stack_size":20,"stackable":true},"dummy-steel-axe":{"stack_size":1,"stackable":true},"repair-pack":{"stack_size":100,"stackable":true},"blueprint":{"stack_size":1,"stackable":false},"deconstruction-planner":{"stack_size":1,"stackable":false},"upgrade-planner":{"stack_size":1,"stackable":false},"blueprint-book":{"stack_size":1,"stackable":false},"copy-paste-tool":{"stack_size":1,"stackable":false},"cut-paste-tool":{"stack_size":1,"stackable":false},"boiler":{"stack_size":50,"stackable":true,"place_result":"boiler"},"steam-engine":{"stack_size":10,"stackable":true,"place_result":"steam-engine"},"solar-panel":{"stack_size":50,"stackable":true,"place_result":"solar-panel"},"accumulator":{"stack_size":50,"stackable":true,"place_result":"accumulator"},"nuclear-reactor":{"stack_size":10,"stackable":true,"place_result":"nuclear-reactor"},"heat-pipe":{"stack_size":50,"stackable":true,"place_result":"heat-pipe"},"heat-exchanger":{"stack_size":50,"stackable":true,"place_result":"heat-exchanger"},"steam-turbine":{"stack_size":10,"stackable":true,"place_result":"steam-turbine"},"burner-mining-drill":{"stack_size":50,"stackable":true,"place_result":"burner-mining-drill"},"electric-mining-drill":{"stack_size":50,"stackable":true,"place_result":"electric-mining-drill"},"offshore-pump":{"stack_size":20,"stackable":true,"place_result":"offshore-pump"},"pumpjack":{"stack_size":20,"stackable":true,"place_result":"pumpjack"},"stone-furnace":{"stack_size":50,"stackable":true,"place_result":"stone-furnace"},"steel-furnace":{"stack_size":50,"stackable":true,"place_result":"steel-furnace"},"electric-furnace":{"stack_size":50,"stackable":true,"place_result":"electric-furnace"},"assembling-machine-1":{"stack_size":50,"stackable":true,"place_result":"assembling-machine-1"},"assembling-machine-2":{"stack_size":50,"stackable":true,"place_result":"assembling-machine-2"},"assembling-machine-3":{"stack_size":50,"stackable":true,"place_result":"assembling-machine-3"},"oil-refinery":{"stack_size":10,"stackable":true,"place_result":"oil-refinery"},"chemical-plant":{"stack_size":10,"stackable":true,"place_result":"chemical-plant"},"centrifuge":{"stack_size":50,"stackable":true,"place_result":"centrifuge"},"lab":{"stack_size":10,"stackable":true,"place_result":"lab"},"beacon":{"stack_size":10,"stackable":true,"place_result":"beacon"},"speed-module":{"stack_size":50,"stackable":true},"speed-module-2":{"stack_size":50,"stackable":true},"speed-module-3":{"stack_size":50,"stackable":true},"effectivity-module":{"stack_size":50,"stackable":true},"effectivity-module-2":{"stack_size":50,"stackable":true},"effectivity-module-3":{"stack_size":50,"stackable":true},"productivity-module":{"stack_size":50,"stackable":true},"productivity-module-2":{"stack_size":50,"stackable":true},"productivity-module-3":{"stack_size":50,"stackable":true},"rocket-silo":{"stack_size":1,"stackable":true,"place_result":"rocket-silo"},"satellite":{"stack_size":1,"rocket_launch_products":{"space-science-pack":1000},"stackable":true},"wood":{"stack_size":100,"stackable":true},"coal":{"stack_size":50,"stackable":true},"stone":{"stack_size":50,"stackable":true},"iron-ore":{"stack_size":50,"stackable":true},"copper-ore":{"stack_size":50,"stackable":true},"uranium-ore":{"stack_size":50,"stackable":true},"raw-fish":{"stack_size":100,"stackable":true},"iron-plate":{"stack_size":100,"stackable":true},"copper-plate":{"stack_size":100,"stackable":true},"solid-fuel":{"stack_size":50,"stackable":true},"steel-plate":{"stack_size":100,"stackable":true},"plastic-bar":{"stack_size":100,"stackable":true},"sulfur":{"stack_size":50,"stackable":true},"battery":{"stack_size":200,"stackable":true},"explosives":{"stack_size":50,"stackable":true},"crude-oil-barrel":{"stack_size":10,"stackable":true},"heavy-oil-barrel":{"stack_size":10,"stackable":true},"light-oil-barrel":{"stack_size":10,"stackable":true},"lubricant-barrel":{"stack_size":10,"stackable":true},"petroleum-gas-barrel":{"stack_size":10,"stackable":true},"sulfuric-acid-barrel":{"stack_size":10,"stackable":true},"water-barrel":{"stack_size":10,"stackable":true},"copper-cable":{"stack_size":200,"stackable":true},"iron-stick":{"stack_size":100,"stackable":true},"iron-gear-wheel":{"stack_size":100,"stackable":true},"empty-barrel":{"stack_size":10,"stackable":true},"electronic-circuit":{"stack_size":200,"stackable":true},"advanced-circuit":{"stack_size":200,"stackable":true},"processing-unit":{"stack_size":100,"stackable":true},"engine-unit":{"stack_size":50,"stackable":true},"electric-engine-unit":{"stack_size":50,"stackable":true},"flying-robot-frame":{"stack_size":50,"stackable":true},"rocket-control-unit":{"stack_size":10,"stackable":true},"low-density-structure":{"stack_size":10,"stackable":true},"rocket-fuel":{"stack_size":10,"stackable":true},"rocket-part":{"stack_size":5,"stackable":true},"nuclear-fuel":{"stack_size":1,"stackable":true},"uranium-235":{"stack_size":100,"stackable":true},"uranium-238":{"stack_size":100,"stackable":true},"uranium-fuel-cell":{"stack_size":50,"fuel_value":8000000000,"fuel_category":"nuclear","burnt_result":"used-up-uranium-fuel-cell","stackable":true},"used-up-uranium-fuel-cell":{"stack_size":50,"stackable":true},"automation-science-pack":{"stack_size":200,"stackable":true},"logistic-science-pack":{"stack_size":200,"stackable":true},"military-science-pack":{"stack_size":200,"stackable":true},"chemical-science-pack":{"stack_size":200,"stackable":true},"production-science-pack":{"stack_size":200,"stackable":true},"utility-science-pack":{"stack_size":200,"stackable":true},"space-science-pack":{"stack_size":2000,"rocket_launch_products":{"raw-fish":1},"stackable":true},"coin":{"stack_size":100000,"stackable":true},"pistol":{"stack_size":5,"stackable":true},"submachine-gun":{"stack_size":5,"stackable":true},"tank-machine-gun":{"stack_size":1,"stackable":true},"vehicle-machine-gun":{"stack_size":1,"stackable":true},"tank-flamethrower":{"stack_size":1,"stackable":true},"shotgun":{"stack_size":5,"stackable":true},"combat-shotgun":{"stack_size":5,"stackable":true},"rocket-launcher":{"stack_size":5,"stackable":true},"flamethrower":{"stack_size":5,"stackable":true},"land-mine":{"stack_size":100,"stackable":true,"place_result":"land-mine"},"artillery-wagon-cannon":{"stack_size":1,"stackable":true},"spidertron-rocket-launcher-1":{"stack_size":1,"stackable":true},"spidertron-rocket-launcher-2":{"stack_size":1,"stackable":true},"spidertron-rocket-launcher-3":{"stack_size":1,"stackable":true},"spidertron-rocket-launcher-4":{"stack_size":1,"stackable":true},"tank-cannon":{"stack_size":1,"stackable":true},"firearm-magazine":{"stack_size":200,"stackable":true},"piercing-rounds-magazine":{"stack_size":200,"stackable":true},"uranium-rounds-magazine":{"stack_size":200,"stackable":true},"shotgun-shell":{"stack_size":200,"stackable":true},"piercing-shotgun-shell":{"stack_size":200,"stackable":true},"cannon-shell":{"stack_size":200,"stackable":true},"explosive-cannon-shell":{"stack_size":200,"stackable":true},"uranium-cannon-shell":{"stack_size":200,"stackable":true},"explosive-uranium-cannon-shell":{"stack_size":200,"stackable":true},"artillery-shell":{"stack_size":1,"stackable":true},"rocket":{"stack_size":200,"stackable":true},"explosive-rocket":{"stack_size":200,"stackable":true},"atomic-bomb":{"stack_size":10,"stackable":true},"flamethrower-ammo":{"stack_size":100,"stackable":true},"grenade":{"stack_size":100,"stackable":true},"cluster-grenade":{"stack_size":100,"stackable":true},"poison-capsule":{"stack_size":100,"stackable":true},"slowdown-capsule":{"stack_size":100,"stackable":true},"defender-capsule":{"stack_size":100,"stackable":true},"distractor-capsule":{"stack_size":100,"stackable":true},"destroyer-capsule":{"stack_size":100,"stackable":true},"light-armor":{"stack_size":1,"stackable":true},"heavy-armor":{"stack_size":1,"stackable":true},"modular-armor":{"stack_size":1,"stackable":false},"power-armor":{"stack_size":1,"stackable":false},"power-armor-mk2":{"stack_size":1,"stackable":false},"solar-panel-equipment":{"stack_size":20,"stackable":true},"fusion-reactor-equipment":{"stack_size":20,"stackable":true},"battery-equipment":{"stack_size":20,"stackable":true},"battery-mk2-equipment":{"stack_size":20,"stackable":true},"belt-immunity-equipment":{"stack_size":20,"stackable":true},"exoskeleton-equipment":{"stack_size":20,"stackable":true},"personal-roboport-equipment":{"stack_size":20,"stackable":true},"personal-roboport-mk2-equipment":{"stack_size":20,"stackable":true},"night-vision-equipment":{"stack_size":20,"stackable":true},"energy-shield-equipment":{"stack_size":20,"stackable":true},"energy-shield-mk2-equipment":{"stack_size":20,"stackable":true},"personal-laser-defense-equipment":{"stack_size":20,"stackable":true},"discharge-defense-equipment":{"stack_size":20,"stackable":true},"discharge-defense-remote":{"stack_size":1,"stackable":true},"stone-wall":{"stack_size":100,"stackable":true,"place_result":"stone-wall"},"gate":{"stack_size":50,"stackable":true,"place_result":"gate"},"gun-turret":{"stack_size":50,"stackable":true,"place_result":"gun-turret"},"laser-turret":{"stack_size":50,"stackable":true,"place_result":"laser-turret"},"flamethrower-turret":{"stack_size":50,"stackable":true,"place_result":"flamethrower-turret"},"artillery-turret":{"stack_size":10,"stackable":true,"place_result":"artillery-turret"},"artillery-targeting-remote":{"stack_size":1,"stackable":true},"radar":{"stack_size":50,"stackable":true,"place_result":"radar"},"player-port":{"stack_size":50,"stackable":true,"place_result":"player-port"},"item-unknown":{"stack_size":1,"stackable":true},"electric-energy-interface":{"stack_size":50,"stackable":true,"place_result":"electric-energy-interface"},"linked-chest":{"stack_size":10,"stackable":true,"place_result":"linked-chest"},"heat-interface":{"stack_size":20,"stackable":true,"place_result":"heat-interface"},"linked-belt":{"stack_size":10,"stackable":true,"place_result":"linked-belt"},"infinity-chest":{"stack_size":10,"stackable":true,"place_result":"infinity-chest"},"infinity-pipe":{"stack_size":10,"stackable":true,"place_result":"infinity-pipe"},"selection-tool":{"stack_size":1,"stackable":false},"item-with-inventory":{"stack_size":1,"stackable":false},"item-with-label":{"stack_size":1,"stackable":true},"item-with-tags":{"stack_size":1,"stackable":true},"simple-entity-with-force":{"stack_size":50,"stackable":true,"place_result":"simple-entity-with-force"},"simple-entity-with-owner":{"stack_size":50,"stackable":true,"place_result":"simple-entity-with-owner"},"burner-generator":{"stack_size":10,"stackable":true,"place_result":"burner-generator"}} \ No newline at end of file diff --git a/worlds/factorio/data/machines.json b/worlds/factorio/data/machines.json index 15a79580d0..cf18564bb1 100644 --- a/worlds/factorio/data/machines.json +++ b/worlds/factorio/data/machines.json @@ -1 +1,221 @@ -{"stone-furnace":{"smelting":true},"steel-furnace":{"smelting":true},"electric-furnace":{"smelting":true},"assembling-machine-1":{"crafting":true,"basic-crafting":true,"advanced-crafting":true},"assembling-machine-2":{"basic-crafting":true,"crafting":true,"advanced-crafting":true,"crafting-with-fluid":true},"assembling-machine-3":{"basic-crafting":true,"crafting":true,"advanced-crafting":true,"crafting-with-fluid":true},"oil-refinery":{"oil-processing":true},"chemical-plant":{"chemistry":true},"centrifuge":{"centrifuging":true},"rocket-silo":{"rocket-building":true},"character":{"crafting":true}} \ No newline at end of file +{ + "boiler":{ + "boiler":{ + "type":"boiler", + "input_fluid":"water", + "output_fluid":"steam", + "target_temperature":165, + "energy_usage":30000 + } + }, + "nuclear-reactor":{ + "fuel_burner":{ + "type":"reactor", + "categories":{ + "nuclear":true + }, + "energy_usage":666666.666666666627861559391021728515625 + } + }, + "heat-exchanger":{ + "boiler":{ + "type":"boiler", + "input_fluid":"water", + "output_fluid":"steam", + "target_temperature":500, + "energy_usage":166666.66666666665696538984775543212890625 + } + }, + "burner-mining-drill":{ + "mining":{ + "type":"mining-drill", + "categories":{ + "basic-solid":true + }, + "speed":0.25, + "input_fluid_box":false, + "output_fluid_box":false + } + }, + "electric-mining-drill":{ + "mining":{ + "type":"mining-drill", + "categories":{ + "basic-solid":true + }, + "speed":0.5, + "input_fluid_box":true, + "output_fluid_box":false + } + }, + "offshore-pump":{ + "offshore-pump":{ + "type":"offshore-pump", + "fluid":"water", + "speed":20 + } + }, + "pumpjack":{ + "mining":{ + "type":"mining-drill", + "categories":{ + "basic-fluid":true + }, + "speed":1, + "input_fluid_box":false, + "output_fluid_box":true + } + }, + "stone-furnace":{ + "crafting":{ + "type":"furnace", + "speed":1, + "categories":{ + "smelting":true + }, + "input_fluid_box":0, + "output_fluid_box":0 + } + }, + "steel-furnace":{ + "crafting":{ + "type":"furnace", + "speed":2, + "categories":{ + "smelting":true + }, + "input_fluid_box":0, + "output_fluid_box":0 + } + }, + "electric-furnace":{ + "crafting":{ + "type":"furnace", + "speed":2, + "categories":{ + "smelting":true + }, + "input_fluid_box":0, + "output_fluid_box":0 + } + }, + "assembling-machine-1":{ + "crafting":{ + "type":"assembling-machine", + "speed":0.5, + "categories":{ + "crafting":true, + "basic-crafting":true, + "advanced-crafting":true + }, + "input_fluid_box":0, + "output_fluid_box":0 + } + }, + "assembling-machine-2":{ + "crafting":{ + "type":"assembling-machine", + "speed":0.75, + "categories":{ + "basic-crafting":true, + "crafting":true, + "advanced-crafting":true, + "crafting-with-fluid":true + }, + "input_fluid_box":1, + "output_fluid_box":1 + } + }, + "assembling-machine-3":{ + "crafting":{ + "type":"assembling-machine", + "speed":1.25, + "categories":{ + "basic-crafting":true, + "crafting":true, + "advanced-crafting":true, + "crafting-with-fluid":true + }, + "input_fluid_box":1, + "output_fluid_box":1 + } + }, + "oil-refinery":{ + "crafting":{ + "type":"assembling-machine", + "speed":1, + "categories":{ + "oil-processing":true + }, + "input_fluid_box":2, + "output_fluid_box":3 + } + }, + "chemical-plant":{ + "crafting":{ + "type":"assembling-machine", + "speed":1, + "categories":{ + "chemistry":true + }, + "input_fluid_box":2, + "output_fluid_box":2 + } + }, + "centrifuge":{ + "crafting":{ + "type":"assembling-machine", + "speed":1, + "categories":{ + "centrifuging":true + }, + "input_fluid_box":0, + "output_fluid_box":0 + } + }, + "lab":{ + "lab":{ + "inputs":[ + "automation-science-pack", + "logistic-science-pack", + "military-science-pack", + "chemical-science-pack", + "production-science-pack", + "utility-science-pack", + "space-science-pack" + ] + } + }, + "rocket-silo":{ + "crafting":{ + "type":"rocket-silo", + "speed":1, + "categories":{ + "rocket-building":true + }, + "fixed_recipe":"rocket-part", + "input_fluid_box":0, + "output_fluid_box":0 + } + }, + "character":{ + "crafting":{ + "type":"character", + "speed":1, + "categories":{ + "crafting":true + }, + "input_fluid_box":0, + "output_fluid_box":0 + }, + "mining":{ + "type":"character", + "categories":{ + "basic-solid":true + }, + "speed":0.5, + "input_fluid_box":false, + "output_fluid_box":false + } + } +} \ No newline at end of file diff --git a/worlds/factorio/data/mod/info.json b/worlds/factorio/data/mod/info.json index b93686d060..debe6fb81d 100644 --- a/worlds/factorio/data/mod/info.json +++ b/worlds/factorio/data/mod/info.json @@ -8,6 +8,7 @@ "factorio_version": "1.1", "dependencies": [ "base >= 1.1.0", - "? science-not-invited" + "? science-not-invited", + "! archipelago-extractor" ] } diff --git a/worlds/factorio/data/mod_template/data-final-fixes.lua b/worlds/factorio/data/mod_template/data-final-fixes.lua index cc813b2fff..fd0ef66489 100644 --- a/worlds/factorio/data/mod_template/data-final-fixes.lua +++ b/worlds/factorio/data/mod_template/data-final-fixes.lua @@ -141,6 +141,9 @@ end {# This got complex, but seems to be required to hit all corner cases #} function adjust_energy(recipe_name, factor) local recipe = data.raw.recipe[recipe_name] + if recipe == nil then + error("Some mod that is installed has removed recipe \"" .. recipe_name .. "\"") + end local energy = recipe.energy_required if (recipe.normal ~= nil) then @@ -168,6 +171,9 @@ end function set_energy(recipe_name, energy) local recipe = data.raw.recipe[recipe_name] + if recipe == nil then + error("Some mod that is installed has removed recipe \"" .. recipe_name .. "\"") + end if (recipe.normal ~= nil) then recipe.normal.energy_required = energy @@ -188,6 +194,9 @@ data.raw["ammo"]["artillery-shell"].stack_size = 10 {# each randomized tech gets set to be invisible, with new nodes added that trigger those #} {%- for original_tech_name, item_name, receiving_player, advancement in locations %} original_tech = technologies["{{original_tech_name}}"] +if original_tech == nil then + error("Some mod that is installed has removed tech \"{{original_tech_name}}\"") +end {#- the tech researched by the local player #} new_tree_copy = table.deepcopy(template_tech) new_tree_copy.name = "ap-{{ tech_table[original_tech_name] }}-"{# use AP ID #} @@ -220,13 +229,13 @@ data:extend{new_tree_copy} {% endfor %} {% if recipe_time_scale %} {%- for recipe_name, recipe in recipes.items() %} -{%- if recipe.category not in ("basic-solid", "basic-fluid") %} +{%- if not recipe.mining %} adjust_energy("{{ recipe_name }}", {{ flop_random(*recipe_time_scale) }}) {%- endif %} {%- endfor -%} {% elif recipe_time_range %} {%- for recipe_name, recipe in recipes.items() %} -{%- if recipe.category not in ("basic-solid", "basic-fluid") %} +{%- if not recipe.mining %} set_energy("{{ recipe_name }}", {{ flop_random(*recipe_time_range) }}) {%- endif %} {%- endfor -%} diff --git a/worlds/factorio/data/mods.json b/worlds/factorio/data/mods.json new file mode 100644 index 0000000000..0291914e21 --- /dev/null +++ b/worlds/factorio/data/mods.json @@ -0,0 +1 @@ +{"base":"1.1.69","archipelago-extractor":"1.1.1"} \ No newline at end of file diff --git a/worlds/factorio/data/recipes.json b/worlds/factorio/data/recipes.json index 4c4ab81526..47ace8669f 100644 --- a/worlds/factorio/data/recipes.json +++ b/worlds/factorio/data/recipes.json @@ -1 +1 @@ -{"accumulator":{"ingredients":{"iron-plate":2,"battery":5},"products":{"accumulator":1},"category":"crafting","energy":10},"advanced-circuit":{"ingredients":{"plastic-bar":2,"copper-cable":4,"electronic-circuit":2},"products":{"advanced-circuit":1},"category":"crafting","energy":6},"arithmetic-combinator":{"ingredients":{"copper-cable":5,"electronic-circuit":5},"products":{"arithmetic-combinator":1},"category":"crafting","energy":0.5},"artillery-shell":{"ingredients":{"explosives":8,"explosive-cannon-shell":4,"radar":1},"products":{"artillery-shell":1},"category":"crafting","energy":15},"artillery-targeting-remote":{"ingredients":{"processing-unit":1,"radar":1},"products":{"artillery-targeting-remote":1},"category":"crafting","energy":0.5},"artillery-turret":{"ingredients":{"steel-plate":60,"iron-gear-wheel":40,"advanced-circuit":20,"concrete":60},"products":{"artillery-turret":1},"category":"crafting","energy":40},"artillery-wagon":{"ingredients":{"steel-plate":40,"iron-gear-wheel":10,"advanced-circuit":20,"engine-unit":64,"pipe":16},"products":{"artillery-wagon":1},"category":"crafting","energy":4},"assembling-machine-1":{"ingredients":{"iron-plate":9,"iron-gear-wheel":5,"electronic-circuit":3},"products":{"assembling-machine-1":1},"category":"crafting","energy":0.5},"assembling-machine-2":{"ingredients":{"steel-plate":2,"iron-gear-wheel":5,"electronic-circuit":3,"assembling-machine-1":1},"products":{"assembling-machine-2":1},"category":"crafting","energy":0.5},"assembling-machine-3":{"ingredients":{"assembling-machine-2":2,"speed-module":4},"products":{"assembling-machine-3":1},"category":"crafting","energy":0.5},"atomic-bomb":{"ingredients":{"explosives":10,"rocket-control-unit":10,"uranium-235":30},"products":{"atomic-bomb":1},"category":"crafting","energy":50},"automation-science-pack":{"ingredients":{"copper-plate":1,"iron-gear-wheel":1},"products":{"automation-science-pack":1},"category":"crafting","energy":5},"battery":{"ingredients":{"iron-plate":1,"copper-plate":1,"sulfuric-acid":20},"products":{"battery":1},"category":"chemistry","energy":4},"battery-equipment":{"ingredients":{"steel-plate":10,"battery":5},"products":{"battery-equipment":1},"category":"crafting","energy":10},"battery-mk2-equipment":{"ingredients":{"processing-unit":15,"low-density-structure":5,"battery-equipment":10},"products":{"battery-mk2-equipment":1},"category":"crafting","energy":10},"beacon":{"ingredients":{"steel-plate":10,"copper-cable":10,"electronic-circuit":20,"advanced-circuit":20},"products":{"beacon":1},"category":"crafting","energy":15},"belt-immunity-equipment":{"ingredients":{"steel-plate":10,"advanced-circuit":5},"products":{"belt-immunity-equipment":1},"category":"crafting","energy":10},"big-electric-pole":{"ingredients":{"copper-plate":5,"steel-plate":5,"iron-stick":8},"products":{"big-electric-pole":1},"category":"crafting","energy":0.5},"boiler":{"ingredients":{"pipe":4,"stone-furnace":1},"products":{"boiler":1},"category":"crafting","energy":0.5},"burner-inserter":{"ingredients":{"iron-plate":1,"iron-gear-wheel":1},"products":{"burner-inserter":1},"category":"crafting","energy":0.5},"burner-mining-drill":{"ingredients":{"iron-plate":3,"iron-gear-wheel":3,"stone-furnace":1},"products":{"burner-mining-drill":1},"category":"crafting","energy":2},"cannon-shell":{"ingredients":{"steel-plate":2,"plastic-bar":2,"explosives":1},"products":{"cannon-shell":1},"category":"crafting","energy":8},"car":{"ingredients":{"iron-plate":20,"steel-plate":5,"engine-unit":8},"products":{"car":1},"category":"crafting","energy":2},"cargo-wagon":{"ingredients":{"iron-plate":20,"steel-plate":20,"iron-gear-wheel":10},"products":{"cargo-wagon":1},"category":"crafting","energy":1},"centrifuge":{"ingredients":{"steel-plate":50,"iron-gear-wheel":100,"advanced-circuit":100,"concrete":100},"products":{"centrifuge":1},"category":"crafting","energy":4},"chemical-plant":{"ingredients":{"steel-plate":5,"iron-gear-wheel":5,"electronic-circuit":5,"pipe":5},"products":{"chemical-plant":1},"category":"crafting","energy":5},"chemical-science-pack":{"ingredients":{"sulfur":1,"advanced-circuit":3,"engine-unit":2},"products":{"chemical-science-pack":2},"category":"crafting","energy":24},"cliff-explosives":{"ingredients":{"explosives":10,"empty-barrel":1,"grenade":1},"products":{"cliff-explosives":1},"category":"crafting","energy":8},"cluster-grenade":{"ingredients":{"steel-plate":5,"explosives":5,"grenade":7},"products":{"cluster-grenade":1},"category":"crafting","energy":8},"combat-shotgun":{"ingredients":{"wood":10,"copper-plate":10,"steel-plate":15,"iron-gear-wheel":5},"products":{"combat-shotgun":1},"category":"crafting","energy":10},"concrete":{"ingredients":{"iron-ore":1,"stone-brick":5,"water":100},"products":{"concrete":10},"category":"crafting-with-fluid","energy":10},"constant-combinator":{"ingredients":{"copper-cable":5,"electronic-circuit":2},"products":{"constant-combinator":1},"category":"crafting","energy":0.5},"construction-robot":{"ingredients":{"electronic-circuit":2,"flying-robot-frame":1},"products":{"construction-robot":1},"category":"crafting","energy":0.5},"copper-cable":{"ingredients":{"copper-plate":1},"products":{"copper-cable":2},"category":"crafting","energy":0.5},"copper-plate":{"ingredients":{"copper-ore":1},"products":{"copper-plate":1},"category":"smelting","energy":3.20000000000000017763568394002504646778106689453125},"decider-combinator":{"ingredients":{"copper-cable":5,"electronic-circuit":5},"products":{"decider-combinator":1},"category":"crafting","energy":0.5},"defender-capsule":{"ingredients":{"iron-gear-wheel":3,"electronic-circuit":3,"piercing-rounds-magazine":3},"products":{"defender-capsule":1},"category":"crafting","energy":8},"destroyer-capsule":{"ingredients":{"speed-module":1,"distractor-capsule":4},"products":{"destroyer-capsule":1},"category":"crafting","energy":15},"discharge-defense-equipment":{"ingredients":{"steel-plate":20,"processing-unit":5,"laser-turret":10},"products":{"discharge-defense-equipment":1},"category":"crafting","energy":10},"discharge-defense-remote":{"ingredients":{"electronic-circuit":1},"products":{"discharge-defense-remote":1},"category":"crafting","energy":0.5},"distractor-capsule":{"ingredients":{"advanced-circuit":3,"defender-capsule":4},"products":{"distractor-capsule":1},"category":"crafting","energy":15},"effectivity-module":{"ingredients":{"electronic-circuit":5,"advanced-circuit":5},"products":{"effectivity-module":1},"category":"crafting","energy":15},"effectivity-module-2":{"ingredients":{"advanced-circuit":5,"processing-unit":5,"effectivity-module":4},"products":{"effectivity-module-2":1},"category":"crafting","energy":30},"effectivity-module-3":{"ingredients":{"advanced-circuit":5,"processing-unit":5,"effectivity-module-2":5},"products":{"effectivity-module-3":1},"category":"crafting","energy":60},"electric-engine-unit":{"ingredients":{"electronic-circuit":2,"engine-unit":1,"lubricant":15},"products":{"electric-engine-unit":1},"category":"crafting-with-fluid","energy":10},"electric-furnace":{"ingredients":{"steel-plate":10,"advanced-circuit":5,"stone-brick":10},"products":{"electric-furnace":1},"category":"crafting","energy":5},"electric-mining-drill":{"ingredients":{"iron-plate":10,"iron-gear-wheel":5,"electronic-circuit":3},"products":{"electric-mining-drill":1},"category":"crafting","energy":2},"electronic-circuit":{"ingredients":{"iron-plate":1,"copper-cable":3},"products":{"electronic-circuit":1},"category":"crafting","energy":0.5},"empty-barrel":{"ingredients":{"steel-plate":1},"products":{"empty-barrel":1},"category":"crafting","energy":1},"energy-shield-equipment":{"ingredients":{"steel-plate":10,"advanced-circuit":5},"products":{"energy-shield-equipment":1},"category":"crafting","energy":10},"energy-shield-mk2-equipment":{"ingredients":{"processing-unit":5,"low-density-structure":5,"energy-shield-equipment":10},"products":{"energy-shield-mk2-equipment":1},"category":"crafting","energy":10},"engine-unit":{"ingredients":{"steel-plate":1,"iron-gear-wheel":1,"pipe":2},"products":{"engine-unit":1},"category":"advanced-crafting","energy":10},"exoskeleton-equipment":{"ingredients":{"steel-plate":20,"processing-unit":10,"electric-engine-unit":30},"products":{"exoskeleton-equipment":1},"category":"crafting","energy":10},"explosive-cannon-shell":{"ingredients":{"steel-plate":2,"plastic-bar":2,"explosives":2},"products":{"explosive-cannon-shell":1},"category":"crafting","energy":8},"explosive-rocket":{"ingredients":{"explosives":2,"rocket":1},"products":{"explosive-rocket":1},"category":"crafting","energy":8},"explosive-uranium-cannon-shell":{"ingredients":{"uranium-238":1,"explosive-cannon-shell":1},"products":{"explosive-uranium-cannon-shell":1},"category":"crafting","energy":12},"explosives":{"ingredients":{"coal":1,"sulfur":1,"water":10},"products":{"explosives":2},"category":"chemistry","energy":4},"express-splitter":{"ingredients":{"iron-gear-wheel":10,"advanced-circuit":10,"fast-splitter":1,"lubricant":80},"products":{"express-splitter":1},"category":"crafting-with-fluid","energy":2},"express-transport-belt":{"ingredients":{"iron-gear-wheel":10,"fast-transport-belt":1,"lubricant":20},"products":{"express-transport-belt":1},"category":"crafting-with-fluid","energy":0.5},"express-underground-belt":{"ingredients":{"iron-gear-wheel":80,"fast-underground-belt":2,"lubricant":40},"products":{"express-underground-belt":2},"category":"crafting-with-fluid","energy":2},"fast-inserter":{"ingredients":{"iron-plate":2,"electronic-circuit":2,"inserter":1},"products":{"fast-inserter":1},"category":"crafting","energy":0.5},"fast-splitter":{"ingredients":{"iron-gear-wheel":10,"electronic-circuit":10,"splitter":1},"products":{"fast-splitter":1},"category":"crafting","energy":2},"fast-transport-belt":{"ingredients":{"iron-gear-wheel":5,"transport-belt":1},"products":{"fast-transport-belt":1},"category":"crafting","energy":0.5},"fast-underground-belt":{"ingredients":{"iron-gear-wheel":40,"underground-belt":2},"products":{"fast-underground-belt":2},"category":"crafting","energy":2},"filter-inserter":{"ingredients":{"electronic-circuit":4,"fast-inserter":1},"products":{"filter-inserter":1},"category":"crafting","energy":0.5},"firearm-magazine":{"ingredients":{"iron-plate":4},"products":{"firearm-magazine":1},"category":"crafting","energy":1},"flamethrower":{"ingredients":{"steel-plate":5,"iron-gear-wheel":10},"products":{"flamethrower":1},"category":"crafting","energy":10},"flamethrower-ammo":{"ingredients":{"steel-plate":5,"crude-oil":100},"products":{"flamethrower-ammo":1},"category":"chemistry","energy":6},"flamethrower-turret":{"ingredients":{"steel-plate":30,"iron-gear-wheel":15,"engine-unit":5,"pipe":10},"products":{"flamethrower-turret":1},"category":"crafting","energy":20},"fluid-wagon":{"ingredients":{"steel-plate":16,"iron-gear-wheel":10,"storage-tank":1,"pipe":8},"products":{"fluid-wagon":1},"category":"crafting","energy":1.5},"flying-robot-frame":{"ingredients":{"steel-plate":1,"battery":2,"electronic-circuit":3,"electric-engine-unit":1},"products":{"flying-robot-frame":1},"category":"crafting","energy":20},"fusion-reactor-equipment":{"ingredients":{"processing-unit":200,"low-density-structure":50},"products":{"fusion-reactor-equipment":1},"category":"crafting","energy":10},"gate":{"ingredients":{"steel-plate":2,"electronic-circuit":2,"stone-wall":1},"products":{"gate":1},"category":"crafting","energy":0.5},"green-wire":{"ingredients":{"copper-cable":1,"electronic-circuit":1},"products":{"green-wire":1},"category":"crafting","energy":0.5},"grenade":{"ingredients":{"coal":10,"iron-plate":5},"products":{"grenade":1},"category":"crafting","energy":8},"gun-turret":{"ingredients":{"iron-plate":20,"copper-plate":10,"iron-gear-wheel":10},"products":{"gun-turret":1},"category":"crafting","energy":8},"hazard-concrete":{"ingredients":{"concrete":10},"products":{"hazard-concrete":10},"category":"crafting","energy":0.25},"heat-exchanger":{"ingredients":{"copper-plate":100,"steel-plate":10,"pipe":10},"products":{"heat-exchanger":1},"category":"crafting","energy":3},"heat-pipe":{"ingredients":{"copper-plate":20,"steel-plate":10},"products":{"heat-pipe":1},"category":"crafting","energy":1},"heavy-armor":{"ingredients":{"copper-plate":100,"steel-plate":50},"products":{"heavy-armor":1},"category":"crafting","energy":8},"inserter":{"ingredients":{"iron-plate":1,"iron-gear-wheel":1,"electronic-circuit":1},"products":{"inserter":1},"category":"crafting","energy":0.5},"iron-chest":{"ingredients":{"iron-plate":8},"products":{"iron-chest":1},"category":"crafting","energy":0.5},"iron-gear-wheel":{"ingredients":{"iron-plate":2},"products":{"iron-gear-wheel":1},"category":"crafting","energy":0.5},"iron-plate":{"ingredients":{"iron-ore":1},"products":{"iron-plate":1},"category":"smelting","energy":3.20000000000000017763568394002504646778106689453125},"iron-stick":{"ingredients":{"iron-plate":1},"products":{"iron-stick":2},"category":"crafting","energy":0.5},"lab":{"ingredients":{"iron-gear-wheel":10,"electronic-circuit":10,"transport-belt":4},"products":{"lab":1},"category":"crafting","energy":2},"land-mine":{"ingredients":{"steel-plate":1,"explosives":2},"products":{"land-mine":4},"category":"crafting","energy":5},"landfill":{"ingredients":{"stone":20},"products":{"landfill":1},"category":"crafting","energy":0.5},"laser-turret":{"ingredients":{"steel-plate":20,"battery":12,"electronic-circuit":20},"products":{"laser-turret":1},"category":"crafting","energy":20},"light-armor":{"ingredients":{"iron-plate":40},"products":{"light-armor":1},"category":"crafting","energy":3},"locomotive":{"ingredients":{"steel-plate":30,"electronic-circuit":10,"engine-unit":20},"products":{"locomotive":1},"category":"crafting","energy":4},"logistic-chest-active-provider":{"ingredients":{"electronic-circuit":3,"advanced-circuit":1,"steel-chest":1},"products":{"logistic-chest-active-provider":1},"category":"crafting","energy":0.5},"logistic-chest-buffer":{"ingredients":{"electronic-circuit":3,"advanced-circuit":1,"steel-chest":1},"products":{"logistic-chest-buffer":1},"category":"crafting","energy":0.5},"logistic-chest-passive-provider":{"ingredients":{"electronic-circuit":3,"advanced-circuit":1,"steel-chest":1},"products":{"logistic-chest-passive-provider":1},"category":"crafting","energy":0.5},"logistic-chest-requester":{"ingredients":{"electronic-circuit":3,"advanced-circuit":1,"steel-chest":1},"products":{"logistic-chest-requester":1},"category":"crafting","energy":0.5},"logistic-chest-storage":{"ingredients":{"electronic-circuit":3,"advanced-circuit":1,"steel-chest":1},"products":{"logistic-chest-storage":1},"category":"crafting","energy":0.5},"logistic-robot":{"ingredients":{"advanced-circuit":2,"flying-robot-frame":1},"products":{"logistic-robot":1},"category":"crafting","energy":0.5},"logistic-science-pack":{"ingredients":{"transport-belt":1,"inserter":1},"products":{"logistic-science-pack":1},"category":"crafting","energy":6},"long-handed-inserter":{"ingredients":{"iron-plate":1,"iron-gear-wheel":1,"inserter":1},"products":{"long-handed-inserter":1},"category":"crafting","energy":0.5},"low-density-structure":{"ingredients":{"copper-plate":20,"steel-plate":2,"plastic-bar":5},"products":{"low-density-structure":1},"category":"crafting","energy":20},"lubricant":{"ingredients":{"heavy-oil":10},"products":{"lubricant":10},"category":"chemistry","energy":1},"medium-electric-pole":{"ingredients":{"copper-plate":2,"steel-plate":2,"iron-stick":4},"products":{"medium-electric-pole":1},"category":"crafting","energy":0.5},"military-science-pack":{"ingredients":{"piercing-rounds-magazine":1,"grenade":1,"stone-wall":2},"products":{"military-science-pack":2},"category":"crafting","energy":10},"modular-armor":{"ingredients":{"steel-plate":50,"advanced-circuit":30},"products":{"modular-armor":1},"category":"crafting","energy":15},"night-vision-equipment":{"ingredients":{"steel-plate":10,"advanced-circuit":5},"products":{"night-vision-equipment":1},"category":"crafting","energy":10},"nuclear-fuel":{"ingredients":{"rocket-fuel":1,"uranium-235":1},"products":{"nuclear-fuel":1},"category":"centrifuging","energy":90},"nuclear-reactor":{"ingredients":{"copper-plate":500,"steel-plate":500,"advanced-circuit":500,"concrete":500},"products":{"nuclear-reactor":1},"category":"crafting","energy":8},"offshore-pump":{"ingredients":{"iron-gear-wheel":1,"electronic-circuit":2,"pipe":1},"products":{"offshore-pump":1},"category":"crafting","energy":0.5},"oil-refinery":{"ingredients":{"steel-plate":15,"iron-gear-wheel":10,"electronic-circuit":10,"pipe":10,"stone-brick":10},"products":{"oil-refinery":1},"category":"crafting","energy":8},"personal-laser-defense-equipment":{"ingredients":{"processing-unit":20,"low-density-structure":5,"laser-turret":5},"products":{"personal-laser-defense-equipment":1},"category":"crafting","energy":10},"personal-roboport-equipment":{"ingredients":{"steel-plate":20,"battery":45,"iron-gear-wheel":40,"advanced-circuit":10},"products":{"personal-roboport-equipment":1},"category":"crafting","energy":10},"personal-roboport-mk2-equipment":{"ingredients":{"processing-unit":100,"low-density-structure":20,"personal-roboport-equipment":5},"products":{"personal-roboport-mk2-equipment":1},"category":"crafting","energy":20},"piercing-rounds-magazine":{"ingredients":{"copper-plate":5,"steel-plate":1,"firearm-magazine":1},"products":{"piercing-rounds-magazine":1},"category":"crafting","energy":3},"piercing-shotgun-shell":{"ingredients":{"copper-plate":5,"steel-plate":2,"shotgun-shell":2},"products":{"piercing-shotgun-shell":1},"category":"crafting","energy":8},"pipe":{"ingredients":{"iron-plate":1},"products":{"pipe":1},"category":"crafting","energy":0.5},"pipe-to-ground":{"ingredients":{"iron-plate":5,"pipe":10},"products":{"pipe-to-ground":2},"category":"crafting","energy":0.5},"pistol":{"ingredients":{"iron-plate":5,"copper-plate":5},"products":{"pistol":1},"category":"crafting","energy":5},"plastic-bar":{"ingredients":{"coal":1,"petroleum-gas":20},"products":{"plastic-bar":2},"category":"chemistry","energy":1},"poison-capsule":{"ingredients":{"coal":10,"steel-plate":3,"electronic-circuit":3},"products":{"poison-capsule":1},"category":"crafting","energy":8},"power-armor":{"ingredients":{"steel-plate":40,"processing-unit":40,"electric-engine-unit":20},"products":{"power-armor":1},"category":"crafting","energy":20},"power-armor-mk2":{"ingredients":{"processing-unit":60,"electric-engine-unit":40,"low-density-structure":30,"speed-module-2":25,"effectivity-module-2":25},"products":{"power-armor-mk2":1},"category":"crafting","energy":25},"power-switch":{"ingredients":{"iron-plate":5,"copper-cable":5,"electronic-circuit":2},"products":{"power-switch":1},"category":"crafting","energy":2},"processing-unit":{"ingredients":{"electronic-circuit":20,"advanced-circuit":2,"sulfuric-acid":5},"products":{"processing-unit":1},"category":"crafting-with-fluid","energy":10},"production-science-pack":{"ingredients":{"rail":30,"electric-furnace":1,"productivity-module":1},"products":{"production-science-pack":3},"category":"crafting","energy":21},"productivity-module":{"ingredients":{"electronic-circuit":5,"advanced-circuit":5},"products":{"productivity-module":1},"category":"crafting","energy":15},"productivity-module-2":{"ingredients":{"advanced-circuit":5,"processing-unit":5,"productivity-module":4},"products":{"productivity-module-2":1},"category":"crafting","energy":30},"productivity-module-3":{"ingredients":{"advanced-circuit":5,"processing-unit":5,"productivity-module-2":5},"products":{"productivity-module-3":1},"category":"crafting","energy":60},"programmable-speaker":{"ingredients":{"iron-plate":3,"copper-cable":5,"iron-stick":4,"electronic-circuit":4},"products":{"programmable-speaker":1},"category":"crafting","energy":2},"pump":{"ingredients":{"steel-plate":1,"engine-unit":1,"pipe":1},"products":{"pump":1},"category":"crafting","energy":2},"pumpjack":{"ingredients":{"steel-plate":5,"iron-gear-wheel":10,"electronic-circuit":5,"pipe":10},"products":{"pumpjack":1},"category":"crafting","energy":5},"radar":{"ingredients":{"iron-plate":10,"iron-gear-wheel":5,"electronic-circuit":5},"products":{"radar":1},"category":"crafting","energy":0.5},"rail":{"ingredients":{"stone":1,"steel-plate":1,"iron-stick":1},"products":{"rail":2},"category":"crafting","energy":0.5},"rail-chain-signal":{"ingredients":{"iron-plate":5,"electronic-circuit":1},"products":{"rail-chain-signal":1},"category":"crafting","energy":0.5},"rail-signal":{"ingredients":{"iron-plate":5,"electronic-circuit":1},"products":{"rail-signal":1},"category":"crafting","energy":0.5},"red-wire":{"ingredients":{"copper-cable":1,"electronic-circuit":1},"products":{"red-wire":1},"category":"crafting","energy":0.5},"refined-concrete":{"ingredients":{"steel-plate":1,"iron-stick":8,"concrete":20,"water":100},"products":{"refined-concrete":10},"category":"crafting-with-fluid","energy":15},"refined-hazard-concrete":{"ingredients":{"refined-concrete":10},"products":{"refined-hazard-concrete":10},"category":"crafting","energy":0.25},"repair-pack":{"ingredients":{"iron-gear-wheel":2,"electronic-circuit":2},"products":{"repair-pack":1},"category":"crafting","energy":0.5},"roboport":{"ingredients":{"steel-plate":45,"iron-gear-wheel":45,"advanced-circuit":45},"products":{"roboport":1},"category":"crafting","energy":5},"rocket":{"ingredients":{"iron-plate":2,"explosives":1,"electronic-circuit":1},"products":{"rocket":1},"category":"crafting","energy":8},"rocket-control-unit":{"ingredients":{"processing-unit":1,"speed-module":1},"products":{"rocket-control-unit":1},"category":"crafting","energy":30},"rocket-fuel":{"ingredients":{"solid-fuel":10,"light-oil":10},"products":{"rocket-fuel":1},"category":"crafting-with-fluid","energy":30},"rocket-launcher":{"ingredients":{"iron-plate":5,"iron-gear-wheel":5,"electronic-circuit":5},"products":{"rocket-launcher":1},"category":"crafting","energy":10},"rocket-part":{"ingredients":{"rocket-control-unit":10,"low-density-structure":10,"rocket-fuel":10},"products":{"rocket-part":1},"category":"rocket-building","energy":3},"rocket-silo":{"ingredients":{"steel-plate":1000,"processing-unit":200,"electric-engine-unit":200,"pipe":100,"concrete":1000},"products":{"rocket-silo":1},"category":"crafting","energy":30},"satellite":{"ingredients":{"processing-unit":100,"low-density-structure":100,"rocket-fuel":50,"solar-panel":100,"accumulator":100,"radar":5},"products":{"satellite":1},"category":"crafting","energy":5},"shotgun":{"ingredients":{"wood":5,"iron-plate":15,"copper-plate":10,"iron-gear-wheel":5},"products":{"shotgun":1},"category":"crafting","energy":10},"shotgun-shell":{"ingredients":{"iron-plate":2,"copper-plate":2},"products":{"shotgun-shell":1},"category":"crafting","energy":3},"slowdown-capsule":{"ingredients":{"coal":5,"steel-plate":2,"electronic-circuit":2},"products":{"slowdown-capsule":1},"category":"crafting","energy":8},"small-electric-pole":{"ingredients":{"wood":1,"copper-cable":2},"products":{"small-electric-pole":2},"category":"crafting","energy":0.5},"small-lamp":{"ingredients":{"iron-plate":1,"copper-cable":3,"electronic-circuit":1},"products":{"small-lamp":1},"category":"crafting","energy":0.5},"solar-panel":{"ingredients":{"copper-plate":5,"steel-plate":5,"electronic-circuit":15},"products":{"solar-panel":1},"category":"crafting","energy":10},"solar-panel-equipment":{"ingredients":{"steel-plate":5,"advanced-circuit":2,"solar-panel":1},"products":{"solar-panel-equipment":1},"category":"crafting","energy":10},"speed-module":{"ingredients":{"electronic-circuit":5,"advanced-circuit":5},"products":{"speed-module":1},"category":"crafting","energy":15},"speed-module-2":{"ingredients":{"advanced-circuit":5,"processing-unit":5,"speed-module":4},"products":{"speed-module-2":1},"category":"crafting","energy":30},"speed-module-3":{"ingredients":{"advanced-circuit":5,"processing-unit":5,"speed-module-2":5},"products":{"speed-module-3":1},"category":"crafting","energy":60},"spidertron":{"ingredients":{"raw-fish":1,"rocket-control-unit":16,"low-density-structure":150,"effectivity-module-3":2,"rocket-launcher":4,"fusion-reactor-equipment":2,"exoskeleton-equipment":4,"radar":2},"products":{"spidertron":1},"category":"crafting","energy":10},"spidertron-remote":{"ingredients":{"rocket-control-unit":1,"radar":1},"products":{"spidertron-remote":1},"category":"crafting","energy":0.5},"splitter":{"ingredients":{"iron-plate":5,"electronic-circuit":5,"transport-belt":4},"products":{"splitter":1},"category":"crafting","energy":1},"stack-filter-inserter":{"ingredients":{"electronic-circuit":5,"stack-inserter":1},"products":{"stack-filter-inserter":1},"category":"crafting","energy":0.5},"stack-inserter":{"ingredients":{"iron-gear-wheel":15,"electronic-circuit":15,"advanced-circuit":1,"fast-inserter":1},"products":{"stack-inserter":1},"category":"crafting","energy":0.5},"steam-engine":{"ingredients":{"iron-plate":10,"iron-gear-wheel":8,"pipe":5},"products":{"steam-engine":1},"category":"crafting","energy":0.5},"steam-turbine":{"ingredients":{"copper-plate":50,"iron-gear-wheel":50,"pipe":20},"products":{"steam-turbine":1},"category":"crafting","energy":3},"steel-chest":{"ingredients":{"steel-plate":8},"products":{"steel-chest":1},"category":"crafting","energy":0.5},"steel-furnace":{"ingredients":{"steel-plate":6,"stone-brick":10},"products":{"steel-furnace":1},"category":"crafting","energy":3},"steel-plate":{"ingredients":{"iron-plate":5},"products":{"steel-plate":1},"category":"smelting","energy":16},"stone-brick":{"ingredients":{"stone":2},"products":{"stone-brick":1},"category":"smelting","energy":3.20000000000000017763568394002504646778106689453125},"stone-furnace":{"ingredients":{"stone":5},"products":{"stone-furnace":1},"category":"crafting","energy":0.5},"stone-wall":{"ingredients":{"stone-brick":5},"products":{"stone-wall":1},"category":"crafting","energy":0.5},"storage-tank":{"ingredients":{"iron-plate":20,"steel-plate":5},"products":{"storage-tank":1},"category":"crafting","energy":3},"submachine-gun":{"ingredients":{"iron-plate":10,"copper-plate":5,"iron-gear-wheel":10},"products":{"submachine-gun":1},"category":"crafting","energy":10},"substation":{"ingredients":{"copper-plate":5,"steel-plate":10,"advanced-circuit":5},"products":{"substation":1},"category":"crafting","energy":0.5},"sulfur":{"ingredients":{"water":30,"petroleum-gas":30},"products":{"sulfur":2},"category":"chemistry","energy":1},"sulfuric-acid":{"ingredients":{"iron-plate":1,"sulfur":5,"water":100},"products":{"sulfuric-acid":50},"category":"chemistry","energy":1},"tank":{"ingredients":{"steel-plate":50,"iron-gear-wheel":15,"advanced-circuit":10,"engine-unit":32},"products":{"tank":1},"category":"crafting","energy":5},"train-stop":{"ingredients":{"iron-plate":6,"steel-plate":3,"iron-stick":6,"electronic-circuit":5},"products":{"train-stop":1},"category":"crafting","energy":0.5},"transport-belt":{"ingredients":{"iron-plate":1,"iron-gear-wheel":1},"products":{"transport-belt":2},"category":"crafting","energy":0.5},"underground-belt":{"ingredients":{"iron-plate":10,"transport-belt":5},"products":{"underground-belt":2},"category":"crafting","energy":1},"uranium-cannon-shell":{"ingredients":{"uranium-238":1,"cannon-shell":1},"products":{"uranium-cannon-shell":1},"category":"crafting","energy":12},"uranium-fuel-cell":{"ingredients":{"iron-plate":10,"uranium-235":1,"uranium-238":19},"products":{"uranium-fuel-cell":10},"category":"crafting","energy":10},"uranium-rounds-magazine":{"ingredients":{"uranium-238":1,"piercing-rounds-magazine":1},"products":{"uranium-rounds-magazine":1},"category":"crafting","energy":10},"utility-science-pack":{"ingredients":{"processing-unit":2,"flying-robot-frame":1,"low-density-structure":3},"products":{"utility-science-pack":3},"category":"crafting","energy":21},"wooden-chest":{"ingredients":{"wood":2},"products":{"wooden-chest":1},"category":"crafting","energy":0.5},"basic-oil-processing":{"ingredients":{"crude-oil":100},"products":{"petroleum-gas":45},"category":"oil-processing","energy":5},"advanced-oil-processing":{"ingredients":{"water":50,"crude-oil":100},"products":{"heavy-oil":25,"light-oil":45,"petroleum-gas":55},"category":"oil-processing","energy":5},"coal-liquefaction":{"ingredients":{"coal":10,"heavy-oil":25,"steam":50},"products":{"heavy-oil":90,"light-oil":20,"petroleum-gas":10},"category":"oil-processing","energy":5},"fill-crude-oil-barrel":{"ingredients":{"empty-barrel":1,"crude-oil":50},"products":{"crude-oil-barrel":1},"category":"crafting-with-fluid","energy":0.2},"fill-heavy-oil-barrel":{"ingredients":{"empty-barrel":1,"heavy-oil":50},"products":{"heavy-oil-barrel":1},"category":"crafting-with-fluid","energy":0.2},"fill-light-oil-barrel":{"ingredients":{"empty-barrel":1,"light-oil":50},"products":{"light-oil-barrel":1},"category":"crafting-with-fluid","energy":0.2},"fill-lubricant-barrel":{"ingredients":{"empty-barrel":1,"lubricant":50},"products":{"lubricant-barrel":1},"category":"crafting-with-fluid","energy":0.2},"fill-petroleum-gas-barrel":{"ingredients":{"empty-barrel":1,"petroleum-gas":50},"products":{"petroleum-gas-barrel":1},"category":"crafting-with-fluid","energy":0.2},"fill-sulfuric-acid-barrel":{"ingredients":{"empty-barrel":1,"sulfuric-acid":50},"products":{"sulfuric-acid-barrel":1},"category":"crafting-with-fluid","energy":0.2},"fill-water-barrel":{"ingredients":{"empty-barrel":1,"water":50},"products":{"water-barrel":1},"category":"crafting-with-fluid","energy":0.2},"heavy-oil-cracking":{"ingredients":{"water":30,"heavy-oil":40},"products":{"light-oil":30},"category":"chemistry","energy":2},"light-oil-cracking":{"ingredients":{"water":30,"light-oil":30},"products":{"petroleum-gas":20},"category":"chemistry","energy":2},"solid-fuel-from-light-oil":{"ingredients":{"light-oil":10},"products":{"solid-fuel":1},"category":"chemistry","energy":2},"solid-fuel-from-petroleum-gas":{"ingredients":{"petroleum-gas":20},"products":{"solid-fuel":1},"category":"chemistry","energy":2},"solid-fuel-from-heavy-oil":{"ingredients":{"heavy-oil":20},"products":{"solid-fuel":1},"category":"chemistry","energy":2},"empty-crude-oil-barrel":{"ingredients":{"crude-oil-barrel":1},"products":{"empty-barrel":1,"crude-oil":50},"category":"crafting-with-fluid","energy":0.2},"empty-heavy-oil-barrel":{"ingredients":{"heavy-oil-barrel":1},"products":{"empty-barrel":1,"heavy-oil":50},"category":"crafting-with-fluid","energy":0.2},"empty-light-oil-barrel":{"ingredients":{"light-oil-barrel":1},"products":{"empty-barrel":1,"light-oil":50},"category":"crafting-with-fluid","energy":0.2},"empty-lubricant-barrel":{"ingredients":{"lubricant-barrel":1},"products":{"empty-barrel":1,"lubricant":50},"category":"crafting-with-fluid","energy":0.2},"empty-petroleum-gas-barrel":{"ingredients":{"petroleum-gas-barrel":1},"products":{"empty-barrel":1,"petroleum-gas":50},"category":"crafting-with-fluid","energy":0.2},"empty-sulfuric-acid-barrel":{"ingredients":{"sulfuric-acid-barrel":1},"products":{"empty-barrel":1,"sulfuric-acid":50},"category":"crafting-with-fluid","energy":0.2},"empty-water-barrel":{"ingredients":{"water-barrel":1},"products":{"empty-barrel":1,"water":50},"category":"crafting-with-fluid","energy":0.2},"uranium-processing":{"ingredients":{"uranium-ore":10},"products":{"uranium-235":1,"uranium-238":1},"category":"centrifuging","energy":12},"nuclear-fuel-reprocessing":{"ingredients":{"used-up-uranium-fuel-cell":5},"products":{"uranium-238":3},"category":"centrifuging","energy":60},"kovarex-enrichment-process":{"ingredients":{"uranium-235":40,"uranium-238":5},"products":{"uranium-235":41,"uranium-238":2},"category":"centrifuging","energy":60}} \ No newline at end of file +{"automation-science-pack":{"ingredients":{"copper-plate":1,"iron-gear-wheel":1},"products":{"automation-science-pack":1},"category":"crafting","energy":5,"unlocked_at_start":true},"boiler":{"ingredients":{"pipe":4,"stone-furnace":1},"products":{"boiler":1},"category":"crafting","energy":0.5,"unlocked_at_start":true},"burner-inserter":{"ingredients":{"iron-plate":1,"iron-gear-wheel":1},"products":{"burner-inserter":1},"category":"crafting","energy":0.5,"unlocked_at_start":true},"burner-mining-drill":{"ingredients":{"iron-plate":3,"iron-gear-wheel":3,"stone-furnace":1},"products":{"burner-mining-drill":1},"category":"crafting","energy":2,"unlocked_at_start":true},"copper-cable":{"ingredients":{"copper-plate":1},"products":{"copper-cable":2},"category":"crafting","energy":0.5,"unlocked_at_start":true},"copper-plate":{"ingredients":{"copper-ore":1},"products":{"copper-plate":1},"category":"smelting","energy":3.20000000000000017763568394002504646778106689453125,"unlocked_at_start":true},"electric-mining-drill":{"ingredients":{"iron-plate":10,"iron-gear-wheel":5,"electronic-circuit":3},"products":{"electric-mining-drill":1},"category":"crafting","energy":2,"unlocked_at_start":true},"electronic-circuit":{"ingredients":{"iron-plate":1,"copper-cable":3},"products":{"electronic-circuit":1},"category":"crafting","energy":0.5,"unlocked_at_start":true},"firearm-magazine":{"ingredients":{"iron-plate":4},"products":{"firearm-magazine":1},"category":"crafting","energy":1,"unlocked_at_start":true},"inserter":{"ingredients":{"iron-plate":1,"iron-gear-wheel":1,"electronic-circuit":1},"products":{"inserter":1},"category":"crafting","energy":0.5,"unlocked_at_start":true},"iron-chest":{"ingredients":{"iron-plate":8},"products":{"iron-chest":1},"category":"crafting","energy":0.5,"unlocked_at_start":true},"iron-gear-wheel":{"ingredients":{"iron-plate":2},"products":{"iron-gear-wheel":1},"category":"crafting","energy":0.5,"unlocked_at_start":true},"iron-plate":{"ingredients":{"iron-ore":1},"products":{"iron-plate":1},"category":"smelting","energy":3.20000000000000017763568394002504646778106689453125,"unlocked_at_start":true},"iron-stick":{"ingredients":{"iron-plate":1},"products":{"iron-stick":2},"category":"crafting","energy":0.5,"unlocked_at_start":true},"lab":{"ingredients":{"iron-gear-wheel":10,"electronic-circuit":10,"transport-belt":4},"products":{"lab":1},"category":"crafting","energy":2,"unlocked_at_start":true},"light-armor":{"ingredients":{"iron-plate":40},"products":{"light-armor":1},"category":"crafting","energy":3,"unlocked_at_start":true},"offshore-pump":{"ingredients":{"iron-gear-wheel":1,"electronic-circuit":2,"pipe":1},"products":{"offshore-pump":1},"category":"crafting","energy":0.5,"unlocked_at_start":true},"pipe":{"ingredients":{"iron-plate":1},"products":{"pipe":1},"category":"crafting","energy":0.5,"unlocked_at_start":true},"pipe-to-ground":{"ingredients":{"iron-plate":5,"pipe":10},"products":{"pipe-to-ground":2},"category":"crafting","energy":0.5,"unlocked_at_start":true},"pistol":{"ingredients":{"iron-plate":5,"copper-plate":5},"products":{"pistol":1},"category":"crafting","energy":5,"unlocked_at_start":true},"radar":{"ingredients":{"iron-plate":10,"iron-gear-wheel":5,"electronic-circuit":5},"products":{"radar":1},"category":"crafting","energy":0.5,"unlocked_at_start":true},"repair-pack":{"ingredients":{"iron-gear-wheel":2,"electronic-circuit":2},"products":{"repair-pack":1},"category":"crafting","energy":0.5,"unlocked_at_start":true},"small-electric-pole":{"ingredients":{"wood":1,"copper-cable":2},"products":{"small-electric-pole":2},"category":"crafting","energy":0.5,"unlocked_at_start":true},"steam-engine":{"ingredients":{"iron-plate":10,"iron-gear-wheel":8,"pipe":5},"products":{"steam-engine":1},"category":"crafting","energy":0.5,"unlocked_at_start":true},"stone-brick":{"ingredients":{"stone":2},"products":{"stone-brick":1},"category":"smelting","energy":3.20000000000000017763568394002504646778106689453125,"unlocked_at_start":true},"stone-furnace":{"ingredients":{"stone":5},"products":{"stone-furnace":1},"category":"crafting","energy":0.5,"unlocked_at_start":true},"transport-belt":{"ingredients":{"iron-plate":1,"iron-gear-wheel":1},"products":{"transport-belt":2},"category":"crafting","energy":0.5,"unlocked_at_start":true},"wooden-chest":{"ingredients":{"wood":2},"products":{"wooden-chest":1},"category":"crafting","energy":0.5,"unlocked_at_start":true},"assembling-machine-1":{"ingredients":{"iron-plate":9,"iron-gear-wheel":5,"electronic-circuit":3},"products":{"assembling-machine-1":1},"category":"crafting","energy":0.5,"unlocked_at_start":false},"long-handed-inserter":{"ingredients":{"iron-plate":1,"iron-gear-wheel":1,"inserter":1},"products":{"long-handed-inserter":1},"category":"crafting","energy":0.5,"unlocked_at_start":false},"assembling-machine-2":{"ingredients":{"steel-plate":2,"iron-gear-wheel":5,"electronic-circuit":3,"assembling-machine-1":1},"products":{"assembling-machine-2":1},"category":"crafting","energy":0.5,"unlocked_at_start":false},"assembling-machine-3":{"ingredients":{"assembling-machine-2":2,"speed-module":4},"products":{"assembling-machine-3":1},"category":"crafting","energy":0.5,"unlocked_at_start":false},"fast-inserter":{"ingredients":{"iron-plate":2,"electronic-circuit":2,"inserter":1},"products":{"fast-inserter":1},"category":"crafting","energy":0.5,"unlocked_at_start":false},"filter-inserter":{"ingredients":{"electronic-circuit":4,"fast-inserter":1},"products":{"filter-inserter":1},"category":"crafting","energy":0.5,"unlocked_at_start":false},"advanced-circuit":{"ingredients":{"plastic-bar":2,"copper-cable":4,"electronic-circuit":2},"products":{"advanced-circuit":1},"category":"crafting","energy":6,"unlocked_at_start":false},"processing-unit":{"ingredients":{"electronic-circuit":20,"advanced-circuit":2,"sulfuric-acid":5},"products":{"processing-unit":1},"category":"crafting-with-fluid","energy":10,"unlocked_at_start":false},"red-wire":{"ingredients":{"copper-cable":1,"electronic-circuit":1},"products":{"red-wire":1},"category":"crafting","energy":0.5,"unlocked_at_start":false},"green-wire":{"ingredients":{"copper-cable":1,"electronic-circuit":1},"products":{"green-wire":1},"category":"crafting","energy":0.5,"unlocked_at_start":false},"arithmetic-combinator":{"ingredients":{"copper-cable":5,"electronic-circuit":5},"products":{"arithmetic-combinator":1},"category":"crafting","energy":0.5,"unlocked_at_start":false},"decider-combinator":{"ingredients":{"copper-cable":5,"electronic-circuit":5},"products":{"decider-combinator":1},"category":"crafting","energy":0.5,"unlocked_at_start":false},"constant-combinator":{"ingredients":{"copper-cable":5,"electronic-circuit":2},"products":{"constant-combinator":1},"category":"crafting","energy":0.5,"unlocked_at_start":false},"power-switch":{"ingredients":{"iron-plate":5,"copper-cable":5,"electronic-circuit":2},"products":{"power-switch":1},"category":"crafting","energy":2,"unlocked_at_start":false},"programmable-speaker":{"ingredients":{"iron-plate":3,"copper-cable":5,"iron-stick":4,"electronic-circuit":4},"products":{"programmable-speaker":1},"category":"crafting","energy":2,"unlocked_at_start":false},"explosives":{"ingredients":{"coal":1,"sulfur":1,"water":10},"products":{"explosives":2},"category":"chemistry","energy":4,"unlocked_at_start":false},"underground-belt":{"ingredients":{"iron-plate":10,"transport-belt":5},"products":{"underground-belt":2},"category":"crafting","energy":1,"unlocked_at_start":false},"splitter":{"ingredients":{"iron-plate":5,"electronic-circuit":5,"transport-belt":4},"products":{"splitter":1},"category":"crafting","energy":1,"unlocked_at_start":false},"fast-transport-belt":{"ingredients":{"iron-gear-wheel":5,"transport-belt":1},"products":{"fast-transport-belt":1},"category":"crafting","energy":0.5,"unlocked_at_start":false},"fast-underground-belt":{"ingredients":{"iron-gear-wheel":40,"underground-belt":2},"products":{"fast-underground-belt":2},"category":"crafting","energy":2,"unlocked_at_start":false},"fast-splitter":{"ingredients":{"iron-gear-wheel":10,"electronic-circuit":10,"splitter":1},"products":{"fast-splitter":1},"category":"crafting","energy":2,"unlocked_at_start":false},"express-transport-belt":{"ingredients":{"iron-gear-wheel":10,"fast-transport-belt":1,"lubricant":20},"products":{"express-transport-belt":1},"category":"crafting-with-fluid","energy":0.5,"unlocked_at_start":false},"express-underground-belt":{"ingredients":{"iron-gear-wheel":80,"fast-underground-belt":2,"lubricant":40},"products":{"express-underground-belt":2},"category":"crafting-with-fluid","energy":2,"unlocked_at_start":false},"express-splitter":{"ingredients":{"iron-gear-wheel":10,"advanced-circuit":10,"fast-splitter":1,"lubricant":80},"products":{"express-splitter":1},"category":"crafting-with-fluid","energy":2,"unlocked_at_start":false},"small-lamp":{"ingredients":{"iron-plate":1,"copper-cable":3,"electronic-circuit":1},"products":{"small-lamp":1},"category":"crafting","energy":0.5,"unlocked_at_start":false},"solar-panel":{"ingredients":{"copper-plate":5,"steel-plate":5,"electronic-circuit":15},"products":{"solar-panel":1},"category":"crafting","energy":10,"unlocked_at_start":false},"gun-turret":{"ingredients":{"iron-plate":20,"copper-plate":10,"iron-gear-wheel":10},"products":{"gun-turret":1},"category":"crafting","energy":8,"unlocked_at_start":false},"laser-turret":{"ingredients":{"steel-plate":20,"battery":12,"electronic-circuit":20},"products":{"laser-turret":1},"category":"crafting","energy":20,"unlocked_at_start":false},"stone-wall":{"ingredients":{"stone-brick":5},"products":{"stone-wall":1},"category":"crafting","energy":0.5,"unlocked_at_start":false},"gate":{"ingredients":{"steel-plate":2,"electronic-circuit":2,"stone-wall":1},"products":{"gate":1},"category":"crafting","energy":0.5,"unlocked_at_start":false},"engine-unit":{"ingredients":{"steel-plate":1,"iron-gear-wheel":1,"pipe":2},"products":{"engine-unit":1},"category":"advanced-crafting","energy":10,"unlocked_at_start":false},"electric-engine-unit":{"ingredients":{"electronic-circuit":2,"engine-unit":1,"lubricant":15},"products":{"electric-engine-unit":1},"category":"crafting-with-fluid","energy":10,"unlocked_at_start":false},"lubricant":{"ingredients":{"heavy-oil":10},"products":{"lubricant":10},"category":"chemistry","energy":1,"unlocked_at_start":false},"battery":{"ingredients":{"iron-plate":1,"copper-plate":1,"sulfuric-acid":20},"products":{"battery":1},"category":"chemistry","energy":4,"unlocked_at_start":false},"landfill":{"ingredients":{"stone":20},"products":{"landfill":1},"category":"crafting","energy":0.5,"unlocked_at_start":false},"chemical-science-pack":{"ingredients":{"sulfur":1,"advanced-circuit":3,"engine-unit":2},"products":{"chemical-science-pack":2},"category":"crafting","energy":24,"unlocked_at_start":false},"logistic-science-pack":{"ingredients":{"transport-belt":1,"inserter":1},"products":{"logistic-science-pack":1},"category":"crafting","energy":6,"unlocked_at_start":false},"military-science-pack":{"ingredients":{"piercing-rounds-magazine":1,"grenade":1,"stone-wall":2},"products":{"military-science-pack":2},"category":"crafting","energy":10,"unlocked_at_start":false},"production-science-pack":{"ingredients":{"rail":30,"electric-furnace":1,"productivity-module":1},"products":{"production-science-pack":3},"category":"crafting","energy":21,"unlocked_at_start":false},"satellite":{"ingredients":{"processing-unit":100,"low-density-structure":100,"rocket-fuel":50,"solar-panel":100,"accumulator":100,"radar":5},"products":{"satellite":1},"category":"crafting","energy":5,"unlocked_at_start":false},"steel-plate":{"ingredients":{"iron-plate":5},"products":{"steel-plate":1},"category":"smelting","energy":16,"unlocked_at_start":false},"steel-chest":{"ingredients":{"steel-plate":8},"products":{"steel-chest":1},"category":"crafting","energy":0.5,"unlocked_at_start":false},"utility-science-pack":{"ingredients":{"processing-unit":2,"flying-robot-frame":1,"low-density-structure":3},"products":{"utility-science-pack":3},"category":"crafting","energy":21,"unlocked_at_start":false},"steel-furnace":{"ingredients":{"steel-plate":6,"stone-brick":10},"products":{"steel-furnace":1},"category":"crafting","energy":3,"unlocked_at_start":false},"electric-furnace":{"ingredients":{"steel-plate":10,"advanced-circuit":5,"stone-brick":10},"products":{"electric-furnace":1},"category":"crafting","energy":5,"unlocked_at_start":false},"concrete":{"ingredients":{"iron-ore":1,"stone-brick":5,"water":100},"products":{"concrete":10},"category":"crafting-with-fluid","energy":10,"unlocked_at_start":false},"hazard-concrete":{"ingredients":{"concrete":10},"products":{"hazard-concrete":10},"category":"crafting","energy":0.25,"unlocked_at_start":false},"refined-concrete":{"ingredients":{"steel-plate":1,"iron-stick":8,"concrete":20,"water":100},"products":{"refined-concrete":10},"category":"crafting-with-fluid","energy":15,"unlocked_at_start":false},"refined-hazard-concrete":{"ingredients":{"refined-concrete":10},"products":{"refined-hazard-concrete":10},"category":"crafting","energy":0.25,"unlocked_at_start":false},"accumulator":{"ingredients":{"iron-plate":2,"battery":5},"products":{"accumulator":1},"category":"crafting","energy":10,"unlocked_at_start":false},"medium-electric-pole":{"ingredients":{"copper-plate":2,"steel-plate":2,"iron-stick":4},"products":{"medium-electric-pole":1},"category":"crafting","energy":0.5,"unlocked_at_start":false},"big-electric-pole":{"ingredients":{"copper-plate":5,"steel-plate":5,"iron-stick":8},"products":{"big-electric-pole":1},"category":"crafting","energy":0.5,"unlocked_at_start":false},"substation":{"ingredients":{"copper-plate":5,"steel-plate":10,"advanced-circuit":5},"products":{"substation":1},"category":"crafting","energy":0.5,"unlocked_at_start":false},"rail":{"ingredients":{"stone":1,"steel-plate":1,"iron-stick":1},"products":{"rail":2},"category":"crafting","energy":0.5,"unlocked_at_start":false},"locomotive":{"ingredients":{"steel-plate":30,"electronic-circuit":10,"engine-unit":20},"products":{"locomotive":1},"category":"crafting","energy":4,"unlocked_at_start":false},"cargo-wagon":{"ingredients":{"iron-plate":20,"steel-plate":20,"iron-gear-wheel":10},"products":{"cargo-wagon":1},"category":"crafting","energy":1,"unlocked_at_start":false},"fluid-wagon":{"ingredients":{"steel-plate":16,"iron-gear-wheel":10,"storage-tank":1,"pipe":8},"products":{"fluid-wagon":1},"category":"crafting","energy":1.5,"unlocked_at_start":false},"train-stop":{"ingredients":{"iron-plate":6,"steel-plate":3,"iron-stick":6,"electronic-circuit":5},"products":{"train-stop":1},"category":"crafting","energy":0.5,"unlocked_at_start":false},"rail-signal":{"ingredients":{"iron-plate":5,"electronic-circuit":1},"products":{"rail-signal":1},"category":"crafting","energy":0.5,"unlocked_at_start":false},"rail-chain-signal":{"ingredients":{"iron-plate":5,"electronic-circuit":1},"products":{"rail-chain-signal":1},"category":"crafting","energy":0.5,"unlocked_at_start":false},"flying-robot-frame":{"ingredients":{"steel-plate":1,"battery":2,"electronic-circuit":3,"electric-engine-unit":1},"products":{"flying-robot-frame":1},"category":"crafting","energy":20,"unlocked_at_start":false},"roboport":{"ingredients":{"steel-plate":45,"iron-gear-wheel":45,"advanced-circuit":45},"products":{"roboport":1},"category":"crafting","energy":5,"unlocked_at_start":false},"logistic-chest-passive-provider":{"ingredients":{"electronic-circuit":3,"advanced-circuit":1,"steel-chest":1},"products":{"logistic-chest-passive-provider":1},"category":"crafting","energy":0.5,"unlocked_at_start":false},"logistic-chest-storage":{"ingredients":{"electronic-circuit":3,"advanced-circuit":1,"steel-chest":1},"products":{"logistic-chest-storage":1},"category":"crafting","energy":0.5,"unlocked_at_start":false},"construction-robot":{"ingredients":{"electronic-circuit":2,"flying-robot-frame":1},"products":{"construction-robot":1},"category":"crafting","energy":0.5,"unlocked_at_start":false},"logistic-robot":{"ingredients":{"advanced-circuit":2,"flying-robot-frame":1},"products":{"logistic-robot":1},"category":"crafting","energy":0.5,"unlocked_at_start":false},"logistic-chest-active-provider":{"ingredients":{"electronic-circuit":3,"advanced-circuit":1,"steel-chest":1},"products":{"logistic-chest-active-provider":1},"category":"crafting","energy":0.5,"unlocked_at_start":false},"logistic-chest-requester":{"ingredients":{"electronic-circuit":3,"advanced-circuit":1,"steel-chest":1},"products":{"logistic-chest-requester":1},"category":"crafting","energy":0.5,"unlocked_at_start":false},"logistic-chest-buffer":{"ingredients":{"electronic-circuit":3,"advanced-circuit":1,"steel-chest":1},"products":{"logistic-chest-buffer":1},"category":"crafting","energy":0.5,"unlocked_at_start":false},"personal-roboport-equipment":{"ingredients":{"steel-plate":20,"battery":45,"iron-gear-wheel":40,"advanced-circuit":10},"products":{"personal-roboport-equipment":1},"category":"crafting","energy":10,"unlocked_at_start":false},"personal-roboport-mk2-equipment":{"ingredients":{"processing-unit":100,"low-density-structure":20,"personal-roboport-equipment":5},"products":{"personal-roboport-mk2-equipment":1},"category":"crafting","energy":20,"unlocked_at_start":false},"stack-inserter":{"ingredients":{"iron-gear-wheel":15,"electronic-circuit":15,"advanced-circuit":1,"fast-inserter":1},"products":{"stack-inserter":1},"category":"crafting","energy":0.5,"unlocked_at_start":false},"stack-filter-inserter":{"ingredients":{"electronic-circuit":5,"stack-inserter":1},"products":{"stack-filter-inserter":1},"category":"crafting","energy":0.5,"unlocked_at_start":false},"pumpjack":{"ingredients":{"steel-plate":5,"iron-gear-wheel":10,"electronic-circuit":5,"pipe":10},"products":{"pumpjack":1},"category":"crafting","energy":5,"unlocked_at_start":false},"oil-refinery":{"ingredients":{"steel-plate":15,"iron-gear-wheel":10,"electronic-circuit":10,"pipe":10,"stone-brick":10},"products":{"oil-refinery":1},"category":"crafting","energy":8,"unlocked_at_start":false},"chemical-plant":{"ingredients":{"steel-plate":5,"iron-gear-wheel":5,"electronic-circuit":5,"pipe":5},"products":{"chemical-plant":1},"category":"crafting","energy":5,"unlocked_at_start":false},"basic-oil-processing":{"ingredients":{"crude-oil":100},"products":{"petroleum-gas":45},"category":"oil-processing","energy":5,"unlocked_at_start":false},"solid-fuel-from-petroleum-gas":{"ingredients":{"petroleum-gas":20},"products":{"solid-fuel":1},"category":"chemistry","energy":2,"unlocked_at_start":false},"storage-tank":{"ingredients":{"iron-plate":20,"steel-plate":5},"products":{"storage-tank":1},"category":"crafting","energy":3,"unlocked_at_start":false},"pump":{"ingredients":{"steel-plate":1,"engine-unit":1,"pipe":1},"products":{"pump":1},"category":"crafting","energy":2,"unlocked_at_start":false},"empty-barrel":{"ingredients":{"steel-plate":1},"products":{"empty-barrel":1},"category":"crafting","energy":1,"unlocked_at_start":false},"fill-water-barrel":{"ingredients":{"empty-barrel":1,"water":50},"products":{"water-barrel":1},"category":"crafting-with-fluid","energy":0.2,"unlocked_at_start":false},"empty-water-barrel":{"ingredients":{"water-barrel":1},"products":{"empty-barrel":1,"water":50},"category":"crafting-with-fluid","energy":0.2,"unlocked_at_start":false},"fill-sulfuric-acid-barrel":{"ingredients":{"empty-barrel":1,"sulfuric-acid":50},"products":{"sulfuric-acid-barrel":1},"category":"crafting-with-fluid","energy":0.2,"unlocked_at_start":false},"empty-sulfuric-acid-barrel":{"ingredients":{"sulfuric-acid-barrel":1},"products":{"empty-barrel":1,"sulfuric-acid":50},"category":"crafting-with-fluid","energy":0.2,"unlocked_at_start":false},"fill-crude-oil-barrel":{"ingredients":{"empty-barrel":1,"crude-oil":50},"products":{"crude-oil-barrel":1},"category":"crafting-with-fluid","energy":0.2,"unlocked_at_start":false},"empty-crude-oil-barrel":{"ingredients":{"crude-oil-barrel":1},"products":{"empty-barrel":1,"crude-oil":50},"category":"crafting-with-fluid","energy":0.2,"unlocked_at_start":false},"fill-heavy-oil-barrel":{"ingredients":{"empty-barrel":1,"heavy-oil":50},"products":{"heavy-oil-barrel":1},"category":"crafting-with-fluid","energy":0.2,"unlocked_at_start":false},"empty-heavy-oil-barrel":{"ingredients":{"heavy-oil-barrel":1},"products":{"empty-barrel":1,"heavy-oil":50},"category":"crafting-with-fluid","energy":0.2,"unlocked_at_start":false},"fill-light-oil-barrel":{"ingredients":{"empty-barrel":1,"light-oil":50},"products":{"light-oil-barrel":1},"category":"crafting-with-fluid","energy":0.2,"unlocked_at_start":false},"empty-light-oil-barrel":{"ingredients":{"light-oil-barrel":1},"products":{"empty-barrel":1,"light-oil":50},"category":"crafting-with-fluid","energy":0.2,"unlocked_at_start":false},"fill-petroleum-gas-barrel":{"ingredients":{"empty-barrel":1,"petroleum-gas":50},"products":{"petroleum-gas-barrel":1},"category":"crafting-with-fluid","energy":0.2,"unlocked_at_start":false},"empty-petroleum-gas-barrel":{"ingredients":{"petroleum-gas-barrel":1},"products":{"empty-barrel":1,"petroleum-gas":50},"category":"crafting-with-fluid","energy":0.2,"unlocked_at_start":false},"fill-lubricant-barrel":{"ingredients":{"empty-barrel":1,"lubricant":50},"products":{"lubricant-barrel":1},"category":"crafting-with-fluid","energy":0.2,"unlocked_at_start":false},"empty-lubricant-barrel":{"ingredients":{"lubricant-barrel":1},"products":{"empty-barrel":1,"lubricant":50},"category":"crafting-with-fluid","energy":0.2,"unlocked_at_start":false},"advanced-oil-processing":{"ingredients":{"water":50,"crude-oil":100},"products":{"heavy-oil":25,"light-oil":45,"petroleum-gas":55},"category":"oil-processing","energy":5,"unlocked_at_start":false},"heavy-oil-cracking":{"ingredients":{"water":30,"heavy-oil":40},"products":{"light-oil":30},"category":"chemistry","energy":2,"unlocked_at_start":false},"light-oil-cracking":{"ingredients":{"water":30,"light-oil":30},"products":{"petroleum-gas":20},"category":"chemistry","energy":2,"unlocked_at_start":false},"solid-fuel-from-heavy-oil":{"ingredients":{"heavy-oil":20},"products":{"solid-fuel":1},"category":"chemistry","energy":2,"unlocked_at_start":false},"solid-fuel-from-light-oil":{"ingredients":{"light-oil":10},"products":{"solid-fuel":1},"category":"chemistry","energy":2,"unlocked_at_start":false},"coal-liquefaction":{"ingredients":{"coal":10,"heavy-oil":25,"steam":50},"products":{"heavy-oil":90,"light-oil":20,"petroleum-gas":10},"category":"oil-processing","energy":5,"unlocked_at_start":false},"sulfuric-acid":{"ingredients":{"iron-plate":1,"sulfur":5,"water":100},"products":{"sulfuric-acid":50},"category":"chemistry","energy":1,"unlocked_at_start":false},"sulfur":{"ingredients":{"water":30,"petroleum-gas":30},"products":{"sulfur":2},"category":"chemistry","energy":1,"unlocked_at_start":false},"plastic-bar":{"ingredients":{"coal":1,"petroleum-gas":20},"products":{"plastic-bar":2},"category":"chemistry","energy":1,"unlocked_at_start":false},"artillery-wagon":{"ingredients":{"steel-plate":40,"iron-gear-wheel":10,"advanced-circuit":20,"engine-unit":64,"pipe":16},"products":{"artillery-wagon":1},"category":"crafting","energy":4,"unlocked_at_start":false},"artillery-turret":{"ingredients":{"steel-plate":60,"iron-gear-wheel":40,"advanced-circuit":20,"concrete":60},"products":{"artillery-turret":1},"category":"crafting","energy":40,"unlocked_at_start":false},"artillery-shell":{"ingredients":{"explosives":8,"explosive-cannon-shell":4,"radar":1},"products":{"artillery-shell":1},"category":"crafting","energy":15,"unlocked_at_start":false},"artillery-targeting-remote":{"ingredients":{"processing-unit":1,"radar":1},"products":{"artillery-targeting-remote":1},"category":"crafting","energy":0.5,"unlocked_at_start":false},"spidertron":{"ingredients":{"raw-fish":1,"rocket-control-unit":16,"low-density-structure":150,"effectivity-module-3":2,"rocket-launcher":4,"fusion-reactor-equipment":2,"exoskeleton-equipment":4,"radar":2},"products":{"spidertron":1},"category":"crafting","energy":10,"unlocked_at_start":false},"spidertron-remote":{"ingredients":{"rocket-control-unit":1,"radar":1},"products":{"spidertron-remote":1},"category":"crafting","energy":0.5,"unlocked_at_start":false},"submachine-gun":{"ingredients":{"iron-plate":10,"copper-plate":5,"iron-gear-wheel":10},"products":{"submachine-gun":1},"category":"crafting","energy":10,"unlocked_at_start":false},"shotgun":{"ingredients":{"wood":5,"iron-plate":15,"copper-plate":10,"iron-gear-wheel":5},"products":{"shotgun":1},"category":"crafting","energy":10,"unlocked_at_start":false},"shotgun-shell":{"ingredients":{"iron-plate":2,"copper-plate":2},"products":{"shotgun-shell":1},"category":"crafting","energy":3,"unlocked_at_start":false},"atomic-bomb":{"ingredients":{"explosives":10,"rocket-control-unit":10,"uranium-235":30},"products":{"atomic-bomb":1},"category":"crafting","energy":50,"unlocked_at_start":false},"piercing-rounds-magazine":{"ingredients":{"copper-plate":5,"steel-plate":1,"firearm-magazine":1},"products":{"piercing-rounds-magazine":1},"category":"crafting","energy":3,"unlocked_at_start":false},"grenade":{"ingredients":{"coal":10,"iron-plate":5},"products":{"grenade":1},"category":"crafting","energy":8,"unlocked_at_start":false},"uranium-rounds-magazine":{"ingredients":{"uranium-238":1,"piercing-rounds-magazine":1},"products":{"uranium-rounds-magazine":1},"category":"crafting","energy":10,"unlocked_at_start":false},"uranium-cannon-shell":{"ingredients":{"uranium-238":1,"cannon-shell":1},"products":{"uranium-cannon-shell":1},"category":"crafting","energy":12,"unlocked_at_start":false},"explosive-uranium-cannon-shell":{"ingredients":{"uranium-238":1,"explosive-cannon-shell":1},"products":{"explosive-uranium-cannon-shell":1},"category":"crafting","energy":12,"unlocked_at_start":false},"poison-capsule":{"ingredients":{"coal":10,"steel-plate":3,"electronic-circuit":3},"products":{"poison-capsule":1},"category":"crafting","energy":8,"unlocked_at_start":false},"slowdown-capsule":{"ingredients":{"coal":5,"steel-plate":2,"electronic-circuit":2},"products":{"slowdown-capsule":1},"category":"crafting","energy":8,"unlocked_at_start":false},"combat-shotgun":{"ingredients":{"wood":10,"copper-plate":10,"steel-plate":15,"iron-gear-wheel":5},"products":{"combat-shotgun":1},"category":"crafting","energy":10,"unlocked_at_start":false},"piercing-shotgun-shell":{"ingredients":{"copper-plate":5,"steel-plate":2,"shotgun-shell":2},"products":{"piercing-shotgun-shell":1},"category":"crafting","energy":8,"unlocked_at_start":false},"cluster-grenade":{"ingredients":{"steel-plate":5,"explosives":5,"grenade":7},"products":{"cluster-grenade":1},"category":"crafting","energy":8,"unlocked_at_start":false},"car":{"ingredients":{"iron-plate":20,"steel-plate":5,"engine-unit":8},"products":{"car":1},"category":"crafting","energy":2,"unlocked_at_start":false},"flamethrower":{"ingredients":{"steel-plate":5,"iron-gear-wheel":10},"products":{"flamethrower":1},"category":"crafting","energy":10,"unlocked_at_start":false},"flamethrower-ammo":{"ingredients":{"steel-plate":5,"crude-oil":100},"products":{"flamethrower-ammo":1},"category":"chemistry","energy":6,"unlocked_at_start":false},"flamethrower-turret":{"ingredients":{"steel-plate":30,"iron-gear-wheel":15,"engine-unit":5,"pipe":10},"products":{"flamethrower-turret":1},"category":"crafting","energy":20,"unlocked_at_start":false},"tank":{"ingredients":{"steel-plate":50,"iron-gear-wheel":15,"advanced-circuit":10,"engine-unit":32},"products":{"tank":1},"category":"crafting","energy":5,"unlocked_at_start":false},"cannon-shell":{"ingredients":{"steel-plate":2,"plastic-bar":2,"explosives":1},"products":{"cannon-shell":1},"category":"crafting","energy":8,"unlocked_at_start":false},"explosive-cannon-shell":{"ingredients":{"steel-plate":2,"plastic-bar":2,"explosives":2},"products":{"explosive-cannon-shell":1},"category":"crafting","energy":8,"unlocked_at_start":false},"land-mine":{"ingredients":{"steel-plate":1,"explosives":2},"products":{"land-mine":4},"category":"crafting","energy":5,"unlocked_at_start":false},"rocket-launcher":{"ingredients":{"iron-plate":5,"iron-gear-wheel":5,"electronic-circuit":5},"products":{"rocket-launcher":1},"category":"crafting","energy":10,"unlocked_at_start":false},"rocket":{"ingredients":{"iron-plate":2,"explosives":1,"electronic-circuit":1},"products":{"rocket":1},"category":"crafting","energy":8,"unlocked_at_start":false},"explosive-rocket":{"ingredients":{"explosives":2,"rocket":1},"products":{"explosive-rocket":1},"category":"crafting","energy":8,"unlocked_at_start":false},"defender-capsule":{"ingredients":{"iron-gear-wheel":3,"electronic-circuit":3,"piercing-rounds-magazine":3},"products":{"defender-capsule":1},"category":"crafting","energy":8,"unlocked_at_start":false},"distractor-capsule":{"ingredients":{"advanced-circuit":3,"defender-capsule":4},"products":{"distractor-capsule":1},"category":"crafting","energy":15,"unlocked_at_start":false},"destroyer-capsule":{"ingredients":{"speed-module":1,"distractor-capsule":4},"products":{"destroyer-capsule":1},"category":"crafting","energy":15,"unlocked_at_start":false},"kovarex-enrichment-process":{"ingredients":{"uranium-235":40,"uranium-238":5},"products":{"uranium-235":41,"uranium-238":2},"category":"centrifuging","energy":60,"unlocked_at_start":false},"nuclear-fuel":{"ingredients":{"rocket-fuel":1,"uranium-235":1},"products":{"nuclear-fuel":1},"category":"centrifuging","energy":90,"unlocked_at_start":false},"nuclear-fuel-reprocessing":{"ingredients":{"used-up-uranium-fuel-cell":5},"products":{"uranium-238":3},"category":"centrifuging","energy":60,"unlocked_at_start":false},"nuclear-reactor":{"ingredients":{"copper-plate":500,"steel-plate":500,"advanced-circuit":500,"concrete":500},"products":{"nuclear-reactor":1},"category":"crafting","energy":8,"unlocked_at_start":false},"heat-exchanger":{"ingredients":{"copper-plate":100,"steel-plate":10,"pipe":10},"products":{"heat-exchanger":1},"category":"crafting","energy":3,"unlocked_at_start":false},"heat-pipe":{"ingredients":{"copper-plate":20,"steel-plate":10},"products":{"heat-pipe":1},"category":"crafting","energy":1,"unlocked_at_start":false},"steam-turbine":{"ingredients":{"copper-plate":50,"iron-gear-wheel":50,"pipe":20},"products":{"steam-turbine":1},"category":"crafting","energy":3,"unlocked_at_start":false},"centrifuge":{"ingredients":{"steel-plate":50,"iron-gear-wheel":100,"advanced-circuit":100,"concrete":100},"products":{"centrifuge":1},"category":"crafting","energy":4,"unlocked_at_start":false},"uranium-processing":{"ingredients":{"uranium-ore":10},"products":{"uranium-235":1,"uranium-238":1},"category":"centrifuging","energy":12,"unlocked_at_start":false},"uranium-fuel-cell":{"ingredients":{"iron-plate":10,"uranium-235":1,"uranium-238":19},"products":{"uranium-fuel-cell":10},"category":"crafting","energy":10,"unlocked_at_start":false},"heavy-armor":{"ingredients":{"copper-plate":100,"steel-plate":50},"products":{"heavy-armor":1},"category":"crafting","energy":8,"unlocked_at_start":false},"modular-armor":{"ingredients":{"steel-plate":50,"advanced-circuit":30},"products":{"modular-armor":1},"category":"crafting","energy":15,"unlocked_at_start":false},"power-armor":{"ingredients":{"steel-plate":40,"processing-unit":40,"electric-engine-unit":20},"products":{"power-armor":1},"category":"crafting","energy":20,"unlocked_at_start":false},"power-armor-mk2":{"ingredients":{"processing-unit":60,"electric-engine-unit":40,"low-density-structure":30,"speed-module-2":25,"effectivity-module-2":25},"products":{"power-armor-mk2":1},"category":"crafting","energy":25,"unlocked_at_start":false},"energy-shield-equipment":{"ingredients":{"steel-plate":10,"advanced-circuit":5},"products":{"energy-shield-equipment":1},"category":"crafting","energy":10,"unlocked_at_start":false},"energy-shield-mk2-equipment":{"ingredients":{"processing-unit":5,"low-density-structure":5,"energy-shield-equipment":10},"products":{"energy-shield-mk2-equipment":1},"category":"crafting","energy":10,"unlocked_at_start":false},"night-vision-equipment":{"ingredients":{"steel-plate":10,"advanced-circuit":5},"products":{"night-vision-equipment":1},"category":"crafting","energy":10,"unlocked_at_start":false},"belt-immunity-equipment":{"ingredients":{"steel-plate":10,"advanced-circuit":5},"products":{"belt-immunity-equipment":1},"category":"crafting","energy":10,"unlocked_at_start":false},"exoskeleton-equipment":{"ingredients":{"steel-plate":20,"processing-unit":10,"electric-engine-unit":30},"products":{"exoskeleton-equipment":1},"category":"crafting","energy":10,"unlocked_at_start":false},"battery-equipment":{"ingredients":{"steel-plate":10,"battery":5},"products":{"battery-equipment":1},"category":"crafting","energy":10,"unlocked_at_start":false},"battery-mk2-equipment":{"ingredients":{"processing-unit":15,"low-density-structure":5,"battery-equipment":10},"products":{"battery-mk2-equipment":1},"category":"crafting","energy":10,"unlocked_at_start":false},"solar-panel-equipment":{"ingredients":{"steel-plate":5,"advanced-circuit":2,"solar-panel":1},"products":{"solar-panel-equipment":1},"category":"crafting","energy":10,"unlocked_at_start":false},"fusion-reactor-equipment":{"ingredients":{"processing-unit":200,"low-density-structure":50},"products":{"fusion-reactor-equipment":1},"category":"crafting","energy":10,"unlocked_at_start":false},"personal-laser-defense-equipment":{"ingredients":{"processing-unit":20,"low-density-structure":5,"laser-turret":5},"products":{"personal-laser-defense-equipment":1},"category":"crafting","energy":10,"unlocked_at_start":false},"discharge-defense-equipment":{"ingredients":{"steel-plate":20,"processing-unit":5,"laser-turret":10},"products":{"discharge-defense-equipment":1},"category":"crafting","energy":10,"unlocked_at_start":false},"discharge-defense-remote":{"ingredients":{"electronic-circuit":1},"products":{"discharge-defense-remote":1},"category":"crafting","energy":0.5,"unlocked_at_start":false},"speed-module":{"ingredients":{"electronic-circuit":5,"advanced-circuit":5},"products":{"speed-module":1},"category":"crafting","energy":15,"unlocked_at_start":false},"speed-module-2":{"ingredients":{"advanced-circuit":5,"processing-unit":5,"speed-module":4},"products":{"speed-module-2":1},"category":"crafting","energy":30,"unlocked_at_start":false},"speed-module-3":{"ingredients":{"advanced-circuit":5,"processing-unit":5,"speed-module-2":5},"products":{"speed-module-3":1},"category":"crafting","energy":60,"unlocked_at_start":false},"productivity-module":{"ingredients":{"electronic-circuit":5,"advanced-circuit":5},"products":{"productivity-module":1},"category":"crafting","energy":15,"unlocked_at_start":false},"productivity-module-2":{"ingredients":{"advanced-circuit":5,"processing-unit":5,"productivity-module":4},"products":{"productivity-module-2":1},"category":"crafting","energy":30,"unlocked_at_start":false},"productivity-module-3":{"ingredients":{"advanced-circuit":5,"processing-unit":5,"productivity-module-2":5},"products":{"productivity-module-3":1},"category":"crafting","energy":60,"unlocked_at_start":false},"effectivity-module":{"ingredients":{"electronic-circuit":5,"advanced-circuit":5},"products":{"effectivity-module":1},"category":"crafting","energy":15,"unlocked_at_start":false},"effectivity-module-2":{"ingredients":{"advanced-circuit":5,"processing-unit":5,"effectivity-module":4},"products":{"effectivity-module-2":1},"category":"crafting","energy":30,"unlocked_at_start":false},"effectivity-module-3":{"ingredients":{"advanced-circuit":5,"processing-unit":5,"effectivity-module-2":5},"products":{"effectivity-module-3":1},"category":"crafting","energy":60,"unlocked_at_start":false},"beacon":{"ingredients":{"steel-plate":10,"copper-cable":10,"electronic-circuit":20,"advanced-circuit":20},"products":{"beacon":1},"category":"crafting","energy":15,"unlocked_at_start":false},"low-density-structure":{"ingredients":{"copper-plate":20,"steel-plate":2,"plastic-bar":5},"products":{"low-density-structure":1},"category":"crafting","energy":20,"unlocked_at_start":false},"rocket-control-unit":{"ingredients":{"processing-unit":1,"speed-module":1},"products":{"rocket-control-unit":1},"category":"crafting","energy":30,"unlocked_at_start":false},"rocket-fuel":{"ingredients":{"solid-fuel":10,"light-oil":10},"products":{"rocket-fuel":1},"category":"crafting-with-fluid","energy":30,"unlocked_at_start":false},"rocket-silo":{"ingredients":{"steel-plate":1000,"processing-unit":200,"electric-engine-unit":200,"pipe":100,"concrete":1000},"products":{"rocket-silo":1},"category":"crafting","energy":30,"unlocked_at_start":false},"rocket-part":{"ingredients":{"rocket-control-unit":10,"low-density-structure":10,"rocket-fuel":10},"products":{"rocket-part":1},"category":"rocket-building","energy":3,"unlocked_at_start":false},"cliff-explosives":{"ingredients":{"explosives":10,"empty-barrel":1,"grenade":1},"products":{"cliff-explosives":1},"category":"crafting","energy":8,"unlocked_at_start":false}} \ No newline at end of file